summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authordjm <>2010-10-01 22:54:19 +0000
committerdjm <>2010-10-01 22:54:19 +0000
commit242690ab2a8e991b85b4735c4e0bac0ec7bd3481 (patch)
treea55c90bd6ea9329d2afb5540220340cadd107178 /src/lib
parent5d1f64994b96668ba794f5211364ed54dd7ee08d (diff)
downloadopenbsd-242690ab2a8e991b85b4735c4e0bac0ec7bd3481.tar.gz
openbsd-242690ab2a8e991b85b4735c4e0bac0ec7bd3481.tar.bz2
openbsd-242690ab2a8e991b85b4735c4e0bac0ec7bd3481.zip
import OpenSSL-1.0.0a
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/Attic/Makefile73
-rw-r--r--src/lib/libcrypto/aes/Makefile47
-rw-r--r--src/lib/libcrypto/asn1/Makefile580
-rw-r--r--src/lib/libcrypto/asn1/a_gentm.c23
-rw-r--r--src/lib/libcrypto/asn1/a_utctm.c21
-rw-r--r--src/lib/libcrypto/bf/Makefile23
-rw-r--r--src/lib/libcrypto/bio/Makefile13
-rw-r--r--src/lib/libcrypto/bn/Makefile79
-rw-r--r--src/lib/libcrypto/bn/bntest.c38
-rw-r--r--src/lib/libcrypto/bn/exptest.c4
-rw-r--r--src/lib/libcrypto/buffer/Makefile13
-rw-r--r--src/lib/libcrypto/cast/Makefile20
-rw-r--r--src/lib/libcrypto/comp/Makefile2
-rw-r--r--src/lib/libcrypto/conf/Makefile17
-rw-r--r--src/lib/libcrypto/crypto-lib.com183
-rw-r--r--src/lib/libcrypto/des/Makefile55
-rw-r--r--src/lib/libcrypto/des/des-lib.com66
-rw-r--r--src/lib/libcrypto/des/rpc_des.h4
-rw-r--r--src/lib/libcrypto/dh/Makefile63
-rw-r--r--src/lib/libcrypto/dsa/Makefile133
-rw-r--r--src/lib/libcrypto/dsa/dsatest.c3
-rw-r--r--src/lib/libcrypto/dso/Makefile14
-rw-r--r--src/lib/libcrypto/dso/dso_dl.c42
-rw-r--r--src/lib/libcrypto/dso/dso_vms.c12
-rw-r--r--src/lib/libcrypto/dso/dso_win32.c228
-rw-r--r--src/lib/libcrypto/ec/Makefile48
-rw-r--r--src/lib/libcrypto/ec/ectest.c14
-rw-r--r--src/lib/libcrypto/engine/Makefile280
-rw-r--r--src/lib/libcrypto/engine/eng_cryptodev.c452
-rw-r--r--src/lib/libcrypto/engine/enginetest.c2
-rw-r--r--src/lib/libcrypto/err/Makefile46
-rw-r--r--src/lib/libcrypto/evp/Makefile782
-rw-r--r--src/lib/libcrypto/evp/c_allc.c5
-rw-r--r--src/lib/libcrypto/evp/c_alld.c8
-rw-r--r--src/lib/libcrypto/evp/evp_test.c6
-rw-r--r--src/lib/libcrypto/evp/m_md2.c1
-rw-r--r--src/lib/libcrypto/evp/m_mdc2.c3
-rw-r--r--src/lib/libcrypto/evp/m_sha.c1
-rw-r--r--src/lib/libcrypto/hmac/Makefile44
-rw-r--r--src/lib/libcrypto/idea/Makefile8
-rw-r--r--src/lib/libcrypto/install.com70
-rw-r--r--src/lib/libcrypto/krb5/Makefile2
-rw-r--r--src/lib/libcrypto/lhash/Makefile2
-rw-r--r--src/lib/libcrypto/md2/Makefile6
-rw-r--r--src/lib/libcrypto/md2/md2.h3
-rw-r--r--src/lib/libcrypto/md2/md2_dgst.c9
-rw-r--r--src/lib/libcrypto/md4/Makefile13
-rw-r--r--src/lib/libcrypto/md5/Makefile30
-rw-r--r--src/lib/libcrypto/mdc2/Makefile2
-rw-r--r--src/lib/libcrypto/mdc2/mdc2.h4
-rw-r--r--src/lib/libcrypto/mem.c64
-rw-r--r--src/lib/libcrypto/objects/Makefile21
-rw-r--r--src/lib/libcrypto/objects/obj_dat.h5255
-rw-r--r--src/lib/libcrypto/objects/obj_mac.h141
-rw-r--r--src/lib/libcrypto/ocsp/Makefile91
-rw-r--r--src/lib/libcrypto/opensslconf.h54
-rw-r--r--src/lib/libcrypto/opensslconf.h.in20
-rw-r--r--src/lib/libcrypto/pem/Makefile139
-rw-r--r--src/lib/libcrypto/perlasm/x86nasm.pl559
-rw-r--r--src/lib/libcrypto/pkcs12/Makefile177
-rw-r--r--src/lib/libcrypto/pkcs7/Makefile60
-rw-r--r--src/lib/libcrypto/rand/Makefile71
-rw-r--r--src/lib/libcrypto/rand/md_rand.c46
-rw-r--r--src/lib/libcrypto/rand/rand_egd.c2
-rw-r--r--src/lib/libcrypto/rand/rand_lcl.h11
-rw-r--r--src/lib/libcrypto/rand/rand_os2.c6
-rw-r--r--src/lib/libcrypto/rand/rand_unix.c71
-rw-r--r--src/lib/libcrypto/rand/rand_win.c71
-rw-r--r--src/lib/libcrypto/rc2/Makefile8
-rw-r--r--src/lib/libcrypto/rc4/Makefile44
-rw-r--r--src/lib/libcrypto/rc4/rc4test.c16
-rw-r--r--src/lib/libcrypto/rc5/Makefile15
-rw-r--r--src/lib/libcrypto/rc5/rc5.h5
-rw-r--r--src/lib/libcrypto/ripemd/Makefile22
-rw-r--r--src/lib/libcrypto/rsa/Makefile123
-rw-r--r--src/lib/libcrypto/rsa/rsa_test.c2
-rw-r--r--src/lib/libcrypto/sha/Makefile75
-rw-r--r--src/lib/libcrypto/sha/sha_dgst.c6
-rw-r--r--src/lib/libcrypto/sha/shatest.c4
-rw-r--r--src/lib/libcrypto/stack/Makefile2
-rw-r--r--src/lib/libcrypto/symhacks.h106
-rw-r--r--src/lib/libcrypto/threads/mttest.c99
-rw-r--r--src/lib/libcrypto/threads/pthreads-vms.com9
-rw-r--r--src/lib/libcrypto/txt_db/Makefile2
-rw-r--r--src/lib/libcrypto/ui/Makefile2
-rw-r--r--src/lib/libcrypto/util/ck_errf.pl22
-rw-r--r--src/lib/libcrypto/util/clean-depend.pl1
-rw-r--r--src/lib/libcrypto/util/cygwin.sh4
-rw-r--r--src/lib/libcrypto/util/deltree.com34
-rw-r--r--src/lib/libcrypto/util/domd10
-rw-r--r--src/lib/libcrypto/util/libeay.num985
-rw-r--r--src/lib/libcrypto/util/mk1mf.pl561
-rw-r--r--src/lib/libcrypto/util/mkdef.pl76
-rw-r--r--src/lib/libcrypto/util/mkfiles.pl32
-rw-r--r--src/lib/libcrypto/util/mklink.pl13
-rw-r--r--src/lib/libcrypto/util/pl/BC-32.pl2
-rw-r--r--src/lib/libcrypto/util/pl/Mingw32.pl6
-rw-r--r--src/lib/libcrypto/util/pl/VC-32.pl340
-rw-r--r--src/lib/libcrypto/util/pod2man.pl2
-rw-r--r--src/lib/libcrypto/util/point.sh2
-rw-r--r--src/lib/libcrypto/util/selftest.pl4
-rwxr-xr-xsrc/lib/libcrypto/util/shlib_wrap.sh6
-rw-r--r--src/lib/libcrypto/util/ssleay.num27
-rw-r--r--src/lib/libcrypto/x509/Makefile208
-rw-r--r--src/lib/libcrypto/x509v3/Makefile457
-rw-r--r--src/lib/libssl/src/CHANGES1060
-rw-r--r--src/lib/libssl/src/CHANGES.SSLeay2
-rw-r--r--src/lib/libssl/src/Configure618
-rw-r--r--src/lib/libssl/src/FAQ29
-rw-r--r--src/lib/libssl/src/INSTALL12
-rw-r--r--src/lib/libssl/src/INSTALL.W32160
-rw-r--r--src/lib/libssl/src/INSTALL.WCE79
-rw-r--r--src/lib/libssl/src/Makefile368
-rw-r--r--src/lib/libssl/src/Makefile.org352
-rw-r--r--src/lib/libssl/src/NEWS62
-rw-r--r--src/lib/libssl/src/Netware/build.bat7
-rw-r--r--src/lib/libssl/src/README27
-rw-r--r--src/lib/libssl/src/VMS/install.com25
-rw-r--r--src/lib/libssl/src/VMS/mkshared.com63
-rw-r--r--src/lib/libssl/src/VMS/openssl_utils.com62
-rw-r--r--src/lib/libssl/src/apps/CA.com4
-rw-r--r--src/lib/libssl/src/apps/CA.sh121
-rw-r--r--src/lib/libssl/src/apps/Makefile1013
-rw-r--r--src/lib/libssl/src/apps/apps.c876
-rw-r--r--src/lib/libssl/src/apps/apps.h91
-rw-r--r--src/lib/libssl/src/apps/asn1pars.c16
-rw-r--r--src/lib/libssl/src/apps/ca.c199
-rw-r--r--src/lib/libssl/src/apps/ciphers.c37
-rw-r--r--src/lib/libssl/src/apps/crl2p7.c20
-rw-r--r--src/lib/libssl/src/apps/dgst.c346
-rw-r--r--src/lib/libssl/src/apps/dh.c6
-rw-r--r--src/lib/libssl/src/apps/dhparam.c6
-rw-r--r--src/lib/libssl/src/apps/dsa.c57
-rw-r--r--src/lib/libssl/src/apps/dsaparam.c6
-rw-r--r--src/lib/libssl/src/apps/enc.c56
-rw-r--r--src/lib/libssl/src/apps/engine.c57
-rw-r--r--src/lib/libssl/src/apps/errstr.c10
-rw-r--r--src/lib/libssl/src/apps/gendh.c6
-rw-r--r--src/lib/libssl/src/apps/gendsa.c6
-rw-r--r--src/lib/libssl/src/apps/genrsa.c26
-rw-r--r--src/lib/libssl/src/apps/install.com44
-rw-r--r--src/lib/libssl/src/apps/makeapps.com248
-rw-r--r--src/lib/libssl/src/apps/ocsp.c149
-rw-r--r--src/lib/libssl/src/apps/openssl-vms.cnf57
-rw-r--r--src/lib/libssl/src/apps/openssl.c214
-rw-r--r--src/lib/libssl/src/apps/openssl.cnf57
-rw-r--r--src/lib/libssl/src/apps/pkcs12.c96
-rw-r--r--src/lib/libssl/src/apps/pkcs7.c7
-rw-r--r--src/lib/libssl/src/apps/pkcs8.c79
-rw-r--r--src/lib/libssl/src/apps/prime.c46
-rw-r--r--src/lib/libssl/src/apps/progs.h19
-rw-r--r--src/lib/libssl/src/apps/progs.pl9
-rw-r--r--src/lib/libssl/src/apps/req.c503
-rw-r--r--src/lib/libssl/src/apps/rsa.c63
-rw-r--r--src/lib/libssl/src/apps/rsautl.c6
-rw-r--r--src/lib/libssl/src/apps/s_apps.h7
-rw-r--r--src/lib/libssl/src/apps/s_cb.c258
-rw-r--r--src/lib/libssl/src/apps/s_client.c348
-rw-r--r--src/lib/libssl/src/apps/s_server.c375
-rw-r--r--src/lib/libssl/src/apps/s_socket.c14
-rw-r--r--src/lib/libssl/src/apps/s_time.c109
-rw-r--r--src/lib/libssl/src/apps/smime.c412
-rw-r--r--src/lib/libssl/src/apps/speed.c347
-rw-r--r--src/lib/libssl/src/apps/verify.c165
-rw-r--r--src/lib/libssl/src/apps/x509.c93
-rw-r--r--src/lib/libssl/src/config65
-rw-r--r--src/lib/libssl/src/crypto/Makefile73
-rw-r--r--src/lib/libssl/src/crypto/aes/Makefile47
-rw-r--r--src/lib/libssl/src/crypto/aes/aes.h28
-rw-r--r--src/lib/libssl/src/crypto/aes/aes_cbc.c82
-rw-r--r--src/lib/libssl/src/crypto/aes/aes_cfb.c160
-rw-r--r--src/lib/libssl/src/crypto/aes/aes_core.c209
-rw-r--r--src/lib/libssl/src/crypto/aes/aes_ctr.c90
-rw-r--r--src/lib/libssl/src/crypto/aes/aes_ofb.c94
-rw-r--r--src/lib/libssl/src/crypto/asn1/Makefile580
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_bitstr.c23
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_dup.c2
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_gentm.c23
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_int.c10
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_mbstr.c2
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_object.c35
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_octet.c4
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_set.c45
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_sign.c78
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_strnid.c18
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_time.c40
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_type.c53
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_utctm.c21
-rw-r--r--src/lib/libssl/src/crypto/asn1/a_verify.c31
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1.h247
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1_err.c22
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1_lib.c36
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1_mac.h7
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1_par.c17
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn1t.h71
-rw-r--r--src/lib/libssl/src/crypto/asn1/asn_pack.c8
-rw-r--r--src/lib/libssl/src/crypto/asn1/charmap.h2
-rw-r--r--src/lib/libssl/src/crypto/asn1/d2i_pr.c97
-rw-r--r--src/lib/libssl/src/crypto/asn1/d2i_pu.c10
-rw-r--r--src/lib/libssl/src/crypto/asn1/i2d_pr.c39
-rw-r--r--src/lib/libssl/src/crypto/asn1/nsseq.c5
-rw-r--r--src/lib/libssl/src/crypto/asn1/p5_pbe.c105
-rw-r--r--src/lib/libssl/src/crypto/asn1/p5_pbev2.c54
-rw-r--r--src/lib/libssl/src/crypto/asn1/p8_pkey.c75
-rw-r--r--src/lib/libssl/src/crypto/asn1/t_pkey.c729
-rw-r--r--src/lib/libssl/src/crypto/asn1/t_req.c28
-rw-r--r--src/lib/libssl/src/crypto/asn1/t_spki.c31
-rw-r--r--src/lib/libssl/src/crypto/asn1/t_x509.c64
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_dec.c24
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_enc.c11
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_fre.c8
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_new.c23
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_prn.c625
-rw-r--r--src/lib/libssl/src/crypto/asn1/tasn_typ.c11
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_crl.c391
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_long.c10
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_name.c298
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_pubkey.c304
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_req.c3
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_x509.c20
-rw-r--r--src/lib/libssl/src/crypto/bf/Makefile23
-rw-r--r--src/lib/libssl/src/crypto/bf/asm/bf-586.pl3
-rw-r--r--src/lib/libssl/src/crypto/bf/bf_skey.c7
-rw-r--r--src/lib/libssl/src/crypto/bf/blowfish.h6
-rw-r--r--src/lib/libssl/src/crypto/bio/Makefile13
-rw-r--r--src/lib/libssl/src/crypto/bio/b_print.c4
-rw-r--r--src/lib/libssl/src/crypto/bio/b_sock.c242
-rw-r--r--src/lib/libssl/src/crypto/bio/bio.h64
-rw-r--r--src/lib/libssl/src/crypto/bio/bio_cb.c24
-rw-r--r--src/lib/libssl/src/crypto/bio/bio_err.c2
-rw-r--r--src/lib/libssl/src/crypto/bio/bio_lib.c4
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_acpt.c8
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_fd.c27
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_file.c65
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_log.c55
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_mem.c18
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_sock.c13
-rw-r--r--src/lib/libssl/src/crypto/bn/Makefile79
-rw-r--r--src/lib/libssl/src/crypto/bn/asm/bn-586.pl203
-rw-r--r--src/lib/libssl/src/crypto/bn/asm/co-586.pl3
-rw-r--r--src/lib/libssl/src/crypto/bn/asm/ppc.pl233
-rw-r--r--src/lib/libssl/src/crypto/bn/asm/sparcv8plus.S15
-rw-r--r--src/lib/libssl/src/crypto/bn/asm/x86_64-gcc.c29
-rw-r--r--src/lib/libssl/src/crypto/bn/bn.h181
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_asm.c322
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_blind.c17
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_ctx.c6
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_div.c15
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_exp.c3
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_lcl.h3
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_lib.c29
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_mont.c269
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_mul.c10
-rw-r--r--src/lib/libssl/src/crypto/bn/bn_print.c21
-rw-r--r--src/lib/libssl/src/crypto/bn/bntest.c38
-rw-r--r--src/lib/libssl/src/crypto/bn/exptest.c4
-rw-r--r--src/lib/libssl/src/crypto/buffer/Makefile13
-rw-r--r--src/lib/libssl/src/crypto/buffer/buf_err.c2
-rw-r--r--src/lib/libssl/src/crypto/buffer/buffer.c89
-rw-r--r--src/lib/libssl/src/crypto/buffer/buffer.h9
-rw-r--r--src/lib/libssl/src/crypto/cast/Makefile20
-rw-r--r--src/lib/libssl/src/crypto/cast/asm/cast-586.pl3
-rw-r--r--src/lib/libssl/src/crypto/cast/c_cfb64.c3
-rw-r--r--src/lib/libssl/src/crypto/cast/c_ecb.c3
-rw-r--r--src/lib/libssl/src/crypto/cast/c_enc.c13
-rw-r--r--src/lib/libssl/src/crypto/cast/c_ofb64.c3
-rw-r--r--src/lib/libssl/src/crypto/cast/c_skey.c7
-rw-r--r--src/lib/libssl/src/crypto/cast/cast.h18
-rw-r--r--src/lib/libssl/src/crypto/comp/Makefile2
-rw-r--r--src/lib/libssl/src/crypto/comp/c_zlib.c18
-rw-r--r--src/lib/libssl/src/crypto/comp/comp_err.c2
-rw-r--r--src/lib/libssl/src/crypto/conf/Makefile17
-rw-r--r--src/lib/libssl/src/crypto/conf/README47
-rw-r--r--src/lib/libssl/src/crypto/conf/conf.h35
-rw-r--r--src/lib/libssl/src/crypto/conf/conf_api.c134
-rw-r--r--src/lib/libssl/src/crypto/conf/conf_def.c11
-rw-r--r--src/lib/libssl/src/crypto/conf/conf_err.c4
-rw-r--r--src/lib/libssl/src/crypto/conf/conf_lib.c30
-rw-r--r--src/lib/libssl/src/crypto/conf/conf_mall.c2
-rw-r--r--src/lib/libssl/src/crypto/conf/conf_mod.c8
-rw-r--r--src/lib/libssl/src/crypto/cpt_err.c2
-rw-r--r--src/lib/libssl/src/crypto/cryptlib.c508
-rw-r--r--src/lib/libssl/src/crypto/crypto-lib.com183
-rw-r--r--src/lib/libssl/src/crypto/crypto.h104
-rw-r--r--src/lib/libssl/src/crypto/des/Makefile55
-rw-r--r--src/lib/libssl/src/crypto/des/asm/crypt586.pl5
-rw-r--r--src/lib/libssl/src/crypto/des/asm/des-586.pl274
-rw-r--r--src/lib/libssl/src/crypto/des/des-lib.com66
-rw-r--r--src/lib/libssl/src/crypto/des/des_enc.c21
-rw-r--r--src/lib/libssl/src/crypto/des/des_locl.h6
-rw-r--r--src/lib/libssl/src/crypto/des/ecb_enc.c48
-rw-r--r--src/lib/libssl/src/crypto/des/enc_read.c12
-rw-r--r--src/lib/libssl/src/crypto/des/enc_writ.c4
-rw-r--r--src/lib/libssl/src/crypto/des/fcrypt_b.c4
-rw-r--r--src/lib/libssl/src/crypto/des/rpc_des.h4
-rw-r--r--src/lib/libssl/src/crypto/des/set_key.c13
-rw-r--r--src/lib/libssl/src/crypto/des/xcbc_enc.c2
-rw-r--r--src/lib/libssl/src/crypto/dh/Makefile63
-rw-r--r--src/lib/libssl/src/crypto/dh/dh.h41
-rw-r--r--src/lib/libssl/src/crypto/dh/dh_asn1.c10
-rw-r--r--src/lib/libssl/src/crypto/dh/dh_check.c8
-rw-r--r--src/lib/libssl/src/crypto/dh/dh_err.c21
-rw-r--r--src/lib/libssl/src/crypto/dh/dh_gen.c4
-rw-r--r--src/lib/libssl/src/crypto/dh/dh_key.c4
-rw-r--r--src/lib/libssl/src/crypto/dsa/Makefile133
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa.h69
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_asn1.c96
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_err.c26
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_gen.c124
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_key.c4
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_lib.c49
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_ossl.c48
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_sign.c35
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsa_vrf.c37
-rw-r--r--src/lib/libssl/src/crypto/dsa/dsatest.c3
-rw-r--r--src/lib/libssl/src/crypto/dso/Makefile14
-rw-r--r--src/lib/libssl/src/crypto/dso/dso.h43
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_dl.c42
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_dlfcn.c157
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_err.c14
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_lib.c35
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_null.c4
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_openssl.c2
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_vms.c12
-rw-r--r--src/lib/libssl/src/crypto/dso/dso_win32.c228
-rw-r--r--src/lib/libssl/src/crypto/ec/Makefile48
-rw-r--r--src/lib/libssl/src/crypto/ec/ec.h814
-rw-r--r--src/lib/libssl/src/crypto/ec/ec_err.c21
-rw-r--r--src/lib/libssl/src/crypto/ec/ec_lcl.h13
-rw-r--r--src/lib/libssl/src/crypto/ec/ec_lib.c4
-rw-r--r--src/lib/libssl/src/crypto/ec/ec_mult.c22
-rw-r--r--src/lib/libssl/src/crypto/ec/ecp_nist.c26
-rw-r--r--src/lib/libssl/src/crypto/ec/ectest.c14
-rw-r--r--src/lib/libssl/src/crypto/engine/Makefile280
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_all.c19
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_cnf.c17
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_cryptodev.c452
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_ctrl.c8
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_dyn.c14
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_err.c6
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_fat.c14
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_int.h12
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_lib.c3
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_list.c2
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_openssl.c2
-rw-r--r--src/lib/libssl/src/crypto/engine/eng_table.c72
-rw-r--r--src/lib/libssl/src/crypto/engine/engine.h55
-rw-r--r--src/lib/libssl/src/crypto/engine/enginetest.c2
-rw-r--r--src/lib/libssl/src/crypto/err/Makefile46
-rw-r--r--src/lib/libssl/src/crypto/err/err.c789
-rw-r--r--src/lib/libssl/src/crypto/err/err.h77
-rw-r--r--src/lib/libssl/src/crypto/err/err_all.c13
-rw-r--r--src/lib/libssl/src/crypto/err/err_prn.c77
-rw-r--r--src/lib/libssl/src/crypto/err/openssl.ec9
-rw-r--r--src/lib/libssl/src/crypto/evp/Makefile782
-rw-r--r--src/lib/libssl/src/crypto/evp/bio_b64.c77
-rw-r--r--src/lib/libssl/src/crypto/evp/bio_enc.c6
-rw-r--r--src/lib/libssl/src/crypto/evp/bio_md.c16
-rw-r--r--src/lib/libssl/src/crypto/evp/c_all.c2
-rw-r--r--src/lib/libssl/src/crypto/evp/c_allc.c5
-rw-r--r--src/lib/libssl/src/crypto/evp/c_alld.c8
-rw-r--r--src/lib/libssl/src/crypto/evp/digest.c211
-rw-r--r--src/lib/libssl/src/crypto/evp/e_aes.c35
-rw-r--r--src/lib/libssl/src/crypto/evp/e_des.c91
-rw-r--r--src/lib/libssl/src/crypto/evp/e_des3.c95
-rw-r--r--src/lib/libssl/src/crypto/evp/e_idea.c2
-rw-r--r--src/lib/libssl/src/crypto/evp/e_null.c8
-rw-r--r--src/lib/libssl/src/crypto/evp/e_rc2.c5
-rw-r--r--src/lib/libssl/src/crypto/evp/e_rc4.c5
-rw-r--r--src/lib/libssl/src/crypto/evp/e_xcbc_d.c19
-rw-r--r--src/lib/libssl/src/crypto/evp/encode.c4
-rw-r--r--src/lib/libssl/src/crypto/evp/evp.h535
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_enc.c267
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_err.c60
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_key.c9
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_lib.c44
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_locl.h155
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_pbe.c266
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_pkey.c646
-rw-r--r--src/lib/libssl/src/crypto/evp/evp_test.c6
-rw-r--r--src/lib/libssl/src/crypto/evp/m_dss.c2
-rw-r--r--src/lib/libssl/src/crypto/evp/m_dss1.c5
-rw-r--r--src/lib/libssl/src/crypto/evp/m_md2.c1
-rw-r--r--src/lib/libssl/src/crypto/evp/m_md4.c1
-rw-r--r--src/lib/libssl/src/crypto/evp/m_md5.c1
-rw-r--r--src/lib/libssl/src/crypto/evp/m_mdc2.c3
-rw-r--r--src/lib/libssl/src/crypto/evp/m_sha.c1
-rw-r--r--src/lib/libssl/src/crypto/evp/m_sha1.c17
-rw-r--r--src/lib/libssl/src/crypto/evp/names.c87
-rw-r--r--src/lib/libssl/src/crypto/evp/p5_crpt.c39
-rw-r--r--src/lib/libssl/src/crypto/evp/p5_crpt2.c86
-rw-r--r--src/lib/libssl/src/crypto/evp/p_dec.c4
-rw-r--r--src/lib/libssl/src/crypto/evp/p_enc.c4
-rw-r--r--src/lib/libssl/src/crypto/evp/p_lib.c394
-rw-r--r--src/lib/libssl/src/crypto/evp/p_open.c2
-rw-r--r--src/lib/libssl/src/crypto/evp/p_seal.c2
-rw-r--r--src/lib/libssl/src/crypto/evp/p_sign.c47
-rw-r--r--src/lib/libssl/src/crypto/evp/p_verify.c44
-rw-r--r--src/lib/libssl/src/crypto/ex_data.c42
-rw-r--r--src/lib/libssl/src/crypto/hmac/Makefile44
-rw-r--r--src/lib/libssl/src/crypto/hmac/hmac.c90
-rw-r--r--src/lib/libssl/src/crypto/hmac/hmac.h9
-rw-r--r--src/lib/libssl/src/crypto/idea/Makefile8
-rw-r--r--src/lib/libssl/src/crypto/idea/idea.h5
-rw-r--r--src/lib/libssl/src/crypto/install.com70
-rw-r--r--src/lib/libssl/src/crypto/krb5/Makefile2
-rw-r--r--src/lib/libssl/src/crypto/lhash/Makefile2
-rw-r--r--src/lib/libssl/src/crypto/lhash/lh_stats.c12
-rw-r--r--src/lib/libssl/src/crypto/lhash/lhash.c41
-rw-r--r--src/lib/libssl/src/crypto/lhash/lhash.h131
-rw-r--r--src/lib/libssl/src/crypto/md2/Makefile6
-rw-r--r--src/lib/libssl/src/crypto/md2/md2.h3
-rw-r--r--src/lib/libssl/src/crypto/md2/md2_dgst.c9
-rw-r--r--src/lib/libssl/src/crypto/md32_common.h12
-rw-r--r--src/lib/libssl/src/crypto/md4/Makefile13
-rw-r--r--src/lib/libssl/src/crypto/md4/md4.h5
-rw-r--r--src/lib/libssl/src/crypto/md4/md4_dgst.c11
-rw-r--r--src/lib/libssl/src/crypto/md5/Makefile30
-rw-r--r--src/lib/libssl/src/crypto/md5/asm/md5-586.pl3
-rw-r--r--src/lib/libssl/src/crypto/md5/md5.h5
-rw-r--r--src/lib/libssl/src/crypto/md5/md5_dgst.c11
-rw-r--r--src/lib/libssl/src/crypto/md5/md5_locl.h2
-rw-r--r--src/lib/libssl/src/crypto/mdc2/Makefile2
-rw-r--r--src/lib/libssl/src/crypto/mdc2/mdc2.h4
-rw-r--r--src/lib/libssl/src/crypto/mem.c64
-rw-r--r--src/lib/libssl/src/crypto/mem_dbg.c257
-rw-r--r--src/lib/libssl/src/crypto/o_str.c4
-rw-r--r--src/lib/libssl/src/crypto/o_time.c153
-rw-r--r--src/lib/libssl/src/crypto/o_time.h1
-rw-r--r--src/lib/libssl/src/crypto/objects/Makefile21
-rw-r--r--src/lib/libssl/src/crypto/objects/o_names.c47
-rw-r--r--src/lib/libssl/src/crypto/objects/obj_dat.c180
-rw-r--r--src/lib/libssl/src/crypto/objects/obj_dat.h5255
-rw-r--r--src/lib/libssl/src/crypto/objects/obj_dat.pl20
-rw-r--r--src/lib/libssl/src/crypto/objects/obj_err.c2
-rw-r--r--src/lib/libssl/src/crypto/objects/obj_lib.c35
-rw-r--r--src/lib/libssl/src/crypto/objects/obj_mac.h141
-rw-r--r--src/lib/libssl/src/crypto/objects/obj_mac.num34
-rw-r--r--src/lib/libssl/src/crypto/objects/objects.h97
-rw-r--r--src/lib/libssl/src/crypto/objects/objects.pl3
-rw-r--r--src/lib/libssl/src/crypto/objects/objects.txt44
-rw-r--r--src/lib/libssl/src/crypto/ocsp/Makefile91
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp.h22
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_cl.c1
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_err.c3
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_ext.c47
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_ht.c56
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_lib.c3
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_prn.c23
-rw-r--r--src/lib/libssl/src/crypto/ocsp/ocsp_vfy.c4
-rw-r--r--src/lib/libssl/src/crypto/opensslconf.h54
-rw-r--r--src/lib/libssl/src/crypto/opensslconf.h.in20
-rw-r--r--src/lib/libssl/src/crypto/opensslv.h10
-rw-r--r--src/lib/libssl/src/crypto/ossl_typ.h21
-rw-r--r--src/lib/libssl/src/crypto/pem/Makefile139
-rw-r--r--src/lib/libssl/src/crypto/pem/pem.h255
-rw-r--r--src/lib/libssl/src/crypto/pem/pem_all.c194
-rw-r--r--src/lib/libssl/src/crypto/pem/pem_err.c28
-rw-r--r--src/lib/libssl/src/crypto/pem/pem_info.c40
-rw-r--r--src/lib/libssl/src/crypto/pem/pem_lib.c100
-rw-r--r--src/lib/libssl/src/crypto/pem/pem_pkey.c109
-rw-r--r--src/lib/libssl/src/crypto/pem/pem_seal.c2
-rw-r--r--src/lib/libssl/src/crypto/pem/pem_x509.c1
-rw-r--r--src/lib/libssl/src/crypto/pem/pem_xaux.c1
-rw-r--r--src/lib/libssl/src/crypto/perlasm/x86asm.pl317
-rw-r--r--src/lib/libssl/src/crypto/perlasm/x86nasm.pl559
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/Makefile177
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_add.c20
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_attr.c2
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_crpt.c20
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_crt.c11
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_key.c7
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_kiss.c163
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_mutl.c8
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_npas.c17
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/p12_utl.c4
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/pk12err.c2
-rw-r--r--src/lib/libssl/src/crypto/pkcs12/pkcs12.h6
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/Makefile60
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pk7_asn1.c43
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pk7_attr.c66
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pk7_doit.c486
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pk7_lib.c192
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pk7_mime.c669
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pk7_smime.c263
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pkcs7.h59
-rw-r--r--src/lib/libssl/src/crypto/pkcs7/pkcs7err.c22
-rw-r--r--src/lib/libssl/src/crypto/rand/Makefile71
-rw-r--r--src/lib/libssl/src/crypto/rand/md_rand.c46
-rw-r--r--src/lib/libssl/src/crypto/rand/rand.h29
-rw-r--r--src/lib/libssl/src/crypto/rand/rand_egd.c2
-rw-r--r--src/lib/libssl/src/crypto/rand/rand_err.c20
-rw-r--r--src/lib/libssl/src/crypto/rand/rand_lcl.h11
-rw-r--r--src/lib/libssl/src/crypto/rand/rand_lib.c71
-rw-r--r--src/lib/libssl/src/crypto/rand/rand_os2.c6
-rw-r--r--src/lib/libssl/src/crypto/rand/rand_unix.c71
-rw-r--r--src/lib/libssl/src/crypto/rand/rand_win.c71
-rw-r--r--src/lib/libssl/src/crypto/rand/randfile.c33
-rw-r--r--src/lib/libssl/src/crypto/rc2/Makefile8
-rw-r--r--src/lib/libssl/src/crypto/rc2/rc2.h4
-rw-r--r--src/lib/libssl/src/crypto/rc2/rc2_skey.c19
-rw-r--r--src/lib/libssl/src/crypto/rc4/Makefile44
-rw-r--r--src/lib/libssl/src/crypto/rc4/asm/rc4-586.pl448
-rw-r--r--src/lib/libssl/src/crypto/rc4/rc4.h7
-rw-r--r--src/lib/libssl/src/crypto/rc4/rc4_enc.c16
-rw-r--r--src/lib/libssl/src/crypto/rc4/rc4_skey.c21
-rw-r--r--src/lib/libssl/src/crypto/rc4/rc4test.c16
-rw-r--r--src/lib/libssl/src/crypto/rc5/Makefile15
-rw-r--r--src/lib/libssl/src/crypto/rc5/rc5.h5
-rw-r--r--src/lib/libssl/src/crypto/ripemd/Makefile22
-rw-r--r--src/lib/libssl/src/crypto/ripemd/asm/rmd-586.pl3
-rw-r--r--src/lib/libssl/src/crypto/ripemd/ripemd.h6
-rw-r--r--src/lib/libssl/src/crypto/ripemd/rmd_dgst.c11
-rw-r--r--src/lib/libssl/src/crypto/ripemd/rmd_locl.h2
-rw-r--r--src/lib/libssl/src/crypto/rsa/Makefile123
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa.h89
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_asn1.c16
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_eay.c6
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_err.c29
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_gen.c3
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_lib.c283
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_oaep.c35
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_sign.c88
-rw-r--r--src/lib/libssl/src/crypto/rsa/rsa_test.c2
-rw-r--r--src/lib/libssl/src/crypto/sha/Makefile75
-rw-r--r--src/lib/libssl/src/crypto/sha/asm/sha1-586.pl1
-rw-r--r--src/lib/libssl/src/crypto/sha/sha.h5
-rw-r--r--src/lib/libssl/src/crypto/sha/sha1_one.c2
-rw-r--r--src/lib/libssl/src/crypto/sha/sha1dgst.c4
-rw-r--r--src/lib/libssl/src/crypto/sha/sha_dgst.c6
-rw-r--r--src/lib/libssl/src/crypto/sha/sha_locl.h11
-rw-r--r--src/lib/libssl/src/crypto/sha/shatest.c4
-rw-r--r--src/lib/libssl/src/crypto/stack/Makefile2
-rw-r--r--src/lib/libssl/src/crypto/stack/safestack.h1008
-rw-r--r--src/lib/libssl/src/crypto/stack/stack.c85
-rw-r--r--src/lib/libssl/src/crypto/stack/stack.h49
-rw-r--r--src/lib/libssl/src/crypto/symhacks.h106
-rw-r--r--src/lib/libssl/src/crypto/threads/mttest.c99
-rw-r--r--src/lib/libssl/src/crypto/threads/pthreads-vms.com9
-rw-r--r--src/lib/libssl/src/crypto/txt_db/Makefile2
-rw-r--r--src/lib/libssl/src/crypto/txt_db/txt_db.c76
-rw-r--r--src/lib/libssl/src/crypto/txt_db/txt_db.h19
-rw-r--r--src/lib/libssl/src/crypto/ui/Makefile2
-rw-r--r--src/lib/libssl/src/crypto/ui/ui.h4
-rw-r--r--src/lib/libssl/src/crypto/ui/ui_err.c2
-rw-r--r--src/lib/libssl/src/crypto/ui/ui_lib.c19
-rw-r--r--src/lib/libssl/src/crypto/ui/ui_openssl.c17
-rw-r--r--src/lib/libssl/src/crypto/x509/Makefile208
-rw-r--r--src/lib/libssl/src/crypto/x509/by_dir.c226
-rw-r--r--src/lib/libssl/src/crypto/x509/by_file.c2
-rw-r--r--src/lib/libssl/src/crypto/x509/x509.h258
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_cmp.c237
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_err.c5
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_lu.c215
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_obj.c2
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_req.c24
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_set.c4
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_trs.c3
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_txt.c24
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_vfy.c951
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_vfy.h38
-rw-r--r--src/lib/libssl/src/crypto/x509/x509cset.c4
-rw-r--r--src/lib/libssl/src/crypto/x509/x509name.c2
-rw-r--r--src/lib/libssl/src/crypto/x509/x509type.c4
-rw-r--r--src/lib/libssl/src/crypto/x509/x_all.c7
-rw-r--r--src/lib/libssl/src/crypto/x509v3/Makefile457
-rw-r--r--src/lib/libssl/src/crypto/x509v3/ext_dat.h13
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_alt.c136
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_conf.c51
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_cpols.c5
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_crld.c552
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_enum.c19
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_extku.c16
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_genn.c153
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_lib.c24
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_ocsp.c62
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_pci.c32
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_prn.c2
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_purp.c194
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_utl.c45
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3err.c13
-rw-r--r--src/lib/libssl/src/crypto/x509v3/x509v3.h173
-rw-r--r--src/lib/libssl/src/demos/engines/rsaref/build.com34
-rw-r--r--src/lib/libssl/src/demos/pkcs12/pkread.c4
-rw-r--r--src/lib/libssl/src/demos/tunala/autoungunk.sh3
-rw-r--r--src/lib/libssl/src/demos/tunala/cb.c23
-rw-r--r--src/lib/libssl/src/demos/tunala/tunala.c8
-rw-r--r--src/lib/libssl/src/demos/x509/mkcert.c2
-rw-r--r--src/lib/libssl/src/demos/x509/mkreq.c2
-rw-r--r--src/lib/libssl/src/doc/apps/asn1parse.pod14
-rw-r--r--src/lib/libssl/src/doc/apps/ca.pod12
-rw-r--r--src/lib/libssl/src/doc/apps/ciphers.pod58
-rw-r--r--src/lib/libssl/src/doc/apps/dgst.pod47
-rw-r--r--src/lib/libssl/src/doc/apps/dhparam.pod2
-rw-r--r--src/lib/libssl/src/doc/apps/dsa.pod2
-rw-r--r--src/lib/libssl/src/doc/apps/dsaparam.pod2
-rw-r--r--src/lib/libssl/src/doc/apps/enc.pod70
-rw-r--r--src/lib/libssl/src/doc/apps/gendsa.pod2
-rw-r--r--src/lib/libssl/src/doc/apps/genrsa.pod2
-rw-r--r--src/lib/libssl/src/doc/apps/ocsp.pod6
-rw-r--r--src/lib/libssl/src/doc/apps/openssl.pod93
-rw-r--r--src/lib/libssl/src/doc/apps/pkcs12.pod85
-rw-r--r--src/lib/libssl/src/doc/apps/pkcs7.pod2
-rw-r--r--src/lib/libssl/src/doc/apps/pkcs8.pod2
-rw-r--r--src/lib/libssl/src/doc/apps/req.pod91
-rw-r--r--src/lib/libssl/src/doc/apps/rsa.pod2
-rw-r--r--src/lib/libssl/src/doc/apps/s_client.pod27
-rw-r--r--src/lib/libssl/src/doc/apps/s_server.pod15
-rw-r--r--src/lib/libssl/src/doc/apps/smime.pod118
-rw-r--r--src/lib/libssl/src/doc/apps/speed.pod2
-rw-r--r--src/lib/libssl/src/doc/apps/spkac.pod2
-rw-r--r--src/lib/libssl/src/doc/apps/verify.pod100
-rw-r--r--src/lib/libssl/src/doc/apps/x509.pod30
-rw-r--r--src/lib/libssl/src/doc/crypto/ASN1_OBJECT_new.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/ASN1_STRING_new.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/BIO_f_buffer.pod9
-rw-r--r--src/lib/libssl/src/doc/crypto/BIO_f_md.pod6
-rw-r--r--src/lib/libssl/src/doc/crypto/BIO_f_ssl.pod9
-rw-r--r--src/lib/libssl/src/doc/crypto/BIO_s_file.pod4
-rw-r--r--src/lib/libssl/src/doc/crypto/BIO_s_mem.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/BIO_should_retry.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/CRYPTO_set_ex_data.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/DSA_get_ex_new_index.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod23
-rw-r--r--src/lib/libssl/src/doc/crypto/EVP_PKEY_verifyrecover.pod103
-rw-r--r--src/lib/libssl/src/doc/crypto/EVP_SignInit.pod9
-rw-r--r--src/lib/libssl/src/doc/crypto/EVP_VerifyInit.pod9
-rw-r--r--src/lib/libssl/src/doc/crypto/OBJ_nid2obj.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/PKCS12_parse.pod31
-rw-r--r--src/lib/libssl/src/doc/crypto/PKCS7_decrypt.pod4
-rw-r--r--src/lib/libssl/src/doc/crypto/PKCS7_encrypt.pod61
-rw-r--r--src/lib/libssl/src/doc/crypto/PKCS7_sign.pod115
-rw-r--r--src/lib/libssl/src/doc/crypto/PKCS7_verify.pod6
-rw-r--r--src/lib/libssl/src/doc/crypto/SMIME_read_PKCS7.pod4
-rw-r--r--src/lib/libssl/src/doc/crypto/SMIME_write_PKCS7.pod24
-rw-r--r--src/lib/libssl/src/doc/crypto/X509_NAME_ENTRY_get_object.pod16
-rw-r--r--src/lib/libssl/src/doc/crypto/X509_NAME_add_entry_by_txt.pod12
-rw-r--r--src/lib/libssl/src/doc/crypto/X509_NAME_get_index_by_NID.pod14
-rw-r--r--src/lib/libssl/src/doc/crypto/X509_new.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/bn_internal.pod30
-rw-r--r--src/lib/libssl/src/doc/crypto/d2i_RSAPublicKey.pod8
-rw-r--r--src/lib/libssl/src/doc/crypto/d2i_X509.pod12
-rw-r--r--src/lib/libssl/src/doc/crypto/d2i_X509_CRL.pod4
-rw-r--r--src/lib/libssl/src/doc/crypto/d2i_X509_REQ.pod4
-rw-r--r--src/lib/libssl/src/doc/crypto/evp.pod22
-rw-r--r--src/lib/libssl/src/doc/crypto/hmac.pod22
-rw-r--r--src/lib/libssl/src/doc/crypto/lhash.pod244
-rw-r--r--src/lib/libssl/src/doc/crypto/pem.pod2
-rw-r--r--src/lib/libssl/src/doc/crypto/threads.pod91
-rw-r--r--src/lib/libssl/src/doc/crypto/ui_compat.pod2
-rw-r--r--src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod2
-rw-r--r--src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod2
-rw-r--r--src/lib/libssl/src/doc/ssl/SSL_CTX_set_mode.pod10
-rw-r--r--src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod123
-rw-r--r--src/lib/libssl/src/doc/ssl/SSL_CTX_set_ssl_version.pod6
-rw-r--r--src/lib/libssl/src/doc/ssl/SSL_library_init.pod17
-rw-r--r--src/lib/libssl/src/doc/ssl/ssl.pod50
-rw-r--r--src/lib/libssl/src/doc/ssleay.txt26
-rw-r--r--src/lib/libssl/src/doc/standards.txt4
-rw-r--r--src/lib/libssl/src/e_os.h105
-rw-r--r--src/lib/libssl/src/e_os2.h24
-rw-r--r--src/lib/libssl/src/engines/makeengines.com154
-rw-r--r--src/lib/libssl/src/install.com62
-rw-r--r--src/lib/libssl/src/makevms.com501
-rw-r--r--src/lib/libssl/src/ms/README2
-rw-r--r--src/lib/libssl/src/ms/bcb4.bat12
-rw-r--r--src/lib/libssl/src/ms/do_ms.bat20
-rw-r--r--src/lib/libssl/src/ms/do_nasm.bat72
-rw-r--r--src/lib/libssl/src/ms/do_nt.bat14
-rwxr-xr-xsrc/lib/libssl/src/ms/do_win64a.bat18
-rwxr-xr-xsrc/lib/libssl/src/ms/do_win64i.bat18
-rw-r--r--src/lib/libssl/src/ms/mingw32.bat6
-rw-r--r--src/lib/libssl/src/ms/mw.bat52
-rw-r--r--src/lib/libssl/src/ms/tenc.bat28
-rw-r--r--src/lib/libssl/src/ms/tencce.bat38
-rw-r--r--src/lib/libssl/src/ms/test.bat5
-rw-r--r--src/lib/libssl/src/ms/testenc.bat188
-rw-r--r--src/lib/libssl/src/ms/testencce.bat194
-rw-r--r--src/lib/libssl/src/ms/testpem.bat64
-rw-r--r--src/lib/libssl/src/ms/testpemce.bat84
-rw-r--r--src/lib/libssl/src/ms/testss.bat196
-rw-r--r--src/lib/libssl/src/ms/testssce.bat208
-rw-r--r--src/lib/libssl/src/ms/tpem.bat12
-rw-r--r--src/lib/libssl/src/ms/tpemce.bat16
-rwxr-xr-xsrc/lib/libssl/src/ms/uplink-common.pl22
-rwxr-xr-xsrc/lib/libssl/src/ms/uplink-ia64.pl50
-rwxr-xr-xsrc/lib/libssl/src/ms/uplink-x86.pl33
-rwxr-xr-xsrc/lib/libssl/src/ms/uplink-x86_64.pl64
-rw-r--r--src/lib/libssl/src/ms/x86asm.bat30
-rw-r--r--src/lib/libssl/src/openssl.spec16
-rw-r--r--src/lib/libssl/src/shlib/win32.bat2
-rw-r--r--src/lib/libssl/src/shlib/win32dll.bat4
-rw-r--r--src/lib/libssl/src/ssl/Makefile1168
-rw-r--r--src/lib/libssl/src/ssl/bio_ssl.c21
-rw-r--r--src/lib/libssl/src/ssl/install.com69
-rw-r--r--src/lib/libssl/src/ssl/kssl.c28
-rw-r--r--src/lib/libssl/src/ssl/kssl_lcl.h2
-rw-r--r--src/lib/libssl/src/ssl/s23_clnt.c221
-rw-r--r--src/lib/libssl/src/ssl/s23_lib.c12
-rw-r--r--src/lib/libssl/src/ssl/s23_meth.c4
-rw-r--r--src/lib/libssl/src/ssl/s23_srvr.c41
-rw-r--r--src/lib/libssl/src/ssl/s2_clnt.c12
-rw-r--r--src/lib/libssl/src/ssl/s2_enc.c9
-rw-r--r--src/lib/libssl/src/ssl/s2_lib.c178
-rw-r--r--src/lib/libssl/src/ssl/s2_meth.c10
-rw-r--r--src/lib/libssl/src/ssl/s2_pkt.c23
-rw-r--r--src/lib/libssl/src/ssl/s2_srvr.c10
-rw-r--r--src/lib/libssl/src/ssl/s3_both.c315
-rw-r--r--src/lib/libssl/src/ssl/s3_clnt.c624
-rw-r--r--src/lib/libssl/src/ssl/s3_enc.c193
-rw-r--r--src/lib/libssl/src/ssl/s3_lib.c2244
-rw-r--r--src/lib/libssl/src/ssl/s3_meth.c10
-rw-r--r--src/lib/libssl/src/ssl/s3_pkt.c282
-rw-r--r--src/lib/libssl/src/ssl/s3_srvr.c855
-rw-r--r--src/lib/libssl/src/ssl/ssl-lib.com76
-rw-r--r--src/lib/libssl/src/ssl/ssl.h539
-rw-r--r--src/lib/libssl/src/ssl/ssl3.h124
-rw-r--r--src/lib/libssl/src/ssl/ssl_algs.c18
-rw-r--r--src/lib/libssl/src/ssl/ssl_asn1.c167
-rw-r--r--src/lib/libssl/src/ssl/ssl_cert.c17
-rw-r--r--src/lib/libssl/src/ssl/ssl_ciph.c1019
-rw-r--r--src/lib/libssl/src/ssl/ssl_err.c57
-rw-r--r--src/lib/libssl/src/ssl/ssl_lib.c614
-rw-r--r--src/lib/libssl/src/ssl/ssl_locl.h300
-rw-r--r--src/lib/libssl/src/ssl/ssl_rsa.c2
-rw-r--r--src/lib/libssl/src/ssl/ssl_sess.c253
-rw-r--r--src/lib/libssl/src/ssl/ssl_stat.c61
-rw-r--r--src/lib/libssl/src/ssl/ssl_txt.c43
-rw-r--r--src/lib/libssl/src/ssl/ssltest.c224
-rw-r--r--src/lib/libssl/src/ssl/t1_clnt.c4
-rw-r--r--src/lib/libssl/src/ssl/t1_enc.c509
-rw-r--r--src/lib/libssl/src/ssl/t1_lib.c917
-rw-r--r--src/lib/libssl/src/ssl/t1_meth.c4
-rw-r--r--src/lib/libssl/src/ssl/t1_srvr.c4
-rw-r--r--src/lib/libssl/src/ssl/tls1.h147
-rw-r--r--src/lib/libssl/src/test/CAss.cnf2
-rw-r--r--src/lib/libssl/src/test/Makefile537
-rw-r--r--src/lib/libssl/src/test/Uss.cnf2
-rw-r--r--src/lib/libssl/src/test/maketests.com205
-rw-r--r--src/lib/libssl/src/test/tcrl.com4
-rw-r--r--src/lib/libssl/src/test/testca.com38
-rw-r--r--src/lib/libssl/src/test/testenc.com5
-rw-r--r--src/lib/libssl/src/test/testgen.com4
-rw-r--r--src/lib/libssl/src/test/tests.com46
-rw-r--r--src/lib/libssl/src/test/testss.com4
-rw-r--r--src/lib/libssl/src/test/testssl6
-rw-r--r--src/lib/libssl/src/test/testssl.com4
-rw-r--r--src/lib/libssl/src/test/testtsa.com248
-rw-r--r--src/lib/libssl/src/test/times16
-rw-r--r--src/lib/libssl/src/test/tpkcs7.com4
-rw-r--r--src/lib/libssl/src/test/tpkcs7d.com4
-rw-r--r--src/lib/libssl/src/test/treq.com4
-rw-r--r--src/lib/libssl/src/test/trsa.com4
-rw-r--r--src/lib/libssl/src/test/tsid.com4
-rw-r--r--src/lib/libssl/src/test/tverify.com78
-rw-r--r--src/lib/libssl/src/test/tx509.com4
-rw-r--r--src/lib/libssl/src/times/x86/des3s.cpp2
-rw-r--r--src/lib/libssl/src/tools/Makefile1
-rw-r--r--src/lib/libssl/src/tools/c_rehash30
-rw-r--r--src/lib/libssl/src/tools/c_rehash.in30
-rw-r--r--src/lib/libssl/src/util/ck_errf.pl22
-rw-r--r--src/lib/libssl/src/util/clean-depend.pl1
-rw-r--r--src/lib/libssl/src/util/cygwin.sh4
-rw-r--r--src/lib/libssl/src/util/deltree.com34
-rw-r--r--src/lib/libssl/src/util/domd10
-rw-r--r--src/lib/libssl/src/util/libeay.num985
-rw-r--r--src/lib/libssl/src/util/mk1mf.pl561
-rw-r--r--src/lib/libssl/src/util/mkdef.pl76
-rw-r--r--src/lib/libssl/src/util/mkerr.pl113
-rw-r--r--src/lib/libssl/src/util/mkfiles.pl32
-rw-r--r--src/lib/libssl/src/util/mklink.pl13
-rw-r--r--src/lib/libssl/src/util/mkstack.pl74
-rw-r--r--src/lib/libssl/src/util/pl/BC-32.pl2
-rw-r--r--src/lib/libssl/src/util/pl/Mingw32.pl6
-rw-r--r--src/lib/libssl/src/util/pl/VC-32.pl340
-rw-r--r--src/lib/libssl/src/util/pod2man.pl2
-rw-r--r--src/lib/libssl/src/util/point.sh2
-rw-r--r--src/lib/libssl/src/util/selftest.pl4
-rwxr-xr-xsrc/lib/libssl/src/util/shlib_wrap.sh6
-rw-r--r--src/lib/libssl/src/util/ssleay.num27
-rw-r--r--src/lib/libssl/test/Makefile537
-rw-r--r--src/lib/libssl/test/maketests.com205
-rw-r--r--src/lib/libssl/test/tcrl.com4
-rw-r--r--src/lib/libssl/test/testca.com38
-rw-r--r--src/lib/libssl/test/testenc.com5
-rw-r--r--src/lib/libssl/test/testgen.com4
-rw-r--r--src/lib/libssl/test/tests.com46
-rw-r--r--src/lib/libssl/test/testss.com4
-rw-r--r--src/lib/libssl/test/testssl.com4
-rw-r--r--src/lib/libssl/test/testtsa.com248
-rw-r--r--src/lib/libssl/test/tpkcs7.com4
-rw-r--r--src/lib/libssl/test/tpkcs7d.com4
-rw-r--r--src/lib/libssl/test/treq.com4
-rw-r--r--src/lib/libssl/test/trsa.com4
-rw-r--r--src/lib/libssl/test/tsid.com4
-rw-r--r--src/lib/libssl/test/tverify.com78
-rw-r--r--src/lib/libssl/test/tx509.com4
798 files changed, 48478 insertions, 31734 deletions
diff --git a/src/lib/libcrypto/Attic/Makefile b/src/lib/libcrypto/Attic/Makefile
index 6557f2b4e1..c1033f6d77 100644
--- a/src/lib/libcrypto/Attic/Makefile
+++ b/src/lib/libcrypto/Attic/Makefile
@@ -5,9 +5,9 @@
5DIR= crypto 5DIR= crypto
6TOP= .. 6TOP= ..
7CC= cc 7CC= cc
8INCLUDE= -I. -I$(TOP) -I../include 8INCLUDE= -I. -I$(TOP) -I../include $(ZLIB_INCLUDE)
9# INCLUDES targets sudbirs! 9# INCLUDES targets sudbirs!
10INCLUDES= -I.. -I../.. -I../../include 10INCLUDES= -I.. -I../.. -I../asn1 -I../evp -I../../include $(ZLIB_INCLUDE)
11CFLAG= -g 11CFLAG= -g
12MAKEDEPPROG= makedepend 12MAKEDEPPROG= makedepend
13MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) 13MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
@@ -17,7 +17,7 @@ AR= ar r
17 17
18RECURSIVE_MAKE= [ -n "$(SDIRS)" ] && for i in $(SDIRS) ; do \ 18RECURSIVE_MAKE= [ -n "$(SDIRS)" ] && for i in $(SDIRS) ; do \
19 (cd $$i && echo "making $$target in $(DIR)/$$i..." && \ 19 (cd $$i && echo "making $$target in $(DIR)/$$i..." && \
20 $(MAKE) -e TOP=../.. DIR=$$i INCLUDES='${INCLUDES}' $$target ) || exit 1; \ 20 $(MAKE) -e TOP=../.. DIR=$$i INCLUDES='$(INCLUDES)' $$target ) || exit 1; \
21 done; 21 done;
22 22
23PEX_LIBS= 23PEX_LIBS=
@@ -26,6 +26,7 @@ EX_LIBS=
26CFLAGS= $(INCLUDE) $(CFLAG) 26CFLAGS= $(INCLUDE) $(CFLAG)
27ASFLAGS= $(INCLUDE) $(ASFLAG) 27ASFLAGS= $(INCLUDE) $(ASFLAG)
28AFLAGS=$(ASFLAGS) 28AFLAGS=$(ASFLAGS)
29CPUID_OBJ=mem_clr.o
29 30
30LIBS= 31LIBS=
31 32
@@ -33,12 +34,12 @@ GENERAL=Makefile README crypto-lib.com install.com
33 34
34LIB= $(TOP)/libcrypto.a 35LIB= $(TOP)/libcrypto.a
35SHARED_LIB= libcrypto$(SHLIB_EXT) 36SHARED_LIB= libcrypto$(SHLIB_EXT)
36LIBSRC= cryptlib.c dyn_lck.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c o_str.c o_dir.c o_init.c fips_err.c 37LIBSRC= cryptlib.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c cpt_err.c ebcdic.c uid.c o_time.c o_str.c o_dir.c
37LIBOBJ= cryptlib.o dyn_lck.o mem.o mem_clr.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o o_time.o o_str.o o_dir.o o_init.o fips_err.o $(CPUID_OBJ) 38LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o cpt_err.o ebcdic.o uid.o o_time.o o_str.o o_dir.o $(CPUID_OBJ)
38 39
39SRC= $(LIBSRC) 40SRC= $(LIBSRC)
40 41
41EXHEADER= crypto.h tmdiff.h opensslv.h opensslconf.h ebcdic.h symhacks.h \ 42EXHEADER= crypto.h opensslv.h opensslconf.h ebcdic.h symhacks.h \
42 ossl_typ.h 43 ossl_typ.h
43HEADER= cryptlib.h buildinf.h md32_common.h o_time.h o_str.h o_dir.h $(EXHEADER) 44HEADER= cryptlib.h buildinf.h md32_common.h o_time.h o_str.h o_dir.h $(EXHEADER)
44 45
@@ -47,7 +48,7 @@ ALL= $(GENERAL) $(SRC) $(HEADER)
47top: 48top:
48 @(cd ..; $(MAKE) DIRS=$(DIR) all) 49 @(cd ..; $(MAKE) DIRS=$(DIR) all)
49 50
50all: lib 51all: shared
51 52
52buildinf.h: ../Makefile 53buildinf.h: ../Makefile
53 ( echo "#ifndef MK1MF_BUILD"; \ 54 ( echo "#ifndef MK1MF_BUILD"; \
@@ -57,26 +58,26 @@ buildinf.h: ../Makefile
57 echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \ 58 echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \
58 echo '#endif' ) >buildinf.h 59 echo '#endif' ) >buildinf.h
59 60
60x86cpuid-elf.s: x86cpuid.pl perlasm/x86asm.pl 61x86cpuid.s: x86cpuid.pl perlasm/x86asm.pl
61 $(PERL) x86cpuid.pl elf $(CFLAGS) $(PROCESSOR) > $@ 62 $(PERL) x86cpuid.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
62x86cpuid-cof.s: x86cpuid.pl perlasm/x86asm.pl
63 $(PERL) x86cpuid.pl coff $(CFLAGS) $(PROCESSOR) > $@
64x86cpuid-out.s: x86cpuid.pl perlasm/x86asm.pl
65 $(PERL) x86cpuid.pl a.out $(CFLAGS) $(PROCESSOR) > $@
66 63
67uplink.o: ../ms/uplink.c 64applink.o: $(TOP)/ms/applink.c
68 $(CC) $(CFLAGS) -c -o $@ ../ms/uplink.c 65 $(CC) $(CFLAGS) -c -o $@ $(TOP)/ms/applink.c
69 66
70uplink-cof.s: ../ms/uplink.pl 67uplink.o: $(TOP)/ms/uplink.c applink.o
71 $(PERL) ../ms/uplink.pl coff > $@ 68 $(CC) $(CFLAGS) -c -o $@ $(TOP)/ms/uplink.c
69
70uplink-cof.s: $(TOP)/ms/uplink.pl
71 $(PERL) $(TOP)/ms/uplink.pl coff > $@
72 72
73x86_64cpuid.s: x86_64cpuid.pl 73x86_64cpuid.s: x86_64cpuid.pl
74 $(PERL) x86_64cpuid.pl $@ 74 $(PERL) x86_64cpuid.pl $(PERLASM_SCHEME) > $@
75ia64cpuid.s: ia64cpuid.S 75ia64cpuid.s: ia64cpuid.S
76 $(CC) $(CFLAGS) -E ia64cpuid.S > $@ 76 $(CC) $(CFLAGS) -E ia64cpuid.S > $@
77ppccpuid.s: ppccpuid.pl; $(PERL) ppccpuid.pl $(PERLASM_SCHEME) $@
77 78
78testapps: 79testapps:
79 [ -z "$(THIS)" ] || ( if echo ${SDIRS} | fgrep ' des '; \ 80 [ -z "$(THIS)" ] || ( if echo $(SDIRS) | fgrep ' des '; \
80 then cd des && $(MAKE) -e des; fi ) 81 then cd des && $(MAKE) -e des; fi )
81 [ -z "$(THIS)" ] || ( cd pkcs7 && $(MAKE) -e testapps ); 82 [ -z "$(THIS)" ] || ( cd pkcs7 && $(MAKE) -e testapps );
82 @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi 83 @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
@@ -94,11 +95,11 @@ links:
94 @$(PERL) $(TOP)/util/mklink.pl ../apps $(APPS) 95 @$(PERL) $(TOP)/util/mklink.pl ../apps $(APPS)
95 @target=links; $(RECURSIVE_MAKE) 96 @target=links; $(RECURSIVE_MAKE)
96 97
97# lib: and $(LIB): are splitted to avoid end-less loop 98# lib: $(LIB): are splitted to avoid end-less loop
98lib: buildinf.h $(LIB) subdirs 99lib: $(LIB)
99 @touch lib 100 @touch lib
100$(LIB): $(LIBOBJ) 101$(LIB): $(LIBOBJ)
101 $(ARX) $(LIB) $(LIBOBJ) 102 $(AR) $(LIB) $(LIBOBJ)
102 $(RANLIB) $(LIB) || echo Never mind. 103 $(RANLIB) $(LIB) || echo Never mind.
103 104
104shared: buildinf.h lib subdirs 105shared: buildinf.h lib subdirs
@@ -135,6 +136,7 @@ clean:
135dclean: 136dclean:
136 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new 137 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
137 mv -f Makefile.new $(MAKEFILE) 138 mv -f Makefile.new $(MAKEFILE)
139 rm -f opensslconf.h
138 @target=dclean; $(RECURSIVE_MAKE) 140 @target=dclean; $(RECURSIVE_MAKE)
139 141
140# DO NOT DELETE THIS LINE -- make depend depends on it. 142# DO NOT DELETE THIS LINE -- make depend depends on it.
@@ -159,13 +161,6 @@ cversion.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
159cversion.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 161cversion.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
160cversion.o: ../include/openssl/stack.h ../include/openssl/symhacks.h buildinf.h 162cversion.o: ../include/openssl/stack.h ../include/openssl/symhacks.h buildinf.h
161cversion.o: cryptlib.h cversion.c 163cversion.o: cryptlib.h cversion.c
162dyn_lck.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
163dyn_lck.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
164dyn_lck.o: ../include/openssl/err.h ../include/openssl/lhash.h
165dyn_lck.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
166dyn_lck.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
167dyn_lck.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
168dyn_lck.o: dyn_lck.c
169ebcdic.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h ebcdic.c 164ebcdic.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h ebcdic.c
170ex_data.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h 165ex_data.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
171ex_data.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 166ex_data.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
@@ -174,13 +169,6 @@ ex_data.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
174ex_data.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 169ex_data.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
175ex_data.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h 170ex_data.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
176ex_data.o: ex_data.c 171ex_data.o: ex_data.c
177fips_err.o: ../include/openssl/bio.h ../include/openssl/crypto.h
178fips_err.o: ../include/openssl/e_os2.h ../include/openssl/err.h
179fips_err.o: ../include/openssl/fips.h ../include/openssl/lhash.h
180fips_err.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
181fips_err.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
182fips_err.o: ../include/openssl/stack.h ../include/openssl/symhacks.h fips_err.c
183fips_err.o: fips_err.h
184mem.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h 172mem.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
185mem.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 173mem.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
186mem.o: ../include/openssl/err.h ../include/openssl/lhash.h 174mem.o: ../include/openssl/err.h ../include/openssl/lhash.h
@@ -201,23 +189,10 @@ mem_dbg.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
201mem_dbg.o: mem_dbg.c 189mem_dbg.o: mem_dbg.c
202o_dir.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h 190o_dir.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
203o_dir.o: LPdir_unix.c o_dir.c o_dir.h 191o_dir.o: LPdir_unix.c o_dir.c o_dir.h
204o_init.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/crypto.h
205o_init.o: ../include/openssl/e_os2.h ../include/openssl/err.h
206o_init.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
207o_init.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
208o_init.o: ../include/openssl/safestack.h ../include/openssl/stack.h
209o_init.o: ../include/openssl/symhacks.h o_init.c
210o_str.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h 192o_str.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
211o_str.o: o_str.c o_str.h 193o_str.o: o_str.c o_str.h
212o_time.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h o_time.c 194o_time.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h o_time.c
213o_time.o: o_time.h 195o_time.o: o_time.h
214tmdiff.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
215tmdiff.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
216tmdiff.o: ../include/openssl/err.h ../include/openssl/lhash.h
217tmdiff.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
218tmdiff.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
219tmdiff.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
220tmdiff.o: ../include/openssl/tmdiff.h cryptlib.h tmdiff.c
221uid.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 196uid.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
222uid.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 197uid.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
223uid.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 198uid.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
diff --git a/src/lib/libcrypto/aes/Makefile b/src/lib/libcrypto/aes/Makefile
index 9d174f4c3e..c501a43a8f 100644
--- a/src/lib/libcrypto/aes/Makefile
+++ b/src/lib/libcrypto/aes/Makefile
@@ -11,7 +11,7 @@ CFLAG=-g
11MAKEFILE= Makefile 11MAKEFILE= Makefile
12AR= ar r 12AR= ar r
13 13
14AES_ASM_OBJ=aes_core.o aes_cbc.o 14AES_ENC=aes_core.o aes_cbc.o
15 15
16CFLAGS= $(INCLUDES) $(CFLAG) 16CFLAGS= $(INCLUDES) $(CFLAG)
17ASFLAGS= $(INCLUDES) $(ASFLAG) 17ASFLAGS= $(INCLUDES) $(ASFLAG)
@@ -26,7 +26,7 @@ LIB=$(TOP)/libcrypto.a
26LIBSRC=aes_core.c aes_misc.c aes_ecb.c aes_cbc.c aes_cfb.c aes_ofb.c \ 26LIBSRC=aes_core.c aes_misc.c aes_ecb.c aes_cbc.c aes_cfb.c aes_ofb.c \
27 aes_ctr.c aes_ige.c aes_wrap.c 27 aes_ctr.c aes_ige.c aes_wrap.c
28LIBOBJ=aes_misc.o aes_ecb.o aes_cfb.o aes_ofb.o aes_ctr.o aes_ige.o aes_wrap.o \ 28LIBOBJ=aes_misc.o aes_ecb.o aes_cfb.o aes_ofb.o aes_ctr.o aes_ige.o aes_wrap.o \
29 $(AES_ASM_OBJ) 29 $(AES_ENC)
30 30
31SRC= $(LIBSRC) 31SRC= $(LIBSRC)
32 32
@@ -41,24 +41,27 @@ top:
41all: lib 41all: lib
42 42
43lib: $(LIBOBJ) 43lib: $(LIBOBJ)
44 $(ARX) $(LIB) $(LIBOBJ) 44 $(AR) $(LIB) $(LIBOBJ)
45 $(RANLIB) $(LIB) || echo Never mind. 45 $(RANLIB) $(LIB) || echo Never mind.
46 @touch lib 46 @touch lib
47 47
48$(LIBOBJ): $(LIBSRC)
49
50aes-ia64.s: asm/aes-ia64.S 48aes-ia64.s: asm/aes-ia64.S
51 $(CC) $(CFLAGS) -E asm/aes-ia64.S > $@ 49 $(CC) $(CFLAGS) -E asm/aes-ia64.S > $@
52 50
53ax86-elf.s: asm/aes-586.pl ../perlasm/x86asm.pl 51aes-586.s: asm/aes-586.pl ../perlasm/x86asm.pl
54 (cd asm; $(PERL) aes-586.pl elf $(CFLAGS) $(PROCESSOR) > ../$@) 52 $(PERL) asm/aes-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
55ax86-cof.s: asm/aes-586.pl ../perlasm/x86asm.pl
56 (cd asm; $(PERL) aes-586.pl coff $(CFLAGS) $(PROCESSOR) > ../$@)
57ax86-out.s: asm/aes-586.pl ../perlasm/x86asm.pl
58 (cd asm; $(PERL) aes-586.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
59 53
60aes-x86_64.s: asm/aes-x86_64.pl 54aes-x86_64.s: asm/aes-x86_64.pl
61 $(PERL) asm/aes-x86_64.pl $@ 55 $(PERL) asm/aes-x86_64.pl $(PERLASM_SCHEME) > $@
56
57aes-sparcv9.s: asm/aes-sparcv9.pl
58 $(PERL) asm/aes-sparcv9.pl $(CFLAGS) > $@
59
60aes-ppc.s: asm/aes-ppc.pl
61 $(PERL) asm/aes-ppc.pl $(PERLASM_SCHEME) $@
62
63# GNU make "catch all"
64aes-%.s: asm/aes-%.pl; $(PERL) $< $(CFLAGS) > $@
62 65
63files: 66files:
64 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 67 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -97,16 +100,14 @@ clean:
97 100
98# DO NOT DELETE THIS LINE -- make depend depends on it. 101# DO NOT DELETE THIS LINE -- make depend depends on it.
99 102
100aes_cbc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 103aes_cbc.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
101aes_cbc.o: ../../include/openssl/opensslconf.h aes_cbc.c aes_locl.h 104aes_cbc.o: ../../include/openssl/opensslconf.h aes_cbc.c
102aes_cfb.o: ../../e_os.h ../../include/openssl/aes.h 105aes_cfb.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
103aes_cfb.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 106aes_cfb.o: ../../include/openssl/opensslconf.h aes_cfb.c
104aes_cfb.o: aes_cfb.c aes_locl.h
105aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 107aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
106aes_core.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h 108aes_core.o: ../../include/openssl/opensslconf.h aes_core.c aes_locl.h
107aes_core.o: aes_core.c aes_locl.h 109aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
108aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 110aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c
109aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c aes_locl.h
110aes_ecb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 111aes_ecb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
111aes_ecb.o: ../../include/openssl/opensslconf.h aes_ecb.c aes_locl.h 112aes_ecb.o: ../../include/openssl/opensslconf.h aes_ecb.c aes_locl.h
112aes_ige.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/bio.h 113aes_ige.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/bio.h
@@ -119,8 +120,8 @@ aes_ige.o: ../../include/openssl/symhacks.h ../cryptlib.h aes_ige.c aes_locl.h
119aes_misc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 120aes_misc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
120aes_misc.o: ../../include/openssl/opensslconf.h 121aes_misc.o: ../../include/openssl/opensslconf.h
121aes_misc.o: ../../include/openssl/opensslv.h aes_locl.h aes_misc.c 122aes_misc.o: ../../include/openssl/opensslv.h aes_locl.h aes_misc.c
122aes_ofb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 123aes_ofb.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
123aes_ofb.o: ../../include/openssl/opensslconf.h aes_locl.h aes_ofb.c 124aes_ofb.o: ../../include/openssl/opensslconf.h aes_ofb.c
124aes_wrap.o: ../../e_os.h ../../include/openssl/aes.h 125aes_wrap.o: ../../e_os.h ../../include/openssl/aes.h
125aes_wrap.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 126aes_wrap.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
126aes_wrap.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 127aes_wrap.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
diff --git a/src/lib/libcrypto/asn1/Makefile b/src/lib/libcrypto/asn1/Makefile
index 94a6885804..160544eede 100644
--- a/src/lib/libcrypto/asn1/Makefile
+++ b/src/lib/libcrypto/asn1/Makefile
@@ -22,30 +22,32 @@ LIBSRC= a_object.c a_bitstr.c a_utctm.c a_gentm.c a_time.c a_int.c a_octet.c \
22 a_enum.c a_utf8.c a_sign.c a_digest.c a_verify.c a_mbstr.c a_strex.c \ 22 a_enum.c a_utf8.c a_sign.c a_digest.c a_verify.c a_mbstr.c a_strex.c \
23 x_algor.c x_val.c x_pubkey.c x_sig.c x_req.c x_attrib.c x_bignum.c \ 23 x_algor.c x_val.c x_pubkey.c x_sig.c x_req.c x_attrib.c x_bignum.c \
24 x_long.c x_name.c x_x509.c x_x509a.c x_crl.c x_info.c x_spki.c nsseq.c \ 24 x_long.c x_name.c x_x509.c x_x509a.c x_crl.c x_info.c x_spki.c nsseq.c \
25 d2i_pu.c d2i_pr.c i2d_pu.c i2d_pr.c\ 25 x_nx509.c d2i_pu.c d2i_pr.c i2d_pu.c i2d_pr.c\
26 t_req.c t_x509.c t_x509a.c t_crl.c t_pkey.c t_spki.c t_bitst.c \ 26 t_req.c t_x509.c t_x509a.c t_crl.c t_pkey.c t_spki.c t_bitst.c \
27 tasn_new.c tasn_fre.c tasn_enc.c tasn_dec.c tasn_utl.c tasn_typ.c \ 27 tasn_new.c tasn_fre.c tasn_enc.c tasn_dec.c tasn_utl.c tasn_typ.c \
28 tasn_prn.c ameth_lib.c \
28 f_int.c f_string.c n_pkey.c \ 29 f_int.c f_string.c n_pkey.c \
29 f_enum.c a_hdr.c x_pkey.c a_bool.c x_exten.c asn_mime.c \ 30 f_enum.c x_pkey.c a_bool.c x_exten.c bio_asn1.c bio_ndef.c asn_mime.c \
30 asn1_gen.c asn1_par.c asn1_lib.c asn1_err.c a_meth.c a_bytes.c a_strnid.c \ 31 asn1_gen.c asn1_par.c asn1_lib.c asn1_err.c a_bytes.c a_strnid.c \
31 evp_asn1.c asn_pack.c p5_pbe.c p5_pbev2.c p8_pkey.c asn_moid.c 32 evp_asn1.c asn_pack.c p5_pbe.c p5_pbev2.c p8_pkey.c asn_moid.c
32LIBOBJ= a_object.o a_bitstr.o a_utctm.o a_gentm.o a_time.o a_int.o a_octet.o \ 33LIBOBJ= a_object.o a_bitstr.o a_utctm.o a_gentm.o a_time.o a_int.o a_octet.o \
33 a_print.o a_type.o a_set.o a_dup.o a_d2i_fp.o a_i2d_fp.o \ 34 a_print.o a_type.o a_set.o a_dup.o a_d2i_fp.o a_i2d_fp.o \
34 a_enum.o a_utf8.o a_sign.o a_digest.o a_verify.o a_mbstr.o a_strex.o \ 35 a_enum.o a_utf8.o a_sign.o a_digest.o a_verify.o a_mbstr.o a_strex.o \
35 x_algor.o x_val.o x_pubkey.o x_sig.o x_req.o x_attrib.o x_bignum.o \ 36 x_algor.o x_val.o x_pubkey.o x_sig.o x_req.o x_attrib.o x_bignum.o \
36 x_long.o x_name.o x_x509.o x_x509a.o x_crl.o x_info.o x_spki.o nsseq.o \ 37 x_long.o x_name.o x_x509.o x_x509a.o x_crl.o x_info.o x_spki.o nsseq.o \
37 d2i_pu.o d2i_pr.o i2d_pu.o i2d_pr.o \ 38 x_nx509.o d2i_pu.o d2i_pr.o i2d_pu.o i2d_pr.o \
38 t_req.o t_x509.o t_x509a.o t_crl.o t_pkey.o t_spki.o t_bitst.o \ 39 t_req.o t_x509.o t_x509a.o t_crl.o t_pkey.o t_spki.o t_bitst.o \
39 tasn_new.o tasn_fre.o tasn_enc.o tasn_dec.o tasn_utl.o tasn_typ.o \ 40 tasn_new.o tasn_fre.o tasn_enc.o tasn_dec.o tasn_utl.o tasn_typ.o \
41 tasn_prn.o ameth_lib.o \
40 f_int.o f_string.o n_pkey.o \ 42 f_int.o f_string.o n_pkey.o \
41 f_enum.o a_hdr.o x_pkey.o a_bool.o x_exten.o asn_mime.o \ 43 f_enum.o x_pkey.o a_bool.o x_exten.o bio_asn1.o bio_ndef.o asn_mime.o \
42 asn1_gen.o asn1_par.o asn1_lib.o asn1_err.o a_meth.o a_bytes.o a_strnid.o \ 44 asn1_gen.o asn1_par.o asn1_lib.o asn1_err.o a_bytes.o a_strnid.o \
43 evp_asn1.o asn_pack.o p5_pbe.o p5_pbev2.o p8_pkey.o asn_moid.o 45 evp_asn1.o asn_pack.o p5_pbe.o p5_pbev2.o p8_pkey.o asn_moid.o
44 46
45SRC= $(LIBSRC) 47SRC= $(LIBSRC)
46 48
47EXHEADER= asn1.h asn1_mac.h asn1t.h 49EXHEADER= asn1.h asn1_mac.h asn1t.h
48HEADER= $(EXHEADER) 50HEADER= $(EXHEADER) asn1_locl.h
49 51
50ALL= $(GENERAL) $(SRC) $(HEADER) 52ALL= $(GENERAL) $(SRC) $(HEADER)
51 53
@@ -63,7 +65,7 @@ pk: pk.c
63all: lib 65all: lib
64 66
65lib: $(LIBOBJ) 67lib: $(LIBOBJ)
66 $(ARX) $(LIB) $(LIBOBJ) 68 $(AR) $(LIB) $(LIBOBJ)
67 $(RANLIB) $(LIB) || echo Never mind. 69 $(RANLIB) $(LIB) || echo Never mind.
68 @touch lib 70 @touch lib
69 71
@@ -142,9 +144,9 @@ a_digest.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
142a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 144a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
143a_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 145a_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
144a_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 146a_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
145a_digest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 147a_digest.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
146a_digest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 148a_digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
147a_digest.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 149a_digest.o: ../../include/openssl/opensslconf.h
148a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 150a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
149a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 151a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
150a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 152a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -173,14 +175,6 @@ a_gentm.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
173a_gentm.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 175a_gentm.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
174a_gentm.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 176a_gentm.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
175a_gentm.o: ../cryptlib.h ../o_time.h a_gentm.c 177a_gentm.o: ../cryptlib.h ../o_time.h a_gentm.c
176a_hdr.o: ../../e_os.h ../../include/openssl/asn1.h
177a_hdr.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
178a_hdr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
179a_hdr.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
180a_hdr.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
181a_hdr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
182a_hdr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
183a_hdr.o: ../../include/openssl/symhacks.h ../cryptlib.h a_hdr.c
184a_i2d_fp.o: ../../e_os.h ../../include/openssl/asn1.h 178a_i2d_fp.o: ../../e_os.h ../../include/openssl/asn1.h
185a_i2d_fp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 179a_i2d_fp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
186a_i2d_fp.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 180a_i2d_fp.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
@@ -205,13 +199,6 @@ a_mbstr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
205a_mbstr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 199a_mbstr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
206a_mbstr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 200a_mbstr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
207a_mbstr.o: ../cryptlib.h a_mbstr.c 201a_mbstr.o: ../cryptlib.h a_mbstr.c
208a_meth.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
209a_meth.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
210a_meth.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
211a_meth.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
212a_meth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
213a_meth.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
214a_meth.o: ../../include/openssl/symhacks.h ../cryptlib.h a_meth.c
215a_object.o: ../../e_os.h ../../include/openssl/asn1.h 202a_object.o: ../../e_os.h ../../include/openssl/asn1.h
216a_object.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 203a_object.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
217a_object.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 204a_object.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -250,27 +237,27 @@ a_sign.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
250a_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 237a_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
251a_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 238a_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
252a_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 239a_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
253a_sign.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 240a_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
254a_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 241a_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
255a_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 242a_sign.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
256a_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 243a_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
257a_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 244a_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
258a_sign.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 245a_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
259a_sign.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 246a_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
260a_sign.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_sign.c 247a_sign.o: ../cryptlib.h a_sign.c asn1_locl.h
261a_strex.o: ../../e_os.h ../../include/openssl/asn1.h 248a_strex.o: ../../e_os.h ../../include/openssl/asn1.h
262a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 249a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
263a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 250a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
264a_strex.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 251a_strex.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
265a_strex.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 252a_strex.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
266a_strex.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 253a_strex.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
267a_strex.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 254a_strex.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
268a_strex.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 255a_strex.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
269a_strex.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 256a_strex.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
270a_strex.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 257a_strex.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
271a_strex.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 258a_strex.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
272a_strex.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 259a_strex.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
273a_strex.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_strex.c charmap.h 260a_strex.o: ../cryptlib.h a_strex.c charmap.h
274a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h 261a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h
275a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 262a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
276a_strnid.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 263a_strnid.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
@@ -318,14 +305,29 @@ a_verify.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
318a_verify.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 305a_verify.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
319a_verify.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 306a_verify.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
320a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h 307a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h
321a_verify.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 308a_verify.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
322a_verify.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 309a_verify.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
323a_verify.o: ../../include/openssl/opensslconf.h
324a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 310a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
325a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 311a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
326a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 312a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
327a_verify.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 313a_verify.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
328a_verify.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_verify.c 314a_verify.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_verify.c
315a_verify.o: asn1_locl.h
316ameth_lib.o: ../../e_os.h ../../include/openssl/asn1.h
317ameth_lib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
318ameth_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
319ameth_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
320ameth_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
321ameth_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h
322ameth_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
323ameth_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
324ameth_lib.o: ../../include/openssl/opensslconf.h
325ameth_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
326ameth_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
327ameth_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
328ameth_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
329ameth_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h ameth_lib.c
330ameth_lib.o: asn1_locl.h
329asn1_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 331asn1_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
330asn1_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 332asn1_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
331asn1_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h 333asn1_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
@@ -339,9 +341,8 @@ asn1_gen.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
339asn1_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 341asn1_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
340asn1_gen.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 342asn1_gen.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
341asn1_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h 343asn1_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h
342asn1_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 344asn1_gen.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
343asn1_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 345asn1_gen.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
344asn1_gen.o: ../../include/openssl/opensslconf.h
345asn1_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 346asn1_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
346asn1_gen.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 347asn1_gen.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
347asn1_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 348asn1_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -371,24 +372,23 @@ asn_mime.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
371asn_mime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 372asn_mime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
372asn_mime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 373asn_mime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
373asn_mime.o: ../../include/openssl/err.h ../../include/openssl/evp.h 374asn_mime.o: ../../include/openssl/err.h ../../include/openssl/evp.h
374asn_mime.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 375asn_mime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
375asn_mime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 376asn_mime.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
376asn_mime.o: ../../include/openssl/opensslconf.h
377asn_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 377asn_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
378asn_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 378asn_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
379asn_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 379asn_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
380asn_mime.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 380asn_mime.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
381asn_mime.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 381asn_mime.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
382asn_mime.o: ../cryptlib.h asn_mime.c 382asn_mime.o: ../cryptlib.h asn1_locl.h asn_mime.c
383asn_moid.o: ../../e_os.h ../../include/openssl/asn1.h 383asn_moid.o: ../../e_os.h ../../include/openssl/asn1.h
384asn_moid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 384asn_moid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
385asn_moid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 385asn_moid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
386asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h 386asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
387asn_moid.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 387asn_moid.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
388asn_moid.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 388asn_moid.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
389asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 389asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
390asn_moid.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 390asn_moid.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
391asn_moid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 391asn_moid.o: ../../include/openssl/opensslconf.h
392asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 392asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
393asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 393asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
394asn_moid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 394asn_moid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -402,28 +402,43 @@ asn_pack.o: ../../include/openssl/opensslconf.h
402asn_pack.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 402asn_pack.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
403asn_pack.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 403asn_pack.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
404asn_pack.o: ../../include/openssl/symhacks.h ../cryptlib.h asn_pack.c 404asn_pack.o: ../../include/openssl/symhacks.h ../cryptlib.h asn_pack.c
405bio_asn1.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
406bio_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
407bio_asn1.o: ../../include/openssl/opensslconf.h
408bio_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
409bio_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
410bio_asn1.o: ../../include/openssl/symhacks.h bio_asn1.c
411bio_ndef.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
412bio_ndef.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
413bio_ndef.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
414bio_ndef.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
415bio_ndef.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
416bio_ndef.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
417bio_ndef.o: ../../include/openssl/symhacks.h bio_ndef.c
405d2i_pr.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 418d2i_pr.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
406d2i_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 419d2i_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
407d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 420d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
408d2i_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 421d2i_pr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
422d2i_pr.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
409d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h 423d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
410d2i_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 424d2i_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
411d2i_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 425d2i_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
412d2i_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 426d2i_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
413d2i_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h 427d2i_pr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
414d2i_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 428d2i_pr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
415d2i_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pr.c 429d2i_pr.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
430d2i_pr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h asn1_locl.h d2i_pr.c
416d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 431d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
417d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 432d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
418d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 433d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
419d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 434d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
420d2i_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h 435d2i_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
421d2i_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 436d2i_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
422d2i_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 437d2i_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
423d2i_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 438d2i_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
424d2i_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h 439d2i_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
425d2i_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 440d2i_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
426d2i_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pu.c 441d2i_pu.o: ../cryptlib.h d2i_pu.c
427evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h 442evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
428evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h 443evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
429evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 444evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -455,77 +470,76 @@ f_string.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
455f_string.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 470f_string.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
456f_string.o: ../../include/openssl/symhacks.h ../cryptlib.h f_string.c 471f_string.o: ../../include/openssl/symhacks.h ../cryptlib.h f_string.c
457i2d_pr.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 472i2d_pr.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
458i2d_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 473i2d_pr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
459i2d_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
460i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 474i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
475i2d_pr.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
461i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h 476i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
462i2d_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 477i2d_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
463i2d_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 478i2d_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
464i2d_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 479i2d_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
465i2d_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h 480i2d_pr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
466i2d_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 481i2d_pr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
467i2d_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pr.c 482i2d_pr.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
483i2d_pr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h asn1_locl.h i2d_pr.c
468i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 484i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
469i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 485i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
470i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 486i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
471i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 487i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
472i2d_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h 488i2d_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
473i2d_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 489i2d_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
474i2d_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 490i2d_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
475i2d_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 491i2d_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
476i2d_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h 492i2d_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
477i2d_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 493i2d_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
478i2d_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pu.c 494i2d_pu.o: ../cryptlib.h i2d_pu.c
479n_pkey.o: ../../e_os.h ../../include/openssl/asn1.h 495n_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
480n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h 496n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h
481n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 497n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
482n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 498n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
483n_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 499n_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
484n_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 500n_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
485n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 501n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
486n_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 502n_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
487n_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 503n_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
488n_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 504n_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
489n_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 505n_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
490n_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 506n_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
491n_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 507n_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
492n_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 508n_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h n_pkey.c
493n_pkey.o: ../cryptlib.h n_pkey.c
494nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 509nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
495nsseq.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 510nsseq.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
496nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 511nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
497nsseq.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 512nsseq.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
498nsseq.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h 513nsseq.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
499nsseq.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 514nsseq.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
500nsseq.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 515nsseq.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
501nsseq.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 516nsseq.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
502nsseq.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 517nsseq.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
503nsseq.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 518nsseq.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
504nsseq.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 519nsseq.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
505nsseq.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h nsseq.c 520nsseq.o: ../../include/openssl/x509_vfy.h nsseq.c
506p5_pbe.o: ../../e_os.h ../../include/openssl/asn1.h 521p5_pbe.o: ../../e_os.h ../../include/openssl/asn1.h
507p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 522p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
508p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 523p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
509p5_pbe.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 524p5_pbe.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
510p5_pbe.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 525p5_pbe.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
511p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h 526p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h
512p5_pbe.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 527p5_pbe.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
513p5_pbe.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 528p5_pbe.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
514p5_pbe.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 529p5_pbe.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
515p5_pbe.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 530p5_pbe.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
516p5_pbe.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 531p5_pbe.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
517p5_pbe.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 532p5_pbe.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
518p5_pbe.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 533p5_pbe.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
519p5_pbe.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p5_pbe.c 534p5_pbe.o: ../cryptlib.h p5_pbe.c
520p5_pbev2.o: ../../e_os.h ../../include/openssl/asn1.h 535p5_pbev2.o: ../../e_os.h ../../include/openssl/asn1.h
521p5_pbev2.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 536p5_pbev2.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
522p5_pbev2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 537p5_pbev2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
523p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 538p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
524p5_pbev2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 539p5_pbev2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
525p5_pbev2.o: ../../include/openssl/err.h ../../include/openssl/evp.h 540p5_pbev2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
526p5_pbev2.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 541p5_pbev2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
527p5_pbev2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 542p5_pbev2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
528p5_pbev2.o: ../../include/openssl/opensslconf.h
529p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 543p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
530p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 544p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
531p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 545p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -538,51 +552,48 @@ p8_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
538p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 552p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
539p8_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 553p8_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
540p8_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h 554p8_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
541p8_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 555p8_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
542p8_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 556p8_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
543p8_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 557p8_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
544p8_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 558p8_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
545p8_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 559p8_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
546p8_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 560p8_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
547p8_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 561p8_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p8_pkey.c
548p8_pkey.o: ../cryptlib.h p8_pkey.c
549t_bitst.o: ../../e_os.h ../../include/openssl/asn1.h 562t_bitst.o: ../../e_os.h ../../include/openssl/asn1.h
550t_bitst.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 563t_bitst.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
551t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 564t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
552t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 565t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
553t_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 566t_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
554t_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h 567t_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h
555t_bitst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 568t_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
556t_bitst.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 569t_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
557t_bitst.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 570t_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
558t_bitst.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 571t_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
559t_bitst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 572t_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
560t_bitst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 573t_bitst.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
561t_bitst.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 574t_bitst.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
562t_bitst.o: ../../include/openssl/x509v3.h ../cryptlib.h t_bitst.c 575t_bitst.o: ../cryptlib.h t_bitst.c
563t_crl.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 576t_crl.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
564t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 577t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
565t_crl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 578t_crl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
566t_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 579t_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
567t_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 580t_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
568t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h 581t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
569t_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 582t_crl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
570t_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 583t_crl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
571t_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 584t_crl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
572t_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 585t_crl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
573t_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 586t_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
574t_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 587t_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
575t_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 588t_crl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
576t_crl.o: ../../include/openssl/x509v3.h ../cryptlib.h t_crl.c 589t_crl.o: ../cryptlib.h t_crl.c
577t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 590t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
578t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 591t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
579t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h 592t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
580t_pkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 593t_pkey.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
581t_pkey.o: ../../include/openssl/ec.h ../../include/openssl/err.h 594t_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
582t_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 595t_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
583t_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 596t_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
584t_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
585t_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
586t_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 597t_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
587t_pkey.o: ../cryptlib.h t_pkey.c 598t_pkey.o: ../cryptlib.h t_pkey.c
588t_req.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 599t_req.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
@@ -591,57 +602,57 @@ t_req.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
591t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 602t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
592t_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 603t_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
593t_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 604t_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
594t_req.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 605t_req.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
595t_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 606t_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
596t_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 607t_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
597t_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 608t_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
598t_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 609t_req.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
599t_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 610t_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
600t_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 611t_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
601t_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 612t_req.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
602t_req.o: ../../include/openssl/x509v3.h ../cryptlib.h t_req.c 613t_req.o: ../cryptlib.h t_req.c
603t_spki.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 614t_spki.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
604t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 615t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
605t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 616t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
606t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 617t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
607t_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 618t_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
608t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h 619t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
609t_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 620t_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
610t_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 621t_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
611t_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 622t_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
612t_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 623t_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
613t_spki.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 624t_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
614t_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 625t_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
615t_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 626t_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
616t_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_spki.c 627t_spki.o: ../cryptlib.h t_spki.c
617t_x509.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 628t_x509.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
618t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 629t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
619t_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 630t_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
620t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 631t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
621t_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 632t_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
622t_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 633t_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
623t_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 634t_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
624t_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 635t_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
625t_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 636t_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
626t_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 637t_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
627t_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 638t_x509.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
628t_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 639t_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
629t_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 640t_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
630t_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 641t_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
631t_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h t_x509.c 642t_x509.o: ../cryptlib.h t_x509.c
632t_x509a.o: ../../e_os.h ../../include/openssl/asn1.h 643t_x509a.o: ../../e_os.h ../../include/openssl/asn1.h
633t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 644t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
634t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 645t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
635t_x509a.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 646t_x509a.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
636t_x509a.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 647t_x509a.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
637t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 648t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
638t_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 649t_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
639t_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 650t_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
640t_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 651t_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
641t_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 652t_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
642t_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 653t_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
643t_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 654t_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
644t_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_x509a.c 655t_x509a.o: ../cryptlib.h t_x509a.c
645tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 656tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
646tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 657tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
647tasn_dec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 658tasn_dec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
@@ -675,6 +686,21 @@ tasn_new.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
675tasn_new.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 686tasn_new.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
676tasn_new.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 687tasn_new.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
677tasn_new.o: ../../include/openssl/symhacks.h tasn_new.c 688tasn_new.o: ../../include/openssl/symhacks.h tasn_new.c
689tasn_prn.o: ../../e_os.h ../../include/openssl/asn1.h
690tasn_prn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
691tasn_prn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
692tasn_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
693tasn_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
694tasn_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
695tasn_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
696tasn_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
697tasn_prn.o: ../../include/openssl/opensslconf.h
698tasn_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
699tasn_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
700tasn_prn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
701tasn_prn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
702tasn_prn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
703tasn_prn.o: ../cryptlib.h asn1_locl.h tasn_prn.c
678tasn_typ.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 704tasn_typ.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
679tasn_typ.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 705tasn_typ.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
680tasn_typ.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 706tasn_typ.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
@@ -694,23 +720,21 @@ x_algor.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
694x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 720x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
695x_algor.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 721x_algor.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
696x_algor.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h 722x_algor.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
697x_algor.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 723x_algor.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
698x_algor.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 724x_algor.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
699x_algor.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 725x_algor.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
700x_algor.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 726x_algor.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
701x_algor.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 727x_algor.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
702x_algor.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 728x_algor.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
703x_algor.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 729x_algor.o: ../../include/openssl/x509_vfy.h x_algor.c
704x_algor.o: x_algor.c
705x_attrib.o: ../../e_os.h ../../include/openssl/asn1.h 730x_attrib.o: ../../e_os.h ../../include/openssl/asn1.h
706x_attrib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 731x_attrib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
707x_attrib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 732x_attrib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
708x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 733x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
709x_attrib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 734x_attrib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
710x_attrib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 735x_attrib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
711x_attrib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 736x_attrib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
712x_attrib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 737x_attrib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
713x_attrib.o: ../../include/openssl/opensslconf.h
714x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 738x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
715x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 739x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
716x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 740x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -727,44 +751,42 @@ x_bignum.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
727x_bignum.o: ../../include/openssl/symhacks.h ../cryptlib.h x_bignum.c 751x_bignum.o: ../../include/openssl/symhacks.h ../cryptlib.h x_bignum.c
728x_crl.o: ../../e_os.h ../../include/openssl/asn1.h 752x_crl.o: ../../e_os.h ../../include/openssl/asn1.h
729x_crl.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 753x_crl.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
730x_crl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 754x_crl.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
731x_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 755x_crl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
732x_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 756x_crl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
733x_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h 757x_crl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
734x_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 758x_crl.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
735x_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 759x_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
736x_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 760x_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
737x_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 761x_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
738x_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 762x_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
739x_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 763x_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
740x_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 764x_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
741x_crl.o: ../cryptlib.h x_crl.c 765x_crl.o: ../../include/openssl/x509v3.h ../cryptlib.h asn1_locl.h x_crl.c
742x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 766x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
743x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 767x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
744x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 768x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
745x_exten.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 769x_exten.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
746x_exten.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h 770x_exten.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
747x_exten.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 771x_exten.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
748x_exten.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 772x_exten.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
749x_exten.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 773x_exten.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
750x_exten.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 774x_exten.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
751x_exten.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 775x_exten.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
752x_exten.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 776x_exten.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
753x_exten.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 777x_exten.o: ../../include/openssl/x509_vfy.h x_exten.c
754x_exten.o: x_exten.c
755x_info.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 778x_info.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
756x_info.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 779x_info.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
757x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 780x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
758x_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 781x_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
759x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h 782x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h
760x_info.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 783x_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
761x_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 784x_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
762x_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 785x_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
763x_info.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 786x_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
764x_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 787x_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
765x_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 788x_info.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
766x_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 789x_info.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_info.c
767x_info.o: ../cryptlib.h x_info.c
768x_long.o: ../../e_os.h ../../include/openssl/asn1.h 790x_long.o: ../../e_os.h ../../include/openssl/asn1.h
769x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 791x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
770x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 792x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
@@ -780,125 +802,129 @@ x_name.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
780x_name.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 802x_name.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
781x_name.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 803x_name.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
782x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h 804x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h
783x_name.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 805x_name.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
784x_name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 806x_name.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
785x_name.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 807x_name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
786x_name.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 808x_name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
787x_name.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 809x_name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
788x_name.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 810x_name.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
789x_name.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 811x_name.o: ../../include/openssl/x509_vfy.h ../cryptlib.h asn1_locl.h x_name.c
790x_name.o: ../cryptlib.h x_name.c 812x_nx509.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
813x_nx509.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
814x_nx509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
815x_nx509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
816x_nx509.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
817x_nx509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
818x_nx509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
819x_nx509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
820x_nx509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
821x_nx509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
822x_nx509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
823x_nx509.o: ../../include/openssl/x509_vfy.h x_nx509.c
791x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h 824x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
792x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h 825x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
793x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 826x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
794x_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 827x_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
795x_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 828x_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
796x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h 829x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
797x_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 830x_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
798x_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 831x_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
799x_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 832x_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
800x_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 833x_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
801x_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 834x_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
802x_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 835x_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
803x_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 836x_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_pkey.c
804x_pkey.o: ../cryptlib.h x_pkey.c
805x_pubkey.o: ../../e_os.h ../../include/openssl/asn1.h 837x_pubkey.o: ../../e_os.h ../../include/openssl/asn1.h
806x_pubkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 838x_pubkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
807x_pubkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 839x_pubkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
808x_pubkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 840x_pubkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
809x_pubkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 841x_pubkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
810x_pubkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 842x_pubkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
811x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 843x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
812x_pubkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 844x_pubkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
813x_pubkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 845x_pubkey.o: ../../include/openssl/opensslconf.h
814x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 846x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
815x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 847x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
816x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 848x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
817x_pubkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 849x_pubkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
818x_pubkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 850x_pubkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
819x_pubkey.o: ../cryptlib.h x_pubkey.c 851x_pubkey.o: ../cryptlib.h asn1_locl.h x_pubkey.c
820x_req.o: ../../e_os.h ../../include/openssl/asn1.h 852x_req.o: ../../e_os.h ../../include/openssl/asn1.h
821x_req.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 853x_req.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
822x_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 854x_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
823x_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 855x_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
824x_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 856x_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
825x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h 857x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h
826x_req.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 858x_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
827x_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 859x_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
828x_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 860x_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
829x_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 861x_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
830x_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 862x_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
831x_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 863x_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
832x_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 864x_req.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_req.c
833x_req.o: ../cryptlib.h x_req.c
834x_sig.o: ../../e_os.h ../../include/openssl/asn1.h 865x_sig.o: ../../e_os.h ../../include/openssl/asn1.h
835x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 866x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
836x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 867x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
837x_sig.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 868x_sig.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
838x_sig.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 869x_sig.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
839x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h 870x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h
840x_sig.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 871x_sig.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
841x_sig.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 872x_sig.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
842x_sig.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 873x_sig.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
843x_sig.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 874x_sig.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
844x_sig.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 875x_sig.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
845x_sig.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 876x_sig.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
846x_sig.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 877x_sig.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_sig.c
847x_sig.o: ../cryptlib.h x_sig.c
848x_spki.o: ../../e_os.h ../../include/openssl/asn1.h 878x_spki.o: ../../e_os.h ../../include/openssl/asn1.h
849x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 879x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
850x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 880x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
851x_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 881x_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
852x_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 882x_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
853x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h 883x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
854x_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 884x_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
855x_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 885x_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
856x_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 886x_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
857x_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 887x_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
858x_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 888x_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
859x_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 889x_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
860x_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 890x_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_spki.c
861x_spki.o: ../cryptlib.h x_spki.c
862x_val.o: ../../e_os.h ../../include/openssl/asn1.h 891x_val.o: ../../e_os.h ../../include/openssl/asn1.h
863x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 892x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
864x_val.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 893x_val.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
865x_val.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 894x_val.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
866x_val.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 895x_val.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
867x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h 896x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h
868x_val.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 897x_val.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
869x_val.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 898x_val.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
870x_val.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 899x_val.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
871x_val.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 900x_val.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
872x_val.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 901x_val.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
873x_val.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 902x_val.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
874x_val.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 903x_val.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_val.c
875x_val.o: ../cryptlib.h x_val.c
876x_x509.o: ../../e_os.h ../../include/openssl/asn1.h 904x_x509.o: ../../e_os.h ../../include/openssl/asn1.h
877x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 905x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
878x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 906x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
879x_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 907x_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
880x_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 908x_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
881x_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 909x_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
882x_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 910x_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
883x_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 911x_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
884x_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 912x_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
885x_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 913x_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
886x_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 914x_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
887x_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 915x_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
888x_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 916x_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
889x_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 917x_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h x_x509.c
890x_x509.o: ../cryptlib.h x_x509.c
891x_x509a.o: ../../e_os.h ../../include/openssl/asn1.h 918x_x509a.o: ../../e_os.h ../../include/openssl/asn1.h
892x_x509a.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 919x_x509a.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
893x_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 920x_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
894x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 921x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
895x_x509a.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 922x_x509a.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
896x_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h 923x_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h
897x_x509a.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 924x_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
898x_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 925x_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
899x_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 926x_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
900x_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 927x_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
901x_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 928x_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
902x_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 929x_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
903x_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 930x_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_x509a.c
904x_x509a.o: ../cryptlib.h x_x509a.c
diff --git a/src/lib/libcrypto/asn1/a_gentm.c b/src/lib/libcrypto/asn1/a_gentm.c
index def79062a5..c79c6f538c 100644
--- a/src/lib/libcrypto/asn1/a_gentm.c
+++ b/src/lib/libcrypto/asn1/a_gentm.c
@@ -117,8 +117,8 @@ err:
117 117
118int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d) 118int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
119 { 119 {
120 static int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0}; 120 static const int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0};
121 static int max[9]={99, 99,12,31,23,59,59,12,59}; 121 static const int max[9]={99, 99,12,31,23,59,59,12,59};
122 char *a; 122 char *a;
123 int n,i,l,o; 123 int n,i,l,o;
124 124
@@ -176,6 +176,11 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
176 o++; 176 o++;
177 } 177 }
178 } 178 }
179 else
180 {
181 /* Missing time zone information. */
182 goto err;
183 }
179 return(o == l); 184 return(o == l);
180err: 185err:
181 return(0); 186 return(0);
@@ -206,6 +211,12 @@ int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str)
206ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, 211ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
207 time_t t) 212 time_t t)
208 { 213 {
214 return ASN1_GENERALIZEDTIME_adj(s, t, 0, 0);
215 }
216
217ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
218 time_t t, int offset_day, long offset_sec)
219 {
209 char *p; 220 char *p;
210 struct tm *ts; 221 struct tm *ts;
211 struct tm data; 222 struct tm data;
@@ -220,13 +231,19 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
220 if (ts == NULL) 231 if (ts == NULL)
221 return(NULL); 232 return(NULL);
222 233
234 if (offset_day || offset_sec)
235 {
236 if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec))
237 return NULL;
238 }
239
223 p=(char *)s->data; 240 p=(char *)s->data;
224 if ((p == NULL) || ((size_t)s->length < len)) 241 if ((p == NULL) || ((size_t)s->length < len))
225 { 242 {
226 p=OPENSSL_malloc(len); 243 p=OPENSSL_malloc(len);
227 if (p == NULL) 244 if (p == NULL)
228 { 245 {
229 ASN1err(ASN1_F_ASN1_GENERALIZEDTIME_SET, 246 ASN1err(ASN1_F_ASN1_GENERALIZEDTIME_ADJ,
230 ERR_R_MALLOC_FAILURE); 247 ERR_R_MALLOC_FAILURE);
231 return(NULL); 248 return(NULL);
232 } 249 }
diff --git a/src/lib/libcrypto/asn1/a_utctm.c b/src/lib/libcrypto/asn1/a_utctm.c
index d31c028193..072e236592 100644
--- a/src/lib/libcrypto/asn1/a_utctm.c
+++ b/src/lib/libcrypto/asn1/a_utctm.c
@@ -114,8 +114,8 @@ err:
114 114
115int ASN1_UTCTIME_check(ASN1_UTCTIME *d) 115int ASN1_UTCTIME_check(ASN1_UTCTIME *d)
116 { 116 {
117 static int min[8]={ 0, 1, 1, 0, 0, 0, 0, 0}; 117 static const int min[8]={ 0, 1, 1, 0, 0, 0, 0, 0};
118 static int max[8]={99,12,31,23,59,59,12,59}; 118 static const int max[8]={99,12,31,23,59,59,12,59};
119 char *a; 119 char *a;
120 int n,i,l,o; 120 int n,i,l,o;
121 121
@@ -186,6 +186,12 @@ int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str)
186 186
187ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t) 187ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t)
188 { 188 {
189 return ASN1_UTCTIME_adj(s, t, 0, 0);
190 }
191
192ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
193 int offset_day, long offset_sec)
194 {
189 char *p; 195 char *p;
190 struct tm *ts; 196 struct tm *ts;
191 struct tm data; 197 struct tm data;
@@ -200,13 +206,22 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t)
200 if (ts == NULL) 206 if (ts == NULL)
201 return(NULL); 207 return(NULL);
202 208
209 if (offset_day || offset_sec)
210 {
211 if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec))
212 return NULL;
213 }
214
215 if((ts->tm_year < 50) || (ts->tm_year >= 150))
216 return NULL;
217
203 p=(char *)s->data; 218 p=(char *)s->data;
204 if ((p == NULL) || ((size_t)s->length < len)) 219 if ((p == NULL) || ((size_t)s->length < len))
205 { 220 {
206 p=OPENSSL_malloc(len); 221 p=OPENSSL_malloc(len);
207 if (p == NULL) 222 if (p == NULL)
208 { 223 {
209 ASN1err(ASN1_F_ASN1_UTCTIME_SET,ERR_R_MALLOC_FAILURE); 224 ASN1err(ASN1_F_ASN1_UTCTIME_ADJ,ERR_R_MALLOC_FAILURE);
210 return(NULL); 225 return(NULL);
211 } 226 }
212 if (s->data != NULL) 227 if (s->data != NULL)
diff --git a/src/lib/libcrypto/bf/Makefile b/src/lib/libcrypto/bf/Makefile
index 7f4f03eb82..dd2c2c708e 100644
--- a/src/lib/libcrypto/bf/Makefile
+++ b/src/lib/libcrypto/bf/Makefile
@@ -12,8 +12,6 @@ MAKEFILE= Makefile
12AR= ar r 12AR= ar r
13 13
14BF_ENC= bf_enc.o 14BF_ENC= bf_enc.o
15# or use
16#DES_ENC= bx86-elf.o
17 15
18CFLAGS= $(INCLUDES) $(CFLAG) 16CFLAGS= $(INCLUDES) $(CFLAG)
19ASFLAGS= $(INCLUDES) $(ASFLAG) 17ASFLAGS= $(INCLUDES) $(ASFLAG)
@@ -40,19 +38,12 @@ top:
40all: lib 38all: lib
41 39
42lib: $(LIBOBJ) 40lib: $(LIBOBJ)
43 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
44 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
45 @touch lib 43 @touch lib
46 44
47# ELF 45bf-586.s: asm/bf-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
48bx86-elf.s: asm/bf-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl 46 $(PERL) asm/bf-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
49 (cd asm; $(PERL) bf-586.pl elf $(CFLAGS) $(PROCESSOR) > ../$@)
50# COFF
51bx86-cof.s: asm/bf-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
52 (cd asm; $(PERL) bf-586.pl coff $(CFLAGS) $(PROCESSOR) > ../$@)
53# a.out
54bx86-out.s: asm/bf-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
55 (cd asm; $(PERL) bf-586.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
56 47
57files: 48files:
58 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 49 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -103,9 +94,5 @@ bf_enc.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
103bf_enc.o: ../../include/openssl/opensslconf.h bf_enc.c bf_locl.h 94bf_enc.o: ../../include/openssl/opensslconf.h bf_enc.c bf_locl.h
104bf_ofb64.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h 95bf_ofb64.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
105bf_ofb64.o: ../../include/openssl/opensslconf.h bf_locl.h bf_ofb64.c 96bf_ofb64.o: ../../include/openssl/opensslconf.h bf_locl.h bf_ofb64.c
106bf_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/crypto.h 97bf_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
107bf_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h 98bf_skey.o: ../../include/openssl/opensslconf.h bf_locl.h bf_pi.h bf_skey.c
108bf_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
109bf_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
110bf_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
111bf_skey.o: bf_locl.h bf_pi.h bf_skey.c
diff --git a/src/lib/libcrypto/bio/Makefile b/src/lib/libcrypto/bio/Makefile
index 1cd76ce7a2..c395d80496 100644
--- a/src/lib/libcrypto/bio/Makefile
+++ b/src/lib/libcrypto/bio/Makefile
@@ -45,7 +45,7 @@ top:
45all: lib 45all: lib
46 46
47lib: $(LIBOBJ) 47lib: $(LIBOBJ)
48 $(ARX) $(LIB) $(LIBOBJ) 48 $(AR) $(LIB) $(LIBOBJ)
49 $(RANLIB) $(LIB) || echo Never mind. 49 $(RANLIB) $(LIB) || echo Never mind.
50 @touch lib 50 @touch lib
51 51
@@ -102,11 +102,12 @@ b_print.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
102b_print.o: ../../include/openssl/symhacks.h ../cryptlib.h b_print.c 102b_print.o: ../../include/openssl/symhacks.h ../cryptlib.h b_print.c
103b_sock.o: ../../e_os.h ../../include/openssl/bio.h 103b_sock.o: ../../e_os.h ../../include/openssl/bio.h
104b_sock.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 104b_sock.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
105b_sock.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 105b_sock.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
106b_sock.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h 106b_sock.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
107b_sock.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 107b_sock.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
108b_sock.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 108b_sock.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
109b_sock.o: ../../include/openssl/symhacks.h ../cryptlib.h b_sock.c 109b_sock.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
110b_sock.o: ../cryptlib.h b_sock.c
110bf_buff.o: ../../e_os.h ../../include/openssl/bio.h 111bf_buff.o: ../../e_os.h ../../include/openssl/bio.h
111bf_buff.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 112bf_buff.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
112bf_buff.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 113bf_buff.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
diff --git a/src/lib/libcrypto/bn/Makefile b/src/lib/libcrypto/bn/Makefile
index f5e8f65a46..aabc4f56b8 100644
--- a/src/lib/libcrypto/bn/Makefile
+++ b/src/lib/libcrypto/bn/Makefile
@@ -12,8 +12,6 @@ MAKEFILE= Makefile
12AR= ar r 12AR= ar r
13 13
14BN_ASM= bn_asm.o 14BN_ASM= bn_asm.o
15# or use
16#BN_ASM= bn86-elf.o
17 15
18CFLAGS= $(INCLUDES) $(CFLAG) 16CFLAGS= $(INCLUDES) $(CFLAG)
19ASFLAGS= $(INCLUDES) $(ASFLAG) 17ASFLAGS= $(INCLUDES) $(ASFLAG)
@@ -28,13 +26,13 @@ LIBSRC= bn_add.c bn_div.c bn_exp.c bn_lib.c bn_ctx.c bn_mul.c bn_mod.c \
28 bn_print.c bn_rand.c bn_shift.c bn_word.c bn_blind.c \ 26 bn_print.c bn_rand.c bn_shift.c bn_word.c bn_blind.c \
29 bn_kron.c bn_sqrt.c bn_gcd.c bn_prime.c bn_err.c bn_sqr.c bn_asm.c \ 27 bn_kron.c bn_sqrt.c bn_gcd.c bn_prime.c bn_err.c bn_sqr.c bn_asm.c \
30 bn_recp.c bn_mont.c bn_mpi.c bn_exp2.c bn_gf2m.c bn_nist.c \ 28 bn_recp.c bn_mont.c bn_mpi.c bn_exp2.c bn_gf2m.c bn_nist.c \
31 bn_depr.c bn_x931p.c bn_const.c bn_opt.c 29 bn_depr.c bn_const.c
32 30
33LIBOBJ= bn_add.o bn_div.o bn_exp.o bn_lib.o bn_ctx.o bn_mul.o bn_mod.o \ 31LIBOBJ= bn_add.o bn_div.o bn_exp.o bn_lib.o bn_ctx.o bn_mul.o bn_mod.o \
34 bn_print.o bn_rand.o bn_shift.o bn_word.o bn_blind.o \ 32 bn_print.o bn_rand.o bn_shift.o bn_word.o bn_blind.o \
35 bn_kron.o bn_sqrt.o bn_gcd.o bn_prime.o bn_err.o bn_sqr.o $(BN_ASM) \ 33 bn_kron.o bn_sqrt.o bn_gcd.o bn_prime.o bn_err.o bn_sqr.o $(BN_ASM) \
36 bn_recp.o bn_mont.o bn_mpi.o bn_exp2.o bn_gf2m.o bn_nist.o \ 34 bn_recp.o bn_mont.o bn_mpi.o bn_exp2.o bn_gf2m.o bn_nist.o \
37 bn_depr.o bn_x931p.o bn_const.o bn_opt.o 35 bn_depr.o bn_const.o
38 36
39SRC= $(LIBSRC) 37SRC= $(LIBSRC)
40 38
@@ -58,36 +56,25 @@ bnbug: bnbug.c ../../libcrypto.a top
58 cc -g -I../../include bnbug.c -o bnbug ../../libcrypto.a 56 cc -g -I../../include bnbug.c -o bnbug ../../libcrypto.a
59 57
60lib: $(LIBOBJ) 58lib: $(LIBOBJ)
61 $(ARX) $(LIB) $(LIBOBJ) 59 $(AR) $(LIB) $(LIBOBJ)
62 $(RANLIB) $(LIB) || echo Never mind. 60 $(RANLIB) $(LIB) || echo Never mind.
63 @touch lib 61 @touch lib
64 62
65# ELF 63bn-586.s: asm/bn-586.pl ../perlasm/x86asm.pl
66bn86-elf.s: asm/bn-586.pl ../perlasm/x86asm.pl 64 $(PERL) asm/bn-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
67 (cd asm; $(PERL) bn-586.pl elf $(CFLAGS) > ../$@) 65co-586.s: asm/co-586.pl ../perlasm/x86asm.pl
68co86-elf.s: asm/co-586.pl ../perlasm/x86asm.pl 66 $(PERL) asm/co-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
69 (cd asm; $(PERL) co-586.pl elf $(CFLAGS) > ../$@) 67x86-mont.s: asm/x86-mont.pl ../perlasm/x86asm.pl
70mo86-elf.s: asm/mo-586.pl ../perlasm/x86asm.pl 68 $(PERL) asm/x86-mont.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
71 (cd asm; $(PERL) mo-586.pl elf $(CFLAGS) > ../$@)
72# COFF
73bn86-cof.s: asm/bn-586.pl ../perlasm/x86asm.pl
74 (cd asm; $(PERL) bn-586.pl coff $(CFLAGS) > ../$@)
75co86-cof.s: asm/co-586.pl ../perlasm/x86asm.pl
76 (cd asm; $(PERL) co-586.pl coff $(CFLAGS) > ../$@)
77mo86-cof.s: asm/mo-586.pl ../perlasm/x86asm.pl
78 (cd asm; $(PERL) mo-586.pl coff $(CFLAGS) > ../$@)
79# a.out
80bn86-out.s: asm/bn-586.pl ../perlasm/x86asm.pl
81 (cd asm; $(PERL) bn-586.pl a.out $(CFLAGS) > ../$@)
82co86-out.s: asm/co-586.pl ../perlasm/x86asm.pl
83 (cd asm; $(PERL) co-586.pl a.out $(CFLAGS) > ../$@)
84mo86-out.s: asm/mo-586.pl ../perlasm/x86asm.pl
85 (cd asm; $(PERL) mo-586.pl a.out $(CFLAGS) > ../$@)
86 69
87sparcv8.o: asm/sparcv8.S 70sparcv8.o: asm/sparcv8.S
88 $(CC) $(CFLAGS) -c asm/sparcv8.S 71 $(CC) $(CFLAGS) -c asm/sparcv8.S
89sparcv8plus.o: asm/sparcv8plus.S 72bn-sparcv9.o: asm/sparcv8plus.S
90 $(CC) $(CFLAGS) -c asm/sparcv8plus.S 73 $(CC) $(CFLAGS) -c -o $@ asm/sparcv8plus.S
74sparcv9a-mont.s: asm/sparcv9a-mont.pl
75 $(PERL) asm/sparcv9a-mont.pl $(CFLAGS) > $@
76sparcv9-mont.s: asm/sparcv9-mont.pl
77 $(PERL) asm/sparcv9-mont.pl $(CFLAGS) > $@
91 78
92bn-mips3.o: asm/mips3.s 79bn-mips3.o: asm/mips3.s
93 @if [ "$(CC)" = "gcc" ]; then \ 80 @if [ "$(CC)" = "gcc" ]; then \
@@ -95,10 +82,13 @@ bn-mips3.o: asm/mips3.s
95 as -$$ABI -O -o $@ asm/mips3.s; \ 82 as -$$ABI -O -o $@ asm/mips3.s; \
96 else $(CC) -c $(CFLAGS) -o $@ asm/mips3.s; fi 83 else $(CC) -c $(CFLAGS) -o $@ asm/mips3.s; fi
97 84
85bn-s390x.o: asm/s390x.S
86 $(CC) $(CFLAGS) -c -o $@ asm/s390x.S
87
98x86_64-gcc.o: asm/x86_64-gcc.c 88x86_64-gcc.o: asm/x86_64-gcc.c
99 $(CC) $(CFLAGS) -c -o $@ asm/x86_64-gcc.c 89 $(CC) $(CFLAGS) -c -o $@ asm/x86_64-gcc.c
100x86_64-mont.s: asm/x86_64-mont.pl 90x86_64-mont.s: asm/x86_64-mont.pl
101 $(PERL) asm/x86_64-mont.pl $@ 91 $(PERL) asm/x86_64-mont.pl $(PERLASM_SCHEME) > $@
102 92
103bn-ia64.s: asm/ia64.S 93bn-ia64.s: asm/ia64.S
104 $(CC) $(CFLAGS) -E asm/ia64.S > $@ 94 $(CC) $(CFLAGS) -E asm/ia64.S > $@
@@ -111,12 +101,14 @@ pa-risc2.o: asm/pa-risc2.s
111 /usr/ccs/bin/as -o pa-risc2.o asm/pa-risc2.s 101 /usr/ccs/bin/as -o pa-risc2.o asm/pa-risc2.s
112 102
113# ppc - AIX, Linux, MacOS X... 103# ppc - AIX, Linux, MacOS X...
114linux_ppc32.s: asm/ppc.pl; $(PERL) $< $@ 104bn-ppc.s: asm/ppc.pl; $(PERL) asm/ppc.pl $(PERLASM_SCHEME) $@
115linux_ppc64.s: asm/ppc.pl; $(PERL) $< $@ 105ppc-mont.s: asm/ppc-mont.pl;$(PERL) asm/ppc-mont.pl $(PERLASM_SCHEME) $@
116aix_ppc32.s: asm/ppc.pl; $(PERL) asm/ppc.pl $@ 106
117aix_ppc64.s: asm/ppc.pl; $(PERL) asm/ppc.pl $@ 107alpha-mont.s: asm/alpha-mont.pl
118osx_ppc32.s: asm/ppc.pl; $(PERL) $< $@ 108 $(PERL) $< | $(CC) -E - | tee $@ > /dev/null
119osx_ppc64.s: asm/ppc.pl; $(PERL) $< $@ 109
110# GNU make "catch all"
111%-mont.s: asm/%-mont.pl; $(PERL) $< $(CFLAGS) > $@
120 112
121files: 113files:
122 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 114 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -184,8 +176,11 @@ bn_blind.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
184bn_blind.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 176bn_blind.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
185bn_blind.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 177bn_blind.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
186bn_blind.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_blind.c bn_lcl.h 178bn_blind.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_blind.c bn_lcl.h
187bn_const.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 179bn_const.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
188bn_const.o: ../../include/openssl/ossl_typ.h bn.h bn_const.c 180bn_const.o: ../../include/openssl/opensslconf.h
181bn_const.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
182bn_const.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
183bn_const.o: ../../include/openssl/symhacks.h bn.h bn_const.c
189bn_ctx.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h 184bn_ctx.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
190bn_ctx.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 185bn_ctx.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
191bn_ctx.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 186bn_ctx.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
@@ -292,13 +287,6 @@ bn_nist.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
292bn_nist.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 287bn_nist.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
293bn_nist.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 288bn_nist.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
294bn_nist.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_nist.c 289bn_nist.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_nist.c
295bn_opt.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
296bn_opt.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
297bn_opt.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
298bn_opt.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
299bn_opt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
300bn_opt.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
301bn_opt.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_opt.c
302bn_prime.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h 290bn_prime.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
303bn_prime.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 291bn_prime.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
304bn_prime.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 292bn_prime.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
@@ -357,6 +345,3 @@ bn_word.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
357bn_word.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 345bn_word.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
358bn_word.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 346bn_word.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
359bn_word.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_word.c 347bn_word.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_word.c
360bn_x931p.o: ../../include/openssl/bn.h ../../include/openssl/e_os2.h
361bn_x931p.o: ../../include/openssl/opensslconf.h
362bn_x931p.o: ../../include/openssl/ossl_typ.h bn_x931p.c
diff --git a/src/lib/libcrypto/bn/bntest.c b/src/lib/libcrypto/bn/bntest.c
index cf190380f5..0cd99c5b4b 100644
--- a/src/lib/libcrypto/bn/bntest.c
+++ b/src/lib/libcrypto/bn/bntest.c
@@ -486,7 +486,7 @@ static void print_word(BIO *bp,BN_ULONG w)
486 return; 486 return;
487 } 487 }
488#endif 488#endif
489 BIO_printf(bp,"%lX",w); 489 BIO_printf(bp,BN_HEX_FMT1,w);
490 } 490 }
491 491
492int test_div_word(BIO *bp) 492int test_div_word(BIO *bp)
@@ -732,6 +732,8 @@ int test_mont(BIO *bp, BN_CTX *ctx)
732 BN_init(&n); 732 BN_init(&n);
733 733
734 mont=BN_MONT_CTX_new(); 734 mont=BN_MONT_CTX_new();
735 if (mont == NULL)
736 return 0;
735 737
736 BN_bntest_rand(&a,100,0,0); /**/ 738 BN_bntest_rand(&a,100,0,0); /**/
737 BN_bntest_rand(&b,100,0,0); /**/ 739 BN_bntest_rand(&b,100,0,0); /**/
@@ -1027,7 +1029,7 @@ int test_exp(BIO *bp, BN_CTX *ctx)
1027 BN_bntest_rand(a,20+i*5,0,0); /**/ 1029 BN_bntest_rand(a,20+i*5,0,0); /**/
1028 BN_bntest_rand(b,2+i,0,0); /**/ 1030 BN_bntest_rand(b,2+i,0,0); /**/
1029 1031
1030 if (!BN_exp(d,a,b,ctx)) 1032 if (BN_exp(d,a,b,ctx) <= 0)
1031 return(0); 1033 return(0);
1032 1034
1033 if (bp != NULL) 1035 if (bp != NULL)
@@ -1116,8 +1118,8 @@ int test_gf2m_mod(BIO *bp)
1116 { 1118 {
1117 BIGNUM *a,*b[2],*c,*d,*e; 1119 BIGNUM *a,*b[2],*c,*d,*e;
1118 int i, j, ret = 0; 1120 int i, j, ret = 0;
1119 unsigned int p0[] = {163,7,6,3,0}; 1121 int p0[] = {163,7,6,3,0,-1};
1120 unsigned int p1[] = {193,15,0}; 1122 int p1[] = {193,15,0,-1};
1121 1123
1122 a=BN_new(); 1124 a=BN_new();
1123 b[0]=BN_new(); 1125 b[0]=BN_new();
@@ -1174,8 +1176,8 @@ int test_gf2m_mod_mul(BIO *bp,BN_CTX *ctx)
1174 { 1176 {
1175 BIGNUM *a,*b[2],*c,*d,*e,*f,*g,*h; 1177 BIGNUM *a,*b[2],*c,*d,*e,*f,*g,*h;
1176 int i, j, ret = 0; 1178 int i, j, ret = 0;
1177 unsigned int p0[] = {163,7,6,3,0}; 1179 int p0[] = {163,7,6,3,0,-1};
1178 unsigned int p1[] = {193,15,0}; 1180 int p1[] = {193,15,0,-1};
1179 1181
1180 a=BN_new(); 1182 a=BN_new();
1181 b[0]=BN_new(); 1183 b[0]=BN_new();
@@ -1245,8 +1247,8 @@ int test_gf2m_mod_sqr(BIO *bp,BN_CTX *ctx)
1245 { 1247 {
1246 BIGNUM *a,*b[2],*c,*d; 1248 BIGNUM *a,*b[2],*c,*d;
1247 int i, j, ret = 0; 1249 int i, j, ret = 0;
1248 unsigned int p0[] = {163,7,6,3,0}; 1250 int p0[] = {163,7,6,3,0,-1};
1249 unsigned int p1[] = {193,15,0}; 1251 int p1[] = {193,15,0,-1};
1250 1252
1251 a=BN_new(); 1253 a=BN_new();
1252 b[0]=BN_new(); 1254 b[0]=BN_new();
@@ -1304,8 +1306,8 @@ int test_gf2m_mod_inv(BIO *bp,BN_CTX *ctx)
1304 { 1306 {
1305 BIGNUM *a,*b[2],*c,*d; 1307 BIGNUM *a,*b[2],*c,*d;
1306 int i, j, ret = 0; 1308 int i, j, ret = 0;
1307 unsigned int p0[] = {163,7,6,3,0}; 1309 int p0[] = {163,7,6,3,0,-1};
1308 unsigned int p1[] = {193,15,0}; 1310 int p1[] = {193,15,0,-1};
1309 1311
1310 a=BN_new(); 1312 a=BN_new();
1311 b[0]=BN_new(); 1313 b[0]=BN_new();
@@ -1359,8 +1361,8 @@ int test_gf2m_mod_div(BIO *bp,BN_CTX *ctx)
1359 { 1361 {
1360 BIGNUM *a,*b[2],*c,*d,*e,*f; 1362 BIGNUM *a,*b[2],*c,*d,*e,*f;
1361 int i, j, ret = 0; 1363 int i, j, ret = 0;
1362 unsigned int p0[] = {163,7,6,3,0}; 1364 int p0[] = {163,7,6,3,0,-1};
1363 unsigned int p1[] = {193,15,0}; 1365 int p1[] = {193,15,0,-1};
1364 1366
1365 a=BN_new(); 1367 a=BN_new();
1366 b[0]=BN_new(); 1368 b[0]=BN_new();
@@ -1422,8 +1424,8 @@ int test_gf2m_mod_exp(BIO *bp,BN_CTX *ctx)
1422 { 1424 {
1423 BIGNUM *a,*b[2],*c,*d,*e,*f; 1425 BIGNUM *a,*b[2],*c,*d,*e,*f;
1424 int i, j, ret = 0; 1426 int i, j, ret = 0;
1425 unsigned int p0[] = {163,7,6,3,0}; 1427 int p0[] = {163,7,6,3,0,-1};
1426 unsigned int p1[] = {193,15,0}; 1428 int p1[] = {193,15,0,-1};
1427 1429
1428 a=BN_new(); 1430 a=BN_new();
1429 b[0]=BN_new(); 1431 b[0]=BN_new();
@@ -1493,8 +1495,8 @@ int test_gf2m_mod_sqrt(BIO *bp,BN_CTX *ctx)
1493 { 1495 {
1494 BIGNUM *a,*b[2],*c,*d,*e,*f; 1496 BIGNUM *a,*b[2],*c,*d,*e,*f;
1495 int i, j, ret = 0; 1497 int i, j, ret = 0;
1496 unsigned int p0[] = {163,7,6,3,0}; 1498 int p0[] = {163,7,6,3,0,-1};
1497 unsigned int p1[] = {193,15,0}; 1499 int p1[] = {193,15,0,-1};
1498 1500
1499 a=BN_new(); 1501 a=BN_new();
1500 b[0]=BN_new(); 1502 b[0]=BN_new();
@@ -1552,8 +1554,8 @@ int test_gf2m_mod_solve_quad(BIO *bp,BN_CTX *ctx)
1552 { 1554 {
1553 BIGNUM *a,*b[2],*c,*d,*e; 1555 BIGNUM *a,*b[2],*c,*d,*e;
1554 int i, j, s = 0, t, ret = 0; 1556 int i, j, s = 0, t, ret = 0;
1555 unsigned int p0[] = {163,7,6,3,0}; 1557 int p0[] = {163,7,6,3,0,-1};
1556 unsigned int p1[] = {193,15,0}; 1558 int p1[] = {193,15,0,-1};
1557 1559
1558 a=BN_new(); 1560 a=BN_new();
1559 b[0]=BN_new(); 1561 b[0]=BN_new();
diff --git a/src/lib/libcrypto/bn/exptest.c b/src/lib/libcrypto/bn/exptest.c
index f598a07cf5..074a8e882a 100644
--- a/src/lib/libcrypto/bn/exptest.c
+++ b/src/lib/libcrypto/bn/exptest.c
@@ -163,7 +163,7 @@ int main(int argc, char *argv[])
163 { 163 {
164 if (BN_cmp(r_simple,r_mont) != 0) 164 if (BN_cmp(r_simple,r_mont) != 0)
165 printf("\nsimple and mont results differ\n"); 165 printf("\nsimple and mont results differ\n");
166 if (BN_cmp(r_simple,r_mont) != 0) 166 if (BN_cmp(r_simple,r_mont_const) != 0)
167 printf("\nsimple and mont const time results differ\n"); 167 printf("\nsimple and mont const time results differ\n");
168 if (BN_cmp(r_simple,r_recp) != 0) 168 if (BN_cmp(r_simple,r_recp) != 0)
169 printf("\nsimple and recp results differ\n"); 169 printf("\nsimple and recp results differ\n");
@@ -187,7 +187,7 @@ int main(int argc, char *argv[])
187 BN_free(b); 187 BN_free(b);
188 BN_free(m); 188 BN_free(m);
189 BN_CTX_free(ctx); 189 BN_CTX_free(ctx);
190 ERR_remove_state(0); 190 ERR_remove_thread_state(NULL);
191 CRYPTO_mem_leaks(out); 191 CRYPTO_mem_leaks(out);
192 BIO_free(out); 192 BIO_free(out);
193 printf(" done\n"); 193 printf(" done\n");
diff --git a/src/lib/libcrypto/buffer/Makefile b/src/lib/libcrypto/buffer/Makefile
index 9e0f46e19a..9f3a88d2d6 100644
--- a/src/lib/libcrypto/buffer/Makefile
+++ b/src/lib/libcrypto/buffer/Makefile
@@ -17,8 +17,8 @@ TEST=
17APPS= 17APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= buffer.c buf_str.c buf_err.c 20LIBSRC= buffer.c buf_err.c
21LIBOBJ= buffer.o buf_str.o buf_err.o 21LIBOBJ= buffer.o buf_err.o
22 22
23SRC= $(LIBSRC) 23SRC= $(LIBSRC)
24 24
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -81,13 +81,6 @@ buf_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
81buf_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 81buf_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
82buf_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 82buf_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
83buf_err.o: buf_err.c 83buf_err.o: buf_err.c
84buf_str.o: ../../e_os.h ../../include/openssl/bio.h
85buf_str.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
86buf_str.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
87buf_str.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
88buf_str.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
89buf_str.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
90buf_str.o: ../../include/openssl/symhacks.h ../cryptlib.h buf_str.c
91buffer.o: ../../e_os.h ../../include/openssl/bio.h 84buffer.o: ../../e_os.h ../../include/openssl/bio.h
92buffer.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 85buffer.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
93buffer.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 86buffer.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
diff --git a/src/lib/libcrypto/cast/Makefile b/src/lib/libcrypto/cast/Makefile
index 2e026dbe0d..0acc38f28d 100644
--- a/src/lib/libcrypto/cast/Makefile
+++ b/src/lib/libcrypto/cast/Makefile
@@ -38,19 +38,12 @@ top:
38all: lib 38all: lib
39 39
40lib: $(LIBOBJ) 40lib: $(LIBOBJ)
41 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
42 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
43 @touch lib 43 @touch lib
44 44
45# ELF 45cast-586.s: asm/cast-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
46cx86-elf.s: asm/cast-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl 46 $(PERL) asm/cast-586.pl $(PERLASM_SCHEME) $(CLAGS) $(PROCESSOR) > $@
47 (cd asm; $(PERL) cast-586.pl elf $(CLAGS) $(PROCESSOR) > ../$@)
48# COFF
49cx86-cof.s: asm/cast-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
50 (cd asm; $(PERL) cast-586.pl coff $(CLAGS) $(PROCESSOR) > ../$@)
51# a.out
52cx86-out.s: asm/cast-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
53 (cd asm; $(PERL) cast-586.pl a.out $(CLAGS) $(PROCESSOR) > ../$@)
54 47
55files: 48files:
56 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 49 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -102,8 +95,5 @@ c_ofb64.o: ../../e_os.h ../../include/openssl/cast.h
102c_ofb64.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 95c_ofb64.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
103c_ofb64.o: c_ofb64.c cast_lcl.h 96c_ofb64.o: c_ofb64.c cast_lcl.h
104c_skey.o: ../../e_os.h ../../include/openssl/cast.h 97c_skey.o: ../../e_os.h ../../include/openssl/cast.h
105c_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 98c_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
106c_skey.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h 99c_skey.o: c_skey.c cast_lcl.h cast_s.h
107c_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
108c_skey.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
109c_skey.o: ../../include/openssl/symhacks.h c_skey.c cast_lcl.h cast_s.h
diff --git a/src/lib/libcrypto/comp/Makefile b/src/lib/libcrypto/comp/Makefile
index 5d364b8513..efda832dce 100644
--- a/src/lib/libcrypto/comp/Makefile
+++ b/src/lib/libcrypto/comp/Makefile
@@ -36,7 +36,7 @@ top:
36all: lib 36all: lib
37 37
38lib: $(LIBOBJ) 38lib: $(LIBOBJ)
39 $(ARX) $(LIB) $(LIBOBJ) 39 $(AR) $(LIB) $(LIBOBJ)
40 $(RANLIB) $(LIB) || echo Never mind. 40 $(RANLIB) $(LIB) || echo Never mind.
41 @touch lib 41 @touch lib
42 42
diff --git a/src/lib/libcrypto/conf/Makefile b/src/lib/libcrypto/conf/Makefile
index ccd0721332..78bb324106 100644
--- a/src/lib/libcrypto/conf/Makefile
+++ b/src/lib/libcrypto/conf/Makefile
@@ -36,7 +36,7 @@ top:
36all: lib 36all: lib
37 37
38lib: $(LIBOBJ) 38lib: $(LIBOBJ)
39 $(ARX) $(LIB) $(LIBOBJ) 39 $(AR) $(LIB) $(LIBOBJ)
40 $(RANLIB) $(LIB) || echo Never mind. 40 $(RANLIB) $(LIB) || echo Never mind.
41 @touch lib 41 @touch lib
42 42
@@ -114,8 +114,8 @@ conf_mall.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
114conf_mall.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 114conf_mall.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
115conf_mall.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 115conf_mall.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
116conf_mall.o: ../../include/openssl/err.h ../../include/openssl/evp.h 116conf_mall.o: ../../include/openssl/err.h ../../include/openssl/evp.h
117conf_mall.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 117conf_mall.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
118conf_mall.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 118conf_mall.o: ../../include/openssl/objects.h
119conf_mall.o: ../../include/openssl/opensslconf.h 119conf_mall.o: ../../include/openssl/opensslconf.h
120conf_mall.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 120conf_mall.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
121conf_mall.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 121conf_mall.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -128,9 +128,9 @@ conf_mod.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
128conf_mod.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h 128conf_mod.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
129conf_mod.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 129conf_mod.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
130conf_mod.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 130conf_mod.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
131conf_mod.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 131conf_mod.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
132conf_mod.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 132conf_mod.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
133conf_mod.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 133conf_mod.o: ../../include/openssl/opensslconf.h
134conf_mod.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 134conf_mod.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
135conf_mod.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 135conf_mod.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
136conf_mod.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 136conf_mod.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -143,9 +143,8 @@ conf_sap.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
143conf_sap.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 143conf_sap.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
144conf_sap.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 144conf_sap.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
145conf_sap.o: ../../include/openssl/err.h ../../include/openssl/evp.h 145conf_sap.o: ../../include/openssl/err.h ../../include/openssl/evp.h
146conf_sap.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 146conf_sap.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
147conf_sap.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 147conf_sap.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
148conf_sap.o: ../../include/openssl/opensslconf.h
149conf_sap.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 148conf_sap.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
150conf_sap.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 149conf_sap.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
151conf_sap.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 150conf_sap.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
diff --git a/src/lib/libcrypto/crypto-lib.com b/src/lib/libcrypto/crypto-lib.com
index e72af90822..a4b6635091 100644
--- a/src/lib/libcrypto/crypto-lib.com
+++ b/src/lib/libcrypto/crypto-lib.com
@@ -6,10 +6,11 @@ $! A-Com Computing, Inc.
6$! byer@mail.all-net.net 6$! byer@mail.all-net.net
7$! 7$!
8$! Changes by Richard Levitte <richard@levitte.org> 8$! Changes by Richard Levitte <richard@levitte.org>
9$! Zoltan Arpadffy <arpadffy@polarhome.com>
9$! 10$!
10$! This command files compiles and creates the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" 11$! This command files compiles and creates the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB"
11$! library for OpenSSL. The "xxx" denotes the machine architecture of AXP 12$! library for OpenSSL. The "xxx" denotes the machine architecture, ALPHA,
12$! or VAX. 13$! IA64 or VAX.
13$! 14$!
14$! It was re-written so it would try to determine what "C" compiler to use 15$! It was re-written so it would try to determine what "C" compiler to use
15$! or you can specify which "C" compiler to use. 16$! or you can specify which "C" compiler to use.
@@ -17,28 +18,28 @@ $!
17$! Specify the following as P1 to build just that part or ALL to just 18$! Specify the following as P1 to build just that part or ALL to just
18$! build everything. 19$! build everything.
19$! 20$!
20$! LIBRARY To just compile the [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library. 21$! LIBRARY To just compile the [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
21$! APPS To just compile the [.xxx.EXE.CRYPTO]*.EXE 22$! APPS To just compile the [.xxx.EXE.CRYPTO]*.EXE
22$! ALL To do both LIBRARY and APPS 23$! ALL To do both LIBRARY and APPS
23$! 24$!
24$! Specify DEBUG or NODEBUG as P2 to compile with or without debugger 25$! Specify DEBUG or NODEBUG as P2 to compile with or without debugger
25$! information. 26$! information.
26$! 27$!
27$! Specify which compiler at P3 to try to compile under. 28$! Specify which compiler at P3 to try to compile under.
28$! 29$!
29$! VAXC For VAX C. 30$! VAXC For VAX C.
30$! DECC For DEC C. 31$! DECC For DEC C.
31$! GNUC For GNU C. 32$! GNUC For GNU C.
32$! 33$!
33$! If you don't speficy a compiler, it will try to determine which 34$! If you don't specify a compiler, it will try to determine which
34$! "C" compiler to use. 35$! "C" compiler to use.
35$! 36$!
36$! P4, if defined, sets a TCP/IP library to use, through one of the following 37$! P4, if defined, sets a TCP/IP library to use, through one of the following
37$! keywords: 38$! keywords:
38$! 39$!
39$! UCX for UCX 40$! UCX For UCX
40$! TCPIP for TCPIP (post UCX) 41$! TCPIP For TCPIP (post UCX)
41$! SOCKETSHR for SOCKETSHR+NETLIB 42$! SOCKETSHR For SOCKETSHR+NETLIB
42$! 43$!
43$! P5, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up) 44$! P5, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
44$! 45$!
@@ -54,36 +55,49 @@ $ TCPIP_LIB = ""
54$! 55$!
55$! Check Which Architecture We Are Using. 56$! Check Which Architecture We Are Using.
56$! 57$!
57$ IF (F$GETSYI("CPU").GE.128) 58$ IF (F$GETSYI("CPU").LT.128)
58$ THEN 59$ THEN
59$! 60$!
60$! The Architecture Is AXP 61$! The Architecture Is VAX
61$! 62$!
62$ ARCH := AXP 63$ ARCH = "VAX"
63$! 64$!
64$! Else... 65$! Else...
65$! 66$!
66$ ELSE 67$ ELSE
67$! 68$!
68$! The Architecture Is VAX. 69$! The Architecture Is Alpha, IA64 or whatever comes in the future.
69$! 70$!
70$ ARCH := VAX 71$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
72$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
71$! 73$!
72$! End The Architecture Check. 74$! End The Architecture Check.
73$! 75$!
74$ ENDIF 76$ ENDIF
75$! 77$!
76$! Define The Different Encryption Types. 78$! Define The Different Encryption Types.
79$! NOTE: Some might think this list ugly. However, it's made this way to
80$! reflect the SDIRS variable in [-]Makefile.org as closely as possible,
81$! thereby making it fairly easy to verify that the lists are the same.
77$! 82$!
83$ ET_WHIRLPOOL = "WHRLPOOL"
84$ IF ARCH .EQS. "VAX" THEN ET_WHIRLPOOL = ""
78$ ENCRYPT_TYPES = "Basic,"+ - 85$ ENCRYPT_TYPES = "Basic,"+ -
79 "OBJECTS,"+ - 86 "OBJECTS,"+ -
80 "MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,"+ - 87 "MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,"+ET_WHIRLPOOL+","+ -
81 "DES,RC2,RC4,RC5,IDEA,BF,CAST,CAMELLIA,SEED,"+ - 88 "DES,AES,RC2,RC4,RC5,IDEA,BF,CAST,CAMELLIA,SEED,MODES,"+ -
82 "BN,EC,RSA,DSA,ECDSA,DH,ECDH,DSO,ENGINE,AES,"+ - 89 "BN,EC,RSA,DSA,ECDSA,DH,ECDH,DSO,ENGINE,"+ -
83 "BUFFER,BIO,STACK,LHASH,RAND,ERR,"+ - 90 "BUFFER,BIO,STACK,LHASH,RAND,ERR,"+ -
84 "EVP,EVP_2,ASN1,ASN1_2,PEM,X509,X509V3,"+ - 91 "EVP,EVP_2,EVP_3,ASN1,ASN1_2,PEM,X509,X509V3,"+ -
85 "CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,UI,KRB5,"+ - 92 "CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,UI,KRB5,"+ -
86 "STORE,CMS,PQUEUE,JPAKE" 93 "STORE,CMS,PQUEUE,TS,JPAKE"
94$! Define The OBJ Directory.
95$!
96$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.CRYPTO]
97$!
98$! Define The EXE Directory.
99$!
100$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]
87$! 101$!
88$! Check To Make Sure We Have Valid Command Line Parameters. 102$! Check To Make Sure We Have Valid Command Line Parameters.
89$! 103$!
@@ -97,9 +111,6 @@ $! Tell The User What Kind of Machine We Run On.
97$! 111$!
98$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine." 112$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
99$! 113$!
100$! Define The OBJ Directory.
101$!
102$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.CRYPTO]
103$! 114$!
104$! Check To See If The Architecture Specific OBJ Directory Exists. 115$! Check To See If The Architecture Specific OBJ Directory Exists.
105$! 116$!
@@ -114,10 +125,6 @@ $! End The Architecture Specific OBJ Directory Check.
114$! 125$!
115$ ENDIF 126$ ENDIF
116$! 127$!
117$! Define The EXE Directory.
118$!
119$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]
120$!
121$! Check To See If The Architecture Specific Directory Exists. 128$! Check To See If The Architecture Specific Directory Exists.
122$! 129$!
123$ IF (F$PARSE(EXE_DIR).EQS."") 130$ IF (F$PARSE(EXE_DIR).EQS."")
@@ -161,15 +168,16 @@ $!
161$ APPS_DES = "DES/DES,CBC3_ENC" 168$ APPS_DES = "DES/DES,CBC3_ENC"
162$ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE" 169$ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE"
163$ 170$
164$ LIB_ = "cryptlib,dyn_lck,mem,mem_clr,mem_dbg,cversion,ex_data,tmdiff,cpt_err,ebcdic,uid,o_time,o_str,o_dir,o_init,fips_err" 171$ LIB_ = "cryptlib,mem,mem_clr,mem_dbg,cversion,ex_data,cpt_err,ebcdic,uid,o_time,o_str,o_dir"
165$ LIB_MD2 = "md2_dgst,md2_one" 172$ LIB_MD2 = "md2_dgst,md2_one"
166$ LIB_MD4 = "md4_dgst,md4_one" 173$ LIB_MD4 = "md4_dgst,md4_one"
167$ LIB_MD5 = "md5_dgst,md5_one" 174$ LIB_MD5 = "md5_dgst,md5_one"
168$ LIB_SHA = "sha_dgst,sha1dgst,sha_one,sha1_one,sha256,sha512" 175$ LIB_SHA = "sha_dgst,sha1dgst,sha_one,sha1_one,sha256,sha512"
169$ LIB_MDC2 = "mdc2dgst,mdc2_one" 176$ LIB_MDC2 = "mdc2dgst,mdc2_one"
170$ LIB_HMAC = "hmac" 177$ LIB_HMAC = "hmac,hm_ameth,hm_pmeth"
171$ LIB_RIPEMD = "rmd_dgst,rmd_one" 178$ LIB_RIPEMD = "rmd_dgst,rmd_one"
172$ LIB_DES = "des_lib,set_key,ecb_enc,cbc_enc,"+ - 179$ LIB_WHRLPOOL = "wp_dgst,wp_block"
180$ LIB_DES = "set_key,ecb_enc,cbc_enc,"+ -
173 "ecb3_enc,cfb64enc,cfb64ede,cfb_enc,ofb64ede,"+ - 181 "ecb3_enc,cfb64enc,cfb64ede,cfb_enc,ofb64ede,"+ -
174 "enc_read,enc_writ,ofb64enc,"+ - 182 "enc_read,enc_writ,ofb64enc,"+ -
175 "ofb_enc,str2key,pcbc_enc,qud_cksm,rand_key,"+ - 183 "ofb_enc,str2key,pcbc_enc,qud_cksm,rand_key,"+ -
@@ -184,35 +192,39 @@ $ LIB_BF = "bf_skey,bf_ecb,bf_enc,bf_cfb64,bf_ofb64"
184$ LIB_CAST = "c_skey,c_ecb,c_enc,c_cfb64,c_ofb64" 192$ LIB_CAST = "c_skey,c_ecb,c_enc,c_cfb64,c_ofb64"
185$ LIB_CAMELLIA = "camellia,cmll_misc,cmll_ecb,cmll_cbc,cmll_ofb,"+ - 193$ LIB_CAMELLIA = "camellia,cmll_misc,cmll_ecb,cmll_cbc,cmll_ofb,"+ -
186 "cmll_cfb,cmll_ctr" 194 "cmll_cfb,cmll_ctr"
187$ LIB_SEED = "seed,seed_cbc,seed_ecb,seed_cfb,seed_ofb" 195$ LIB_SEED = "seed,seed_ecb,seed_cbc,seed_cfb,seed_ofb"
196$ LIB_MODES = "cbc128,ctr128,cfb128,ofb128"
188$ LIB_BN_ASM = "[.asm]vms.mar,vms-helper" 197$ LIB_BN_ASM = "[.asm]vms.mar,vms-helper"
189$ IF F$TRNLNM("OPENSSL_NO_ASM").OR.ARCH.EQS."AXP" THEN LIB_BN_ASM = "bn_asm" 198$ IF F$TRNLNM("OPENSSL_NO_ASM") .OR. ARCH .NES. "VAX" THEN -
199 LIB_BN_ASM = "bn_asm"
190$ LIB_BN = "bn_add,bn_div,bn_exp,bn_lib,bn_ctx,bn_mul,bn_mod,"+ - 200$ LIB_BN = "bn_add,bn_div,bn_exp,bn_lib,bn_ctx,bn_mul,bn_mod,"+ -
191 "bn_print,bn_rand,bn_shift,bn_word,bn_blind,"+ - 201 "bn_print,bn_rand,bn_shift,bn_word,bn_blind,"+ -
192 "bn_kron,bn_sqrt,bn_gcd,bn_prime,bn_err,bn_sqr,"+LIB_BN_ASM+","+ - 202 "bn_kron,bn_sqrt,bn_gcd,bn_prime,bn_err,bn_sqr,"+LIB_BN_ASM+","+ -
193 "bn_recp,bn_mont,bn_mpi,bn_exp2,bn_gf2m,bn_nist,"+ - 203 "bn_recp,bn_mont,bn_mpi,bn_exp2,bn_gf2m,bn_nist,"+ -
194 "bn_depr,bn_x931p,bn_const,bn_opt" 204 "bn_depr,bn_const"
195$ LIB_EC = "ec_lib,ecp_smpl,ecp_mont,ecp_nist,ec_cvt,ec_mult,"+ - 205$ LIB_EC = "ec_lib,ecp_smpl,ecp_mont,ecp_nist,ec_cvt,ec_mult,"+ -
196 "ec_err,ec_curve,ec_check,ec_print,ec_asn1,ec_key,"+ - 206 "ec_err,ec_curve,ec_check,ec_print,ec_asn1,ec_key,"+ -
197 "ec2_smpl,ec2_mult" 207 "ec2_smpl,ec2_mult,ec_ameth,ec_pmeth,eck_prn"
198$ LIB_RSA = "rsa_eay,rsa_gen,rsa_lib,rsa_sign,rsa_saos,rsa_err,"+ - 208$ LIB_RSA = "rsa_eay,rsa_gen,rsa_lib,rsa_sign,rsa_saos,rsa_err,"+ -
199 "rsa_pk1,rsa_ssl,rsa_none,rsa_oaep,rsa_chk,rsa_null,"+ - 209 "rsa_pk1,rsa_ssl,rsa_none,rsa_oaep,rsa_chk,rsa_null,"+ -
200 "rsa_pss,rsa_x931,rsa_x931g,rsa_asn1,rsa_depr,rsa_eng" 210 "rsa_pss,rsa_x931,rsa_asn1,rsa_depr,rsa_ameth,rsa_prn,"+ -
211 "rsa_pmeth"
201$ LIB_DSA = "dsa_gen,dsa_key,dsa_lib,dsa_asn1,dsa_vrf,dsa_sign,"+ - 212$ LIB_DSA = "dsa_gen,dsa_key,dsa_lib,dsa_asn1,dsa_vrf,dsa_sign,"+ -
202 "dsa_err,dsa_ossl,dsa_depr,dsa_utl" 213 "dsa_err,dsa_ossl,dsa_depr,dsa_ameth,dsa_pmeth,dsa_prn"
203$ LIB_ECDSA = "ecs_lib,ecs_asn1,ecs_ossl,ecs_sign,ecs_vrf,ecs_err" 214$ LIB_ECDSA = "ecs_lib,ecs_asn1,ecs_ossl,ecs_sign,ecs_vrf,ecs_err"
204$ LIB_DH = "dh_asn1,dh_gen,dh_key,dh_lib,dh_check,dh_err,dh_depr" 215$ LIB_DH = "dh_asn1,dh_gen,dh_key,dh_lib,dh_check,dh_err,dh_depr,"+ -
216 "dh_ameth,dh_pmeth,dh_prn"
205$ LIB_ECDH = "ech_lib,ech_ossl,ech_key,ech_err" 217$ LIB_ECDH = "ech_lib,ech_ossl,ech_key,ech_err"
206$ LIB_DSO = "dso_dl,dso_dlfcn,dso_err,dso_lib,dso_null,"+ - 218$ LIB_DSO = "dso_dl,dso_dlfcn,dso_err,dso_lib,dso_null,"+ -
207 "dso_openssl,dso_win32,dso_vms" 219 "dso_openssl,dso_win32,dso_vms,dso_beos"
208$ LIB_ENGINE = "eng_err,eng_lib,eng_list,eng_init,eng_ctrl,"+ - 220$ LIB_ENGINE = "eng_err,eng_lib,eng_list,eng_init,eng_ctrl,"+ -
209 "eng_table,eng_pkey,eng_fat,eng_all,"+ - 221 "eng_table,eng_pkey,eng_fat,eng_all,"+ -
210 "tb_rsa,tb_dsa,tb_ecdsa,tb_dh,tb_ecdh,tb_rand,tb_store,"+ - 222 "tb_rsa,tb_dsa,tb_ecdsa,tb_dh,tb_ecdh,tb_rand,tb_store,"+ -
211 "tb_cipher,tb_digest,"+ - 223 "tb_cipher,tb_digest,tb_pkmeth,tb_asnmth,"+ -
212 "eng_openssl,eng_dyn,eng_cnf,eng_cryptodev,eng_padlock" 224 "eng_openssl,eng_dyn,eng_cnf,eng_cryptodev"
213$ LIB_AES = "aes_core,aes_misc,aes_ecb,aes_cbc,aes_cfb,aes_ofb,"+ - 225$ LIB_AES = "aes_core,aes_misc,aes_ecb,aes_cbc,aes_cfb,aes_ofb,aes_ctr,"+ -
214 "aes_ctr,aes_ige,aes_wrap" 226 "aes_ige,aes_wrap"
215$ LIB_BUFFER = "buffer,buf_str,buf_err" 227$ LIB_BUFFER = "buffer,buf_err"
216$ LIB_BIO = "bio_lib,bio_cb,bio_err,"+ - 228$ LIB_BIO = "bio_lib,bio_cb,bio_err,"+ -
217 "bss_mem,bss_null,bss_fd,"+ - 229 "bss_mem,bss_null,bss_fd,"+ -
218 "bss_file,bss_sock,bss_conn,"+ - 230 "bss_file,bss_sock,bss_conn,"+ -
@@ -224,33 +236,34 @@ $ LIB_STACK = "stack"
224$ LIB_LHASH = "lhash,lh_stats" 236$ LIB_LHASH = "lhash,lh_stats"
225$ LIB_RAND = "md_rand,randfile,rand_lib,rand_err,rand_egd,"+ - 237$ LIB_RAND = "md_rand,randfile,rand_lib,rand_err,rand_egd,"+ -
226 "rand_vms" 238 "rand_vms"
227$ LIB_ERR = "err,err_def,err_all,err_prn,err_str,err_bio" 239$ LIB_ERR = "err,err_all,err_prn"
228$ LIB_OBJECTS = "o_names,obj_dat,obj_lib,obj_err" 240$ LIB_OBJECTS = "o_names,obj_dat,obj_lib,obj_err,obj_xref"
229$ LIB_EVP = "encode,digest,dig_eng,evp_enc,evp_key,evp_acnf,evp_cnf,"+ - 241$ LIB_EVP = "encode,digest,evp_enc,evp_key,evp_acnf,"+ -
230 "e_des,e_bf,e_idea,e_des3,e_camellia,"+ - 242 "e_des,e_bf,e_idea,e_des3,e_camellia,"+ -
231 "e_rc4,e_aes,names,e_seed,"+ - 243 "e_rc4,e_aes,names,e_seed,"+ -
232 "e_xcbc_d,e_rc2,e_cast,e_rc5,enc_min" 244 "e_xcbc_d,e_rc2,e_cast,e_rc5"
233$ LIB_EVP_2 = "m_null,m_md2,m_md4,m_md5,m_sha,m_sha1," + - 245$ LIB_EVP_2 = "m_null,m_md2,m_md4,m_md5,m_sha,m_sha1,m_wp," + -
234 "m_dss,m_dss1,m_mdc2,m_ripemd,m_ecdsa,"+ - 246 "m_dss,m_dss1,m_mdc2,m_ripemd,m_ecdsa,"+ -
235 "p_open,p_seal,p_sign,p_verify,p_lib,p_enc,p_dec,"+ - 247 "p_open,p_seal,p_sign,p_verify,p_lib,p_enc,p_dec,"+ -
236 "bio_md,bio_b64,bio_enc,evp_err,e_null,"+ - 248 "bio_md,bio_b64,bio_enc,evp_err,e_null,"+ -
237 "c_all,c_allc,c_alld,evp_lib,bio_ok,"+- 249 "c_all,c_allc,c_alld,evp_lib,bio_ok,"+-
238 "evp_pkey,evp_pbe,p5_crpt,p5_crpt2" 250 "evp_pkey,evp_pbe,p5_crpt,p5_crpt2"
239$ LIB_EVP_3 = "e_old" 251$ LIB_EVP_3 = "e_old,pmeth_lib,pmeth_fn,pmeth_gn,m_sigver"
240$ LIB_ASN1 = "a_object,a_bitstr,a_utctm,a_gentm,a_time,a_int,a_octet,"+ - 252$ LIB_ASN1 = "a_object,a_bitstr,a_utctm,a_gentm,a_time,a_int,a_octet,"+ -
241 "a_print,a_type,a_set,a_dup,a_d2i_fp,a_i2d_fp,"+ - 253 "a_print,a_type,a_set,a_dup,a_d2i_fp,a_i2d_fp,"+ -
242 "a_enum,a_utf8,a_sign,a_digest,a_verify,a_mbstr,a_strex,"+ - 254 "a_enum,a_utf8,a_sign,a_digest,a_verify,a_mbstr,a_strex,"+ -
243 "x_algor,x_val,x_pubkey,x_sig,x_req,x_attrib,x_bignum,"+ - 255 "x_algor,x_val,x_pubkey,x_sig,x_req,x_attrib,x_bignum,"+ -
244 "x_long,x_name,x_x509,x_x509a,x_crl,x_info,x_spki,nsseq,"+ - 256 "x_long,x_name,x_x509,x_x509a,x_crl,x_info,x_spki,nsseq,"+ -
245 "d2i_pu,d2i_pr,i2d_pu,i2d_pr" 257 "x_nx509,d2i_pu,d2i_pr,i2d_pu,i2d_pr"
246$ LIB_ASN1_2 = "t_req,t_x509,t_x509a,t_crl,t_pkey,t_spki,t_bitst,"+ - 258$ LIB_ASN1_2 = "t_req,t_x509,t_x509a,t_crl,t_pkey,t_spki,t_bitst,"+ -
247 "tasn_new,tasn_fre,tasn_enc,tasn_dec,tasn_utl,tasn_typ,"+ - 259 "tasn_new,tasn_fre,tasn_enc,tasn_dec,tasn_utl,tasn_typ,"+ -
260 "tasn_prn,ameth_lib,"+ -
248 "f_int,f_string,n_pkey,"+ - 261 "f_int,f_string,n_pkey,"+ -
249 "f_enum,a_hdr,x_pkey,a_bool,x_exten,asn_mime,"+ - 262 "f_enum,x_pkey,a_bool,x_exten,bio_asn1,bio_ndef,asn_mime,"+ -
250 "asn1_gen,asn1_par,asn1_lib,asn1_err,a_meth,a_bytes,a_strnid,"+ - 263 "asn1_gen,asn1_par,asn1_lib,asn1_err,a_bytes,a_strnid,"+ -
251 "evp_asn1,asn_pack,p5_pbe,p5_pbev2,p8_pkey,asn_moid" 264 "evp_asn1,asn_pack,p5_pbe,p5_pbev2,p8_pkey,asn_moid"
252$ LIB_PEM = "pem_sign,pem_seal,pem_info,pem_lib,pem_all,pem_err,"+ - 265$ LIB_PEM = "pem_sign,pem_seal,pem_info,pem_lib,pem_all,pem_err,"+ -
253 "pem_x509,pem_xaux,pem_oth,pem_pk8,pem_pkey" 266 "pem_x509,pem_xaux,pem_oth,pem_pk8,pem_pkey,pvkfmt"
254$ LIB_X509 = "x509_def,x509_d2,x509_r2x,x509_cmp,"+ - 267$ LIB_X509 = "x509_def,x509_d2,x509_r2x,x509_cmp,"+ -
255 "x509_obj,x509_req,x509spki,x509_vfy,"+ - 268 "x509_obj,x509_req,x509spki,x509_vfy,"+ -
256 "x509_set,x509cset,x509rset,x509_err,"+ - 269 "x509_set,x509cset,x509rset,x509_err,"+ -
@@ -266,7 +279,7 @@ $ LIB_X509V3 = "v3_bcons,v3_bitst,v3_conf,v3_extku,v3_ia5,v3_lib,"+ -
266$ LIB_CONF = "conf_err,conf_lib,conf_api,conf_def,conf_mod,conf_mall,conf_sap" 279$ LIB_CONF = "conf_err,conf_lib,conf_api,conf_def,conf_mod,conf_mall,conf_sap"
267$ LIB_TXT_DB = "txt_db" 280$ LIB_TXT_DB = "txt_db"
268$ LIB_PKCS7 = "pk7_asn1,pk7_lib,pkcs7err,pk7_doit,pk7_smime,pk7_attr,"+ - 281$ LIB_PKCS7 = "pk7_asn1,pk7_lib,pkcs7err,pk7_doit,pk7_smime,pk7_attr,"+ -
269 "pk7_mime" 282 "pk7_mime,bio_pk7"
270$ LIB_PKCS12 = "p12_add,p12_asn,p12_attr,p12_crpt,p12_crt,p12_decr,"+ - 283$ LIB_PKCS12 = "p12_add,p12_asn,p12_attr,p12_crpt,p12_crt,p12_decr,"+ -
271 "p12_init,p12_key,p12_kiss,p12_mutl,"+ - 284 "p12_init,p12_key,p12_kiss,p12_mutl,"+ -
272 "p12_utl,p12_npas,pk12err,p12_p8d,p12_p8e" 285 "p12_utl,p12_npas,pk12err,p12_p8d,p12_p8e"
@@ -281,6 +294,9 @@ $ LIB_STORE = "str_err,str_lib,str_meth,str_mem"
281$ LIB_CMS = "cms_lib,cms_asn1,cms_att,cms_io,cms_smime,cms_err,"+ - 294$ LIB_CMS = "cms_lib,cms_asn1,cms_att,cms_io,cms_smime,cms_err,"+ -
282 "cms_sd,cms_dd,cms_cd,cms_env,cms_enc,cms_ess" 295 "cms_sd,cms_dd,cms_cd,cms_env,cms_enc,cms_ess"
283$ LIB_PQUEUE = "pqueue" 296$ LIB_PQUEUE = "pqueue"
297$ LIB_TS = "ts_err,ts_req_utils,ts_req_print,ts_rsp_utils,ts_rsp_print,"+ -
298 "ts_rsp_sign,ts_rsp_verify,ts_verify_ctx,ts_lib,ts_conf,"+ -
299 "ts_asn1"
284$ LIB_JPAKE = "jpake,jpake_err" 300$ LIB_JPAKE = "jpake,jpake_err"
285$! 301$!
286$! Setup exceptional compilations 302$! Setup exceptional compilations
@@ -291,7 +307,7 @@ $ ! Disable the DOLLARID warning
291$ COMPILEWITH_CC4 = ",a_utctm,bss_log,o_time,o_dir" 307$ COMPILEWITH_CC4 = ",a_utctm,bss_log,o_time,o_dir"
292$ ! Disable disjoint optimization 308$ ! Disable disjoint optimization
293$ COMPILEWITH_CC5 = ",md2_dgst,md4_dgst,md5_dgst,mdc2dgst," + - 309$ COMPILEWITH_CC5 = ",md2_dgst,md4_dgst,md5_dgst,mdc2dgst," + -
294 "sha_dgst,sha1dgst,rmd_dgst,bf_enc," 310 "seed,sha_dgst,sha1dgst,rmd_dgst,bf_enc,"
295$ ! Disable the MIXLINKAGE warning 311$ ! Disable the MIXLINKAGE warning
296$ COMPILEWITH_CC6 = ",enc_read,set_key," 312$ COMPILEWITH_CC6 = ",enc_read,set_key,"
297$! 313$!
@@ -334,11 +350,11 @@ $! Create The Library and Apps Module Names.
334$! 350$!
335$ LIB_MODULE = "LIB_" + MODULE_NAME 351$ LIB_MODULE = "LIB_" + MODULE_NAME
336$ APPS_MODULE = "APPS_" + MODULE_NAME 352$ APPS_MODULE = "APPS_" + MODULE_NAME
337$ IF (MODULE_NAME.EQS."ASN1_2") 353$ IF (F$EXTRACT(0,5,MODULE_NAME).EQS."ASN1_")
338$ THEN 354$ THEN
339$ MODULE_NAME = "ASN1" 355$ MODULE_NAME = "ASN1"
340$ ENDIF 356$ ENDIF
341$ IF (MODULE_NAME.EQS."EVP_2") 357$ IF (F$EXTRACT(0,4,MODULE_NAME).EQS."EVP_")
342$ THEN 358$ THEN
343$ MODULE_NAME = "EVP" 359$ MODULE_NAME = "EVP"
344$ ENDIF 360$ ENDIF
@@ -353,7 +369,7 @@ $!
353$ IF F$TYPE('LIB_MODULE') .EQS. "" 369$ IF F$TYPE('LIB_MODULE') .EQS. ""
354$ THEN 370$ THEN
355$ WRITE SYS$ERROR "" 371$ WRITE SYS$ERROR ""
356$ WRITE SYS$ERROR "The module ",MODULE_NAME," does not exist. Continuing..." 372$ WRITE SYS$ERROR "The module ",MODULE_NAME1," does not exist. Continuing..."
357$ WRITE SYS$ERROR "" 373$ WRITE SYS$ERROR ""
358$ GOTO MODULE_NEXT 374$ GOTO MODULE_NEXT
359$ ENDIF 375$ ENDIF
@@ -694,7 +710,7 @@ $!
694$ IF (F$SEARCH(OPT_FILE).EQS."") 710$ IF (F$SEARCH(OPT_FILE).EQS."")
695$ THEN 711$ THEN
696$! 712$!
697$! Figure Out If We Need An AXP Or A VAX Linker Option File. 713$! Figure Out If We Need A non-VAX Or A VAX Linker Option File.
698$! 714$!
699$ IF ARCH .EQS. "VAX" 715$ IF ARCH .EQS. "VAX"
700$ THEN 716$ THEN
@@ -714,19 +730,19 @@ $! Else...
714$! 730$!
715$ ELSE 731$ ELSE
716$! 732$!
717$! Create The AXP Linker Option File. 733$! Create The non-VAX Linker Option File.
718$! 734$!
719$ CREATE 'OPT_FILE' 735$ CREATE 'OPT_FILE'
720$DECK 736$DECK
721! 737!
722! Default System Options File For AXP To Link Agianst 738! Default System Options File For non-VAX To Link Agianst
723! The Sharable C Runtime Library. 739! The Sharable C Runtime Library.
724! 740!
725SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE 741SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
726SYS$SHARE:CMA$OPEN_RTL/SHARE 742SYS$SHARE:CMA$OPEN_RTL/SHARE
727$EOD 743$EOD
728$! 744$!
729$! End The VAX/AXP DEC C Option File Check. 745$! End The DEC C Option File Check.
730$! 746$!
731$ ENDIF 747$ ENDIF
732$! 748$!
@@ -763,12 +779,12 @@ $! Else...
763$! 779$!
764$ ELSE 780$ ELSE
765$! 781$!
766$! Else, Check To See If P1 Has A Valid Arguement. 782$! Else, Check To See If P1 Has A Valid Argument.
767$! 783$!
768$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."APPS") 784$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."APPS")
769$ THEN 785$ THEN
770$! 786$!
771$! A Valid Arguement. 787$! A Valid Argument.
772$! 788$!
773$ BUILDALL = P1 789$ BUILDALL = P1
774$! 790$!
@@ -787,15 +803,16 @@ $ WRITE SYS$OUTPUT " APPS : To Compile Just The [.xxx.EXE.CRYPTO]*.E
787$ WRITE SYS$OUTPUT "" 803$ WRITE SYS$OUTPUT ""
788$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:" 804$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
789$ WRITE SYS$OUTPUT "" 805$ WRITE SYS$OUTPUT ""
790$ WRITE SYS$OUTPUT " AXP : Alpha Architecture." 806$ WRITE SYS$OUTPUT " ALPHA : Alpha Architecture."
791$ WRITE SYS$OUTPUT " VAX : VAX Architecture." 807$ WRITE SYS$OUTPUT " IA64 : IA64 Architecture."
808$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
792$ WRITE SYS$OUTPUT "" 809$ WRITE SYS$OUTPUT ""
793$! 810$!
794$! Time To EXIT. 811$! Time To EXIT.
795$! 812$!
796$ EXIT 813$ EXIT
797$! 814$!
798$! End The Valid Arguement Check. 815$! End The Valid Argument Check.
799$! 816$!
800$ ENDIF 817$ ENDIF
801$! 818$!
@@ -848,7 +865,7 @@ $! Time To EXIT.
848$! 865$!
849$ EXIT 866$ EXIT
850$! 867$!
851$! End The Valid Arguement Check. 868$! End The Valid Argument Check.
852$! 869$!
853$ ENDIF 870$ ENDIF
854$! 871$!
@@ -913,7 +930,7 @@ $ ELSE
913$! 930$!
914$! Check To See If We Have VAXC Or DECC. 931$! Check To See If We Have VAXC Or DECC.
915$! 932$!
916$ IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."") 933$ IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
917$ THEN 934$ THEN
918$! 935$!
919$! Looks Like DECC, Set To Use DECC. 936$! Looks Like DECC, Set To Use DECC.
@@ -1019,12 +1036,12 @@ $ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
1019 THEN CC = "CC/DECC" 1036 THEN CC = "CC/DECC"
1020$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + - 1037$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
1021 "/NOLIST/PREFIX=ALL" + - 1038 "/NOLIST/PREFIX=ALL" + -
1022 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP])" + - 1039 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[._''ARCH'],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP],SYS$DISK:[.ASN1])" + -
1023 CCEXTRAFLAGS 1040 CCEXTRAFLAGS
1024$! 1041$!
1025$! Define The Linker Options File Name. 1042$! Define The Linker Options File Name.
1026$! 1043$!
1027$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT" 1044$ OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
1028$! 1045$!
1029$! End DECC Check. 1046$! End DECC Check.
1030$! 1047$!
@@ -1046,14 +1063,14 @@ $!
1046$! Compile Using VAXC. 1063$! Compile Using VAXC.
1047$! 1064$!
1048$ CC = "CC" 1065$ CC = "CC"
1049$ IF ARCH.EQS."AXP" 1066$ IF ARCH.NES."VAX"
1050$ THEN 1067$ THEN
1051$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!" 1068$ WRITE SYS$OUTPUT "There is no VAX C on ''ARCH'!"
1052$ EXIT 1069$ EXIT
1053$ ENDIF 1070$ ENDIF
1054$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC" 1071$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
1055$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + - 1072$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
1056 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS])" + - 1073 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[._''ARCH'],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP],SYS$DISK:[.ASN1])" + -
1057 CCEXTRAFLAGS 1074 CCEXTRAFLAGS
1058$ CCDEFS = """VAXC""," + CCDEFS 1075$ CCDEFS = """VAXC""," + CCDEFS
1059$! 1076$!
@@ -1063,7 +1080,7 @@ $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
1063$! 1080$!
1064$! Define The Linker Options File Name. 1081$! Define The Linker Options File Name.
1065$! 1082$!
1066$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT" 1083$ OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
1067$! 1084$!
1068$! End VAXC Check 1085$! End VAXC Check
1069$! 1086$!
@@ -1085,12 +1102,12 @@ $!
1085$! Use GNU C... 1102$! Use GNU C...
1086$! 1103$!
1087$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + - 1104$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
1088 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS])" + - 1105 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[._''ARCH'],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP],SYS$DISK:[.ASN1])" + -
1089 CCEXTRAFLAGS 1106 CCEXTRAFLAGS
1090$! 1107$!
1091$! Define The Linker Options File Name. 1108$! Define The Linker Options File Name.
1092$! 1109$!
1093$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT" 1110$ OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
1094$! 1111$!
1095$! End The GNU C Check. 1112$! End The GNU C Check.
1096$! 1113$!
@@ -1135,7 +1152,7 @@ $! Show user the result
1135$! 1152$!
1136$ WRITE/SYMBOL SYS$OUTPUT "Main C Compiling Command: ",CC 1153$ WRITE/SYMBOL SYS$OUTPUT "Main C Compiling Command: ",CC
1137$! 1154$!
1138$! Else The User Entered An Invalid Arguement. 1155$! Else The User Entered An Invalid Argument.
1139$! 1156$!
1140$ ELSE 1157$ ELSE
1141$! 1158$!
@@ -1153,14 +1170,14 @@ $! Time To EXIT.
1153$! 1170$!
1154$ EXIT 1171$ EXIT
1155$! 1172$!
1156$! End The Valid Arguement Check. 1173$! End The Valid Argument Check.
1157$! 1174$!
1158$ ENDIF 1175$ ENDIF
1159$! 1176$!
1160$! Build a MACRO command for the architecture at hand 1177$! Build a MACRO command for the architecture at hand
1161$! 1178$!
1162$ IF ARCH .EQS. "VAX" THEN MACRO = "MACRO/''DEBUGGER'" 1179$ IF ARCH .EQS. "VAX" THEN MACRO = "MACRO/''DEBUGGER'"
1163$ IF ARCH .EQS. "AXP" THEN MACRO = "MACRO/MIGRATION/''DEBUGGER'/''MACRO_OPTIMIZE'" 1180$ IF ARCH .NES. "VAX" THEN MACRO = "MACRO/MIGRATION/''DEBUGGER'/''MACRO_OPTIMIZE'"
1164$! 1181$!
1165$! Show user the result 1182$! Show user the result
1166$! 1183$!
@@ -1248,7 +1265,7 @@ $! Print info
1248$! 1265$!
1249$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB 1266$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
1250$! 1267$!
1251$! Else The User Entered An Invalid Arguement. 1268$! Else The User Entered An Invalid Argument.
1252$! 1269$!
1253$ ELSE 1270$ ELSE
1254$! 1271$!
diff --git a/src/lib/libcrypto/des/Makefile b/src/lib/libcrypto/des/Makefile
index 786e68802e..ae982265fd 100644
--- a/src/lib/libcrypto/des/Makefile
+++ b/src/lib/libcrypto/des/Makefile
@@ -12,8 +12,6 @@ MAKEFILE= Makefile
12AR= ar r 12AR= ar r
13RANLIB= ranlib 13RANLIB= ranlib
14DES_ENC= des_enc.o fcrypt_b.o 14DES_ENC= des_enc.o fcrypt_b.o
15# or use
16#DES_ENC= dx86-elf.o yx86-elf.o
17 15
18CFLAGS= $(INCLUDES) $(CFLAG) 16CFLAGS= $(INCLUDES) $(CFLAG)
19ASFLAGS= $(INCLUDES) $(ASFLAG) 17ASFLAGS= $(INCLUDES) $(ASFLAG)
@@ -24,7 +22,7 @@ TEST=destest.c
24APPS= 22APPS=
25 23
26LIB=$(TOP)/libcrypto.a 24LIB=$(TOP)/libcrypto.a
27LIBSRC= des_lib.c cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \ 25LIBSRC= cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \
28 ecb3_enc.c ecb_enc.c enc_read.c enc_writ.c \ 26 ecb3_enc.c ecb_enc.c enc_read.c enc_writ.c \
29 fcrypt.c ofb64enc.c ofb_enc.c pcbc_enc.c \ 27 fcrypt.c ofb64enc.c ofb_enc.c pcbc_enc.c \
30 qud_cksm.c rand_key.c rpc_enc.c set_key.c \ 28 qud_cksm.c rand_key.c rpc_enc.c set_key.c \
@@ -33,7 +31,7 @@ LIBSRC= des_lib.c cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \
33 str2key.c cfb64ede.c ofb64ede.c ede_cbcm_enc.c des_old.c des_old2.c \ 31 str2key.c cfb64ede.c ofb64ede.c ede_cbcm_enc.c des_old.c des_old2.c \
34 read2pwd.c 32 read2pwd.c
35 33
36LIBOBJ= des_lib.o set_key.o ecb_enc.o cbc_enc.o \ 34LIBOBJ= set_key.o ecb_enc.o cbc_enc.o \
37 ecb3_enc.o cfb64enc.o cfb64ede.o cfb_enc.o ofb64ede.o \ 35 ecb3_enc.o cfb64enc.o cfb64ede.o cfb_enc.o ofb64ede.o \
38 enc_read.o enc_writ.o ofb64enc.o \ 36 enc_read.o enc_writ.o ofb64enc.o \
39 ofb_enc.o str2key.o pcbc_enc.o qud_cksm.o rand_key.o \ 37 ofb_enc.o str2key.o pcbc_enc.o qud_cksm.o rand_key.o \
@@ -54,7 +52,7 @@ top:
54all: lib 52all: lib
55 53
56lib: $(LIBOBJ) 54lib: $(LIBOBJ)
57 $(ARX) $(LIB) $(LIBOBJ) 55 $(AR) $(LIB) $(LIBOBJ)
58 $(RANLIB) $(LIB) || echo Never mind. 56 $(RANLIB) $(LIB) || echo Never mind.
59 @touch lib 57 @touch lib
60 58
@@ -64,21 +62,10 @@ des: des.o cbc3_enc.o lib
64des_enc-sparc.S: asm/des_enc.m4 62des_enc-sparc.S: asm/des_enc.m4
65 m4 -B 8192 asm/des_enc.m4 > des_enc-sparc.S 63 m4 -B 8192 asm/des_enc.m4 > des_enc-sparc.S
66 64
67# ELF 65des-586.s: asm/des-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
68dx86-elf.s: asm/des-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl 66 $(PERL) asm/des-586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
69 (cd asm; $(PERL) des-586.pl elf $(CFLAGS) > ../$@) 67crypt586.s: asm/crypt586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
70yx86-elf.s: asm/crypt586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl 68 $(PERL) asm/crypt586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
71 (cd asm; $(PERL) crypt586.pl elf $(CFLAGS) > ../$@)
72# COFF
73dx86-cof.s: asm/des-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
74 (cd asm; $(PERL) des-586.pl coff $(CFLAGS) > ../$@)
75yx86-cof.s: asm/crypt586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
76 (cd asm; $(PERL) crypt586.pl coff $(CFLAGS) > ../$@)
77# a.out
78dx86-out.s: asm/des-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
79 (cd asm; $(PERL) des-586.pl a.out $(CFLAGS) > ../$@)
80yx86-out.s: asm/crypt586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
81 (cd asm; $(PERL) crypt586.pl a.out $(CFLAGS) > ../$@)
82 69
83files: 70files:
84 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 71 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -156,14 +143,7 @@ des_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
156des_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 143des_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
157des_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 144des_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
158des_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 145des_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
159des_enc.o: des_enc.c des_locl.h ncbc_enc.c 146des_enc.o: des_enc.c des_locl.h ncbc_enc.c spr.h
160des_lib.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
161des_lib.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
162des_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
163des_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
164des_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
165des_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
166des_lib.o: ../../include/openssl/ui_compat.h des_lib.c des_locl.h des_ver.h
167des_old.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 147des_old.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
168des_old.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 148des_old.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
169des_old.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h 149des_old.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
@@ -182,12 +162,13 @@ ecb3_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
182ecb3_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 162ecb3_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
183ecb3_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 163ecb3_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
184ecb3_enc.o: des_locl.h ecb3_enc.c 164ecb3_enc.o: des_locl.h ecb3_enc.c
165ecb_enc.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
185ecb_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 166ecb_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
186ecb_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 167ecb_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
187ecb_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 168ecb_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
188ecb_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 169ecb_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
189ecb_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 170ecb_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
190ecb_enc.o: des_locl.h ecb_enc.c spr.h 171ecb_enc.o: ../../include/openssl/ui_compat.h des_locl.h des_ver.h ecb_enc.c
191ede_cbcm_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 172ede_cbcm_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
192ede_cbcm_enc.o: ../../include/openssl/e_os2.h 173ede_cbcm_enc.o: ../../include/openssl/e_os2.h
193ede_cbcm_enc.o: ../../include/openssl/opensslconf.h 174ede_cbcm_enc.o: ../../include/openssl/opensslconf.h
@@ -277,11 +258,11 @@ rpc_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
277rpc_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 258rpc_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
278rpc_enc.o: des_locl.h des_ver.h rpc_des.h rpc_enc.c 259rpc_enc.o: des_locl.h des_ver.h rpc_des.h rpc_enc.c
279set_key.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 260set_key.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
280set_key.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h 261set_key.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
281set_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/ossl_typ.h 262set_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
282set_key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 263set_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
283set_key.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h 264set_key.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
284set_key.o: ../../include/openssl/ui_compat.h des_locl.h set_key.c 265set_key.o: des_locl.h set_key.c
285str2key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h 266str2key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
286str2key.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h 267str2key.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
287str2key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 268str2key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
diff --git a/src/lib/libcrypto/des/des-lib.com b/src/lib/libcrypto/des/des-lib.com
index fc2c35a1ce..348f1c0470 100644
--- a/src/lib/libcrypto/des/des-lib.com
+++ b/src/lib/libcrypto/des/des-lib.com
@@ -9,7 +9,7 @@ $! Changes by Richard Levitte <richard@levitte.org>
9$! 9$!
10$! This command files compiles and creates the 10$! This command files compiles and creates the
11$! "[.xxx.EXE.CRYPTO.DES]LIBDES.OLB" library. The "xxx" denotes the machine 11$! "[.xxx.EXE.CRYPTO.DES]LIBDES.OLB" library. The "xxx" denotes the machine
12$! architecture of AXP or VAX. 12$! architecture of ALPHA, IA64 or VAX.
13$! 13$!
14$! It was re-written to try to determine which "C" compiler to try to use 14$! It was re-written to try to determine which "C" compiler to try to use
15$! or the user can specify a compiler in P3. 15$! or the user can specify a compiler in P3.
@@ -45,25 +45,34 @@ $!
45$! 45$!
46$! Check Which Architecture We Are Using. 46$! Check Which Architecture We Are Using.
47$! 47$!
48$ IF (F$GETSYI("CPU").GE.128) 48$ IF (F$GETSYI("CPU").LT.128)
49$ THEN 49$ THEN
50$! 50$!
51$! The Architecture Is AXP. 51$! The Architecture Is VAX
52$! 52$!
53$ ARCH := AXP 53$ ARCH := VAX
54$! 54$!
55$! Else... 55$! Else...
56$! 56$!
57$ ELSE 57$ ELSE
58$! 58$!
59$! The Architecture Is VAX. 59$! The Architecture Is Alpha, IA64 or whatever comes in the future.
60$! 60$!
61$ ARCH := VAX 61$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
62$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
62$! 63$!
63$! End The Architecture Check. 64$! End The Architecture Check.
64$! 65$!
65$ ENDIF 66$ ENDIF
66$! 67$!
68$! Define The OBJ Directory Name.
69$!
70$ OBJ_DIR := SYS$DISK:[--.'ARCH'.OBJ.CRYPTO.DES]
71$!
72$! Define The EXE Directory Name.
73$!
74$ EXE_DIR :== SYS$DISK:[--.'ARCH'.EXE.CRYPTO.DES]
75$!
67$! Check To Make Sure We Have Valid Command Line Parameters. 76$! Check To Make Sure We Have Valid Command Line Parameters.
68$! 77$!
69$ GOSUB CHECK_OPTIONS 78$ GOSUB CHECK_OPTIONS
@@ -72,10 +81,6 @@ $! Tell The User What Kind of Machine We Run On.
72$! 81$!
73$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine." 82$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
74$! 83$!
75$! Define The OBJ Directory Name.
76$!
77$ OBJ_DIR := SYS$DISK:[--.'ARCH'.OBJ.CRYPTO.DES]
78$!
79$! Check To See If The Architecture Specific OBJ Directory Exists. 84$! Check To See If The Architecture Specific OBJ Directory Exists.
80$! 85$!
81$ IF (F$PARSE(OBJ_DIR).EQS."") 86$ IF (F$PARSE(OBJ_DIR).EQS."")
@@ -89,10 +94,6 @@ $! End The Architecture Specific OBJ Directory Check.
89$! 94$!
90$ ENDIF 95$ ENDIF
91$! 96$!
92$! Define The EXE Directory Name.
93$!
94$ EXE_DIR :== SYS$DISK:[--.'ARCH'.EXE.CRYPTO.DES]
95$!
96$! Check To See If The Architecture Specific Directory Exists. 97$! Check To See If The Architecture Specific Directory Exists.
97$! 98$!
98$ IF (F$PARSE(EXE_DIR).EQS."") 99$ IF (F$PARSE(EXE_DIR).EQS."")
@@ -564,7 +565,7 @@ $!
564$ IF (F$SEARCH(OPT_FILE).EQS."") 565$ IF (F$SEARCH(OPT_FILE).EQS."")
565$ THEN 566$ THEN
566$! 567$!
567$! Figure Out If We Need An AXP Or A VAX Linker Option File. 568$! Figure Out If We Need An non-VAX Or A VAX Linker Option File.
568$! 569$!
569$ IF (F$GETSYI("CPU").LT.128) 570$ IF (F$GETSYI("CPU").LT.128)
570$ THEN 571$ THEN
@@ -584,19 +585,19 @@ $! Else...
584$! 585$!
585$ ELSE 586$ ELSE
586$! 587$!
587$! Create The AXP Linker Option File. 588$! Create The non-VAX Linker Option File.
588$! 589$!
589$ CREATE 'OPT_FILE' 590$ CREATE 'OPT_FILE'
590$DECK 591$DECK
591! 592!
592! Default System Options File For AXP To Link Agianst 593! Default System Options File For non-VAX To Link Agianst
593! The Sharable C Runtime Library. 594! The Sharable C Runtime Library.
594! 595!
595SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE 596SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
596SYS$SHARE:CMA$OPEN_RTL/SHARE 597SYS$SHARE:CMA$OPEN_RTL/SHARE
597$EOD 598$EOD
598$! 599$!
599$! End The VAX/AXP DEC C Option File Check. 600$! End The DEC C Option File Check.
600$! 601$!
601$ ENDIF 602$ ENDIF
602$! 603$!
@@ -658,13 +659,13 @@ $! Else...
658$! 659$!
659$ ELSE 660$ ELSE
660$! 661$!
661$! Else, Check To See If P1 Has A Valid Arguement. 662$! Else, Check To See If P1 Has A Valid Argument.
662$! 663$!
663$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."DESTEST").OR.(P1.EQS."SPEED") - 664$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."DESTEST").OR.(P1.EQS."SPEED") -
664 .OR.(P1.EQS."RPW").OR.(P1.EQS."DES").OR.(P1.EQS."DES_OPTS") 665 .OR.(P1.EQS."RPW").OR.(P1.EQS."DES").OR.(P1.EQS."DES_OPTS")
665$ THEN 666$ THEN
666$! 667$!
667$! A Valid Arguement. 668$! A Valid Argument.
668$! 669$!
669$ BUILDALL = P1 670$ BUILDALL = P1
670$! 671$!
@@ -677,7 +678,7 @@ $!
677$ WRITE SYS$OUTPUT "" 678$ WRITE SYS$OUTPUT ""
678$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:" 679$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
679$ WRITE SYS$OUTPUT "" 680$ WRITE SYS$OUTPUT ""
680$ WRITE SYS$OUTPUT " ALL : Just Build Everything. 681$ WRITE SYS$OUTPUT " ALL : Just Build Everything."
681$ WRITE SYS$OUTPUT " LIBRARY : To Compile Just The [.xxx.EXE.CRYPTO.DES]LIBDES.OLB Library." 682$ WRITE SYS$OUTPUT " LIBRARY : To Compile Just The [.xxx.EXE.CRYPTO.DES]LIBDES.OLB Library."
682$ WRITE SYS$OUTPUT " DESTEST : To Compile Just The [.xxx.EXE.CRYPTO.DES]DESTEST.EXE Program." 683$ WRITE SYS$OUTPUT " DESTEST : To Compile Just The [.xxx.EXE.CRYPTO.DES]DESTEST.EXE Program."
683$ WRITE SYS$OUTPUT " SPEED : To Compile Just The [.xxx.EXE.CRYPTO.DES]SPEED.EXE Program." 684$ WRITE SYS$OUTPUT " SPEED : To Compile Just The [.xxx.EXE.CRYPTO.DES]SPEED.EXE Program."
@@ -687,15 +688,16 @@ $ WRITE SYS$OUTPUT " DES_OPTS : To Compile Just The [.xxx.EXE.CRYTPO.DES
687$ WRITE SYS$OUTPUT "" 688$ WRITE SYS$OUTPUT ""
688$ WRITE SYS$OUTPUT " Where 'xxx' Stands For: " 689$ WRITE SYS$OUTPUT " Where 'xxx' Stands For: "
689$ WRITE SYS$OUTPUT "" 690$ WRITE SYS$OUTPUT ""
690$ WRITE SYS$OUTPUT " AXP : Alpha Architecture." 691$ WRITE SYS$OUTPUT " ALPHA : Alpha Architecture."
691$ WRITE SYS$OUTPUT " VAX : VAX Architecture." 692$ WRITE SYS$OUTPUT " IA64 : IA64 Architecture."
693$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
692$ WRITE SYS$OUTPUT "" 694$ WRITE SYS$OUTPUT ""
693$! 695$!
694$! Time To EXIT. 696$! Time To EXIT.
695$! 697$!
696$ EXIT 698$ EXIT
697$! 699$!
698$! End The Valid Arguement Check. 700$! End The Valid Argument Check.
699$! 701$!
700$ ENDIF 702$ ENDIF
701$! 703$!
@@ -752,7 +754,7 @@ $! Time To EXIT.
752$! 754$!
753$ EXIT 755$ EXIT
754$! 756$!
755$! End The Valid Arguement Check. 757$! End The Valid Argument Check.
756$! 758$!
757$ ENDIF 759$ ENDIF
758$! 760$!
@@ -817,7 +819,7 @@ $ ELSE
817$! 819$!
818$! Check To See If We Have VAXC Or DECC. 820$! Check To See If We Have VAXC Or DECC.
819$! 821$!
820$ IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."") 822$ IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
821$ THEN 823$ THEN
822$! 824$!
823$! Looks Like DECC, Set To Use DECC. 825$! Looks Like DECC, Set To Use DECC.
@@ -882,7 +884,7 @@ $ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
882$! 884$!
883$! Define The Linker Options File Name. 885$! Define The Linker Options File Name.
884$! 886$!
885$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT" 887$ OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
886$! 888$!
887$! End DECC Check. 889$! End DECC Check.
888$! 890$!
@@ -904,9 +906,9 @@ $!
904$! Compile Using VAXC. 906$! Compile Using VAXC.
905$! 907$!
906$ CC = "CC" 908$ CC = "CC"
907$ IF ARCH.EQS."AXP" 909$ IF ARCH.NES."VAX"
908$ THEN 910$ THEN
909$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!" 911$ WRITE SYS$OUTPUT "There is no VAX C on ''ARCH'!"
910$ EXIT 912$ EXIT
911$ ENDIF 913$ ENDIF
912$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC" 914$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
@@ -919,7 +921,7 @@ $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
919$! 921$!
920$! Define The Linker Options File Name. 922$! Define The Linker Options File Name.
921$! 923$!
922$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT" 924$ OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
923$! 925$!
924$! End VAXC Check 926$! End VAXC Check
925$! 927$!
@@ -944,7 +946,7 @@ $ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + CCEXTRAFLAGS
944$! 946$!
945$! Define The Linker Options File Name. 947$! Define The Linker Options File Name.
946$! 948$!
947$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT" 949$ OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
948$! 950$!
949$! End The GNU C Check. 951$! End The GNU C Check.
950$! 952$!
@@ -976,7 +978,7 @@ $! Show user the result
976$! 978$!
977$ WRITE SYS$OUTPUT "Main Compiling Command: ",CC 979$ WRITE SYS$OUTPUT "Main Compiling Command: ",CC
978$! 980$!
979$! Else The User Entered An Invalid Arguement. 981$! Else The User Entered An Invalid Argument.
980$! 982$!
981$ ELSE 983$ ELSE
982$! 984$!
diff --git a/src/lib/libcrypto/des/rpc_des.h b/src/lib/libcrypto/des/rpc_des.h
index 4cbb4d2dcd..41328d7965 100644
--- a/src/lib/libcrypto/des/rpc_des.h
+++ b/src/lib/libcrypto/des/rpc_des.h
@@ -122,10 +122,10 @@ struct desparams {
122/* 122/*
123 * Encrypt an arbitrary sized buffer 123 * Encrypt an arbitrary sized buffer
124 */ 124 */
125#define DESIOCBLOCK _IOWR(d, 6, struct desparams) 125#define DESIOCBLOCK _IOWR('d', 6, struct desparams)
126 126
127/* 127/*
128 * Encrypt of small amount of data, quickly 128 * Encrypt of small amount of data, quickly
129 */ 129 */
130#define DESIOCQUICK _IOWR(d, 7, struct desparams) 130#define DESIOCQUICK _IOWR('d', 7, struct desparams)
131 131
diff --git a/src/lib/libcrypto/dh/Makefile b/src/lib/libcrypto/dh/Makefile
index d01fa960eb..f23b4f7fde 100644
--- a/src/lib/libcrypto/dh/Makefile
+++ b/src/lib/libcrypto/dh/Makefile
@@ -17,8 +17,10 @@ TEST= dhtest.c
17APPS= 17APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= dh_asn1.c dh_gen.c dh_key.c dh_lib.c dh_check.c dh_err.c dh_depr.c 20LIBSRC= dh_asn1.c dh_gen.c dh_key.c dh_lib.c dh_check.c dh_err.c dh_depr.c \
21LIBOBJ= dh_asn1.o dh_gen.o dh_key.o dh_lib.o dh_check.o dh_err.o dh_depr.o 21 dh_ameth.c dh_pmeth.c dh_prn.c
22LIBOBJ= dh_asn1.o dh_gen.o dh_key.o dh_lib.o dh_check.o dh_err.o dh_depr.o \
23 dh_ameth.o dh_pmeth.o dh_prn.o
22 24
23SRC= $(LIBSRC) 25SRC= $(LIBSRC)
24 26
@@ -33,7 +35,7 @@ top:
33all: lib 35all: lib
34 36
35lib: $(LIBOBJ) 37lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 38 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 39 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 40 @touch lib
39 41
@@ -74,6 +76,21 @@ clean:
74 76
75# DO NOT DELETE THIS LINE -- make depend depends on it. 77# DO NOT DELETE THIS LINE -- make depend depends on it.
76 78
79dh_ameth.o: ../../e_os.h ../../include/openssl/asn1.h
80dh_ameth.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
81dh_ameth.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
82dh_ameth.o: ../../include/openssl/dh.h ../../include/openssl/e_os2.h
83dh_ameth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
84dh_ameth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
85dh_ameth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
86dh_ameth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
87dh_ameth.o: ../../include/openssl/opensslconf.h
88dh_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
89dh_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
90dh_ameth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
91dh_ameth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
92dh_ameth.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
93dh_ameth.o: dh_ameth.c
77dh_asn1.o: ../../e_os.h ../../include/openssl/asn1.h 94dh_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
78dh_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 95dh_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
79dh_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 96dh_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
@@ -129,11 +146,35 @@ dh_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
129dh_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 146dh_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
130dh_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 147dh_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
131dh_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h 148dh_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h
132dh_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 149dh_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
133dh_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 150dh_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
134dh_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 151dh_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
135dh_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 152dh_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
136dh_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 153dh_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
137dh_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 154dh_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
138dh_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 155dh_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
139dh_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h dh_lib.c 156dh_lib.o: ../cryptlib.h dh_lib.c
157dh_pmeth.o: ../../e_os.h ../../include/openssl/asn1.h
158dh_pmeth.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
159dh_pmeth.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
160dh_pmeth.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
161dh_pmeth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
162dh_pmeth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
163dh_pmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
164dh_pmeth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
165dh_pmeth.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
166dh_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
167dh_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
168dh_pmeth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
169dh_pmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
170dh_pmeth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h ../evp/evp_locl.h
171dh_pmeth.o: dh_pmeth.c
172dh_prn.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
173dh_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
174dh_prn.o: ../../include/openssl/dh.h ../../include/openssl/e_os2.h
175dh_prn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
176dh_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
177dh_prn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
178dh_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
179dh_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
180dh_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h dh_prn.c
diff --git a/src/lib/libcrypto/dsa/Makefile b/src/lib/libcrypto/dsa/Makefile
index 2cc45cdc62..8073c4ecfe 100644
--- a/src/lib/libcrypto/dsa/Makefile
+++ b/src/lib/libcrypto/dsa/Makefile
@@ -18,14 +18,14 @@ APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= dsa_gen.c dsa_key.c dsa_lib.c dsa_asn1.c dsa_vrf.c dsa_sign.c \ 20LIBSRC= dsa_gen.c dsa_key.c dsa_lib.c dsa_asn1.c dsa_vrf.c dsa_sign.c \
21 dsa_err.c dsa_ossl.c dsa_depr.c dsa_utl.c 21 dsa_err.c dsa_ossl.c dsa_depr.c dsa_ameth.c dsa_pmeth.c dsa_prn.c
22LIBOBJ= dsa_gen.o dsa_key.o dsa_lib.o dsa_asn1.o dsa_vrf.o dsa_sign.o \ 22LIBOBJ= dsa_gen.o dsa_key.o dsa_lib.o dsa_asn1.o dsa_vrf.o dsa_sign.o \
23 dsa_err.o dsa_ossl.o dsa_depr.o dsa_utl.o 23 dsa_err.o dsa_ossl.o dsa_depr.o dsa_ameth.o dsa_pmeth.o dsa_prn.o
24 24
25SRC= $(LIBSRC) 25SRC= $(LIBSRC)
26 26
27EXHEADER= dsa.h 27EXHEADER= dsa.h
28HEADER= $(EXHEADER) 28HEADER= dsa_locl.h $(EXHEADER)
29 29
30ALL= $(GENERAL) $(SRC) $(HEADER) 30ALL= $(GENERAL) $(SRC) $(HEADER)
31 31
@@ -35,7 +35,7 @@ top:
35all: lib 35all: lib
36 36
37lib: $(LIBOBJ) 37lib: $(LIBOBJ)
38 $(ARX) $(LIB) $(LIBOBJ) 38 $(AR) $(LIB) $(LIBOBJ)
39 $(RANLIB) $(LIB) || echo Never mind. 39 $(RANLIB) $(LIB) || echo Never mind.
40 @touch lib 40 @touch lib
41 41
@@ -76,12 +76,27 @@ clean:
76 76
77# DO NOT DELETE THIS LINE -- make depend depends on it. 77# DO NOT DELETE THIS LINE -- make depend depends on it.
78 78
79dsa_ameth.o: ../../e_os.h ../../include/openssl/asn1.h
80dsa_ameth.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
81dsa_ameth.o: ../../include/openssl/buffer.h ../../include/openssl/cms.h
82dsa_ameth.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
83dsa_ameth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
84dsa_ameth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
85dsa_ameth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
86dsa_ameth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
87dsa_ameth.o: ../../include/openssl/objects.h
88dsa_ameth.o: ../../include/openssl/opensslconf.h
89dsa_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
90dsa_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
91dsa_ameth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
92dsa_ameth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
93dsa_ameth.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
94dsa_ameth.o: dsa_ameth.c
79dsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h 95dsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
80dsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 96dsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
81dsa_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 97dsa_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
82dsa_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 98dsa_asn1.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
83dsa_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 99dsa_asn1.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
84dsa_asn1.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
85dsa_asn1.o: ../../include/openssl/opensslconf.h 100dsa_asn1.o: ../../include/openssl/opensslconf.h
86dsa_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 101dsa_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
87dsa_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 102dsa_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
@@ -91,9 +106,8 @@ dsa_depr.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
91dsa_depr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 106dsa_depr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
92dsa_depr.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 107dsa_depr.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
93dsa_depr.o: ../../include/openssl/err.h ../../include/openssl/evp.h 108dsa_depr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
94dsa_depr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 109dsa_depr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
95dsa_depr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 110dsa_depr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
96dsa_depr.o: ../../include/openssl/opensslconf.h
97dsa_depr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 111dsa_depr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
98dsa_depr.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 112dsa_depr.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
99dsa_depr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 113dsa_depr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -110,13 +124,12 @@ dsa_gen.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
110dsa_gen.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 124dsa_gen.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
111dsa_gen.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 125dsa_gen.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
112dsa_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h 126dsa_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h
113dsa_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 127dsa_gen.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
114dsa_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 128dsa_gen.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
115dsa_gen.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 129dsa_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
116dsa_gen.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h 130dsa_gen.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
117dsa_gen.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 131dsa_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
118dsa_gen.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 132dsa_gen.o: ../../include/openssl/symhacks.h ../cryptlib.h dsa_gen.c dsa_locl.h
119dsa_gen.o: ../cryptlib.h dsa_gen.c
120dsa_key.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h 133dsa_key.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
121dsa_key.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 134dsa_key.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
122dsa_key.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 135dsa_key.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
@@ -132,14 +145,14 @@ dsa_lib.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
132dsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 145dsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
133dsa_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 146dsa_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
134dsa_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h 147dsa_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h
135dsa_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 148dsa_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
136dsa_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 149dsa_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
137dsa_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 150dsa_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
138dsa_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 151dsa_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
139dsa_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 152dsa_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
140dsa_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 153dsa_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
141dsa_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 154dsa_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
142dsa_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h dsa_lib.c 155dsa_lib.o: ../cryptlib.h dsa_lib.c
143dsa_ossl.o: ../../e_os.h ../../include/openssl/asn1.h 156dsa_ossl.o: ../../e_os.h ../../include/openssl/asn1.h
144dsa_ossl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 157dsa_ossl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
145dsa_ossl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 158dsa_ossl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -148,40 +161,48 @@ dsa_ossl.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
148dsa_ossl.o: ../../include/openssl/opensslconf.h 161dsa_ossl.o: ../../include/openssl/opensslconf.h
149dsa_ossl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 162dsa_ossl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
150dsa_ossl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 163dsa_ossl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
151dsa_ossl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 164dsa_ossl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
152dsa_ossl.o: ../cryptlib.h dsa_ossl.c 165dsa_ossl.o: ../../include/openssl/symhacks.h ../cryptlib.h dsa_ossl.c
153dsa_sign.o: ../../e_os.h ../../include/openssl/asn1.h 166dsa_pmeth.o: ../../e_os.h ../../include/openssl/asn1.h
154dsa_sign.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 167dsa_pmeth.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
168dsa_pmeth.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
169dsa_pmeth.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
170dsa_pmeth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
171dsa_pmeth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
172dsa_pmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
173dsa_pmeth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
174dsa_pmeth.o: ../../include/openssl/objects.h
175dsa_pmeth.o: ../../include/openssl/opensslconf.h
176dsa_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
177dsa_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
178dsa_pmeth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
179dsa_pmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
180dsa_pmeth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h ../evp/evp_locl.h
181dsa_pmeth.o: dsa_locl.h dsa_pmeth.c
182dsa_prn.o: ../../e_os.h ../../include/openssl/asn1.h
183dsa_prn.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
184dsa_prn.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
185dsa_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
186dsa_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
187dsa_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
188dsa_prn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
189dsa_prn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
190dsa_prn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
191dsa_prn.o: ../cryptlib.h dsa_prn.c
192dsa_sign.o: ../../e_os.h ../../include/openssl/bio.h
155dsa_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 193dsa_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
156dsa_sign.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 194dsa_sign.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
157dsa_sign.o: ../../include/openssl/err.h ../../include/openssl/fips.h 195dsa_sign.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
158dsa_sign.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h 196dsa_sign.o: ../../include/openssl/opensslconf.h
159dsa_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 197dsa_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
160dsa_sign.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 198dsa_sign.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
161dsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 199dsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
162dsa_sign.o: ../cryptlib.h dsa_sign.c 200dsa_sign.o: ../cryptlib.h dsa_sign.c
163dsa_utl.o: ../../e_os.h ../../include/openssl/asn1.h 201dsa_vrf.o: ../../e_os.h ../../include/openssl/bio.h
164dsa_utl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 202dsa_vrf.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
165dsa_utl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 203dsa_vrf.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
166dsa_utl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h 204dsa_vrf.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
167dsa_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
168dsa_utl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
169dsa_utl.o: ../../include/openssl/engine.h ../../include/openssl/err.h
170dsa_utl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
171dsa_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
172dsa_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
173dsa_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
174dsa_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
175dsa_utl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
176dsa_utl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
177dsa_utl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h dsa_utl.c
178dsa_vrf.o: ../../e_os.h ../../include/openssl/asn1.h
179dsa_vrf.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
180dsa_vrf.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
181dsa_vrf.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
182dsa_vrf.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
183dsa_vrf.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
184dsa_vrf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 205dsa_vrf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
185dsa_vrf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h 206dsa_vrf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
186dsa_vrf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 207dsa_vrf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
187dsa_vrf.o: ../../include/openssl/symhacks.h ../cryptlib.h dsa_vrf.c 208dsa_vrf.o: ../cryptlib.h dsa_vrf.c
diff --git a/src/lib/libcrypto/dsa/dsatest.c b/src/lib/libcrypto/dsa/dsatest.c
index 912317bb44..edffd24e6b 100644
--- a/src/lib/libcrypto/dsa/dsatest.c
+++ b/src/lib/libcrypto/dsa/dsatest.c
@@ -169,7 +169,6 @@ int main(int argc, char **argv)
169 } 169 }
170 BIO_printf(bio_err,"\ncounter=%d h=%ld\n",counter,h); 170 BIO_printf(bio_err,"\ncounter=%d h=%ld\n",counter,h);
171 171
172 if (dsa == NULL) goto end;
173 DSA_print(bio_err,dsa,0); 172 DSA_print(bio_err,dsa,0);
174 if (counter != 105) 173 if (counter != 105)
175 { 174 {
@@ -223,7 +222,7 @@ end:
223 ERR_print_errors(bio_err); 222 ERR_print_errors(bio_err);
224 if (dsa != NULL) DSA_free(dsa); 223 if (dsa != NULL) DSA_free(dsa);
225 CRYPTO_cleanup_all_ex_data(); 224 CRYPTO_cleanup_all_ex_data();
226 ERR_remove_state(0); 225 ERR_remove_thread_state(NULL);
227 ERR_free_strings(); 226 ERR_free_strings();
228 CRYPTO_mem_leaks(bio_err); 227 CRYPTO_mem_leaks(bio_err);
229 if (bio_err != NULL) 228 if (bio_err != NULL)
diff --git a/src/lib/libcrypto/dso/Makefile b/src/lib/libcrypto/dso/Makefile
index 52f152888c..fb2709ed63 100644
--- a/src/lib/libcrypto/dso/Makefile
+++ b/src/lib/libcrypto/dso/Makefile
@@ -18,9 +18,9 @@ APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= dso_dl.c dso_dlfcn.c dso_err.c dso_lib.c dso_null.c \ 20LIBSRC= dso_dl.c dso_dlfcn.c dso_err.c dso_lib.c dso_null.c \
21 dso_openssl.c dso_win32.c dso_vms.c 21 dso_openssl.c dso_win32.c dso_vms.c dso_beos.c
22LIBOBJ= dso_dl.o dso_dlfcn.o dso_err.o dso_lib.o dso_null.o \ 22LIBOBJ= dso_dl.o dso_dlfcn.o dso_err.o dso_lib.o dso_null.o \
23 dso_openssl.o dso_win32.o dso_vms.o 23 dso_openssl.o dso_win32.o dso_vms.o dso_beos.o
24 24
25SRC= $(LIBSRC) 25SRC= $(LIBSRC)
26 26
@@ -35,7 +35,7 @@ top:
35all: lib 35all: lib
36 36
37lib: $(LIBOBJ) 37lib: $(LIBOBJ)
38 $(ARX) $(LIB) $(LIBOBJ) 38 $(AR) $(LIB) $(LIBOBJ)
39 $(RANLIB) $(LIB) || echo Never mind. 39 $(RANLIB) $(LIB) || echo Never mind.
40 @touch lib 40 @touch lib
41 41
@@ -76,6 +76,14 @@ clean:
76 76
77# DO NOT DELETE THIS LINE -- make depend depends on it. 77# DO NOT DELETE THIS LINE -- make depend depends on it.
78 78
79dso_beos.o: ../../e_os.h ../../include/openssl/bio.h
80dso_beos.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
81dso_beos.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
82dso_beos.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
83dso_beos.o: ../../include/openssl/opensslconf.h
84dso_beos.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
85dso_beos.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
86dso_beos.o: ../../include/openssl/symhacks.h ../cryptlib.h dso_beos.c
79dso_dl.o: ../../e_os.h ../../include/openssl/bio.h 87dso_dl.o: ../../e_os.h ../../include/openssl/bio.h
80dso_dl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 88dso_dl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
81dso_dl.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h 89dso_dl.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
diff --git a/src/lib/libcrypto/dso/dso_dl.c b/src/lib/libcrypto/dso/dso_dl.c
index 417abb6ea9..fc4236bd9a 100644
--- a/src/lib/libcrypto/dso/dso_dl.c
+++ b/src/lib/libcrypto/dso/dso_dl.c
@@ -85,6 +85,8 @@ static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg);
85#endif 85#endif
86static char *dl_name_converter(DSO *dso, const char *filename); 86static char *dl_name_converter(DSO *dso, const char *filename);
87static char *dl_merger(DSO *dso, const char *filespec1, const char *filespec2); 87static char *dl_merger(DSO *dso, const char *filespec1, const char *filespec2);
88static int dl_pathbyaddr(void *addr,char *path,int sz);
89static void *dl_globallookup(const char *name);
88 90
89static DSO_METHOD dso_meth_dl = { 91static DSO_METHOD dso_meth_dl = {
90 "OpenSSL 'dl' shared library method", 92 "OpenSSL 'dl' shared library method",
@@ -101,7 +103,9 @@ static DSO_METHOD dso_meth_dl = {
101 dl_name_converter, 103 dl_name_converter,
102 dl_merger, 104 dl_merger,
103 NULL, /* init */ 105 NULL, /* init */
104 NULL /* finish */ 106 NULL, /* finish */
107 dl_pathbyaddr,
108 dl_globallookup
105 }; 109 };
106 110
107DSO_METHOD *DSO_METHOD_dl(void) 111DSO_METHOD *DSO_METHOD_dl(void)
@@ -350,4 +354,40 @@ static char *dl_name_converter(DSO *dso, const char *filename)
350 return(translated); 354 return(translated);
351 } 355 }
352 356
357static int dl_pathbyaddr(void *addr,char *path,int sz)
358 {
359 struct shl_descriptor inf;
360 int i,len;
361
362 if (addr == NULL)
363 {
364 union { int(*f)(void*,char*,int); void *p; } t =
365 { dl_pathbyaddr };
366 addr = t.p;
367 }
368
369 for (i=-1;shl_get_r(i,&inf)==0;i++)
370 {
371 if (((size_t)addr >= inf.tstart && (size_t)addr < inf.tend) ||
372 ((size_t)addr >= inf.dstart && (size_t)addr < inf.dend))
373 {
374 len = (int)strlen(inf.filename);
375 if (sz <= 0) return len+1;
376 if (len >= sz) len=sz-1;
377 memcpy(path,inf.filename,len);
378 path[len++] = 0;
379 return len;
380 }
381 }
382
383 return -1;
384 }
385
386static void *dl_globallookup(const char *name)
387 {
388 void *ret;
389 shl_t h = NULL;
390
391 return shl_findsym(&h,name,TYPE_UNDEFINED,&ret) ? NULL : ret;
392 }
353#endif /* DSO_DL */ 393#endif /* DSO_DL */
diff --git a/src/lib/libcrypto/dso/dso_vms.c b/src/lib/libcrypto/dso/dso_vms.c
index 2c434ee8a6..321512772a 100644
--- a/src/lib/libcrypto/dso/dso_vms.c
+++ b/src/lib/libcrypto/dso/dso_vms.c
@@ -215,7 +215,7 @@ static int vms_load(DSO *dso)
215 p->imagename_dsc.dsc$b_class = DSC$K_CLASS_S; 215 p->imagename_dsc.dsc$b_class = DSC$K_CLASS_S;
216 p->imagename_dsc.dsc$a_pointer = p->imagename; 216 p->imagename_dsc.dsc$a_pointer = p->imagename;
217 217
218 if(!sk_push(dso->meth_data, (char *)p)) 218 if(!sk_void_push(dso->meth_data, (char *)p))
219 { 219 {
220 DSOerr(DSO_F_VMS_LOAD,DSO_R_STACK_ERROR); 220 DSOerr(DSO_F_VMS_LOAD,DSO_R_STACK_ERROR);
221 goto err; 221 goto err;
@@ -245,9 +245,9 @@ static int vms_unload(DSO *dso)
245 DSOerr(DSO_F_VMS_UNLOAD,ERR_R_PASSED_NULL_PARAMETER); 245 DSOerr(DSO_F_VMS_UNLOAD,ERR_R_PASSED_NULL_PARAMETER);
246 return(0); 246 return(0);
247 } 247 }
248 if(sk_num(dso->meth_data) < 1) 248 if(sk_void_num(dso->meth_data) < 1)
249 return(1); 249 return(1);
250 p = (DSO_VMS_INTERNAL *)sk_pop(dso->meth_data); 250 p = (DSO_VMS_INTERNAL *)sk_void_pop(dso->meth_data);
251 if(p == NULL) 251 if(p == NULL)
252 { 252 {
253 DSOerr(DSO_F_VMS_UNLOAD,DSO_R_NULL_HANDLE); 253 DSOerr(DSO_F_VMS_UNLOAD,DSO_R_NULL_HANDLE);
@@ -302,13 +302,13 @@ void vms_bind_sym(DSO *dso, const char *symname, void **sym)
302 DSOerr(DSO_F_VMS_BIND_SYM,ERR_R_PASSED_NULL_PARAMETER); 302 DSOerr(DSO_F_VMS_BIND_SYM,ERR_R_PASSED_NULL_PARAMETER);
303 return; 303 return;
304 } 304 }
305 if(sk_num(dso->meth_data) < 1) 305 if(sk_void_num(dso->meth_data) < 1)
306 { 306 {
307 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_STACK_ERROR); 307 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_STACK_ERROR);
308 return; 308 return;
309 } 309 }
310 ptr = (DSO_VMS_INTERNAL *)sk_value(dso->meth_data, 310 ptr = (DSO_VMS_INTERNAL *)sk_void_value(dso->meth_data,
311 sk_num(dso->meth_data) - 1); 311 sk_void_num(dso->meth_data) - 1);
312 if(ptr == NULL) 312 if(ptr == NULL)
313 { 313 {
314 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_NULL_HANDLE); 314 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_NULL_HANDLE);
diff --git a/src/lib/libcrypto/dso/dso_win32.c b/src/lib/libcrypto/dso/dso_win32.c
index fd3dd6a7fe..6fb6c54181 100644
--- a/src/lib/libcrypto/dso/dso_win32.c
+++ b/src/lib/libcrypto/dso/dso_win32.c
@@ -96,7 +96,11 @@ static HINSTANCE LoadLibraryA(LPCSTR lpLibFileName)
96#else 96#else
97 fnamw = (WCHAR *)alloca (len_0*sizeof(WCHAR)); 97 fnamw = (WCHAR *)alloca (len_0*sizeof(WCHAR));
98#endif 98#endif
99 if (fnamw == NULL) return NULL; 99 if (fnamw == NULL)
100 {
101 SetLastError(ERROR_NOT_ENOUGH_MEMORY);
102 return NULL;
103 }
100 104
101#if defined(_WIN32_WCE) && _WIN32_WCE>=101 105#if defined(_WIN32_WCE) && _WIN32_WCE>=101
102 if (!MultiByteToWideChar(CP_ACP,0,lpLibFileName,len_0,fnamw,len_0)) 106 if (!MultiByteToWideChar(CP_ACP,0,lpLibFileName,len_0,fnamw,len_0))
@@ -124,6 +128,8 @@ static long win32_ctrl(DSO *dso, int cmd, long larg, void *parg);
124static char *win32_name_converter(DSO *dso, const char *filename); 128static char *win32_name_converter(DSO *dso, const char *filename);
125static char *win32_merger(DSO *dso, const char *filespec1, 129static char *win32_merger(DSO *dso, const char *filespec1,
126 const char *filespec2); 130 const char *filespec2);
131static int win32_pathbyaddr(void *addr,char *path,int sz);
132static void *win32_globallookup(const char *name);
127 133
128static const char *openssl_strnchr(const char *string, int c, size_t len); 134static const char *openssl_strnchr(const char *string, int c, size_t len);
129 135
@@ -142,7 +148,9 @@ static DSO_METHOD dso_meth_win32 = {
142 win32_name_converter, 148 win32_name_converter,
143 win32_merger, 149 win32_merger,
144 NULL, /* init */ 150 NULL, /* init */
145 NULL /* finish */ 151 NULL, /* finish */
152 win32_pathbyaddr,
153 win32_globallookup
146 }; 154 };
147 155
148DSO_METHOD *DSO_METHOD_win32(void) 156DSO_METHOD *DSO_METHOD_win32(void)
@@ -180,7 +188,7 @@ static int win32_load(DSO *dso)
180 goto err; 188 goto err;
181 } 189 }
182 *p = h; 190 *p = h;
183 if(!sk_push(dso->meth_data, (char *)p)) 191 if(!sk_void_push(dso->meth_data, p))
184 { 192 {
185 DSOerr(DSO_F_WIN32_LOAD,DSO_R_STACK_ERROR); 193 DSOerr(DSO_F_WIN32_LOAD,DSO_R_STACK_ERROR);
186 goto err; 194 goto err;
@@ -207,9 +215,9 @@ static int win32_unload(DSO *dso)
207 DSOerr(DSO_F_WIN32_UNLOAD,ERR_R_PASSED_NULL_PARAMETER); 215 DSOerr(DSO_F_WIN32_UNLOAD,ERR_R_PASSED_NULL_PARAMETER);
208 return(0); 216 return(0);
209 } 217 }
210 if(sk_num(dso->meth_data) < 1) 218 if(sk_void_num(dso->meth_data) < 1)
211 return(1); 219 return(1);
212 p = (HINSTANCE *)sk_pop(dso->meth_data); 220 p = sk_void_pop(dso->meth_data);
213 if(p == NULL) 221 if(p == NULL)
214 { 222 {
215 DSOerr(DSO_F_WIN32_UNLOAD,DSO_R_NULL_HANDLE); 223 DSOerr(DSO_F_WIN32_UNLOAD,DSO_R_NULL_HANDLE);
@@ -220,7 +228,7 @@ static int win32_unload(DSO *dso)
220 DSOerr(DSO_F_WIN32_UNLOAD,DSO_R_UNLOAD_FAILED); 228 DSOerr(DSO_F_WIN32_UNLOAD,DSO_R_UNLOAD_FAILED);
221 /* We should push the value back onto the stack in 229 /* We should push the value back onto the stack in
222 * case of a retry. */ 230 * case of a retry. */
223 sk_push(dso->meth_data, (char *)p); 231 sk_void_push(dso->meth_data, p);
224 return(0); 232 return(0);
225 } 233 }
226 /* Cleanup */ 234 /* Cleanup */
@@ -240,12 +248,12 @@ static void *win32_bind_var(DSO *dso, const char *symname)
240 DSOerr(DSO_F_WIN32_BIND_VAR,ERR_R_PASSED_NULL_PARAMETER); 248 DSOerr(DSO_F_WIN32_BIND_VAR,ERR_R_PASSED_NULL_PARAMETER);
241 return(NULL); 249 return(NULL);
242 } 250 }
243 if(sk_num(dso->meth_data) < 1) 251 if(sk_void_num(dso->meth_data) < 1)
244 { 252 {
245 DSOerr(DSO_F_WIN32_BIND_VAR,DSO_R_STACK_ERROR); 253 DSOerr(DSO_F_WIN32_BIND_VAR,DSO_R_STACK_ERROR);
246 return(NULL); 254 return(NULL);
247 } 255 }
248 ptr = (HINSTANCE *)sk_value(dso->meth_data, sk_num(dso->meth_data) - 1); 256 ptr = sk_void_value(dso->meth_data, sk_void_num(dso->meth_data) - 1);
249 if(ptr == NULL) 257 if(ptr == NULL)
250 { 258 {
251 DSOerr(DSO_F_WIN32_BIND_VAR,DSO_R_NULL_HANDLE); 259 DSOerr(DSO_F_WIN32_BIND_VAR,DSO_R_NULL_HANDLE);
@@ -271,12 +279,12 @@ static DSO_FUNC_TYPE win32_bind_func(DSO *dso, const char *symname)
271 DSOerr(DSO_F_WIN32_BIND_FUNC,ERR_R_PASSED_NULL_PARAMETER); 279 DSOerr(DSO_F_WIN32_BIND_FUNC,ERR_R_PASSED_NULL_PARAMETER);
272 return(NULL); 280 return(NULL);
273 } 281 }
274 if(sk_num(dso->meth_data) < 1) 282 if(sk_void_num(dso->meth_data) < 1)
275 { 283 {
276 DSOerr(DSO_F_WIN32_BIND_FUNC,DSO_R_STACK_ERROR); 284 DSOerr(DSO_F_WIN32_BIND_FUNC,DSO_R_STACK_ERROR);
277 return(NULL); 285 return(NULL);
278 } 286 }
279 ptr = (HINSTANCE *)sk_value(dso->meth_data, sk_num(dso->meth_data) - 1); 287 ptr = sk_void_value(dso->meth_data, sk_void_num(dso->meth_data) - 1);
280 if(ptr == NULL) 288 if(ptr == NULL)
281 { 289 {
282 DSOerr(DSO_F_WIN32_BIND_FUNC,DSO_R_NULL_HANDLE); 290 DSOerr(DSO_F_WIN32_BIND_FUNC,DSO_R_NULL_HANDLE);
@@ -327,8 +335,8 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
327 memset(result, 0, sizeof(struct file_st)); 335 memset(result, 0, sizeof(struct file_st));
328 position = IN_DEVICE; 336 position = IN_DEVICE;
329 337
330 if(filename[0] == '\\' && filename[1] == '\\' 338 if((filename[0] == '\\' && filename[1] == '\\')
331 || filename[0] == '/' && filename[1] == '/') 339 || (filename[0] == '/' && filename[1] == '/'))
332 { 340 {
333 position = IN_NODE; 341 position = IN_NODE;
334 filename += 2; 342 filename += 2;
@@ -347,10 +355,11 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
347 DSOerr(DSO_F_WIN32_SPLITTER, 355 DSOerr(DSO_F_WIN32_SPLITTER,
348 DSO_R_INCORRECT_FILE_SYNTAX); 356 DSO_R_INCORRECT_FILE_SYNTAX);
349 /*goto err;*/ 357 /*goto err;*/
358 OPENSSL_free(result);
350 return(NULL); 359 return(NULL);
351 } 360 }
352 result->device = start; 361 result->device = start;
353 result->devicelen = filename - start; 362 result->devicelen = (int)(filename - start);
354 position = IN_FILE; 363 position = IN_FILE;
355 start = ++filename; 364 start = ++filename;
356 result->dir = start; 365 result->dir = start;
@@ -359,7 +368,7 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
359 case '/': 368 case '/':
360 if(position == IN_NODE) 369 if(position == IN_NODE)
361 { 370 {
362 result->nodelen = filename - start; 371 result->nodelen = (int)(filename - start);
363 position = IN_FILE; 372 position = IN_FILE;
364 start = ++filename; 373 start = ++filename;
365 result->dir = start; 374 result->dir = start;
@@ -369,20 +378,20 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
369 position = IN_FILE; 378 position = IN_FILE;
370 filename++; 379 filename++;
371 result->dir = start; 380 result->dir = start;
372 result->dirlen = filename - start; 381 result->dirlen = (int)(filename - start);
373 start = filename; 382 start = filename;
374 } 383 }
375 else 384 else
376 { 385 {
377 filename++; 386 filename++;
378 result->dirlen += filename - start; 387 result->dirlen += (int)(filename - start);
379 start = filename; 388 start = filename;
380 } 389 }
381 break; 390 break;
382 case '\0': 391 case '\0':
383 if(position == IN_NODE) 392 if(position == IN_NODE)
384 { 393 {
385 result->nodelen = filename - start; 394 result->nodelen = (int)(filename - start);
386 } 395 }
387 else 396 else
388 { 397 {
@@ -396,13 +405,13 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
396 result->dirlen = 0; 405 result->dirlen = 0;
397 } 406 }
398 result->dirlen += 407 result->dirlen +=
399 filename - start; 408 (int)(filename - start);
400 } 409 }
401 else 410 else
402 { 411 {
403 result->file = start; 412 result->file = start;
404 result->filelen = 413 result->filelen =
405 filename - start; 414 (int)(filename - start);
406 } 415 }
407 } 416 }
408 } 417 }
@@ -496,7 +505,7 @@ static char *win32_joiner(DSO *dso, const struct file_st *file_split)
496 + file_split->predirlen 505 + file_split->predirlen
497 - (start - file_split->predir); 506 - (start - file_split->predir);
498 strncpy(&result[offset], start, 507 strncpy(&result[offset], start,
499 end - start); offset += end - start; 508 end - start); offset += (int)(end - start);
500 result[offset] = '\\'; offset++; 509 result[offset] = '\\'; offset++;
501 start = end + 1; 510 start = end + 1;
502 } 511 }
@@ -517,7 +526,7 @@ static char *win32_joiner(DSO *dso, const struct file_st *file_split)
517 + file_split->dirlen 526 + file_split->dirlen
518 - (start - file_split->dir); 527 - (start - file_split->dir);
519 strncpy(&result[offset], start, 528 strncpy(&result[offset], start,
520 end - start); offset += end - start; 529 end - start); offset += (int)(end - start);
521 result[offset] = '\\'; offset++; 530 result[offset] = '\\'; offset++;
522 start = end + 1; 531 start = end + 1;
523 } 532 }
@@ -613,6 +622,8 @@ static char *win32_merger(DSO *dso, const char *filespec1, const char *filespec2
613 622
614 merged = win32_joiner(dso, filespec1_split); 623 merged = win32_joiner(dso, filespec1_split);
615 } 624 }
625 OPENSSL_free(filespec1_split);
626 OPENSSL_free(filespec2_split);
616 return(merged); 627 return(merged);
617 } 628 }
618 629
@@ -656,5 +667,178 @@ static const char *openssl_strnchr(const char *string, int c, size_t len)
656 return NULL; 667 return NULL;
657 } 668 }
658 669
670#include <tlhelp32.h>
671#ifdef _WIN32_WCE
672# define DLLNAME "TOOLHELP.DLL"
673#else
674# ifdef MODULEENTRY32
675# undef MODULEENTRY32 /* unmask the ASCII version! */
676# endif
677# define DLLNAME "KERNEL32.DLL"
678#endif
679
680typedef HANDLE (WINAPI *CREATETOOLHELP32SNAPSHOT)(DWORD, DWORD);
681typedef BOOL (WINAPI *CLOSETOOLHELP32SNAPSHOT)(HANDLE);
682typedef BOOL (WINAPI *MODULE32)(HANDLE, MODULEENTRY32 *);
659 683
660#endif /* OPENSSL_SYS_WIN32 */ 684static int win32_pathbyaddr(void *addr,char *path,int sz)
685 {
686 HMODULE dll;
687 HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
688 MODULEENTRY32 me32;
689 CREATETOOLHELP32SNAPSHOT create_snap;
690 CLOSETOOLHELP32SNAPSHOT close_snap;
691 MODULE32 module_first, module_next;
692 int len;
693
694 if (addr == NULL)
695 {
696 union { int(*f)(void*,char*,int); void *p; } t =
697 { win32_pathbyaddr };
698 addr = t.p;
699 }
700
701 dll = LoadLibrary(TEXT(DLLNAME));
702 if (dll == NULL)
703 {
704 DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_UNSUPPORTED);
705 return -1;
706 }
707
708 create_snap = (CREATETOOLHELP32SNAPSHOT)
709 GetProcAddress(dll,"CreateToolhelp32Snapshot");
710 if (create_snap == NULL)
711 {
712 FreeLibrary(dll);
713 DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_UNSUPPORTED);
714 return -1;
715 }
716 /* We take the rest for granted... */
717#ifdef _WIN32_WCE
718 close_snap = (CLOSETOOLHELP32SNAPSHOT)
719 GetProcAddress(dll,"CloseToolhelp32Snapshot");
720#else
721 close_snap = (CLOSETOOLHELP32SNAPSHOT)CloseHandle;
722#endif
723 module_first = (MODULE32)GetProcAddress(dll,"Module32First");
724 module_next = (MODULE32)GetProcAddress(dll,"Module32Next");
725
726 hModuleSnap = (*create_snap)(TH32CS_SNAPMODULE,0);
727 if( hModuleSnap == INVALID_HANDLE_VALUE )
728 {
729 FreeLibrary(dll);
730 DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_UNSUPPORTED);
731 return -1;
732 }
733
734 me32.dwSize = sizeof(me32);
735
736 if(!(*module_first)(hModuleSnap,&me32))
737 {
738 (*close_snap)(hModuleSnap);
739 FreeLibrary(dll);
740 DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_FAILURE);
741 return -1;
742 }
743
744 do {
745 if ((BYTE *)addr >= me32.modBaseAddr &&
746 (BYTE *)addr < me32.modBaseAddr+me32.modBaseSize)
747 {
748 (*close_snap)(hModuleSnap);
749 FreeLibrary(dll);
750#ifdef _WIN32_WCE
751# if _WIN32_WCE >= 101
752 return WideCharToMultiByte(CP_ACP,0,me32.szExePath,-1,
753 path,sz,NULL,NULL);
754# else
755 len = (int)wcslen(me32.szExePath);
756 if (sz <= 0) return len+1;
757 if (len >= sz) len=sz-1;
758 for(i=0;i<len;i++)
759 path[i] = (char)me32.szExePath[i];
760 path[len++] = 0;
761 return len;
762# endif
763#else
764 len = (int)strlen(me32.szExePath);
765 if (sz <= 0) return len+1;
766 if (len >= sz) len=sz-1;
767 memcpy(path,me32.szExePath,len);
768 path[len++] = 0;
769 return len;
770#endif
771 }
772 } while((*module_next)(hModuleSnap, &me32));
773
774 (*close_snap)(hModuleSnap);
775 FreeLibrary(dll);
776 return 0;
777 }
778
779static void *win32_globallookup(const char *name)
780 {
781 HMODULE dll;
782 HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
783 MODULEENTRY32 me32;
784 CREATETOOLHELP32SNAPSHOT create_snap;
785 CLOSETOOLHELP32SNAPSHOT close_snap;
786 MODULE32 module_first, module_next;
787 FARPROC ret=NULL;
788
789 dll = LoadLibrary(TEXT(DLLNAME));
790 if (dll == NULL)
791 {
792 DSOerr(DSO_F_WIN32_GLOBALLOOKUP,DSO_R_UNSUPPORTED);
793 return NULL;
794 }
795
796 create_snap = (CREATETOOLHELP32SNAPSHOT)
797 GetProcAddress(dll,"CreateToolhelp32Snapshot");
798 if (create_snap == NULL)
799 {
800 FreeLibrary(dll);
801 DSOerr(DSO_F_WIN32_GLOBALLOOKUP,DSO_R_UNSUPPORTED);
802 return NULL;
803 }
804 /* We take the rest for granted... */
805#ifdef _WIN32_WCE
806 close_snap = (CLOSETOOLHELP32SNAPSHOT)
807 GetProcAddress(dll,"CloseToolhelp32Snapshot");
808#else
809 close_snap = (CLOSETOOLHELP32SNAPSHOT)CloseHandle;
810#endif
811 module_first = (MODULE32)GetProcAddress(dll,"Module32First");
812 module_next = (MODULE32)GetProcAddress(dll,"Module32Next");
813
814 hModuleSnap = (*create_snap)(TH32CS_SNAPMODULE,0);
815 if( hModuleSnap == INVALID_HANDLE_VALUE )
816 {
817 FreeLibrary(dll);
818 DSOerr(DSO_F_WIN32_GLOBALLOOKUP,DSO_R_UNSUPPORTED);
819 return NULL;
820 }
821
822 me32.dwSize = sizeof(me32);
823
824 if (!(*module_first)(hModuleSnap,&me32))
825 {
826 (*close_snap)(hModuleSnap);
827 FreeLibrary(dll);
828 return NULL;
829 }
830
831 do {
832 if ((ret = GetProcAddress(me32.hModule,name)))
833 {
834 (*close_snap)(hModuleSnap);
835 FreeLibrary(dll);
836 return ret;
837 }
838 } while((*module_next)(hModuleSnap,&me32));
839
840 (*close_snap)(hModuleSnap);
841 FreeLibrary(dll);
842 return NULL;
843 }
844#endif /* DSO_WIN32 */
diff --git a/src/lib/libcrypto/ec/Makefile b/src/lib/libcrypto/ec/Makefile
index b5bbc9faa1..db380ed16f 100644
--- a/src/lib/libcrypto/ec/Makefile
+++ b/src/lib/libcrypto/ec/Makefile
@@ -19,11 +19,11 @@ APPS=
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= ec_lib.c ecp_smpl.c ecp_mont.c ecp_nist.c ec_cvt.c ec_mult.c\ 20LIBSRC= ec_lib.c ecp_smpl.c ecp_mont.c ecp_nist.c ec_cvt.c ec_mult.c\
21 ec_err.c ec_curve.c ec_check.c ec_print.c ec_asn1.c ec_key.c\ 21 ec_err.c ec_curve.c ec_check.c ec_print.c ec_asn1.c ec_key.c\
22 ec2_smpl.c ec2_smpt.c ec2_mult.c 22 ec2_smpl.c ec2_mult.c ec_ameth.c ec_pmeth.c eck_prn.c
23 23
24LIBOBJ= ec_lib.o ecp_smpl.o ecp_mont.o ecp_nist.o ec_cvt.o ec_mult.o\ 24LIBOBJ= ec_lib.o ecp_smpl.o ecp_mont.o ecp_nist.o ec_cvt.o ec_mult.o\
25 ec_err.o ec_curve.o ec_check.o ec_print.o ec_asn1.o ec_key.o\ 25 ec_err.o ec_curve.o ec_check.o ec_print.o ec_asn1.o ec_key.o\
26 ec2_smpl.o ec2_mult.o 26 ec2_smpl.o ec2_mult.o ec_ameth.o ec_pmeth.o eck_prn.o
27 27
28SRC= $(LIBSRC) 28SRC= $(LIBSRC)
29 29
@@ -38,7 +38,7 @@ top:
38all: lib 38all: lib
39 39
40lib: $(LIBOBJ) 40lib: $(LIBOBJ)
41 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
42 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
43 @touch lib 43 @touch lib
44 44
@@ -94,8 +94,22 @@ ec2_smpl.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
94ec2_smpl.o: ../../include/openssl/obj_mac.h ../../include/openssl/opensslconf.h 94ec2_smpl.o: ../../include/openssl/obj_mac.h ../../include/openssl/opensslconf.h
95ec2_smpl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 95ec2_smpl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
96ec2_smpl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 96ec2_smpl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
97ec2_smpl.o: ../../include/openssl/symhacks.h ec2_smpl.c ec2_smpt.c ec_lcl.h 97ec2_smpl.o: ../../include/openssl/symhacks.h ec2_smpl.c ec_lcl.h
98ec2_smpt.o: ec2_smpt.c 98ec_ameth.o: ../../e_os.h ../../include/openssl/asn1.h
99ec_ameth.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
100ec_ameth.o: ../../include/openssl/buffer.h ../../include/openssl/cms.h
101ec_ameth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
102ec_ameth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
103ec_ameth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
104ec_ameth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
105ec_ameth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
106ec_ameth.o: ../../include/openssl/opensslconf.h
107ec_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
108ec_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
109ec_ameth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
110ec_ameth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
111ec_ameth.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
112ec_ameth.o: ec_ameth.c
99ec_asn1.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 113ec_asn1.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
100ec_asn1.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 114ec_asn1.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
101ec_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 115ec_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
@@ -160,6 +174,20 @@ ec_mult.o: ../../include/openssl/obj_mac.h ../../include/openssl/opensslconf.h
160ec_mult.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 174ec_mult.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
161ec_mult.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 175ec_mult.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
162ec_mult.o: ../../include/openssl/symhacks.h ec_lcl.h ec_mult.c 176ec_mult.o: ../../include/openssl/symhacks.h ec_lcl.h ec_mult.c
177ec_pmeth.o: ../../e_os.h ../../include/openssl/asn1.h
178ec_pmeth.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
179ec_pmeth.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
180ec_pmeth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
181ec_pmeth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
182ec_pmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
183ec_pmeth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
184ec_pmeth.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
185ec_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
186ec_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
187ec_pmeth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
188ec_pmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
189ec_pmeth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h ../evp/evp_locl.h
190ec_pmeth.o: ec_pmeth.c
163ec_print.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 191ec_print.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
164ec_print.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h 192ec_print.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
165ec_print.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 193ec_print.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
@@ -167,6 +195,16 @@ ec_print.o: ../../include/openssl/obj_mac.h ../../include/openssl/opensslconf.h
167ec_print.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 195ec_print.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
168ec_print.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 196ec_print.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
169ec_print.o: ../../include/openssl/symhacks.h ec_lcl.h ec_print.c 197ec_print.o: ../../include/openssl/symhacks.h ec_lcl.h ec_print.c
198eck_prn.o: ../../e_os.h ../../include/openssl/asn1.h
199eck_prn.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
200eck_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
201eck_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
202eck_prn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
203eck_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
204eck_prn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
205eck_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
206eck_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
207eck_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h eck_prn.c
170ecp_mont.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 208ecp_mont.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
171ecp_mont.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h 209ecp_mont.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
172ecp_mont.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 210ecp_mont.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
diff --git a/src/lib/libcrypto/ec/ectest.c b/src/lib/libcrypto/ec/ectest.c
index 6148d553f9..7509cb9c7c 100644
--- a/src/lib/libcrypto/ec/ectest.c
+++ b/src/lib/libcrypto/ec/ectest.c
@@ -432,9 +432,7 @@ void prime_field_tests()
432 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 432 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
433 fprintf(stdout, "."); 433 fprintf(stdout, ".");
434 fflush(stdout); 434 fflush(stdout);
435#if 0
436 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; 435 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT;
437#endif
438 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; 436 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT;
439 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 437 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
440 fprintf(stdout, " ok\n"); 438 fprintf(stdout, " ok\n");
@@ -478,9 +476,7 @@ void prime_field_tests()
478 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 476 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
479 fprintf(stdout, "."); 477 fprintf(stdout, ".");
480 fflush(stdout); 478 fflush(stdout);
481#if 0
482 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; 479 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT;
483#endif
484 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; 480 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT;
485 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 481 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
486 fprintf(stdout, " ok\n"); 482 fprintf(stdout, " ok\n");
@@ -525,9 +521,7 @@ void prime_field_tests()
525 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 521 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
526 fprintf(stdout, "."); 522 fprintf(stdout, ".");
527 fflush(stdout); 523 fflush(stdout);
528#if 0
529 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; 524 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT;
530#endif
531 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; 525 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT;
532 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 526 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
533 fprintf(stdout, " ok\n"); 527 fprintf(stdout, " ok\n");
@@ -577,9 +571,7 @@ void prime_field_tests()
577 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 571 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
578 fprintf(stdout, "."); 572 fprintf(stdout, ".");
579 fflush(stdout); 573 fflush(stdout);
580#if 0
581 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; 574 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT;
582#endif
583 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; 575 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT;
584 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 576 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
585 fprintf(stdout, " ok\n"); 577 fprintf(stdout, " ok\n");
@@ -635,9 +627,7 @@ void prime_field_tests()
635 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 627 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
636 fprintf(stdout, "."); 628 fprintf(stdout, ".");
637 fflush(stdout); 629 fflush(stdout);
638#if 0
639 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; 630 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT;
640#endif
641 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; 631 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT;
642 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 632 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
643 fprintf(stdout, " ok\n"); 633 fprintf(stdout, " ok\n");
@@ -809,7 +799,7 @@ void prime_field_tests()
809 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; \ 799 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; \
810 fprintf(stdout, "."); \ 800 fprintf(stdout, "."); \
811 fflush(stdout); \ 801 fflush(stdout); \
812 /* if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; */ \ 802 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; \
813 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; \ 803 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; \
814 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; \ 804 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; \
815 fprintf(stdout, " ok\n"); \ 805 fprintf(stdout, " ok\n"); \
@@ -1336,7 +1326,7 @@ int main(int argc, char *argv[])
1336#endif 1326#endif
1337 CRYPTO_cleanup_all_ex_data(); 1327 CRYPTO_cleanup_all_ex_data();
1338 ERR_free_strings(); 1328 ERR_free_strings();
1339 ERR_remove_state(0); 1329 ERR_remove_thread_state(NULL);
1340 CRYPTO_mem_leaks_fp(stderr); 1330 CRYPTO_mem_leaks_fp(stderr);
1341 1331
1342 return 0; 1332 return 0;
diff --git a/src/lib/libcrypto/engine/Makefile b/src/lib/libcrypto/engine/Makefile
index 0cc3722089..9c214824eb 100644
--- a/src/lib/libcrypto/engine/Makefile
+++ b/src/lib/libcrypto/engine/Makefile
@@ -20,13 +20,13 @@ LIB=$(TOP)/libcrypto.a
20LIBSRC= eng_err.c eng_lib.c eng_list.c eng_init.c eng_ctrl.c \ 20LIBSRC= eng_err.c eng_lib.c eng_list.c eng_init.c eng_ctrl.c \
21 eng_table.c eng_pkey.c eng_fat.c eng_all.c \ 21 eng_table.c eng_pkey.c eng_fat.c eng_all.c \
22 tb_rsa.c tb_dsa.c tb_ecdsa.c tb_dh.c tb_ecdh.c tb_rand.c tb_store.c \ 22 tb_rsa.c tb_dsa.c tb_ecdsa.c tb_dh.c tb_ecdh.c tb_rand.c tb_store.c \
23 tb_cipher.c tb_digest.c \ 23 tb_cipher.c tb_digest.c tb_pkmeth.c tb_asnmth.c \
24 eng_openssl.c eng_cnf.c eng_dyn.c eng_cryptodev.c eng_padlock.c 24 eng_openssl.c eng_cnf.c eng_dyn.c eng_cryptodev.c
25LIBOBJ= eng_err.o eng_lib.o eng_list.o eng_init.o eng_ctrl.o \ 25LIBOBJ= eng_err.o eng_lib.o eng_list.o eng_init.o eng_ctrl.o \
26 eng_table.o eng_pkey.o eng_fat.o eng_all.o \ 26 eng_table.o eng_pkey.o eng_fat.o eng_all.o \
27 tb_rsa.o tb_dsa.o tb_ecdsa.o tb_dh.o tb_ecdh.o tb_rand.o tb_store.o \ 27 tb_rsa.o tb_dsa.o tb_ecdsa.o tb_dh.o tb_ecdh.o tb_rand.o tb_store.o \
28 tb_cipher.o tb_digest.o \ 28 tb_cipher.o tb_digest.o tb_pkmeth.o tb_asnmth.o \
29 eng_openssl.o eng_cnf.o eng_dyn.o eng_cryptodev.o eng_padlock.o 29 eng_openssl.o eng_cnf.o eng_dyn.o eng_cryptodev.o
30 30
31SRC= $(LIBSRC) 31SRC= $(LIBSRC)
32 32
@@ -41,7 +41,7 @@ top:
41all: lib 41all: lib
42 42
43lib: $(LIBOBJ) 43lib: $(LIBOBJ)
44 $(ARX) $(LIB) $(LIBOBJ) 44 $(AR) $(LIB) $(LIBOBJ)
45 $(RANLIB) $(LIB) || echo Never mind. 45 $(RANLIB) $(LIB) || echo Never mind.
46 @touch lib 46 @touch lib
47 47
@@ -88,35 +88,34 @@ eng_all.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
88eng_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 88eng_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
89eng_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 89eng_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
90eng_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h 90eng_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h
91eng_all.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 91eng_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
92eng_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 92eng_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
93eng_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 93eng_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
94eng_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 94eng_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
95eng_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 95eng_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
96eng_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 96eng_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
97eng_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 97eng_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_all.c eng_int.h
98eng_all.o: ../cryptlib.h eng_all.c eng_int.h
99eng_cnf.o: ../../e_os.h ../../include/openssl/asn1.h 98eng_cnf.o: ../../e_os.h ../../include/openssl/asn1.h
100eng_cnf.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 99eng_cnf.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
101eng_cnf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 100eng_cnf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
102eng_cnf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 101eng_cnf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
103eng_cnf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 102eng_cnf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
104eng_cnf.o: ../../include/openssl/engine.h ../../include/openssl/err.h 103eng_cnf.o: ../../include/openssl/engine.h ../../include/openssl/err.h
105eng_cnf.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 104eng_cnf.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
106eng_cnf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 105eng_cnf.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
107eng_cnf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 106eng_cnf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
108eng_cnf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 107eng_cnf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
109eng_cnf.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 108eng_cnf.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
110eng_cnf.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 109eng_cnf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
111eng_cnf.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 110eng_cnf.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
112eng_cnf.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_cnf.c eng_int.h 111eng_cnf.o: ../cryptlib.h eng_cnf.c eng_int.h
113eng_cryptodev.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 112eng_cryptodev.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
114eng_cryptodev.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 113eng_cryptodev.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
115eng_cryptodev.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 114eng_cryptodev.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
116eng_cryptodev.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 115eng_cryptodev.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
117eng_cryptodev.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 116eng_cryptodev.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
118eng_cryptodev.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 117eng_cryptodev.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
119eng_cryptodev.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 118eng_cryptodev.o: ../../include/openssl/obj_mac.h
120eng_cryptodev.o: ../../include/openssl/objects.h 119eng_cryptodev.o: ../../include/openssl/objects.h
121eng_cryptodev.o: ../../include/openssl/opensslconf.h 120eng_cryptodev.o: ../../include/openssl/opensslconf.h
122eng_cryptodev.o: ../../include/openssl/opensslv.h 121eng_cryptodev.o: ../../include/openssl/opensslv.h
@@ -131,9 +130,8 @@ eng_ctrl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
131eng_ctrl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 130eng_ctrl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
132eng_ctrl.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 131eng_ctrl.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
133eng_ctrl.o: ../../include/openssl/err.h ../../include/openssl/evp.h 132eng_ctrl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
134eng_ctrl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 133eng_ctrl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
135eng_ctrl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 134eng_ctrl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
136eng_ctrl.o: ../../include/openssl/opensslconf.h
137eng_ctrl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 135eng_ctrl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
138eng_ctrl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 136eng_ctrl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
139eng_ctrl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 137eng_ctrl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -145,50 +143,49 @@ eng_dyn.o: ../../include/openssl/crypto.h ../../include/openssl/dso.h
145eng_dyn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 143eng_dyn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
146eng_dyn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 144eng_dyn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
147eng_dyn.o: ../../include/openssl/engine.h ../../include/openssl/err.h 145eng_dyn.o: ../../include/openssl/engine.h ../../include/openssl/err.h
148eng_dyn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 146eng_dyn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
149eng_dyn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 147eng_dyn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
150eng_dyn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 148eng_dyn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
151eng_dyn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 149eng_dyn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
152eng_dyn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 150eng_dyn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
153eng_dyn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 151eng_dyn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
154eng_dyn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 152eng_dyn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
155eng_dyn.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_dyn.c eng_int.h 153eng_dyn.o: ../cryptlib.h eng_dyn.c eng_int.h
156eng_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 154eng_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
157eng_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 155eng_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
158eng_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 156eng_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
159eng_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 157eng_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
160eng_err.o: ../../include/openssl/engine.h ../../include/openssl/err.h 158eng_err.o: ../../include/openssl/engine.h ../../include/openssl/err.h
161eng_err.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 159eng_err.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
162eng_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 160eng_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
163eng_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 161eng_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
164eng_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 162eng_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
165eng_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 163eng_err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
166eng_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 164eng_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
167eng_err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 165eng_err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
168eng_err.o: ../../include/openssl/x509_vfy.h eng_err.c 166eng_err.o: eng_err.c
169eng_fat.o: ../../e_os.h ../../include/openssl/asn1.h 167eng_fat.o: ../../e_os.h ../../include/openssl/asn1.h
170eng_fat.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 168eng_fat.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
171eng_fat.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 169eng_fat.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
172eng_fat.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 170eng_fat.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
173eng_fat.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 171eng_fat.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
174eng_fat.o: ../../include/openssl/engine.h ../../include/openssl/err.h 172eng_fat.o: ../../include/openssl/engine.h ../../include/openssl/err.h
175eng_fat.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 173eng_fat.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
176eng_fat.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 174eng_fat.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
177eng_fat.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 175eng_fat.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
178eng_fat.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 176eng_fat.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
179eng_fat.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 177eng_fat.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
180eng_fat.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 178eng_fat.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
181eng_fat.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 179eng_fat.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
182eng_fat.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_fat.c eng_int.h 180eng_fat.o: ../cryptlib.h eng_fat.c eng_int.h
183eng_init.o: ../../e_os.h ../../include/openssl/asn1.h 181eng_init.o: ../../e_os.h ../../include/openssl/asn1.h
184eng_init.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 182eng_init.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
185eng_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 183eng_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
186eng_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 184eng_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
187eng_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 185eng_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
188eng_init.o: ../../include/openssl/err.h ../../include/openssl/evp.h 186eng_init.o: ../../include/openssl/err.h ../../include/openssl/evp.h
189eng_init.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 187eng_init.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
190eng_init.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 188eng_init.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
191eng_init.o: ../../include/openssl/opensslconf.h
192eng_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 189eng_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
193eng_init.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 190eng_init.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
194eng_init.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 191eng_init.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -200,23 +197,22 @@ eng_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
200eng_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 197eng_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
201eng_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 198eng_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
202eng_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 199eng_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
203eng_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 200eng_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
204eng_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 201eng_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
205eng_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 202eng_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
206eng_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 203eng_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
207eng_lib.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 204eng_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
208eng_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 205eng_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
209eng_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 206eng_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
210eng_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h eng_lib.c 207eng_lib.o: ../cryptlib.h eng_int.h eng_lib.c
211eng_list.o: ../../e_os.h ../../include/openssl/asn1.h 208eng_list.o: ../../e_os.h ../../include/openssl/asn1.h
212eng_list.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 209eng_list.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
213eng_list.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 210eng_list.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
214eng_list.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 211eng_list.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
215eng_list.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 212eng_list.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
216eng_list.o: ../../include/openssl/err.h ../../include/openssl/evp.h 213eng_list.o: ../../include/openssl/err.h ../../include/openssl/evp.h
217eng_list.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 214eng_list.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
218eng_list.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 215eng_list.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
219eng_list.o: ../../include/openssl/opensslconf.h
220eng_list.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 216eng_list.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
221eng_list.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 217eng_list.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
222eng_list.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 218eng_list.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -229,9 +225,8 @@ eng_openssl.o: ../../include/openssl/dsa.h ../../include/openssl/dso.h
229eng_openssl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 225eng_openssl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
230eng_openssl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 226eng_openssl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
231eng_openssl.o: ../../include/openssl/engine.h ../../include/openssl/err.h 227eng_openssl.o: ../../include/openssl/engine.h ../../include/openssl/err.h
232eng_openssl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 228eng_openssl.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
233eng_openssl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 229eng_openssl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
234eng_openssl.o: ../../include/openssl/objects.h
235eng_openssl.o: ../../include/openssl/opensslconf.h 230eng_openssl.o: ../../include/openssl/opensslconf.h
236eng_openssl.o: ../../include/openssl/opensslv.h 231eng_openssl.o: ../../include/openssl/opensslv.h
237eng_openssl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h 232eng_openssl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
@@ -241,31 +236,14 @@ eng_openssl.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
241eng_openssl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 236eng_openssl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
242eng_openssl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 237eng_openssl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
243eng_openssl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_openssl.c 238eng_openssl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_openssl.c
244eng_padlock.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
245eng_padlock.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
246eng_padlock.o: ../../include/openssl/crypto.h ../../include/openssl/dso.h
247eng_padlock.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
248eng_padlock.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
249eng_padlock.o: ../../include/openssl/engine.h ../../include/openssl/err.h
250eng_padlock.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
251eng_padlock.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
252eng_padlock.o: ../../include/openssl/objects.h
253eng_padlock.o: ../../include/openssl/opensslconf.h
254eng_padlock.o: ../../include/openssl/opensslv.h
255eng_padlock.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
256eng_padlock.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
257eng_padlock.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
258eng_padlock.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
259eng_padlock.o: ../../include/openssl/x509_vfy.h eng_padlock.c
260eng_pkey.o: ../../e_os.h ../../include/openssl/asn1.h 239eng_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
261eng_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 240eng_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
262eng_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 241eng_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
263eng_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 242eng_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
264eng_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 243eng_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
265eng_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h 244eng_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
266eng_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 245eng_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
267eng_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 246eng_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
268eng_pkey.o: ../../include/openssl/opensslconf.h
269eng_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 247eng_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
270eng_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 248eng_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
271eng_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 249eng_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -277,8 +255,8 @@ eng_table.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
277eng_table.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 255eng_table.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
278eng_table.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 256eng_table.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
279eng_table.o: ../../include/openssl/err.h ../../include/openssl/evp.h 257eng_table.o: ../../include/openssl/err.h ../../include/openssl/evp.h
280eng_table.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 258eng_table.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
281eng_table.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 259eng_table.o: ../../include/openssl/objects.h
282eng_table.o: ../../include/openssl/opensslconf.h 260eng_table.o: ../../include/openssl/opensslconf.h
283eng_table.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 261eng_table.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
284eng_table.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 262eng_table.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -286,14 +264,29 @@ eng_table.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
286eng_table.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 264eng_table.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
287eng_table.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h 265eng_table.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h
288eng_table.o: eng_table.c 266eng_table.o: eng_table.c
267tb_asnmth.o: ../../e_os.h ../../include/openssl/asn1.h
268tb_asnmth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
269tb_asnmth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
270tb_asnmth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
271tb_asnmth.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
272tb_asnmth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
273tb_asnmth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
274tb_asnmth.o: ../../include/openssl/objects.h
275tb_asnmth.o: ../../include/openssl/opensslconf.h
276tb_asnmth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
277tb_asnmth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
278tb_asnmth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
279tb_asnmth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
280tb_asnmth.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
281tb_asnmth.o: eng_int.h tb_asnmth.c
289tb_cipher.o: ../../e_os.h ../../include/openssl/asn1.h 282tb_cipher.o: ../../e_os.h ../../include/openssl/asn1.h
290tb_cipher.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 283tb_cipher.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
291tb_cipher.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 284tb_cipher.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
292tb_cipher.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 285tb_cipher.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
293tb_cipher.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 286tb_cipher.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
294tb_cipher.o: ../../include/openssl/err.h ../../include/openssl/evp.h 287tb_cipher.o: ../../include/openssl/err.h ../../include/openssl/evp.h
295tb_cipher.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 288tb_cipher.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
296tb_cipher.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 289tb_cipher.o: ../../include/openssl/objects.h
297tb_cipher.o: ../../include/openssl/opensslconf.h 290tb_cipher.o: ../../include/openssl/opensslconf.h
298tb_cipher.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 291tb_cipher.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
299tb_cipher.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 292tb_cipher.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -306,22 +299,22 @@ tb_dh.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
306tb_dh.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 299tb_dh.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
307tb_dh.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 300tb_dh.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
308tb_dh.o: ../../include/openssl/engine.h ../../include/openssl/err.h 301tb_dh.o: ../../include/openssl/engine.h ../../include/openssl/err.h
309tb_dh.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 302tb_dh.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
310tb_dh.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 303tb_dh.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
311tb_dh.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 304tb_dh.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
312tb_dh.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 305tb_dh.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
313tb_dh.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 306tb_dh.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
314tb_dh.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 307tb_dh.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
315tb_dh.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 308tb_dh.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
316tb_dh.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_dh.c 309tb_dh.o: ../cryptlib.h eng_int.h tb_dh.c
317tb_digest.o: ../../e_os.h ../../include/openssl/asn1.h 310tb_digest.o: ../../e_os.h ../../include/openssl/asn1.h
318tb_digest.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 311tb_digest.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
319tb_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 312tb_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
320tb_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 313tb_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
321tb_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 314tb_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
322tb_digest.o: ../../include/openssl/err.h ../../include/openssl/evp.h 315tb_digest.o: ../../include/openssl/err.h ../../include/openssl/evp.h
323tb_digest.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 316tb_digest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
324tb_digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 317tb_digest.o: ../../include/openssl/objects.h
325tb_digest.o: ../../include/openssl/opensslconf.h 318tb_digest.o: ../../include/openssl/opensslconf.h
326tb_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 319tb_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
327tb_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 320tb_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -334,78 +327,89 @@ tb_dsa.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
334tb_dsa.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 327tb_dsa.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
335tb_dsa.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 328tb_dsa.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
336tb_dsa.o: ../../include/openssl/engine.h ../../include/openssl/err.h 329tb_dsa.o: ../../include/openssl/engine.h ../../include/openssl/err.h
337tb_dsa.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 330tb_dsa.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
338tb_dsa.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 331tb_dsa.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
339tb_dsa.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 332tb_dsa.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
340tb_dsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 333tb_dsa.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
341tb_dsa.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 334tb_dsa.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
342tb_dsa.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 335tb_dsa.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
343tb_dsa.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 336tb_dsa.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
344tb_dsa.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_dsa.c 337tb_dsa.o: ../cryptlib.h eng_int.h tb_dsa.c
345tb_ecdh.o: ../../e_os.h ../../include/openssl/asn1.h 338tb_ecdh.o: ../../e_os.h ../../include/openssl/asn1.h
346tb_ecdh.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 339tb_ecdh.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
347tb_ecdh.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 340tb_ecdh.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
348tb_ecdh.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 341tb_ecdh.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
349tb_ecdh.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 342tb_ecdh.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
350tb_ecdh.o: ../../include/openssl/err.h ../../include/openssl/evp.h 343tb_ecdh.o: ../../include/openssl/err.h ../../include/openssl/evp.h
351tb_ecdh.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 344tb_ecdh.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
352tb_ecdh.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 345tb_ecdh.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
353tb_ecdh.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 346tb_ecdh.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
354tb_ecdh.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 347tb_ecdh.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
355tb_ecdh.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 348tb_ecdh.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
356tb_ecdh.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 349tb_ecdh.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
357tb_ecdh.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 350tb_ecdh.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_ecdh.c
358tb_ecdh.o: ../cryptlib.h eng_int.h tb_ecdh.c
359tb_ecdsa.o: ../../e_os.h ../../include/openssl/asn1.h 351tb_ecdsa.o: ../../e_os.h ../../include/openssl/asn1.h
360tb_ecdsa.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 352tb_ecdsa.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
361tb_ecdsa.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 353tb_ecdsa.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
362tb_ecdsa.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 354tb_ecdsa.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
363tb_ecdsa.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 355tb_ecdsa.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
364tb_ecdsa.o: ../../include/openssl/err.h ../../include/openssl/evp.h 356tb_ecdsa.o: ../../include/openssl/err.h ../../include/openssl/evp.h
365tb_ecdsa.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 357tb_ecdsa.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
366tb_ecdsa.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 358tb_ecdsa.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
367tb_ecdsa.o: ../../include/openssl/opensslconf.h
368tb_ecdsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 359tb_ecdsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
369tb_ecdsa.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 360tb_ecdsa.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
370tb_ecdsa.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 361tb_ecdsa.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
371tb_ecdsa.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 362tb_ecdsa.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
372tb_ecdsa.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_ecdsa.c 363tb_ecdsa.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_ecdsa.c
364tb_pkmeth.o: ../../e_os.h ../../include/openssl/asn1.h
365tb_pkmeth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
366tb_pkmeth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
367tb_pkmeth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
368tb_pkmeth.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
369tb_pkmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
370tb_pkmeth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
371tb_pkmeth.o: ../../include/openssl/objects.h
372tb_pkmeth.o: ../../include/openssl/opensslconf.h
373tb_pkmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
374tb_pkmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
375tb_pkmeth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
376tb_pkmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
377tb_pkmeth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h
378tb_pkmeth.o: tb_pkmeth.c
373tb_rand.o: ../../e_os.h ../../include/openssl/asn1.h 379tb_rand.o: ../../e_os.h ../../include/openssl/asn1.h
374tb_rand.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 380tb_rand.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
375tb_rand.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 381tb_rand.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
376tb_rand.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 382tb_rand.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
377tb_rand.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 383tb_rand.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
378tb_rand.o: ../../include/openssl/err.h ../../include/openssl/evp.h 384tb_rand.o: ../../include/openssl/err.h ../../include/openssl/evp.h
379tb_rand.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 385tb_rand.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
380tb_rand.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 386tb_rand.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
381tb_rand.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 387tb_rand.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
382tb_rand.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 388tb_rand.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
383tb_rand.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 389tb_rand.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
384tb_rand.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 390tb_rand.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
385tb_rand.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 391tb_rand.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_rand.c
386tb_rand.o: ../cryptlib.h eng_int.h tb_rand.c
387tb_rsa.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 392tb_rsa.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
388tb_rsa.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 393tb_rsa.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
389tb_rsa.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 394tb_rsa.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
390tb_rsa.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 395tb_rsa.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
391tb_rsa.o: ../../include/openssl/engine.h ../../include/openssl/err.h 396tb_rsa.o: ../../include/openssl/engine.h ../../include/openssl/err.h
392tb_rsa.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 397tb_rsa.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
393tb_rsa.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 398tb_rsa.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
394tb_rsa.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 399tb_rsa.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
395tb_rsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 400tb_rsa.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
396tb_rsa.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 401tb_rsa.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
397tb_rsa.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 402tb_rsa.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
398tb_rsa.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 403tb_rsa.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
399tb_rsa.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_rsa.c 404tb_rsa.o: ../cryptlib.h eng_int.h tb_rsa.c
400tb_store.o: ../../e_os.h ../../include/openssl/asn1.h 405tb_store.o: ../../e_os.h ../../include/openssl/asn1.h
401tb_store.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 406tb_store.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
402tb_store.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 407tb_store.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
403tb_store.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 408tb_store.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
404tb_store.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 409tb_store.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
405tb_store.o: ../../include/openssl/err.h ../../include/openssl/evp.h 410tb_store.o: ../../include/openssl/err.h ../../include/openssl/evp.h
406tb_store.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 411tb_store.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
407tb_store.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 412tb_store.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
408tb_store.o: ../../include/openssl/opensslconf.h
409tb_store.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 413tb_store.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
410tb_store.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 414tb_store.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
411tb_store.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 415tb_store.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
diff --git a/src/lib/libcrypto/engine/eng_cryptodev.c b/src/lib/libcrypto/engine/eng_cryptodev.c
index ab38cd52f0..52f4ca3901 100644
--- a/src/lib/libcrypto/engine/eng_cryptodev.c
+++ b/src/lib/libcrypto/engine/eng_cryptodev.c
@@ -32,7 +32,7 @@
32#include <openssl/bn.h> 32#include <openssl/bn.h>
33 33
34#if (defined(__unix__) || defined(unix)) && !defined(USG) && \ 34#if (defined(__unix__) || defined(unix)) && !defined(USG) && \
35 (defined(OpenBSD) || defined(__FreeBSD_version)) 35 (defined(OpenBSD) || defined(__FreeBSD__))
36#include <sys/param.h> 36#include <sys/param.h>
37# if (OpenBSD >= 200112) || ((__FreeBSD_version >= 470101 && __FreeBSD_version < 500000) || __FreeBSD_version >= 500041) 37# if (OpenBSD >= 200112) || ((__FreeBSD_version >= 470101 && __FreeBSD_version < 500000) || __FreeBSD_version >= 500041)
38# define HAVE_CRYPTODEV 38# define HAVE_CRYPTODEV
@@ -55,6 +55,10 @@ ENGINE_load_cryptodev(void)
55 55
56#include <sys/types.h> 56#include <sys/types.h>
57#include <crypto/cryptodev.h> 57#include <crypto/cryptodev.h>
58#include <crypto/dh/dh.h>
59#include <crypto/dsa/dsa.h>
60#include <crypto/err/err.h>
61#include <crypto/rsa/rsa.h>
58#include <sys/ioctl.h> 62#include <sys/ioctl.h>
59#include <errno.h> 63#include <errno.h>
60#include <stdio.h> 64#include <stdio.h>
@@ -68,6 +72,16 @@ ENGINE_load_cryptodev(void)
68struct dev_crypto_state { 72struct dev_crypto_state {
69 struct session_op d_sess; 73 struct session_op d_sess;
70 int d_fd; 74 int d_fd;
75
76#ifdef USE_CRYPTODEV_DIGESTS
77 char dummy_mac_key[HASH_MAX_LEN];
78
79 unsigned char digest_res[HASH_MAX_LEN];
80 char *mac_data;
81 int mac_len;
82
83 int copy;
84#endif
71}; 85};
72 86
73static u_int32_t cryptodev_asymfeat = 0; 87static u_int32_t cryptodev_asymfeat = 0;
@@ -75,15 +89,14 @@ static u_int32_t cryptodev_asymfeat = 0;
75static int get_asym_dev_crypto(void); 89static int get_asym_dev_crypto(void);
76static int open_dev_crypto(void); 90static int open_dev_crypto(void);
77static int get_dev_crypto(void); 91static int get_dev_crypto(void);
78static int cryptodev_max_iv(int cipher);
79static int cryptodev_key_length_valid(int cipher, int len);
80static int cipher_nid_to_cryptodev(int nid);
81static int get_cryptodev_ciphers(const int **cnids); 92static int get_cryptodev_ciphers(const int **cnids);
93#ifdef USE_CRYPTODEV_DIGESTS
82static int get_cryptodev_digests(const int **cnids); 94static int get_cryptodev_digests(const int **cnids);
95#endif
83static int cryptodev_usable_ciphers(const int **nids); 96static int cryptodev_usable_ciphers(const int **nids);
84static int cryptodev_usable_digests(const int **nids); 97static int cryptodev_usable_digests(const int **nids);
85static int cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 98static int cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
86 const unsigned char *in, unsigned int inl); 99 const unsigned char *in, size_t inl);
87static int cryptodev_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 100static int cryptodev_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
88 const unsigned char *iv, int enc); 101 const unsigned char *iv, int enc);
89static int cryptodev_cleanup(EVP_CIPHER_CTX *ctx); 102static int cryptodev_cleanup(EVP_CIPHER_CTX *ctx);
@@ -100,7 +113,7 @@ static int cryptodev_asym(struct crypt_kop *kop, int rlen, BIGNUM *r,
100static int cryptodev_bn_mod_exp(BIGNUM *r, const BIGNUM *a, 113static int cryptodev_bn_mod_exp(BIGNUM *r, const BIGNUM *a,
101 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 114 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
102static int cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I, 115static int cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I,
103 RSA *rsa); 116 RSA *rsa, BN_CTX *ctx);
104static int cryptodev_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx); 117static int cryptodev_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx);
105static int cryptodev_dsa_bn_mod_exp(DSA *dsa, BIGNUM *r, BIGNUM *a, 118static int cryptodev_dsa_bn_mod_exp(DSA *dsa, BIGNUM *r, BIGNUM *a,
106 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 119 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
@@ -117,7 +130,7 @@ static int cryptodev_mod_exp_dh(const DH *dh, BIGNUM *r, const BIGNUM *a,
117static int cryptodev_dh_compute_key(unsigned char *key, 130static int cryptodev_dh_compute_key(unsigned char *key,
118 const BIGNUM *pub_key, DH *dh); 131 const BIGNUM *pub_key, DH *dh);
119static int cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p, 132static int cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p,
120 void (*f)()); 133 void (*f)(void));
121void ENGINE_load_cryptodev(void); 134void ENGINE_load_cryptodev(void);
122 135
123static const ENGINE_CMD_DEFN cryptodev_defns[] = { 136static const ENGINE_CMD_DEFN cryptodev_defns[] = {
@@ -130,27 +143,34 @@ static struct {
130 int ivmax; 143 int ivmax;
131 int keylen; 144 int keylen;
132} ciphers[] = { 145} ciphers[] = {
146 { CRYPTO_ARC4, NID_rc4, 0, 16, },
133 { CRYPTO_DES_CBC, NID_des_cbc, 8, 8, }, 147 { CRYPTO_DES_CBC, NID_des_cbc, 8, 8, },
134 { CRYPTO_3DES_CBC, NID_des_ede3_cbc, 8, 24, }, 148 { CRYPTO_3DES_CBC, NID_des_ede3_cbc, 8, 24, },
135 { CRYPTO_AES_CBC, NID_aes_128_cbc, 16, 16, }, 149 { CRYPTO_AES_CBC, NID_aes_128_cbc, 16, 16, },
150 { CRYPTO_AES_CBC, NID_aes_192_cbc, 16, 24, },
151 { CRYPTO_AES_CBC, NID_aes_256_cbc, 16, 32, },
136 { CRYPTO_BLF_CBC, NID_bf_cbc, 8, 16, }, 152 { CRYPTO_BLF_CBC, NID_bf_cbc, 8, 16, },
137 { CRYPTO_CAST_CBC, NID_cast5_cbc, 8, 16, }, 153 { CRYPTO_CAST_CBC, NID_cast5_cbc, 8, 16, },
138 { CRYPTO_SKIPJACK_CBC, NID_undef, 0, 0, }, 154 { CRYPTO_SKIPJACK_CBC, NID_undef, 0, 0, },
139 { 0, NID_undef, 0, 0, }, 155 { 0, NID_undef, 0, 0, },
140}; 156};
141 157
158#ifdef USE_CRYPTODEV_DIGESTS
142static struct { 159static struct {
143 int id; 160 int id;
144 int nid; 161 int nid;
162 int keylen;
145} digests[] = { 163} digests[] = {
146 { CRYPTO_SHA1_HMAC, NID_hmacWithSHA1, }, 164 { CRYPTO_MD5_HMAC, NID_hmacWithMD5, 16},
147 { CRYPTO_RIPEMD160_HMAC, NID_ripemd160, }, 165 { CRYPTO_SHA1_HMAC, NID_hmacWithSHA1, 20},
148 { CRYPTO_MD5_KPDK, NID_undef, }, 166 { CRYPTO_RIPEMD160_HMAC, NID_ripemd160, 16/*?*/},
149 { CRYPTO_SHA1_KPDK, NID_undef, }, 167 { CRYPTO_MD5_KPDK, NID_undef, 0},
150 { CRYPTO_MD5, NID_md5, }, 168 { CRYPTO_SHA1_KPDK, NID_undef, 0},
151 { CRYPTO_SHA1, NID_undef, }, 169 { CRYPTO_MD5, NID_md5, 16},
152 { 0, NID_undef, }, 170 { CRYPTO_SHA1, NID_sha1, 20},
171 { 0, NID_undef, 0},
153}; 172};
173#endif
154 174
155/* 175/*
156 * Return a fd if /dev/crypto seems usable, 0 otherwise. 176 * Return a fd if /dev/crypto seems usable, 0 otherwise.
@@ -203,50 +223,6 @@ get_asym_dev_crypto(void)
203} 223}
204 224
205/* 225/*
206 * XXXX this needs to be set for each alg - and determined from
207 * a running card.
208 */
209static int
210cryptodev_max_iv(int cipher)
211{
212 int i;
213
214 for (i = 0; ciphers[i].id; i++)
215 if (ciphers[i].id == cipher)
216 return (ciphers[i].ivmax);
217 return (0);
218}
219
220/*
221 * XXXX this needs to be set for each alg - and determined from
222 * a running card. For now, fake it out - but most of these
223 * for real devices should return 1 for the supported key
224 * sizes the device can handle.
225 */
226static int
227cryptodev_key_length_valid(int cipher, int len)
228{
229 int i;
230
231 for (i = 0; ciphers[i].id; i++)
232 if (ciphers[i].id == cipher)
233 return (ciphers[i].keylen == len);
234 return (0);
235}
236
237/* convert libcrypto nids to cryptodev */
238static int
239cipher_nid_to_cryptodev(int nid)
240{
241 int i;
242
243 for (i = 0; ciphers[i].id; i++)
244 if (ciphers[i].nid == nid)
245 return (ciphers[i].id);
246 return (0);
247}
248
249/*
250 * Find out what ciphers /dev/crypto will let us have a session for. 226 * Find out what ciphers /dev/crypto will let us have a session for.
251 * XXX note, that some of these openssl doesn't deal with yet! 227 * XXX note, that some of these openssl doesn't deal with yet!
252 * returning them here is harmless, as long as we return NULL 228 * returning them here is harmless, as long as we return NULL
@@ -264,7 +240,7 @@ get_cryptodev_ciphers(const int **cnids)
264 return (0); 240 return (0);
265 } 241 }
266 memset(&sess, 0, sizeof(sess)); 242 memset(&sess, 0, sizeof(sess));
267 sess.key = (caddr_t)"123456781234567812345678"; 243 sess.key = (caddr_t)"123456789abcdefghijklmno";
268 244
269 for (i = 0; ciphers[i].id && count < CRYPTO_ALGORITHM_MAX; i++) { 245 for (i = 0; ciphers[i].id && count < CRYPTO_ALGORITHM_MAX; i++) {
270 if (ciphers[i].nid == NID_undef) 246 if (ciphers[i].nid == NID_undef)
@@ -285,6 +261,7 @@ get_cryptodev_ciphers(const int **cnids)
285 return (count); 261 return (count);
286} 262}
287 263
264#ifdef USE_CRYPTODEV_DIGESTS
288/* 265/*
289 * Find out what digests /dev/crypto will let us have a session for. 266 * Find out what digests /dev/crypto will let us have a session for.
290 * XXX note, that some of these openssl doesn't deal with yet! 267 * XXX note, that some of these openssl doesn't deal with yet!
@@ -303,10 +280,12 @@ get_cryptodev_digests(const int **cnids)
303 return (0); 280 return (0);
304 } 281 }
305 memset(&sess, 0, sizeof(sess)); 282 memset(&sess, 0, sizeof(sess));
283 sess.mackey = (caddr_t)"123456789abcdefghijklmno";
306 for (i = 0; digests[i].id && count < CRYPTO_ALGORITHM_MAX; i++) { 284 for (i = 0; digests[i].id && count < CRYPTO_ALGORITHM_MAX; i++) {
307 if (digests[i].nid == NID_undef) 285 if (digests[i].nid == NID_undef)
308 continue; 286 continue;
309 sess.mac = digests[i].id; 287 sess.mac = digests[i].id;
288 sess.mackeylen = digests[i].keylen;
310 sess.cipher = 0; 289 sess.cipher = 0;
311 if (ioctl(fd, CIOCGSESSION, &sess) != -1 && 290 if (ioctl(fd, CIOCGSESSION, &sess) != -1 &&
312 ioctl(fd, CIOCFSESSION, &sess.ses) != -1) 291 ioctl(fd, CIOCFSESSION, &sess.ses) != -1)
@@ -320,6 +299,7 @@ get_cryptodev_digests(const int **cnids)
320 *cnids = NULL; 299 *cnids = NULL;
321 return (count); 300 return (count);
322} 301}
302#endif /* 0 */
323 303
324/* 304/*
325 * Find the useable ciphers|digests from dev/crypto - this is the first 305 * Find the useable ciphers|digests from dev/crypto - this is the first
@@ -351,6 +331,9 @@ cryptodev_usable_ciphers(const int **nids)
351static int 331static int
352cryptodev_usable_digests(const int **nids) 332cryptodev_usable_digests(const int **nids)
353{ 333{
334#ifdef USE_CRYPTODEV_DIGESTS
335 return (get_cryptodev_digests(nids));
336#else
354 /* 337 /*
355 * XXXX just disable all digests for now, because it sucks. 338 * XXXX just disable all digests for now, because it sucks.
356 * we need a better way to decide this - i.e. I may not 339 * we need a better way to decide this - i.e. I may not
@@ -365,16 +348,17 @@ cryptodev_usable_digests(const int **nids)
365 */ 348 */
366 *nids = NULL; 349 *nids = NULL;
367 return (0); 350 return (0);
351#endif
368} 352}
369 353
370static int 354static int
371cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 355cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
372 const unsigned char *in, unsigned int inl) 356 const unsigned char *in, size_t inl)
373{ 357{
374 struct crypt_op cryp; 358 struct crypt_op cryp;
375 struct dev_crypto_state *state = ctx->cipher_data; 359 struct dev_crypto_state *state = ctx->cipher_data;
376 struct session_op *sess = &state->d_sess; 360 struct session_op *sess = &state->d_sess;
377 void *iiv; 361 const void *iiv;
378 unsigned char save_iv[EVP_MAX_IV_LENGTH]; 362 unsigned char save_iv[EVP_MAX_IV_LENGTH];
379 363
380 if (state->d_fd < 0) 364 if (state->d_fd < 0)
@@ -398,7 +382,7 @@ cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
398 if (ctx->cipher->iv_len) { 382 if (ctx->cipher->iv_len) {
399 cryp.iv = (caddr_t) ctx->iv; 383 cryp.iv = (caddr_t) ctx->iv;
400 if (!ctx->encrypt) { 384 if (!ctx->encrypt) {
401 iiv = (void *) in + inl - ctx->cipher->iv_len; 385 iiv = in + inl - ctx->cipher->iv_len;
402 memcpy(save_iv, iiv, ctx->cipher->iv_len); 386 memcpy(save_iv, iiv, ctx->cipher->iv_len);
403 } 387 }
404 } else 388 } else
@@ -413,7 +397,7 @@ cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
413 397
414 if (ctx->cipher->iv_len) { 398 if (ctx->cipher->iv_len) {
415 if (ctx->encrypt) 399 if (ctx->encrypt)
416 iiv = (void *) out + inl - ctx->cipher->iv_len; 400 iiv = out + inl - ctx->cipher->iv_len;
417 else 401 else
418 iiv = save_iv; 402 iiv = save_iv;
419 memcpy(ctx->iv, iiv, ctx->cipher->iv_len); 403 memcpy(ctx->iv, iiv, ctx->cipher->iv_len);
@@ -427,23 +411,27 @@ cryptodev_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
427{ 411{
428 struct dev_crypto_state *state = ctx->cipher_data; 412 struct dev_crypto_state *state = ctx->cipher_data;
429 struct session_op *sess = &state->d_sess; 413 struct session_op *sess = &state->d_sess;
430 int cipher; 414 int cipher = -1, i;
431 415
432 if ((cipher = cipher_nid_to_cryptodev(ctx->cipher->nid)) == NID_undef) 416 for (i = 0; ciphers[i].id; i++)
433 return (0); 417 if (ctx->cipher->nid == ciphers[i].nid &&
434 418 ctx->cipher->iv_len <= ciphers[i].ivmax &&
435 if (ctx->cipher->iv_len > cryptodev_max_iv(cipher)) 419 ctx->key_len == ciphers[i].keylen) {
436 return (0); 420 cipher = ciphers[i].id;
421 break;
422 }
437 423
438 if (!cryptodev_key_length_valid(cipher, ctx->key_len)) 424 if (!ciphers[i].id) {
425 state->d_fd = -1;
439 return (0); 426 return (0);
427 }
440 428
441 memset(sess, 0, sizeof(struct session_op)); 429 memset(sess, 0, sizeof(struct session_op));
442 430
443 if ((state->d_fd = get_dev_crypto()) < 0) 431 if ((state->d_fd = get_dev_crypto()) < 0)
444 return (0); 432 return (0);
445 433
446 sess->key = (unsigned char *)key; 434 sess->key = (caddr_t)key;
447 sess->keylen = ctx->key_len; 435 sess->keylen = ctx->key_len;
448 sess->cipher = cipher; 436 sess->cipher = cipher;
449 437
@@ -496,6 +484,20 @@ cryptodev_cleanup(EVP_CIPHER_CTX *ctx)
496 * gets called when libcrypto requests a cipher NID. 484 * gets called when libcrypto requests a cipher NID.
497 */ 485 */
498 486
487/* RC4 */
488const EVP_CIPHER cryptodev_rc4 = {
489 NID_rc4,
490 1, 16, 0,
491 EVP_CIPH_VARIABLE_LENGTH,
492 cryptodev_init_key,
493 cryptodev_cipher,
494 cryptodev_cleanup,
495 sizeof(struct dev_crypto_state),
496 NULL,
497 NULL,
498 NULL
499};
500
499/* DES CBC EVP */ 501/* DES CBC EVP */
500const EVP_CIPHER cryptodev_des_cbc = { 502const EVP_CIPHER cryptodev_des_cbc = {
501 NID_des_cbc, 503 NID_des_cbc,
@@ -563,6 +565,32 @@ const EVP_CIPHER cryptodev_aes_cbc = {
563 NULL 565 NULL
564}; 566};
565 567
568const EVP_CIPHER cryptodev_aes_192_cbc = {
569 NID_aes_192_cbc,
570 16, 24, 16,
571 EVP_CIPH_CBC_MODE,
572 cryptodev_init_key,
573 cryptodev_cipher,
574 cryptodev_cleanup,
575 sizeof(struct dev_crypto_state),
576 EVP_CIPHER_set_asn1_iv,
577 EVP_CIPHER_get_asn1_iv,
578 NULL
579};
580
581const EVP_CIPHER cryptodev_aes_256_cbc = {
582 NID_aes_256_cbc,
583 16, 32, 16,
584 EVP_CIPH_CBC_MODE,
585 cryptodev_init_key,
586 cryptodev_cipher,
587 cryptodev_cleanup,
588 sizeof(struct dev_crypto_state),
589 EVP_CIPHER_set_asn1_iv,
590 EVP_CIPHER_get_asn1_iv,
591 NULL
592};
593
566/* 594/*
567 * Registered by the ENGINE when used to find out how to deal with 595 * Registered by the ENGINE when used to find out how to deal with
568 * a particular NID in the ENGINE. this says what we'll do at the 596 * a particular NID in the ENGINE. this says what we'll do at the
@@ -576,6 +604,9 @@ cryptodev_engine_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
576 return (cryptodev_usable_ciphers(nids)); 604 return (cryptodev_usable_ciphers(nids));
577 605
578 switch (nid) { 606 switch (nid) {
607 case NID_rc4:
608 *cipher = &cryptodev_rc4;
609 break;
579 case NID_des_ede3_cbc: 610 case NID_des_ede3_cbc:
580 *cipher = &cryptodev_3des_cbc; 611 *cipher = &cryptodev_3des_cbc;
581 break; 612 break;
@@ -591,6 +622,12 @@ cryptodev_engine_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
591 case NID_aes_128_cbc: 622 case NID_aes_128_cbc:
592 *cipher = &cryptodev_aes_cbc; 623 *cipher = &cryptodev_aes_cbc;
593 break; 624 break;
625 case NID_aes_192_cbc:
626 *cipher = &cryptodev_aes_192_cbc;
627 break;
628 case NID_aes_256_cbc:
629 *cipher = &cryptodev_aes_256_cbc;
630 break;
594 default: 631 default:
595 *cipher = NULL; 632 *cipher = NULL;
596 break; 633 break;
@@ -598,6 +635,234 @@ cryptodev_engine_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
598 return (*cipher != NULL); 635 return (*cipher != NULL);
599} 636}
600 637
638
639#ifdef USE_CRYPTODEV_DIGESTS
640
641/* convert digest type to cryptodev */
642static int
643digest_nid_to_cryptodev(int nid)
644{
645 int i;
646
647 for (i = 0; digests[i].id; i++)
648 if (digests[i].nid == nid)
649 return (digests[i].id);
650 return (0);
651}
652
653
654static int
655digest_key_length(int nid)
656{
657 int i;
658
659 for (i = 0; digests[i].id; i++)
660 if (digests[i].nid == nid)
661 return digests[i].keylen;
662 return (0);
663}
664
665
666static int cryptodev_digest_init(EVP_MD_CTX *ctx)
667{
668 struct dev_crypto_state *state = ctx->md_data;
669 struct session_op *sess = &state->d_sess;
670 int digest;
671
672 if ((digest = digest_nid_to_cryptodev(ctx->digest->type)) == NID_undef){
673 printf("cryptodev_digest_init: Can't get digest \n");
674 return (0);
675 }
676
677 memset(state, 0, sizeof(struct dev_crypto_state));
678
679 if ((state->d_fd = get_dev_crypto()) < 0) {
680 printf("cryptodev_digest_init: Can't get Dev \n");
681 return (0);
682 }
683
684 sess->mackey = state->dummy_mac_key;
685 sess->mackeylen = digest_key_length(ctx->digest->type);
686 sess->mac = digest;
687
688 if (ioctl(state->d_fd, CIOCGSESSION, sess) < 0) {
689 close(state->d_fd);
690 state->d_fd = -1;
691 printf("cryptodev_digest_init: Open session failed\n");
692 return (0);
693 }
694
695 return (1);
696}
697
698static int cryptodev_digest_update(EVP_MD_CTX *ctx, const void *data,
699 size_t count)
700{
701 struct crypt_op cryp;
702 struct dev_crypto_state *state = ctx->md_data;
703 struct session_op *sess = &state->d_sess;
704
705 if (!data || state->d_fd < 0) {
706 printf("cryptodev_digest_update: illegal inputs \n");
707 return (0);
708 }
709
710 if (!count) {
711 return (0);
712 }
713
714 if (!(ctx->flags & EVP_MD_CTX_FLAG_ONESHOT)) {
715 /* if application doesn't support one buffer */
716 state->mac_data = OPENSSL_realloc(state->mac_data, state->mac_len + count);
717
718 if (!state->mac_data) {
719 printf("cryptodev_digest_update: realloc failed\n");
720 return (0);
721 }
722
723 memcpy(state->mac_data + state->mac_len, data, count);
724 state->mac_len += count;
725
726 return (1);
727 }
728
729 memset(&cryp, 0, sizeof(cryp));
730
731 cryp.ses = sess->ses;
732 cryp.flags = 0;
733 cryp.len = count;
734 cryp.src = (caddr_t) data;
735 cryp.dst = NULL;
736 cryp.mac = (caddr_t) state->digest_res;
737 if (ioctl(state->d_fd, CIOCCRYPT, &cryp) < 0) {
738 printf("cryptodev_digest_update: digest failed\n");
739 return (0);
740 }
741 return (1);
742}
743
744
745static int cryptodev_digest_final(EVP_MD_CTX *ctx, unsigned char *md)
746{
747 struct crypt_op cryp;
748 struct dev_crypto_state *state = ctx->md_data;
749 struct session_op *sess = &state->d_sess;
750
751 int ret = 1;
752
753 if (!md || state->d_fd < 0) {
754 printf("cryptodev_digest_final: illegal input\n");
755 return(0);
756 }
757
758 if (! (ctx->flags & EVP_MD_CTX_FLAG_ONESHOT) ) {
759 /* if application doesn't support one buffer */
760 memset(&cryp, 0, sizeof(cryp));
761
762 cryp.ses = sess->ses;
763 cryp.flags = 0;
764 cryp.len = state->mac_len;
765 cryp.src = state->mac_data;
766 cryp.dst = NULL;
767 cryp.mac = (caddr_t)md;
768
769 if (ioctl(state->d_fd, CIOCCRYPT, &cryp) < 0) {
770 printf("cryptodev_digest_final: digest failed\n");
771 return (0);
772 }
773
774 return 1;
775 }
776
777 memcpy(md, state->digest_res, ctx->digest->md_size);
778
779 return (ret);
780}
781
782
783static int cryptodev_digest_cleanup(EVP_MD_CTX *ctx)
784{
785 int ret = 1;
786 struct dev_crypto_state *state = ctx->md_data;
787 struct session_op *sess = &state->d_sess;
788
789 if (state->d_fd < 0) {
790 printf("cryptodev_digest_cleanup: illegal input\n");
791 return (0);
792 }
793
794 if (state->mac_data) {
795 OPENSSL_free(state->mac_data);
796 state->mac_data = NULL;
797 state->mac_len = 0;
798 }
799
800 if (state->copy)
801 return 1;
802
803 if (ioctl(state->d_fd, CIOCFSESSION, &sess->ses) < 0) {
804 printf("cryptodev_digest_cleanup: failed to close session\n");
805 ret = 0;
806 } else {
807 ret = 1;
808 }
809 close(state->d_fd);
810 state->d_fd = -1;
811
812 return (ret);
813}
814
815static int cryptodev_digest_copy(EVP_MD_CTX *to,const EVP_MD_CTX *from)
816{
817 struct dev_crypto_state *fstate = from->md_data;
818 struct dev_crypto_state *dstate = to->md_data;
819
820 memcpy(dstate, fstate, sizeof(struct dev_crypto_state));
821
822 if (fstate->mac_len != 0) {
823 dstate->mac_data = OPENSSL_malloc(fstate->mac_len);
824 memcpy(dstate->mac_data, fstate->mac_data, fstate->mac_len);
825 }
826
827 dstate->copy = 1;
828
829 return 1;
830}
831
832
833const EVP_MD cryptodev_sha1 = {
834 NID_sha1,
835 NID_undef,
836 SHA_DIGEST_LENGTH,
837 EVP_MD_FLAG_ONESHOT,
838 cryptodev_digest_init,
839 cryptodev_digest_update,
840 cryptodev_digest_final,
841 cryptodev_digest_copy,
842 cryptodev_digest_cleanup,
843 EVP_PKEY_NULL_method,
844 SHA_CBLOCK,
845 sizeof(struct dev_crypto_state),
846};
847
848const EVP_MD cryptodev_md5 = {
849 NID_md5,
850 NID_undef,
851 16 /* MD5_DIGEST_LENGTH */,
852 EVP_MD_FLAG_ONESHOT,
853 cryptodev_digest_init,
854 cryptodev_digest_update,
855 cryptodev_digest_final,
856 cryptodev_digest_copy,
857 cryptodev_digest_cleanup,
858 EVP_PKEY_NULL_method,
859 64 /* MD5_CBLOCK */,
860 sizeof(struct dev_crypto_state),
861};
862
863#endif /* USE_CRYPTODEV_DIGESTS */
864
865
601static int 866static int
602cryptodev_engine_digests(ENGINE *e, const EVP_MD **digest, 867cryptodev_engine_digests(ENGINE *e, const EVP_MD **digest,
603 const int **nids, int nid) 868 const int **nids, int nid)
@@ -606,10 +871,15 @@ cryptodev_engine_digests(ENGINE *e, const EVP_MD **digest,
606 return (cryptodev_usable_digests(nids)); 871 return (cryptodev_usable_digests(nids));
607 872
608 switch (nid) { 873 switch (nid) {
874#ifdef USE_CRYPTODEV_DIGESTS
609 case NID_md5: 875 case NID_md5:
610 *digest = NULL; /* need to make a clean md5 critter */ 876 *digest = &cryptodev_md5;
611 break; 877 break;
878 case NID_sha1:
879 *digest = &cryptodev_sha1;
880 break;
612 default: 881 default:
882#endif /* USE_CRYPTODEV_DIGESTS */
613 *digest = NULL; 883 *digest = NULL;
614 break; 884 break;
615 } 885 }
@@ -625,7 +895,7 @@ static int
625bn2crparam(const BIGNUM *a, struct crparam *crp) 895bn2crparam(const BIGNUM *a, struct crparam *crp)
626{ 896{
627 int i, j, k; 897 int i, j, k;
628 ssize_t words, bytes, bits; 898 ssize_t bytes, bits;
629 u_char *b; 899 u_char *b;
630 900
631 crp->crp_p = NULL; 901 crp->crp_p = NULL;
@@ -637,8 +907,9 @@ bn2crparam(const BIGNUM *a, struct crparam *crp)
637 b = malloc(bytes); 907 b = malloc(bytes);
638 if (b == NULL) 908 if (b == NULL)
639 return (1); 909 return (1);
910 memset(b, 0, bytes);
640 911
641 crp->crp_p = b; 912 crp->crp_p = (caddr_t) b;
642 crp->crp_nbits = bits; 913 crp->crp_nbits = bits;
643 914
644 for (i = 0, j = 0; i < a->top; i++) { 915 for (i = 0, j = 0; i < a->top; i++) {
@@ -681,7 +952,7 @@ zapparams(struct crypt_kop *kop)
681{ 952{
682 int i; 953 int i;
683 954
684 for (i = 0; i <= kop->crk_iparams + kop->crk_oparams; i++) { 955 for (i = 0; i < kop->crk_iparams + kop->crk_oparams; i++) {
685 if (kop->crk_param[i].crp_p) 956 if (kop->crk_param[i].crp_p)
686 free(kop->crk_param[i].crp_p); 957 free(kop->crk_param[i].crp_p);
687 kop->crk_param[i].crp_p = NULL; 958 kop->crk_param[i].crp_p = NULL;
@@ -746,21 +1017,27 @@ cryptodev_bn_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
746 goto err; 1017 goto err;
747 kop.crk_iparams = 3; 1018 kop.crk_iparams = 3;
748 1019
749 if (cryptodev_asym(&kop, BN_num_bytes(m), r, 0, NULL) == -1) { 1020 if (cryptodev_asym(&kop, BN_num_bytes(m), r, 0, NULL)) {
1021 const RSA_METHOD *meth = RSA_PKCS1_SSLeay();
1022 printf("OCF asym process failed, Running in software\n");
1023 ret = meth->bn_mod_exp(r, a, p, m, ctx, in_mont);
1024
1025 } else if (ECANCELED == kop.crk_status) {
750 const RSA_METHOD *meth = RSA_PKCS1_SSLeay(); 1026 const RSA_METHOD *meth = RSA_PKCS1_SSLeay();
1027 printf("OCF hardware operation cancelled. Running in Software\n");
751 ret = meth->bn_mod_exp(r, a, p, m, ctx, in_mont); 1028 ret = meth->bn_mod_exp(r, a, p, m, ctx, in_mont);
752 } 1029 }
1030 /* else cryptodev operation worked ok ==> ret = 1*/
1031
753err: 1032err:
754 zapparams(&kop); 1033 zapparams(&kop);
755 return (ret); 1034 return (ret);
756} 1035}
757 1036
758static int 1037static int
759cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa) 1038cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
760{ 1039{
761 int r; 1040 int r;
762 BN_CTX *ctx;
763
764 ctx = BN_CTX_new(); 1041 ctx = BN_CTX_new();
765 r = cryptodev_bn_mod_exp(r0, I, rsa->d, rsa->n, ctx, NULL); 1042 r = cryptodev_bn_mod_exp(r0, I, rsa->d, rsa->n, ctx, NULL);
766 BN_CTX_free(ctx); 1043 BN_CTX_free(ctx);
@@ -795,10 +1072,18 @@ cryptodev_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
795 goto err; 1072 goto err;
796 kop.crk_iparams = 6; 1073 kop.crk_iparams = 6;
797 1074
798 if (cryptodev_asym(&kop, BN_num_bytes(rsa->n), r0, 0, NULL) == -1) { 1075 if (cryptodev_asym(&kop, BN_num_bytes(rsa->n), r0, 0, NULL)) {
1076 const RSA_METHOD *meth = RSA_PKCS1_SSLeay();
1077 printf("OCF asym process failed, running in Software\n");
1078 ret = (*meth->rsa_mod_exp)(r0, I, rsa, ctx);
1079
1080 } else if (ECANCELED == kop.crk_status) {
799 const RSA_METHOD *meth = RSA_PKCS1_SSLeay(); 1081 const RSA_METHOD *meth = RSA_PKCS1_SSLeay();
1082 printf("OCF hardware operation cancelled. Running in Software\n");
800 ret = (*meth->rsa_mod_exp)(r0, I, rsa, ctx); 1083 ret = (*meth->rsa_mod_exp)(r0, I, rsa, ctx);
801 } 1084 }
1085 /* else cryptodev operation worked ok ==> ret = 1*/
1086
802err: 1087err:
803 zapparams(&kop); 1088 zapparams(&kop);
804 return (ret); 1089 return (ret);
@@ -934,7 +1219,8 @@ cryptodev_dsa_verify(const unsigned char *dgst, int dlen,
934 kop.crk_iparams = 7; 1219 kop.crk_iparams = 7;
935 1220
936 if (cryptodev_asym(&kop, 0, NULL, 0, NULL) == 0) { 1221 if (cryptodev_asym(&kop, 0, NULL, 0, NULL) == 0) {
937 dsaret = kop.crk_status; 1222/*OCF success value is 0, if not zero, change dsaret to fail*/
1223 if(0 != kop.crk_status) dsaret = 0;
938 } else { 1224 } else {
939 const DSA_METHOD *meth = DSA_OpenSSL(); 1225 const DSA_METHOD *meth = DSA_OpenSSL();
940 1226
@@ -994,7 +1280,7 @@ cryptodev_dh_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
994 goto err; 1280 goto err;
995 kop.crk_iparams = 3; 1281 kop.crk_iparams = 3;
996 1282
997 kop.crk_param[3].crp_p = key; 1283 kop.crk_param[3].crp_p = (caddr_t) key;
998 kop.crk_param[3].crp_nbits = keylen * 8; 1284 kop.crk_param[3].crp_nbits = keylen * 8;
999 kop.crk_oparams = 1; 1285 kop.crk_oparams = 1;
1000 1286
@@ -1025,7 +1311,7 @@ static DH_METHOD cryptodev_dh = {
1025 * but I expect we'll want some options soon. 1311 * but I expect we'll want some options soon.
1026 */ 1312 */
1027static int 1313static int
1028cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()) 1314cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)(void))
1029{ 1315{
1030#ifdef HAVE_SYSLOG_R 1316#ifdef HAVE_SYSLOG_R
1031 struct syslog_data sd = SYSLOG_DATA_INIT; 1317 struct syslog_data sd = SYSLOG_DATA_INIT;
diff --git a/src/lib/libcrypto/engine/enginetest.c b/src/lib/libcrypto/engine/enginetest.c
index e3834611db..f4d70e7e0a 100644
--- a/src/lib/libcrypto/engine/enginetest.c
+++ b/src/lib/libcrypto/engine/enginetest.c
@@ -276,7 +276,7 @@ end:
276 ENGINE_cleanup(); 276 ENGINE_cleanup();
277 CRYPTO_cleanup_all_ex_data(); 277 CRYPTO_cleanup_all_ex_data();
278 ERR_free_strings(); 278 ERR_free_strings();
279 ERR_remove_state(0); 279 ERR_remove_thread_state(NULL);
280 CRYPTO_mem_leaks_fp(stderr); 280 CRYPTO_mem_leaks_fp(stderr);
281 return to_return; 281 return to_return;
282 } 282 }
diff --git a/src/lib/libcrypto/err/Makefile b/src/lib/libcrypto/err/Makefile
index 91d1379d41..862b23ba17 100644
--- a/src/lib/libcrypto/err/Makefile
+++ b/src/lib/libcrypto/err/Makefile
@@ -17,8 +17,8 @@ TEST=
17APPS= 17APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC=err.c err_def.c err_all.c err_prn.c err_str.c err_bio.c 20LIBSRC=err.c err_all.c err_prn.c
21LIBOBJ=err.o err_def.o err_all.o err_prn.o err_str.o err_bio.o 21LIBOBJ=err.o err_all.o err_prn.o
22 22
23SRC= $(LIBSRC) 23SRC= $(LIBSRC)
24 24
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -83,37 +83,24 @@ err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
83err.o: ../cryptlib.h err.c 83err.o: ../cryptlib.h err.c
84err_all.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 84err_all.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
85err_all.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 85err_all.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
86err_all.o: ../../include/openssl/cms.h ../../include/openssl/comp.h
86err_all.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 87err_all.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
87err_all.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h 88err_all.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
88err_all.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h 89err_all.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
89err_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 90err_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
90err_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 91err_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
91err_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h 92err_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h
92err_all.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 93err_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
93err_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 94err_all.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
94err_all.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 95err_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
95err_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 96err_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem2.h
96err_all.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h 97err_all.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
97err_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 98err_all.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
98err_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 99err_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
99err_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 100err_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
100err_all.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h 101err_all.o: ../../include/openssl/ts.h ../../include/openssl/ui.h
101err_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 102err_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
102err_all.o: ../../include/openssl/x509v3.h err_all.c 103err_all.o: ../../include/openssl/x509v3.h err_all.c
103err_bio.o: ../../e_os.h ../../include/openssl/bio.h
104err_bio.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
105err_bio.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
106err_bio.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
107err_bio.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
108err_bio.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
109err_bio.o: ../../include/openssl/symhacks.h ../cryptlib.h err_bio.c
110err_def.o: ../../e_os.h ../../include/openssl/bio.h
111err_def.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
112err_def.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
113err_def.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
114err_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
115err_def.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
116err_def.o: ../../include/openssl/symhacks.h ../cryptlib.h err_def.c
117err_prn.o: ../../e_os.h ../../include/openssl/bio.h 104err_prn.o: ../../e_os.h ../../include/openssl/bio.h
118err_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 105err_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
119err_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 106err_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
@@ -121,10 +108,3 @@ err_prn.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
121err_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 108err_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
122err_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 109err_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
123err_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h err_prn.c 110err_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h err_prn.c
124err_str.o: ../../e_os.h ../../include/openssl/bio.h
125err_str.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
126err_str.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
127err_str.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
128err_str.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
129err_str.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
130err_str.o: ../../include/openssl/symhacks.h ../cryptlib.h err_str.c
diff --git a/src/lib/libcrypto/evp/Makefile b/src/lib/libcrypto/evp/Makefile
index c204f84c1d..82825e5299 100644
--- a/src/lib/libcrypto/evp/Makefile
+++ b/src/lib/libcrypto/evp/Makefile
@@ -18,34 +18,34 @@ TESTDATA=evptests.txt
18APPS= 18APPS=
19 19
20LIB=$(TOP)/libcrypto.a 20LIB=$(TOP)/libcrypto.a
21LIBSRC= encode.c digest.c dig_eng.c evp_enc.c evp_key.c evp_acnf.c evp_cnf.c \ 21LIBSRC= encode.c digest.c evp_enc.c evp_key.c evp_acnf.c \
22 e_des.c e_bf.c e_idea.c e_des3.c e_camellia.c\ 22 e_des.c e_bf.c e_idea.c e_des3.c e_camellia.c\
23 e_rc4.c e_aes.c names.c e_seed.c \ 23 e_rc4.c e_aes.c names.c e_seed.c \
24 e_xcbc_d.c e_rc2.c e_cast.c e_rc5.c enc_min.c \ 24 e_xcbc_d.c e_rc2.c e_cast.c e_rc5.c \
25 m_null.c m_md2.c m_md4.c m_md5.c m_sha.c m_sha1.c \ 25 m_null.c m_md2.c m_md4.c m_md5.c m_sha.c m_sha1.c m_wp.c \
26 m_dss.c m_dss1.c m_mdc2.c m_ripemd.c m_ecdsa.c\ 26 m_dss.c m_dss1.c m_mdc2.c m_ripemd.c m_ecdsa.c\
27 p_open.c p_seal.c p_sign.c p_verify.c p_lib.c p_enc.c p_dec.c \ 27 p_open.c p_seal.c p_sign.c p_verify.c p_lib.c p_enc.c p_dec.c \
28 bio_md.c bio_b64.c bio_enc.c evp_err.c e_null.c \ 28 bio_md.c bio_b64.c bio_enc.c evp_err.c e_null.c \
29 c_all.c c_allc.c c_alld.c evp_lib.c bio_ok.c \ 29 c_all.c c_allc.c c_alld.c evp_lib.c bio_ok.c \
30 evp_pkey.c evp_pbe.c p5_crpt.c p5_crpt2.c \ 30 evp_pkey.c evp_pbe.c p5_crpt.c p5_crpt2.c \
31 e_old.c 31 e_old.c pmeth_lib.c pmeth_fn.c pmeth_gn.c m_sigver.c
32 32
33LIBOBJ= encode.o digest.o dig_eng.o evp_enc.o evp_key.o evp_acnf.o evp_cnf.o \ 33LIBOBJ= encode.o digest.o evp_enc.o evp_key.o evp_acnf.o \
34 e_des.o e_bf.o e_idea.o e_des3.o e_camellia.o\ 34 e_des.o e_bf.o e_idea.o e_des3.o e_camellia.o\
35 e_rc4.o e_aes.o names.o e_seed.o \ 35 e_rc4.o e_aes.o names.o e_seed.o \
36 e_xcbc_d.o e_rc2.o e_cast.o e_rc5.o enc_min.o \ 36 e_xcbc_d.o e_rc2.o e_cast.o e_rc5.o \
37 m_null.o m_md2.o m_md4.o m_md5.o m_sha.o m_sha1.o \ 37 m_null.o m_md2.o m_md4.o m_md5.o m_sha.o m_sha1.o m_wp.o \
38 m_dss.o m_dss1.o m_mdc2.o m_ripemd.o m_ecdsa.o\ 38 m_dss.o m_dss1.o m_mdc2.o m_ripemd.o m_ecdsa.o\
39 p_open.o p_seal.o p_sign.o p_verify.o p_lib.o p_enc.o p_dec.o \ 39 p_open.o p_seal.o p_sign.o p_verify.o p_lib.o p_enc.o p_dec.o \
40 bio_md.o bio_b64.o bio_enc.o evp_err.o e_null.o \ 40 bio_md.o bio_b64.o bio_enc.o evp_err.o e_null.o \
41 c_all.o c_allc.o c_alld.o evp_lib.o bio_ok.o \ 41 c_all.o c_allc.o c_alld.o evp_lib.o bio_ok.o \
42 evp_pkey.o evp_pbe.o p5_crpt.o p5_crpt2.o \ 42 evp_pkey.o evp_pbe.o p5_crpt.o p5_crpt2.o \
43 e_old.o 43 e_old.o pmeth_lib.o pmeth_fn.o pmeth_gn.o m_sigver.o
44 44
45SRC= $(LIBSRC) 45SRC= $(LIBSRC)
46 46
47EXHEADER= evp.h 47EXHEADER= evp.h
48HEADER= $(EXHEADER) 48HEADER= evp_locl.h $(EXHEADER)
49 49
50ALL= $(GENERAL) $(SRC) $(HEADER) 50ALL= $(GENERAL) $(SRC) $(HEADER)
51 51
@@ -55,7 +55,7 @@ top:
55all: lib 55all: lib
56 56
57lib: $(LIBOBJ) 57lib: $(LIBOBJ)
58 $(ARX) $(LIB) $(LIBOBJ) 58 $(AR) $(LIB) $(LIBOBJ)
59 $(RANLIB) $(LIB) || echo Never mind. 59 $(RANLIB) $(LIB) || echo Never mind.
60 @touch lib 60 @touch lib
61 61
@@ -101,201 +101,185 @@ bio_b64.o: ../../e_os.h ../../include/openssl/asn1.h
101bio_b64.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 101bio_b64.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
102bio_b64.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 102bio_b64.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
103bio_b64.o: ../../include/openssl/err.h ../../include/openssl/evp.h 103bio_b64.o: ../../include/openssl/err.h ../../include/openssl/evp.h
104bio_b64.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 104bio_b64.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
105bio_b64.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 105bio_b64.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
106bio_b64.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 106bio_b64.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
107bio_b64.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 107bio_b64.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
108bio_b64.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 108bio_b64.o: ../../include/openssl/symhacks.h ../cryptlib.h bio_b64.c
109bio_b64.o: ../cryptlib.h bio_b64.c
110bio_enc.o: ../../e_os.h ../../include/openssl/asn1.h 109bio_enc.o: ../../e_os.h ../../include/openssl/asn1.h
111bio_enc.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 110bio_enc.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
112bio_enc.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 111bio_enc.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
113bio_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h 112bio_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h
114bio_enc.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 113bio_enc.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
115bio_enc.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 114bio_enc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
116bio_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 115bio_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
117bio_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 116bio_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
118bio_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 117bio_enc.o: ../../include/openssl/symhacks.h ../cryptlib.h bio_enc.c
119bio_enc.o: ../cryptlib.h bio_enc.c
120bio_md.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 118bio_md.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
121bio_md.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 119bio_md.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
122bio_md.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 120bio_md.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
123bio_md.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 121bio_md.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
124bio_md.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 122bio_md.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
125bio_md.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 123bio_md.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
126bio_md.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 124bio_md.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
127bio_md.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 125bio_md.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
128bio_md.o: ../../include/openssl/symhacks.h ../cryptlib.h bio_md.c 126bio_md.o: ../cryptlib.h bio_md.c
129bio_ok.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 127bio_ok.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
130bio_ok.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 128bio_ok.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
131bio_ok.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 129bio_ok.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
132bio_ok.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 130bio_ok.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
133bio_ok.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 131bio_ok.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
134bio_ok.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 132bio_ok.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
135bio_ok.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 133bio_ok.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
136bio_ok.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 134bio_ok.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
137bio_ok.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 135bio_ok.o: ../../include/openssl/symhacks.h ../cryptlib.h bio_ok.c
138bio_ok.o: ../cryptlib.h bio_ok.c
139c_all.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 136c_all.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
140c_all.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 137c_all.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
141c_all.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 138c_all.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
142c_all.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 139c_all.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
143c_all.o: ../../include/openssl/engine.h ../../include/openssl/err.h 140c_all.o: ../../include/openssl/engine.h ../../include/openssl/err.h
144c_all.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 141c_all.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
145c_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 142c_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
146c_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 143c_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
147c_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 144c_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
148c_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 145c_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
149c_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 146c_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
150c_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 147c_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
151c_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h c_all.c 148c_all.o: ../cryptlib.h c_all.c
152c_allc.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 149c_allc.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
153c_allc.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 150c_allc.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
154c_allc.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 151c_allc.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
155c_allc.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 152c_allc.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
156c_allc.o: ../../include/openssl/err.h ../../include/openssl/evp.h 153c_allc.o: ../../include/openssl/err.h ../../include/openssl/evp.h
157c_allc.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 154c_allc.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
158c_allc.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 155c_allc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
159c_allc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 156c_allc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
160c_allc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h 157c_allc.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
161c_allc.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 158c_allc.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
162c_allc.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 159c_allc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
163c_allc.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 160c_allc.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
164c_allc.o: ../../include/openssl/x509_vfy.h ../cryptlib.h c_allc.c 161c_allc.o: ../cryptlib.h c_allc.c
165c_alld.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 162c_alld.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
166c_alld.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 163c_alld.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
167c_alld.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 164c_alld.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
168c_alld.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 165c_alld.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
169c_alld.o: ../../include/openssl/err.h ../../include/openssl/evp.h 166c_alld.o: ../../include/openssl/err.h ../../include/openssl/evp.h
170c_alld.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 167c_alld.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
171c_alld.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 168c_alld.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
172c_alld.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 169c_alld.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
173c_alld.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h 170c_alld.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
174c_alld.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 171c_alld.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
175c_alld.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 172c_alld.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
176c_alld.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 173c_alld.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
177c_alld.o: ../../include/openssl/x509_vfy.h ../cryptlib.h c_alld.c 174c_alld.o: ../cryptlib.h c_alld.c
178dig_eng.o: ../../e_os.h ../../include/openssl/asn1.h
179dig_eng.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
180dig_eng.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
181dig_eng.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
182dig_eng.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
183dig_eng.o: ../../include/openssl/err.h ../../include/openssl/evp.h
184dig_eng.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
185dig_eng.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
186dig_eng.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
187dig_eng.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
188dig_eng.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
189dig_eng.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
190dig_eng.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
191dig_eng.o: ../cryptlib.h dig_eng.c evp_locl.h
192digest.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 175digest.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
193digest.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 176digest.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
194digest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 177digest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
195digest.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 178digest.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
196digest.o: ../../include/openssl/engine.h ../../include/openssl/err.h 179digest.o: ../../include/openssl/engine.h ../../include/openssl/err.h
197digest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 180digest.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
198digest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 181digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
199digest.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 182digest.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
200digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 183digest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
201digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 184digest.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
202digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 185digest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
203digest.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 186digest.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
204digest.o: ../../include/openssl/x509_vfy.h ../cryptlib.h digest.c evp_locl.h 187digest.o: ../cryptlib.h digest.c
205e_aes.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h 188e_aes.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
206e_aes.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 189e_aes.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
207e_aes.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 190e_aes.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
208e_aes.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 191e_aes.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
209e_aes.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 192e_aes.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
210e_aes.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 193e_aes.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
211e_aes.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 194e_aes.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
212e_aes.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 195e_aes.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h e_aes.c
213e_aes.o: ../../include/openssl/symhacks.h e_aes.c evp_locl.h 196e_aes.o: evp_locl.h
214e_bf.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 197e_bf.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
215e_bf.o: ../../include/openssl/blowfish.h ../../include/openssl/buffer.h 198e_bf.o: ../../include/openssl/blowfish.h ../../include/openssl/buffer.h
216e_bf.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 199e_bf.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
217e_bf.o: ../../include/openssl/err.h ../../include/openssl/evp.h 200e_bf.o: ../../include/openssl/err.h ../../include/openssl/evp.h
218e_bf.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 201e_bf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
219e_bf.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 202e_bf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
220e_bf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 203e_bf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
221e_bf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 204e_bf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
222e_bf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 205e_bf.o: ../../include/openssl/symhacks.h ../cryptlib.h e_bf.c evp_locl.h
223e_bf.o: ../cryptlib.h e_bf.c evp_locl.h 206e_camellia.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
224e_camellia.o: ../../include/openssl/opensslconf.h e_camellia.c 207e_camellia.o: ../../include/openssl/camellia.h ../../include/openssl/crypto.h
208e_camellia.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
209e_camellia.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
210e_camellia.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
211e_camellia.o: ../../include/openssl/opensslconf.h
212e_camellia.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
213e_camellia.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
214e_camellia.o: ../../include/openssl/symhacks.h e_camellia.c evp_locl.h
225e_cast.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 215e_cast.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
226e_cast.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h 216e_cast.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
227e_cast.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 217e_cast.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
228e_cast.o: ../../include/openssl/err.h ../../include/openssl/evp.h 218e_cast.o: ../../include/openssl/err.h ../../include/openssl/evp.h
229e_cast.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 219e_cast.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
230e_cast.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 220e_cast.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
231e_cast.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 221e_cast.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
232e_cast.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 222e_cast.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
233e_cast.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 223e_cast.o: ../../include/openssl/symhacks.h ../cryptlib.h e_cast.c evp_locl.h
234e_cast.o: ../cryptlib.h e_cast.c evp_locl.h
235e_des.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 224e_des.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
236e_des.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 225e_des.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
237e_des.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 226e_des.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
238e_des.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 227e_des.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
239e_des.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 228e_des.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
240e_des.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 229e_des.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
241e_des.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 230e_des.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
242e_des.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 231e_des.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
243e_des.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 232e_des.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
244e_des.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 233e_des.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
245e_des.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 234e_des.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_des.c evp_locl.h
246e_des.o: ../cryptlib.h e_des.c evp_locl.h
247e_des3.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 235e_des3.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
248e_des3.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 236e_des3.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
249e_des3.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 237e_des3.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
250e_des3.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 238e_des3.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
251e_des3.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 239e_des3.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
252e_des3.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 240e_des3.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
253e_des3.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 241e_des3.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
254e_des3.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 242e_des3.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
255e_des3.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 243e_des3.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
256e_des3.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 244e_des3.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
257e_des3.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 245e_des3.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_des3.c evp_locl.h
258e_des3.o: ../cryptlib.h e_des3.c evp_locl.h
259e_idea.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 246e_idea.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
260e_idea.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 247e_idea.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
261e_idea.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 248e_idea.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
262e_idea.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 249e_idea.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
263e_idea.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h 250e_idea.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
264e_idea.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 251e_idea.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
265e_idea.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 252e_idea.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
266e_idea.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 253e_idea.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
267e_idea.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 254e_idea.o: ../../include/openssl/symhacks.h ../cryptlib.h e_idea.c evp_locl.h
268e_idea.o: ../cryptlib.h e_idea.c evp_locl.h
269e_null.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 255e_null.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
270e_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 256e_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
271e_null.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 257e_null.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
272e_null.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 258e_null.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
273e_null.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 259e_null.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
274e_null.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 260e_null.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
275e_null.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 261e_null.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
276e_null.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 262e_null.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
277e_null.o: ../../include/openssl/symhacks.h ../cryptlib.h e_null.c 263e_null.o: ../cryptlib.h e_null.c
278e_old.o: e_old.c 264e_old.o: e_old.c
279e_rc2.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 265e_rc2.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
280e_rc2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 266e_rc2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
281e_rc2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 267e_rc2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
282e_rc2.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 268e_rc2.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
283e_rc2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 269e_rc2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
284e_rc2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 270e_rc2.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
285e_rc2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 271e_rc2.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc2.h
286e_rc2.o: ../../include/openssl/rc2.h ../../include/openssl/safestack.h 272e_rc2.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
287e_rc2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 273e_rc2.o: ../../include/openssl/symhacks.h ../cryptlib.h e_rc2.c evp_locl.h
288e_rc2.o: ../cryptlib.h e_rc2.c evp_locl.h
289e_rc4.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 274e_rc4.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
290e_rc4.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 275e_rc4.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
291e_rc4.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 276e_rc4.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
292e_rc4.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 277e_rc4.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
293e_rc4.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 278e_rc4.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
294e_rc4.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 279e_rc4.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
295e_rc4.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 280e_rc4.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc4.h
296e_rc4.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h 281e_rc4.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
297e_rc4.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 282e_rc4.o: ../../include/openssl/symhacks.h ../cryptlib.h e_rc4.c
298e_rc4.o: ../cryptlib.h e_rc4.c evp_locl.h
299e_rc5.o: ../../e_os.h ../../include/openssl/bio.h 283e_rc5.o: ../../e_os.h ../../include/openssl/bio.h
300e_rc5.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 284e_rc5.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
301e_rc5.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 285e_rc5.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
@@ -306,256 +290,221 @@ e_rc5.o: ../../include/openssl/symhacks.h ../cryptlib.h e_rc5.c
306e_seed.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 290e_seed.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
307e_seed.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 291e_seed.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
308e_seed.o: ../../include/openssl/err.h ../../include/openssl/evp.h 292e_seed.o: ../../include/openssl/err.h ../../include/openssl/evp.h
309e_seed.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 293e_seed.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
310e_seed.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 294e_seed.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
311e_seed.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 295e_seed.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
312e_seed.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 296e_seed.o: ../../include/openssl/safestack.h ../../include/openssl/seed.h
313e_seed.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 297e_seed.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
314e_seed.o: e_seed.c 298e_seed.o: e_seed.c evp_locl.h
315e_xcbc_d.o: ../../e_os.h ../../include/openssl/asn1.h 299e_xcbc_d.o: ../../e_os.h ../../include/openssl/asn1.h
316e_xcbc_d.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 300e_xcbc_d.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
317e_xcbc_d.o: ../../include/openssl/crypto.h ../../include/openssl/des.h 301e_xcbc_d.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
318e_xcbc_d.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h 302e_xcbc_d.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
319e_xcbc_d.o: ../../include/openssl/err.h ../../include/openssl/evp.h 303e_xcbc_d.o: ../../include/openssl/err.h ../../include/openssl/evp.h
320e_xcbc_d.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 304e_xcbc_d.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
321e_xcbc_d.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 305e_xcbc_d.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
322e_xcbc_d.o: ../../include/openssl/opensslconf.h
323e_xcbc_d.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 306e_xcbc_d.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
324e_xcbc_d.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 307e_xcbc_d.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
325e_xcbc_d.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h 308e_xcbc_d.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
326e_xcbc_d.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_xcbc_d.c 309e_xcbc_d.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_xcbc_d.c
327enc_min.o: ../../e_os.h ../../include/openssl/asn1.h 310e_xcbc_d.o: evp_locl.h
328enc_min.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
329enc_min.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
330enc_min.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
331enc_min.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
332enc_min.o: ../../include/openssl/err.h ../../include/openssl/evp.h
333enc_min.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
334enc_min.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
335enc_min.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
336enc_min.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
337enc_min.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
338enc_min.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
339enc_min.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
340enc_min.o: ../../include/openssl/x509_vfy.h ../cryptlib.h enc_min.c evp_locl.h
341encode.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 311encode.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
342encode.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 312encode.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
343encode.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 313encode.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
344encode.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 314encode.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
345encode.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 315encode.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
346encode.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 316encode.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
347encode.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 317encode.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
348encode.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 318encode.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
349encode.o: ../../include/openssl/symhacks.h ../cryptlib.h encode.c 319encode.o: ../cryptlib.h encode.c
350evp_acnf.o: ../../e_os.h ../../include/openssl/asn1.h 320evp_acnf.o: ../../e_os.h ../../include/openssl/asn1.h
351evp_acnf.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 321evp_acnf.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
352evp_acnf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 322evp_acnf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
353evp_acnf.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 323evp_acnf.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
354evp_acnf.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 324evp_acnf.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
355evp_acnf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 325evp_acnf.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
356evp_acnf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 326evp_acnf.o: ../../include/openssl/opensslconf.h
357evp_acnf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 327evp_acnf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
358evp_acnf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 328evp_acnf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
359evp_acnf.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_acnf.c 329evp_acnf.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_acnf.c
360evp_cnf.o: ../../e_os.h ../../include/openssl/asn1.h
361evp_cnf.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
362evp_cnf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
363evp_cnf.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
364evp_cnf.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
365evp_cnf.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
366evp_cnf.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
367evp_cnf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
368evp_cnf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
369evp_cnf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
370evp_cnf.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
371evp_cnf.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
372evp_cnf.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
373evp_cnf.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
374evp_cnf.o: ../cryptlib.h evp_cnf.c
375evp_enc.o: ../../e_os.h ../../include/openssl/asn1.h 330evp_enc.o: ../../e_os.h ../../include/openssl/asn1.h
376evp_enc.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 331evp_enc.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
377evp_enc.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 332evp_enc.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
378evp_enc.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 333evp_enc.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
379evp_enc.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 334evp_enc.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
380evp_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h 335evp_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h
381evp_enc.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 336evp_enc.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
382evp_enc.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 337evp_enc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
383evp_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 338evp_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
384evp_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 339evp_enc.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
385evp_enc.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 340evp_enc.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
386evp_enc.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 341evp_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
387evp_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 342evp_enc.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
388evp_enc.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_enc.c evp_locl.h 343evp_enc.o: ../cryptlib.h evp_enc.c evp_locl.h
389evp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 344evp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
390evp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 345evp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
391evp_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h 346evp_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h
392evp_err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 347evp_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
393evp_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 348evp_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
394evp_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 349evp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
395evp_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 350evp_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
396evp_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 351evp_err.o: ../../include/openssl/symhacks.h evp_err.c
397evp_err.o: evp_err.c
398evp_key.o: ../../e_os.h ../../include/openssl/asn1.h 352evp_key.o: ../../e_os.h ../../include/openssl/asn1.h
399evp_key.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 353evp_key.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
400evp_key.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 354evp_key.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
401evp_key.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 355evp_key.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
402evp_key.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 356evp_key.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
403evp_key.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 357evp_key.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
404evp_key.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 358evp_key.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
405evp_key.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 359evp_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
406evp_key.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 360evp_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
407evp_key.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 361evp_key.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
408evp_key.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 362evp_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
409evp_key.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h 363evp_key.o: ../../include/openssl/ui.h ../../include/openssl/x509.h
410evp_key.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 364evp_key.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_key.c
411evp_key.o: ../cryptlib.h evp_key.c
412evp_lib.o: ../../e_os.h ../../include/openssl/asn1.h 365evp_lib.o: ../../e_os.h ../../include/openssl/asn1.h
413evp_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 366evp_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
414evp_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 367evp_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
415evp_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 368evp_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
416evp_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 369evp_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
417evp_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 370evp_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
418evp_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 371evp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
419evp_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 372evp_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
420evp_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 373evp_lib.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_lib.c
421evp_lib.o: ../cryptlib.h evp_lib.c
422evp_pbe.o: ../../e_os.h ../../include/openssl/asn1.h 374evp_pbe.o: ../../e_os.h ../../include/openssl/asn1.h
423evp_pbe.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 375evp_pbe.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
424evp_pbe.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 376evp_pbe.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
425evp_pbe.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 377evp_pbe.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
426evp_pbe.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 378evp_pbe.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
427evp_pbe.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 379evp_pbe.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
428evp_pbe.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 380evp_pbe.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
429evp_pbe.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 381evp_pbe.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
430evp_pbe.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 382evp_pbe.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
431evp_pbe.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 383evp_pbe.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
432evp_pbe.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 384evp_pbe.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
433evp_pbe.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 385evp_pbe.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
434evp_pbe.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_pbe.c 386evp_pbe.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_pbe.c
435evp_pkey.o: ../../e_os.h ../../include/openssl/asn1.h 387evp_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
436evp_pkey.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 388evp_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
437evp_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 389evp_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
438evp_pkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
439evp_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 390evp_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
440evp_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 391evp_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
441evp_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 392evp_pkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
442evp_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 393evp_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
443evp_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 394evp_pkey.o: ../../include/openssl/opensslconf.h
444evp_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 395evp_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
445evp_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 396evp_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
446evp_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 397evp_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
447evp_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 398evp_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
448evp_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 399evp_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
449evp_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_pkey.c 400evp_pkey.o: ../asn1/asn1_locl.h ../cryptlib.h evp_pkey.c
450m_dss.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 401m_dss.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
451m_dss.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 402m_dss.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
452m_dss.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 403m_dss.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
453m_dss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 404m_dss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
454m_dss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 405m_dss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
455m_dss.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 406m_dss.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
456m_dss.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 407m_dss.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
457m_dss.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 408m_dss.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
458m_dss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 409m_dss.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
459m_dss.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 410m_dss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
460m_dss.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 411m_dss.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
461m_dss.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 412m_dss.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
462m_dss.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_dss.c 413m_dss.o: ../cryptlib.h m_dss.c
463m_dss1.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 414m_dss1.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
464m_dss1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 415m_dss1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
465m_dss1.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 416m_dss1.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
466m_dss1.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 417m_dss1.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
467m_dss1.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 418m_dss1.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
468m_dss1.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 419m_dss1.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
469m_dss1.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 420m_dss1.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
470m_dss1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 421m_dss1.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
471m_dss1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 422m_dss1.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
472m_dss1.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 423m_dss1.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
473m_dss1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 424m_dss1.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
474m_dss1.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 425m_dss1.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
475m_dss1.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_dss1.c 426m_dss1.o: ../cryptlib.h m_dss1.c
476m_ecdsa.o: ../../e_os.h ../../include/openssl/asn1.h 427m_ecdsa.o: ../../e_os.h ../../include/openssl/asn1.h
477m_ecdsa.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 428m_ecdsa.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
478m_ecdsa.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 429m_ecdsa.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
479m_ecdsa.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 430m_ecdsa.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
480m_ecdsa.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 431m_ecdsa.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
481m_ecdsa.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 432m_ecdsa.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
482m_ecdsa.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 433m_ecdsa.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
483m_ecdsa.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 434m_ecdsa.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
484m_ecdsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 435m_ecdsa.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
485m_ecdsa.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 436m_ecdsa.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
486m_ecdsa.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 437m_ecdsa.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
487m_ecdsa.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 438m_ecdsa.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
488m_ecdsa.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_ecdsa.c 439m_ecdsa.o: ../cryptlib.h m_ecdsa.c
489m_md2.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 440m_md2.o: ../../e_os.h ../../include/openssl/bio.h
490m_md2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 441m_md2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
491m_md2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 442m_md2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
492m_md2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 443m_md2.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
493m_md2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
494m_md2.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
495m_md2.o: ../../include/openssl/md2.h ../../include/openssl/obj_mac.h
496m_md2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
497m_md2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 444m_md2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
498m_md2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 445m_md2.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
499m_md2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 446m_md2.o: ../../include/openssl/symhacks.h ../cryptlib.h m_md2.c
500m_md2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
501m_md2.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
502m_md2.o: ../cryptlib.h evp_locl.h m_md2.c
503m_md4.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 447m_md4.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
504m_md4.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 448m_md4.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
505m_md4.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 449m_md4.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
506m_md4.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 450m_md4.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
507m_md4.o: ../../include/openssl/err.h ../../include/openssl/evp.h 451m_md4.o: ../../include/openssl/err.h ../../include/openssl/evp.h
508m_md4.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 452m_md4.o: ../../include/openssl/lhash.h ../../include/openssl/md4.h
509m_md4.o: ../../include/openssl/md4.h ../../include/openssl/obj_mac.h 453m_md4.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
510m_md4.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 454m_md4.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
511m_md4.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 455m_md4.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
512m_md4.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 456m_md4.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
513m_md4.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 457m_md4.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
514m_md4.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 458m_md4.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
515m_md4.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 459m_md4.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_md4.c
516m_md4.o: ../cryptlib.h evp_locl.h m_md4.c
517m_md5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 460m_md5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
518m_md5.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 461m_md5.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
519m_md5.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 462m_md5.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
520m_md5.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 463m_md5.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
521m_md5.o: ../../include/openssl/err.h ../../include/openssl/evp.h 464m_md5.o: ../../include/openssl/err.h ../../include/openssl/evp.h
522m_md5.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 465m_md5.o: ../../include/openssl/lhash.h ../../include/openssl/md5.h
523m_md5.o: ../../include/openssl/md5.h ../../include/openssl/obj_mac.h 466m_md5.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
524m_md5.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 467m_md5.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
525m_md5.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 468m_md5.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
526m_md5.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 469m_md5.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
527m_md5.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 470m_md5.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
528m_md5.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 471m_md5.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
529m_md5.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 472m_md5.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_md5.c
530m_md5.o: ../cryptlib.h evp_locl.h m_md5.c 473m_mdc2.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
531m_mdc2.o: ../../e_os.h ../../include/openssl/bio.h
532m_mdc2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 474m_mdc2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
533m_mdc2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 475m_mdc2.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
534m_mdc2.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h 476m_mdc2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
535m_mdc2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 477m_mdc2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
536m_mdc2.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 478m_mdc2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
537m_mdc2.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_locl.h m_mdc2.c 479m_mdc2.o: ../../include/openssl/lhash.h ../../include/openssl/mdc2.h
480m_mdc2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
481m_mdc2.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
482m_mdc2.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
483m_mdc2.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
484m_mdc2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
485m_mdc2.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
486m_mdc2.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
487m_mdc2.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_mdc2.c
538m_null.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 488m_null.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
539m_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 489m_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
540m_null.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 490m_null.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
541m_null.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 491m_null.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
542m_null.o: ../../include/openssl/err.h ../../include/openssl/evp.h 492m_null.o: ../../include/openssl/err.h ../../include/openssl/evp.h
543m_null.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 493m_null.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
544m_null.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 494m_null.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
545m_null.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 495m_null.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
546m_null.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 496m_null.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
547m_null.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 497m_null.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
548m_null.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 498m_null.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
549m_null.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 499m_null.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_null.c
550m_null.o: ../cryptlib.h m_null.c
551m_ripemd.o: ../../e_os.h ../../include/openssl/asn1.h 500m_ripemd.o: ../../e_os.h ../../include/openssl/asn1.h
552m_ripemd.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 501m_ripemd.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
553m_ripemd.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 502m_ripemd.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
554m_ripemd.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 503m_ripemd.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
555m_ripemd.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 504m_ripemd.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
556m_ripemd.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 505m_ripemd.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
557m_ripemd.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 506m_ripemd.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
558m_ripemd.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 507m_ripemd.o: ../../include/openssl/opensslconf.h
559m_ripemd.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 508m_ripemd.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
560m_ripemd.o: ../../include/openssl/pkcs7.h ../../include/openssl/ripemd.h 509m_ripemd.o: ../../include/openssl/pkcs7.h ../../include/openssl/ripemd.h
561m_ripemd.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 510m_ripemd.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
@@ -567,62 +516,87 @@ m_sha.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
567m_sha.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 516m_sha.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
568m_sha.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 517m_sha.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
569m_sha.o: ../../include/openssl/err.h ../../include/openssl/evp.h 518m_sha.o: ../../include/openssl/err.h ../../include/openssl/evp.h
570m_sha.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 519m_sha.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
571m_sha.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 520m_sha.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
572m_sha.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 521m_sha.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
573m_sha.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 522m_sha.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
574m_sha.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 523m_sha.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
575m_sha.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 524m_sha.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
576m_sha.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 525m_sha.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
577m_sha.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_locl.h m_sha.c 526m_sha.o: ../cryptlib.h m_sha.c
578m_sha1.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 527m_sha1.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
579m_sha1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 528m_sha1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
580m_sha1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 529m_sha1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
581m_sha1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 530m_sha1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
582m_sha1.o: ../../include/openssl/err.h ../../include/openssl/evp.h 531m_sha1.o: ../../include/openssl/err.h ../../include/openssl/evp.h
583m_sha1.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 532m_sha1.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
584m_sha1.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 533m_sha1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
585m_sha1.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 534m_sha1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
586m_sha1.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 535m_sha1.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
587m_sha1.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 536m_sha1.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
588m_sha1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 537m_sha1.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
589m_sha1.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 538m_sha1.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
590m_sha1.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_sha1.c 539m_sha1.o: ../cryptlib.h m_sha1.c
540m_sigver.o: ../../e_os.h ../../include/openssl/asn1.h
541m_sigver.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
542m_sigver.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
543m_sigver.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
544m_sigver.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
545m_sigver.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
546m_sigver.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
547m_sigver.o: ../../include/openssl/opensslconf.h
548m_sigver.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
549m_sigver.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
550m_sigver.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
551m_sigver.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
552m_sigver.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_locl.h
553m_sigver.o: m_sigver.c
554m_wp.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
555m_wp.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
556m_wp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
557m_wp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
558m_wp.o: ../../include/openssl/err.h ../../include/openssl/evp.h
559m_wp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
560m_wp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
561m_wp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
562m_wp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
563m_wp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
564m_wp.o: ../../include/openssl/symhacks.h ../../include/openssl/whrlpool.h
565m_wp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
566m_wp.o: ../cryptlib.h m_wp.c
591names.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 567names.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
592names.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 568names.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
593names.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 569names.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
594names.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 570names.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
595names.o: ../../include/openssl/err.h ../../include/openssl/evp.h 571names.o: ../../include/openssl/err.h ../../include/openssl/evp.h
596names.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 572names.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
597names.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 573names.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
598names.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 574names.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
599names.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 575names.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
600names.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 576names.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
601names.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 577names.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
602names.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 578names.o: ../../include/openssl/x509_vfy.h ../cryptlib.h names.c
603names.o: ../cryptlib.h names.c
604p5_crpt.o: ../../e_os.h ../../include/openssl/asn1.h 579p5_crpt.o: ../../e_os.h ../../include/openssl/asn1.h
605p5_crpt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 580p5_crpt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
606p5_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 581p5_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
607p5_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 582p5_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
608p5_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 583p5_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
609p5_crpt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 584p5_crpt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
610p5_crpt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 585p5_crpt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
611p5_crpt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 586p5_crpt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
612p5_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 587p5_crpt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
613p5_crpt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 588p5_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
614p5_crpt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 589p5_crpt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
615p5_crpt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 590p5_crpt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
616p5_crpt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p5_crpt.c 591p5_crpt.o: ../cryptlib.h p5_crpt.c
617p5_crpt2.o: ../../e_os.h ../../include/openssl/asn1.h 592p5_crpt2.o: ../../e_os.h ../../include/openssl/asn1.h
618p5_crpt2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 593p5_crpt2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
619p5_crpt2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 594p5_crpt2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
620p5_crpt2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 595p5_crpt2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
621p5_crpt2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 596p5_crpt2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
622p5_crpt2.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 597p5_crpt2.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h
623p5_crpt2.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h 598p5_crpt2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
624p5_crpt2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 599p5_crpt2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
625p5_crpt2.o: ../../include/openssl/opensslconf.h
626p5_crpt2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 600p5_crpt2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
627p5_crpt2.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 601p5_crpt2.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
628p5_crpt2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 602p5_crpt2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -633,37 +607,35 @@ p_dec.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
633p_dec.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 607p_dec.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
634p_dec.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 608p_dec.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
635p_dec.o: ../../include/openssl/err.h ../../include/openssl/evp.h 609p_dec.o: ../../include/openssl/err.h ../../include/openssl/evp.h
636p_dec.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 610p_dec.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
637p_dec.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 611p_dec.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
638p_dec.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 612p_dec.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
639p_dec.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 613p_dec.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
640p_dec.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 614p_dec.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
641p_dec.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 615p_dec.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
642p_dec.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 616p_dec.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
643p_dec.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 617p_dec.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_dec.c
644p_dec.o: ../cryptlib.h p_dec.c
645p_enc.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 618p_enc.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
646p_enc.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 619p_enc.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
647p_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 620p_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
648p_enc.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 621p_enc.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
649p_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h 622p_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h
650p_enc.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 623p_enc.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
651p_enc.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 624p_enc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
652p_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 625p_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
653p_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 626p_enc.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
654p_enc.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 627p_enc.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
655p_enc.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 628p_enc.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
656p_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 629p_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
657p_enc.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 630p_enc.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_enc.c
658p_enc.o: ../cryptlib.h p_enc.c
659p_lib.o: ../../e_os.h ../../include/openssl/asn1.h 631p_lib.o: ../../e_os.h ../../include/openssl/asn1.h
660p_lib.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h 632p_lib.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
661p_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 633p_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
662p_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h 634p_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
663p_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 635p_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
664p_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 636p_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
665p_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 637p_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
666p_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 638p_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
667p_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 639p_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
668p_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 640p_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
669p_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 641p_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -671,57 +643,91 @@ p_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
671p_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 643p_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
672p_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 644p_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
673p_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 645p_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
674p_lib.o: ../cryptlib.h p_lib.c 646p_lib.o: ../asn1/asn1_locl.h ../cryptlib.h p_lib.c
675p_open.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 647p_open.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
676p_open.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 648p_open.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
677p_open.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 649p_open.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
678p_open.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 650p_open.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
679p_open.o: ../../include/openssl/err.h ../../include/openssl/evp.h 651p_open.o: ../../include/openssl/err.h ../../include/openssl/evp.h
680p_open.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 652p_open.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
681p_open.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 653p_open.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
682p_open.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 654p_open.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
683p_open.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 655p_open.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
684p_open.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 656p_open.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
685p_open.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 657p_open.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
686p_open.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 658p_open.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
687p_open.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_open.c 659p_open.o: ../cryptlib.h p_open.c
688p_seal.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 660p_seal.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
689p_seal.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 661p_seal.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
690p_seal.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 662p_seal.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
691p_seal.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 663p_seal.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
692p_seal.o: ../../include/openssl/err.h ../../include/openssl/evp.h 664p_seal.o: ../../include/openssl/err.h ../../include/openssl/evp.h
693p_seal.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 665p_seal.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
694p_seal.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 666p_seal.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
695p_seal.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 667p_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
696p_seal.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 668p_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
697p_seal.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 669p_seal.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
698p_seal.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 670p_seal.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
699p_seal.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 671p_seal.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
700p_seal.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 672p_seal.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_seal.c
701p_seal.o: ../cryptlib.h p_seal.c
702p_sign.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 673p_sign.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
703p_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 674p_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
704p_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 675p_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
705p_sign.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 676p_sign.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
706p_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h 677p_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h
707p_sign.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 678p_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
708p_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 679p_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
709p_sign.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 680p_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
710p_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 681p_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
711p_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 682p_sign.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
712p_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 683p_sign.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
713p_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 684p_sign.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_sign.c
714p_sign.o: ../cryptlib.h p_sign.c
715p_verify.o: ../../e_os.h ../../include/openssl/asn1.h 685p_verify.o: ../../e_os.h ../../include/openssl/asn1.h
716p_verify.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 686p_verify.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
717p_verify.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 687p_verify.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
718p_verify.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 688p_verify.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
719p_verify.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 689p_verify.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
720p_verify.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 690p_verify.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
721p_verify.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 691p_verify.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
722p_verify.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 692p_verify.o: ../../include/openssl/opensslconf.h
723p_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 693p_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
724p_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 694p_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
725p_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 695p_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
726p_verify.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 696p_verify.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
727p_verify.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_verify.c 697p_verify.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_verify.c
698pmeth_fn.o: ../../e_os.h ../../include/openssl/asn1.h
699pmeth_fn.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
700pmeth_fn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
701pmeth_fn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
702pmeth_fn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
703pmeth_fn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
704pmeth_fn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
705pmeth_fn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
706pmeth_fn.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_locl.h
707pmeth_fn.o: pmeth_fn.c
708pmeth_gn.o: ../../e_os.h ../../include/openssl/asn1.h
709pmeth_gn.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
710pmeth_gn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
711pmeth_gn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
712pmeth_gn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
713pmeth_gn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
714pmeth_gn.o: ../../include/openssl/opensslconf.h
715pmeth_gn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
716pmeth_gn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
717pmeth_gn.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_locl.h
718pmeth_gn.o: pmeth_gn.c
719pmeth_lib.o: ../../e_os.h ../../include/openssl/asn1.h
720pmeth_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
721pmeth_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
722pmeth_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
723pmeth_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
724pmeth_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
725pmeth_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
726pmeth_lib.o: ../../include/openssl/objects.h
727pmeth_lib.o: ../../include/openssl/opensslconf.h
728pmeth_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
729pmeth_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
730pmeth_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
731pmeth_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
732pmeth_lib.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
733pmeth_lib.o: evp_locl.h pmeth_lib.c
diff --git a/src/lib/libcrypto/evp/c_allc.c b/src/lib/libcrypto/evp/c_allc.c
index 7054d8125d..c5f9268378 100644
--- a/src/lib/libcrypto/evp/c_allc.c
+++ b/src/lib/libcrypto/evp/c_allc.c
@@ -71,6 +71,8 @@ void OpenSSL_add_all_ciphers(void)
71 EVP_add_cipher(EVP_des_cfb8()); 71 EVP_add_cipher(EVP_des_cfb8());
72 EVP_add_cipher(EVP_des_ede_cfb()); 72 EVP_add_cipher(EVP_des_ede_cfb());
73 EVP_add_cipher(EVP_des_ede3_cfb()); 73 EVP_add_cipher(EVP_des_ede3_cfb());
74 EVP_add_cipher(EVP_des_ede3_cfb1());
75 EVP_add_cipher(EVP_des_ede3_cfb8());
74 76
75 EVP_add_cipher(EVP_des_ofb()); 77 EVP_add_cipher(EVP_des_ofb());
76 EVP_add_cipher(EVP_des_ede_ofb()); 78 EVP_add_cipher(EVP_des_ede_ofb());
@@ -219,7 +221,4 @@ void OpenSSL_add_all_ciphers(void)
219 EVP_add_cipher_alias(SN_camellia_256_cbc,"CAMELLIA256"); 221 EVP_add_cipher_alias(SN_camellia_256_cbc,"CAMELLIA256");
220 EVP_add_cipher_alias(SN_camellia_256_cbc,"camellia256"); 222 EVP_add_cipher_alias(SN_camellia_256_cbc,"camellia256");
221#endif 223#endif
222
223 PKCS12_PBE_add();
224 PKCS5_PBE_add();
225 } 224 }
diff --git a/src/lib/libcrypto/evp/c_alld.c b/src/lib/libcrypto/evp/c_alld.c
index d270b0ee03..311e1fe2f8 100644
--- a/src/lib/libcrypto/evp/c_alld.c
+++ b/src/lib/libcrypto/evp/c_alld.c
@@ -64,9 +64,6 @@
64 64
65void OpenSSL_add_all_digests(void) 65void OpenSSL_add_all_digests(void)
66 { 66 {
67#ifndef OPENSSL_NO_MD2
68 EVP_add_digest(EVP_md2());
69#endif
70#ifndef OPENSSL_NO_MD4 67#ifndef OPENSSL_NO_MD4
71 EVP_add_digest(EVP_md4()); 68 EVP_add_digest(EVP_md4());
72#endif 69#endif
@@ -81,7 +78,7 @@ void OpenSSL_add_all_digests(void)
81 EVP_add_digest(EVP_dss()); 78 EVP_add_digest(EVP_dss());
82#endif 79#endif
83#endif 80#endif
84#ifndef OPENSSL_NO_SHA 81#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1)
85 EVP_add_digest(EVP_sha1()); 82 EVP_add_digest(EVP_sha1());
86 EVP_add_digest_alias(SN_sha1,"ssl3-sha1"); 83 EVP_add_digest_alias(SN_sha1,"ssl3-sha1");
87 EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA); 84 EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA);
@@ -111,4 +108,7 @@ void OpenSSL_add_all_digests(void)
111 EVP_add_digest(EVP_sha384()); 108 EVP_add_digest(EVP_sha384());
112 EVP_add_digest(EVP_sha512()); 109 EVP_add_digest(EVP_sha512());
113#endif 110#endif
111#ifndef OPENSSL_NO_WHIRLPOOL
112 EVP_add_digest(EVP_whirlpool());
113#endif
114 } 114 }
diff --git a/src/lib/libcrypto/evp/evp_test.c b/src/lib/libcrypto/evp/evp_test.c
index 436be20bf1..902efac975 100644
--- a/src/lib/libcrypto/evp/evp_test.c
+++ b/src/lib/libcrypto/evp/evp_test.c
@@ -153,8 +153,8 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
153 153
154 if(kn != c->key_len) 154 if(kn != c->key_len)
155 { 155 {
156 fprintf(stderr,"Key length doesn't match, got %d expected %d\n",kn, 156 fprintf(stderr,"Key length doesn't match, got %d expected %lu\n",kn,
157 c->key_len); 157 (unsigned long)c->key_len);
158 test1_exit(5); 158 test1_exit(5);
159 } 159 }
160 EVP_CIPHER_CTX_init(&ctx); 160 EVP_CIPHER_CTX_init(&ctx);
@@ -441,7 +441,7 @@ int main(int argc,char **argv)
441#endif 441#endif
442 EVP_cleanup(); 442 EVP_cleanup();
443 CRYPTO_cleanup_all_ex_data(); 443 CRYPTO_cleanup_all_ex_data();
444 ERR_remove_state(0); 444 ERR_remove_thread_state(NULL);
445 ERR_free_strings(); 445 ERR_free_strings();
446 CRYPTO_mem_leaks_fp(stderr); 446 CRYPTO_mem_leaks_fp(stderr);
447 447
diff --git a/src/lib/libcrypto/evp/m_md2.c b/src/lib/libcrypto/evp/m_md2.c
index 8eee6236ba..5ce849f161 100644
--- a/src/lib/libcrypto/evp/m_md2.c
+++ b/src/lib/libcrypto/evp/m_md2.c
@@ -58,7 +58,6 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "evp_locl.h"
62 61
63#ifndef OPENSSL_NO_MD2 62#ifndef OPENSSL_NO_MD2
64 63
diff --git a/src/lib/libcrypto/evp/m_mdc2.c b/src/lib/libcrypto/evp/m_mdc2.c
index 9f9bcf06ed..b08d559803 100644
--- a/src/lib/libcrypto/evp/m_mdc2.c
+++ b/src/lib/libcrypto/evp/m_mdc2.c
@@ -58,7 +58,6 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "evp_locl.h"
62 61
63#ifndef OPENSSL_NO_MDC2 62#ifndef OPENSSL_NO_MDC2
64 63
@@ -66,7 +65,9 @@
66#include <openssl/objects.h> 65#include <openssl/objects.h>
67#include <openssl/x509.h> 66#include <openssl/x509.h>
68#include <openssl/mdc2.h> 67#include <openssl/mdc2.h>
68#ifndef OPENSSL_NO_RSA
69#include <openssl/rsa.h> 69#include <openssl/rsa.h>
70#endif
70 71
71static int init(EVP_MD_CTX *ctx) 72static int init(EVP_MD_CTX *ctx)
72 { return MDC2_Init(ctx->md_data); } 73 { return MDC2_Init(ctx->md_data); }
diff --git a/src/lib/libcrypto/evp/m_sha.c b/src/lib/libcrypto/evp/m_sha.c
index 3f30dfc579..acccc8f92d 100644
--- a/src/lib/libcrypto/evp/m_sha.c
+++ b/src/lib/libcrypto/evp/m_sha.c
@@ -58,7 +58,6 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "evp_locl.h"
62 61
63#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA0) 62#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA0)
64 63
diff --git a/src/lib/libcrypto/hmac/Makefile b/src/lib/libcrypto/hmac/Makefile
index 5cfa37d99c..0e91709f64 100644
--- a/src/lib/libcrypto/hmac/Makefile
+++ b/src/lib/libcrypto/hmac/Makefile
@@ -17,8 +17,8 @@ TEST=hmactest.c
17APPS= 17APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC=hmac.c 20LIBSRC=hmac.c hm_ameth.c hm_pmeth.c
21LIBOBJ=hmac.o 21LIBOBJ=hmac.o hm_ameth.o hm_pmeth.o
22 22
23SRC= $(LIBSRC) 23SRC= $(LIBSRC)
24 24
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -74,13 +74,37 @@ clean:
74 74
75# DO NOT DELETE THIS LINE -- make depend depends on it. 75# DO NOT DELETE THIS LINE -- make depend depends on it.
76 76
77hm_ameth.o: ../../e_os.h ../../include/openssl/asn1.h
78hm_ameth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
79hm_ameth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
80hm_ameth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
81hm_ameth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
82hm_ameth.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
83hm_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
84hm_ameth.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
85hm_ameth.o: ../../include/openssl/symhacks.h ../asn1/asn1_locl.h ../cryptlib.h
86hm_ameth.o: hm_ameth.c
87hm_pmeth.o: ../../e_os.h ../../include/openssl/asn1.h
88hm_pmeth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
89hm_pmeth.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
90hm_pmeth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
91hm_pmeth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
92hm_pmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
93hm_pmeth.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h
94hm_pmeth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
95hm_pmeth.o: ../../include/openssl/opensslconf.h
96hm_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
97hm_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
98hm_pmeth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
99hm_pmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
100hm_pmeth.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
101hm_pmeth.o: ../cryptlib.h ../evp/evp_locl.h hm_pmeth.c
77hmac.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 102hmac.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
78hmac.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 103hmac.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
79hmac.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 104hmac.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
80hmac.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 105hmac.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h
81hmac.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h 106hmac.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
82hmac.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 107hmac.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
83hmac.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 108hmac.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
84hmac.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 109hmac.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
85hmac.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 110hmac.o: ../../include/openssl/symhacks.h ../cryptlib.h hmac.c
86hmac.o: ../cryptlib.h hmac.c
diff --git a/src/lib/libcrypto/idea/Makefile b/src/lib/libcrypto/idea/Makefile
index 55c0d4dbff..b2e7add666 100644
--- a/src/lib/libcrypto/idea/Makefile
+++ b/src/lib/libcrypto/idea/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -82,9 +82,5 @@ i_ecb.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h
82i_ecb.o: ../../include/openssl/opensslv.h i_ecb.c idea_lcl.h 82i_ecb.o: ../../include/openssl/opensslv.h i_ecb.c idea_lcl.h
83i_ofb64.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h 83i_ofb64.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h
84i_ofb64.o: i_ofb64.c idea_lcl.h 84i_ofb64.o: i_ofb64.c idea_lcl.h
85i_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 85i_skey.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h
86i_skey.o: ../../include/openssl/fips.h ../../include/openssl/idea.h
87i_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
88i_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
89i_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
90i_skey.o: i_skey.c idea_lcl.h 86i_skey.o: i_skey.c idea_lcl.h
diff --git a/src/lib/libcrypto/install.com b/src/lib/libcrypto/install.com
index ffad1f97a7..ad3e4d48c7 100644
--- a/src/lib/libcrypto/install.com
+++ b/src/lib/libcrypto/install.com
@@ -3,15 +3,26 @@ $!
3$! Author: Richard Levitte <richard@levitte.org> 3$! Author: Richard Levitte <richard@levitte.org>
4$! Time of creation: 22-MAY-1998 10:13 4$! Time of creation: 22-MAY-1998 10:13
5$! 5$!
6$! Changes by Zoltan Arpadffy <zoli@polarhome.com>
7$!
6$! P1 root of the directory tree 8$! P1 root of the directory tree
7$! 9$!
8$ IF P1 .EQS. "" 10$ IF P1 .EQS. ""
9$ THEN 11$ THEN
10$ WRITE SYS$OUTPUT "First argument missing." 12$ WRITE SYS$OUTPUT "First argument missing."
11$ WRITE SYS$OUTPUT "Should be the directory where you want things installed." 13$ WRITE SYS$OUTPUT -
14 "It should be the directory where you want things installed."
12$ EXIT 15$ EXIT
13$ ENDIF 16$ ENDIF
14$ 17$
18$ IF (F$GETSYI("CPU").LT.128)
19$ THEN
20$ ARCH := VAX
21$ ELSE
22$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
23$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
24$ ENDIF
25$
15$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0" 26$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
16$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY") 27$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
17$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") - 28$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
@@ -19,30 +30,28 @@ $ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
19$ ROOT = ROOT_DEV + "[" + ROOT_DIR 30$ ROOT = ROOT_DEV + "[" + ROOT_DIR
20$ 31$
21$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC 32$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
22$ DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB] 33$ DEFINE/NOLOG WRK_SSLLIB WRK_SSLROOT:['ARCH'_LIB]
23$ DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB]
24$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE] 34$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE]
25$ 35$
26$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN - 36$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
27 CREATE/DIR/LOG WRK_SSLROOT:[000000] 37 CREATE/DIR/LOG WRK_SSLROOT:[000000]
28$ IF F$PARSE("WRK_SSLVLIB:") .EQS. "" THEN - 38$ IF F$PARSE("WRK_SSLLIB:") .EQS. "" THEN -
29 CREATE/DIR/LOG WRK_SSLVLIB: 39 CREATE/DIR/LOG WRK_SSLLIB:
30$ IF F$PARSE("WRK_SSLALIB:") .EQS. "" THEN -
31 CREATE/DIR/LOG WRK_SSLALIB:
32$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN - 40$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN -
33 CREATE/DIR/LOG WRK_SSLINCLUDE: 41 CREATE/DIR/LOG WRK_SSLINCLUDE:
34$ 42$
35$ SDIRS := ,- 43$ SDIRS := ,-
44 _'ARCH',-
36 OBJECTS,- 45 OBJECTS,-
37 MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,- 46 MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,WHRLPOOL,-
38 DES,AES,RC2,RC4,RC5,IDEA,BF,CAST,CAMELLIA,SEED,- 47 DES,AES,RC2,RC4,RC5,IDEA,BF,CAST,CAMELLIA,SEED,-
39 BN,EC,RSA,DSA,ECDSA,DH,ECDH,DSO,ENGINE,- 48 BN,EC,RSA,DSA,ECDSA,DH,ECDH,DSO,ENGINE,-
40 BUFFER,BIO,STACK,LHASH,RAND,ERR,- 49 BUFFER,BIO,STACK,LHASH,RAND,ERR,-
41 EVP,ASN1,PEM,X509,X509V3,CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,- 50 EVP,ASN1,PEM,X509,X509V3,CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,-
42 UI,KRB5,- 51 UI,KRB5,-
43 STORE,PQUEUE,JPAKE 52 STORE,CMS,PQUEUE,TS,JPAKE
44$ EXHEADER_ := crypto.h,tmdiff.h,opensslv.h,opensslconf.h,ebcdic.h,- 53$ EXHEADER_ := crypto.h,opensslv.h,ebcdic.h,symhacks.h,ossl_typ.h
45 symhacks.h,ossl_typ.h 54$ EXHEADER__'ARCH' := opensslconf.h
46$ EXHEADER_OBJECTS := objects.h,obj_mac.h 55$ EXHEADER_OBJECTS := objects.h,obj_mac.h
47$ EXHEADER_MD2 := md2.h 56$ EXHEADER_MD2 := md2.h
48$ EXHEADER_MD4 := md4.h 57$ EXHEADER_MD4 := md4.h
@@ -51,6 +60,7 @@ $ EXHEADER_SHA := sha.h
51$ EXHEADER_MDC2 := mdc2.h 60$ EXHEADER_MDC2 := mdc2.h
52$ EXHEADER_HMAC := hmac.h 61$ EXHEADER_HMAC := hmac.h
53$ EXHEADER_RIPEMD := ripemd.h 62$ EXHEADER_RIPEMD := ripemd.h
63$ EXHEADER_WHRLPOOL := whrlpool.h
54$ EXHEADER_DES := des.h,des_old.h 64$ EXHEADER_DES := des.h,des_old.h
55$ EXHEADER_AES := aes.h 65$ EXHEADER_AES := aes.h
56$ EXHEADER_RC2 := rc2.h 66$ EXHEADER_RC2 := rc2.h
@@ -61,6 +71,7 @@ $ EXHEADER_BF := blowfish.h
61$ EXHEADER_CAST := cast.h 71$ EXHEADER_CAST := cast.h
62$ EXHEADER_CAMELLIA := camellia.h 72$ EXHEADER_CAMELLIA := camellia.h
63$ EXHEADER_SEED := seed.h 73$ EXHEADER_SEED := seed.h
74$ EXHEADER_MODES := modes.h
64$ EXHEADER_BN := bn.h 75$ EXHEADER_BN := bn.h
65$ EXHEADER_EC := ec.h 76$ EXHEADER_EC := ec.h
66$ EXHEADER_RSA := rsa.h 77$ EXHEADER_RSA := rsa.h
@@ -91,12 +102,13 @@ $ EXHEADER_UI := ui.h,ui_compat.h
91$ EXHEADER_KRB5 := krb5_asn.h 102$ EXHEADER_KRB5 := krb5_asn.h
92$! EXHEADER_STORE := store.h,str_compat.h 103$! EXHEADER_STORE := store.h,str_compat.h
93$ EXHEADER_STORE := store.h 104$ EXHEADER_STORE := store.h
94$ EXHEADER_PQUEUE := pqueue.h,pq_compat.h 105$ EXHEADER_CMS := cms.h
106$ EXHEADER_PQUEUE := pqueue.h
107$ EXHEADER_TS := ts.h
95$ EXHEADER_JPAKE := jpake.h 108$ EXHEADER_JPAKE := jpake.h
96$ LIBS := LIBCRYPTO 109$ LIBS := LIBCRYPTO
97$ 110$
98$ VEXE_DIR := [-.VAX.EXE.CRYPTO] 111$ EXE_DIR := [-.'ARCH'.EXE.CRYPTO]
99$ AEXE_DIR := [-.AXP.EXE.CRYPTO]
100$ 112$
101$ I = 0 113$ I = 0
102$ LOOP_SDIRS: 114$ LOOP_SDIRS:
@@ -108,7 +120,12 @@ $ IF D .EQS. ""
108$ THEN 120$ THEN
109$ COPY 'tmp' WRK_SSLINCLUDE: /LOG 121$ COPY 'tmp' WRK_SSLINCLUDE: /LOG
110$ ELSE 122$ ELSE
111$ COPY [.'D']'tmp' WRK_SSLINCLUDE: /LOG 123$ IF D .EQS. "_''ARCH'"
124$ THEN
125$ COPY [-.'ARCH'.CRYPTO]'tmp' WRK_SSLINCLUDE: /LOG
126$ ELSE
127$ COPY [.'D']'tmp' WRK_SSLINCLUDE: /LOG
128$ ENDIF
112$ ENDIF 129$ ENDIF
113$ SET FILE/PROT=WORLD:RE WRK_SSLINCLUDE:'tmp' 130$ SET FILE/PROT=WORLD:RE WRK_SSLINCLUDE:'tmp'
114$ GOTO LOOP_SDIRS 131$ GOTO LOOP_SDIRS
@@ -120,27 +137,16 @@ $ E = F$EDIT(F$ELEMENT(I, ",", LIBS),"TRIM")
120$ I = I + 1 137$ I = I + 1
121$ IF E .EQS. "," THEN GOTO LOOP_LIB_END 138$ IF E .EQS. "," THEN GOTO LOOP_LIB_END
122$ SET NOON 139$ SET NOON
123$ IF F$SEARCH(VEXE_DIR+E+".OLB") .NES. "" 140$ IF F$SEARCH(EXE_DIR+E+".OLB") .NES. ""
124$ THEN
125$ COPY 'VEXE_DIR''E'.OLB WRK_SSLVLIB:'E'.OLB/log
126$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.OLB
127$ ENDIF
128$ ! Preparing for the time when we have shareable images
129$ IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. ""
130$ THEN
131$ COPY 'VEXE_DIR''E'.EXE WRK_SSLVLIB:'E'.EXE/log
132$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.EXE
133$ ENDIF
134$ IF F$SEARCH(AEXE_DIR+E+".OLB") .NES. ""
135$ THEN 141$ THEN
136$ COPY 'AEXE_DIR''E'.OLB WRK_SSLALIB:'E'.OLB/log 142$ COPY 'EXE_DIR''E'.OLB WRK_SSLLIB:'E'.OLB/log
137$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.OLB 143$ SET FILE/PROT=W:RE WRK_SSLLIB:'E'.OLB
138$ ENDIF 144$ ENDIF
139$ ! Preparing for the time when we have shareable images 145$ ! Preparing for the time when we have shareable images
140$ IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. "" 146$ IF F$SEARCH(EXE_DIR+E+".EXE") .NES. ""
141$ THEN 147$ THEN
142$ COPY 'AEXE_DIR''E'.EXE WRK_SSLALIB:'E'.EXE/log 148$ COPY 'EXE_DIR''E'.EXE WRK_SSLLIB:'E'.EXE/log
143$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.EXE 149$ SET FILE/PROT=W:RE WRK_SSLLIB:'E'.EXE
144$ ENDIF 150$ ENDIF
145$ SET ON 151$ SET ON
146$ GOTO LOOP_LIB 152$ GOTO LOOP_LIB
diff --git a/src/lib/libcrypto/krb5/Makefile b/src/lib/libcrypto/krb5/Makefile
index 8efb9e8910..14077390d6 100644
--- a/src/lib/libcrypto/krb5/Makefile
+++ b/src/lib/libcrypto/krb5/Makefile
@@ -34,7 +34,7 @@ top:
34all: lib 34all: lib
35 35
36lib: $(LIBOBJ) 36lib: $(LIBOBJ)
37 $(ARX) $(LIB) $(LIBOBJ) 37 $(AR) $(LIB) $(LIBOBJ)
38 $(RANLIB) $(LIB) || echo Never mind. 38 $(RANLIB) $(LIB) || echo Never mind.
39 @touch lib 39 @touch lib
40 40
diff --git a/src/lib/libcrypto/lhash/Makefile b/src/lib/libcrypto/lhash/Makefile
index 35f0932971..82bddac474 100644
--- a/src/lib/libcrypto/lhash/Makefile
+++ b/src/lib/libcrypto/lhash/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
diff --git a/src/lib/libcrypto/md2/Makefile b/src/lib/libcrypto/md2/Makefile
index 7f43321ab2..17f878aeb7 100644
--- a/src/lib/libcrypto/md2/Makefile
+++ b/src/lib/libcrypto/md2/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -74,9 +74,7 @@ clean:
74 74
75# DO NOT DELETE THIS LINE -- make depend depends on it. 75# DO NOT DELETE THIS LINE -- make depend depends on it.
76 76
77md2_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 77md2_dgst.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
78md2_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
79md2_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
80md2_dgst.o: ../../include/openssl/md2.h ../../include/openssl/opensslconf.h 78md2_dgst.o: ../../include/openssl/md2.h ../../include/openssl/opensslconf.h
81md2_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 79md2_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
82md2_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 80md2_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
diff --git a/src/lib/libcrypto/md2/md2.h b/src/lib/libcrypto/md2/md2.h
index d59c9f2593..a46120e7d4 100644
--- a/src/lib/libcrypto/md2/md2.h
+++ b/src/lib/libcrypto/md2/md2.h
@@ -81,9 +81,6 @@ typedef struct MD2state_st
81 } MD2_CTX; 81 } MD2_CTX;
82 82
83const char *MD2_options(void); 83const char *MD2_options(void);
84#ifdef OPENSSL_FIPS
85int private_MD2_Init(MD2_CTX *c);
86#endif
87int MD2_Init(MD2_CTX *c); 84int MD2_Init(MD2_CTX *c);
88int MD2_Update(MD2_CTX *c, const unsigned char *data, size_t len); 85int MD2_Update(MD2_CTX *c, const unsigned char *data, size_t len);
89int MD2_Final(unsigned char *md, MD2_CTX *c); 86int MD2_Final(unsigned char *md, MD2_CTX *c);
diff --git a/src/lib/libcrypto/md2/md2_dgst.c b/src/lib/libcrypto/md2/md2_dgst.c
index cc4eeaf7a7..c57b3da288 100644
--- a/src/lib/libcrypto/md2/md2_dgst.c
+++ b/src/lib/libcrypto/md2/md2_dgst.c
@@ -62,11 +62,6 @@
62#include <openssl/md2.h> 62#include <openssl/md2.h>
63#include <openssl/opensslv.h> 63#include <openssl/opensslv.h>
64#include <openssl/crypto.h> 64#include <openssl/crypto.h>
65#ifdef OPENSSL_FIPS
66#include <openssl/fips.h>
67#endif
68
69#include <openssl/err.h>
70 65
71const char MD2_version[]="MD2" OPENSSL_VERSION_PTEXT; 66const char MD2_version[]="MD2" OPENSSL_VERSION_PTEXT;
72 67
@@ -78,7 +73,7 @@ const char MD2_version[]="MD2" OPENSSL_VERSION_PTEXT;
78static void md2_block(MD2_CTX *c, const unsigned char *d); 73static void md2_block(MD2_CTX *c, const unsigned char *d);
79/* The magic S table - I have converted it to hex since it is 74/* The magic S table - I have converted it to hex since it is
80 * basically just a random byte string. */ 75 * basically just a random byte string. */
81static MD2_INT S[256]={ 76static const MD2_INT S[256]={
82 0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01, 77 0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01,
83 0x3D, 0x36, 0x54, 0xA1, 0xEC, 0xF0, 0x06, 0x13, 78 0x3D, 0x36, 0x54, 0xA1, 0xEC, 0xF0, 0x06, 0x13,
84 0x62, 0xA7, 0x05, 0xF3, 0xC0, 0xC7, 0x73, 0x8C, 79 0x62, 0xA7, 0x05, 0xF3, 0xC0, 0xC7, 0x73, 0x8C,
@@ -121,7 +116,7 @@ const char *MD2_options(void)
121 return("md2(int)"); 116 return("md2(int)");
122 } 117 }
123 118
124FIPS_NON_FIPS_MD_Init(MD2) 119int MD2_Init(MD2_CTX *c)
125 { 120 {
126 c->num=0; 121 c->num=0;
127 memset(c->state,0,sizeof c->state); 122 memset(c->state,0,sizeof c->state);
diff --git a/src/lib/libcrypto/md4/Makefile b/src/lib/libcrypto/md4/Makefile
index 0bc4896585..c94a1398ed 100644
--- a/src/lib/libcrypto/md4/Makefile
+++ b/src/lib/libcrypto/md4/Makefile
@@ -34,7 +34,7 @@ top:
34all: lib 34all: lib
35 35
36lib: $(LIBOBJ) 36lib: $(LIBOBJ)
37 $(ARX) $(LIB) $(LIBOBJ) 37 $(AR) $(LIB) $(LIBOBJ)
38 $(RANLIB) $(LIB) || echo Never mind. 38 $(RANLIB) $(LIB) || echo Never mind.
39 @touch lib 39 @touch lib
40 40
@@ -69,19 +69,16 @@ depend:
69dclean: 69dclean:
70 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new 70 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
71 mv -f Makefile.new $(MAKEFILE) 71 mv -f Makefile.new $(MAKEFILE)
72 rm -f ../../include/openssl/$(EXHEADER) ../../test/$(TEST) ../../apps/$(APPS)
72 73
73clean: 74clean:
74 rm -f asm/mx86unix.cpp *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff 75 rm -f asm/mx86unix.cpp *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
75 76
76# DO NOT DELETE THIS LINE -- make depend depends on it. 77# DO NOT DELETE THIS LINE -- make depend depends on it.
77 78
78md4_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 79md4_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/md4.h
79md4_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 80md4_dgst.o: ../../include/openssl/opensslconf.h
80md4_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 81md4_dgst.o: ../../include/openssl/opensslv.h ../md32_common.h md4_dgst.c
81md4_dgst.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h
82md4_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
83md4_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
84md4_dgst.o: ../../include/openssl/symhacks.h ../md32_common.h md4_dgst.c
85md4_dgst.o: md4_locl.h 82md4_dgst.o: md4_locl.h
86md4_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 83md4_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
87md4_one.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h 84md4_one.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h
diff --git a/src/lib/libcrypto/md5/Makefile b/src/lib/libcrypto/md5/Makefile
index 3c450fcfc0..9858d53d31 100644
--- a/src/lib/libcrypto/md5/Makefile
+++ b/src/lib/libcrypto/md5/Makefile
@@ -38,21 +38,19 @@ top:
38all: lib 38all: lib
39 39
40lib: $(LIBOBJ) 40lib: $(LIBOBJ)
41 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
42 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
43 @touch lib 43 @touch lib
44 44
45# ELF 45md5-586.s: asm/md5-586.pl ../perlasm/x86asm.pl
46mx86-elf.s: asm/md5-586.pl ../perlasm/x86asm.pl 46 $(PERL) asm/md5-586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
47 (cd asm; $(PERL) md5-586.pl elf $(CFLAGS) > ../$@)
48# COFF
49mx86-cof.s: asm/md5-586.pl ../perlasm/x86asm.pl
50 (cd asm; $(PERL) md5-586.pl coff $(CFLAGS) > ../$@)
51# a.out
52mx86-out.s: asm/md5-586.pl ../perlasm/x86asm.pl
53 (cd asm; $(PERL) md5-586.pl a.out $(CFLAGS) > ../$@)
54 47
55md5-x86_64.s: asm/md5-x86_64.pl; $(PERL) asm/md5-x86_64.pl $@ 48md5-x86_64.s: asm/md5-x86_64.pl
49 $(PERL) asm/md5-x86_64.pl $(PERLASM_SCHEME) > $@
50
51md5-ia64.s: asm/md5-ia64.S
52 $(CC) $(CFLAGS) -E asm/md5-ia64.S | \
53 $(PERL) -ne 's/;\s+/;\n/g; print;' > $@
56 54
57files: 55files:
58 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 56 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -91,13 +89,9 @@ clean:
91 89
92# DO NOT DELETE THIS LINE -- make depend depends on it. 90# DO NOT DELETE THIS LINE -- make depend depends on it.
93 91
94md5_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 92md5_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/md5.h
95md5_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 93md5_dgst.o: ../../include/openssl/opensslconf.h
96md5_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 94md5_dgst.o: ../../include/openssl/opensslv.h ../md32_common.h md5_dgst.c
97md5_dgst.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h
98md5_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
99md5_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
100md5_dgst.o: ../../include/openssl/symhacks.h ../md32_common.h md5_dgst.c
101md5_dgst.o: md5_locl.h 95md5_dgst.o: md5_locl.h
102md5_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 96md5_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
103md5_one.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h 97md5_one.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h
diff --git a/src/lib/libcrypto/mdc2/Makefile b/src/lib/libcrypto/mdc2/Makefile
index ea25688d88..1d064f17a6 100644
--- a/src/lib/libcrypto/mdc2/Makefile
+++ b/src/lib/libcrypto/mdc2/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
diff --git a/src/lib/libcrypto/mdc2/mdc2.h b/src/lib/libcrypto/mdc2/mdc2.h
index 7e1354116a..72778a5212 100644
--- a/src/lib/libcrypto/mdc2/mdc2.h
+++ b/src/lib/libcrypto/mdc2/mdc2.h
@@ -80,9 +80,7 @@ typedef struct mdc2_ctx_st
80 int pad_type; /* either 1 or 2, default 1 */ 80 int pad_type; /* either 1 or 2, default 1 */
81 } MDC2_CTX; 81 } MDC2_CTX;
82 82
83#ifdef OPENSSL_FIPS 83
84int private_MDC2_Init(MDC2_CTX *c);
85#endif
86int MDC2_Init(MDC2_CTX *c); 84int MDC2_Init(MDC2_CTX *c);
87int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len); 85int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len);
88int MDC2_Final(unsigned char *md, MDC2_CTX *c); 86int MDC2_Final(unsigned char *md, MDC2_CTX *c);
diff --git a/src/lib/libcrypto/mem.c b/src/lib/libcrypto/mem.c
index 00ebaf0b9b..6f80dd33eb 100644
--- a/src/lib/libcrypto/mem.c
+++ b/src/lib/libcrypto/mem.c
@@ -101,7 +101,7 @@ static void (*free_locked_func)(void *) = free;
101 101
102/* may be changed as long as 'allow_customize_debug' is set */ 102/* may be changed as long as 'allow_customize_debug' is set */
103/* XXX use correct function pointer types */ 103/* XXX use correct function pointer types */
104#if defined(CRYPTO_MDEBUG) && !defined(OPENSSL_FIPS) 104#ifdef CRYPTO_MDEBUG
105/* use default functions from mem_dbg.c */ 105/* use default functions from mem_dbg.c */
106static void (*malloc_debug_func)(void *,int,const char *,int,int) 106static void (*malloc_debug_func)(void *,int,const char *,int,int)
107 = CRYPTO_dbg_malloc; 107 = CRYPTO_dbg_malloc;
@@ -110,14 +110,6 @@ static void (*realloc_debug_func)(void *,void *,int,const char *,int,int)
110static void (*free_debug_func)(void *,int) = CRYPTO_dbg_free; 110static void (*free_debug_func)(void *,int) = CRYPTO_dbg_free;
111static void (*set_debug_options_func)(long) = CRYPTO_dbg_set_options; 111static void (*set_debug_options_func)(long) = CRYPTO_dbg_set_options;
112static long (*get_debug_options_func)(void) = CRYPTO_dbg_get_options; 112static long (*get_debug_options_func)(void) = CRYPTO_dbg_get_options;
113
114static int (*push_info_func)(const char *info, const char *file, int line)
115 = CRYPTO_dbg_push_info;
116static int (*pop_info_func)(void)
117 = CRYPTO_dbg_pop_info;
118static int (*remove_all_info_func)(void)
119 = CRYPTO_dbg_remove_all_info;
120
121#else 113#else
122/* applications can use CRYPTO_malloc_debug_init() to select above case 114/* applications can use CRYPTO_malloc_debug_init() to select above case
123 * at run-time */ 115 * at run-time */
@@ -127,13 +119,6 @@ static void (*realloc_debug_func)(void *,void *,int,const char *,int,int)
127static void (*free_debug_func)(void *,int) = NULL; 119static void (*free_debug_func)(void *,int) = NULL;
128static void (*set_debug_options_func)(long) = NULL; 120static void (*set_debug_options_func)(long) = NULL;
129static long (*get_debug_options_func)(void) = NULL; 121static long (*get_debug_options_func)(void) = NULL;
130
131
132static int (*push_info_func)(const char *info, const char *file, int line)
133 = NULL;
134static int (*pop_info_func)(void) = NULL;
135static int (*remove_all_info_func)(void) = NULL;
136
137#endif 122#endif
138 123
139 124
@@ -209,15 +194,6 @@ int CRYPTO_set_mem_debug_functions(void (*m)(void *,int,const char *,int,int),
209 return 1; 194 return 1;
210 } 195 }
211 196
212void CRYPTO_set_mem_info_functions(
213 int (*push_info_fn)(const char *info, const char *file, int line),
214 int (*pop_info_fn)(void),
215 int (*remove_all_info_fn)(void))
216 {
217 push_info_func = push_info_fn;
218 pop_info_func = pop_info_fn;
219 remove_all_info_func = remove_all_info_fn;
220 }
221 197
222void CRYPTO_get_mem_functions(void *(**m)(size_t), void *(**r)(void *, size_t), 198void CRYPTO_get_mem_functions(void *(**m)(size_t), void *(**r)(void *, size_t),
223 void (**f)(void *)) 199 void (**f)(void *))
@@ -274,7 +250,6 @@ void CRYPTO_get_mem_debug_functions(void (**m)(void *,int,const char *,int,int),
274void *CRYPTO_malloc_locked(int num, const char *file, int line) 250void *CRYPTO_malloc_locked(int num, const char *file, int line)
275 { 251 {
276 void *ret = NULL; 252 void *ret = NULL;
277 extern unsigned char cleanse_ctr;
278 253
279 if (num <= 0) return NULL; 254 if (num <= 0) return NULL;
280 255
@@ -291,11 +266,15 @@ void *CRYPTO_malloc_locked(int num, const char *file, int line)
291 if (malloc_debug_func != NULL) 266 if (malloc_debug_func != NULL)
292 malloc_debug_func(ret, num, file, line, 1); 267 malloc_debug_func(ret, num, file, line, 1);
293 268
269#ifndef OPENSSL_CPUID_OBJ
294 /* Create a dependency on the value of 'cleanse_ctr' so our memory 270 /* Create a dependency on the value of 'cleanse_ctr' so our memory
295 * sanitisation function can't be optimised out. NB: We only do 271 * sanitisation function can't be optimised out. NB: We only do
296 * this for >2Kb so the overhead doesn't bother us. */ 272 * this for >2Kb so the overhead doesn't bother us. */
297 if(ret && (num > 2048)) 273 if(ret && (num > 2048))
274 { extern unsigned char cleanse_ctr;
298 ((unsigned char *)ret)[0] = cleanse_ctr; 275 ((unsigned char *)ret)[0] = cleanse_ctr;
276 }
277#endif
299 278
300 return ret; 279 return ret;
301 } 280 }
@@ -315,7 +294,6 @@ void CRYPTO_free_locked(void *str)
315void *CRYPTO_malloc(int num, const char *file, int line) 294void *CRYPTO_malloc(int num, const char *file, int line)
316 { 295 {
317 void *ret = NULL; 296 void *ret = NULL;
318 extern unsigned char cleanse_ctr;
319 297
320 if (num <= 0) return NULL; 298 if (num <= 0) return NULL;
321 299
@@ -332,12 +310,23 @@ void *CRYPTO_malloc(int num, const char *file, int line)
332 if (malloc_debug_func != NULL) 310 if (malloc_debug_func != NULL)
333 malloc_debug_func(ret, num, file, line, 1); 311 malloc_debug_func(ret, num, file, line, 1);
334 312
313#ifndef OPENSSL_CPUID_OBJ
335 /* Create a dependency on the value of 'cleanse_ctr' so our memory 314 /* Create a dependency on the value of 'cleanse_ctr' so our memory
336 * sanitisation function can't be optimised out. NB: We only do 315 * sanitisation function can't be optimised out. NB: We only do
337 * this for >2Kb so the overhead doesn't bother us. */ 316 * this for >2Kb so the overhead doesn't bother us. */
338 if(ret && (num > 2048)) 317 if(ret && (num > 2048))
318 { extern unsigned char cleanse_ctr;
339 ((unsigned char *)ret)[0] = cleanse_ctr; 319 ((unsigned char *)ret)[0] = cleanse_ctr;
320 }
321#endif
322
323 return ret;
324 }
325char *CRYPTO_strdup(const char *str, const char *file, int line)
326 {
327 char *ret = CRYPTO_malloc(strlen(str)+1, file, line);
340 328
329 strcpy(ret, str);
341 return ret; 330 return ret;
342 } 331 }
343 332
@@ -423,24 +412,3 @@ long CRYPTO_get_mem_debug_options(void)
423 return get_debug_options_func(); 412 return get_debug_options_func();
424 return 0; 413 return 0;
425 } 414 }
426
427int CRYPTO_push_info_(const char *info, const char *file, int line)
428 {
429 if (push_info_func)
430 return push_info_func(info, file, line);
431 return 1;
432 }
433
434int CRYPTO_pop_info(void)
435 {
436 if (pop_info_func)
437 return pop_info_func();
438 return 1;
439 }
440
441int CRYPTO_remove_all_info(void)
442 {
443 if (remove_all_info_func)
444 return remove_all_info_func();
445 return 1;
446 }
diff --git a/src/lib/libcrypto/objects/Makefile b/src/lib/libcrypto/objects/Makefile
index 25e8b23b5d..a8aedbd422 100644
--- a/src/lib/libcrypto/objects/Makefile
+++ b/src/lib/libcrypto/objects/Makefile
@@ -18,23 +18,23 @@ TEST=
18APPS= 18APPS=
19 19
20LIB=$(TOP)/libcrypto.a 20LIB=$(TOP)/libcrypto.a
21LIBSRC= o_names.c obj_dat.c obj_lib.c obj_err.c 21LIBSRC= o_names.c obj_dat.c obj_lib.c obj_err.c obj_xref.c
22LIBOBJ= o_names.o obj_dat.o obj_lib.o obj_err.o 22LIBOBJ= o_names.o obj_dat.o obj_lib.o obj_err.o obj_xref.o
23 23
24SRC= $(LIBSRC) 24SRC= $(LIBSRC)
25 25
26EXHEADER= objects.h obj_mac.h 26EXHEADER= objects.h obj_mac.h
27HEADER= $(EXHEADER) obj_dat.h 27HEADER= $(EXHEADER) obj_dat.h obj_xref.h
28 28
29ALL= $(GENERAL) $(SRC) $(HEADER) 29ALL= $(GENERAL) $(SRC) $(HEADER)
30 30
31top: 31top:
32 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all) 32 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
33 33
34all: obj_dat.h lib 34all: obj_dat.h obj_xref.h lib
35 35
36lib: $(LIBOBJ) 36lib: $(LIBOBJ)
37 $(ARX) $(LIB) $(LIBOBJ) 37 $(AR) $(LIB) $(LIBOBJ)
38 $(RANLIB) $(LIB) || echo Never mind. 38 $(RANLIB) $(LIB) || echo Never mind.
39 @touch lib 39 @touch lib
40 40
@@ -46,6 +46,10 @@ obj_mac.h: objects.pl objects.txt obj_mac.num
46 $(PERL) objects.pl objects.txt obj_mac.num obj_mac.h 46 $(PERL) objects.pl objects.txt obj_mac.num obj_mac.h
47 @sleep 1; touch obj_mac.h; sleep 1 47 @sleep 1; touch obj_mac.h; sleep 1
48 48
49obj_xref.h: objxref.pl obj_xref.txt obj_mac.num
50 $(PERL) objxref.pl obj_mac.num obj_xref.txt > obj_xref.h
51 @sleep 1; touch obj_xref.h; sleep 1
52
49files: 53files:
50 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 54 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
51 55
@@ -117,3 +121,10 @@ obj_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
117obj_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 121obj_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
118obj_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 122obj_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
119obj_lib.o: ../cryptlib.h obj_lib.c 123obj_lib.o: ../cryptlib.h obj_lib.c
124obj_xref.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
125obj_xref.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
126obj_xref.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
127obj_xref.o: ../../include/openssl/opensslconf.h
128obj_xref.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
129obj_xref.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
130obj_xref.o: ../../include/openssl/symhacks.h obj_xref.c obj_xref.h
diff --git a/src/lib/libcrypto/objects/obj_dat.h b/src/lib/libcrypto/objects/obj_dat.h
index dccc15e03c..6449be6071 100644
--- a/src/lib/libcrypto/objects/obj_dat.h
+++ b/src/lib/libcrypto/objects/obj_dat.h
@@ -62,12 +62,12 @@
62 * [including the GNU Public Licence.] 62 * [including the GNU Public Licence.]
63 */ 63 */
64 64
65#define NUM_NID 859 65#define NUM_NID 893
66#define NUM_SN 852 66#define NUM_SN 886
67#define NUM_LN 852 67#define NUM_LN 886
68#define NUM_OBJ 806 68#define NUM_OBJ 840
69 69
70static unsigned char lvalues[5722]={ 70static const unsigned char lvalues[5824]={
710x00, /* [ 0] OBJ_undef */ 710x00, /* [ 0] OBJ_undef */
720x2A,0x86,0x48,0x86,0xF7,0x0D, /* [ 1] OBJ_rsadsi */ 720x2A,0x86,0x48,0x86,0xF7,0x0D, /* [ 1] OBJ_rsadsi */
730x2A,0x86,0x48,0x86,0xF7,0x0D,0x01, /* [ 7] OBJ_pkcs */ 730x2A,0x86,0x48,0x86,0xF7,0x0D,0x01, /* [ 7] OBJ_pkcs */
@@ -707,7 +707,7 @@ static unsigned char lvalues[5722]={
7070x2B, /* [4582] OBJ_identified_organization */ 7070x2B, /* [4582] OBJ_identified_organization */
7080x2B,0x81,0x04, /* [4583] OBJ_certicom_arc */ 7080x2B,0x81,0x04, /* [4583] OBJ_certicom_arc */
7090x67,0x2B, /* [4586] OBJ_wap */ 7090x67,0x2B, /* [4586] OBJ_wap */
7100x67,0x2B,0x0D, /* [4588] OBJ_wap_wsg */ 7100x67,0x2B,0x01, /* [4588] OBJ_wap_wsg */
7110x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03, /* [4591] OBJ_X9_62_id_characteristic_two_basis */ 7110x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03, /* [4591] OBJ_X9_62_id_characteristic_two_basis */
7120x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03,0x01,/* [4599] OBJ_X9_62_onBasis */ 7120x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03,0x01,/* [4599] OBJ_X9_62_onBasis */
7130x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03,0x02,/* [4608] OBJ_X9_62_tpBasis */ 7130x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03,0x02,/* [4608] OBJ_X9_62_tpBasis */
@@ -763,17 +763,17 @@ static unsigned char lvalues[5722]={
7630x2B,0x81,0x04,0x00,0x25, /* [4926] OBJ_sect409r1 */ 7630x2B,0x81,0x04,0x00,0x25, /* [4926] OBJ_sect409r1 */
7640x2B,0x81,0x04,0x00,0x26, /* [4931] OBJ_sect571k1 */ 7640x2B,0x81,0x04,0x00,0x26, /* [4931] OBJ_sect571k1 */
7650x2B,0x81,0x04,0x00,0x27, /* [4936] OBJ_sect571r1 */ 7650x2B,0x81,0x04,0x00,0x27, /* [4936] OBJ_sect571r1 */
7660x67,0x2B,0x0D,0x04,0x01, /* [4941] OBJ_wap_wsg_idm_ecid_wtls1 */ 7660x67,0x2B,0x01,0x04,0x01, /* [4941] OBJ_wap_wsg_idm_ecid_wtls1 */
7670x67,0x2B,0x0D,0x04,0x03, /* [4946] OBJ_wap_wsg_idm_ecid_wtls3 */ 7670x67,0x2B,0x01,0x04,0x03, /* [4946] OBJ_wap_wsg_idm_ecid_wtls3 */
7680x67,0x2B,0x0D,0x04,0x04, /* [4951] OBJ_wap_wsg_idm_ecid_wtls4 */ 7680x67,0x2B,0x01,0x04,0x04, /* [4951] OBJ_wap_wsg_idm_ecid_wtls4 */
7690x67,0x2B,0x0D,0x04,0x05, /* [4956] OBJ_wap_wsg_idm_ecid_wtls5 */ 7690x67,0x2B,0x01,0x04,0x05, /* [4956] OBJ_wap_wsg_idm_ecid_wtls5 */
7700x67,0x2B,0x0D,0x04,0x06, /* [4961] OBJ_wap_wsg_idm_ecid_wtls6 */ 7700x67,0x2B,0x01,0x04,0x06, /* [4961] OBJ_wap_wsg_idm_ecid_wtls6 */
7710x67,0x2B,0x0D,0x04,0x07, /* [4966] OBJ_wap_wsg_idm_ecid_wtls7 */ 7710x67,0x2B,0x01,0x04,0x07, /* [4966] OBJ_wap_wsg_idm_ecid_wtls7 */
7720x67,0x2B,0x0D,0x04,0x08, /* [4971] OBJ_wap_wsg_idm_ecid_wtls8 */ 7720x67,0x2B,0x01,0x04,0x08, /* [4971] OBJ_wap_wsg_idm_ecid_wtls8 */
7730x67,0x2B,0x0D,0x04,0x09, /* [4976] OBJ_wap_wsg_idm_ecid_wtls9 */ 7730x67,0x2B,0x01,0x04,0x09, /* [4976] OBJ_wap_wsg_idm_ecid_wtls9 */
7740x67,0x2B,0x0D,0x04,0x0A, /* [4981] OBJ_wap_wsg_idm_ecid_wtls10 */ 7740x67,0x2B,0x01,0x04,0x0A, /* [4981] OBJ_wap_wsg_idm_ecid_wtls10 */
7750x67,0x2B,0x0D,0x04,0x0B, /* [4986] OBJ_wap_wsg_idm_ecid_wtls11 */ 7750x67,0x2B,0x01,0x04,0x0B, /* [4986] OBJ_wap_wsg_idm_ecid_wtls11 */
7760x67,0x2B,0x0D,0x04,0x0C, /* [4991] OBJ_wap_wsg_idm_ecid_wtls12 */ 7760x67,0x2B,0x01,0x04,0x0C, /* [4991] OBJ_wap_wsg_idm_ecid_wtls12 */
7770x55,0x1D,0x20,0x00, /* [4996] OBJ_any_policy */ 7770x55,0x1D,0x20,0x00, /* [4996] OBJ_any_policy */
7780x55,0x1D,0x21, /* [5000] OBJ_policy_mappings */ 7780x55,0x1D,0x21, /* [5000] OBJ_policy_mappings */
7790x55,0x1D,0x36, /* [5003] OBJ_inhibit_any_policy */ 7790x55,0x1D,0x36, /* [5003] OBJ_inhibit_any_policy */
@@ -874,9 +874,43 @@ static unsigned char lvalues[5722]={
8740x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x11,0x02,/* [5701] OBJ_LocalKeySet */ 8740x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x11,0x02,/* [5701] OBJ_LocalKeySet */
8750x55,0x1D,0x2E, /* [5710] OBJ_freshest_crl */ 8750x55,0x1D,0x2E, /* [5710] OBJ_freshest_crl */
8760x2B,0x06,0x01,0x05,0x05,0x07,0x08,0x03, /* [5713] OBJ_id_on_permanentIdentifier */ 8760x2B,0x06,0x01,0x05,0x05,0x07,0x08,0x03, /* [5713] OBJ_id_on_permanentIdentifier */
8770x55,0x04,0x0E, /* [5721] OBJ_searchGuide */
8780x55,0x04,0x0F, /* [5724] OBJ_businessCategory */
8790x55,0x04,0x10, /* [5727] OBJ_postalAddress */
8800x55,0x04,0x12, /* [5730] OBJ_postOfficeBox */
8810x55,0x04,0x13, /* [5733] OBJ_physicalDeliveryOfficeName */
8820x55,0x04,0x14, /* [5736] OBJ_telephoneNumber */
8830x55,0x04,0x15, /* [5739] OBJ_telexNumber */
8840x55,0x04,0x16, /* [5742] OBJ_teletexTerminalIdentifier */
8850x55,0x04,0x17, /* [5745] OBJ_facsimileTelephoneNumber */
8860x55,0x04,0x18, /* [5748] OBJ_x121Address */
8870x55,0x04,0x19, /* [5751] OBJ_internationaliSDNNumber */
8880x55,0x04,0x1A, /* [5754] OBJ_registeredAddress */
8890x55,0x04,0x1B, /* [5757] OBJ_destinationIndicator */
8900x55,0x04,0x1C, /* [5760] OBJ_preferredDeliveryMethod */
8910x55,0x04,0x1D, /* [5763] OBJ_presentationAddress */
8920x55,0x04,0x1E, /* [5766] OBJ_supportedApplicationContext */
8930x55,0x04,0x1F, /* [5769] OBJ_member */
8940x55,0x04,0x20, /* [5772] OBJ_owner */
8950x55,0x04,0x21, /* [5775] OBJ_roleOccupant */
8960x55,0x04,0x22, /* [5778] OBJ_seeAlso */
8970x55,0x04,0x23, /* [5781] OBJ_userPassword */
8980x55,0x04,0x24, /* [5784] OBJ_userCertificate */
8990x55,0x04,0x25, /* [5787] OBJ_cACertificate */
9000x55,0x04,0x26, /* [5790] OBJ_authorityRevocationList */
9010x55,0x04,0x27, /* [5793] OBJ_certificateRevocationList */
9020x55,0x04,0x28, /* [5796] OBJ_crossCertificatePair */
9030x55,0x04,0x2F, /* [5799] OBJ_enhancedSearchGuide */
9040x55,0x04,0x30, /* [5802] OBJ_protocolInformation */
9050x55,0x04,0x31, /* [5805] OBJ_distinguishedName */
9060x55,0x04,0x32, /* [5808] OBJ_uniqueMember */
9070x55,0x04,0x33, /* [5811] OBJ_houseIdentifier */
9080x55,0x04,0x34, /* [5814] OBJ_supportedAlgorithms */
9090x55,0x04,0x35, /* [5817] OBJ_deltaRevocationList */
9100x55,0x04,0x36, /* [5820] OBJ_dmdName */
877}; 911};
878 912
879static ASN1_OBJECT nid_objs[NUM_NID]={ 913static const ASN1_OBJECT nid_objs[NUM_NID]={
880{"UNDEF","undefined",NID_undef,1,&(lvalues[0]),0}, 914{"UNDEF","undefined",NID_undef,1,&(lvalues[0]),0},
881{"rsadsi","RSA Data Security, Inc.",NID_rsadsi,6,&(lvalues[1]),0}, 915{"rsadsi","RSA Data Security, Inc.",NID_rsadsi,6,&(lvalues[1]),0},
882{"pkcs","RSA Data Security, Inc. PKCS",NID_pkcs,7,&(lvalues[7]),0}, 916{"pkcs","RSA Data Security, Inc. PKCS",NID_pkcs,7,&(lvalues[7]),0},
@@ -1928,7 +1962,7 @@ static ASN1_OBJECT nid_objs[NUM_NID]={
1928{"DES-CFB8","des-cfb8",NID_des_cfb8,0,NULL,0}, 1962{"DES-CFB8","des-cfb8",NID_des_cfb8,0,NULL,0},
1929{"DES-EDE3-CFB1","des-ede3-cfb1",NID_des_ede3_cfb1,0,NULL,0}, 1963{"DES-EDE3-CFB1","des-ede3-cfb1",NID_des_ede3_cfb1,0,NULL,0},
1930{"DES-EDE3-CFB8","des-ede3-cfb8",NID_des_ede3_cfb8,0,NULL,0}, 1964{"DES-EDE3-CFB8","des-ede3-cfb8",NID_des_ede3_cfb8,0,NULL,0},
1931{"streetAddress","streetAddress",NID_streetAddress,3,&(lvalues[4462]),0}, 1965{"street","streetAddress",NID_streetAddress,3,&(lvalues[4462]),0},
1932{"postalCode","postalCode",NID_postalCode,3,&(lvalues[4465]),0}, 1966{"postalCode","postalCode",NID_postalCode,3,&(lvalues[4465]),0},
1933{"id-ppl","id-ppl",NID_id_ppl,7,&(lvalues[4468]),0}, 1967{"id-ppl","id-ppl",NID_id_ppl,7,&(lvalues[4468]),0},
1934{"proxyCertInfo","Proxy Certificate Information",NID_proxyCertInfo,8, 1968{"proxyCertInfo","Proxy Certificate Information",NID_proxyCertInfo,8,
@@ -2262,2524 +2296,2681 @@ static ASN1_OBJECT nid_objs[NUM_NID]={
2262 &(lvalues[5710]),0}, 2296 &(lvalues[5710]),0},
2263{"id-on-permanentIdentifier","Permanent Identifier", 2297{"id-on-permanentIdentifier","Permanent Identifier",
2264 NID_id_on_permanentIdentifier,8,&(lvalues[5713]),0}, 2298 NID_id_on_permanentIdentifier,8,&(lvalues[5713]),0},
2299{"searchGuide","searchGuide",NID_searchGuide,3,&(lvalues[5721]),0},
2300{"businessCategory","businessCategory",NID_businessCategory,3,
2301 &(lvalues[5724]),0},
2302{"postalAddress","postalAddress",NID_postalAddress,3,&(lvalues[5727]),0},
2303{"postOfficeBox","postOfficeBox",NID_postOfficeBox,3,&(lvalues[5730]),0},
2304{"physicalDeliveryOfficeName","physicalDeliveryOfficeName",
2305 NID_physicalDeliveryOfficeName,3,&(lvalues[5733]),0},
2306{"telephoneNumber","telephoneNumber",NID_telephoneNumber,3,
2307 &(lvalues[5736]),0},
2308{"telexNumber","telexNumber",NID_telexNumber,3,&(lvalues[5739]),0},
2309{"teletexTerminalIdentifier","teletexTerminalIdentifier",
2310 NID_teletexTerminalIdentifier,3,&(lvalues[5742]),0},
2311{"facsimileTelephoneNumber","facsimileTelephoneNumber",
2312 NID_facsimileTelephoneNumber,3,&(lvalues[5745]),0},
2313{"x121Address","x121Address",NID_x121Address,3,&(lvalues[5748]),0},
2314{"internationaliSDNNumber","internationaliSDNNumber",
2315 NID_internationaliSDNNumber,3,&(lvalues[5751]),0},
2316{"registeredAddress","registeredAddress",NID_registeredAddress,3,
2317 &(lvalues[5754]),0},
2318{"destinationIndicator","destinationIndicator",
2319 NID_destinationIndicator,3,&(lvalues[5757]),0},
2320{"preferredDeliveryMethod","preferredDeliveryMethod",
2321 NID_preferredDeliveryMethod,3,&(lvalues[5760]),0},
2322{"presentationAddress","presentationAddress",NID_presentationAddress,
2323 3,&(lvalues[5763]),0},
2324{"supportedApplicationContext","supportedApplicationContext",
2325 NID_supportedApplicationContext,3,&(lvalues[5766]),0},
2326{"member","member",NID_member,3,&(lvalues[5769]),0},
2327{"owner","owner",NID_owner,3,&(lvalues[5772]),0},
2328{"roleOccupant","roleOccupant",NID_roleOccupant,3,&(lvalues[5775]),0},
2329{"seeAlso","seeAlso",NID_seeAlso,3,&(lvalues[5778]),0},
2330{"userPassword","userPassword",NID_userPassword,3,&(lvalues[5781]),0},
2331{"userCertificate","userCertificate",NID_userCertificate,3,
2332 &(lvalues[5784]),0},
2333{"cACertificate","cACertificate",NID_cACertificate,3,&(lvalues[5787]),0},
2334{"authorityRevocationList","authorityRevocationList",
2335 NID_authorityRevocationList,3,&(lvalues[5790]),0},
2336{"certificateRevocationList","certificateRevocationList",
2337 NID_certificateRevocationList,3,&(lvalues[5793]),0},
2338{"crossCertificatePair","crossCertificatePair",
2339 NID_crossCertificatePair,3,&(lvalues[5796]),0},
2340{"enhancedSearchGuide","enhancedSearchGuide",NID_enhancedSearchGuide,
2341 3,&(lvalues[5799]),0},
2342{"protocolInformation","protocolInformation",NID_protocolInformation,
2343 3,&(lvalues[5802]),0},
2344{"distinguishedName","distinguishedName",NID_distinguishedName,3,
2345 &(lvalues[5805]),0},
2346{"uniqueMember","uniqueMember",NID_uniqueMember,3,&(lvalues[5808]),0},
2347{"houseIdentifier","houseIdentifier",NID_houseIdentifier,3,
2348 &(lvalues[5811]),0},
2349{"supportedAlgorithms","supportedAlgorithms",NID_supportedAlgorithms,
2350 3,&(lvalues[5814]),0},
2351{"deltaRevocationList","deltaRevocationList",NID_deltaRevocationList,
2352 3,&(lvalues[5817]),0},
2353{"dmdName","dmdName",NID_dmdName,3,&(lvalues[5820]),0},
2265}; 2354};
2266 2355
2267static ASN1_OBJECT *sn_objs[NUM_SN]={ 2356static const unsigned int sn_objs[NUM_SN]={
2268&(nid_objs[364]),/* "AD_DVCS" */ 2357364, /* "AD_DVCS" */
2269&(nid_objs[419]),/* "AES-128-CBC" */ 2358419, /* "AES-128-CBC" */
2270&(nid_objs[421]),/* "AES-128-CFB" */ 2359421, /* "AES-128-CFB" */
2271&(nid_objs[650]),/* "AES-128-CFB1" */ 2360650, /* "AES-128-CFB1" */
2272&(nid_objs[653]),/* "AES-128-CFB8" */ 2361653, /* "AES-128-CFB8" */
2273&(nid_objs[418]),/* "AES-128-ECB" */ 2362418, /* "AES-128-ECB" */
2274&(nid_objs[420]),/* "AES-128-OFB" */ 2363420, /* "AES-128-OFB" */
2275&(nid_objs[423]),/* "AES-192-CBC" */ 2364423, /* "AES-192-CBC" */
2276&(nid_objs[425]),/* "AES-192-CFB" */ 2365425, /* "AES-192-CFB" */
2277&(nid_objs[651]),/* "AES-192-CFB1" */ 2366651, /* "AES-192-CFB1" */
2278&(nid_objs[654]),/* "AES-192-CFB8" */ 2367654, /* "AES-192-CFB8" */
2279&(nid_objs[422]),/* "AES-192-ECB" */ 2368422, /* "AES-192-ECB" */
2280&(nid_objs[424]),/* "AES-192-OFB" */ 2369424, /* "AES-192-OFB" */
2281&(nid_objs[427]),/* "AES-256-CBC" */ 2370427, /* "AES-256-CBC" */
2282&(nid_objs[429]),/* "AES-256-CFB" */ 2371429, /* "AES-256-CFB" */
2283&(nid_objs[652]),/* "AES-256-CFB1" */ 2372652, /* "AES-256-CFB1" */
2284&(nid_objs[655]),/* "AES-256-CFB8" */ 2373655, /* "AES-256-CFB8" */
2285&(nid_objs[426]),/* "AES-256-ECB" */ 2374426, /* "AES-256-ECB" */
2286&(nid_objs[428]),/* "AES-256-OFB" */ 2375428, /* "AES-256-OFB" */
2287&(nid_objs[91]),/* "BF-CBC" */ 237691, /* "BF-CBC" */
2288&(nid_objs[93]),/* "BF-CFB" */ 237793, /* "BF-CFB" */
2289&(nid_objs[92]),/* "BF-ECB" */ 237892, /* "BF-ECB" */
2290&(nid_objs[94]),/* "BF-OFB" */ 237994, /* "BF-OFB" */
2291&(nid_objs[14]),/* "C" */ 238014, /* "C" */
2292&(nid_objs[751]),/* "CAMELLIA-128-CBC" */ 2381751, /* "CAMELLIA-128-CBC" */
2293&(nid_objs[757]),/* "CAMELLIA-128-CFB" */ 2382757, /* "CAMELLIA-128-CFB" */
2294&(nid_objs[760]),/* "CAMELLIA-128-CFB1" */ 2383760, /* "CAMELLIA-128-CFB1" */
2295&(nid_objs[763]),/* "CAMELLIA-128-CFB8" */ 2384763, /* "CAMELLIA-128-CFB8" */
2296&(nid_objs[754]),/* "CAMELLIA-128-ECB" */ 2385754, /* "CAMELLIA-128-ECB" */
2297&(nid_objs[766]),/* "CAMELLIA-128-OFB" */ 2386766, /* "CAMELLIA-128-OFB" */
2298&(nid_objs[752]),/* "CAMELLIA-192-CBC" */ 2387752, /* "CAMELLIA-192-CBC" */
2299&(nid_objs[758]),/* "CAMELLIA-192-CFB" */ 2388758, /* "CAMELLIA-192-CFB" */
2300&(nid_objs[761]),/* "CAMELLIA-192-CFB1" */ 2389761, /* "CAMELLIA-192-CFB1" */
2301&(nid_objs[764]),/* "CAMELLIA-192-CFB8" */ 2390764, /* "CAMELLIA-192-CFB8" */
2302&(nid_objs[755]),/* "CAMELLIA-192-ECB" */ 2391755, /* "CAMELLIA-192-ECB" */
2303&(nid_objs[767]),/* "CAMELLIA-192-OFB" */ 2392767, /* "CAMELLIA-192-OFB" */
2304&(nid_objs[753]),/* "CAMELLIA-256-CBC" */ 2393753, /* "CAMELLIA-256-CBC" */
2305&(nid_objs[759]),/* "CAMELLIA-256-CFB" */ 2394759, /* "CAMELLIA-256-CFB" */
2306&(nid_objs[762]),/* "CAMELLIA-256-CFB1" */ 2395762, /* "CAMELLIA-256-CFB1" */
2307&(nid_objs[765]),/* "CAMELLIA-256-CFB8" */ 2396765, /* "CAMELLIA-256-CFB8" */
2308&(nid_objs[756]),/* "CAMELLIA-256-ECB" */ 2397756, /* "CAMELLIA-256-ECB" */
2309&(nid_objs[768]),/* "CAMELLIA-256-OFB" */ 2398768, /* "CAMELLIA-256-OFB" */
2310&(nid_objs[108]),/* "CAST5-CBC" */ 2399108, /* "CAST5-CBC" */
2311&(nid_objs[110]),/* "CAST5-CFB" */ 2400110, /* "CAST5-CFB" */
2312&(nid_objs[109]),/* "CAST5-ECB" */ 2401109, /* "CAST5-ECB" */
2313&(nid_objs[111]),/* "CAST5-OFB" */ 2402111, /* "CAST5-OFB" */
2314&(nid_objs[13]),/* "CN" */ 240313, /* "CN" */
2315&(nid_objs[141]),/* "CRLReason" */ 2404141, /* "CRLReason" */
2316&(nid_objs[417]),/* "CSPName" */ 2405417, /* "CSPName" */
2317&(nid_objs[367]),/* "CrlID" */ 2406367, /* "CrlID" */
2318&(nid_objs[391]),/* "DC" */ 2407391, /* "DC" */
2319&(nid_objs[31]),/* "DES-CBC" */ 240831, /* "DES-CBC" */
2320&(nid_objs[643]),/* "DES-CDMF" */ 2409643, /* "DES-CDMF" */
2321&(nid_objs[30]),/* "DES-CFB" */ 241030, /* "DES-CFB" */
2322&(nid_objs[656]),/* "DES-CFB1" */ 2411656, /* "DES-CFB1" */
2323&(nid_objs[657]),/* "DES-CFB8" */ 2412657, /* "DES-CFB8" */
2324&(nid_objs[29]),/* "DES-ECB" */ 241329, /* "DES-ECB" */
2325&(nid_objs[32]),/* "DES-EDE" */ 241432, /* "DES-EDE" */
2326&(nid_objs[43]),/* "DES-EDE-CBC" */ 241543, /* "DES-EDE-CBC" */
2327&(nid_objs[60]),/* "DES-EDE-CFB" */ 241660, /* "DES-EDE-CFB" */
2328&(nid_objs[62]),/* "DES-EDE-OFB" */ 241762, /* "DES-EDE-OFB" */
2329&(nid_objs[33]),/* "DES-EDE3" */ 241833, /* "DES-EDE3" */
2330&(nid_objs[44]),/* "DES-EDE3-CBC" */ 241944, /* "DES-EDE3-CBC" */
2331&(nid_objs[61]),/* "DES-EDE3-CFB" */ 242061, /* "DES-EDE3-CFB" */
2332&(nid_objs[658]),/* "DES-EDE3-CFB1" */ 2421658, /* "DES-EDE3-CFB1" */
2333&(nid_objs[659]),/* "DES-EDE3-CFB8" */ 2422659, /* "DES-EDE3-CFB8" */
2334&(nid_objs[63]),/* "DES-EDE3-OFB" */ 242363, /* "DES-EDE3-OFB" */
2335&(nid_objs[45]),/* "DES-OFB" */ 242445, /* "DES-OFB" */
2336&(nid_objs[80]),/* "DESX-CBC" */ 242580, /* "DESX-CBC" */
2337&(nid_objs[380]),/* "DOD" */ 2426380, /* "DOD" */
2338&(nid_objs[116]),/* "DSA" */ 2427116, /* "DSA" */
2339&(nid_objs[66]),/* "DSA-SHA" */ 242866, /* "DSA-SHA" */
2340&(nid_objs[113]),/* "DSA-SHA1" */ 2429113, /* "DSA-SHA1" */
2341&(nid_objs[70]),/* "DSA-SHA1-old" */ 243070, /* "DSA-SHA1-old" */
2342&(nid_objs[67]),/* "DSA-old" */ 243167, /* "DSA-old" */
2343&(nid_objs[297]),/* "DVCS" */ 2432297, /* "DVCS" */
2344&(nid_objs[99]),/* "GN" */ 243399, /* "GN" */
2345&(nid_objs[855]),/* "HMAC" */ 2434855, /* "HMAC" */
2346&(nid_objs[780]),/* "HMAC-MD5" */ 2435780, /* "HMAC-MD5" */
2347&(nid_objs[781]),/* "HMAC-SHA1" */ 2436781, /* "HMAC-SHA1" */
2348&(nid_objs[381]),/* "IANA" */ 2437381, /* "IANA" */
2349&(nid_objs[34]),/* "IDEA-CBC" */ 243834, /* "IDEA-CBC" */
2350&(nid_objs[35]),/* "IDEA-CFB" */ 243935, /* "IDEA-CFB" */
2351&(nid_objs[36]),/* "IDEA-ECB" */ 244036, /* "IDEA-ECB" */
2352&(nid_objs[46]),/* "IDEA-OFB" */ 244146, /* "IDEA-OFB" */
2353&(nid_objs[181]),/* "ISO" */ 2442181, /* "ISO" */
2354&(nid_objs[183]),/* "ISO-US" */ 2443183, /* "ISO-US" */
2355&(nid_objs[645]),/* "ITU-T" */ 2444645, /* "ITU-T" */
2356&(nid_objs[646]),/* "JOINT-ISO-ITU-T" */ 2445646, /* "JOINT-ISO-ITU-T" */
2357&(nid_objs[773]),/* "KISA" */ 2446773, /* "KISA" */
2358&(nid_objs[15]),/* "L" */ 244715, /* "L" */
2359&(nid_objs[856]),/* "LocalKeySet" */ 2448856, /* "LocalKeySet" */
2360&(nid_objs[ 3]),/* "MD2" */ 2449 3, /* "MD2" */
2361&(nid_objs[257]),/* "MD4" */ 2450257, /* "MD4" */
2362&(nid_objs[ 4]),/* "MD5" */ 2451 4, /* "MD5" */
2363&(nid_objs[114]),/* "MD5-SHA1" */ 2452114, /* "MD5-SHA1" */
2364&(nid_objs[95]),/* "MDC2" */ 245395, /* "MDC2" */
2365&(nid_objs[388]),/* "Mail" */ 2454388, /* "Mail" */
2366&(nid_objs[393]),/* "NULL" */ 2455393, /* "NULL" */
2367&(nid_objs[404]),/* "NULL" */ 2456404, /* "NULL" */
2368&(nid_objs[57]),/* "Netscape" */ 245757, /* "Netscape" */
2369&(nid_objs[366]),/* "Nonce" */ 2458366, /* "Nonce" */
2370&(nid_objs[17]),/* "O" */ 245917, /* "O" */
2371&(nid_objs[178]),/* "OCSP" */ 2460178, /* "OCSP" */
2372&(nid_objs[180]),/* "OCSPSigning" */ 2461180, /* "OCSPSigning" */
2373&(nid_objs[379]),/* "ORG" */ 2462379, /* "ORG" */
2374&(nid_objs[18]),/* "OU" */ 246318, /* "OU" */
2375&(nid_objs[749]),/* "Oakley-EC2N-3" */ 2464749, /* "Oakley-EC2N-3" */
2376&(nid_objs[750]),/* "Oakley-EC2N-4" */ 2465750, /* "Oakley-EC2N-4" */
2377&(nid_objs[ 9]),/* "PBE-MD2-DES" */ 2466 9, /* "PBE-MD2-DES" */
2378&(nid_objs[168]),/* "PBE-MD2-RC2-64" */ 2467168, /* "PBE-MD2-RC2-64" */
2379&(nid_objs[10]),/* "PBE-MD5-DES" */ 246810, /* "PBE-MD5-DES" */
2380&(nid_objs[169]),/* "PBE-MD5-RC2-64" */ 2469169, /* "PBE-MD5-RC2-64" */
2381&(nid_objs[147]),/* "PBE-SHA1-2DES" */ 2470147, /* "PBE-SHA1-2DES" */
2382&(nid_objs[146]),/* "PBE-SHA1-3DES" */ 2471146, /* "PBE-SHA1-3DES" */
2383&(nid_objs[170]),/* "PBE-SHA1-DES" */ 2472170, /* "PBE-SHA1-DES" */
2384&(nid_objs[148]),/* "PBE-SHA1-RC2-128" */ 2473148, /* "PBE-SHA1-RC2-128" */
2385&(nid_objs[149]),/* "PBE-SHA1-RC2-40" */ 2474149, /* "PBE-SHA1-RC2-40" */
2386&(nid_objs[68]),/* "PBE-SHA1-RC2-64" */ 247568, /* "PBE-SHA1-RC2-64" */
2387&(nid_objs[144]),/* "PBE-SHA1-RC4-128" */ 2476144, /* "PBE-SHA1-RC4-128" */
2388&(nid_objs[145]),/* "PBE-SHA1-RC4-40" */ 2477145, /* "PBE-SHA1-RC4-40" */
2389&(nid_objs[161]),/* "PBES2" */ 2478161, /* "PBES2" */
2390&(nid_objs[69]),/* "PBKDF2" */ 247969, /* "PBKDF2" */
2391&(nid_objs[162]),/* "PBMAC1" */ 2480162, /* "PBMAC1" */
2392&(nid_objs[127]),/* "PKIX" */ 2481127, /* "PKIX" */
2393&(nid_objs[98]),/* "RC2-40-CBC" */ 248298, /* "RC2-40-CBC" */
2394&(nid_objs[166]),/* "RC2-64-CBC" */ 2483166, /* "RC2-64-CBC" */
2395&(nid_objs[37]),/* "RC2-CBC" */ 248437, /* "RC2-CBC" */
2396&(nid_objs[39]),/* "RC2-CFB" */ 248539, /* "RC2-CFB" */
2397&(nid_objs[38]),/* "RC2-ECB" */ 248638, /* "RC2-ECB" */
2398&(nid_objs[40]),/* "RC2-OFB" */ 248740, /* "RC2-OFB" */
2399&(nid_objs[ 5]),/* "RC4" */ 2488 5, /* "RC4" */
2400&(nid_objs[97]),/* "RC4-40" */ 248997, /* "RC4-40" */
2401&(nid_objs[120]),/* "RC5-CBC" */ 2490120, /* "RC5-CBC" */
2402&(nid_objs[122]),/* "RC5-CFB" */ 2491122, /* "RC5-CFB" */
2403&(nid_objs[121]),/* "RC5-ECB" */ 2492121, /* "RC5-ECB" */
2404&(nid_objs[123]),/* "RC5-OFB" */ 2493123, /* "RC5-OFB" */
2405&(nid_objs[117]),/* "RIPEMD160" */ 2494117, /* "RIPEMD160" */
2406&(nid_objs[124]),/* "RLE" */ 2495124, /* "RLE" */
2407&(nid_objs[19]),/* "RSA" */ 249619, /* "RSA" */
2408&(nid_objs[ 7]),/* "RSA-MD2" */ 2497 7, /* "RSA-MD2" */
2409&(nid_objs[396]),/* "RSA-MD4" */ 2498396, /* "RSA-MD4" */
2410&(nid_objs[ 8]),/* "RSA-MD5" */ 2499 8, /* "RSA-MD5" */
2411&(nid_objs[96]),/* "RSA-MDC2" */ 250096, /* "RSA-MDC2" */
2412&(nid_objs[104]),/* "RSA-NP-MD5" */ 2501104, /* "RSA-NP-MD5" */
2413&(nid_objs[119]),/* "RSA-RIPEMD160" */ 2502119, /* "RSA-RIPEMD160" */
2414&(nid_objs[42]),/* "RSA-SHA" */ 250342, /* "RSA-SHA" */
2415&(nid_objs[65]),/* "RSA-SHA1" */ 250465, /* "RSA-SHA1" */
2416&(nid_objs[115]),/* "RSA-SHA1-2" */ 2505115, /* "RSA-SHA1-2" */
2417&(nid_objs[671]),/* "RSA-SHA224" */ 2506671, /* "RSA-SHA224" */
2418&(nid_objs[668]),/* "RSA-SHA256" */ 2507668, /* "RSA-SHA256" */
2419&(nid_objs[669]),/* "RSA-SHA384" */ 2508669, /* "RSA-SHA384" */
2420&(nid_objs[670]),/* "RSA-SHA512" */ 2509670, /* "RSA-SHA512" */
2421&(nid_objs[777]),/* "SEED-CBC" */ 2510777, /* "SEED-CBC" */
2422&(nid_objs[779]),/* "SEED-CFB" */ 2511779, /* "SEED-CFB" */
2423&(nid_objs[776]),/* "SEED-ECB" */ 2512776, /* "SEED-ECB" */
2424&(nid_objs[778]),/* "SEED-OFB" */ 2513778, /* "SEED-OFB" */
2425&(nid_objs[41]),/* "SHA" */ 251441, /* "SHA" */
2426&(nid_objs[64]),/* "SHA1" */ 251564, /* "SHA1" */
2427&(nid_objs[675]),/* "SHA224" */ 2516675, /* "SHA224" */
2428&(nid_objs[672]),/* "SHA256" */ 2517672, /* "SHA256" */
2429&(nid_objs[673]),/* "SHA384" */ 2518673, /* "SHA384" */
2430&(nid_objs[674]),/* "SHA512" */ 2519674, /* "SHA512" */
2431&(nid_objs[188]),/* "SMIME" */ 2520188, /* "SMIME" */
2432&(nid_objs[167]),/* "SMIME-CAPS" */ 2521167, /* "SMIME-CAPS" */
2433&(nid_objs[100]),/* "SN" */ 2522100, /* "SN" */
2434&(nid_objs[16]),/* "ST" */ 252316, /* "ST" */
2435&(nid_objs[143]),/* "SXNetID" */ 2524143, /* "SXNetID" */
2436&(nid_objs[458]),/* "UID" */ 2525458, /* "UID" */
2437&(nid_objs[ 0]),/* "UNDEF" */ 2526 0, /* "UNDEF" */
2438&(nid_objs[11]),/* "X500" */ 252711, /* "X500" */
2439&(nid_objs[378]),/* "X500algorithms" */ 2528378, /* "X500algorithms" */
2440&(nid_objs[12]),/* "X509" */ 252912, /* "X509" */
2441&(nid_objs[184]),/* "X9-57" */ 2530184, /* "X9-57" */
2442&(nid_objs[185]),/* "X9cm" */ 2531185, /* "X9cm" */
2443&(nid_objs[125]),/* "ZLIB" */ 2532125, /* "ZLIB" */
2444&(nid_objs[478]),/* "aRecord" */ 2533478, /* "aRecord" */
2445&(nid_objs[289]),/* "aaControls" */ 2534289, /* "aaControls" */
2446&(nid_objs[287]),/* "ac-auditEntity" */ 2535287, /* "ac-auditEntity" */
2447&(nid_objs[397]),/* "ac-proxying" */ 2536397, /* "ac-proxying" */
2448&(nid_objs[288]),/* "ac-targeting" */ 2537288, /* "ac-targeting" */
2449&(nid_objs[368]),/* "acceptableResponses" */ 2538368, /* "acceptableResponses" */
2450&(nid_objs[446]),/* "account" */ 2539446, /* "account" */
2451&(nid_objs[363]),/* "ad_timestamping" */ 2540363, /* "ad_timestamping" */
2452&(nid_objs[376]),/* "algorithm" */ 2541376, /* "algorithm" */
2453&(nid_objs[405]),/* "ansi-X9-62" */ 2542405, /* "ansi-X9-62" */
2454&(nid_objs[746]),/* "anyPolicy" */ 2543746, /* "anyPolicy" */
2455&(nid_objs[370]),/* "archiveCutoff" */ 2544370, /* "archiveCutoff" */
2456&(nid_objs[484]),/* "associatedDomain" */ 2545484, /* "associatedDomain" */
2457&(nid_objs[485]),/* "associatedName" */ 2546485, /* "associatedName" */
2458&(nid_objs[501]),/* "audio" */ 2547501, /* "audio" */
2459&(nid_objs[177]),/* "authorityInfoAccess" */ 2548177, /* "authorityInfoAccess" */
2460&(nid_objs[90]),/* "authorityKeyIdentifier" */ 254990, /* "authorityKeyIdentifier" */
2461&(nid_objs[87]),/* "basicConstraints" */ 2550882, /* "authorityRevocationList" */
2462&(nid_objs[365]),/* "basicOCSPResponse" */ 255187, /* "basicConstraints" */
2463&(nid_objs[285]),/* "biometricInfo" */ 2552365, /* "basicOCSPResponse" */
2464&(nid_objs[494]),/* "buildingName" */ 2553285, /* "biometricInfo" */
2465&(nid_objs[691]),/* "c2onb191v4" */ 2554494, /* "buildingName" */
2466&(nid_objs[692]),/* "c2onb191v5" */ 2555860, /* "businessCategory" */
2467&(nid_objs[697]),/* "c2onb239v4" */ 2556691, /* "c2onb191v4" */
2468&(nid_objs[698]),/* "c2onb239v5" */ 2557692, /* "c2onb191v5" */
2469&(nid_objs[684]),/* "c2pnb163v1" */ 2558697, /* "c2onb239v4" */
2470&(nid_objs[685]),/* "c2pnb163v2" */ 2559698, /* "c2onb239v5" */
2471&(nid_objs[686]),/* "c2pnb163v3" */ 2560684, /* "c2pnb163v1" */
2472&(nid_objs[687]),/* "c2pnb176v1" */ 2561685, /* "c2pnb163v2" */
2473&(nid_objs[693]),/* "c2pnb208w1" */ 2562686, /* "c2pnb163v3" */
2474&(nid_objs[699]),/* "c2pnb272w1" */ 2563687, /* "c2pnb176v1" */
2475&(nid_objs[700]),/* "c2pnb304w1" */ 2564693, /* "c2pnb208w1" */
2476&(nid_objs[702]),/* "c2pnb368w1" */ 2565699, /* "c2pnb272w1" */
2477&(nid_objs[688]),/* "c2tnb191v1" */ 2566700, /* "c2pnb304w1" */
2478&(nid_objs[689]),/* "c2tnb191v2" */ 2567702, /* "c2pnb368w1" */
2479&(nid_objs[690]),/* "c2tnb191v3" */ 2568688, /* "c2tnb191v1" */
2480&(nid_objs[694]),/* "c2tnb239v1" */ 2569689, /* "c2tnb191v2" */
2481&(nid_objs[695]),/* "c2tnb239v2" */ 2570690, /* "c2tnb191v3" */
2482&(nid_objs[696]),/* "c2tnb239v3" */ 2571694, /* "c2tnb239v1" */
2483&(nid_objs[701]),/* "c2tnb359v1" */ 2572695, /* "c2tnb239v2" */
2484&(nid_objs[703]),/* "c2tnb431r1" */ 2573696, /* "c2tnb239v3" */
2485&(nid_objs[483]),/* "cNAMERecord" */ 2574701, /* "c2tnb359v1" */
2486&(nid_objs[179]),/* "caIssuers" */ 2575703, /* "c2tnb431r1" */
2487&(nid_objs[785]),/* "caRepository" */ 2576881, /* "cACertificate" */
2488&(nid_objs[443]),/* "caseIgnoreIA5StringSyntax" */ 2577483, /* "cNAMERecord" */
2489&(nid_objs[152]),/* "certBag" */ 2578179, /* "caIssuers" */
2490&(nid_objs[677]),/* "certicom-arc" */ 2579785, /* "caRepository" */
2491&(nid_objs[771]),/* "certificateIssuer" */ 2580443, /* "caseIgnoreIA5StringSyntax" */
2492&(nid_objs[89]),/* "certificatePolicies" */ 2581152, /* "certBag" */
2493&(nid_objs[54]),/* "challengePassword" */ 2582677, /* "certicom-arc" */
2494&(nid_objs[407]),/* "characteristic-two-field" */ 2583771, /* "certificateIssuer" */
2495&(nid_objs[395]),/* "clearance" */ 258489, /* "certificatePolicies" */
2496&(nid_objs[130]),/* "clientAuth" */ 2585883, /* "certificateRevocationList" */
2497&(nid_objs[131]),/* "codeSigning" */ 258654, /* "challengePassword" */
2498&(nid_objs[50]),/* "contentType" */ 2587407, /* "characteristic-two-field" */
2499&(nid_objs[53]),/* "countersignature" */ 2588395, /* "clearance" */
2500&(nid_objs[153]),/* "crlBag" */ 2589130, /* "clientAuth" */
2501&(nid_objs[103]),/* "crlDistributionPoints" */ 2590131, /* "codeSigning" */
2502&(nid_objs[88]),/* "crlNumber" */ 259150, /* "contentType" */
2503&(nid_objs[806]),/* "cryptocom" */ 259253, /* "countersignature" */
2504&(nid_objs[805]),/* "cryptopro" */ 2593153, /* "crlBag" */
2505&(nid_objs[500]),/* "dITRedirect" */ 2594103, /* "crlDistributionPoints" */
2506&(nid_objs[451]),/* "dNSDomain" */ 259588, /* "crlNumber" */
2507&(nid_objs[495]),/* "dSAQuality" */ 2596884, /* "crossCertificatePair" */
2508&(nid_objs[434]),/* "data" */ 2597806, /* "cryptocom" */
2509&(nid_objs[390]),/* "dcobject" */ 2598805, /* "cryptopro" */
2510&(nid_objs[140]),/* "deltaCRL" */ 2599500, /* "dITRedirect" */
2511&(nid_objs[107]),/* "description" */ 2600451, /* "dNSDomain" */
2512&(nid_objs[28]),/* "dhKeyAgreement" */ 2601495, /* "dSAQuality" */
2513&(nid_objs[382]),/* "directory" */ 2602434, /* "data" */
2514&(nid_objs[174]),/* "dnQualifier" */ 2603390, /* "dcobject" */
2515&(nid_objs[447]),/* "document" */ 2604140, /* "deltaCRL" */
2516&(nid_objs[471]),/* "documentAuthor" */ 2605891, /* "deltaRevocationList" */
2517&(nid_objs[468]),/* "documentIdentifier" */ 2606107, /* "description" */
2518&(nid_objs[472]),/* "documentLocation" */ 2607871, /* "destinationIndicator" */
2519&(nid_objs[502]),/* "documentPublisher" */ 260828, /* "dhKeyAgreement" */
2520&(nid_objs[449]),/* "documentSeries" */ 2609382, /* "directory" */
2521&(nid_objs[469]),/* "documentTitle" */ 2610887, /* "distinguishedName" */
2522&(nid_objs[470]),/* "documentVersion" */ 2611892, /* "dmdName" */
2523&(nid_objs[392]),/* "domain" */ 2612174, /* "dnQualifier" */
2524&(nid_objs[452]),/* "domainRelatedObject" */ 2613447, /* "document" */
2525&(nid_objs[802]),/* "dsa_with_SHA224" */ 2614471, /* "documentAuthor" */
2526&(nid_objs[803]),/* "dsa_with_SHA256" */ 2615468, /* "documentIdentifier" */
2527&(nid_objs[791]),/* "ecdsa-with-Recommended" */ 2616472, /* "documentLocation" */
2528&(nid_objs[416]),/* "ecdsa-with-SHA1" */ 2617502, /* "documentPublisher" */
2529&(nid_objs[793]),/* "ecdsa-with-SHA224" */ 2618449, /* "documentSeries" */
2530&(nid_objs[794]),/* "ecdsa-with-SHA256" */ 2619469, /* "documentTitle" */
2531&(nid_objs[795]),/* "ecdsa-with-SHA384" */ 2620470, /* "documentVersion" */
2532&(nid_objs[796]),/* "ecdsa-with-SHA512" */ 2621392, /* "domain" */
2533&(nid_objs[792]),/* "ecdsa-with-Specified" */ 2622452, /* "domainRelatedObject" */
2534&(nid_objs[48]),/* "emailAddress" */ 2623802, /* "dsa_with_SHA224" */
2535&(nid_objs[132]),/* "emailProtection" */ 2624803, /* "dsa_with_SHA256" */
2536&(nid_objs[389]),/* "enterprises" */ 2625791, /* "ecdsa-with-Recommended" */
2537&(nid_objs[384]),/* "experimental" */ 2626416, /* "ecdsa-with-SHA1" */
2538&(nid_objs[172]),/* "extReq" */ 2627793, /* "ecdsa-with-SHA224" */
2539&(nid_objs[56]),/* "extendedCertificateAttributes" */ 2628794, /* "ecdsa-with-SHA256" */
2540&(nid_objs[126]),/* "extendedKeyUsage" */ 2629795, /* "ecdsa-with-SHA384" */
2541&(nid_objs[372]),/* "extendedStatus" */ 2630796, /* "ecdsa-with-SHA512" */
2542&(nid_objs[462]),/* "favouriteDrink" */ 2631792, /* "ecdsa-with-Specified" */
2543&(nid_objs[857]),/* "freshestCRL" */ 263248, /* "emailAddress" */
2544&(nid_objs[453]),/* "friendlyCountry" */ 2633132, /* "emailProtection" */
2545&(nid_objs[490]),/* "friendlyCountryName" */ 2634885, /* "enhancedSearchGuide" */
2546&(nid_objs[156]),/* "friendlyName" */ 2635389, /* "enterprises" */
2547&(nid_objs[509]),/* "generationQualifier" */ 2636384, /* "experimental" */
2548&(nid_objs[815]),/* "gost-mac" */ 2637172, /* "extReq" */
2549&(nid_objs[811]),/* "gost2001" */ 263856, /* "extendedCertificateAttributes" */
2550&(nid_objs[851]),/* "gost2001cc" */ 2639126, /* "extendedKeyUsage" */
2551&(nid_objs[813]),/* "gost89" */ 2640372, /* "extendedStatus" */
2552&(nid_objs[814]),/* "gost89-cnt" */ 2641867, /* "facsimileTelephoneNumber" */
2553&(nid_objs[812]),/* "gost94" */ 2642462, /* "favouriteDrink" */
2554&(nid_objs[850]),/* "gost94cc" */ 2643857, /* "freshestCRL" */
2555&(nid_objs[797]),/* "hmacWithMD5" */ 2644453, /* "friendlyCountry" */
2556&(nid_objs[163]),/* "hmacWithSHA1" */ 2645490, /* "friendlyCountryName" */
2557&(nid_objs[798]),/* "hmacWithSHA224" */ 2646156, /* "friendlyName" */
2558&(nid_objs[799]),/* "hmacWithSHA256" */ 2647509, /* "generationQualifier" */
2559&(nid_objs[800]),/* "hmacWithSHA384" */ 2648815, /* "gost-mac" */
2560&(nid_objs[801]),/* "hmacWithSHA512" */ 2649811, /* "gost2001" */
2561&(nid_objs[432]),/* "holdInstructionCallIssuer" */ 2650851, /* "gost2001cc" */
2562&(nid_objs[430]),/* "holdInstructionCode" */ 2651813, /* "gost89" */
2563&(nid_objs[431]),/* "holdInstructionNone" */ 2652814, /* "gost89-cnt" */
2564&(nid_objs[433]),/* "holdInstructionReject" */ 2653812, /* "gost94" */
2565&(nid_objs[486]),/* "homePostalAddress" */ 2654850, /* "gost94cc" */
2566&(nid_objs[473]),/* "homeTelephoneNumber" */ 2655797, /* "hmacWithMD5" */
2567&(nid_objs[466]),/* "host" */ 2656163, /* "hmacWithSHA1" */
2568&(nid_objs[442]),/* "iA5StringSyntax" */ 2657798, /* "hmacWithSHA224" */
2569&(nid_objs[783]),/* "id-DHBasedMac" */ 2658799, /* "hmacWithSHA256" */
2570&(nid_objs[824]),/* "id-Gost28147-89-CryptoPro-A-ParamSet" */ 2659800, /* "hmacWithSHA384" */
2571&(nid_objs[825]),/* "id-Gost28147-89-CryptoPro-B-ParamSet" */ 2660801, /* "hmacWithSHA512" */
2572&(nid_objs[826]),/* "id-Gost28147-89-CryptoPro-C-ParamSet" */ 2661432, /* "holdInstructionCallIssuer" */
2573&(nid_objs[827]),/* "id-Gost28147-89-CryptoPro-D-ParamSet" */ 2662430, /* "holdInstructionCode" */
2574&(nid_objs[819]),/* "id-Gost28147-89-CryptoPro-KeyMeshing" */ 2663431, /* "holdInstructionNone" */
2575&(nid_objs[829]),/* "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" */ 2664433, /* "holdInstructionReject" */
2576&(nid_objs[828]),/* "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" */ 2665486, /* "homePostalAddress" */
2577&(nid_objs[830]),/* "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" */ 2666473, /* "homeTelephoneNumber" */
2578&(nid_objs[820]),/* "id-Gost28147-89-None-KeyMeshing" */ 2667466, /* "host" */
2579&(nid_objs[823]),/* "id-Gost28147-89-TestParamSet" */ 2668889, /* "houseIdentifier" */
2580&(nid_objs[849]),/* "id-Gost28147-89-cc" */ 2669442, /* "iA5StringSyntax" */
2581&(nid_objs[840]),/* "id-GostR3410-2001-CryptoPro-A-ParamSet" */ 2670783, /* "id-DHBasedMac" */
2582&(nid_objs[841]),/* "id-GostR3410-2001-CryptoPro-B-ParamSet" */ 2671824, /* "id-Gost28147-89-CryptoPro-A-ParamSet" */
2583&(nid_objs[842]),/* "id-GostR3410-2001-CryptoPro-C-ParamSet" */ 2672825, /* "id-Gost28147-89-CryptoPro-B-ParamSet" */
2584&(nid_objs[843]),/* "id-GostR3410-2001-CryptoPro-XchA-ParamSet" */ 2673826, /* "id-Gost28147-89-CryptoPro-C-ParamSet" */
2585&(nid_objs[844]),/* "id-GostR3410-2001-CryptoPro-XchB-ParamSet" */ 2674827, /* "id-Gost28147-89-CryptoPro-D-ParamSet" */
2586&(nid_objs[854]),/* "id-GostR3410-2001-ParamSet-cc" */ 2675819, /* "id-Gost28147-89-CryptoPro-KeyMeshing" */
2587&(nid_objs[839]),/* "id-GostR3410-2001-TestParamSet" */ 2676829, /* "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" */
2588&(nid_objs[817]),/* "id-GostR3410-2001DH" */ 2677828, /* "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" */
2589&(nid_objs[832]),/* "id-GostR3410-94-CryptoPro-A-ParamSet" */ 2678830, /* "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" */
2590&(nid_objs[833]),/* "id-GostR3410-94-CryptoPro-B-ParamSet" */ 2679820, /* "id-Gost28147-89-None-KeyMeshing" */
2591&(nid_objs[834]),/* "id-GostR3410-94-CryptoPro-C-ParamSet" */ 2680823, /* "id-Gost28147-89-TestParamSet" */
2592&(nid_objs[835]),/* "id-GostR3410-94-CryptoPro-D-ParamSet" */ 2681849, /* "id-Gost28147-89-cc" */
2593&(nid_objs[836]),/* "id-GostR3410-94-CryptoPro-XchA-ParamSet" */ 2682840, /* "id-GostR3410-2001-CryptoPro-A-ParamSet" */
2594&(nid_objs[837]),/* "id-GostR3410-94-CryptoPro-XchB-ParamSet" */ 2683841, /* "id-GostR3410-2001-CryptoPro-B-ParamSet" */
2595&(nid_objs[838]),/* "id-GostR3410-94-CryptoPro-XchC-ParamSet" */ 2684842, /* "id-GostR3410-2001-CryptoPro-C-ParamSet" */
2596&(nid_objs[831]),/* "id-GostR3410-94-TestParamSet" */ 2685843, /* "id-GostR3410-2001-CryptoPro-XchA-ParamSet" */
2597&(nid_objs[845]),/* "id-GostR3410-94-a" */ 2686844, /* "id-GostR3410-2001-CryptoPro-XchB-ParamSet" */
2598&(nid_objs[846]),/* "id-GostR3410-94-aBis" */ 2687854, /* "id-GostR3410-2001-ParamSet-cc" */
2599&(nid_objs[847]),/* "id-GostR3410-94-b" */ 2688839, /* "id-GostR3410-2001-TestParamSet" */
2600&(nid_objs[848]),/* "id-GostR3410-94-bBis" */ 2689817, /* "id-GostR3410-2001DH" */
2601&(nid_objs[818]),/* "id-GostR3410-94DH" */ 2690832, /* "id-GostR3410-94-CryptoPro-A-ParamSet" */
2602&(nid_objs[822]),/* "id-GostR3411-94-CryptoProParamSet" */ 2691833, /* "id-GostR3410-94-CryptoPro-B-ParamSet" */
2603&(nid_objs[821]),/* "id-GostR3411-94-TestParamSet" */ 2692834, /* "id-GostR3410-94-CryptoPro-C-ParamSet" */
2604&(nid_objs[807]),/* "id-GostR3411-94-with-GostR3410-2001" */ 2693835, /* "id-GostR3410-94-CryptoPro-D-ParamSet" */
2605&(nid_objs[853]),/* "id-GostR3411-94-with-GostR3410-2001-cc" */ 2694836, /* "id-GostR3410-94-CryptoPro-XchA-ParamSet" */
2606&(nid_objs[808]),/* "id-GostR3411-94-with-GostR3410-94" */ 2695837, /* "id-GostR3410-94-CryptoPro-XchB-ParamSet" */
2607&(nid_objs[852]),/* "id-GostR3411-94-with-GostR3410-94-cc" */ 2696838, /* "id-GostR3410-94-CryptoPro-XchC-ParamSet" */
2608&(nid_objs[810]),/* "id-HMACGostR3411-94" */ 2697831, /* "id-GostR3410-94-TestParamSet" */
2609&(nid_objs[782]),/* "id-PasswordBasedMAC" */ 2698845, /* "id-GostR3410-94-a" */
2610&(nid_objs[266]),/* "id-aca" */ 2699846, /* "id-GostR3410-94-aBis" */
2611&(nid_objs[355]),/* "id-aca-accessIdentity" */ 2700847, /* "id-GostR3410-94-b" */
2612&(nid_objs[354]),/* "id-aca-authenticationInfo" */ 2701848, /* "id-GostR3410-94-bBis" */
2613&(nid_objs[356]),/* "id-aca-chargingIdentity" */ 2702818, /* "id-GostR3410-94DH" */
2614&(nid_objs[399]),/* "id-aca-encAttrs" */ 2703822, /* "id-GostR3411-94-CryptoProParamSet" */
2615&(nid_objs[357]),/* "id-aca-group" */ 2704821, /* "id-GostR3411-94-TestParamSet" */
2616&(nid_objs[358]),/* "id-aca-role" */ 2705807, /* "id-GostR3411-94-with-GostR3410-2001" */
2617&(nid_objs[176]),/* "id-ad" */ 2706853, /* "id-GostR3411-94-with-GostR3410-2001-cc" */
2618&(nid_objs[788]),/* "id-aes128-wrap" */ 2707808, /* "id-GostR3411-94-with-GostR3410-94" */
2619&(nid_objs[789]),/* "id-aes192-wrap" */ 2708852, /* "id-GostR3411-94-with-GostR3410-94-cc" */
2620&(nid_objs[790]),/* "id-aes256-wrap" */ 2709810, /* "id-HMACGostR3411-94" */
2621&(nid_objs[262]),/* "id-alg" */ 2710782, /* "id-PasswordBasedMAC" */
2622&(nid_objs[323]),/* "id-alg-des40" */ 2711266, /* "id-aca" */
2623&(nid_objs[326]),/* "id-alg-dh-pop" */ 2712355, /* "id-aca-accessIdentity" */
2624&(nid_objs[325]),/* "id-alg-dh-sig-hmac-sha1" */ 2713354, /* "id-aca-authenticationInfo" */
2625&(nid_objs[324]),/* "id-alg-noSignature" */ 2714356, /* "id-aca-chargingIdentity" */
2626&(nid_objs[268]),/* "id-cct" */ 2715399, /* "id-aca-encAttrs" */
2627&(nid_objs[361]),/* "id-cct-PKIData" */ 2716357, /* "id-aca-group" */
2628&(nid_objs[362]),/* "id-cct-PKIResponse" */ 2717358, /* "id-aca-role" */
2629&(nid_objs[360]),/* "id-cct-crs" */ 2718176, /* "id-ad" */
2630&(nid_objs[81]),/* "id-ce" */ 2719788, /* "id-aes128-wrap" */
2631&(nid_objs[680]),/* "id-characteristic-two-basis" */ 2720789, /* "id-aes192-wrap" */
2632&(nid_objs[263]),/* "id-cmc" */ 2721790, /* "id-aes256-wrap" */
2633&(nid_objs[334]),/* "id-cmc-addExtensions" */ 2722262, /* "id-alg" */
2634&(nid_objs[346]),/* "id-cmc-confirmCertAcceptance" */ 2723323, /* "id-alg-des40" */
2635&(nid_objs[330]),/* "id-cmc-dataReturn" */ 2724326, /* "id-alg-dh-pop" */
2636&(nid_objs[336]),/* "id-cmc-decryptedPOP" */ 2725325, /* "id-alg-dh-sig-hmac-sha1" */
2637&(nid_objs[335]),/* "id-cmc-encryptedPOP" */ 2726324, /* "id-alg-noSignature" */
2638&(nid_objs[339]),/* "id-cmc-getCRL" */ 2727268, /* "id-cct" */
2639&(nid_objs[338]),/* "id-cmc-getCert" */ 2728361, /* "id-cct-PKIData" */
2640&(nid_objs[328]),/* "id-cmc-identification" */ 2729362, /* "id-cct-PKIResponse" */
2641&(nid_objs[329]),/* "id-cmc-identityProof" */ 2730360, /* "id-cct-crs" */
2642&(nid_objs[337]),/* "id-cmc-lraPOPWitness" */ 273181, /* "id-ce" */
2643&(nid_objs[344]),/* "id-cmc-popLinkRandom" */ 2732680, /* "id-characteristic-two-basis" */
2644&(nid_objs[345]),/* "id-cmc-popLinkWitness" */ 2733263, /* "id-cmc" */
2645&(nid_objs[343]),/* "id-cmc-queryPending" */ 2734334, /* "id-cmc-addExtensions" */
2646&(nid_objs[333]),/* "id-cmc-recipientNonce" */ 2735346, /* "id-cmc-confirmCertAcceptance" */
2647&(nid_objs[341]),/* "id-cmc-regInfo" */ 2736330, /* "id-cmc-dataReturn" */
2648&(nid_objs[342]),/* "id-cmc-responseInfo" */ 2737336, /* "id-cmc-decryptedPOP" */
2649&(nid_objs[340]),/* "id-cmc-revokeRequest" */ 2738335, /* "id-cmc-encryptedPOP" */
2650&(nid_objs[332]),/* "id-cmc-senderNonce" */ 2739339, /* "id-cmc-getCRL" */
2651&(nid_objs[327]),/* "id-cmc-statusInfo" */ 2740338, /* "id-cmc-getCert" */
2652&(nid_objs[331]),/* "id-cmc-transactionId" */ 2741328, /* "id-cmc-identification" */
2653&(nid_objs[787]),/* "id-ct-asciiTextWithCRLF" */ 2742329, /* "id-cmc-identityProof" */
2654&(nid_objs[408]),/* "id-ecPublicKey" */ 2743337, /* "id-cmc-lraPOPWitness" */
2655&(nid_objs[508]),/* "id-hex-multipart-message" */ 2744344, /* "id-cmc-popLinkRandom" */
2656&(nid_objs[507]),/* "id-hex-partial-message" */ 2745345, /* "id-cmc-popLinkWitness" */
2657&(nid_objs[260]),/* "id-it" */ 2746343, /* "id-cmc-queryPending" */
2658&(nid_objs[302]),/* "id-it-caKeyUpdateInfo" */ 2747333, /* "id-cmc-recipientNonce" */
2659&(nid_objs[298]),/* "id-it-caProtEncCert" */ 2748341, /* "id-cmc-regInfo" */
2660&(nid_objs[311]),/* "id-it-confirmWaitTime" */ 2749342, /* "id-cmc-responseInfo" */
2661&(nid_objs[303]),/* "id-it-currentCRL" */ 2750340, /* "id-cmc-revokeRequest" */
2662&(nid_objs[300]),/* "id-it-encKeyPairTypes" */ 2751332, /* "id-cmc-senderNonce" */
2663&(nid_objs[310]),/* "id-it-implicitConfirm" */ 2752327, /* "id-cmc-statusInfo" */
2664&(nid_objs[308]),/* "id-it-keyPairParamRep" */ 2753331, /* "id-cmc-transactionId" */
2665&(nid_objs[307]),/* "id-it-keyPairParamReq" */ 2754787, /* "id-ct-asciiTextWithCRLF" */
2666&(nid_objs[312]),/* "id-it-origPKIMessage" */ 2755408, /* "id-ecPublicKey" */
2667&(nid_objs[301]),/* "id-it-preferredSymmAlg" */ 2756508, /* "id-hex-multipart-message" */
2668&(nid_objs[309]),/* "id-it-revPassphrase" */ 2757507, /* "id-hex-partial-message" */
2669&(nid_objs[299]),/* "id-it-signKeyPairTypes" */ 2758260, /* "id-it" */
2670&(nid_objs[305]),/* "id-it-subscriptionRequest" */ 2759302, /* "id-it-caKeyUpdateInfo" */
2671&(nid_objs[306]),/* "id-it-subscriptionResponse" */ 2760298, /* "id-it-caProtEncCert" */
2672&(nid_objs[784]),/* "id-it-suppLangTags" */ 2761311, /* "id-it-confirmWaitTime" */
2673&(nid_objs[304]),/* "id-it-unsupportedOIDs" */ 2762303, /* "id-it-currentCRL" */
2674&(nid_objs[128]),/* "id-kp" */ 2763300, /* "id-it-encKeyPairTypes" */
2675&(nid_objs[280]),/* "id-mod-attribute-cert" */ 2764310, /* "id-it-implicitConfirm" */
2676&(nid_objs[274]),/* "id-mod-cmc" */ 2765308, /* "id-it-keyPairParamRep" */
2677&(nid_objs[277]),/* "id-mod-cmp" */ 2766307, /* "id-it-keyPairParamReq" */
2678&(nid_objs[284]),/* "id-mod-cmp2000" */ 2767312, /* "id-it-origPKIMessage" */
2679&(nid_objs[273]),/* "id-mod-crmf" */ 2768301, /* "id-it-preferredSymmAlg" */
2680&(nid_objs[283]),/* "id-mod-dvcs" */ 2769309, /* "id-it-revPassphrase" */
2681&(nid_objs[275]),/* "id-mod-kea-profile-88" */ 2770299, /* "id-it-signKeyPairTypes" */
2682&(nid_objs[276]),/* "id-mod-kea-profile-93" */ 2771305, /* "id-it-subscriptionRequest" */
2683&(nid_objs[282]),/* "id-mod-ocsp" */ 2772306, /* "id-it-subscriptionResponse" */
2684&(nid_objs[278]),/* "id-mod-qualified-cert-88" */ 2773784, /* "id-it-suppLangTags" */
2685&(nid_objs[279]),/* "id-mod-qualified-cert-93" */ 2774304, /* "id-it-unsupportedOIDs" */
2686&(nid_objs[281]),/* "id-mod-timestamp-protocol" */ 2775128, /* "id-kp" */
2687&(nid_objs[264]),/* "id-on" */ 2776280, /* "id-mod-attribute-cert" */
2688&(nid_objs[858]),/* "id-on-permanentIdentifier" */ 2777274, /* "id-mod-cmc" */
2689&(nid_objs[347]),/* "id-on-personalData" */ 2778277, /* "id-mod-cmp" */
2690&(nid_objs[265]),/* "id-pda" */ 2779284, /* "id-mod-cmp2000" */
2691&(nid_objs[352]),/* "id-pda-countryOfCitizenship" */ 2780273, /* "id-mod-crmf" */
2692&(nid_objs[353]),/* "id-pda-countryOfResidence" */ 2781283, /* "id-mod-dvcs" */
2693&(nid_objs[348]),/* "id-pda-dateOfBirth" */ 2782275, /* "id-mod-kea-profile-88" */
2694&(nid_objs[351]),/* "id-pda-gender" */ 2783276, /* "id-mod-kea-profile-93" */
2695&(nid_objs[349]),/* "id-pda-placeOfBirth" */ 2784282, /* "id-mod-ocsp" */
2696&(nid_objs[175]),/* "id-pe" */ 2785278, /* "id-mod-qualified-cert-88" */
2697&(nid_objs[261]),/* "id-pkip" */ 2786279, /* "id-mod-qualified-cert-93" */
2698&(nid_objs[258]),/* "id-pkix-mod" */ 2787281, /* "id-mod-timestamp-protocol" */
2699&(nid_objs[269]),/* "id-pkix1-explicit-88" */ 2788264, /* "id-on" */
2700&(nid_objs[271]),/* "id-pkix1-explicit-93" */ 2789858, /* "id-on-permanentIdentifier" */
2701&(nid_objs[270]),/* "id-pkix1-implicit-88" */ 2790347, /* "id-on-personalData" */
2702&(nid_objs[272]),/* "id-pkix1-implicit-93" */ 2791265, /* "id-pda" */
2703&(nid_objs[662]),/* "id-ppl" */ 2792352, /* "id-pda-countryOfCitizenship" */
2704&(nid_objs[664]),/* "id-ppl-anyLanguage" */ 2793353, /* "id-pda-countryOfResidence" */
2705&(nid_objs[667]),/* "id-ppl-independent" */ 2794348, /* "id-pda-dateOfBirth" */
2706&(nid_objs[665]),/* "id-ppl-inheritAll" */ 2795351, /* "id-pda-gender" */
2707&(nid_objs[267]),/* "id-qcs" */ 2796349, /* "id-pda-placeOfBirth" */
2708&(nid_objs[359]),/* "id-qcs-pkixQCSyntax-v1" */ 2797175, /* "id-pe" */
2709&(nid_objs[259]),/* "id-qt" */ 2798261, /* "id-pkip" */
2710&(nid_objs[164]),/* "id-qt-cps" */ 2799258, /* "id-pkix-mod" */
2711&(nid_objs[165]),/* "id-qt-unotice" */ 2800269, /* "id-pkix1-explicit-88" */
2712&(nid_objs[313]),/* "id-regCtrl" */ 2801271, /* "id-pkix1-explicit-93" */
2713&(nid_objs[316]),/* "id-regCtrl-authenticator" */ 2802270, /* "id-pkix1-implicit-88" */
2714&(nid_objs[319]),/* "id-regCtrl-oldCertID" */ 2803272, /* "id-pkix1-implicit-93" */
2715&(nid_objs[318]),/* "id-regCtrl-pkiArchiveOptions" */ 2804662, /* "id-ppl" */
2716&(nid_objs[317]),/* "id-regCtrl-pkiPublicationInfo" */ 2805664, /* "id-ppl-anyLanguage" */
2717&(nid_objs[320]),/* "id-regCtrl-protocolEncrKey" */ 2806667, /* "id-ppl-independent" */
2718&(nid_objs[315]),/* "id-regCtrl-regToken" */ 2807665, /* "id-ppl-inheritAll" */
2719&(nid_objs[314]),/* "id-regInfo" */ 2808267, /* "id-qcs" */
2720&(nid_objs[322]),/* "id-regInfo-certReq" */ 2809359, /* "id-qcs-pkixQCSyntax-v1" */
2721&(nid_objs[321]),/* "id-regInfo-utf8Pairs" */ 2810259, /* "id-qt" */
2722&(nid_objs[512]),/* "id-set" */ 2811164, /* "id-qt-cps" */
2723&(nid_objs[191]),/* "id-smime-aa" */ 2812165, /* "id-qt-unotice" */
2724&(nid_objs[215]),/* "id-smime-aa-contentHint" */ 2813313, /* "id-regCtrl" */
2725&(nid_objs[218]),/* "id-smime-aa-contentIdentifier" */ 2814316, /* "id-regCtrl-authenticator" */
2726&(nid_objs[221]),/* "id-smime-aa-contentReference" */ 2815319, /* "id-regCtrl-oldCertID" */
2727&(nid_objs[240]),/* "id-smime-aa-dvcs-dvc" */ 2816318, /* "id-regCtrl-pkiArchiveOptions" */
2728&(nid_objs[217]),/* "id-smime-aa-encapContentType" */ 2817317, /* "id-regCtrl-pkiPublicationInfo" */
2729&(nid_objs[222]),/* "id-smime-aa-encrypKeyPref" */ 2818320, /* "id-regCtrl-protocolEncrKey" */
2730&(nid_objs[220]),/* "id-smime-aa-equivalentLabels" */ 2819315, /* "id-regCtrl-regToken" */
2731&(nid_objs[232]),/* "id-smime-aa-ets-CertificateRefs" */ 2820314, /* "id-regInfo" */
2732&(nid_objs[233]),/* "id-smime-aa-ets-RevocationRefs" */ 2821322, /* "id-regInfo-certReq" */
2733&(nid_objs[238]),/* "id-smime-aa-ets-archiveTimeStamp" */ 2822321, /* "id-regInfo-utf8Pairs" */
2734&(nid_objs[237]),/* "id-smime-aa-ets-certCRLTimestamp" */ 2823512, /* "id-set" */
2735&(nid_objs[234]),/* "id-smime-aa-ets-certValues" */ 2824191, /* "id-smime-aa" */
2736&(nid_objs[227]),/* "id-smime-aa-ets-commitmentType" */ 2825215, /* "id-smime-aa-contentHint" */
2737&(nid_objs[231]),/* "id-smime-aa-ets-contentTimestamp" */ 2826218, /* "id-smime-aa-contentIdentifier" */
2738&(nid_objs[236]),/* "id-smime-aa-ets-escTimeStamp" */ 2827221, /* "id-smime-aa-contentReference" */
2739&(nid_objs[230]),/* "id-smime-aa-ets-otherSigCert" */ 2828240, /* "id-smime-aa-dvcs-dvc" */
2740&(nid_objs[235]),/* "id-smime-aa-ets-revocationValues" */ 2829217, /* "id-smime-aa-encapContentType" */
2741&(nid_objs[226]),/* "id-smime-aa-ets-sigPolicyId" */ 2830222, /* "id-smime-aa-encrypKeyPref" */
2742&(nid_objs[229]),/* "id-smime-aa-ets-signerAttr" */ 2831220, /* "id-smime-aa-equivalentLabels" */
2743&(nid_objs[228]),/* "id-smime-aa-ets-signerLocation" */ 2832232, /* "id-smime-aa-ets-CertificateRefs" */
2744&(nid_objs[219]),/* "id-smime-aa-macValue" */ 2833233, /* "id-smime-aa-ets-RevocationRefs" */
2745&(nid_objs[214]),/* "id-smime-aa-mlExpandHistory" */ 2834238, /* "id-smime-aa-ets-archiveTimeStamp" */
2746&(nid_objs[216]),/* "id-smime-aa-msgSigDigest" */ 2835237, /* "id-smime-aa-ets-certCRLTimestamp" */
2747&(nid_objs[212]),/* "id-smime-aa-receiptRequest" */ 2836234, /* "id-smime-aa-ets-certValues" */
2748&(nid_objs[213]),/* "id-smime-aa-securityLabel" */ 2837227, /* "id-smime-aa-ets-commitmentType" */
2749&(nid_objs[239]),/* "id-smime-aa-signatureType" */ 2838231, /* "id-smime-aa-ets-contentTimestamp" */
2750&(nid_objs[223]),/* "id-smime-aa-signingCertificate" */ 2839236, /* "id-smime-aa-ets-escTimeStamp" */
2751&(nid_objs[224]),/* "id-smime-aa-smimeEncryptCerts" */ 2840230, /* "id-smime-aa-ets-otherSigCert" */
2752&(nid_objs[225]),/* "id-smime-aa-timeStampToken" */ 2841235, /* "id-smime-aa-ets-revocationValues" */
2753&(nid_objs[192]),/* "id-smime-alg" */ 2842226, /* "id-smime-aa-ets-sigPolicyId" */
2754&(nid_objs[243]),/* "id-smime-alg-3DESwrap" */ 2843229, /* "id-smime-aa-ets-signerAttr" */
2755&(nid_objs[246]),/* "id-smime-alg-CMS3DESwrap" */ 2844228, /* "id-smime-aa-ets-signerLocation" */
2756&(nid_objs[247]),/* "id-smime-alg-CMSRC2wrap" */ 2845219, /* "id-smime-aa-macValue" */
2757&(nid_objs[245]),/* "id-smime-alg-ESDH" */ 2846214, /* "id-smime-aa-mlExpandHistory" */
2758&(nid_objs[241]),/* "id-smime-alg-ESDHwith3DES" */ 2847216, /* "id-smime-aa-msgSigDigest" */
2759&(nid_objs[242]),/* "id-smime-alg-ESDHwithRC2" */ 2848212, /* "id-smime-aa-receiptRequest" */
2760&(nid_objs[244]),/* "id-smime-alg-RC2wrap" */ 2849213, /* "id-smime-aa-securityLabel" */
2761&(nid_objs[193]),/* "id-smime-cd" */ 2850239, /* "id-smime-aa-signatureType" */
2762&(nid_objs[248]),/* "id-smime-cd-ldap" */ 2851223, /* "id-smime-aa-signingCertificate" */
2763&(nid_objs[190]),/* "id-smime-ct" */ 2852224, /* "id-smime-aa-smimeEncryptCerts" */
2764&(nid_objs[210]),/* "id-smime-ct-DVCSRequestData" */ 2853225, /* "id-smime-aa-timeStampToken" */
2765&(nid_objs[211]),/* "id-smime-ct-DVCSResponseData" */ 2854192, /* "id-smime-alg" */
2766&(nid_objs[208]),/* "id-smime-ct-TDTInfo" */ 2855243, /* "id-smime-alg-3DESwrap" */
2767&(nid_objs[207]),/* "id-smime-ct-TSTInfo" */ 2856246, /* "id-smime-alg-CMS3DESwrap" */
2768&(nid_objs[205]),/* "id-smime-ct-authData" */ 2857247, /* "id-smime-alg-CMSRC2wrap" */
2769&(nid_objs[786]),/* "id-smime-ct-compressedData" */ 2858245, /* "id-smime-alg-ESDH" */
2770&(nid_objs[209]),/* "id-smime-ct-contentInfo" */ 2859241, /* "id-smime-alg-ESDHwith3DES" */
2771&(nid_objs[206]),/* "id-smime-ct-publishCert" */ 2860242, /* "id-smime-alg-ESDHwithRC2" */
2772&(nid_objs[204]),/* "id-smime-ct-receipt" */ 2861244, /* "id-smime-alg-RC2wrap" */
2773&(nid_objs[195]),/* "id-smime-cti" */ 2862193, /* "id-smime-cd" */
2774&(nid_objs[255]),/* "id-smime-cti-ets-proofOfApproval" */ 2863248, /* "id-smime-cd-ldap" */
2775&(nid_objs[256]),/* "id-smime-cti-ets-proofOfCreation" */ 2864190, /* "id-smime-ct" */
2776&(nid_objs[253]),/* "id-smime-cti-ets-proofOfDelivery" */ 2865210, /* "id-smime-ct-DVCSRequestData" */
2777&(nid_objs[251]),/* "id-smime-cti-ets-proofOfOrigin" */ 2866211, /* "id-smime-ct-DVCSResponseData" */
2778&(nid_objs[252]),/* "id-smime-cti-ets-proofOfReceipt" */ 2867208, /* "id-smime-ct-TDTInfo" */
2779&(nid_objs[254]),/* "id-smime-cti-ets-proofOfSender" */ 2868207, /* "id-smime-ct-TSTInfo" */
2780&(nid_objs[189]),/* "id-smime-mod" */ 2869205, /* "id-smime-ct-authData" */
2781&(nid_objs[196]),/* "id-smime-mod-cms" */ 2870786, /* "id-smime-ct-compressedData" */
2782&(nid_objs[197]),/* "id-smime-mod-ess" */ 2871209, /* "id-smime-ct-contentInfo" */
2783&(nid_objs[202]),/* "id-smime-mod-ets-eSigPolicy-88" */ 2872206, /* "id-smime-ct-publishCert" */
2784&(nid_objs[203]),/* "id-smime-mod-ets-eSigPolicy-97" */ 2873204, /* "id-smime-ct-receipt" */
2785&(nid_objs[200]),/* "id-smime-mod-ets-eSignature-88" */ 2874195, /* "id-smime-cti" */
2786&(nid_objs[201]),/* "id-smime-mod-ets-eSignature-97" */ 2875255, /* "id-smime-cti-ets-proofOfApproval" */
2787&(nid_objs[199]),/* "id-smime-mod-msg-v3" */ 2876256, /* "id-smime-cti-ets-proofOfCreation" */
2788&(nid_objs[198]),/* "id-smime-mod-oid" */ 2877253, /* "id-smime-cti-ets-proofOfDelivery" */
2789&(nid_objs[194]),/* "id-smime-spq" */ 2878251, /* "id-smime-cti-ets-proofOfOrigin" */
2790&(nid_objs[250]),/* "id-smime-spq-ets-sqt-unotice" */ 2879252, /* "id-smime-cti-ets-proofOfReceipt" */
2791&(nid_objs[249]),/* "id-smime-spq-ets-sqt-uri" */ 2880254, /* "id-smime-cti-ets-proofOfSender" */
2792&(nid_objs[676]),/* "identified-organization" */ 2881189, /* "id-smime-mod" */
2793&(nid_objs[461]),/* "info" */ 2882196, /* "id-smime-mod-cms" */
2794&(nid_objs[748]),/* "inhibitAnyPolicy" */ 2883197, /* "id-smime-mod-ess" */
2795&(nid_objs[101]),/* "initials" */ 2884202, /* "id-smime-mod-ets-eSigPolicy-88" */
2796&(nid_objs[647]),/* "international-organizations" */ 2885203, /* "id-smime-mod-ets-eSigPolicy-97" */
2797&(nid_objs[142]),/* "invalidityDate" */ 2886200, /* "id-smime-mod-ets-eSignature-88" */
2798&(nid_objs[294]),/* "ipsecEndSystem" */ 2887201, /* "id-smime-mod-ets-eSignature-97" */
2799&(nid_objs[295]),/* "ipsecTunnel" */ 2888199, /* "id-smime-mod-msg-v3" */
2800&(nid_objs[296]),/* "ipsecUser" */ 2889198, /* "id-smime-mod-oid" */
2801&(nid_objs[86]),/* "issuerAltName" */ 2890194, /* "id-smime-spq" */
2802&(nid_objs[770]),/* "issuingDistributionPoint" */ 2891250, /* "id-smime-spq-ets-sqt-unotice" */
2803&(nid_objs[492]),/* "janetMailbox" */ 2892249, /* "id-smime-spq-ets-sqt-uri" */
2804&(nid_objs[150]),/* "keyBag" */ 2893676, /* "identified-organization" */
2805&(nid_objs[83]),/* "keyUsage" */ 2894461, /* "info" */
2806&(nid_objs[477]),/* "lastModifiedBy" */ 2895748, /* "inhibitAnyPolicy" */
2807&(nid_objs[476]),/* "lastModifiedTime" */ 2896101, /* "initials" */
2808&(nid_objs[157]),/* "localKeyID" */ 2897647, /* "international-organizations" */
2809&(nid_objs[480]),/* "mXRecord" */ 2898869, /* "internationaliSDNNumber" */
2810&(nid_objs[460]),/* "mail" */ 2899142, /* "invalidityDate" */
2811&(nid_objs[493]),/* "mailPreferenceOption" */ 2900294, /* "ipsecEndSystem" */
2812&(nid_objs[467]),/* "manager" */ 2901295, /* "ipsecTunnel" */
2813&(nid_objs[809]),/* "md_gost94" */ 2902296, /* "ipsecUser" */
2814&(nid_objs[182]),/* "member-body" */ 290386, /* "issuerAltName" */
2815&(nid_objs[51]),/* "messageDigest" */ 2904770, /* "issuingDistributionPoint" */
2816&(nid_objs[383]),/* "mgmt" */ 2905492, /* "janetMailbox" */
2817&(nid_objs[504]),/* "mime-mhs" */ 2906150, /* "keyBag" */
2818&(nid_objs[506]),/* "mime-mhs-bodies" */ 290783, /* "keyUsage" */
2819&(nid_objs[505]),/* "mime-mhs-headings" */ 2908477, /* "lastModifiedBy" */
2820&(nid_objs[488]),/* "mobileTelephoneNumber" */ 2909476, /* "lastModifiedTime" */
2821&(nid_objs[136]),/* "msCTLSign" */ 2910157, /* "localKeyID" */
2822&(nid_objs[135]),/* "msCodeCom" */ 2911480, /* "mXRecord" */
2823&(nid_objs[134]),/* "msCodeInd" */ 2912460, /* "mail" */
2824&(nid_objs[138]),/* "msEFS" */ 2913493, /* "mailPreferenceOption" */
2825&(nid_objs[171]),/* "msExtReq" */ 2914467, /* "manager" */
2826&(nid_objs[137]),/* "msSGC" */ 2915809, /* "md_gost94" */
2827&(nid_objs[648]),/* "msSmartcardLogin" */ 2916875, /* "member" */
2828&(nid_objs[649]),/* "msUPN" */ 2917182, /* "member-body" */
2829&(nid_objs[481]),/* "nSRecord" */ 291851, /* "messageDigest" */
2830&(nid_objs[173]),/* "name" */ 2919383, /* "mgmt" */
2831&(nid_objs[666]),/* "nameConstraints" */ 2920504, /* "mime-mhs" */
2832&(nid_objs[369]),/* "noCheck" */ 2921506, /* "mime-mhs-bodies" */
2833&(nid_objs[403]),/* "noRevAvail" */ 2922505, /* "mime-mhs-headings" */
2834&(nid_objs[72]),/* "nsBaseUrl" */ 2923488, /* "mobileTelephoneNumber" */
2835&(nid_objs[76]),/* "nsCaPolicyUrl" */ 2924136, /* "msCTLSign" */
2836&(nid_objs[74]),/* "nsCaRevocationUrl" */ 2925135, /* "msCodeCom" */
2837&(nid_objs[58]),/* "nsCertExt" */ 2926134, /* "msCodeInd" */
2838&(nid_objs[79]),/* "nsCertSequence" */ 2927138, /* "msEFS" */
2839&(nid_objs[71]),/* "nsCertType" */ 2928171, /* "msExtReq" */
2840&(nid_objs[78]),/* "nsComment" */ 2929137, /* "msSGC" */
2841&(nid_objs[59]),/* "nsDataType" */ 2930648, /* "msSmartcardLogin" */
2842&(nid_objs[75]),/* "nsRenewalUrl" */ 2931649, /* "msUPN" */
2843&(nid_objs[73]),/* "nsRevocationUrl" */ 2932481, /* "nSRecord" */
2844&(nid_objs[139]),/* "nsSGC" */ 2933173, /* "name" */
2845&(nid_objs[77]),/* "nsSslServerName" */ 2934666, /* "nameConstraints" */
2846&(nid_objs[681]),/* "onBasis" */ 2935369, /* "noCheck" */
2847&(nid_objs[491]),/* "organizationalStatus" */ 2936403, /* "noRevAvail" */
2848&(nid_objs[475]),/* "otherMailbox" */ 293772, /* "nsBaseUrl" */
2849&(nid_objs[489]),/* "pagerTelephoneNumber" */ 293876, /* "nsCaPolicyUrl" */
2850&(nid_objs[374]),/* "path" */ 293974, /* "nsCaRevocationUrl" */
2851&(nid_objs[112]),/* "pbeWithMD5AndCast5CBC" */ 294058, /* "nsCertExt" */
2852&(nid_objs[499]),/* "personalSignature" */ 294179, /* "nsCertSequence" */
2853&(nid_objs[487]),/* "personalTitle" */ 294271, /* "nsCertType" */
2854&(nid_objs[464]),/* "photo" */ 294378, /* "nsComment" */
2855&(nid_objs[437]),/* "pilot" */ 294459, /* "nsDataType" */
2856&(nid_objs[439]),/* "pilotAttributeSyntax" */ 294575, /* "nsRenewalUrl" */
2857&(nid_objs[438]),/* "pilotAttributeType" */ 294673, /* "nsRevocationUrl" */
2858&(nid_objs[479]),/* "pilotAttributeType27" */ 2947139, /* "nsSGC" */
2859&(nid_objs[456]),/* "pilotDSA" */ 294877, /* "nsSslServerName" */
2860&(nid_objs[441]),/* "pilotGroups" */ 2949681, /* "onBasis" */
2861&(nid_objs[444]),/* "pilotObject" */ 2950491, /* "organizationalStatus" */
2862&(nid_objs[440]),/* "pilotObjectClass" */ 2951475, /* "otherMailbox" */
2863&(nid_objs[455]),/* "pilotOrganization" */ 2952876, /* "owner" */
2864&(nid_objs[445]),/* "pilotPerson" */ 2953489, /* "pagerTelephoneNumber" */
2865&(nid_objs[ 2]),/* "pkcs" */ 2954374, /* "path" */
2866&(nid_objs[186]),/* "pkcs1" */ 2955112, /* "pbeWithMD5AndCast5CBC" */
2867&(nid_objs[27]),/* "pkcs3" */ 2956499, /* "personalSignature" */
2868&(nid_objs[187]),/* "pkcs5" */ 2957487, /* "personalTitle" */
2869&(nid_objs[20]),/* "pkcs7" */ 2958464, /* "photo" */
2870&(nid_objs[21]),/* "pkcs7-data" */ 2959863, /* "physicalDeliveryOfficeName" */
2871&(nid_objs[25]),/* "pkcs7-digestData" */ 2960437, /* "pilot" */
2872&(nid_objs[26]),/* "pkcs7-encryptedData" */ 2961439, /* "pilotAttributeSyntax" */
2873&(nid_objs[23]),/* "pkcs7-envelopedData" */ 2962438, /* "pilotAttributeType" */
2874&(nid_objs[24]),/* "pkcs7-signedAndEnvelopedData" */ 2963479, /* "pilotAttributeType27" */
2875&(nid_objs[22]),/* "pkcs7-signedData" */ 2964456, /* "pilotDSA" */
2876&(nid_objs[151]),/* "pkcs8ShroudedKeyBag" */ 2965441, /* "pilotGroups" */
2877&(nid_objs[47]),/* "pkcs9" */ 2966444, /* "pilotObject" */
2878&(nid_objs[401]),/* "policyConstraints" */ 2967440, /* "pilotObjectClass" */
2879&(nid_objs[747]),/* "policyMappings" */ 2968455, /* "pilotOrganization" */
2880&(nid_objs[661]),/* "postalCode" */ 2969445, /* "pilotPerson" */
2881&(nid_objs[683]),/* "ppBasis" */ 2970 2, /* "pkcs" */
2882&(nid_objs[816]),/* "prf-gostr3411-94" */ 2971186, /* "pkcs1" */
2883&(nid_objs[406]),/* "prime-field" */ 297227, /* "pkcs3" */
2884&(nid_objs[409]),/* "prime192v1" */ 2973187, /* "pkcs5" */
2885&(nid_objs[410]),/* "prime192v2" */ 297420, /* "pkcs7" */
2886&(nid_objs[411]),/* "prime192v3" */ 297521, /* "pkcs7-data" */
2887&(nid_objs[412]),/* "prime239v1" */ 297625, /* "pkcs7-digestData" */
2888&(nid_objs[413]),/* "prime239v2" */ 297726, /* "pkcs7-encryptedData" */
2889&(nid_objs[414]),/* "prime239v3" */ 297823, /* "pkcs7-envelopedData" */
2890&(nid_objs[415]),/* "prime256v1" */ 297924, /* "pkcs7-signedAndEnvelopedData" */
2891&(nid_objs[385]),/* "private" */ 298022, /* "pkcs7-signedData" */
2892&(nid_objs[84]),/* "privateKeyUsagePeriod" */ 2981151, /* "pkcs8ShroudedKeyBag" */
2893&(nid_objs[663]),/* "proxyCertInfo" */ 298247, /* "pkcs9" */
2894&(nid_objs[510]),/* "pseudonym" */ 2983401, /* "policyConstraints" */
2895&(nid_objs[435]),/* "pss" */ 2984747, /* "policyMappings" */
2896&(nid_objs[286]),/* "qcStatements" */ 2985862, /* "postOfficeBox" */
2897&(nid_objs[457]),/* "qualityLabelledData" */ 2986861, /* "postalAddress" */
2898&(nid_objs[450]),/* "rFC822localPart" */ 2987661, /* "postalCode" */
2899&(nid_objs[400]),/* "role" */ 2988683, /* "ppBasis" */
2900&(nid_objs[448]),/* "room" */ 2989872, /* "preferredDeliveryMethod" */
2901&(nid_objs[463]),/* "roomNumber" */ 2990873, /* "presentationAddress" */
2902&(nid_objs[ 6]),/* "rsaEncryption" */ 2991816, /* "prf-gostr3411-94" */
2903&(nid_objs[644]),/* "rsaOAEPEncryptionSET" */ 2992406, /* "prime-field" */
2904&(nid_objs[377]),/* "rsaSignature" */ 2993409, /* "prime192v1" */
2905&(nid_objs[ 1]),/* "rsadsi" */ 2994410, /* "prime192v2" */
2906&(nid_objs[482]),/* "sOARecord" */ 2995411, /* "prime192v3" */
2907&(nid_objs[155]),/* "safeContentsBag" */ 2996412, /* "prime239v1" */
2908&(nid_objs[291]),/* "sbgp-autonomousSysNum" */ 2997413, /* "prime239v2" */
2909&(nid_objs[290]),/* "sbgp-ipAddrBlock" */ 2998414, /* "prime239v3" */
2910&(nid_objs[292]),/* "sbgp-routerIdentifier" */ 2999415, /* "prime256v1" */
2911&(nid_objs[159]),/* "sdsiCertificate" */ 3000385, /* "private" */
2912&(nid_objs[704]),/* "secp112r1" */ 300184, /* "privateKeyUsagePeriod" */
2913&(nid_objs[705]),/* "secp112r2" */ 3002886, /* "protocolInformation" */
2914&(nid_objs[706]),/* "secp128r1" */ 3003663, /* "proxyCertInfo" */
2915&(nid_objs[707]),/* "secp128r2" */ 3004510, /* "pseudonym" */
2916&(nid_objs[708]),/* "secp160k1" */ 3005435, /* "pss" */
2917&(nid_objs[709]),/* "secp160r1" */ 3006286, /* "qcStatements" */
2918&(nid_objs[710]),/* "secp160r2" */ 3007457, /* "qualityLabelledData" */
2919&(nid_objs[711]),/* "secp192k1" */ 3008450, /* "rFC822localPart" */
2920&(nid_objs[712]),/* "secp224k1" */ 3009870, /* "registeredAddress" */
2921&(nid_objs[713]),/* "secp224r1" */ 3010400, /* "role" */
2922&(nid_objs[714]),/* "secp256k1" */ 3011877, /* "roleOccupant" */
2923&(nid_objs[715]),/* "secp384r1" */ 3012448, /* "room" */
2924&(nid_objs[716]),/* "secp521r1" */ 3013463, /* "roomNumber" */
2925&(nid_objs[154]),/* "secretBag" */ 3014 6, /* "rsaEncryption" */
2926&(nid_objs[474]),/* "secretary" */ 3015644, /* "rsaOAEPEncryptionSET" */
2927&(nid_objs[717]),/* "sect113r1" */ 3016377, /* "rsaSignature" */
2928&(nid_objs[718]),/* "sect113r2" */ 3017 1, /* "rsadsi" */
2929&(nid_objs[719]),/* "sect131r1" */ 3018482, /* "sOARecord" */
2930&(nid_objs[720]),/* "sect131r2" */ 3019155, /* "safeContentsBag" */
2931&(nid_objs[721]),/* "sect163k1" */ 3020291, /* "sbgp-autonomousSysNum" */
2932&(nid_objs[722]),/* "sect163r1" */ 3021290, /* "sbgp-ipAddrBlock" */
2933&(nid_objs[723]),/* "sect163r2" */ 3022292, /* "sbgp-routerIdentifier" */
2934&(nid_objs[724]),/* "sect193r1" */ 3023159, /* "sdsiCertificate" */
2935&(nid_objs[725]),/* "sect193r2" */ 3024859, /* "searchGuide" */
2936&(nid_objs[726]),/* "sect233k1" */ 3025704, /* "secp112r1" */
2937&(nid_objs[727]),/* "sect233r1" */ 3026705, /* "secp112r2" */
2938&(nid_objs[728]),/* "sect239k1" */ 3027706, /* "secp128r1" */
2939&(nid_objs[729]),/* "sect283k1" */ 3028707, /* "secp128r2" */
2940&(nid_objs[730]),/* "sect283r1" */ 3029708, /* "secp160k1" */
2941&(nid_objs[731]),/* "sect409k1" */ 3030709, /* "secp160r1" */
2942&(nid_objs[732]),/* "sect409r1" */ 3031710, /* "secp160r2" */
2943&(nid_objs[733]),/* "sect571k1" */ 3032711, /* "secp192k1" */
2944&(nid_objs[734]),/* "sect571r1" */ 3033712, /* "secp224k1" */
2945&(nid_objs[386]),/* "security" */ 3034713, /* "secp224r1" */
2946&(nid_objs[394]),/* "selected-attribute-types" */ 3035714, /* "secp256k1" */
2947&(nid_objs[105]),/* "serialNumber" */ 3036715, /* "secp384r1" */
2948&(nid_objs[129]),/* "serverAuth" */ 3037716, /* "secp521r1" */
2949&(nid_objs[371]),/* "serviceLocator" */ 3038154, /* "secretBag" */
2950&(nid_objs[625]),/* "set-addPolicy" */ 3039474, /* "secretary" */
2951&(nid_objs[515]),/* "set-attr" */ 3040717, /* "sect113r1" */
2952&(nid_objs[518]),/* "set-brand" */ 3041718, /* "sect113r2" */
2953&(nid_objs[638]),/* "set-brand-AmericanExpress" */ 3042719, /* "sect131r1" */
2954&(nid_objs[637]),/* "set-brand-Diners" */ 3043720, /* "sect131r2" */
2955&(nid_objs[636]),/* "set-brand-IATA-ATA" */ 3044721, /* "sect163k1" */
2956&(nid_objs[639]),/* "set-brand-JCB" */ 3045722, /* "sect163r1" */
2957&(nid_objs[641]),/* "set-brand-MasterCard" */ 3046723, /* "sect163r2" */
2958&(nid_objs[642]),/* "set-brand-Novus" */ 3047724, /* "sect193r1" */
2959&(nid_objs[640]),/* "set-brand-Visa" */ 3048725, /* "sect193r2" */
2960&(nid_objs[517]),/* "set-certExt" */ 3049726, /* "sect233k1" */
2961&(nid_objs[513]),/* "set-ctype" */ 3050727, /* "sect233r1" */
2962&(nid_objs[514]),/* "set-msgExt" */ 3051728, /* "sect239k1" */
2963&(nid_objs[516]),/* "set-policy" */ 3052729, /* "sect283k1" */
2964&(nid_objs[607]),/* "set-policy-root" */ 3053730, /* "sect283r1" */
2965&(nid_objs[624]),/* "set-rootKeyThumb" */ 3054731, /* "sect409k1" */
2966&(nid_objs[620]),/* "setAttr-Cert" */ 3055732, /* "sect409r1" */
2967&(nid_objs[631]),/* "setAttr-GenCryptgrm" */ 3056733, /* "sect571k1" */
2968&(nid_objs[623]),/* "setAttr-IssCap" */ 3057734, /* "sect571r1" */
2969&(nid_objs[628]),/* "setAttr-IssCap-CVM" */ 3058386, /* "security" */
2970&(nid_objs[630]),/* "setAttr-IssCap-Sig" */ 3059878, /* "seeAlso" */
2971&(nid_objs[629]),/* "setAttr-IssCap-T2" */ 3060394, /* "selected-attribute-types" */
2972&(nid_objs[621]),/* "setAttr-PGWYcap" */ 3061105, /* "serialNumber" */
2973&(nid_objs[635]),/* "setAttr-SecDevSig" */ 3062129, /* "serverAuth" */
2974&(nid_objs[632]),/* "setAttr-T2Enc" */ 3063371, /* "serviceLocator" */
2975&(nid_objs[633]),/* "setAttr-T2cleartxt" */ 3064625, /* "set-addPolicy" */
2976&(nid_objs[634]),/* "setAttr-TokICCsig" */ 3065515, /* "set-attr" */
2977&(nid_objs[627]),/* "setAttr-Token-B0Prime" */ 3066518, /* "set-brand" */
2978&(nid_objs[626]),/* "setAttr-Token-EMV" */ 3067638, /* "set-brand-AmericanExpress" */
2979&(nid_objs[622]),/* "setAttr-TokenType" */ 3068637, /* "set-brand-Diners" */
2980&(nid_objs[619]),/* "setCext-IssuerCapabilities" */ 3069636, /* "set-brand-IATA-ATA" */
2981&(nid_objs[615]),/* "setCext-PGWYcapabilities" */ 3070639, /* "set-brand-JCB" */
2982&(nid_objs[616]),/* "setCext-TokenIdentifier" */ 3071641, /* "set-brand-MasterCard" */
2983&(nid_objs[618]),/* "setCext-TokenType" */ 3072642, /* "set-brand-Novus" */
2984&(nid_objs[617]),/* "setCext-Track2Data" */ 3073640, /* "set-brand-Visa" */
2985&(nid_objs[611]),/* "setCext-cCertRequired" */ 3074517, /* "set-certExt" */
2986&(nid_objs[609]),/* "setCext-certType" */ 3075513, /* "set-ctype" */
2987&(nid_objs[608]),/* "setCext-hashedRoot" */ 3076514, /* "set-msgExt" */
2988&(nid_objs[610]),/* "setCext-merchData" */ 3077516, /* "set-policy" */
2989&(nid_objs[613]),/* "setCext-setExt" */ 3078607, /* "set-policy-root" */
2990&(nid_objs[614]),/* "setCext-setQualf" */ 3079624, /* "set-rootKeyThumb" */
2991&(nid_objs[612]),/* "setCext-tunneling" */ 3080620, /* "setAttr-Cert" */
2992&(nid_objs[540]),/* "setct-AcqCardCodeMsg" */ 3081631, /* "setAttr-GenCryptgrm" */
2993&(nid_objs[576]),/* "setct-AcqCardCodeMsgTBE" */ 3082623, /* "setAttr-IssCap" */
2994&(nid_objs[570]),/* "setct-AuthReqTBE" */ 3083628, /* "setAttr-IssCap-CVM" */
2995&(nid_objs[534]),/* "setct-AuthReqTBS" */ 3084630, /* "setAttr-IssCap-Sig" */
2996&(nid_objs[527]),/* "setct-AuthResBaggage" */ 3085629, /* "setAttr-IssCap-T2" */
2997&(nid_objs[571]),/* "setct-AuthResTBE" */ 3086621, /* "setAttr-PGWYcap" */
2998&(nid_objs[572]),/* "setct-AuthResTBEX" */ 3087635, /* "setAttr-SecDevSig" */
2999&(nid_objs[535]),/* "setct-AuthResTBS" */ 3088632, /* "setAttr-T2Enc" */
3000&(nid_objs[536]),/* "setct-AuthResTBSX" */ 3089633, /* "setAttr-T2cleartxt" */
3001&(nid_objs[528]),/* "setct-AuthRevReqBaggage" */ 3090634, /* "setAttr-TokICCsig" */
3002&(nid_objs[577]),/* "setct-AuthRevReqTBE" */ 3091627, /* "setAttr-Token-B0Prime" */
3003&(nid_objs[541]),/* "setct-AuthRevReqTBS" */ 3092626, /* "setAttr-Token-EMV" */
3004&(nid_objs[529]),/* "setct-AuthRevResBaggage" */ 3093622, /* "setAttr-TokenType" */
3005&(nid_objs[542]),/* "setct-AuthRevResData" */ 3094619, /* "setCext-IssuerCapabilities" */
3006&(nid_objs[578]),/* "setct-AuthRevResTBE" */ 3095615, /* "setCext-PGWYcapabilities" */
3007&(nid_objs[579]),/* "setct-AuthRevResTBEB" */ 3096616, /* "setCext-TokenIdentifier" */
3008&(nid_objs[543]),/* "setct-AuthRevResTBS" */ 3097618, /* "setCext-TokenType" */
3009&(nid_objs[573]),/* "setct-AuthTokenTBE" */ 3098617, /* "setCext-Track2Data" */
3010&(nid_objs[537]),/* "setct-AuthTokenTBS" */ 3099611, /* "setCext-cCertRequired" */
3011&(nid_objs[600]),/* "setct-BCIDistributionTBS" */ 3100609, /* "setCext-certType" */
3012&(nid_objs[558]),/* "setct-BatchAdminReqData" */ 3101608, /* "setCext-hashedRoot" */
3013&(nid_objs[592]),/* "setct-BatchAdminReqTBE" */ 3102610, /* "setCext-merchData" */
3014&(nid_objs[559]),/* "setct-BatchAdminResData" */ 3103613, /* "setCext-setExt" */
3015&(nid_objs[593]),/* "setct-BatchAdminResTBE" */ 3104614, /* "setCext-setQualf" */
3016&(nid_objs[599]),/* "setct-CRLNotificationResTBS" */ 3105612, /* "setCext-tunneling" */
3017&(nid_objs[598]),/* "setct-CRLNotificationTBS" */ 3106540, /* "setct-AcqCardCodeMsg" */
3018&(nid_objs[580]),/* "setct-CapReqTBE" */ 3107576, /* "setct-AcqCardCodeMsgTBE" */
3019&(nid_objs[581]),/* "setct-CapReqTBEX" */ 3108570, /* "setct-AuthReqTBE" */
3020&(nid_objs[544]),/* "setct-CapReqTBS" */ 3109534, /* "setct-AuthReqTBS" */
3021&(nid_objs[545]),/* "setct-CapReqTBSX" */ 3110527, /* "setct-AuthResBaggage" */
3022&(nid_objs[546]),/* "setct-CapResData" */ 3111571, /* "setct-AuthResTBE" */
3023&(nid_objs[582]),/* "setct-CapResTBE" */ 3112572, /* "setct-AuthResTBEX" */
3024&(nid_objs[583]),/* "setct-CapRevReqTBE" */ 3113535, /* "setct-AuthResTBS" */
3025&(nid_objs[584]),/* "setct-CapRevReqTBEX" */ 3114536, /* "setct-AuthResTBSX" */
3026&(nid_objs[547]),/* "setct-CapRevReqTBS" */ 3115528, /* "setct-AuthRevReqBaggage" */
3027&(nid_objs[548]),/* "setct-CapRevReqTBSX" */ 3116577, /* "setct-AuthRevReqTBE" */
3028&(nid_objs[549]),/* "setct-CapRevResData" */ 3117541, /* "setct-AuthRevReqTBS" */
3029&(nid_objs[585]),/* "setct-CapRevResTBE" */ 3118529, /* "setct-AuthRevResBaggage" */
3030&(nid_objs[538]),/* "setct-CapTokenData" */ 3119542, /* "setct-AuthRevResData" */
3031&(nid_objs[530]),/* "setct-CapTokenSeq" */ 3120578, /* "setct-AuthRevResTBE" */
3032&(nid_objs[574]),/* "setct-CapTokenTBE" */ 3121579, /* "setct-AuthRevResTBEB" */
3033&(nid_objs[575]),/* "setct-CapTokenTBEX" */ 3122543, /* "setct-AuthRevResTBS" */
3034&(nid_objs[539]),/* "setct-CapTokenTBS" */ 3123573, /* "setct-AuthTokenTBE" */
3035&(nid_objs[560]),/* "setct-CardCInitResTBS" */ 3124537, /* "setct-AuthTokenTBS" */
3036&(nid_objs[566]),/* "setct-CertInqReqTBS" */ 3125600, /* "setct-BCIDistributionTBS" */
3037&(nid_objs[563]),/* "setct-CertReqData" */ 3126558, /* "setct-BatchAdminReqData" */
3038&(nid_objs[595]),/* "setct-CertReqTBE" */ 3127592, /* "setct-BatchAdminReqTBE" */
3039&(nid_objs[596]),/* "setct-CertReqTBEX" */ 3128559, /* "setct-BatchAdminResData" */
3040&(nid_objs[564]),/* "setct-CertReqTBS" */ 3129593, /* "setct-BatchAdminResTBE" */
3041&(nid_objs[565]),/* "setct-CertResData" */ 3130599, /* "setct-CRLNotificationResTBS" */
3042&(nid_objs[597]),/* "setct-CertResTBE" */ 3131598, /* "setct-CRLNotificationTBS" */
3043&(nid_objs[586]),/* "setct-CredReqTBE" */ 3132580, /* "setct-CapReqTBE" */
3044&(nid_objs[587]),/* "setct-CredReqTBEX" */ 3133581, /* "setct-CapReqTBEX" */
3045&(nid_objs[550]),/* "setct-CredReqTBS" */ 3134544, /* "setct-CapReqTBS" */
3046&(nid_objs[551]),/* "setct-CredReqTBSX" */ 3135545, /* "setct-CapReqTBSX" */
3047&(nid_objs[552]),/* "setct-CredResData" */ 3136546, /* "setct-CapResData" */
3048&(nid_objs[588]),/* "setct-CredResTBE" */ 3137582, /* "setct-CapResTBE" */
3049&(nid_objs[589]),/* "setct-CredRevReqTBE" */ 3138583, /* "setct-CapRevReqTBE" */
3050&(nid_objs[590]),/* "setct-CredRevReqTBEX" */ 3139584, /* "setct-CapRevReqTBEX" */
3051&(nid_objs[553]),/* "setct-CredRevReqTBS" */ 3140547, /* "setct-CapRevReqTBS" */
3052&(nid_objs[554]),/* "setct-CredRevReqTBSX" */ 3141548, /* "setct-CapRevReqTBSX" */
3053&(nid_objs[555]),/* "setct-CredRevResData" */ 3142549, /* "setct-CapRevResData" */
3054&(nid_objs[591]),/* "setct-CredRevResTBE" */ 3143585, /* "setct-CapRevResTBE" */
3055&(nid_objs[567]),/* "setct-ErrorTBS" */ 3144538, /* "setct-CapTokenData" */
3056&(nid_objs[526]),/* "setct-HODInput" */ 3145530, /* "setct-CapTokenSeq" */
3057&(nid_objs[561]),/* "setct-MeAqCInitResTBS" */ 3146574, /* "setct-CapTokenTBE" */
3058&(nid_objs[522]),/* "setct-OIData" */ 3147575, /* "setct-CapTokenTBEX" */
3059&(nid_objs[519]),/* "setct-PANData" */ 3148539, /* "setct-CapTokenTBS" */
3060&(nid_objs[521]),/* "setct-PANOnly" */ 3149560, /* "setct-CardCInitResTBS" */
3061&(nid_objs[520]),/* "setct-PANToken" */ 3150566, /* "setct-CertInqReqTBS" */
3062&(nid_objs[556]),/* "setct-PCertReqData" */ 3151563, /* "setct-CertReqData" */
3063&(nid_objs[557]),/* "setct-PCertResTBS" */ 3152595, /* "setct-CertReqTBE" */
3064&(nid_objs[523]),/* "setct-PI" */ 3153596, /* "setct-CertReqTBEX" */
3065&(nid_objs[532]),/* "setct-PI-TBS" */ 3154564, /* "setct-CertReqTBS" */
3066&(nid_objs[524]),/* "setct-PIData" */ 3155565, /* "setct-CertResData" */
3067&(nid_objs[525]),/* "setct-PIDataUnsigned" */ 3156597, /* "setct-CertResTBE" */
3068&(nid_objs[568]),/* "setct-PIDualSignedTBE" */ 3157586, /* "setct-CredReqTBE" */
3069&(nid_objs[569]),/* "setct-PIUnsignedTBE" */ 3158587, /* "setct-CredReqTBEX" */
3070&(nid_objs[531]),/* "setct-PInitResData" */ 3159550, /* "setct-CredReqTBS" */
3071&(nid_objs[533]),/* "setct-PResData" */ 3160551, /* "setct-CredReqTBSX" */
3072&(nid_objs[594]),/* "setct-RegFormReqTBE" */ 3161552, /* "setct-CredResData" */
3073&(nid_objs[562]),/* "setct-RegFormResTBS" */ 3162588, /* "setct-CredResTBE" */
3074&(nid_objs[606]),/* "setext-cv" */ 3163589, /* "setct-CredRevReqTBE" */
3075&(nid_objs[601]),/* "setext-genCrypt" */ 3164590, /* "setct-CredRevReqTBEX" */
3076&(nid_objs[602]),/* "setext-miAuth" */ 3165553, /* "setct-CredRevReqTBS" */
3077&(nid_objs[604]),/* "setext-pinAny" */ 3166554, /* "setct-CredRevReqTBSX" */
3078&(nid_objs[603]),/* "setext-pinSecure" */ 3167555, /* "setct-CredRevResData" */
3079&(nid_objs[605]),/* "setext-track2" */ 3168591, /* "setct-CredRevResTBE" */
3080&(nid_objs[52]),/* "signingTime" */ 3169567, /* "setct-ErrorTBS" */
3081&(nid_objs[454]),/* "simpleSecurityObject" */ 3170526, /* "setct-HODInput" */
3082&(nid_objs[496]),/* "singleLevelQuality" */ 3171561, /* "setct-MeAqCInitResTBS" */
3083&(nid_objs[387]),/* "snmpv2" */ 3172522, /* "setct-OIData" */
3084&(nid_objs[660]),/* "streetAddress" */ 3173519, /* "setct-PANData" */
3085&(nid_objs[85]),/* "subjectAltName" */ 3174521, /* "setct-PANOnly" */
3086&(nid_objs[769]),/* "subjectDirectoryAttributes" */ 3175520, /* "setct-PANToken" */
3087&(nid_objs[398]),/* "subjectInfoAccess" */ 3176556, /* "setct-PCertReqData" */
3088&(nid_objs[82]),/* "subjectKeyIdentifier" */ 3177557, /* "setct-PCertResTBS" */
3089&(nid_objs[498]),/* "subtreeMaximumQuality" */ 3178523, /* "setct-PI" */
3090&(nid_objs[497]),/* "subtreeMinimumQuality" */ 3179532, /* "setct-PI-TBS" */
3091&(nid_objs[402]),/* "targetInformation" */ 3180524, /* "setct-PIData" */
3092&(nid_objs[459]),/* "textEncodedORAddress" */ 3181525, /* "setct-PIDataUnsigned" */
3093&(nid_objs[293]),/* "textNotice" */ 3182568, /* "setct-PIDualSignedTBE" */
3094&(nid_objs[133]),/* "timeStamping" */ 3183569, /* "setct-PIUnsignedTBE" */
3095&(nid_objs[106]),/* "title" */ 3184531, /* "setct-PInitResData" */
3096&(nid_objs[682]),/* "tpBasis" */ 3185533, /* "setct-PResData" */
3097&(nid_objs[375]),/* "trustRoot" */ 3186594, /* "setct-RegFormReqTBE" */
3098&(nid_objs[436]),/* "ucl" */ 3187562, /* "setct-RegFormResTBS" */
3099&(nid_objs[55]),/* "unstructuredAddress" */ 3188606, /* "setext-cv" */
3100&(nid_objs[49]),/* "unstructuredName" */ 3189601, /* "setext-genCrypt" */
3101&(nid_objs[465]),/* "userClass" */ 3190602, /* "setext-miAuth" */
3102&(nid_objs[373]),/* "valid" */ 3191604, /* "setext-pinAny" */
3103&(nid_objs[678]),/* "wap" */ 3192603, /* "setext-pinSecure" */
3104&(nid_objs[679]),/* "wap-wsg" */ 3193605, /* "setext-track2" */
3105&(nid_objs[735]),/* "wap-wsg-idm-ecid-wtls1" */ 319452, /* "signingTime" */
3106&(nid_objs[743]),/* "wap-wsg-idm-ecid-wtls10" */ 3195454, /* "simpleSecurityObject" */
3107&(nid_objs[744]),/* "wap-wsg-idm-ecid-wtls11" */ 3196496, /* "singleLevelQuality" */
3108&(nid_objs[745]),/* "wap-wsg-idm-ecid-wtls12" */ 3197387, /* "snmpv2" */
3109&(nid_objs[736]),/* "wap-wsg-idm-ecid-wtls3" */ 3198660, /* "street" */
3110&(nid_objs[737]),/* "wap-wsg-idm-ecid-wtls4" */ 319985, /* "subjectAltName" */
3111&(nid_objs[738]),/* "wap-wsg-idm-ecid-wtls5" */ 3200769, /* "subjectDirectoryAttributes" */
3112&(nid_objs[739]),/* "wap-wsg-idm-ecid-wtls6" */ 3201398, /* "subjectInfoAccess" */
3113&(nid_objs[740]),/* "wap-wsg-idm-ecid-wtls7" */ 320282, /* "subjectKeyIdentifier" */
3114&(nid_objs[741]),/* "wap-wsg-idm-ecid-wtls8" */ 3203498, /* "subtreeMaximumQuality" */
3115&(nid_objs[742]),/* "wap-wsg-idm-ecid-wtls9" */ 3204497, /* "subtreeMinimumQuality" */
3116&(nid_objs[804]),/* "whirlpool" */ 3205890, /* "supportedAlgorithms" */
3117&(nid_objs[503]),/* "x500UniqueIdentifier" */ 3206874, /* "supportedApplicationContext" */
3118&(nid_objs[158]),/* "x509Certificate" */ 3207402, /* "targetInformation" */
3119&(nid_objs[160]),/* "x509Crl" */ 3208864, /* "telephoneNumber" */
3209866, /* "teletexTerminalIdentifier" */
3210865, /* "telexNumber" */
3211459, /* "textEncodedORAddress" */
3212293, /* "textNotice" */
3213133, /* "timeStamping" */
3214106, /* "title" */
3215682, /* "tpBasis" */
3216375, /* "trustRoot" */
3217436, /* "ucl" */
3218888, /* "uniqueMember" */
321955, /* "unstructuredAddress" */
322049, /* "unstructuredName" */
3221880, /* "userCertificate" */
3222465, /* "userClass" */
3223879, /* "userPassword" */
3224373, /* "valid" */
3225678, /* "wap" */
3226679, /* "wap-wsg" */
3227735, /* "wap-wsg-idm-ecid-wtls1" */
3228743, /* "wap-wsg-idm-ecid-wtls10" */
3229744, /* "wap-wsg-idm-ecid-wtls11" */
3230745, /* "wap-wsg-idm-ecid-wtls12" */
3231736, /* "wap-wsg-idm-ecid-wtls3" */
3232737, /* "wap-wsg-idm-ecid-wtls4" */
3233738, /* "wap-wsg-idm-ecid-wtls5" */
3234739, /* "wap-wsg-idm-ecid-wtls6" */
3235740, /* "wap-wsg-idm-ecid-wtls7" */
3236741, /* "wap-wsg-idm-ecid-wtls8" */
3237742, /* "wap-wsg-idm-ecid-wtls9" */
3238804, /* "whirlpool" */
3239868, /* "x121Address" */
3240503, /* "x500UniqueIdentifier" */
3241158, /* "x509Certificate" */
3242160, /* "x509Crl" */
3120}; 3243};
3121 3244
3122static ASN1_OBJECT *ln_objs[NUM_LN]={ 3245static const unsigned int ln_objs[NUM_LN]={
3123&(nid_objs[363]),/* "AD Time Stamping" */ 3246363, /* "AD Time Stamping" */
3124&(nid_objs[405]),/* "ANSI X9.62" */ 3247405, /* "ANSI X9.62" */
3125&(nid_objs[368]),/* "Acceptable OCSP Responses" */ 3248368, /* "Acceptable OCSP Responses" */
3126&(nid_objs[664]),/* "Any language" */ 3249664, /* "Any language" */
3127&(nid_objs[177]),/* "Authority Information Access" */ 3250177, /* "Authority Information Access" */
3128&(nid_objs[365]),/* "Basic OCSP Response" */ 3251365, /* "Basic OCSP Response" */
3129&(nid_objs[285]),/* "Biometric Info" */ 3252285, /* "Biometric Info" */
3130&(nid_objs[179]),/* "CA Issuers" */ 3253179, /* "CA Issuers" */
3131&(nid_objs[785]),/* "CA Repository" */ 3254785, /* "CA Repository" */
3132&(nid_objs[131]),/* "Code Signing" */ 3255131, /* "Code Signing" */
3133&(nid_objs[783]),/* "Diffie-Hellman based MAC" */ 3256783, /* "Diffie-Hellman based MAC" */
3134&(nid_objs[382]),/* "Directory" */ 3257382, /* "Directory" */
3135&(nid_objs[392]),/* "Domain" */ 3258392, /* "Domain" */
3136&(nid_objs[132]),/* "E-mail Protection" */ 3259132, /* "E-mail Protection" */
3137&(nid_objs[389]),/* "Enterprises" */ 3260389, /* "Enterprises" */
3138&(nid_objs[384]),/* "Experimental" */ 3261384, /* "Experimental" */
3139&(nid_objs[372]),/* "Extended OCSP Status" */ 3262372, /* "Extended OCSP Status" */
3140&(nid_objs[172]),/* "Extension Request" */ 3263172, /* "Extension Request" */
3141&(nid_objs[813]),/* "GOST 28147-89" */ 3264813, /* "GOST 28147-89" */
3142&(nid_objs[849]),/* "GOST 28147-89 Cryptocom ParamSet" */ 3265849, /* "GOST 28147-89 Cryptocom ParamSet" */
3143&(nid_objs[815]),/* "GOST 28147-89 MAC" */ 3266815, /* "GOST 28147-89 MAC" */
3144&(nid_objs[851]),/* "GOST 34.10-2001 Cryptocom" */ 3267851, /* "GOST 34.10-2001 Cryptocom" */
3145&(nid_objs[850]),/* "GOST 34.10-94 Cryptocom" */ 3268850, /* "GOST 34.10-94 Cryptocom" */
3146&(nid_objs[811]),/* "GOST R 34.10-2001" */ 3269811, /* "GOST R 34.10-2001" */
3147&(nid_objs[817]),/* "GOST R 34.10-2001 DH" */ 3270817, /* "GOST R 34.10-2001 DH" */
3148&(nid_objs[812]),/* "GOST R 34.10-94" */ 3271812, /* "GOST R 34.10-94" */
3149&(nid_objs[818]),/* "GOST R 34.10-94 DH" */ 3272818, /* "GOST R 34.10-94 DH" */
3150&(nid_objs[809]),/* "GOST R 34.11-94" */ 3273809, /* "GOST R 34.11-94" */
3151&(nid_objs[816]),/* "GOST R 34.11-94 PRF" */ 3274816, /* "GOST R 34.11-94 PRF" */
3152&(nid_objs[807]),/* "GOST R 34.11-94 with GOST R 34.10-2001" */ 3275807, /* "GOST R 34.11-94 with GOST R 34.10-2001" */
3153&(nid_objs[853]),/* "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" */ 3276853, /* "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" */
3154&(nid_objs[808]),/* "GOST R 34.11-94 with GOST R 34.10-94" */ 3277808, /* "GOST R 34.11-94 with GOST R 34.10-94" */
3155&(nid_objs[852]),/* "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" */ 3278852, /* "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" */
3156&(nid_objs[854]),/* "GOST R 3410-2001 Parameter Set Cryptocom" */ 3279854, /* "GOST R 3410-2001 Parameter Set Cryptocom" */
3157&(nid_objs[810]),/* "HMAC GOST 34.11-94" */ 3280810, /* "HMAC GOST 34.11-94" */
3158&(nid_objs[432]),/* "Hold Instruction Call Issuer" */ 3281432, /* "Hold Instruction Call Issuer" */
3159&(nid_objs[430]),/* "Hold Instruction Code" */ 3282430, /* "Hold Instruction Code" */
3160&(nid_objs[431]),/* "Hold Instruction None" */ 3283431, /* "Hold Instruction None" */
3161&(nid_objs[433]),/* "Hold Instruction Reject" */ 3284433, /* "Hold Instruction Reject" */
3162&(nid_objs[634]),/* "ICC or token signature" */ 3285634, /* "ICC or token signature" */
3163&(nid_objs[294]),/* "IPSec End System" */ 3286294, /* "IPSec End System" */
3164&(nid_objs[295]),/* "IPSec Tunnel" */ 3287295, /* "IPSec Tunnel" */
3165&(nid_objs[296]),/* "IPSec User" */ 3288296, /* "IPSec User" */
3166&(nid_objs[182]),/* "ISO Member Body" */ 3289182, /* "ISO Member Body" */
3167&(nid_objs[183]),/* "ISO US Member Body" */ 3290183, /* "ISO US Member Body" */
3168&(nid_objs[667]),/* "Independent" */ 3291667, /* "Independent" */
3169&(nid_objs[665]),/* "Inherit all" */ 3292665, /* "Inherit all" */
3170&(nid_objs[647]),/* "International Organizations" */ 3293647, /* "International Organizations" */
3171&(nid_objs[142]),/* "Invalidity Date" */ 3294142, /* "Invalidity Date" */
3172&(nid_objs[504]),/* "MIME MHS" */ 3295504, /* "MIME MHS" */
3173&(nid_objs[388]),/* "Mail" */ 3296388, /* "Mail" */
3174&(nid_objs[383]),/* "Management" */ 3297383, /* "Management" */
3175&(nid_objs[417]),/* "Microsoft CSP Name" */ 3298417, /* "Microsoft CSP Name" */
3176&(nid_objs[135]),/* "Microsoft Commercial Code Signing" */ 3299135, /* "Microsoft Commercial Code Signing" */
3177&(nid_objs[138]),/* "Microsoft Encrypted File System" */ 3300138, /* "Microsoft Encrypted File System" */
3178&(nid_objs[171]),/* "Microsoft Extension Request" */ 3301171, /* "Microsoft Extension Request" */
3179&(nid_objs[134]),/* "Microsoft Individual Code Signing" */ 3302134, /* "Microsoft Individual Code Signing" */
3180&(nid_objs[856]),/* "Microsoft Local Key set" */ 3303856, /* "Microsoft Local Key set" */
3181&(nid_objs[137]),/* "Microsoft Server Gated Crypto" */ 3304137, /* "Microsoft Server Gated Crypto" */
3182&(nid_objs[648]),/* "Microsoft Smartcardlogin" */ 3305648, /* "Microsoft Smartcardlogin" */
3183&(nid_objs[136]),/* "Microsoft Trust List Signing" */ 3306136, /* "Microsoft Trust List Signing" */
3184&(nid_objs[649]),/* "Microsoft Universal Principal Name" */ 3307649, /* "Microsoft Universal Principal Name" */
3185&(nid_objs[393]),/* "NULL" */ 3308393, /* "NULL" */
3186&(nid_objs[404]),/* "NULL" */ 3309404, /* "NULL" */
3187&(nid_objs[72]),/* "Netscape Base Url" */ 331072, /* "Netscape Base Url" */
3188&(nid_objs[76]),/* "Netscape CA Policy Url" */ 331176, /* "Netscape CA Policy Url" */
3189&(nid_objs[74]),/* "Netscape CA Revocation Url" */ 331274, /* "Netscape CA Revocation Url" */
3190&(nid_objs[71]),/* "Netscape Cert Type" */ 331371, /* "Netscape Cert Type" */
3191&(nid_objs[58]),/* "Netscape Certificate Extension" */ 331458, /* "Netscape Certificate Extension" */
3192&(nid_objs[79]),/* "Netscape Certificate Sequence" */ 331579, /* "Netscape Certificate Sequence" */
3193&(nid_objs[78]),/* "Netscape Comment" */ 331678, /* "Netscape Comment" */
3194&(nid_objs[57]),/* "Netscape Communications Corp." */ 331757, /* "Netscape Communications Corp." */
3195&(nid_objs[59]),/* "Netscape Data Type" */ 331859, /* "Netscape Data Type" */
3196&(nid_objs[75]),/* "Netscape Renewal Url" */ 331975, /* "Netscape Renewal Url" */
3197&(nid_objs[73]),/* "Netscape Revocation Url" */ 332073, /* "Netscape Revocation Url" */
3198&(nid_objs[77]),/* "Netscape SSL Server Name" */ 332177, /* "Netscape SSL Server Name" */
3199&(nid_objs[139]),/* "Netscape Server Gated Crypto" */ 3322139, /* "Netscape Server Gated Crypto" */
3200&(nid_objs[178]),/* "OCSP" */ 3323178, /* "OCSP" */
3201&(nid_objs[370]),/* "OCSP Archive Cutoff" */ 3324370, /* "OCSP Archive Cutoff" */
3202&(nid_objs[367]),/* "OCSP CRL ID" */ 3325367, /* "OCSP CRL ID" */
3203&(nid_objs[369]),/* "OCSP No Check" */ 3326369, /* "OCSP No Check" */
3204&(nid_objs[366]),/* "OCSP Nonce" */ 3327366, /* "OCSP Nonce" */
3205&(nid_objs[371]),/* "OCSP Service Locator" */ 3328371, /* "OCSP Service Locator" */
3206&(nid_objs[180]),/* "OCSP Signing" */ 3329180, /* "OCSP Signing" */
3207&(nid_objs[161]),/* "PBES2" */ 3330161, /* "PBES2" */
3208&(nid_objs[69]),/* "PBKDF2" */ 333169, /* "PBKDF2" */
3209&(nid_objs[162]),/* "PBMAC1" */ 3332162, /* "PBMAC1" */
3210&(nid_objs[127]),/* "PKIX" */ 3333127, /* "PKIX" */
3211&(nid_objs[858]),/* "Permanent Identifier" */ 3334858, /* "Permanent Identifier" */
3212&(nid_objs[164]),/* "Policy Qualifier CPS" */ 3335164, /* "Policy Qualifier CPS" */
3213&(nid_objs[165]),/* "Policy Qualifier User Notice" */ 3336165, /* "Policy Qualifier User Notice" */
3214&(nid_objs[385]),/* "Private" */ 3337385, /* "Private" */
3215&(nid_objs[663]),/* "Proxy Certificate Information" */ 3338663, /* "Proxy Certificate Information" */
3216&(nid_objs[ 1]),/* "RSA Data Security, Inc." */ 3339 1, /* "RSA Data Security, Inc." */
3217&(nid_objs[ 2]),/* "RSA Data Security, Inc. PKCS" */ 3340 2, /* "RSA Data Security, Inc. PKCS" */
3218&(nid_objs[188]),/* "S/MIME" */ 3341188, /* "S/MIME" */
3219&(nid_objs[167]),/* "S/MIME Capabilities" */ 3342167, /* "S/MIME Capabilities" */
3220&(nid_objs[387]),/* "SNMPv2" */ 3343387, /* "SNMPv2" */
3221&(nid_objs[512]),/* "Secure Electronic Transactions" */ 3344512, /* "Secure Electronic Transactions" */
3222&(nid_objs[386]),/* "Security" */ 3345386, /* "Security" */
3223&(nid_objs[394]),/* "Selected Attribute Types" */ 3346394, /* "Selected Attribute Types" */
3224&(nid_objs[143]),/* "Strong Extranet ID" */ 3347143, /* "Strong Extranet ID" */
3225&(nid_objs[398]),/* "Subject Information Access" */ 3348398, /* "Subject Information Access" */
3226&(nid_objs[130]),/* "TLS Web Client Authentication" */ 3349130, /* "TLS Web Client Authentication" */
3227&(nid_objs[129]),/* "TLS Web Server Authentication" */ 3350129, /* "TLS Web Server Authentication" */
3228&(nid_objs[133]),/* "Time Stamping" */ 3351133, /* "Time Stamping" */
3229&(nid_objs[375]),/* "Trust Root" */ 3352375, /* "Trust Root" */
3230&(nid_objs[12]),/* "X509" */ 335312, /* "X509" */
3231&(nid_objs[402]),/* "X509v3 AC Targeting" */ 3354402, /* "X509v3 AC Targeting" */
3232&(nid_objs[746]),/* "X509v3 Any Policy" */ 3355746, /* "X509v3 Any Policy" */
3233&(nid_objs[90]),/* "X509v3 Authority Key Identifier" */ 335690, /* "X509v3 Authority Key Identifier" */
3234&(nid_objs[87]),/* "X509v3 Basic Constraints" */ 335787, /* "X509v3 Basic Constraints" */
3235&(nid_objs[103]),/* "X509v3 CRL Distribution Points" */ 3358103, /* "X509v3 CRL Distribution Points" */
3236&(nid_objs[88]),/* "X509v3 CRL Number" */ 335988, /* "X509v3 CRL Number" */
3237&(nid_objs[141]),/* "X509v3 CRL Reason Code" */ 3360141, /* "X509v3 CRL Reason Code" */
3238&(nid_objs[771]),/* "X509v3 Certificate Issuer" */ 3361771, /* "X509v3 Certificate Issuer" */
3239&(nid_objs[89]),/* "X509v3 Certificate Policies" */ 336289, /* "X509v3 Certificate Policies" */
3240&(nid_objs[140]),/* "X509v3 Delta CRL Indicator" */ 3363140, /* "X509v3 Delta CRL Indicator" */
3241&(nid_objs[126]),/* "X509v3 Extended Key Usage" */ 3364126, /* "X509v3 Extended Key Usage" */
3242&(nid_objs[857]),/* "X509v3 Freshest CRL" */ 3365857, /* "X509v3 Freshest CRL" */
3243&(nid_objs[748]),/* "X509v3 Inhibit Any Policy" */ 3366748, /* "X509v3 Inhibit Any Policy" */
3244&(nid_objs[86]),/* "X509v3 Issuer Alternative Name" */ 336786, /* "X509v3 Issuer Alternative Name" */
3245&(nid_objs[770]),/* "X509v3 Issuing Distrubution Point" */ 3368770, /* "X509v3 Issuing Distrubution Point" */
3246&(nid_objs[83]),/* "X509v3 Key Usage" */ 336983, /* "X509v3 Key Usage" */
3247&(nid_objs[666]),/* "X509v3 Name Constraints" */ 3370666, /* "X509v3 Name Constraints" */
3248&(nid_objs[403]),/* "X509v3 No Revocation Available" */ 3371403, /* "X509v3 No Revocation Available" */
3249&(nid_objs[401]),/* "X509v3 Policy Constraints" */ 3372401, /* "X509v3 Policy Constraints" */
3250&(nid_objs[747]),/* "X509v3 Policy Mappings" */ 3373747, /* "X509v3 Policy Mappings" */
3251&(nid_objs[84]),/* "X509v3 Private Key Usage Period" */ 337484, /* "X509v3 Private Key Usage Period" */
3252&(nid_objs[85]),/* "X509v3 Subject Alternative Name" */ 337585, /* "X509v3 Subject Alternative Name" */
3253&(nid_objs[769]),/* "X509v3 Subject Directory Attributes" */ 3376769, /* "X509v3 Subject Directory Attributes" */
3254&(nid_objs[82]),/* "X509v3 Subject Key Identifier" */ 337782, /* "X509v3 Subject Key Identifier" */
3255&(nid_objs[184]),/* "X9.57" */ 3378184, /* "X9.57" */
3256&(nid_objs[185]),/* "X9.57 CM ?" */ 3379185, /* "X9.57 CM ?" */
3257&(nid_objs[478]),/* "aRecord" */ 3380478, /* "aRecord" */
3258&(nid_objs[289]),/* "aaControls" */ 3381289, /* "aaControls" */
3259&(nid_objs[287]),/* "ac-auditEntity" */ 3382287, /* "ac-auditEntity" */
3260&(nid_objs[397]),/* "ac-proxying" */ 3383397, /* "ac-proxying" */
3261&(nid_objs[288]),/* "ac-targeting" */ 3384288, /* "ac-targeting" */
3262&(nid_objs[446]),/* "account" */ 3385446, /* "account" */
3263&(nid_objs[364]),/* "ad dvcs" */ 3386364, /* "ad dvcs" */
3264&(nid_objs[606]),/* "additional verification" */ 3387606, /* "additional verification" */
3265&(nid_objs[419]),/* "aes-128-cbc" */ 3388419, /* "aes-128-cbc" */
3266&(nid_objs[421]),/* "aes-128-cfb" */ 3389421, /* "aes-128-cfb" */
3267&(nid_objs[650]),/* "aes-128-cfb1" */ 3390650, /* "aes-128-cfb1" */
3268&(nid_objs[653]),/* "aes-128-cfb8" */ 3391653, /* "aes-128-cfb8" */
3269&(nid_objs[418]),/* "aes-128-ecb" */ 3392418, /* "aes-128-ecb" */
3270&(nid_objs[420]),/* "aes-128-ofb" */ 3393420, /* "aes-128-ofb" */
3271&(nid_objs[423]),/* "aes-192-cbc" */ 3394423, /* "aes-192-cbc" */
3272&(nid_objs[425]),/* "aes-192-cfb" */ 3395425, /* "aes-192-cfb" */
3273&(nid_objs[651]),/* "aes-192-cfb1" */ 3396651, /* "aes-192-cfb1" */
3274&(nid_objs[654]),/* "aes-192-cfb8" */ 3397654, /* "aes-192-cfb8" */
3275&(nid_objs[422]),/* "aes-192-ecb" */ 3398422, /* "aes-192-ecb" */
3276&(nid_objs[424]),/* "aes-192-ofb" */ 3399424, /* "aes-192-ofb" */
3277&(nid_objs[427]),/* "aes-256-cbc" */ 3400427, /* "aes-256-cbc" */
3278&(nid_objs[429]),/* "aes-256-cfb" */ 3401429, /* "aes-256-cfb" */
3279&(nid_objs[652]),/* "aes-256-cfb1" */ 3402652, /* "aes-256-cfb1" */
3280&(nid_objs[655]),/* "aes-256-cfb8" */ 3403655, /* "aes-256-cfb8" */
3281&(nid_objs[426]),/* "aes-256-ecb" */ 3404426, /* "aes-256-ecb" */
3282&(nid_objs[428]),/* "aes-256-ofb" */ 3405428, /* "aes-256-ofb" */
3283&(nid_objs[376]),/* "algorithm" */ 3406376, /* "algorithm" */
3284&(nid_objs[484]),/* "associatedDomain" */ 3407484, /* "associatedDomain" */
3285&(nid_objs[485]),/* "associatedName" */ 3408485, /* "associatedName" */
3286&(nid_objs[501]),/* "audio" */ 3409501, /* "audio" */
3287&(nid_objs[91]),/* "bf-cbc" */ 3410882, /* "authorityRevocationList" */
3288&(nid_objs[93]),/* "bf-cfb" */ 341191, /* "bf-cbc" */
3289&(nid_objs[92]),/* "bf-ecb" */ 341293, /* "bf-cfb" */
3290&(nid_objs[94]),/* "bf-ofb" */ 341392, /* "bf-ecb" */
3291&(nid_objs[494]),/* "buildingName" */ 341494, /* "bf-ofb" */
3292&(nid_objs[691]),/* "c2onb191v4" */ 3415494, /* "buildingName" */
3293&(nid_objs[692]),/* "c2onb191v5" */ 3416860, /* "businessCategory" */
3294&(nid_objs[697]),/* "c2onb239v4" */ 3417691, /* "c2onb191v4" */
3295&(nid_objs[698]),/* "c2onb239v5" */ 3418692, /* "c2onb191v5" */
3296&(nid_objs[684]),/* "c2pnb163v1" */ 3419697, /* "c2onb239v4" */
3297&(nid_objs[685]),/* "c2pnb163v2" */ 3420698, /* "c2onb239v5" */
3298&(nid_objs[686]),/* "c2pnb163v3" */ 3421684, /* "c2pnb163v1" */
3299&(nid_objs[687]),/* "c2pnb176v1" */ 3422685, /* "c2pnb163v2" */
3300&(nid_objs[693]),/* "c2pnb208w1" */ 3423686, /* "c2pnb163v3" */
3301&(nid_objs[699]),/* "c2pnb272w1" */ 3424687, /* "c2pnb176v1" */
3302&(nid_objs[700]),/* "c2pnb304w1" */ 3425693, /* "c2pnb208w1" */
3303&(nid_objs[702]),/* "c2pnb368w1" */ 3426699, /* "c2pnb272w1" */
3304&(nid_objs[688]),/* "c2tnb191v1" */ 3427700, /* "c2pnb304w1" */
3305&(nid_objs[689]),/* "c2tnb191v2" */ 3428702, /* "c2pnb368w1" */
3306&(nid_objs[690]),/* "c2tnb191v3" */ 3429688, /* "c2tnb191v1" */
3307&(nid_objs[694]),/* "c2tnb239v1" */ 3430689, /* "c2tnb191v2" */
3308&(nid_objs[695]),/* "c2tnb239v2" */ 3431690, /* "c2tnb191v3" */
3309&(nid_objs[696]),/* "c2tnb239v3" */ 3432694, /* "c2tnb239v1" */
3310&(nid_objs[701]),/* "c2tnb359v1" */ 3433695, /* "c2tnb239v2" */
3311&(nid_objs[703]),/* "c2tnb431r1" */ 3434696, /* "c2tnb239v3" */
3312&(nid_objs[483]),/* "cNAMERecord" */ 3435701, /* "c2tnb359v1" */
3313&(nid_objs[751]),/* "camellia-128-cbc" */ 3436703, /* "c2tnb431r1" */
3314&(nid_objs[757]),/* "camellia-128-cfb" */ 3437881, /* "cACertificate" */
3315&(nid_objs[760]),/* "camellia-128-cfb1" */ 3438483, /* "cNAMERecord" */
3316&(nid_objs[763]),/* "camellia-128-cfb8" */ 3439751, /* "camellia-128-cbc" */
3317&(nid_objs[754]),/* "camellia-128-ecb" */ 3440757, /* "camellia-128-cfb" */
3318&(nid_objs[766]),/* "camellia-128-ofb" */ 3441760, /* "camellia-128-cfb1" */
3319&(nid_objs[752]),/* "camellia-192-cbc" */ 3442763, /* "camellia-128-cfb8" */
3320&(nid_objs[758]),/* "camellia-192-cfb" */ 3443754, /* "camellia-128-ecb" */
3321&(nid_objs[761]),/* "camellia-192-cfb1" */ 3444766, /* "camellia-128-ofb" */
3322&(nid_objs[764]),/* "camellia-192-cfb8" */ 3445752, /* "camellia-192-cbc" */
3323&(nid_objs[755]),/* "camellia-192-ecb" */ 3446758, /* "camellia-192-cfb" */
3324&(nid_objs[767]),/* "camellia-192-ofb" */ 3447761, /* "camellia-192-cfb1" */
3325&(nid_objs[753]),/* "camellia-256-cbc" */ 3448764, /* "camellia-192-cfb8" */
3326&(nid_objs[759]),/* "camellia-256-cfb" */ 3449755, /* "camellia-192-ecb" */
3327&(nid_objs[762]),/* "camellia-256-cfb1" */ 3450767, /* "camellia-192-ofb" */
3328&(nid_objs[765]),/* "camellia-256-cfb8" */ 3451753, /* "camellia-256-cbc" */
3329&(nid_objs[756]),/* "camellia-256-ecb" */ 3452759, /* "camellia-256-cfb" */
3330&(nid_objs[768]),/* "camellia-256-ofb" */ 3453762, /* "camellia-256-cfb1" */
3331&(nid_objs[443]),/* "caseIgnoreIA5StringSyntax" */ 3454765, /* "camellia-256-cfb8" */
3332&(nid_objs[108]),/* "cast5-cbc" */ 3455756, /* "camellia-256-ecb" */
3333&(nid_objs[110]),/* "cast5-cfb" */ 3456768, /* "camellia-256-ofb" */
3334&(nid_objs[109]),/* "cast5-ecb" */ 3457443, /* "caseIgnoreIA5StringSyntax" */
3335&(nid_objs[111]),/* "cast5-ofb" */ 3458108, /* "cast5-cbc" */
3336&(nid_objs[152]),/* "certBag" */ 3459110, /* "cast5-cfb" */
3337&(nid_objs[677]),/* "certicom-arc" */ 3460109, /* "cast5-ecb" */
3338&(nid_objs[517]),/* "certificate extensions" */ 3461111, /* "cast5-ofb" */
3339&(nid_objs[54]),/* "challengePassword" */ 3462152, /* "certBag" */
3340&(nid_objs[407]),/* "characteristic-two-field" */ 3463677, /* "certicom-arc" */
3341&(nid_objs[395]),/* "clearance" */ 3464517, /* "certificate extensions" */
3342&(nid_objs[633]),/* "cleartext track 2" */ 3465883, /* "certificateRevocationList" */
3343&(nid_objs[13]),/* "commonName" */ 346654, /* "challengePassword" */
3344&(nid_objs[513]),/* "content types" */ 3467407, /* "characteristic-two-field" */
3345&(nid_objs[50]),/* "contentType" */ 3468395, /* "clearance" */
3346&(nid_objs[53]),/* "countersignature" */ 3469633, /* "cleartext track 2" */
3347&(nid_objs[14]),/* "countryName" */ 347013, /* "commonName" */
3348&(nid_objs[153]),/* "crlBag" */ 3471513, /* "content types" */
3349&(nid_objs[806]),/* "cryptocom" */ 347250, /* "contentType" */
3350&(nid_objs[805]),/* "cryptopro" */ 347353, /* "countersignature" */
3351&(nid_objs[500]),/* "dITRedirect" */ 347414, /* "countryName" */
3352&(nid_objs[451]),/* "dNSDomain" */ 3475153, /* "crlBag" */
3353&(nid_objs[495]),/* "dSAQuality" */ 3476884, /* "crossCertificatePair" */
3354&(nid_objs[434]),/* "data" */ 3477806, /* "cryptocom" */
3355&(nid_objs[390]),/* "dcObject" */ 3478805, /* "cryptopro" */
3356&(nid_objs[31]),/* "des-cbc" */ 3479500, /* "dITRedirect" */
3357&(nid_objs[643]),/* "des-cdmf" */ 3480451, /* "dNSDomain" */
3358&(nid_objs[30]),/* "des-cfb" */ 3481495, /* "dSAQuality" */
3359&(nid_objs[656]),/* "des-cfb1" */ 3482434, /* "data" */
3360&(nid_objs[657]),/* "des-cfb8" */ 3483390, /* "dcObject" */
3361&(nid_objs[29]),/* "des-ecb" */ 3484891, /* "deltaRevocationList" */
3362&(nid_objs[32]),/* "des-ede" */ 348531, /* "des-cbc" */
3363&(nid_objs[43]),/* "des-ede-cbc" */ 3486643, /* "des-cdmf" */
3364&(nid_objs[60]),/* "des-ede-cfb" */ 348730, /* "des-cfb" */
3365&(nid_objs[62]),/* "des-ede-ofb" */ 3488656, /* "des-cfb1" */
3366&(nid_objs[33]),/* "des-ede3" */ 3489657, /* "des-cfb8" */
3367&(nid_objs[44]),/* "des-ede3-cbc" */ 349029, /* "des-ecb" */
3368&(nid_objs[61]),/* "des-ede3-cfb" */ 349132, /* "des-ede" */
3369&(nid_objs[658]),/* "des-ede3-cfb1" */ 349243, /* "des-ede-cbc" */
3370&(nid_objs[659]),/* "des-ede3-cfb8" */ 349360, /* "des-ede-cfb" */
3371&(nid_objs[63]),/* "des-ede3-ofb" */ 349462, /* "des-ede-ofb" */
3372&(nid_objs[45]),/* "des-ofb" */ 349533, /* "des-ede3" */
3373&(nid_objs[107]),/* "description" */ 349644, /* "des-ede3-cbc" */
3374&(nid_objs[80]),/* "desx-cbc" */ 349761, /* "des-ede3-cfb" */
3375&(nid_objs[28]),/* "dhKeyAgreement" */ 3498658, /* "des-ede3-cfb1" */
3376&(nid_objs[11]),/* "directory services (X.500)" */ 3499659, /* "des-ede3-cfb8" */
3377&(nid_objs[378]),/* "directory services - algorithms" */ 350063, /* "des-ede3-ofb" */
3378&(nid_objs[174]),/* "dnQualifier" */ 350145, /* "des-ofb" */
3379&(nid_objs[447]),/* "document" */ 3502107, /* "description" */
3380&(nid_objs[471]),/* "documentAuthor" */ 3503871, /* "destinationIndicator" */
3381&(nid_objs[468]),/* "documentIdentifier" */ 350480, /* "desx-cbc" */
3382&(nid_objs[472]),/* "documentLocation" */ 350528, /* "dhKeyAgreement" */
3383&(nid_objs[502]),/* "documentPublisher" */ 350611, /* "directory services (X.500)" */
3384&(nid_objs[449]),/* "documentSeries" */ 3507378, /* "directory services - algorithms" */
3385&(nid_objs[469]),/* "documentTitle" */ 3508887, /* "distinguishedName" */
3386&(nid_objs[470]),/* "documentVersion" */ 3509892, /* "dmdName" */
3387&(nid_objs[380]),/* "dod" */ 3510174, /* "dnQualifier" */
3388&(nid_objs[391]),/* "domainComponent" */ 3511447, /* "document" */
3389&(nid_objs[452]),/* "domainRelatedObject" */ 3512471, /* "documentAuthor" */
3390&(nid_objs[116]),/* "dsaEncryption" */ 3513468, /* "documentIdentifier" */
3391&(nid_objs[67]),/* "dsaEncryption-old" */ 3514472, /* "documentLocation" */
3392&(nid_objs[66]),/* "dsaWithSHA" */ 3515502, /* "documentPublisher" */
3393&(nid_objs[113]),/* "dsaWithSHA1" */ 3516449, /* "documentSeries" */
3394&(nid_objs[70]),/* "dsaWithSHA1-old" */ 3517469, /* "documentTitle" */
3395&(nid_objs[802]),/* "dsa_with_SHA224" */ 3518470, /* "documentVersion" */
3396&(nid_objs[803]),/* "dsa_with_SHA256" */ 3519380, /* "dod" */
3397&(nid_objs[297]),/* "dvcs" */ 3520391, /* "domainComponent" */
3398&(nid_objs[791]),/* "ecdsa-with-Recommended" */ 3521452, /* "domainRelatedObject" */
3399&(nid_objs[416]),/* "ecdsa-with-SHA1" */ 3522116, /* "dsaEncryption" */
3400&(nid_objs[793]),/* "ecdsa-with-SHA224" */ 352367, /* "dsaEncryption-old" */
3401&(nid_objs[794]),/* "ecdsa-with-SHA256" */ 352466, /* "dsaWithSHA" */
3402&(nid_objs[795]),/* "ecdsa-with-SHA384" */ 3525113, /* "dsaWithSHA1" */
3403&(nid_objs[796]),/* "ecdsa-with-SHA512" */ 352670, /* "dsaWithSHA1-old" */
3404&(nid_objs[792]),/* "ecdsa-with-Specified" */ 3527802, /* "dsa_with_SHA224" */
3405&(nid_objs[48]),/* "emailAddress" */ 3528803, /* "dsa_with_SHA256" */
3406&(nid_objs[632]),/* "encrypted track 2" */ 3529297, /* "dvcs" */
3407&(nid_objs[56]),/* "extendedCertificateAttributes" */ 3530791, /* "ecdsa-with-Recommended" */
3408&(nid_objs[462]),/* "favouriteDrink" */ 3531416, /* "ecdsa-with-SHA1" */
3409&(nid_objs[453]),/* "friendlyCountry" */ 3532793, /* "ecdsa-with-SHA224" */
3410&(nid_objs[490]),/* "friendlyCountryName" */ 3533794, /* "ecdsa-with-SHA256" */
3411&(nid_objs[156]),/* "friendlyName" */ 3534795, /* "ecdsa-with-SHA384" */
3412&(nid_objs[631]),/* "generate cryptogram" */ 3535796, /* "ecdsa-with-SHA512" */
3413&(nid_objs[509]),/* "generationQualifier" */ 3536792, /* "ecdsa-with-Specified" */
3414&(nid_objs[601]),/* "generic cryptogram" */ 353748, /* "emailAddress" */
3415&(nid_objs[99]),/* "givenName" */ 3538632, /* "encrypted track 2" */
3416&(nid_objs[814]),/* "gost89-cnt" */ 3539885, /* "enhancedSearchGuide" */
3417&(nid_objs[855]),/* "hmac" */ 354056, /* "extendedCertificateAttributes" */
3418&(nid_objs[780]),/* "hmac-md5" */ 3541867, /* "facsimileTelephoneNumber" */
3419&(nid_objs[781]),/* "hmac-sha1" */ 3542462, /* "favouriteDrink" */
3420&(nid_objs[797]),/* "hmacWithMD5" */ 3543453, /* "friendlyCountry" */
3421&(nid_objs[163]),/* "hmacWithSHA1" */ 3544490, /* "friendlyCountryName" */
3422&(nid_objs[798]),/* "hmacWithSHA224" */ 3545156, /* "friendlyName" */
3423&(nid_objs[799]),/* "hmacWithSHA256" */ 3546631, /* "generate cryptogram" */
3424&(nid_objs[800]),/* "hmacWithSHA384" */ 3547509, /* "generationQualifier" */
3425&(nid_objs[801]),/* "hmacWithSHA512" */ 3548601, /* "generic cryptogram" */
3426&(nid_objs[486]),/* "homePostalAddress" */ 354999, /* "givenName" */
3427&(nid_objs[473]),/* "homeTelephoneNumber" */ 3550814, /* "gost89-cnt" */
3428&(nid_objs[466]),/* "host" */ 3551855, /* "hmac" */
3429&(nid_objs[442]),/* "iA5StringSyntax" */ 3552780, /* "hmac-md5" */
3430&(nid_objs[381]),/* "iana" */ 3553781, /* "hmac-sha1" */
3431&(nid_objs[824]),/* "id-Gost28147-89-CryptoPro-A-ParamSet" */ 3554797, /* "hmacWithMD5" */
3432&(nid_objs[825]),/* "id-Gost28147-89-CryptoPro-B-ParamSet" */ 3555163, /* "hmacWithSHA1" */
3433&(nid_objs[826]),/* "id-Gost28147-89-CryptoPro-C-ParamSet" */ 3556798, /* "hmacWithSHA224" */
3434&(nid_objs[827]),/* "id-Gost28147-89-CryptoPro-D-ParamSet" */ 3557799, /* "hmacWithSHA256" */
3435&(nid_objs[819]),/* "id-Gost28147-89-CryptoPro-KeyMeshing" */ 3558800, /* "hmacWithSHA384" */
3436&(nid_objs[829]),/* "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" */ 3559801, /* "hmacWithSHA512" */
3437&(nid_objs[828]),/* "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" */ 3560486, /* "homePostalAddress" */
3438&(nid_objs[830]),/* "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" */ 3561473, /* "homeTelephoneNumber" */
3439&(nid_objs[820]),/* "id-Gost28147-89-None-KeyMeshing" */ 3562466, /* "host" */
3440&(nid_objs[823]),/* "id-Gost28147-89-TestParamSet" */ 3563889, /* "houseIdentifier" */
3441&(nid_objs[840]),/* "id-GostR3410-2001-CryptoPro-A-ParamSet" */ 3564442, /* "iA5StringSyntax" */
3442&(nid_objs[841]),/* "id-GostR3410-2001-CryptoPro-B-ParamSet" */ 3565381, /* "iana" */
3443&(nid_objs[842]),/* "id-GostR3410-2001-CryptoPro-C-ParamSet" */ 3566824, /* "id-Gost28147-89-CryptoPro-A-ParamSet" */
3444&(nid_objs[843]),/* "id-GostR3410-2001-CryptoPro-XchA-ParamSet" */ 3567825, /* "id-Gost28147-89-CryptoPro-B-ParamSet" */
3445&(nid_objs[844]),/* "id-GostR3410-2001-CryptoPro-XchB-ParamSet" */ 3568826, /* "id-Gost28147-89-CryptoPro-C-ParamSet" */
3446&(nid_objs[839]),/* "id-GostR3410-2001-TestParamSet" */ 3569827, /* "id-Gost28147-89-CryptoPro-D-ParamSet" */
3447&(nid_objs[832]),/* "id-GostR3410-94-CryptoPro-A-ParamSet" */ 3570819, /* "id-Gost28147-89-CryptoPro-KeyMeshing" */
3448&(nid_objs[833]),/* "id-GostR3410-94-CryptoPro-B-ParamSet" */ 3571829, /* "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" */
3449&(nid_objs[834]),/* "id-GostR3410-94-CryptoPro-C-ParamSet" */ 3572828, /* "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" */
3450&(nid_objs[835]),/* "id-GostR3410-94-CryptoPro-D-ParamSet" */ 3573830, /* "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" */
3451&(nid_objs[836]),/* "id-GostR3410-94-CryptoPro-XchA-ParamSet" */ 3574820, /* "id-Gost28147-89-None-KeyMeshing" */
3452&(nid_objs[837]),/* "id-GostR3410-94-CryptoPro-XchB-ParamSet" */ 3575823, /* "id-Gost28147-89-TestParamSet" */
3453&(nid_objs[838]),/* "id-GostR3410-94-CryptoPro-XchC-ParamSet" */ 3576840, /* "id-GostR3410-2001-CryptoPro-A-ParamSet" */
3454&(nid_objs[831]),/* "id-GostR3410-94-TestParamSet" */ 3577841, /* "id-GostR3410-2001-CryptoPro-B-ParamSet" */
3455&(nid_objs[845]),/* "id-GostR3410-94-a" */ 3578842, /* "id-GostR3410-2001-CryptoPro-C-ParamSet" */
3456&(nid_objs[846]),/* "id-GostR3410-94-aBis" */ 3579843, /* "id-GostR3410-2001-CryptoPro-XchA-ParamSet" */
3457&(nid_objs[847]),/* "id-GostR3410-94-b" */ 3580844, /* "id-GostR3410-2001-CryptoPro-XchB-ParamSet" */
3458&(nid_objs[848]),/* "id-GostR3410-94-bBis" */ 3581839, /* "id-GostR3410-2001-TestParamSet" */
3459&(nid_objs[822]),/* "id-GostR3411-94-CryptoProParamSet" */ 3582832, /* "id-GostR3410-94-CryptoPro-A-ParamSet" */
3460&(nid_objs[821]),/* "id-GostR3411-94-TestParamSet" */ 3583833, /* "id-GostR3410-94-CryptoPro-B-ParamSet" */
3461&(nid_objs[266]),/* "id-aca" */ 3584834, /* "id-GostR3410-94-CryptoPro-C-ParamSet" */
3462&(nid_objs[355]),/* "id-aca-accessIdentity" */ 3585835, /* "id-GostR3410-94-CryptoPro-D-ParamSet" */
3463&(nid_objs[354]),/* "id-aca-authenticationInfo" */ 3586836, /* "id-GostR3410-94-CryptoPro-XchA-ParamSet" */
3464&(nid_objs[356]),/* "id-aca-chargingIdentity" */ 3587837, /* "id-GostR3410-94-CryptoPro-XchB-ParamSet" */
3465&(nid_objs[399]),/* "id-aca-encAttrs" */ 3588838, /* "id-GostR3410-94-CryptoPro-XchC-ParamSet" */
3466&(nid_objs[357]),/* "id-aca-group" */ 3589831, /* "id-GostR3410-94-TestParamSet" */
3467&(nid_objs[358]),/* "id-aca-role" */ 3590845, /* "id-GostR3410-94-a" */
3468&(nid_objs[176]),/* "id-ad" */ 3591846, /* "id-GostR3410-94-aBis" */
3469&(nid_objs[788]),/* "id-aes128-wrap" */ 3592847, /* "id-GostR3410-94-b" */
3470&(nid_objs[789]),/* "id-aes192-wrap" */ 3593848, /* "id-GostR3410-94-bBis" */
3471&(nid_objs[790]),/* "id-aes256-wrap" */ 3594822, /* "id-GostR3411-94-CryptoProParamSet" */
3472&(nid_objs[262]),/* "id-alg" */ 3595821, /* "id-GostR3411-94-TestParamSet" */
3473&(nid_objs[323]),/* "id-alg-des40" */ 3596266, /* "id-aca" */
3474&(nid_objs[326]),/* "id-alg-dh-pop" */ 3597355, /* "id-aca-accessIdentity" */
3475&(nid_objs[325]),/* "id-alg-dh-sig-hmac-sha1" */ 3598354, /* "id-aca-authenticationInfo" */
3476&(nid_objs[324]),/* "id-alg-noSignature" */ 3599356, /* "id-aca-chargingIdentity" */
3477&(nid_objs[268]),/* "id-cct" */ 3600399, /* "id-aca-encAttrs" */
3478&(nid_objs[361]),/* "id-cct-PKIData" */ 3601357, /* "id-aca-group" */
3479&(nid_objs[362]),/* "id-cct-PKIResponse" */ 3602358, /* "id-aca-role" */
3480&(nid_objs[360]),/* "id-cct-crs" */ 3603176, /* "id-ad" */
3481&(nid_objs[81]),/* "id-ce" */ 3604788, /* "id-aes128-wrap" */
3482&(nid_objs[680]),/* "id-characteristic-two-basis" */ 3605789, /* "id-aes192-wrap" */
3483&(nid_objs[263]),/* "id-cmc" */ 3606790, /* "id-aes256-wrap" */
3484&(nid_objs[334]),/* "id-cmc-addExtensions" */ 3607262, /* "id-alg" */
3485&(nid_objs[346]),/* "id-cmc-confirmCertAcceptance" */ 3608323, /* "id-alg-des40" */
3486&(nid_objs[330]),/* "id-cmc-dataReturn" */ 3609326, /* "id-alg-dh-pop" */
3487&(nid_objs[336]),/* "id-cmc-decryptedPOP" */ 3610325, /* "id-alg-dh-sig-hmac-sha1" */
3488&(nid_objs[335]),/* "id-cmc-encryptedPOP" */ 3611324, /* "id-alg-noSignature" */
3489&(nid_objs[339]),/* "id-cmc-getCRL" */ 3612268, /* "id-cct" */
3490&(nid_objs[338]),/* "id-cmc-getCert" */ 3613361, /* "id-cct-PKIData" */
3491&(nid_objs[328]),/* "id-cmc-identification" */ 3614362, /* "id-cct-PKIResponse" */
3492&(nid_objs[329]),/* "id-cmc-identityProof" */ 3615360, /* "id-cct-crs" */
3493&(nid_objs[337]),/* "id-cmc-lraPOPWitness" */ 361681, /* "id-ce" */
3494&(nid_objs[344]),/* "id-cmc-popLinkRandom" */ 3617680, /* "id-characteristic-two-basis" */
3495&(nid_objs[345]),/* "id-cmc-popLinkWitness" */ 3618263, /* "id-cmc" */
3496&(nid_objs[343]),/* "id-cmc-queryPending" */ 3619334, /* "id-cmc-addExtensions" */
3497&(nid_objs[333]),/* "id-cmc-recipientNonce" */ 3620346, /* "id-cmc-confirmCertAcceptance" */
3498&(nid_objs[341]),/* "id-cmc-regInfo" */ 3621330, /* "id-cmc-dataReturn" */
3499&(nid_objs[342]),/* "id-cmc-responseInfo" */ 3622336, /* "id-cmc-decryptedPOP" */
3500&(nid_objs[340]),/* "id-cmc-revokeRequest" */ 3623335, /* "id-cmc-encryptedPOP" */
3501&(nid_objs[332]),/* "id-cmc-senderNonce" */ 3624339, /* "id-cmc-getCRL" */
3502&(nid_objs[327]),/* "id-cmc-statusInfo" */ 3625338, /* "id-cmc-getCert" */
3503&(nid_objs[331]),/* "id-cmc-transactionId" */ 3626328, /* "id-cmc-identification" */
3504&(nid_objs[787]),/* "id-ct-asciiTextWithCRLF" */ 3627329, /* "id-cmc-identityProof" */
3505&(nid_objs[408]),/* "id-ecPublicKey" */ 3628337, /* "id-cmc-lraPOPWitness" */
3506&(nid_objs[508]),/* "id-hex-multipart-message" */ 3629344, /* "id-cmc-popLinkRandom" */
3507&(nid_objs[507]),/* "id-hex-partial-message" */ 3630345, /* "id-cmc-popLinkWitness" */
3508&(nid_objs[260]),/* "id-it" */ 3631343, /* "id-cmc-queryPending" */
3509&(nid_objs[302]),/* "id-it-caKeyUpdateInfo" */ 3632333, /* "id-cmc-recipientNonce" */
3510&(nid_objs[298]),/* "id-it-caProtEncCert" */ 3633341, /* "id-cmc-regInfo" */
3511&(nid_objs[311]),/* "id-it-confirmWaitTime" */ 3634342, /* "id-cmc-responseInfo" */
3512&(nid_objs[303]),/* "id-it-currentCRL" */ 3635340, /* "id-cmc-revokeRequest" */
3513&(nid_objs[300]),/* "id-it-encKeyPairTypes" */ 3636332, /* "id-cmc-senderNonce" */
3514&(nid_objs[310]),/* "id-it-implicitConfirm" */ 3637327, /* "id-cmc-statusInfo" */
3515&(nid_objs[308]),/* "id-it-keyPairParamRep" */ 3638331, /* "id-cmc-transactionId" */
3516&(nid_objs[307]),/* "id-it-keyPairParamReq" */ 3639787, /* "id-ct-asciiTextWithCRLF" */
3517&(nid_objs[312]),/* "id-it-origPKIMessage" */ 3640408, /* "id-ecPublicKey" */
3518&(nid_objs[301]),/* "id-it-preferredSymmAlg" */ 3641508, /* "id-hex-multipart-message" */
3519&(nid_objs[309]),/* "id-it-revPassphrase" */ 3642507, /* "id-hex-partial-message" */
3520&(nid_objs[299]),/* "id-it-signKeyPairTypes" */ 3643260, /* "id-it" */
3521&(nid_objs[305]),/* "id-it-subscriptionRequest" */ 3644302, /* "id-it-caKeyUpdateInfo" */
3522&(nid_objs[306]),/* "id-it-subscriptionResponse" */ 3645298, /* "id-it-caProtEncCert" */
3523&(nid_objs[784]),/* "id-it-suppLangTags" */ 3646311, /* "id-it-confirmWaitTime" */
3524&(nid_objs[304]),/* "id-it-unsupportedOIDs" */ 3647303, /* "id-it-currentCRL" */
3525&(nid_objs[128]),/* "id-kp" */ 3648300, /* "id-it-encKeyPairTypes" */
3526&(nid_objs[280]),/* "id-mod-attribute-cert" */ 3649310, /* "id-it-implicitConfirm" */
3527&(nid_objs[274]),/* "id-mod-cmc" */ 3650308, /* "id-it-keyPairParamRep" */
3528&(nid_objs[277]),/* "id-mod-cmp" */ 3651307, /* "id-it-keyPairParamReq" */
3529&(nid_objs[284]),/* "id-mod-cmp2000" */ 3652312, /* "id-it-origPKIMessage" */
3530&(nid_objs[273]),/* "id-mod-crmf" */ 3653301, /* "id-it-preferredSymmAlg" */
3531&(nid_objs[283]),/* "id-mod-dvcs" */ 3654309, /* "id-it-revPassphrase" */
3532&(nid_objs[275]),/* "id-mod-kea-profile-88" */ 3655299, /* "id-it-signKeyPairTypes" */
3533&(nid_objs[276]),/* "id-mod-kea-profile-93" */ 3656305, /* "id-it-subscriptionRequest" */
3534&(nid_objs[282]),/* "id-mod-ocsp" */ 3657306, /* "id-it-subscriptionResponse" */
3535&(nid_objs[278]),/* "id-mod-qualified-cert-88" */ 3658784, /* "id-it-suppLangTags" */
3536&(nid_objs[279]),/* "id-mod-qualified-cert-93" */ 3659304, /* "id-it-unsupportedOIDs" */
3537&(nid_objs[281]),/* "id-mod-timestamp-protocol" */ 3660128, /* "id-kp" */
3538&(nid_objs[264]),/* "id-on" */ 3661280, /* "id-mod-attribute-cert" */
3539&(nid_objs[347]),/* "id-on-personalData" */ 3662274, /* "id-mod-cmc" */
3540&(nid_objs[265]),/* "id-pda" */ 3663277, /* "id-mod-cmp" */
3541&(nid_objs[352]),/* "id-pda-countryOfCitizenship" */ 3664284, /* "id-mod-cmp2000" */
3542&(nid_objs[353]),/* "id-pda-countryOfResidence" */ 3665273, /* "id-mod-crmf" */
3543&(nid_objs[348]),/* "id-pda-dateOfBirth" */ 3666283, /* "id-mod-dvcs" */
3544&(nid_objs[351]),/* "id-pda-gender" */ 3667275, /* "id-mod-kea-profile-88" */
3545&(nid_objs[349]),/* "id-pda-placeOfBirth" */ 3668276, /* "id-mod-kea-profile-93" */
3546&(nid_objs[175]),/* "id-pe" */ 3669282, /* "id-mod-ocsp" */
3547&(nid_objs[261]),/* "id-pkip" */ 3670278, /* "id-mod-qualified-cert-88" */
3548&(nid_objs[258]),/* "id-pkix-mod" */ 3671279, /* "id-mod-qualified-cert-93" */
3549&(nid_objs[269]),/* "id-pkix1-explicit-88" */ 3672281, /* "id-mod-timestamp-protocol" */
3550&(nid_objs[271]),/* "id-pkix1-explicit-93" */ 3673264, /* "id-on" */
3551&(nid_objs[270]),/* "id-pkix1-implicit-88" */ 3674347, /* "id-on-personalData" */
3552&(nid_objs[272]),/* "id-pkix1-implicit-93" */ 3675265, /* "id-pda" */
3553&(nid_objs[662]),/* "id-ppl" */ 3676352, /* "id-pda-countryOfCitizenship" */
3554&(nid_objs[267]),/* "id-qcs" */ 3677353, /* "id-pda-countryOfResidence" */
3555&(nid_objs[359]),/* "id-qcs-pkixQCSyntax-v1" */ 3678348, /* "id-pda-dateOfBirth" */
3556&(nid_objs[259]),/* "id-qt" */ 3679351, /* "id-pda-gender" */
3557&(nid_objs[313]),/* "id-regCtrl" */ 3680349, /* "id-pda-placeOfBirth" */
3558&(nid_objs[316]),/* "id-regCtrl-authenticator" */ 3681175, /* "id-pe" */
3559&(nid_objs[319]),/* "id-regCtrl-oldCertID" */ 3682261, /* "id-pkip" */
3560&(nid_objs[318]),/* "id-regCtrl-pkiArchiveOptions" */ 3683258, /* "id-pkix-mod" */
3561&(nid_objs[317]),/* "id-regCtrl-pkiPublicationInfo" */ 3684269, /* "id-pkix1-explicit-88" */
3562&(nid_objs[320]),/* "id-regCtrl-protocolEncrKey" */ 3685271, /* "id-pkix1-explicit-93" */
3563&(nid_objs[315]),/* "id-regCtrl-regToken" */ 3686270, /* "id-pkix1-implicit-88" */
3564&(nid_objs[314]),/* "id-regInfo" */ 3687272, /* "id-pkix1-implicit-93" */
3565&(nid_objs[322]),/* "id-regInfo-certReq" */ 3688662, /* "id-ppl" */
3566&(nid_objs[321]),/* "id-regInfo-utf8Pairs" */ 3689267, /* "id-qcs" */
3567&(nid_objs[191]),/* "id-smime-aa" */ 3690359, /* "id-qcs-pkixQCSyntax-v1" */
3568&(nid_objs[215]),/* "id-smime-aa-contentHint" */ 3691259, /* "id-qt" */
3569&(nid_objs[218]),/* "id-smime-aa-contentIdentifier" */ 3692313, /* "id-regCtrl" */
3570&(nid_objs[221]),/* "id-smime-aa-contentReference" */ 3693316, /* "id-regCtrl-authenticator" */
3571&(nid_objs[240]),/* "id-smime-aa-dvcs-dvc" */ 3694319, /* "id-regCtrl-oldCertID" */
3572&(nid_objs[217]),/* "id-smime-aa-encapContentType" */ 3695318, /* "id-regCtrl-pkiArchiveOptions" */
3573&(nid_objs[222]),/* "id-smime-aa-encrypKeyPref" */ 3696317, /* "id-regCtrl-pkiPublicationInfo" */
3574&(nid_objs[220]),/* "id-smime-aa-equivalentLabels" */ 3697320, /* "id-regCtrl-protocolEncrKey" */
3575&(nid_objs[232]),/* "id-smime-aa-ets-CertificateRefs" */ 3698315, /* "id-regCtrl-regToken" */
3576&(nid_objs[233]),/* "id-smime-aa-ets-RevocationRefs" */ 3699314, /* "id-regInfo" */
3577&(nid_objs[238]),/* "id-smime-aa-ets-archiveTimeStamp" */ 3700322, /* "id-regInfo-certReq" */
3578&(nid_objs[237]),/* "id-smime-aa-ets-certCRLTimestamp" */ 3701321, /* "id-regInfo-utf8Pairs" */
3579&(nid_objs[234]),/* "id-smime-aa-ets-certValues" */ 3702191, /* "id-smime-aa" */
3580&(nid_objs[227]),/* "id-smime-aa-ets-commitmentType" */ 3703215, /* "id-smime-aa-contentHint" */
3581&(nid_objs[231]),/* "id-smime-aa-ets-contentTimestamp" */ 3704218, /* "id-smime-aa-contentIdentifier" */
3582&(nid_objs[236]),/* "id-smime-aa-ets-escTimeStamp" */ 3705221, /* "id-smime-aa-contentReference" */
3583&(nid_objs[230]),/* "id-smime-aa-ets-otherSigCert" */ 3706240, /* "id-smime-aa-dvcs-dvc" */
3584&(nid_objs[235]),/* "id-smime-aa-ets-revocationValues" */ 3707217, /* "id-smime-aa-encapContentType" */
3585&(nid_objs[226]),/* "id-smime-aa-ets-sigPolicyId" */ 3708222, /* "id-smime-aa-encrypKeyPref" */
3586&(nid_objs[229]),/* "id-smime-aa-ets-signerAttr" */ 3709220, /* "id-smime-aa-equivalentLabels" */
3587&(nid_objs[228]),/* "id-smime-aa-ets-signerLocation" */ 3710232, /* "id-smime-aa-ets-CertificateRefs" */
3588&(nid_objs[219]),/* "id-smime-aa-macValue" */ 3711233, /* "id-smime-aa-ets-RevocationRefs" */
3589&(nid_objs[214]),/* "id-smime-aa-mlExpandHistory" */ 3712238, /* "id-smime-aa-ets-archiveTimeStamp" */
3590&(nid_objs[216]),/* "id-smime-aa-msgSigDigest" */ 3713237, /* "id-smime-aa-ets-certCRLTimestamp" */
3591&(nid_objs[212]),/* "id-smime-aa-receiptRequest" */ 3714234, /* "id-smime-aa-ets-certValues" */
3592&(nid_objs[213]),/* "id-smime-aa-securityLabel" */ 3715227, /* "id-smime-aa-ets-commitmentType" */
3593&(nid_objs[239]),/* "id-smime-aa-signatureType" */ 3716231, /* "id-smime-aa-ets-contentTimestamp" */
3594&(nid_objs[223]),/* "id-smime-aa-signingCertificate" */ 3717236, /* "id-smime-aa-ets-escTimeStamp" */
3595&(nid_objs[224]),/* "id-smime-aa-smimeEncryptCerts" */ 3718230, /* "id-smime-aa-ets-otherSigCert" */
3596&(nid_objs[225]),/* "id-smime-aa-timeStampToken" */ 3719235, /* "id-smime-aa-ets-revocationValues" */
3597&(nid_objs[192]),/* "id-smime-alg" */ 3720226, /* "id-smime-aa-ets-sigPolicyId" */
3598&(nid_objs[243]),/* "id-smime-alg-3DESwrap" */ 3721229, /* "id-smime-aa-ets-signerAttr" */
3599&(nid_objs[246]),/* "id-smime-alg-CMS3DESwrap" */ 3722228, /* "id-smime-aa-ets-signerLocation" */
3600&(nid_objs[247]),/* "id-smime-alg-CMSRC2wrap" */ 3723219, /* "id-smime-aa-macValue" */
3601&(nid_objs[245]),/* "id-smime-alg-ESDH" */ 3724214, /* "id-smime-aa-mlExpandHistory" */
3602&(nid_objs[241]),/* "id-smime-alg-ESDHwith3DES" */ 3725216, /* "id-smime-aa-msgSigDigest" */
3603&(nid_objs[242]),/* "id-smime-alg-ESDHwithRC2" */ 3726212, /* "id-smime-aa-receiptRequest" */
3604&(nid_objs[244]),/* "id-smime-alg-RC2wrap" */ 3727213, /* "id-smime-aa-securityLabel" */
3605&(nid_objs[193]),/* "id-smime-cd" */ 3728239, /* "id-smime-aa-signatureType" */
3606&(nid_objs[248]),/* "id-smime-cd-ldap" */ 3729223, /* "id-smime-aa-signingCertificate" */
3607&(nid_objs[190]),/* "id-smime-ct" */ 3730224, /* "id-smime-aa-smimeEncryptCerts" */
3608&(nid_objs[210]),/* "id-smime-ct-DVCSRequestData" */ 3731225, /* "id-smime-aa-timeStampToken" */
3609&(nid_objs[211]),/* "id-smime-ct-DVCSResponseData" */ 3732192, /* "id-smime-alg" */
3610&(nid_objs[208]),/* "id-smime-ct-TDTInfo" */ 3733243, /* "id-smime-alg-3DESwrap" */
3611&(nid_objs[207]),/* "id-smime-ct-TSTInfo" */ 3734246, /* "id-smime-alg-CMS3DESwrap" */
3612&(nid_objs[205]),/* "id-smime-ct-authData" */ 3735247, /* "id-smime-alg-CMSRC2wrap" */
3613&(nid_objs[786]),/* "id-smime-ct-compressedData" */ 3736245, /* "id-smime-alg-ESDH" */
3614&(nid_objs[209]),/* "id-smime-ct-contentInfo" */ 3737241, /* "id-smime-alg-ESDHwith3DES" */
3615&(nid_objs[206]),/* "id-smime-ct-publishCert" */ 3738242, /* "id-smime-alg-ESDHwithRC2" */
3616&(nid_objs[204]),/* "id-smime-ct-receipt" */ 3739244, /* "id-smime-alg-RC2wrap" */
3617&(nid_objs[195]),/* "id-smime-cti" */ 3740193, /* "id-smime-cd" */
3618&(nid_objs[255]),/* "id-smime-cti-ets-proofOfApproval" */ 3741248, /* "id-smime-cd-ldap" */
3619&(nid_objs[256]),/* "id-smime-cti-ets-proofOfCreation" */ 3742190, /* "id-smime-ct" */
3620&(nid_objs[253]),/* "id-smime-cti-ets-proofOfDelivery" */ 3743210, /* "id-smime-ct-DVCSRequestData" */
3621&(nid_objs[251]),/* "id-smime-cti-ets-proofOfOrigin" */ 3744211, /* "id-smime-ct-DVCSResponseData" */
3622&(nid_objs[252]),/* "id-smime-cti-ets-proofOfReceipt" */ 3745208, /* "id-smime-ct-TDTInfo" */
3623&(nid_objs[254]),/* "id-smime-cti-ets-proofOfSender" */ 3746207, /* "id-smime-ct-TSTInfo" */
3624&(nid_objs[189]),/* "id-smime-mod" */ 3747205, /* "id-smime-ct-authData" */
3625&(nid_objs[196]),/* "id-smime-mod-cms" */ 3748786, /* "id-smime-ct-compressedData" */
3626&(nid_objs[197]),/* "id-smime-mod-ess" */ 3749209, /* "id-smime-ct-contentInfo" */
3627&(nid_objs[202]),/* "id-smime-mod-ets-eSigPolicy-88" */ 3750206, /* "id-smime-ct-publishCert" */
3628&(nid_objs[203]),/* "id-smime-mod-ets-eSigPolicy-97" */ 3751204, /* "id-smime-ct-receipt" */
3629&(nid_objs[200]),/* "id-smime-mod-ets-eSignature-88" */ 3752195, /* "id-smime-cti" */
3630&(nid_objs[201]),/* "id-smime-mod-ets-eSignature-97" */ 3753255, /* "id-smime-cti-ets-proofOfApproval" */
3631&(nid_objs[199]),/* "id-smime-mod-msg-v3" */ 3754256, /* "id-smime-cti-ets-proofOfCreation" */
3632&(nid_objs[198]),/* "id-smime-mod-oid" */ 3755253, /* "id-smime-cti-ets-proofOfDelivery" */
3633&(nid_objs[194]),/* "id-smime-spq" */ 3756251, /* "id-smime-cti-ets-proofOfOrigin" */
3634&(nid_objs[250]),/* "id-smime-spq-ets-sqt-unotice" */ 3757252, /* "id-smime-cti-ets-proofOfReceipt" */
3635&(nid_objs[249]),/* "id-smime-spq-ets-sqt-uri" */ 3758254, /* "id-smime-cti-ets-proofOfSender" */
3636&(nid_objs[34]),/* "idea-cbc" */ 3759189, /* "id-smime-mod" */
3637&(nid_objs[35]),/* "idea-cfb" */ 3760196, /* "id-smime-mod-cms" */
3638&(nid_objs[36]),/* "idea-ecb" */ 3761197, /* "id-smime-mod-ess" */
3639&(nid_objs[46]),/* "idea-ofb" */ 3762202, /* "id-smime-mod-ets-eSigPolicy-88" */
3640&(nid_objs[676]),/* "identified-organization" */ 3763203, /* "id-smime-mod-ets-eSigPolicy-97" */
3641&(nid_objs[461]),/* "info" */ 3764200, /* "id-smime-mod-ets-eSignature-88" */
3642&(nid_objs[101]),/* "initials" */ 3765201, /* "id-smime-mod-ets-eSignature-97" */
3643&(nid_objs[749]),/* "ipsec3" */ 3766199, /* "id-smime-mod-msg-v3" */
3644&(nid_objs[750]),/* "ipsec4" */ 3767198, /* "id-smime-mod-oid" */
3645&(nid_objs[181]),/* "iso" */ 3768194, /* "id-smime-spq" */
3646&(nid_objs[623]),/* "issuer capabilities" */ 3769250, /* "id-smime-spq-ets-sqt-unotice" */
3647&(nid_objs[645]),/* "itu-t" */ 3770249, /* "id-smime-spq-ets-sqt-uri" */
3648&(nid_objs[492]),/* "janetMailbox" */ 377134, /* "idea-cbc" */
3649&(nid_objs[646]),/* "joint-iso-itu-t" */ 377235, /* "idea-cfb" */
3650&(nid_objs[150]),/* "keyBag" */ 377336, /* "idea-ecb" */
3651&(nid_objs[773]),/* "kisa" */ 377446, /* "idea-ofb" */
3652&(nid_objs[477]),/* "lastModifiedBy" */ 3775676, /* "identified-organization" */
3653&(nid_objs[476]),/* "lastModifiedTime" */ 3776461, /* "info" */
3654&(nid_objs[157]),/* "localKeyID" */ 3777101, /* "initials" */
3655&(nid_objs[15]),/* "localityName" */ 3778869, /* "internationaliSDNNumber" */
3656&(nid_objs[480]),/* "mXRecord" */ 3779749, /* "ipsec3" */
3657&(nid_objs[493]),/* "mailPreferenceOption" */ 3780750, /* "ipsec4" */
3658&(nid_objs[467]),/* "manager" */ 3781181, /* "iso" */
3659&(nid_objs[ 3]),/* "md2" */ 3782623, /* "issuer capabilities" */
3660&(nid_objs[ 7]),/* "md2WithRSAEncryption" */ 3783645, /* "itu-t" */
3661&(nid_objs[257]),/* "md4" */ 3784492, /* "janetMailbox" */
3662&(nid_objs[396]),/* "md4WithRSAEncryption" */ 3785646, /* "joint-iso-itu-t" */
3663&(nid_objs[ 4]),/* "md5" */ 3786150, /* "keyBag" */
3664&(nid_objs[114]),/* "md5-sha1" */ 3787773, /* "kisa" */
3665&(nid_objs[104]),/* "md5WithRSA" */ 3788477, /* "lastModifiedBy" */
3666&(nid_objs[ 8]),/* "md5WithRSAEncryption" */ 3789476, /* "lastModifiedTime" */
3667&(nid_objs[95]),/* "mdc2" */ 3790157, /* "localKeyID" */
3668&(nid_objs[96]),/* "mdc2WithRSA" */ 379115, /* "localityName" */
3669&(nid_objs[602]),/* "merchant initiated auth" */ 3792480, /* "mXRecord" */
3670&(nid_objs[514]),/* "message extensions" */ 3793493, /* "mailPreferenceOption" */
3671&(nid_objs[51]),/* "messageDigest" */ 3794467, /* "manager" */
3672&(nid_objs[506]),/* "mime-mhs-bodies" */ 3795 3, /* "md2" */
3673&(nid_objs[505]),/* "mime-mhs-headings" */ 3796 7, /* "md2WithRSAEncryption" */
3674&(nid_objs[488]),/* "mobileTelephoneNumber" */ 3797257, /* "md4" */
3675&(nid_objs[481]),/* "nSRecord" */ 3798396, /* "md4WithRSAEncryption" */
3676&(nid_objs[173]),/* "name" */ 3799 4, /* "md5" */
3677&(nid_objs[681]),/* "onBasis" */ 3800114, /* "md5-sha1" */
3678&(nid_objs[379]),/* "org" */ 3801104, /* "md5WithRSA" */
3679&(nid_objs[17]),/* "organizationName" */ 3802 8, /* "md5WithRSAEncryption" */
3680&(nid_objs[491]),/* "organizationalStatus" */ 380395, /* "mdc2" */
3681&(nid_objs[18]),/* "organizationalUnitName" */ 380496, /* "mdc2WithRSA" */
3682&(nid_objs[475]),/* "otherMailbox" */ 3805875, /* "member" */
3683&(nid_objs[489]),/* "pagerTelephoneNumber" */ 3806602, /* "merchant initiated auth" */
3684&(nid_objs[782]),/* "password based MAC" */ 3807514, /* "message extensions" */
3685&(nid_objs[374]),/* "path" */ 380851, /* "messageDigest" */
3686&(nid_objs[621]),/* "payment gateway capabilities" */ 3809506, /* "mime-mhs-bodies" */
3687&(nid_objs[ 9]),/* "pbeWithMD2AndDES-CBC" */ 3810505, /* "mime-mhs-headings" */
3688&(nid_objs[168]),/* "pbeWithMD2AndRC2-CBC" */ 3811488, /* "mobileTelephoneNumber" */
3689&(nid_objs[112]),/* "pbeWithMD5AndCast5CBC" */ 3812481, /* "nSRecord" */
3690&(nid_objs[10]),/* "pbeWithMD5AndDES-CBC" */ 3813173, /* "name" */
3691&(nid_objs[169]),/* "pbeWithMD5AndRC2-CBC" */ 3814681, /* "onBasis" */
3692&(nid_objs[148]),/* "pbeWithSHA1And128BitRC2-CBC" */ 3815379, /* "org" */
3693&(nid_objs[144]),/* "pbeWithSHA1And128BitRC4" */ 381617, /* "organizationName" */
3694&(nid_objs[147]),/* "pbeWithSHA1And2-KeyTripleDES-CBC" */ 3817491, /* "organizationalStatus" */
3695&(nid_objs[146]),/* "pbeWithSHA1And3-KeyTripleDES-CBC" */ 381818, /* "organizationalUnitName" */
3696&(nid_objs[149]),/* "pbeWithSHA1And40BitRC2-CBC" */ 3819475, /* "otherMailbox" */
3697&(nid_objs[145]),/* "pbeWithSHA1And40BitRC4" */ 3820876, /* "owner" */
3698&(nid_objs[170]),/* "pbeWithSHA1AndDES-CBC" */ 3821489, /* "pagerTelephoneNumber" */
3699&(nid_objs[68]),/* "pbeWithSHA1AndRC2-CBC" */ 3822782, /* "password based MAC" */
3700&(nid_objs[499]),/* "personalSignature" */ 3823374, /* "path" */
3701&(nid_objs[487]),/* "personalTitle" */ 3824621, /* "payment gateway capabilities" */
3702&(nid_objs[464]),/* "photo" */ 3825 9, /* "pbeWithMD2AndDES-CBC" */
3703&(nid_objs[437]),/* "pilot" */ 3826168, /* "pbeWithMD2AndRC2-CBC" */
3704&(nid_objs[439]),/* "pilotAttributeSyntax" */ 3827112, /* "pbeWithMD5AndCast5CBC" */
3705&(nid_objs[438]),/* "pilotAttributeType" */ 382810, /* "pbeWithMD5AndDES-CBC" */
3706&(nid_objs[479]),/* "pilotAttributeType27" */ 3829169, /* "pbeWithMD5AndRC2-CBC" */
3707&(nid_objs[456]),/* "pilotDSA" */ 3830148, /* "pbeWithSHA1And128BitRC2-CBC" */
3708&(nid_objs[441]),/* "pilotGroups" */ 3831144, /* "pbeWithSHA1And128BitRC4" */
3709&(nid_objs[444]),/* "pilotObject" */ 3832147, /* "pbeWithSHA1And2-KeyTripleDES-CBC" */
3710&(nid_objs[440]),/* "pilotObjectClass" */ 3833146, /* "pbeWithSHA1And3-KeyTripleDES-CBC" */
3711&(nid_objs[455]),/* "pilotOrganization" */ 3834149, /* "pbeWithSHA1And40BitRC2-CBC" */
3712&(nid_objs[445]),/* "pilotPerson" */ 3835145, /* "pbeWithSHA1And40BitRC4" */
3713&(nid_objs[186]),/* "pkcs1" */ 3836170, /* "pbeWithSHA1AndDES-CBC" */
3714&(nid_objs[27]),/* "pkcs3" */ 383768, /* "pbeWithSHA1AndRC2-CBC" */
3715&(nid_objs[187]),/* "pkcs5" */ 3838499, /* "personalSignature" */
3716&(nid_objs[20]),/* "pkcs7" */ 3839487, /* "personalTitle" */
3717&(nid_objs[21]),/* "pkcs7-data" */ 3840464, /* "photo" */
3718&(nid_objs[25]),/* "pkcs7-digestData" */ 3841863, /* "physicalDeliveryOfficeName" */
3719&(nid_objs[26]),/* "pkcs7-encryptedData" */ 3842437, /* "pilot" */
3720&(nid_objs[23]),/* "pkcs7-envelopedData" */ 3843439, /* "pilotAttributeSyntax" */
3721&(nid_objs[24]),/* "pkcs7-signedAndEnvelopedData" */ 3844438, /* "pilotAttributeType" */
3722&(nid_objs[22]),/* "pkcs7-signedData" */ 3845479, /* "pilotAttributeType27" */
3723&(nid_objs[151]),/* "pkcs8ShroudedKeyBag" */ 3846456, /* "pilotDSA" */
3724&(nid_objs[47]),/* "pkcs9" */ 3847441, /* "pilotGroups" */
3725&(nid_objs[661]),/* "postalCode" */ 3848444, /* "pilotObject" */
3726&(nid_objs[683]),/* "ppBasis" */ 3849440, /* "pilotObjectClass" */
3727&(nid_objs[406]),/* "prime-field" */ 3850455, /* "pilotOrganization" */
3728&(nid_objs[409]),/* "prime192v1" */ 3851445, /* "pilotPerson" */
3729&(nid_objs[410]),/* "prime192v2" */ 3852186, /* "pkcs1" */
3730&(nid_objs[411]),/* "prime192v3" */ 385327, /* "pkcs3" */
3731&(nid_objs[412]),/* "prime239v1" */ 3854187, /* "pkcs5" */
3732&(nid_objs[413]),/* "prime239v2" */ 385520, /* "pkcs7" */
3733&(nid_objs[414]),/* "prime239v3" */ 385621, /* "pkcs7-data" */
3734&(nid_objs[415]),/* "prime256v1" */ 385725, /* "pkcs7-digestData" */
3735&(nid_objs[510]),/* "pseudonym" */ 385826, /* "pkcs7-encryptedData" */
3736&(nid_objs[435]),/* "pss" */ 385923, /* "pkcs7-envelopedData" */
3737&(nid_objs[286]),/* "qcStatements" */ 386024, /* "pkcs7-signedAndEnvelopedData" */
3738&(nid_objs[457]),/* "qualityLabelledData" */ 386122, /* "pkcs7-signedData" */
3739&(nid_objs[450]),/* "rFC822localPart" */ 3862151, /* "pkcs8ShroudedKeyBag" */
3740&(nid_objs[98]),/* "rc2-40-cbc" */ 386347, /* "pkcs9" */
3741&(nid_objs[166]),/* "rc2-64-cbc" */ 3864862, /* "postOfficeBox" */
3742&(nid_objs[37]),/* "rc2-cbc" */ 3865861, /* "postalAddress" */
3743&(nid_objs[39]),/* "rc2-cfb" */ 3866661, /* "postalCode" */
3744&(nid_objs[38]),/* "rc2-ecb" */ 3867683, /* "ppBasis" */
3745&(nid_objs[40]),/* "rc2-ofb" */ 3868872, /* "preferredDeliveryMethod" */
3746&(nid_objs[ 5]),/* "rc4" */ 3869873, /* "presentationAddress" */
3747&(nid_objs[97]),/* "rc4-40" */ 3870406, /* "prime-field" */
3748&(nid_objs[120]),/* "rc5-cbc" */ 3871409, /* "prime192v1" */
3749&(nid_objs[122]),/* "rc5-cfb" */ 3872410, /* "prime192v2" */
3750&(nid_objs[121]),/* "rc5-ecb" */ 3873411, /* "prime192v3" */
3751&(nid_objs[123]),/* "rc5-ofb" */ 3874412, /* "prime239v1" */
3752&(nid_objs[460]),/* "rfc822Mailbox" */ 3875413, /* "prime239v2" */
3753&(nid_objs[117]),/* "ripemd160" */ 3876414, /* "prime239v3" */
3754&(nid_objs[119]),/* "ripemd160WithRSA" */ 3877415, /* "prime256v1" */
3755&(nid_objs[400]),/* "role" */ 3878886, /* "protocolInformation" */
3756&(nid_objs[448]),/* "room" */ 3879510, /* "pseudonym" */
3757&(nid_objs[463]),/* "roomNumber" */ 3880435, /* "pss" */
3758&(nid_objs[19]),/* "rsa" */ 3881286, /* "qcStatements" */
3759&(nid_objs[ 6]),/* "rsaEncryption" */ 3882457, /* "qualityLabelledData" */
3760&(nid_objs[644]),/* "rsaOAEPEncryptionSET" */ 3883450, /* "rFC822localPart" */
3761&(nid_objs[377]),/* "rsaSignature" */ 388498, /* "rc2-40-cbc" */
3762&(nid_objs[124]),/* "run length compression" */ 3885166, /* "rc2-64-cbc" */
3763&(nid_objs[482]),/* "sOARecord" */ 388637, /* "rc2-cbc" */
3764&(nid_objs[155]),/* "safeContentsBag" */ 388739, /* "rc2-cfb" */
3765&(nid_objs[291]),/* "sbgp-autonomousSysNum" */ 388838, /* "rc2-ecb" */
3766&(nid_objs[290]),/* "sbgp-ipAddrBlock" */ 388940, /* "rc2-ofb" */
3767&(nid_objs[292]),/* "sbgp-routerIdentifier" */ 3890 5, /* "rc4" */
3768&(nid_objs[159]),/* "sdsiCertificate" */ 389197, /* "rc4-40" */
3769&(nid_objs[704]),/* "secp112r1" */ 3892120, /* "rc5-cbc" */
3770&(nid_objs[705]),/* "secp112r2" */ 3893122, /* "rc5-cfb" */
3771&(nid_objs[706]),/* "secp128r1" */ 3894121, /* "rc5-ecb" */
3772&(nid_objs[707]),/* "secp128r2" */ 3895123, /* "rc5-ofb" */
3773&(nid_objs[708]),/* "secp160k1" */ 3896870, /* "registeredAddress" */
3774&(nid_objs[709]),/* "secp160r1" */ 3897460, /* "rfc822Mailbox" */
3775&(nid_objs[710]),/* "secp160r2" */ 3898117, /* "ripemd160" */
3776&(nid_objs[711]),/* "secp192k1" */ 3899119, /* "ripemd160WithRSA" */
3777&(nid_objs[712]),/* "secp224k1" */ 3900400, /* "role" */
3778&(nid_objs[713]),/* "secp224r1" */ 3901877, /* "roleOccupant" */
3779&(nid_objs[714]),/* "secp256k1" */ 3902448, /* "room" */
3780&(nid_objs[715]),/* "secp384r1" */ 3903463, /* "roomNumber" */
3781&(nid_objs[716]),/* "secp521r1" */ 390419, /* "rsa" */
3782&(nid_objs[154]),/* "secretBag" */ 3905 6, /* "rsaEncryption" */
3783&(nid_objs[474]),/* "secretary" */ 3906644, /* "rsaOAEPEncryptionSET" */
3784&(nid_objs[717]),/* "sect113r1" */ 3907377, /* "rsaSignature" */
3785&(nid_objs[718]),/* "sect113r2" */ 3908124, /* "run length compression" */
3786&(nid_objs[719]),/* "sect131r1" */ 3909482, /* "sOARecord" */
3787&(nid_objs[720]),/* "sect131r2" */ 3910155, /* "safeContentsBag" */
3788&(nid_objs[721]),/* "sect163k1" */ 3911291, /* "sbgp-autonomousSysNum" */
3789&(nid_objs[722]),/* "sect163r1" */ 3912290, /* "sbgp-ipAddrBlock" */
3790&(nid_objs[723]),/* "sect163r2" */ 3913292, /* "sbgp-routerIdentifier" */
3791&(nid_objs[724]),/* "sect193r1" */ 3914159, /* "sdsiCertificate" */
3792&(nid_objs[725]),/* "sect193r2" */ 3915859, /* "searchGuide" */
3793&(nid_objs[726]),/* "sect233k1" */ 3916704, /* "secp112r1" */
3794&(nid_objs[727]),/* "sect233r1" */ 3917705, /* "secp112r2" */
3795&(nid_objs[728]),/* "sect239k1" */ 3918706, /* "secp128r1" */
3796&(nid_objs[729]),/* "sect283k1" */ 3919707, /* "secp128r2" */
3797&(nid_objs[730]),/* "sect283r1" */ 3920708, /* "secp160k1" */
3798&(nid_objs[731]),/* "sect409k1" */ 3921709, /* "secp160r1" */
3799&(nid_objs[732]),/* "sect409r1" */ 3922710, /* "secp160r2" */
3800&(nid_objs[733]),/* "sect571k1" */ 3923711, /* "secp192k1" */
3801&(nid_objs[734]),/* "sect571r1" */ 3924712, /* "secp224k1" */
3802&(nid_objs[635]),/* "secure device signature" */ 3925713, /* "secp224r1" */
3803&(nid_objs[777]),/* "seed-cbc" */ 3926714, /* "secp256k1" */
3804&(nid_objs[779]),/* "seed-cfb" */ 3927715, /* "secp384r1" */
3805&(nid_objs[776]),/* "seed-ecb" */ 3928716, /* "secp521r1" */
3806&(nid_objs[778]),/* "seed-ofb" */ 3929154, /* "secretBag" */
3807&(nid_objs[105]),/* "serialNumber" */ 3930474, /* "secretary" */
3808&(nid_objs[625]),/* "set-addPolicy" */ 3931717, /* "sect113r1" */
3809&(nid_objs[515]),/* "set-attr" */ 3932718, /* "sect113r2" */
3810&(nid_objs[518]),/* "set-brand" */ 3933719, /* "sect131r1" */
3811&(nid_objs[638]),/* "set-brand-AmericanExpress" */ 3934720, /* "sect131r2" */
3812&(nid_objs[637]),/* "set-brand-Diners" */ 3935721, /* "sect163k1" */
3813&(nid_objs[636]),/* "set-brand-IATA-ATA" */ 3936722, /* "sect163r1" */
3814&(nid_objs[639]),/* "set-brand-JCB" */ 3937723, /* "sect163r2" */
3815&(nid_objs[641]),/* "set-brand-MasterCard" */ 3938724, /* "sect193r1" */
3816&(nid_objs[642]),/* "set-brand-Novus" */ 3939725, /* "sect193r2" */
3817&(nid_objs[640]),/* "set-brand-Visa" */ 3940726, /* "sect233k1" */
3818&(nid_objs[516]),/* "set-policy" */ 3941727, /* "sect233r1" */
3819&(nid_objs[607]),/* "set-policy-root" */ 3942728, /* "sect239k1" */
3820&(nid_objs[624]),/* "set-rootKeyThumb" */ 3943729, /* "sect283k1" */
3821&(nid_objs[620]),/* "setAttr-Cert" */ 3944730, /* "sect283r1" */
3822&(nid_objs[628]),/* "setAttr-IssCap-CVM" */ 3945731, /* "sect409k1" */
3823&(nid_objs[630]),/* "setAttr-IssCap-Sig" */ 3946732, /* "sect409r1" */
3824&(nid_objs[629]),/* "setAttr-IssCap-T2" */ 3947733, /* "sect571k1" */
3825&(nid_objs[627]),/* "setAttr-Token-B0Prime" */ 3948734, /* "sect571r1" */
3826&(nid_objs[626]),/* "setAttr-Token-EMV" */ 3949635, /* "secure device signature" */
3827&(nid_objs[622]),/* "setAttr-TokenType" */ 3950878, /* "seeAlso" */
3828&(nid_objs[619]),/* "setCext-IssuerCapabilities" */ 3951777, /* "seed-cbc" */
3829&(nid_objs[615]),/* "setCext-PGWYcapabilities" */ 3952779, /* "seed-cfb" */
3830&(nid_objs[616]),/* "setCext-TokenIdentifier" */ 3953776, /* "seed-ecb" */
3831&(nid_objs[618]),/* "setCext-TokenType" */ 3954778, /* "seed-ofb" */
3832&(nid_objs[617]),/* "setCext-Track2Data" */ 3955105, /* "serialNumber" */
3833&(nid_objs[611]),/* "setCext-cCertRequired" */ 3956625, /* "set-addPolicy" */
3834&(nid_objs[609]),/* "setCext-certType" */ 3957515, /* "set-attr" */
3835&(nid_objs[608]),/* "setCext-hashedRoot" */ 3958518, /* "set-brand" */
3836&(nid_objs[610]),/* "setCext-merchData" */ 3959638, /* "set-brand-AmericanExpress" */
3837&(nid_objs[613]),/* "setCext-setExt" */ 3960637, /* "set-brand-Diners" */
3838&(nid_objs[614]),/* "setCext-setQualf" */ 3961636, /* "set-brand-IATA-ATA" */
3839&(nid_objs[612]),/* "setCext-tunneling" */ 3962639, /* "set-brand-JCB" */
3840&(nid_objs[540]),/* "setct-AcqCardCodeMsg" */ 3963641, /* "set-brand-MasterCard" */
3841&(nid_objs[576]),/* "setct-AcqCardCodeMsgTBE" */ 3964642, /* "set-brand-Novus" */
3842&(nid_objs[570]),/* "setct-AuthReqTBE" */ 3965640, /* "set-brand-Visa" */
3843&(nid_objs[534]),/* "setct-AuthReqTBS" */ 3966516, /* "set-policy" */
3844&(nid_objs[527]),/* "setct-AuthResBaggage" */ 3967607, /* "set-policy-root" */
3845&(nid_objs[571]),/* "setct-AuthResTBE" */ 3968624, /* "set-rootKeyThumb" */
3846&(nid_objs[572]),/* "setct-AuthResTBEX" */ 3969620, /* "setAttr-Cert" */
3847&(nid_objs[535]),/* "setct-AuthResTBS" */ 3970628, /* "setAttr-IssCap-CVM" */
3848&(nid_objs[536]),/* "setct-AuthResTBSX" */ 3971630, /* "setAttr-IssCap-Sig" */
3849&(nid_objs[528]),/* "setct-AuthRevReqBaggage" */ 3972629, /* "setAttr-IssCap-T2" */
3850&(nid_objs[577]),/* "setct-AuthRevReqTBE" */ 3973627, /* "setAttr-Token-B0Prime" */
3851&(nid_objs[541]),/* "setct-AuthRevReqTBS" */ 3974626, /* "setAttr-Token-EMV" */
3852&(nid_objs[529]),/* "setct-AuthRevResBaggage" */ 3975622, /* "setAttr-TokenType" */
3853&(nid_objs[542]),/* "setct-AuthRevResData" */ 3976619, /* "setCext-IssuerCapabilities" */
3854&(nid_objs[578]),/* "setct-AuthRevResTBE" */ 3977615, /* "setCext-PGWYcapabilities" */
3855&(nid_objs[579]),/* "setct-AuthRevResTBEB" */ 3978616, /* "setCext-TokenIdentifier" */
3856&(nid_objs[543]),/* "setct-AuthRevResTBS" */ 3979618, /* "setCext-TokenType" */
3857&(nid_objs[573]),/* "setct-AuthTokenTBE" */ 3980617, /* "setCext-Track2Data" */
3858&(nid_objs[537]),/* "setct-AuthTokenTBS" */ 3981611, /* "setCext-cCertRequired" */
3859&(nid_objs[600]),/* "setct-BCIDistributionTBS" */ 3982609, /* "setCext-certType" */
3860&(nid_objs[558]),/* "setct-BatchAdminReqData" */ 3983608, /* "setCext-hashedRoot" */
3861&(nid_objs[592]),/* "setct-BatchAdminReqTBE" */ 3984610, /* "setCext-merchData" */
3862&(nid_objs[559]),/* "setct-BatchAdminResData" */ 3985613, /* "setCext-setExt" */
3863&(nid_objs[593]),/* "setct-BatchAdminResTBE" */ 3986614, /* "setCext-setQualf" */
3864&(nid_objs[599]),/* "setct-CRLNotificationResTBS" */ 3987612, /* "setCext-tunneling" */
3865&(nid_objs[598]),/* "setct-CRLNotificationTBS" */ 3988540, /* "setct-AcqCardCodeMsg" */
3866&(nid_objs[580]),/* "setct-CapReqTBE" */ 3989576, /* "setct-AcqCardCodeMsgTBE" */
3867&(nid_objs[581]),/* "setct-CapReqTBEX" */ 3990570, /* "setct-AuthReqTBE" */
3868&(nid_objs[544]),/* "setct-CapReqTBS" */ 3991534, /* "setct-AuthReqTBS" */
3869&(nid_objs[545]),/* "setct-CapReqTBSX" */ 3992527, /* "setct-AuthResBaggage" */
3870&(nid_objs[546]),/* "setct-CapResData" */ 3993571, /* "setct-AuthResTBE" */
3871&(nid_objs[582]),/* "setct-CapResTBE" */ 3994572, /* "setct-AuthResTBEX" */
3872&(nid_objs[583]),/* "setct-CapRevReqTBE" */ 3995535, /* "setct-AuthResTBS" */
3873&(nid_objs[584]),/* "setct-CapRevReqTBEX" */ 3996536, /* "setct-AuthResTBSX" */
3874&(nid_objs[547]),/* "setct-CapRevReqTBS" */ 3997528, /* "setct-AuthRevReqBaggage" */
3875&(nid_objs[548]),/* "setct-CapRevReqTBSX" */ 3998577, /* "setct-AuthRevReqTBE" */
3876&(nid_objs[549]),/* "setct-CapRevResData" */ 3999541, /* "setct-AuthRevReqTBS" */
3877&(nid_objs[585]),/* "setct-CapRevResTBE" */ 4000529, /* "setct-AuthRevResBaggage" */
3878&(nid_objs[538]),/* "setct-CapTokenData" */ 4001542, /* "setct-AuthRevResData" */
3879&(nid_objs[530]),/* "setct-CapTokenSeq" */ 4002578, /* "setct-AuthRevResTBE" */
3880&(nid_objs[574]),/* "setct-CapTokenTBE" */ 4003579, /* "setct-AuthRevResTBEB" */
3881&(nid_objs[575]),/* "setct-CapTokenTBEX" */ 4004543, /* "setct-AuthRevResTBS" */
3882&(nid_objs[539]),/* "setct-CapTokenTBS" */ 4005573, /* "setct-AuthTokenTBE" */
3883&(nid_objs[560]),/* "setct-CardCInitResTBS" */ 4006537, /* "setct-AuthTokenTBS" */
3884&(nid_objs[566]),/* "setct-CertInqReqTBS" */ 4007600, /* "setct-BCIDistributionTBS" */
3885&(nid_objs[563]),/* "setct-CertReqData" */ 4008558, /* "setct-BatchAdminReqData" */
3886&(nid_objs[595]),/* "setct-CertReqTBE" */ 4009592, /* "setct-BatchAdminReqTBE" */
3887&(nid_objs[596]),/* "setct-CertReqTBEX" */ 4010559, /* "setct-BatchAdminResData" */
3888&(nid_objs[564]),/* "setct-CertReqTBS" */ 4011593, /* "setct-BatchAdminResTBE" */
3889&(nid_objs[565]),/* "setct-CertResData" */ 4012599, /* "setct-CRLNotificationResTBS" */
3890&(nid_objs[597]),/* "setct-CertResTBE" */ 4013598, /* "setct-CRLNotificationTBS" */
3891&(nid_objs[586]),/* "setct-CredReqTBE" */ 4014580, /* "setct-CapReqTBE" */
3892&(nid_objs[587]),/* "setct-CredReqTBEX" */ 4015581, /* "setct-CapReqTBEX" */
3893&(nid_objs[550]),/* "setct-CredReqTBS" */ 4016544, /* "setct-CapReqTBS" */
3894&(nid_objs[551]),/* "setct-CredReqTBSX" */ 4017545, /* "setct-CapReqTBSX" */
3895&(nid_objs[552]),/* "setct-CredResData" */ 4018546, /* "setct-CapResData" */
3896&(nid_objs[588]),/* "setct-CredResTBE" */ 4019582, /* "setct-CapResTBE" */
3897&(nid_objs[589]),/* "setct-CredRevReqTBE" */ 4020583, /* "setct-CapRevReqTBE" */
3898&(nid_objs[590]),/* "setct-CredRevReqTBEX" */ 4021584, /* "setct-CapRevReqTBEX" */
3899&(nid_objs[553]),/* "setct-CredRevReqTBS" */ 4022547, /* "setct-CapRevReqTBS" */
3900&(nid_objs[554]),/* "setct-CredRevReqTBSX" */ 4023548, /* "setct-CapRevReqTBSX" */
3901&(nid_objs[555]),/* "setct-CredRevResData" */ 4024549, /* "setct-CapRevResData" */
3902&(nid_objs[591]),/* "setct-CredRevResTBE" */ 4025585, /* "setct-CapRevResTBE" */
3903&(nid_objs[567]),/* "setct-ErrorTBS" */ 4026538, /* "setct-CapTokenData" */
3904&(nid_objs[526]),/* "setct-HODInput" */ 4027530, /* "setct-CapTokenSeq" */
3905&(nid_objs[561]),/* "setct-MeAqCInitResTBS" */ 4028574, /* "setct-CapTokenTBE" */
3906&(nid_objs[522]),/* "setct-OIData" */ 4029575, /* "setct-CapTokenTBEX" */
3907&(nid_objs[519]),/* "setct-PANData" */ 4030539, /* "setct-CapTokenTBS" */
3908&(nid_objs[521]),/* "setct-PANOnly" */ 4031560, /* "setct-CardCInitResTBS" */
3909&(nid_objs[520]),/* "setct-PANToken" */ 4032566, /* "setct-CertInqReqTBS" */
3910&(nid_objs[556]),/* "setct-PCertReqData" */ 4033563, /* "setct-CertReqData" */
3911&(nid_objs[557]),/* "setct-PCertResTBS" */ 4034595, /* "setct-CertReqTBE" */
3912&(nid_objs[523]),/* "setct-PI" */ 4035596, /* "setct-CertReqTBEX" */
3913&(nid_objs[532]),/* "setct-PI-TBS" */ 4036564, /* "setct-CertReqTBS" */
3914&(nid_objs[524]),/* "setct-PIData" */ 4037565, /* "setct-CertResData" */
3915&(nid_objs[525]),/* "setct-PIDataUnsigned" */ 4038597, /* "setct-CertResTBE" */
3916&(nid_objs[568]),/* "setct-PIDualSignedTBE" */ 4039586, /* "setct-CredReqTBE" */
3917&(nid_objs[569]),/* "setct-PIUnsignedTBE" */ 4040587, /* "setct-CredReqTBEX" */
3918&(nid_objs[531]),/* "setct-PInitResData" */ 4041550, /* "setct-CredReqTBS" */
3919&(nid_objs[533]),/* "setct-PResData" */ 4042551, /* "setct-CredReqTBSX" */
3920&(nid_objs[594]),/* "setct-RegFormReqTBE" */ 4043552, /* "setct-CredResData" */
3921&(nid_objs[562]),/* "setct-RegFormResTBS" */ 4044588, /* "setct-CredResTBE" */
3922&(nid_objs[604]),/* "setext-pinAny" */ 4045589, /* "setct-CredRevReqTBE" */
3923&(nid_objs[603]),/* "setext-pinSecure" */ 4046590, /* "setct-CredRevReqTBEX" */
3924&(nid_objs[605]),/* "setext-track2" */ 4047553, /* "setct-CredRevReqTBS" */
3925&(nid_objs[41]),/* "sha" */ 4048554, /* "setct-CredRevReqTBSX" */
3926&(nid_objs[64]),/* "sha1" */ 4049555, /* "setct-CredRevResData" */
3927&(nid_objs[115]),/* "sha1WithRSA" */ 4050591, /* "setct-CredRevResTBE" */
3928&(nid_objs[65]),/* "sha1WithRSAEncryption" */ 4051567, /* "setct-ErrorTBS" */
3929&(nid_objs[675]),/* "sha224" */ 4052526, /* "setct-HODInput" */
3930&(nid_objs[671]),/* "sha224WithRSAEncryption" */ 4053561, /* "setct-MeAqCInitResTBS" */
3931&(nid_objs[672]),/* "sha256" */ 4054522, /* "setct-OIData" */
3932&(nid_objs[668]),/* "sha256WithRSAEncryption" */ 4055519, /* "setct-PANData" */
3933&(nid_objs[673]),/* "sha384" */ 4056521, /* "setct-PANOnly" */
3934&(nid_objs[669]),/* "sha384WithRSAEncryption" */ 4057520, /* "setct-PANToken" */
3935&(nid_objs[674]),/* "sha512" */ 4058556, /* "setct-PCertReqData" */
3936&(nid_objs[670]),/* "sha512WithRSAEncryption" */ 4059557, /* "setct-PCertResTBS" */
3937&(nid_objs[42]),/* "shaWithRSAEncryption" */ 4060523, /* "setct-PI" */
3938&(nid_objs[52]),/* "signingTime" */ 4061532, /* "setct-PI-TBS" */
3939&(nid_objs[454]),/* "simpleSecurityObject" */ 4062524, /* "setct-PIData" */
3940&(nid_objs[496]),/* "singleLevelQuality" */ 4063525, /* "setct-PIDataUnsigned" */
3941&(nid_objs[16]),/* "stateOrProvinceName" */ 4064568, /* "setct-PIDualSignedTBE" */
3942&(nid_objs[660]),/* "streetAddress" */ 4065569, /* "setct-PIUnsignedTBE" */
3943&(nid_objs[498]),/* "subtreeMaximumQuality" */ 4066531, /* "setct-PInitResData" */
3944&(nid_objs[497]),/* "subtreeMinimumQuality" */ 4067533, /* "setct-PResData" */
3945&(nid_objs[100]),/* "surname" */ 4068594, /* "setct-RegFormReqTBE" */
3946&(nid_objs[459]),/* "textEncodedORAddress" */ 4069562, /* "setct-RegFormResTBS" */
3947&(nid_objs[293]),/* "textNotice" */ 4070604, /* "setext-pinAny" */
3948&(nid_objs[106]),/* "title" */ 4071603, /* "setext-pinSecure" */
3949&(nid_objs[682]),/* "tpBasis" */ 4072605, /* "setext-track2" */
3950&(nid_objs[436]),/* "ucl" */ 407341, /* "sha" */
3951&(nid_objs[ 0]),/* "undefined" */ 407464, /* "sha1" */
3952&(nid_objs[55]),/* "unstructuredAddress" */ 4075115, /* "sha1WithRSA" */
3953&(nid_objs[49]),/* "unstructuredName" */ 407665, /* "sha1WithRSAEncryption" */
3954&(nid_objs[465]),/* "userClass" */ 4077675, /* "sha224" */
3955&(nid_objs[458]),/* "userId" */ 4078671, /* "sha224WithRSAEncryption" */
3956&(nid_objs[373]),/* "valid" */ 4079672, /* "sha256" */
3957&(nid_objs[678]),/* "wap" */ 4080668, /* "sha256WithRSAEncryption" */
3958&(nid_objs[679]),/* "wap-wsg" */ 4081673, /* "sha384" */
3959&(nid_objs[735]),/* "wap-wsg-idm-ecid-wtls1" */ 4082669, /* "sha384WithRSAEncryption" */
3960&(nid_objs[743]),/* "wap-wsg-idm-ecid-wtls10" */ 4083674, /* "sha512" */
3961&(nid_objs[744]),/* "wap-wsg-idm-ecid-wtls11" */ 4084670, /* "sha512WithRSAEncryption" */
3962&(nid_objs[745]),/* "wap-wsg-idm-ecid-wtls12" */ 408542, /* "shaWithRSAEncryption" */
3963&(nid_objs[736]),/* "wap-wsg-idm-ecid-wtls3" */ 408652, /* "signingTime" */
3964&(nid_objs[737]),/* "wap-wsg-idm-ecid-wtls4" */ 4087454, /* "simpleSecurityObject" */
3965&(nid_objs[738]),/* "wap-wsg-idm-ecid-wtls5" */ 4088496, /* "singleLevelQuality" */
3966&(nid_objs[739]),/* "wap-wsg-idm-ecid-wtls6" */ 408916, /* "stateOrProvinceName" */
3967&(nid_objs[740]),/* "wap-wsg-idm-ecid-wtls7" */ 4090660, /* "streetAddress" */
3968&(nid_objs[741]),/* "wap-wsg-idm-ecid-wtls8" */ 4091498, /* "subtreeMaximumQuality" */
3969&(nid_objs[742]),/* "wap-wsg-idm-ecid-wtls9" */ 4092497, /* "subtreeMinimumQuality" */
3970&(nid_objs[804]),/* "whirlpool" */ 4093890, /* "supportedAlgorithms" */
3971&(nid_objs[503]),/* "x500UniqueIdentifier" */ 4094874, /* "supportedApplicationContext" */
3972&(nid_objs[158]),/* "x509Certificate" */ 4095100, /* "surname" */
3973&(nid_objs[160]),/* "x509Crl" */ 4096864, /* "telephoneNumber" */
3974&(nid_objs[125]),/* "zlib compression" */ 4097866, /* "teletexTerminalIdentifier" */
4098865, /* "telexNumber" */
4099459, /* "textEncodedORAddress" */
4100293, /* "textNotice" */
4101106, /* "title" */
4102682, /* "tpBasis" */
4103436, /* "ucl" */
4104 0, /* "undefined" */
4105888, /* "uniqueMember" */
410655, /* "unstructuredAddress" */
410749, /* "unstructuredName" */
4108880, /* "userCertificate" */
4109465, /* "userClass" */
4110458, /* "userId" */
4111879, /* "userPassword" */
4112373, /* "valid" */
4113678, /* "wap" */
4114679, /* "wap-wsg" */
4115735, /* "wap-wsg-idm-ecid-wtls1" */
4116743, /* "wap-wsg-idm-ecid-wtls10" */
4117744, /* "wap-wsg-idm-ecid-wtls11" */
4118745, /* "wap-wsg-idm-ecid-wtls12" */
4119736, /* "wap-wsg-idm-ecid-wtls3" */
4120737, /* "wap-wsg-idm-ecid-wtls4" */
4121738, /* "wap-wsg-idm-ecid-wtls5" */
4122739, /* "wap-wsg-idm-ecid-wtls6" */
4123740, /* "wap-wsg-idm-ecid-wtls7" */
4124741, /* "wap-wsg-idm-ecid-wtls8" */
4125742, /* "wap-wsg-idm-ecid-wtls9" */
4126804, /* "whirlpool" */
4127868, /* "x121Address" */
4128503, /* "x500UniqueIdentifier" */
4129158, /* "x509Certificate" */
4130160, /* "x509Crl" */
4131125, /* "zlib compression" */
3975}; 4132};
3976 4133
3977static ASN1_OBJECT *obj_objs[NUM_OBJ]={ 4134static const unsigned int obj_objs[NUM_OBJ]={
3978&(nid_objs[ 0]),/* OBJ_undef 0 */ 4135 0, /* OBJ_undef 0 */
3979&(nid_objs[393]),/* OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t */ 4136393, /* OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t */
3980&(nid_objs[404]),/* OBJ_ccitt OBJ_itu_t */ 4137404, /* OBJ_ccitt OBJ_itu_t */
3981&(nid_objs[645]),/* OBJ_itu_t 0 */ 4138645, /* OBJ_itu_t 0 */
3982&(nid_objs[434]),/* OBJ_data 0 9 */ 4139434, /* OBJ_data 0 9 */
3983&(nid_objs[181]),/* OBJ_iso 1 */ 4140181, /* OBJ_iso 1 */
3984&(nid_objs[182]),/* OBJ_member_body 1 2 */ 4141182, /* OBJ_member_body 1 2 */
3985&(nid_objs[379]),/* OBJ_org 1 3 */ 4142379, /* OBJ_org 1 3 */
3986&(nid_objs[676]),/* OBJ_identified_organization 1 3 */ 4143676, /* OBJ_identified_organization 1 3 */
3987&(nid_objs[646]),/* OBJ_joint_iso_itu_t 2 */ 4144646, /* OBJ_joint_iso_itu_t 2 */
3988&(nid_objs[11]),/* OBJ_X500 2 5 */ 414511, /* OBJ_X500 2 5 */
3989&(nid_objs[647]),/* OBJ_international_organizations 2 23 */ 4146647, /* OBJ_international_organizations 2 23 */
3990&(nid_objs[380]),/* OBJ_dod 1 3 6 */ 4147380, /* OBJ_dod 1 3 6 */
3991&(nid_objs[12]),/* OBJ_X509 2 5 4 */ 414812, /* OBJ_X509 2 5 4 */
3992&(nid_objs[378]),/* OBJ_X500algorithms 2 5 8 */ 4149378, /* OBJ_X500algorithms 2 5 8 */
3993&(nid_objs[81]),/* OBJ_id_ce 2 5 29 */ 415081, /* OBJ_id_ce 2 5 29 */
3994&(nid_objs[512]),/* OBJ_id_set 2 23 42 */ 4151512, /* OBJ_id_set 2 23 42 */
3995&(nid_objs[678]),/* OBJ_wap 2 23 43 */ 4152678, /* OBJ_wap 2 23 43 */
3996&(nid_objs[435]),/* OBJ_pss 0 9 2342 */ 4153435, /* OBJ_pss 0 9 2342 */
3997&(nid_objs[183]),/* OBJ_ISO_US 1 2 840 */ 4154183, /* OBJ_ISO_US 1 2 840 */
3998&(nid_objs[381]),/* OBJ_iana 1 3 6 1 */ 4155381, /* OBJ_iana 1 3 6 1 */
3999&(nid_objs[677]),/* OBJ_certicom_arc 1 3 132 */ 4156677, /* OBJ_certicom_arc 1 3 132 */
4000&(nid_objs[394]),/* OBJ_selected_attribute_types 2 5 1 5 */ 4157394, /* OBJ_selected_attribute_types 2 5 1 5 */
4001&(nid_objs[13]),/* OBJ_commonName 2 5 4 3 */ 415813, /* OBJ_commonName 2 5 4 3 */
4002&(nid_objs[100]),/* OBJ_surname 2 5 4 4 */ 4159100, /* OBJ_surname 2 5 4 4 */
4003&(nid_objs[105]),/* OBJ_serialNumber 2 5 4 5 */ 4160105, /* OBJ_serialNumber 2 5 4 5 */
4004&(nid_objs[14]),/* OBJ_countryName 2 5 4 6 */ 416114, /* OBJ_countryName 2 5 4 6 */
4005&(nid_objs[15]),/* OBJ_localityName 2 5 4 7 */ 416215, /* OBJ_localityName 2 5 4 7 */
4006&(nid_objs[16]),/* OBJ_stateOrProvinceName 2 5 4 8 */ 416316, /* OBJ_stateOrProvinceName 2 5 4 8 */
4007&(nid_objs[660]),/* OBJ_streetAddress 2 5 4 9 */ 4164660, /* OBJ_streetAddress 2 5 4 9 */
4008&(nid_objs[17]),/* OBJ_organizationName 2 5 4 10 */ 416517, /* OBJ_organizationName 2 5 4 10 */
4009&(nid_objs[18]),/* OBJ_organizationalUnitName 2 5 4 11 */ 416618, /* OBJ_organizationalUnitName 2 5 4 11 */
4010&(nid_objs[106]),/* OBJ_title 2 5 4 12 */ 4167106, /* OBJ_title 2 5 4 12 */
4011&(nid_objs[107]),/* OBJ_description 2 5 4 13 */ 4168107, /* OBJ_description 2 5 4 13 */
4012&(nid_objs[661]),/* OBJ_postalCode 2 5 4 17 */ 4169859, /* OBJ_searchGuide 2 5 4 14 */
4013&(nid_objs[173]),/* OBJ_name 2 5 4 41 */ 4170860, /* OBJ_businessCategory 2 5 4 15 */
4014&(nid_objs[99]),/* OBJ_givenName 2 5 4 42 */ 4171861, /* OBJ_postalAddress 2 5 4 16 */
4015&(nid_objs[101]),/* OBJ_initials 2 5 4 43 */ 4172661, /* OBJ_postalCode 2 5 4 17 */
4016&(nid_objs[509]),/* OBJ_generationQualifier 2 5 4 44 */ 4173862, /* OBJ_postOfficeBox 2 5 4 18 */
4017&(nid_objs[503]),/* OBJ_x500UniqueIdentifier 2 5 4 45 */ 4174863, /* OBJ_physicalDeliveryOfficeName 2 5 4 19 */
4018&(nid_objs[174]),/* OBJ_dnQualifier 2 5 4 46 */ 4175864, /* OBJ_telephoneNumber 2 5 4 20 */
4019&(nid_objs[510]),/* OBJ_pseudonym 2 5 4 65 */ 4176865, /* OBJ_telexNumber 2 5 4 21 */
4020&(nid_objs[400]),/* OBJ_role 2 5 4 72 */ 4177866, /* OBJ_teletexTerminalIdentifier 2 5 4 22 */
4021&(nid_objs[769]),/* OBJ_subject_directory_attributes 2 5 29 9 */ 4178867, /* OBJ_facsimileTelephoneNumber 2 5 4 23 */
4022&(nid_objs[82]),/* OBJ_subject_key_identifier 2 5 29 14 */ 4179868, /* OBJ_x121Address 2 5 4 24 */
4023&(nid_objs[83]),/* OBJ_key_usage 2 5 29 15 */ 4180869, /* OBJ_internationaliSDNNumber 2 5 4 25 */
4024&(nid_objs[84]),/* OBJ_private_key_usage_period 2 5 29 16 */ 4181870, /* OBJ_registeredAddress 2 5 4 26 */
4025&(nid_objs[85]),/* OBJ_subject_alt_name 2 5 29 17 */ 4182871, /* OBJ_destinationIndicator 2 5 4 27 */
4026&(nid_objs[86]),/* OBJ_issuer_alt_name 2 5 29 18 */ 4183872, /* OBJ_preferredDeliveryMethod 2 5 4 28 */
4027&(nid_objs[87]),/* OBJ_basic_constraints 2 5 29 19 */ 4184873, /* OBJ_presentationAddress 2 5 4 29 */
4028&(nid_objs[88]),/* OBJ_crl_number 2 5 29 20 */ 4185874, /* OBJ_supportedApplicationContext 2 5 4 30 */
4029&(nid_objs[141]),/* OBJ_crl_reason 2 5 29 21 */ 4186875, /* OBJ_member 2 5 4 31 */
4030&(nid_objs[430]),/* OBJ_hold_instruction_code 2 5 29 23 */ 4187876, /* OBJ_owner 2 5 4 32 */
4031&(nid_objs[142]),/* OBJ_invalidity_date 2 5 29 24 */ 4188877, /* OBJ_roleOccupant 2 5 4 33 */
4032&(nid_objs[140]),/* OBJ_delta_crl 2 5 29 27 */ 4189878, /* OBJ_seeAlso 2 5 4 34 */
4033&(nid_objs[770]),/* OBJ_issuing_distribution_point 2 5 29 28 */ 4190879, /* OBJ_userPassword 2 5 4 35 */
4034&(nid_objs[771]),/* OBJ_certificate_issuer 2 5 29 29 */ 4191880, /* OBJ_userCertificate 2 5 4 36 */
4035&(nid_objs[666]),/* OBJ_name_constraints 2 5 29 30 */ 4192881, /* OBJ_cACertificate 2 5 4 37 */
4036&(nid_objs[103]),/* OBJ_crl_distribution_points 2 5 29 31 */ 4193882, /* OBJ_authorityRevocationList 2 5 4 38 */
4037&(nid_objs[89]),/* OBJ_certificate_policies 2 5 29 32 */ 4194883, /* OBJ_certificateRevocationList 2 5 4 39 */
4038&(nid_objs[747]),/* OBJ_policy_mappings 2 5 29 33 */ 4195884, /* OBJ_crossCertificatePair 2 5 4 40 */
4039&(nid_objs[90]),/* OBJ_authority_key_identifier 2 5 29 35 */ 4196173, /* OBJ_name 2 5 4 41 */
4040&(nid_objs[401]),/* OBJ_policy_constraints 2 5 29 36 */ 419799, /* OBJ_givenName 2 5 4 42 */
4041&(nid_objs[126]),/* OBJ_ext_key_usage 2 5 29 37 */ 4198101, /* OBJ_initials 2 5 4 43 */
4042&(nid_objs[857]),/* OBJ_freshest_crl 2 5 29 46 */ 4199509, /* OBJ_generationQualifier 2 5 4 44 */
4043&(nid_objs[748]),/* OBJ_inhibit_any_policy 2 5 29 54 */ 4200503, /* OBJ_x500UniqueIdentifier 2 5 4 45 */
4044&(nid_objs[402]),/* OBJ_target_information 2 5 29 55 */ 4201174, /* OBJ_dnQualifier 2 5 4 46 */
4045&(nid_objs[403]),/* OBJ_no_rev_avail 2 5 29 56 */ 4202885, /* OBJ_enhancedSearchGuide 2 5 4 47 */
4046&(nid_objs[513]),/* OBJ_set_ctype 2 23 42 0 */ 4203886, /* OBJ_protocolInformation 2 5 4 48 */
4047&(nid_objs[514]),/* OBJ_set_msgExt 2 23 42 1 */ 4204887, /* OBJ_distinguishedName 2 5 4 49 */
4048&(nid_objs[515]),/* OBJ_set_attr 2 23 42 3 */ 4205888, /* OBJ_uniqueMember 2 5 4 50 */
4049&(nid_objs[516]),/* OBJ_set_policy 2 23 42 5 */ 4206889, /* OBJ_houseIdentifier 2 5 4 51 */
4050&(nid_objs[517]),/* OBJ_set_certExt 2 23 42 7 */ 4207890, /* OBJ_supportedAlgorithms 2 5 4 52 */
4051&(nid_objs[518]),/* OBJ_set_brand 2 23 42 8 */ 4208891, /* OBJ_deltaRevocationList 2 5 4 53 */
4052&(nid_objs[679]),/* OBJ_wap_wsg 2 23 43 13 */ 4209892, /* OBJ_dmdName 2 5 4 54 */
4053&(nid_objs[382]),/* OBJ_Directory 1 3 6 1 1 */ 4210510, /* OBJ_pseudonym 2 5 4 65 */
4054&(nid_objs[383]),/* OBJ_Management 1 3 6 1 2 */ 4211400, /* OBJ_role 2 5 4 72 */
4055&(nid_objs[384]),/* OBJ_Experimental 1 3 6 1 3 */ 4212769, /* OBJ_subject_directory_attributes 2 5 29 9 */
4056&(nid_objs[385]),/* OBJ_Private 1 3 6 1 4 */ 421382, /* OBJ_subject_key_identifier 2 5 29 14 */
4057&(nid_objs[386]),/* OBJ_Security 1 3 6 1 5 */ 421483, /* OBJ_key_usage 2 5 29 15 */
4058&(nid_objs[387]),/* OBJ_SNMPv2 1 3 6 1 6 */ 421584, /* OBJ_private_key_usage_period 2 5 29 16 */
4059&(nid_objs[388]),/* OBJ_Mail 1 3 6 1 7 */ 421685, /* OBJ_subject_alt_name 2 5 29 17 */
4060&(nid_objs[376]),/* OBJ_algorithm 1 3 14 3 2 */ 421786, /* OBJ_issuer_alt_name 2 5 29 18 */
4061&(nid_objs[395]),/* OBJ_clearance 2 5 1 5 55 */ 421887, /* OBJ_basic_constraints 2 5 29 19 */
4062&(nid_objs[19]),/* OBJ_rsa 2 5 8 1 1 */ 421988, /* OBJ_crl_number 2 5 29 20 */
4063&(nid_objs[96]),/* OBJ_mdc2WithRSA 2 5 8 3 100 */ 4220141, /* OBJ_crl_reason 2 5 29 21 */
4064&(nid_objs[95]),/* OBJ_mdc2 2 5 8 3 101 */ 4221430, /* OBJ_hold_instruction_code 2 5 29 23 */
4065&(nid_objs[746]),/* OBJ_any_policy 2 5 29 32 0 */ 4222142, /* OBJ_invalidity_date 2 5 29 24 */
4066&(nid_objs[519]),/* OBJ_setct_PANData 2 23 42 0 0 */ 4223140, /* OBJ_delta_crl 2 5 29 27 */
4067&(nid_objs[520]),/* OBJ_setct_PANToken 2 23 42 0 1 */ 4224770, /* OBJ_issuing_distribution_point 2 5 29 28 */
4068&(nid_objs[521]),/* OBJ_setct_PANOnly 2 23 42 0 2 */ 4225771, /* OBJ_certificate_issuer 2 5 29 29 */
4069&(nid_objs[522]),/* OBJ_setct_OIData 2 23 42 0 3 */ 4226666, /* OBJ_name_constraints 2 5 29 30 */
4070&(nid_objs[523]),/* OBJ_setct_PI 2 23 42 0 4 */ 4227103, /* OBJ_crl_distribution_points 2 5 29 31 */
4071&(nid_objs[524]),/* OBJ_setct_PIData 2 23 42 0 5 */ 422889, /* OBJ_certificate_policies 2 5 29 32 */
4072&(nid_objs[525]),/* OBJ_setct_PIDataUnsigned 2 23 42 0 6 */ 4229747, /* OBJ_policy_mappings 2 5 29 33 */
4073&(nid_objs[526]),/* OBJ_setct_HODInput 2 23 42 0 7 */ 423090, /* OBJ_authority_key_identifier 2 5 29 35 */
4074&(nid_objs[527]),/* OBJ_setct_AuthResBaggage 2 23 42 0 8 */ 4231401, /* OBJ_policy_constraints 2 5 29 36 */
4075&(nid_objs[528]),/* OBJ_setct_AuthRevReqBaggage 2 23 42 0 9 */ 4232126, /* OBJ_ext_key_usage 2 5 29 37 */
4076&(nid_objs[529]),/* OBJ_setct_AuthRevResBaggage 2 23 42 0 10 */ 4233857, /* OBJ_freshest_crl 2 5 29 46 */
4077&(nid_objs[530]),/* OBJ_setct_CapTokenSeq 2 23 42 0 11 */ 4234748, /* OBJ_inhibit_any_policy 2 5 29 54 */
4078&(nid_objs[531]),/* OBJ_setct_PInitResData 2 23 42 0 12 */ 4235402, /* OBJ_target_information 2 5 29 55 */
4079&(nid_objs[532]),/* OBJ_setct_PI_TBS 2 23 42 0 13 */ 4236403, /* OBJ_no_rev_avail 2 5 29 56 */
4080&(nid_objs[533]),/* OBJ_setct_PResData 2 23 42 0 14 */ 4237513, /* OBJ_set_ctype 2 23 42 0 */
4081&(nid_objs[534]),/* OBJ_setct_AuthReqTBS 2 23 42 0 16 */ 4238514, /* OBJ_set_msgExt 2 23 42 1 */
4082&(nid_objs[535]),/* OBJ_setct_AuthResTBS 2 23 42 0 17 */ 4239515, /* OBJ_set_attr 2 23 42 3 */
4083&(nid_objs[536]),/* OBJ_setct_AuthResTBSX 2 23 42 0 18 */ 4240516, /* OBJ_set_policy 2 23 42 5 */
4084&(nid_objs[537]),/* OBJ_setct_AuthTokenTBS 2 23 42 0 19 */ 4241517, /* OBJ_set_certExt 2 23 42 7 */
4085&(nid_objs[538]),/* OBJ_setct_CapTokenData 2 23 42 0 20 */ 4242518, /* OBJ_set_brand 2 23 42 8 */
4086&(nid_objs[539]),/* OBJ_setct_CapTokenTBS 2 23 42 0 21 */ 4243679, /* OBJ_wap_wsg 2 23 43 1 */
4087&(nid_objs[540]),/* OBJ_setct_AcqCardCodeMsg 2 23 42 0 22 */ 4244382, /* OBJ_Directory 1 3 6 1 1 */
4088&(nid_objs[541]),/* OBJ_setct_AuthRevReqTBS 2 23 42 0 23 */ 4245383, /* OBJ_Management 1 3 6 1 2 */
4089&(nid_objs[542]),/* OBJ_setct_AuthRevResData 2 23 42 0 24 */ 4246384, /* OBJ_Experimental 1 3 6 1 3 */
4090&(nid_objs[543]),/* OBJ_setct_AuthRevResTBS 2 23 42 0 25 */ 4247385, /* OBJ_Private 1 3 6 1 4 */
4091&(nid_objs[544]),/* OBJ_setct_CapReqTBS 2 23 42 0 26 */ 4248386, /* OBJ_Security 1 3 6 1 5 */
4092&(nid_objs[545]),/* OBJ_setct_CapReqTBSX 2 23 42 0 27 */ 4249387, /* OBJ_SNMPv2 1 3 6 1 6 */
4093&(nid_objs[546]),/* OBJ_setct_CapResData 2 23 42 0 28 */ 4250388, /* OBJ_Mail 1 3 6 1 7 */
4094&(nid_objs[547]),/* OBJ_setct_CapRevReqTBS 2 23 42 0 29 */ 4251376, /* OBJ_algorithm 1 3 14 3 2 */
4095&(nid_objs[548]),/* OBJ_setct_CapRevReqTBSX 2 23 42 0 30 */ 4252395, /* OBJ_clearance 2 5 1 5 55 */
4096&(nid_objs[549]),/* OBJ_setct_CapRevResData 2 23 42 0 31 */ 425319, /* OBJ_rsa 2 5 8 1 1 */
4097&(nid_objs[550]),/* OBJ_setct_CredReqTBS 2 23 42 0 32 */ 425496, /* OBJ_mdc2WithRSA 2 5 8 3 100 */
4098&(nid_objs[551]),/* OBJ_setct_CredReqTBSX 2 23 42 0 33 */ 425595, /* OBJ_mdc2 2 5 8 3 101 */
4099&(nid_objs[552]),/* OBJ_setct_CredResData 2 23 42 0 34 */ 4256746, /* OBJ_any_policy 2 5 29 32 0 */
4100&(nid_objs[553]),/* OBJ_setct_CredRevReqTBS 2 23 42 0 35 */ 4257519, /* OBJ_setct_PANData 2 23 42 0 0 */
4101&(nid_objs[554]),/* OBJ_setct_CredRevReqTBSX 2 23 42 0 36 */ 4258520, /* OBJ_setct_PANToken 2 23 42 0 1 */
4102&(nid_objs[555]),/* OBJ_setct_CredRevResData 2 23 42 0 37 */ 4259521, /* OBJ_setct_PANOnly 2 23 42 0 2 */
4103&(nid_objs[556]),/* OBJ_setct_PCertReqData 2 23 42 0 38 */ 4260522, /* OBJ_setct_OIData 2 23 42 0 3 */
4104&(nid_objs[557]),/* OBJ_setct_PCertResTBS 2 23 42 0 39 */ 4261523, /* OBJ_setct_PI 2 23 42 0 4 */
4105&(nid_objs[558]),/* OBJ_setct_BatchAdminReqData 2 23 42 0 40 */ 4262524, /* OBJ_setct_PIData 2 23 42 0 5 */
4106&(nid_objs[559]),/* OBJ_setct_BatchAdminResData 2 23 42 0 41 */ 4263525, /* OBJ_setct_PIDataUnsigned 2 23 42 0 6 */
4107&(nid_objs[560]),/* OBJ_setct_CardCInitResTBS 2 23 42 0 42 */ 4264526, /* OBJ_setct_HODInput 2 23 42 0 7 */
4108&(nid_objs[561]),/* OBJ_setct_MeAqCInitResTBS 2 23 42 0 43 */ 4265527, /* OBJ_setct_AuthResBaggage 2 23 42 0 8 */
4109&(nid_objs[562]),/* OBJ_setct_RegFormResTBS 2 23 42 0 44 */ 4266528, /* OBJ_setct_AuthRevReqBaggage 2 23 42 0 9 */
4110&(nid_objs[563]),/* OBJ_setct_CertReqData 2 23 42 0 45 */ 4267529, /* OBJ_setct_AuthRevResBaggage 2 23 42 0 10 */
4111&(nid_objs[564]),/* OBJ_setct_CertReqTBS 2 23 42 0 46 */ 4268530, /* OBJ_setct_CapTokenSeq 2 23 42 0 11 */
4112&(nid_objs[565]),/* OBJ_setct_CertResData 2 23 42 0 47 */ 4269531, /* OBJ_setct_PInitResData 2 23 42 0 12 */
4113&(nid_objs[566]),/* OBJ_setct_CertInqReqTBS 2 23 42 0 48 */ 4270532, /* OBJ_setct_PI_TBS 2 23 42 0 13 */
4114&(nid_objs[567]),/* OBJ_setct_ErrorTBS 2 23 42 0 49 */ 4271533, /* OBJ_setct_PResData 2 23 42 0 14 */
4115&(nid_objs[568]),/* OBJ_setct_PIDualSignedTBE 2 23 42 0 50 */ 4272534, /* OBJ_setct_AuthReqTBS 2 23 42 0 16 */
4116&(nid_objs[569]),/* OBJ_setct_PIUnsignedTBE 2 23 42 0 51 */ 4273535, /* OBJ_setct_AuthResTBS 2 23 42 0 17 */
4117&(nid_objs[570]),/* OBJ_setct_AuthReqTBE 2 23 42 0 52 */ 4274536, /* OBJ_setct_AuthResTBSX 2 23 42 0 18 */
4118&(nid_objs[571]),/* OBJ_setct_AuthResTBE 2 23 42 0 53 */ 4275537, /* OBJ_setct_AuthTokenTBS 2 23 42 0 19 */
4119&(nid_objs[572]),/* OBJ_setct_AuthResTBEX 2 23 42 0 54 */ 4276538, /* OBJ_setct_CapTokenData 2 23 42 0 20 */
4120&(nid_objs[573]),/* OBJ_setct_AuthTokenTBE 2 23 42 0 55 */ 4277539, /* OBJ_setct_CapTokenTBS 2 23 42 0 21 */
4121&(nid_objs[574]),/* OBJ_setct_CapTokenTBE 2 23 42 0 56 */ 4278540, /* OBJ_setct_AcqCardCodeMsg 2 23 42 0 22 */
4122&(nid_objs[575]),/* OBJ_setct_CapTokenTBEX 2 23 42 0 57 */ 4279541, /* OBJ_setct_AuthRevReqTBS 2 23 42 0 23 */
4123&(nid_objs[576]),/* OBJ_setct_AcqCardCodeMsgTBE 2 23 42 0 58 */ 4280542, /* OBJ_setct_AuthRevResData 2 23 42 0 24 */
4124&(nid_objs[577]),/* OBJ_setct_AuthRevReqTBE 2 23 42 0 59 */ 4281543, /* OBJ_setct_AuthRevResTBS 2 23 42 0 25 */
4125&(nid_objs[578]),/* OBJ_setct_AuthRevResTBE 2 23 42 0 60 */ 4282544, /* OBJ_setct_CapReqTBS 2 23 42 0 26 */
4126&(nid_objs[579]),/* OBJ_setct_AuthRevResTBEB 2 23 42 0 61 */ 4283545, /* OBJ_setct_CapReqTBSX 2 23 42 0 27 */
4127&(nid_objs[580]),/* OBJ_setct_CapReqTBE 2 23 42 0 62 */ 4284546, /* OBJ_setct_CapResData 2 23 42 0 28 */
4128&(nid_objs[581]),/* OBJ_setct_CapReqTBEX 2 23 42 0 63 */ 4285547, /* OBJ_setct_CapRevReqTBS 2 23 42 0 29 */
4129&(nid_objs[582]),/* OBJ_setct_CapResTBE 2 23 42 0 64 */ 4286548, /* OBJ_setct_CapRevReqTBSX 2 23 42 0 30 */
4130&(nid_objs[583]),/* OBJ_setct_CapRevReqTBE 2 23 42 0 65 */ 4287549, /* OBJ_setct_CapRevResData 2 23 42 0 31 */
4131&(nid_objs[584]),/* OBJ_setct_CapRevReqTBEX 2 23 42 0 66 */ 4288550, /* OBJ_setct_CredReqTBS 2 23 42 0 32 */
4132&(nid_objs[585]),/* OBJ_setct_CapRevResTBE 2 23 42 0 67 */ 4289551, /* OBJ_setct_CredReqTBSX 2 23 42 0 33 */
4133&(nid_objs[586]),/* OBJ_setct_CredReqTBE 2 23 42 0 68 */ 4290552, /* OBJ_setct_CredResData 2 23 42 0 34 */
4134&(nid_objs[587]),/* OBJ_setct_CredReqTBEX 2 23 42 0 69 */ 4291553, /* OBJ_setct_CredRevReqTBS 2 23 42 0 35 */
4135&(nid_objs[588]),/* OBJ_setct_CredResTBE 2 23 42 0 70 */ 4292554, /* OBJ_setct_CredRevReqTBSX 2 23 42 0 36 */
4136&(nid_objs[589]),/* OBJ_setct_CredRevReqTBE 2 23 42 0 71 */ 4293555, /* OBJ_setct_CredRevResData 2 23 42 0 37 */
4137&(nid_objs[590]),/* OBJ_setct_CredRevReqTBEX 2 23 42 0 72 */ 4294556, /* OBJ_setct_PCertReqData 2 23 42 0 38 */
4138&(nid_objs[591]),/* OBJ_setct_CredRevResTBE 2 23 42 0 73 */ 4295557, /* OBJ_setct_PCertResTBS 2 23 42 0 39 */
4139&(nid_objs[592]),/* OBJ_setct_BatchAdminReqTBE 2 23 42 0 74 */ 4296558, /* OBJ_setct_BatchAdminReqData 2 23 42 0 40 */
4140&(nid_objs[593]),/* OBJ_setct_BatchAdminResTBE 2 23 42 0 75 */ 4297559, /* OBJ_setct_BatchAdminResData 2 23 42 0 41 */
4141&(nid_objs[594]),/* OBJ_setct_RegFormReqTBE 2 23 42 0 76 */ 4298560, /* OBJ_setct_CardCInitResTBS 2 23 42 0 42 */
4142&(nid_objs[595]),/* OBJ_setct_CertReqTBE 2 23 42 0 77 */ 4299561, /* OBJ_setct_MeAqCInitResTBS 2 23 42 0 43 */
4143&(nid_objs[596]),/* OBJ_setct_CertReqTBEX 2 23 42 0 78 */ 4300562, /* OBJ_setct_RegFormResTBS 2 23 42 0 44 */
4144&(nid_objs[597]),/* OBJ_setct_CertResTBE 2 23 42 0 79 */ 4301563, /* OBJ_setct_CertReqData 2 23 42 0 45 */
4145&(nid_objs[598]),/* OBJ_setct_CRLNotificationTBS 2 23 42 0 80 */ 4302564, /* OBJ_setct_CertReqTBS 2 23 42 0 46 */
4146&(nid_objs[599]),/* OBJ_setct_CRLNotificationResTBS 2 23 42 0 81 */ 4303565, /* OBJ_setct_CertResData 2 23 42 0 47 */
4147&(nid_objs[600]),/* OBJ_setct_BCIDistributionTBS 2 23 42 0 82 */ 4304566, /* OBJ_setct_CertInqReqTBS 2 23 42 0 48 */
4148&(nid_objs[601]),/* OBJ_setext_genCrypt 2 23 42 1 1 */ 4305567, /* OBJ_setct_ErrorTBS 2 23 42 0 49 */
4149&(nid_objs[602]),/* OBJ_setext_miAuth 2 23 42 1 3 */ 4306568, /* OBJ_setct_PIDualSignedTBE 2 23 42 0 50 */
4150&(nid_objs[603]),/* OBJ_setext_pinSecure 2 23 42 1 4 */ 4307569, /* OBJ_setct_PIUnsignedTBE 2 23 42 0 51 */
4151&(nid_objs[604]),/* OBJ_setext_pinAny 2 23 42 1 5 */ 4308570, /* OBJ_setct_AuthReqTBE 2 23 42 0 52 */
4152&(nid_objs[605]),/* OBJ_setext_track2 2 23 42 1 7 */ 4309571, /* OBJ_setct_AuthResTBE 2 23 42 0 53 */
4153&(nid_objs[606]),/* OBJ_setext_cv 2 23 42 1 8 */ 4310572, /* OBJ_setct_AuthResTBEX 2 23 42 0 54 */
4154&(nid_objs[620]),/* OBJ_setAttr_Cert 2 23 42 3 0 */ 4311573, /* OBJ_setct_AuthTokenTBE 2 23 42 0 55 */
4155&(nid_objs[621]),/* OBJ_setAttr_PGWYcap 2 23 42 3 1 */ 4312574, /* OBJ_setct_CapTokenTBE 2 23 42 0 56 */
4156&(nid_objs[622]),/* OBJ_setAttr_TokenType 2 23 42 3 2 */ 4313575, /* OBJ_setct_CapTokenTBEX 2 23 42 0 57 */
4157&(nid_objs[623]),/* OBJ_setAttr_IssCap 2 23 42 3 3 */ 4314576, /* OBJ_setct_AcqCardCodeMsgTBE 2 23 42 0 58 */
4158&(nid_objs[607]),/* OBJ_set_policy_root 2 23 42 5 0 */ 4315577, /* OBJ_setct_AuthRevReqTBE 2 23 42 0 59 */
4159&(nid_objs[608]),/* OBJ_setCext_hashedRoot 2 23 42 7 0 */ 4316578, /* OBJ_setct_AuthRevResTBE 2 23 42 0 60 */
4160&(nid_objs[609]),/* OBJ_setCext_certType 2 23 42 7 1 */ 4317579, /* OBJ_setct_AuthRevResTBEB 2 23 42 0 61 */
4161&(nid_objs[610]),/* OBJ_setCext_merchData 2 23 42 7 2 */ 4318580, /* OBJ_setct_CapReqTBE 2 23 42 0 62 */
4162&(nid_objs[611]),/* OBJ_setCext_cCertRequired 2 23 42 7 3 */ 4319581, /* OBJ_setct_CapReqTBEX 2 23 42 0 63 */
4163&(nid_objs[612]),/* OBJ_setCext_tunneling 2 23 42 7 4 */ 4320582, /* OBJ_setct_CapResTBE 2 23 42 0 64 */
4164&(nid_objs[613]),/* OBJ_setCext_setExt 2 23 42 7 5 */ 4321583, /* OBJ_setct_CapRevReqTBE 2 23 42 0 65 */
4165&(nid_objs[614]),/* OBJ_setCext_setQualf 2 23 42 7 6 */ 4322584, /* OBJ_setct_CapRevReqTBEX 2 23 42 0 66 */
4166&(nid_objs[615]),/* OBJ_setCext_PGWYcapabilities 2 23 42 7 7 */ 4323585, /* OBJ_setct_CapRevResTBE 2 23 42 0 67 */
4167&(nid_objs[616]),/* OBJ_setCext_TokenIdentifier 2 23 42 7 8 */ 4324586, /* OBJ_setct_CredReqTBE 2 23 42 0 68 */
4168&(nid_objs[617]),/* OBJ_setCext_Track2Data 2 23 42 7 9 */ 4325587, /* OBJ_setct_CredReqTBEX 2 23 42 0 69 */
4169&(nid_objs[618]),/* OBJ_setCext_TokenType 2 23 42 7 10 */ 4326588, /* OBJ_setct_CredResTBE 2 23 42 0 70 */
4170&(nid_objs[619]),/* OBJ_setCext_IssuerCapabilities 2 23 42 7 11 */ 4327589, /* OBJ_setct_CredRevReqTBE 2 23 42 0 71 */
4171&(nid_objs[636]),/* OBJ_set_brand_IATA_ATA 2 23 42 8 1 */ 4328590, /* OBJ_setct_CredRevReqTBEX 2 23 42 0 72 */
4172&(nid_objs[640]),/* OBJ_set_brand_Visa 2 23 42 8 4 */ 4329591, /* OBJ_setct_CredRevResTBE 2 23 42 0 73 */
4173&(nid_objs[641]),/* OBJ_set_brand_MasterCard 2 23 42 8 5 */ 4330592, /* OBJ_setct_BatchAdminReqTBE 2 23 42 0 74 */
4174&(nid_objs[637]),/* OBJ_set_brand_Diners 2 23 42 8 30 */ 4331593, /* OBJ_setct_BatchAdminResTBE 2 23 42 0 75 */
4175&(nid_objs[638]),/* OBJ_set_brand_AmericanExpress 2 23 42 8 34 */ 4332594, /* OBJ_setct_RegFormReqTBE 2 23 42 0 76 */
4176&(nid_objs[639]),/* OBJ_set_brand_JCB 2 23 42 8 35 */ 4333595, /* OBJ_setct_CertReqTBE 2 23 42 0 77 */
4177&(nid_objs[805]),/* OBJ_cryptopro 1 2 643 2 2 */ 4334596, /* OBJ_setct_CertReqTBEX 2 23 42 0 78 */
4178&(nid_objs[806]),/* OBJ_cryptocom 1 2 643 2 9 */ 4335597, /* OBJ_setct_CertResTBE 2 23 42 0 79 */
4179&(nid_objs[184]),/* OBJ_X9_57 1 2 840 10040 */ 4336598, /* OBJ_setct_CRLNotificationTBS 2 23 42 0 80 */
4180&(nid_objs[405]),/* OBJ_ansi_X9_62 1 2 840 10045 */ 4337599, /* OBJ_setct_CRLNotificationResTBS 2 23 42 0 81 */
4181&(nid_objs[389]),/* OBJ_Enterprises 1 3 6 1 4 1 */ 4338600, /* OBJ_setct_BCIDistributionTBS 2 23 42 0 82 */
4182&(nid_objs[504]),/* OBJ_mime_mhs 1 3 6 1 7 1 */ 4339601, /* OBJ_setext_genCrypt 2 23 42 1 1 */
4183&(nid_objs[104]),/* OBJ_md5WithRSA 1 3 14 3 2 3 */ 4340602, /* OBJ_setext_miAuth 2 23 42 1 3 */
4184&(nid_objs[29]),/* OBJ_des_ecb 1 3 14 3 2 6 */ 4341603, /* OBJ_setext_pinSecure 2 23 42 1 4 */
4185&(nid_objs[31]),/* OBJ_des_cbc 1 3 14 3 2 7 */ 4342604, /* OBJ_setext_pinAny 2 23 42 1 5 */
4186&(nid_objs[45]),/* OBJ_des_ofb64 1 3 14 3 2 8 */ 4343605, /* OBJ_setext_track2 2 23 42 1 7 */
4187&(nid_objs[30]),/* OBJ_des_cfb64 1 3 14 3 2 9 */ 4344606, /* OBJ_setext_cv 2 23 42 1 8 */
4188&(nid_objs[377]),/* OBJ_rsaSignature 1 3 14 3 2 11 */ 4345620, /* OBJ_setAttr_Cert 2 23 42 3 0 */
4189&(nid_objs[67]),/* OBJ_dsa_2 1 3 14 3 2 12 */ 4346621, /* OBJ_setAttr_PGWYcap 2 23 42 3 1 */
4190&(nid_objs[66]),/* OBJ_dsaWithSHA 1 3 14 3 2 13 */ 4347622, /* OBJ_setAttr_TokenType 2 23 42 3 2 */
4191&(nid_objs[42]),/* OBJ_shaWithRSAEncryption 1 3 14 3 2 15 */ 4348623, /* OBJ_setAttr_IssCap 2 23 42 3 3 */
4192&(nid_objs[32]),/* OBJ_des_ede_ecb 1 3 14 3 2 17 */ 4349607, /* OBJ_set_policy_root 2 23 42 5 0 */
4193&(nid_objs[41]),/* OBJ_sha 1 3 14 3 2 18 */ 4350608, /* OBJ_setCext_hashedRoot 2 23 42 7 0 */
4194&(nid_objs[64]),/* OBJ_sha1 1 3 14 3 2 26 */ 4351609, /* OBJ_setCext_certType 2 23 42 7 1 */
4195&(nid_objs[70]),/* OBJ_dsaWithSHA1_2 1 3 14 3 2 27 */ 4352610, /* OBJ_setCext_merchData 2 23 42 7 2 */
4196&(nid_objs[115]),/* OBJ_sha1WithRSA 1 3 14 3 2 29 */ 4353611, /* OBJ_setCext_cCertRequired 2 23 42 7 3 */
4197&(nid_objs[117]),/* OBJ_ripemd160 1 3 36 3 2 1 */ 4354612, /* OBJ_setCext_tunneling 2 23 42 7 4 */
4198&(nid_objs[143]),/* OBJ_sxnet 1 3 101 1 4 1 */ 4355613, /* OBJ_setCext_setExt 2 23 42 7 5 */
4199&(nid_objs[721]),/* OBJ_sect163k1 1 3 132 0 1 */ 4356614, /* OBJ_setCext_setQualf 2 23 42 7 6 */
4200&(nid_objs[722]),/* OBJ_sect163r1 1 3 132 0 2 */ 4357615, /* OBJ_setCext_PGWYcapabilities 2 23 42 7 7 */
4201&(nid_objs[728]),/* OBJ_sect239k1 1 3 132 0 3 */ 4358616, /* OBJ_setCext_TokenIdentifier 2 23 42 7 8 */
4202&(nid_objs[717]),/* OBJ_sect113r1 1 3 132 0 4 */ 4359617, /* OBJ_setCext_Track2Data 2 23 42 7 9 */
4203&(nid_objs[718]),/* OBJ_sect113r2 1 3 132 0 5 */ 4360618, /* OBJ_setCext_TokenType 2 23 42 7 10 */
4204&(nid_objs[704]),/* OBJ_secp112r1 1 3 132 0 6 */ 4361619, /* OBJ_setCext_IssuerCapabilities 2 23 42 7 11 */
4205&(nid_objs[705]),/* OBJ_secp112r2 1 3 132 0 7 */ 4362636, /* OBJ_set_brand_IATA_ATA 2 23 42 8 1 */
4206&(nid_objs[709]),/* OBJ_secp160r1 1 3 132 0 8 */ 4363640, /* OBJ_set_brand_Visa 2 23 42 8 4 */
4207&(nid_objs[708]),/* OBJ_secp160k1 1 3 132 0 9 */ 4364641, /* OBJ_set_brand_MasterCard 2 23 42 8 5 */
4208&(nid_objs[714]),/* OBJ_secp256k1 1 3 132 0 10 */ 4365637, /* OBJ_set_brand_Diners 2 23 42 8 30 */
4209&(nid_objs[723]),/* OBJ_sect163r2 1 3 132 0 15 */ 4366638, /* OBJ_set_brand_AmericanExpress 2 23 42 8 34 */
4210&(nid_objs[729]),/* OBJ_sect283k1 1 3 132 0 16 */ 4367639, /* OBJ_set_brand_JCB 2 23 42 8 35 */
4211&(nid_objs[730]),/* OBJ_sect283r1 1 3 132 0 17 */ 4368805, /* OBJ_cryptopro 1 2 643 2 2 */
4212&(nid_objs[719]),/* OBJ_sect131r1 1 3 132 0 22 */ 4369806, /* OBJ_cryptocom 1 2 643 2 9 */
4213&(nid_objs[720]),/* OBJ_sect131r2 1 3 132 0 23 */ 4370184, /* OBJ_X9_57 1 2 840 10040 */
4214&(nid_objs[724]),/* OBJ_sect193r1 1 3 132 0 24 */ 4371405, /* OBJ_ansi_X9_62 1 2 840 10045 */
4215&(nid_objs[725]),/* OBJ_sect193r2 1 3 132 0 25 */ 4372389, /* OBJ_Enterprises 1 3 6 1 4 1 */
4216&(nid_objs[726]),/* OBJ_sect233k1 1 3 132 0 26 */ 4373504, /* OBJ_mime_mhs 1 3 6 1 7 1 */
4217&(nid_objs[727]),/* OBJ_sect233r1 1 3 132 0 27 */ 4374104, /* OBJ_md5WithRSA 1 3 14 3 2 3 */
4218&(nid_objs[706]),/* OBJ_secp128r1 1 3 132 0 28 */ 437529, /* OBJ_des_ecb 1 3 14 3 2 6 */
4219&(nid_objs[707]),/* OBJ_secp128r2 1 3 132 0 29 */ 437631, /* OBJ_des_cbc 1 3 14 3 2 7 */
4220&(nid_objs[710]),/* OBJ_secp160r2 1 3 132 0 30 */ 437745, /* OBJ_des_ofb64 1 3 14 3 2 8 */
4221&(nid_objs[711]),/* OBJ_secp192k1 1 3 132 0 31 */ 437830, /* OBJ_des_cfb64 1 3 14 3 2 9 */
4222&(nid_objs[712]),/* OBJ_secp224k1 1 3 132 0 32 */ 4379377, /* OBJ_rsaSignature 1 3 14 3 2 11 */
4223&(nid_objs[713]),/* OBJ_secp224r1 1 3 132 0 33 */ 438067, /* OBJ_dsa_2 1 3 14 3 2 12 */
4224&(nid_objs[715]),/* OBJ_secp384r1 1 3 132 0 34 */ 438166, /* OBJ_dsaWithSHA 1 3 14 3 2 13 */
4225&(nid_objs[716]),/* OBJ_secp521r1 1 3 132 0 35 */ 438242, /* OBJ_shaWithRSAEncryption 1 3 14 3 2 15 */
4226&(nid_objs[731]),/* OBJ_sect409k1 1 3 132 0 36 */ 438332, /* OBJ_des_ede_ecb 1 3 14 3 2 17 */
4227&(nid_objs[732]),/* OBJ_sect409r1 1 3 132 0 37 */ 438441, /* OBJ_sha 1 3 14 3 2 18 */
4228&(nid_objs[733]),/* OBJ_sect571k1 1 3 132 0 38 */ 438564, /* OBJ_sha1 1 3 14 3 2 26 */
4229&(nid_objs[734]),/* OBJ_sect571r1 1 3 132 0 39 */ 438670, /* OBJ_dsaWithSHA1_2 1 3 14 3 2 27 */
4230&(nid_objs[624]),/* OBJ_set_rootKeyThumb 2 23 42 3 0 0 */ 4387115, /* OBJ_sha1WithRSA 1 3 14 3 2 29 */
4231&(nid_objs[625]),/* OBJ_set_addPolicy 2 23 42 3 0 1 */ 4388117, /* OBJ_ripemd160 1 3 36 3 2 1 */
4232&(nid_objs[626]),/* OBJ_setAttr_Token_EMV 2 23 42 3 2 1 */ 4389143, /* OBJ_sxnet 1 3 101 1 4 1 */
4233&(nid_objs[627]),/* OBJ_setAttr_Token_B0Prime 2 23 42 3 2 2 */ 4390721, /* OBJ_sect163k1 1 3 132 0 1 */
4234&(nid_objs[628]),/* OBJ_setAttr_IssCap_CVM 2 23 42 3 3 3 */ 4391722, /* OBJ_sect163r1 1 3 132 0 2 */
4235&(nid_objs[629]),/* OBJ_setAttr_IssCap_T2 2 23 42 3 3 4 */ 4392728, /* OBJ_sect239k1 1 3 132 0 3 */
4236&(nid_objs[630]),/* OBJ_setAttr_IssCap_Sig 2 23 42 3 3 5 */ 4393717, /* OBJ_sect113r1 1 3 132 0 4 */
4237&(nid_objs[642]),/* OBJ_set_brand_Novus 2 23 42 8 6011 */ 4394718, /* OBJ_sect113r2 1 3 132 0 5 */
4238&(nid_objs[735]),/* OBJ_wap_wsg_idm_ecid_wtls1 2 23 43 13 4 1 */ 4395704, /* OBJ_secp112r1 1 3 132 0 6 */
4239&(nid_objs[736]),/* OBJ_wap_wsg_idm_ecid_wtls3 2 23 43 13 4 3 */ 4396705, /* OBJ_secp112r2 1 3 132 0 7 */
4240&(nid_objs[737]),/* OBJ_wap_wsg_idm_ecid_wtls4 2 23 43 13 4 4 */ 4397709, /* OBJ_secp160r1 1 3 132 0 8 */
4241&(nid_objs[738]),/* OBJ_wap_wsg_idm_ecid_wtls5 2 23 43 13 4 5 */ 4398708, /* OBJ_secp160k1 1 3 132 0 9 */
4242&(nid_objs[739]),/* OBJ_wap_wsg_idm_ecid_wtls6 2 23 43 13 4 6 */ 4399714, /* OBJ_secp256k1 1 3 132 0 10 */
4243&(nid_objs[740]),/* OBJ_wap_wsg_idm_ecid_wtls7 2 23 43 13 4 7 */ 4400723, /* OBJ_sect163r2 1 3 132 0 15 */
4244&(nid_objs[741]),/* OBJ_wap_wsg_idm_ecid_wtls8 2 23 43 13 4 8 */ 4401729, /* OBJ_sect283k1 1 3 132 0 16 */
4245&(nid_objs[742]),/* OBJ_wap_wsg_idm_ecid_wtls9 2 23 43 13 4 9 */ 4402730, /* OBJ_sect283r1 1 3 132 0 17 */
4246&(nid_objs[743]),/* OBJ_wap_wsg_idm_ecid_wtls10 2 23 43 13 4 10 */ 4403719, /* OBJ_sect131r1 1 3 132 0 22 */
4247&(nid_objs[744]),/* OBJ_wap_wsg_idm_ecid_wtls11 2 23 43 13 4 11 */ 4404720, /* OBJ_sect131r2 1 3 132 0 23 */
4248&(nid_objs[745]),/* OBJ_wap_wsg_idm_ecid_wtls12 2 23 43 13 4 12 */ 4405724, /* OBJ_sect193r1 1 3 132 0 24 */
4249&(nid_objs[804]),/* OBJ_whirlpool 1 0 10118 3 0 55 */ 4406725, /* OBJ_sect193r2 1 3 132 0 25 */
4250&(nid_objs[124]),/* OBJ_rle_compression 1 1 1 1 666 1 */ 4407726, /* OBJ_sect233k1 1 3 132 0 26 */
4251&(nid_objs[773]),/* OBJ_kisa 1 2 410 200004 */ 4408727, /* OBJ_sect233r1 1 3 132 0 27 */
4252&(nid_objs[807]),/* OBJ_id_GostR3411_94_with_GostR3410_2001 1 2 643 2 2 3 */ 4409706, /* OBJ_secp128r1 1 3 132 0 28 */
4253&(nid_objs[808]),/* OBJ_id_GostR3411_94_with_GostR3410_94 1 2 643 2 2 4 */ 4410707, /* OBJ_secp128r2 1 3 132 0 29 */
4254&(nid_objs[809]),/* OBJ_id_GostR3411_94 1 2 643 2 2 9 */ 4411710, /* OBJ_secp160r2 1 3 132 0 30 */
4255&(nid_objs[810]),/* OBJ_id_HMACGostR3411_94 1 2 643 2 2 10 */ 4412711, /* OBJ_secp192k1 1 3 132 0 31 */
4256&(nid_objs[811]),/* OBJ_id_GostR3410_2001 1 2 643 2 2 19 */ 4413712, /* OBJ_secp224k1 1 3 132 0 32 */
4257&(nid_objs[812]),/* OBJ_id_GostR3410_94 1 2 643 2 2 20 */ 4414713, /* OBJ_secp224r1 1 3 132 0 33 */
4258&(nid_objs[813]),/* OBJ_id_Gost28147_89 1 2 643 2 2 21 */ 4415715, /* OBJ_secp384r1 1 3 132 0 34 */
4259&(nid_objs[815]),/* OBJ_id_Gost28147_89_MAC 1 2 643 2 2 22 */ 4416716, /* OBJ_secp521r1 1 3 132 0 35 */
4260&(nid_objs[816]),/* OBJ_id_GostR3411_94_prf 1 2 643 2 2 23 */ 4417731, /* OBJ_sect409k1 1 3 132 0 36 */
4261&(nid_objs[817]),/* OBJ_id_GostR3410_2001DH 1 2 643 2 2 98 */ 4418732, /* OBJ_sect409r1 1 3 132 0 37 */
4262&(nid_objs[818]),/* OBJ_id_GostR3410_94DH 1 2 643 2 2 99 */ 4419733, /* OBJ_sect571k1 1 3 132 0 38 */
4263&(nid_objs[ 1]),/* OBJ_rsadsi 1 2 840 113549 */ 4420734, /* OBJ_sect571r1 1 3 132 0 39 */
4264&(nid_objs[185]),/* OBJ_X9cm 1 2 840 10040 4 */ 4421624, /* OBJ_set_rootKeyThumb 2 23 42 3 0 0 */
4265&(nid_objs[127]),/* OBJ_id_pkix 1 3 6 1 5 5 7 */ 4422625, /* OBJ_set_addPolicy 2 23 42 3 0 1 */
4266&(nid_objs[505]),/* OBJ_mime_mhs_headings 1 3 6 1 7 1 1 */ 4423626, /* OBJ_setAttr_Token_EMV 2 23 42 3 2 1 */
4267&(nid_objs[506]),/* OBJ_mime_mhs_bodies 1 3 6 1 7 1 2 */ 4424627, /* OBJ_setAttr_Token_B0Prime 2 23 42 3 2 2 */
4268&(nid_objs[119]),/* OBJ_ripemd160WithRSA 1 3 36 3 3 1 2 */ 4425628, /* OBJ_setAttr_IssCap_CVM 2 23 42 3 3 3 */
4269&(nid_objs[631]),/* OBJ_setAttr_GenCryptgrm 2 23 42 3 3 3 1 */ 4426629, /* OBJ_setAttr_IssCap_T2 2 23 42 3 3 4 */
4270&(nid_objs[632]),/* OBJ_setAttr_T2Enc 2 23 42 3 3 4 1 */ 4427630, /* OBJ_setAttr_IssCap_Sig 2 23 42 3 3 5 */
4271&(nid_objs[633]),/* OBJ_setAttr_T2cleartxt 2 23 42 3 3 4 2 */ 4428642, /* OBJ_set_brand_Novus 2 23 42 8 6011 */
4272&(nid_objs[634]),/* OBJ_setAttr_TokICCsig 2 23 42 3 3 5 1 */ 4429735, /* OBJ_wap_wsg_idm_ecid_wtls1 2 23 43 1 4 1 */
4273&(nid_objs[635]),/* OBJ_setAttr_SecDevSig 2 23 42 3 3 5 2 */ 4430736, /* OBJ_wap_wsg_idm_ecid_wtls3 2 23 43 1 4 3 */
4274&(nid_objs[436]),/* OBJ_ucl 0 9 2342 19200300 */ 4431737, /* OBJ_wap_wsg_idm_ecid_wtls4 2 23 43 1 4 4 */
4275&(nid_objs[820]),/* OBJ_id_Gost28147_89_None_KeyMeshing 1 2 643 2 2 14 0 */ 4432738, /* OBJ_wap_wsg_idm_ecid_wtls5 2 23 43 1 4 5 */
4276&(nid_objs[819]),/* OBJ_id_Gost28147_89_CryptoPro_KeyMeshing 1 2 643 2 2 14 1 */ 4433739, /* OBJ_wap_wsg_idm_ecid_wtls6 2 23 43 1 4 6 */
4277&(nid_objs[845]),/* OBJ_id_GostR3410_94_a 1 2 643 2 2 20 1 */ 4434740, /* OBJ_wap_wsg_idm_ecid_wtls7 2 23 43 1 4 7 */
4278&(nid_objs[846]),/* OBJ_id_GostR3410_94_aBis 1 2 643 2 2 20 2 */ 4435741, /* OBJ_wap_wsg_idm_ecid_wtls8 2 23 43 1 4 8 */
4279&(nid_objs[847]),/* OBJ_id_GostR3410_94_b 1 2 643 2 2 20 3 */ 4436742, /* OBJ_wap_wsg_idm_ecid_wtls9 2 23 43 1 4 9 */
4280&(nid_objs[848]),/* OBJ_id_GostR3410_94_bBis 1 2 643 2 2 20 4 */ 4437743, /* OBJ_wap_wsg_idm_ecid_wtls10 2 23 43 1 4 10 */
4281&(nid_objs[821]),/* OBJ_id_GostR3411_94_TestParamSet 1 2 643 2 2 30 0 */ 4438744, /* OBJ_wap_wsg_idm_ecid_wtls11 2 23 43 1 4 11 */
4282&(nid_objs[822]),/* OBJ_id_GostR3411_94_CryptoProParamSet 1 2 643 2 2 30 1 */ 4439745, /* OBJ_wap_wsg_idm_ecid_wtls12 2 23 43 1 4 12 */
4283&(nid_objs[823]),/* OBJ_id_Gost28147_89_TestParamSet 1 2 643 2 2 31 0 */ 4440804, /* OBJ_whirlpool 1 0 10118 3 0 55 */
4284&(nid_objs[824]),/* OBJ_id_Gost28147_89_CryptoPro_A_ParamSet 1 2 643 2 2 31 1 */ 4441124, /* OBJ_rle_compression 1 1 1 1 666 1 */
4285&(nid_objs[825]),/* OBJ_id_Gost28147_89_CryptoPro_B_ParamSet 1 2 643 2 2 31 2 */ 4442773, /* OBJ_kisa 1 2 410 200004 */
4286&(nid_objs[826]),/* OBJ_id_Gost28147_89_CryptoPro_C_ParamSet 1 2 643 2 2 31 3 */ 4443807, /* OBJ_id_GostR3411_94_with_GostR3410_2001 1 2 643 2 2 3 */
4287&(nid_objs[827]),/* OBJ_id_Gost28147_89_CryptoPro_D_ParamSet 1 2 643 2 2 31 4 */ 4444808, /* OBJ_id_GostR3411_94_with_GostR3410_94 1 2 643 2 2 4 */
4288&(nid_objs[828]),/* OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 1 2 643 2 2 31 5 */ 4445809, /* OBJ_id_GostR3411_94 1 2 643 2 2 9 */
4289&(nid_objs[829]),/* OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 1 2 643 2 2 31 6 */ 4446810, /* OBJ_id_HMACGostR3411_94 1 2 643 2 2 10 */
4290&(nid_objs[830]),/* OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 1 2 643 2 2 31 7 */ 4447811, /* OBJ_id_GostR3410_2001 1 2 643 2 2 19 */
4291&(nid_objs[831]),/* OBJ_id_GostR3410_94_TestParamSet 1 2 643 2 2 32 0 */ 4448812, /* OBJ_id_GostR3410_94 1 2 643 2 2 20 */
4292&(nid_objs[832]),/* OBJ_id_GostR3410_94_CryptoPro_A_ParamSet 1 2 643 2 2 32 2 */ 4449813, /* OBJ_id_Gost28147_89 1 2 643 2 2 21 */
4293&(nid_objs[833]),/* OBJ_id_GostR3410_94_CryptoPro_B_ParamSet 1 2 643 2 2 32 3 */ 4450815, /* OBJ_id_Gost28147_89_MAC 1 2 643 2 2 22 */
4294&(nid_objs[834]),/* OBJ_id_GostR3410_94_CryptoPro_C_ParamSet 1 2 643 2 2 32 4 */ 4451816, /* OBJ_id_GostR3411_94_prf 1 2 643 2 2 23 */
4295&(nid_objs[835]),/* OBJ_id_GostR3410_94_CryptoPro_D_ParamSet 1 2 643 2 2 32 5 */ 4452817, /* OBJ_id_GostR3410_2001DH 1 2 643 2 2 98 */
4296&(nid_objs[836]),/* OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet 1 2 643 2 2 33 1 */ 4453818, /* OBJ_id_GostR3410_94DH 1 2 643 2 2 99 */
4297&(nid_objs[837]),/* OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet 1 2 643 2 2 33 2 */ 4454 1, /* OBJ_rsadsi 1 2 840 113549 */
4298&(nid_objs[838]),/* OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet 1 2 643 2 2 33 3 */ 4455185, /* OBJ_X9cm 1 2 840 10040 4 */
4299&(nid_objs[839]),/* OBJ_id_GostR3410_2001_TestParamSet 1 2 643 2 2 35 0 */ 4456127, /* OBJ_id_pkix 1 3 6 1 5 5 7 */
4300&(nid_objs[840]),/* OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet 1 2 643 2 2 35 1 */ 4457505, /* OBJ_mime_mhs_headings 1 3 6 1 7 1 1 */
4301&(nid_objs[841]),/* OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet 1 2 643 2 2 35 2 */ 4458506, /* OBJ_mime_mhs_bodies 1 3 6 1 7 1 2 */
4302&(nid_objs[842]),/* OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet 1 2 643 2 2 35 3 */ 4459119, /* OBJ_ripemd160WithRSA 1 3 36 3 3 1 2 */
4303&(nid_objs[843]),/* OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet 1 2 643 2 2 36 0 */ 4460631, /* OBJ_setAttr_GenCryptgrm 2 23 42 3 3 3 1 */
4304&(nid_objs[844]),/* OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet 1 2 643 2 2 36 1 */ 4461632, /* OBJ_setAttr_T2Enc 2 23 42 3 3 4 1 */
4305&(nid_objs[ 2]),/* OBJ_pkcs 1 2 840 113549 1 */ 4462633, /* OBJ_setAttr_T2cleartxt 2 23 42 3 3 4 2 */
4306&(nid_objs[431]),/* OBJ_hold_instruction_none 1 2 840 10040 2 1 */ 4463634, /* OBJ_setAttr_TokICCsig 2 23 42 3 3 5 1 */
4307&(nid_objs[432]),/* OBJ_hold_instruction_call_issuer 1 2 840 10040 2 2 */ 4464635, /* OBJ_setAttr_SecDevSig 2 23 42 3 3 5 2 */
4308&(nid_objs[433]),/* OBJ_hold_instruction_reject 1 2 840 10040 2 3 */ 4465436, /* OBJ_ucl 0 9 2342 19200300 */
4309&(nid_objs[116]),/* OBJ_dsa 1 2 840 10040 4 1 */ 4466820, /* OBJ_id_Gost28147_89_None_KeyMeshing 1 2 643 2 2 14 0 */
4310&(nid_objs[113]),/* OBJ_dsaWithSHA1 1 2 840 10040 4 3 */ 4467819, /* OBJ_id_Gost28147_89_CryptoPro_KeyMeshing 1 2 643 2 2 14 1 */
4311&(nid_objs[406]),/* OBJ_X9_62_prime_field 1 2 840 10045 1 1 */ 4468845, /* OBJ_id_GostR3410_94_a 1 2 643 2 2 20 1 */
4312&(nid_objs[407]),/* OBJ_X9_62_characteristic_two_field 1 2 840 10045 1 2 */ 4469846, /* OBJ_id_GostR3410_94_aBis 1 2 643 2 2 20 2 */
4313&(nid_objs[408]),/* OBJ_X9_62_id_ecPublicKey 1 2 840 10045 2 1 */ 4470847, /* OBJ_id_GostR3410_94_b 1 2 643 2 2 20 3 */
4314&(nid_objs[416]),/* OBJ_ecdsa_with_SHA1 1 2 840 10045 4 1 */ 4471848, /* OBJ_id_GostR3410_94_bBis 1 2 643 2 2 20 4 */
4315&(nid_objs[791]),/* OBJ_ecdsa_with_Recommended 1 2 840 10045 4 2 */ 4472821, /* OBJ_id_GostR3411_94_TestParamSet 1 2 643 2 2 30 0 */
4316&(nid_objs[792]),/* OBJ_ecdsa_with_Specified 1 2 840 10045 4 3 */ 4473822, /* OBJ_id_GostR3411_94_CryptoProParamSet 1 2 643 2 2 30 1 */
4317&(nid_objs[258]),/* OBJ_id_pkix_mod 1 3 6 1 5 5 7 0 */ 4474823, /* OBJ_id_Gost28147_89_TestParamSet 1 2 643 2 2 31 0 */
4318&(nid_objs[175]),/* OBJ_id_pe 1 3 6 1 5 5 7 1 */ 4475824, /* OBJ_id_Gost28147_89_CryptoPro_A_ParamSet 1 2 643 2 2 31 1 */
4319&(nid_objs[259]),/* OBJ_id_qt 1 3 6 1 5 5 7 2 */ 4476825, /* OBJ_id_Gost28147_89_CryptoPro_B_ParamSet 1 2 643 2 2 31 2 */
4320&(nid_objs[128]),/* OBJ_id_kp 1 3 6 1 5 5 7 3 */ 4477826, /* OBJ_id_Gost28147_89_CryptoPro_C_ParamSet 1 2 643 2 2 31 3 */
4321&(nid_objs[260]),/* OBJ_id_it 1 3 6 1 5 5 7 4 */ 4478827, /* OBJ_id_Gost28147_89_CryptoPro_D_ParamSet 1 2 643 2 2 31 4 */
4322&(nid_objs[261]),/* OBJ_id_pkip 1 3 6 1 5 5 7 5 */ 4479828, /* OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 1 2 643 2 2 31 5 */
4323&(nid_objs[262]),/* OBJ_id_alg 1 3 6 1 5 5 7 6 */ 4480829, /* OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 1 2 643 2 2 31 6 */
4324&(nid_objs[263]),/* OBJ_id_cmc 1 3 6 1 5 5 7 7 */ 4481830, /* OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 1 2 643 2 2 31 7 */
4325&(nid_objs[264]),/* OBJ_id_on 1 3 6 1 5 5 7 8 */ 4482831, /* OBJ_id_GostR3410_94_TestParamSet 1 2 643 2 2 32 0 */
4326&(nid_objs[265]),/* OBJ_id_pda 1 3 6 1 5 5 7 9 */ 4483832, /* OBJ_id_GostR3410_94_CryptoPro_A_ParamSet 1 2 643 2 2 32 2 */
4327&(nid_objs[266]),/* OBJ_id_aca 1 3 6 1 5 5 7 10 */ 4484833, /* OBJ_id_GostR3410_94_CryptoPro_B_ParamSet 1 2 643 2 2 32 3 */
4328&(nid_objs[267]),/* OBJ_id_qcs 1 3 6 1 5 5 7 11 */ 4485834, /* OBJ_id_GostR3410_94_CryptoPro_C_ParamSet 1 2 643 2 2 32 4 */
4329&(nid_objs[268]),/* OBJ_id_cct 1 3 6 1 5 5 7 12 */ 4486835, /* OBJ_id_GostR3410_94_CryptoPro_D_ParamSet 1 2 643 2 2 32 5 */
4330&(nid_objs[662]),/* OBJ_id_ppl 1 3 6 1 5 5 7 21 */ 4487836, /* OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet 1 2 643 2 2 33 1 */
4331&(nid_objs[176]),/* OBJ_id_ad 1 3 6 1 5 5 7 48 */ 4488837, /* OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet 1 2 643 2 2 33 2 */
4332&(nid_objs[507]),/* OBJ_id_hex_partial_message 1 3 6 1 7 1 1 1 */ 4489838, /* OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet 1 2 643 2 2 33 3 */
4333&(nid_objs[508]),/* OBJ_id_hex_multipart_message 1 3 6 1 7 1 1 2 */ 4490839, /* OBJ_id_GostR3410_2001_TestParamSet 1 2 643 2 2 35 0 */
4334&(nid_objs[57]),/* OBJ_netscape 2 16 840 1 113730 */ 4491840, /* OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet 1 2 643 2 2 35 1 */
4335&(nid_objs[754]),/* OBJ_camellia_128_ecb 0 3 4401 5 3 1 9 1 */ 4492841, /* OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet 1 2 643 2 2 35 2 */
4336&(nid_objs[766]),/* OBJ_camellia_128_ofb128 0 3 4401 5 3 1 9 3 */ 4493842, /* OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet 1 2 643 2 2 35 3 */
4337&(nid_objs[757]),/* OBJ_camellia_128_cfb128 0 3 4401 5 3 1 9 4 */ 4494843, /* OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet 1 2 643 2 2 36 0 */
4338&(nid_objs[755]),/* OBJ_camellia_192_ecb 0 3 4401 5 3 1 9 21 */ 4495844, /* OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet 1 2 643 2 2 36 1 */
4339&(nid_objs[767]),/* OBJ_camellia_192_ofb128 0 3 4401 5 3 1 9 23 */ 4496 2, /* OBJ_pkcs 1 2 840 113549 1 */
4340&(nid_objs[758]),/* OBJ_camellia_192_cfb128 0 3 4401 5 3 1 9 24 */ 4497431, /* OBJ_hold_instruction_none 1 2 840 10040 2 1 */
4341&(nid_objs[756]),/* OBJ_camellia_256_ecb 0 3 4401 5 3 1 9 41 */ 4498432, /* OBJ_hold_instruction_call_issuer 1 2 840 10040 2 2 */
4342&(nid_objs[768]),/* OBJ_camellia_256_ofb128 0 3 4401 5 3 1 9 43 */ 4499433, /* OBJ_hold_instruction_reject 1 2 840 10040 2 3 */
4343&(nid_objs[759]),/* OBJ_camellia_256_cfb128 0 3 4401 5 3 1 9 44 */ 4500116, /* OBJ_dsa 1 2 840 10040 4 1 */
4344&(nid_objs[437]),/* OBJ_pilot 0 9 2342 19200300 100 */ 4501113, /* OBJ_dsaWithSHA1 1 2 840 10040 4 3 */
4345&(nid_objs[776]),/* OBJ_seed_ecb 1 2 410 200004 1 3 */ 4502406, /* OBJ_X9_62_prime_field 1 2 840 10045 1 1 */
4346&(nid_objs[777]),/* OBJ_seed_cbc 1 2 410 200004 1 4 */ 4503407, /* OBJ_X9_62_characteristic_two_field 1 2 840 10045 1 2 */
4347&(nid_objs[779]),/* OBJ_seed_cfb128 1 2 410 200004 1 5 */ 4504408, /* OBJ_X9_62_id_ecPublicKey 1 2 840 10045 2 1 */
4348&(nid_objs[778]),/* OBJ_seed_ofb128 1 2 410 200004 1 6 */ 4505416, /* OBJ_ecdsa_with_SHA1 1 2 840 10045 4 1 */
4349&(nid_objs[852]),/* OBJ_id_GostR3411_94_with_GostR3410_94_cc 1 2 643 2 9 1 3 3 */ 4506791, /* OBJ_ecdsa_with_Recommended 1 2 840 10045 4 2 */
4350&(nid_objs[853]),/* OBJ_id_GostR3411_94_with_GostR3410_2001_cc 1 2 643 2 9 1 3 4 */ 4507792, /* OBJ_ecdsa_with_Specified 1 2 840 10045 4 3 */
4351&(nid_objs[850]),/* OBJ_id_GostR3410_94_cc 1 2 643 2 9 1 5 3 */ 4508258, /* OBJ_id_pkix_mod 1 3 6 1 5 5 7 0 */
4352&(nid_objs[851]),/* OBJ_id_GostR3410_2001_cc 1 2 643 2 9 1 5 4 */ 4509175, /* OBJ_id_pe 1 3 6 1 5 5 7 1 */
4353&(nid_objs[849]),/* OBJ_id_Gost28147_89_cc 1 2 643 2 9 1 6 1 */ 4510259, /* OBJ_id_qt 1 3 6 1 5 5 7 2 */
4354&(nid_objs[854]),/* OBJ_id_GostR3410_2001_ParamSet_cc 1 2 643 2 9 1 8 1 */ 4511128, /* OBJ_id_kp 1 3 6 1 5 5 7 3 */
4355&(nid_objs[186]),/* OBJ_pkcs1 1 2 840 113549 1 1 */ 4512260, /* OBJ_id_it 1 3 6 1 5 5 7 4 */
4356&(nid_objs[27]),/* OBJ_pkcs3 1 2 840 113549 1 3 */ 4513261, /* OBJ_id_pkip 1 3 6 1 5 5 7 5 */
4357&(nid_objs[187]),/* OBJ_pkcs5 1 2 840 113549 1 5 */ 4514262, /* OBJ_id_alg 1 3 6 1 5 5 7 6 */
4358&(nid_objs[20]),/* OBJ_pkcs7 1 2 840 113549 1 7 */ 4515263, /* OBJ_id_cmc 1 3 6 1 5 5 7 7 */
4359&(nid_objs[47]),/* OBJ_pkcs9 1 2 840 113549 1 9 */ 4516264, /* OBJ_id_on 1 3 6 1 5 5 7 8 */
4360&(nid_objs[ 3]),/* OBJ_md2 1 2 840 113549 2 2 */ 4517265, /* OBJ_id_pda 1 3 6 1 5 5 7 9 */
4361&(nid_objs[257]),/* OBJ_md4 1 2 840 113549 2 4 */ 4518266, /* OBJ_id_aca 1 3 6 1 5 5 7 10 */
4362&(nid_objs[ 4]),/* OBJ_md5 1 2 840 113549 2 5 */ 4519267, /* OBJ_id_qcs 1 3 6 1 5 5 7 11 */
4363&(nid_objs[797]),/* OBJ_hmacWithMD5 1 2 840 113549 2 6 */ 4520268, /* OBJ_id_cct 1 3 6 1 5 5 7 12 */
4364&(nid_objs[163]),/* OBJ_hmacWithSHA1 1 2 840 113549 2 7 */ 4521662, /* OBJ_id_ppl 1 3 6 1 5 5 7 21 */
4365&(nid_objs[798]),/* OBJ_hmacWithSHA224 1 2 840 113549 2 8 */ 4522176, /* OBJ_id_ad 1 3 6 1 5 5 7 48 */
4366&(nid_objs[799]),/* OBJ_hmacWithSHA256 1 2 840 113549 2 9 */ 4523507, /* OBJ_id_hex_partial_message 1 3 6 1 7 1 1 1 */
4367&(nid_objs[800]),/* OBJ_hmacWithSHA384 1 2 840 113549 2 10 */ 4524508, /* OBJ_id_hex_multipart_message 1 3 6 1 7 1 1 2 */
4368&(nid_objs[801]),/* OBJ_hmacWithSHA512 1 2 840 113549 2 11 */ 452557, /* OBJ_netscape 2 16 840 1 113730 */
4369&(nid_objs[37]),/* OBJ_rc2_cbc 1 2 840 113549 3 2 */ 4526754, /* OBJ_camellia_128_ecb 0 3 4401 5 3 1 9 1 */
4370&(nid_objs[ 5]),/* OBJ_rc4 1 2 840 113549 3 4 */ 4527766, /* OBJ_camellia_128_ofb128 0 3 4401 5 3 1 9 3 */
4371&(nid_objs[44]),/* OBJ_des_ede3_cbc 1 2 840 113549 3 7 */ 4528757, /* OBJ_camellia_128_cfb128 0 3 4401 5 3 1 9 4 */
4372&(nid_objs[120]),/* OBJ_rc5_cbc 1 2 840 113549 3 8 */ 4529755, /* OBJ_camellia_192_ecb 0 3 4401 5 3 1 9 21 */
4373&(nid_objs[643]),/* OBJ_des_cdmf 1 2 840 113549 3 10 */ 4530767, /* OBJ_camellia_192_ofb128 0 3 4401 5 3 1 9 23 */
4374&(nid_objs[680]),/* OBJ_X9_62_id_characteristic_two_basis 1 2 840 10045 1 2 3 */ 4531758, /* OBJ_camellia_192_cfb128 0 3 4401 5 3 1 9 24 */
4375&(nid_objs[684]),/* OBJ_X9_62_c2pnb163v1 1 2 840 10045 3 0 1 */ 4532756, /* OBJ_camellia_256_ecb 0 3 4401 5 3 1 9 41 */
4376&(nid_objs[685]),/* OBJ_X9_62_c2pnb163v2 1 2 840 10045 3 0 2 */ 4533768, /* OBJ_camellia_256_ofb128 0 3 4401 5 3 1 9 43 */
4377&(nid_objs[686]),/* OBJ_X9_62_c2pnb163v3 1 2 840 10045 3 0 3 */ 4534759, /* OBJ_camellia_256_cfb128 0 3 4401 5 3 1 9 44 */
4378&(nid_objs[687]),/* OBJ_X9_62_c2pnb176v1 1 2 840 10045 3 0 4 */ 4535437, /* OBJ_pilot 0 9 2342 19200300 100 */
4379&(nid_objs[688]),/* OBJ_X9_62_c2tnb191v1 1 2 840 10045 3 0 5 */ 4536776, /* OBJ_seed_ecb 1 2 410 200004 1 3 */
4380&(nid_objs[689]),/* OBJ_X9_62_c2tnb191v2 1 2 840 10045 3 0 6 */ 4537777, /* OBJ_seed_cbc 1 2 410 200004 1 4 */
4381&(nid_objs[690]),/* OBJ_X9_62_c2tnb191v3 1 2 840 10045 3 0 7 */ 4538779, /* OBJ_seed_cfb128 1 2 410 200004 1 5 */
4382&(nid_objs[691]),/* OBJ_X9_62_c2onb191v4 1 2 840 10045 3 0 8 */ 4539778, /* OBJ_seed_ofb128 1 2 410 200004 1 6 */
4383&(nid_objs[692]),/* OBJ_X9_62_c2onb191v5 1 2 840 10045 3 0 9 */ 4540852, /* OBJ_id_GostR3411_94_with_GostR3410_94_cc 1 2 643 2 9 1 3 3 */
4384&(nid_objs[693]),/* OBJ_X9_62_c2pnb208w1 1 2 840 10045 3 0 10 */ 4541853, /* OBJ_id_GostR3411_94_with_GostR3410_2001_cc 1 2 643 2 9 1 3 4 */
4385&(nid_objs[694]),/* OBJ_X9_62_c2tnb239v1 1 2 840 10045 3 0 11 */ 4542850, /* OBJ_id_GostR3410_94_cc 1 2 643 2 9 1 5 3 */
4386&(nid_objs[695]),/* OBJ_X9_62_c2tnb239v2 1 2 840 10045 3 0 12 */ 4543851, /* OBJ_id_GostR3410_2001_cc 1 2 643 2 9 1 5 4 */
4387&(nid_objs[696]),/* OBJ_X9_62_c2tnb239v3 1 2 840 10045 3 0 13 */ 4544849, /* OBJ_id_Gost28147_89_cc 1 2 643 2 9 1 6 1 */
4388&(nid_objs[697]),/* OBJ_X9_62_c2onb239v4 1 2 840 10045 3 0 14 */ 4545854, /* OBJ_id_GostR3410_2001_ParamSet_cc 1 2 643 2 9 1 8 1 */
4389&(nid_objs[698]),/* OBJ_X9_62_c2onb239v5 1 2 840 10045 3 0 15 */ 4546186, /* OBJ_pkcs1 1 2 840 113549 1 1 */
4390&(nid_objs[699]),/* OBJ_X9_62_c2pnb272w1 1 2 840 10045 3 0 16 */ 454727, /* OBJ_pkcs3 1 2 840 113549 1 3 */
4391&(nid_objs[700]),/* OBJ_X9_62_c2pnb304w1 1 2 840 10045 3 0 17 */ 4548187, /* OBJ_pkcs5 1 2 840 113549 1 5 */
4392&(nid_objs[701]),/* OBJ_X9_62_c2tnb359v1 1 2 840 10045 3 0 18 */ 454920, /* OBJ_pkcs7 1 2 840 113549 1 7 */
4393&(nid_objs[702]),/* OBJ_X9_62_c2pnb368w1 1 2 840 10045 3 0 19 */ 455047, /* OBJ_pkcs9 1 2 840 113549 1 9 */
4394&(nid_objs[703]),/* OBJ_X9_62_c2tnb431r1 1 2 840 10045 3 0 20 */ 4551 3, /* OBJ_md2 1 2 840 113549 2 2 */
4395&(nid_objs[409]),/* OBJ_X9_62_prime192v1 1 2 840 10045 3 1 1 */ 4552257, /* OBJ_md4 1 2 840 113549 2 4 */
4396&(nid_objs[410]),/* OBJ_X9_62_prime192v2 1 2 840 10045 3 1 2 */ 4553 4, /* OBJ_md5 1 2 840 113549 2 5 */
4397&(nid_objs[411]),/* OBJ_X9_62_prime192v3 1 2 840 10045 3 1 3 */ 4554797, /* OBJ_hmacWithMD5 1 2 840 113549 2 6 */
4398&(nid_objs[412]),/* OBJ_X9_62_prime239v1 1 2 840 10045 3 1 4 */ 4555163, /* OBJ_hmacWithSHA1 1 2 840 113549 2 7 */
4399&(nid_objs[413]),/* OBJ_X9_62_prime239v2 1 2 840 10045 3 1 5 */ 4556798, /* OBJ_hmacWithSHA224 1 2 840 113549 2 8 */
4400&(nid_objs[414]),/* OBJ_X9_62_prime239v3 1 2 840 10045 3 1 6 */ 4557799, /* OBJ_hmacWithSHA256 1 2 840 113549 2 9 */
4401&(nid_objs[415]),/* OBJ_X9_62_prime256v1 1 2 840 10045 3 1 7 */ 4558800, /* OBJ_hmacWithSHA384 1 2 840 113549 2 10 */
4402&(nid_objs[793]),/* OBJ_ecdsa_with_SHA224 1 2 840 10045 4 3 1 */ 4559801, /* OBJ_hmacWithSHA512 1 2 840 113549 2 11 */
4403&(nid_objs[794]),/* OBJ_ecdsa_with_SHA256 1 2 840 10045 4 3 2 */ 456037, /* OBJ_rc2_cbc 1 2 840 113549 3 2 */
4404&(nid_objs[795]),/* OBJ_ecdsa_with_SHA384 1 2 840 10045 4 3 3 */ 4561 5, /* OBJ_rc4 1 2 840 113549 3 4 */
4405&(nid_objs[796]),/* OBJ_ecdsa_with_SHA512 1 2 840 10045 4 3 4 */ 456244, /* OBJ_des_ede3_cbc 1 2 840 113549 3 7 */
4406&(nid_objs[269]),/* OBJ_id_pkix1_explicit_88 1 3 6 1 5 5 7 0 1 */ 4563120, /* OBJ_rc5_cbc 1 2 840 113549 3 8 */
4407&(nid_objs[270]),/* OBJ_id_pkix1_implicit_88 1 3 6 1 5 5 7 0 2 */ 4564643, /* OBJ_des_cdmf 1 2 840 113549 3 10 */
4408&(nid_objs[271]),/* OBJ_id_pkix1_explicit_93 1 3 6 1 5 5 7 0 3 */ 4565680, /* OBJ_X9_62_id_characteristic_two_basis 1 2 840 10045 1 2 3 */
4409&(nid_objs[272]),/* OBJ_id_pkix1_implicit_93 1 3 6 1 5 5 7 0 4 */ 4566684, /* OBJ_X9_62_c2pnb163v1 1 2 840 10045 3 0 1 */
4410&(nid_objs[273]),/* OBJ_id_mod_crmf 1 3 6 1 5 5 7 0 5 */ 4567685, /* OBJ_X9_62_c2pnb163v2 1 2 840 10045 3 0 2 */
4411&(nid_objs[274]),/* OBJ_id_mod_cmc 1 3 6 1 5 5 7 0 6 */ 4568686, /* OBJ_X9_62_c2pnb163v3 1 2 840 10045 3 0 3 */
4412&(nid_objs[275]),/* OBJ_id_mod_kea_profile_88 1 3 6 1 5 5 7 0 7 */ 4569687, /* OBJ_X9_62_c2pnb176v1 1 2 840 10045 3 0 4 */
4413&(nid_objs[276]),/* OBJ_id_mod_kea_profile_93 1 3 6 1 5 5 7 0 8 */ 4570688, /* OBJ_X9_62_c2tnb191v1 1 2 840 10045 3 0 5 */
4414&(nid_objs[277]),/* OBJ_id_mod_cmp 1 3 6 1 5 5 7 0 9 */ 4571689, /* OBJ_X9_62_c2tnb191v2 1 2 840 10045 3 0 6 */
4415&(nid_objs[278]),/* OBJ_id_mod_qualified_cert_88 1 3 6 1 5 5 7 0 10 */ 4572690, /* OBJ_X9_62_c2tnb191v3 1 2 840 10045 3 0 7 */
4416&(nid_objs[279]),/* OBJ_id_mod_qualified_cert_93 1 3 6 1 5 5 7 0 11 */ 4573691, /* OBJ_X9_62_c2onb191v4 1 2 840 10045 3 0 8 */
4417&(nid_objs[280]),/* OBJ_id_mod_attribute_cert 1 3 6 1 5 5 7 0 12 */ 4574692, /* OBJ_X9_62_c2onb191v5 1 2 840 10045 3 0 9 */
4418&(nid_objs[281]),/* OBJ_id_mod_timestamp_protocol 1 3 6 1 5 5 7 0 13 */ 4575693, /* OBJ_X9_62_c2pnb208w1 1 2 840 10045 3 0 10 */
4419&(nid_objs[282]),/* OBJ_id_mod_ocsp 1 3 6 1 5 5 7 0 14 */ 4576694, /* OBJ_X9_62_c2tnb239v1 1 2 840 10045 3 0 11 */
4420&(nid_objs[283]),/* OBJ_id_mod_dvcs 1 3 6 1 5 5 7 0 15 */ 4577695, /* OBJ_X9_62_c2tnb239v2 1 2 840 10045 3 0 12 */
4421&(nid_objs[284]),/* OBJ_id_mod_cmp2000 1 3 6 1 5 5 7 0 16 */ 4578696, /* OBJ_X9_62_c2tnb239v3 1 2 840 10045 3 0 13 */
4422&(nid_objs[177]),/* OBJ_info_access 1 3 6 1 5 5 7 1 1 */ 4579697, /* OBJ_X9_62_c2onb239v4 1 2 840 10045 3 0 14 */
4423&(nid_objs[285]),/* OBJ_biometricInfo 1 3 6 1 5 5 7 1 2 */ 4580698, /* OBJ_X9_62_c2onb239v5 1 2 840 10045 3 0 15 */
4424&(nid_objs[286]),/* OBJ_qcStatements 1 3 6 1 5 5 7 1 3 */ 4581699, /* OBJ_X9_62_c2pnb272w1 1 2 840 10045 3 0 16 */
4425&(nid_objs[287]),/* OBJ_ac_auditEntity 1 3 6 1 5 5 7 1 4 */ 4582700, /* OBJ_X9_62_c2pnb304w1 1 2 840 10045 3 0 17 */
4426&(nid_objs[288]),/* OBJ_ac_targeting 1 3 6 1 5 5 7 1 5 */ 4583701, /* OBJ_X9_62_c2tnb359v1 1 2 840 10045 3 0 18 */
4427&(nid_objs[289]),/* OBJ_aaControls 1 3 6 1 5 5 7 1 6 */ 4584702, /* OBJ_X9_62_c2pnb368w1 1 2 840 10045 3 0 19 */
4428&(nid_objs[290]),/* OBJ_sbgp_ipAddrBlock 1 3 6 1 5 5 7 1 7 */ 4585703, /* OBJ_X9_62_c2tnb431r1 1 2 840 10045 3 0 20 */
4429&(nid_objs[291]),/* OBJ_sbgp_autonomousSysNum 1 3 6 1 5 5 7 1 8 */ 4586409, /* OBJ_X9_62_prime192v1 1 2 840 10045 3 1 1 */
4430&(nid_objs[292]),/* OBJ_sbgp_routerIdentifier 1 3 6 1 5 5 7 1 9 */ 4587410, /* OBJ_X9_62_prime192v2 1 2 840 10045 3 1 2 */
4431&(nid_objs[397]),/* OBJ_ac_proxying 1 3 6 1 5 5 7 1 10 */ 4588411, /* OBJ_X9_62_prime192v3 1 2 840 10045 3 1 3 */
4432&(nid_objs[398]),/* OBJ_sinfo_access 1 3 6 1 5 5 7 1 11 */ 4589412, /* OBJ_X9_62_prime239v1 1 2 840 10045 3 1 4 */
4433&(nid_objs[663]),/* OBJ_proxyCertInfo 1 3 6 1 5 5 7 1 14 */ 4590413, /* OBJ_X9_62_prime239v2 1 2 840 10045 3 1 5 */
4434&(nid_objs[164]),/* OBJ_id_qt_cps 1 3 6 1 5 5 7 2 1 */ 4591414, /* OBJ_X9_62_prime239v3 1 2 840 10045 3 1 6 */
4435&(nid_objs[165]),/* OBJ_id_qt_unotice 1 3 6 1 5 5 7 2 2 */ 4592415, /* OBJ_X9_62_prime256v1 1 2 840 10045 3 1 7 */
4436&(nid_objs[293]),/* OBJ_textNotice 1 3 6 1 5 5 7 2 3 */ 4593793, /* OBJ_ecdsa_with_SHA224 1 2 840 10045 4 3 1 */
4437&(nid_objs[129]),/* OBJ_server_auth 1 3 6 1 5 5 7 3 1 */ 4594794, /* OBJ_ecdsa_with_SHA256 1 2 840 10045 4 3 2 */
4438&(nid_objs[130]),/* OBJ_client_auth 1 3 6 1 5 5 7 3 2 */ 4595795, /* OBJ_ecdsa_with_SHA384 1 2 840 10045 4 3 3 */
4439&(nid_objs[131]),/* OBJ_code_sign 1 3 6 1 5 5 7 3 3 */ 4596796, /* OBJ_ecdsa_with_SHA512 1 2 840 10045 4 3 4 */
4440&(nid_objs[132]),/* OBJ_email_protect 1 3 6 1 5 5 7 3 4 */ 4597269, /* OBJ_id_pkix1_explicit_88 1 3 6 1 5 5 7 0 1 */
4441&(nid_objs[294]),/* OBJ_ipsecEndSystem 1 3 6 1 5 5 7 3 5 */ 4598270, /* OBJ_id_pkix1_implicit_88 1 3 6 1 5 5 7 0 2 */
4442&(nid_objs[295]),/* OBJ_ipsecTunnel 1 3 6 1 5 5 7 3 6 */ 4599271, /* OBJ_id_pkix1_explicit_93 1 3 6 1 5 5 7 0 3 */
4443&(nid_objs[296]),/* OBJ_ipsecUser 1 3 6 1 5 5 7 3 7 */ 4600272, /* OBJ_id_pkix1_implicit_93 1 3 6 1 5 5 7 0 4 */
4444&(nid_objs[133]),/* OBJ_time_stamp 1 3 6 1 5 5 7 3 8 */ 4601273, /* OBJ_id_mod_crmf 1 3 6 1 5 5 7 0 5 */
4445&(nid_objs[180]),/* OBJ_OCSP_sign 1 3 6 1 5 5 7 3 9 */ 4602274, /* OBJ_id_mod_cmc 1 3 6 1 5 5 7 0 6 */
4446&(nid_objs[297]),/* OBJ_dvcs 1 3 6 1 5 5 7 3 10 */ 4603275, /* OBJ_id_mod_kea_profile_88 1 3 6 1 5 5 7 0 7 */
4447&(nid_objs[298]),/* OBJ_id_it_caProtEncCert 1 3 6 1 5 5 7 4 1 */ 4604276, /* OBJ_id_mod_kea_profile_93 1 3 6 1 5 5 7 0 8 */
4448&(nid_objs[299]),/* OBJ_id_it_signKeyPairTypes 1 3 6 1 5 5 7 4 2 */ 4605277, /* OBJ_id_mod_cmp 1 3 6 1 5 5 7 0 9 */
4449&(nid_objs[300]),/* OBJ_id_it_encKeyPairTypes 1 3 6 1 5 5 7 4 3 */ 4606278, /* OBJ_id_mod_qualified_cert_88 1 3 6 1 5 5 7 0 10 */
4450&(nid_objs[301]),/* OBJ_id_it_preferredSymmAlg 1 3 6 1 5 5 7 4 4 */ 4607279, /* OBJ_id_mod_qualified_cert_93 1 3 6 1 5 5 7 0 11 */
4451&(nid_objs[302]),/* OBJ_id_it_caKeyUpdateInfo 1 3 6 1 5 5 7 4 5 */ 4608280, /* OBJ_id_mod_attribute_cert 1 3 6 1 5 5 7 0 12 */
4452&(nid_objs[303]),/* OBJ_id_it_currentCRL 1 3 6 1 5 5 7 4 6 */ 4609281, /* OBJ_id_mod_timestamp_protocol 1 3 6 1 5 5 7 0 13 */
4453&(nid_objs[304]),/* OBJ_id_it_unsupportedOIDs 1 3 6 1 5 5 7 4 7 */ 4610282, /* OBJ_id_mod_ocsp 1 3 6 1 5 5 7 0 14 */
4454&(nid_objs[305]),/* OBJ_id_it_subscriptionRequest 1 3 6 1 5 5 7 4 8 */ 4611283, /* OBJ_id_mod_dvcs 1 3 6 1 5 5 7 0 15 */
4455&(nid_objs[306]),/* OBJ_id_it_subscriptionResponse 1 3 6 1 5 5 7 4 9 */ 4612284, /* OBJ_id_mod_cmp2000 1 3 6 1 5 5 7 0 16 */
4456&(nid_objs[307]),/* OBJ_id_it_keyPairParamReq 1 3 6 1 5 5 7 4 10 */ 4613177, /* OBJ_info_access 1 3 6 1 5 5 7 1 1 */
4457&(nid_objs[308]),/* OBJ_id_it_keyPairParamRep 1 3 6 1 5 5 7 4 11 */ 4614285, /* OBJ_biometricInfo 1 3 6 1 5 5 7 1 2 */
4458&(nid_objs[309]),/* OBJ_id_it_revPassphrase 1 3 6 1 5 5 7 4 12 */ 4615286, /* OBJ_qcStatements 1 3 6 1 5 5 7 1 3 */
4459&(nid_objs[310]),/* OBJ_id_it_implicitConfirm 1 3 6 1 5 5 7 4 13 */ 4616287, /* OBJ_ac_auditEntity 1 3 6 1 5 5 7 1 4 */
4460&(nid_objs[311]),/* OBJ_id_it_confirmWaitTime 1 3 6 1 5 5 7 4 14 */ 4617288, /* OBJ_ac_targeting 1 3 6 1 5 5 7 1 5 */
4461&(nid_objs[312]),/* OBJ_id_it_origPKIMessage 1 3 6 1 5 5 7 4 15 */ 4618289, /* OBJ_aaControls 1 3 6 1 5 5 7 1 6 */
4462&(nid_objs[784]),/* OBJ_id_it_suppLangTags 1 3 6 1 5 5 7 4 16 */ 4619290, /* OBJ_sbgp_ipAddrBlock 1 3 6 1 5 5 7 1 7 */
4463&(nid_objs[313]),/* OBJ_id_regCtrl 1 3 6 1 5 5 7 5 1 */ 4620291, /* OBJ_sbgp_autonomousSysNum 1 3 6 1 5 5 7 1 8 */
4464&(nid_objs[314]),/* OBJ_id_regInfo 1 3 6 1 5 5 7 5 2 */ 4621292, /* OBJ_sbgp_routerIdentifier 1 3 6 1 5 5 7 1 9 */
4465&(nid_objs[323]),/* OBJ_id_alg_des40 1 3 6 1 5 5 7 6 1 */ 4622397, /* OBJ_ac_proxying 1 3 6 1 5 5 7 1 10 */
4466&(nid_objs[324]),/* OBJ_id_alg_noSignature 1 3 6 1 5 5 7 6 2 */ 4623398, /* OBJ_sinfo_access 1 3 6 1 5 5 7 1 11 */
4467&(nid_objs[325]),/* OBJ_id_alg_dh_sig_hmac_sha1 1 3 6 1 5 5 7 6 3 */ 4624663, /* OBJ_proxyCertInfo 1 3 6 1 5 5 7 1 14 */
4468&(nid_objs[326]),/* OBJ_id_alg_dh_pop 1 3 6 1 5 5 7 6 4 */ 4625164, /* OBJ_id_qt_cps 1 3 6 1 5 5 7 2 1 */
4469&(nid_objs[327]),/* OBJ_id_cmc_statusInfo 1 3 6 1 5 5 7 7 1 */ 4626165, /* OBJ_id_qt_unotice 1 3 6 1 5 5 7 2 2 */
4470&(nid_objs[328]),/* OBJ_id_cmc_identification 1 3 6 1 5 5 7 7 2 */ 4627293, /* OBJ_textNotice 1 3 6 1 5 5 7 2 3 */
4471&(nid_objs[329]),/* OBJ_id_cmc_identityProof 1 3 6 1 5 5 7 7 3 */ 4628129, /* OBJ_server_auth 1 3 6 1 5 5 7 3 1 */
4472&(nid_objs[330]),/* OBJ_id_cmc_dataReturn 1 3 6 1 5 5 7 7 4 */ 4629130, /* OBJ_client_auth 1 3 6 1 5 5 7 3 2 */
4473&(nid_objs[331]),/* OBJ_id_cmc_transactionId 1 3 6 1 5 5 7 7 5 */ 4630131, /* OBJ_code_sign 1 3 6 1 5 5 7 3 3 */
4474&(nid_objs[332]),/* OBJ_id_cmc_senderNonce 1 3 6 1 5 5 7 7 6 */ 4631132, /* OBJ_email_protect 1 3 6 1 5 5 7 3 4 */
4475&(nid_objs[333]),/* OBJ_id_cmc_recipientNonce 1 3 6 1 5 5 7 7 7 */ 4632294, /* OBJ_ipsecEndSystem 1 3 6 1 5 5 7 3 5 */
4476&(nid_objs[334]),/* OBJ_id_cmc_addExtensions 1 3 6 1 5 5 7 7 8 */ 4633295, /* OBJ_ipsecTunnel 1 3 6 1 5 5 7 3 6 */
4477&(nid_objs[335]),/* OBJ_id_cmc_encryptedPOP 1 3 6 1 5 5 7 7 9 */ 4634296, /* OBJ_ipsecUser 1 3 6 1 5 5 7 3 7 */
4478&(nid_objs[336]),/* OBJ_id_cmc_decryptedPOP 1 3 6 1 5 5 7 7 10 */ 4635133, /* OBJ_time_stamp 1 3 6 1 5 5 7 3 8 */
4479&(nid_objs[337]),/* OBJ_id_cmc_lraPOPWitness 1 3 6 1 5 5 7 7 11 */ 4636180, /* OBJ_OCSP_sign 1 3 6 1 5 5 7 3 9 */
4480&(nid_objs[338]),/* OBJ_id_cmc_getCert 1 3 6 1 5 5 7 7 15 */ 4637297, /* OBJ_dvcs 1 3 6 1 5 5 7 3 10 */
4481&(nid_objs[339]),/* OBJ_id_cmc_getCRL 1 3 6 1 5 5 7 7 16 */ 4638298, /* OBJ_id_it_caProtEncCert 1 3 6 1 5 5 7 4 1 */
4482&(nid_objs[340]),/* OBJ_id_cmc_revokeRequest 1 3 6 1 5 5 7 7 17 */ 4639299, /* OBJ_id_it_signKeyPairTypes 1 3 6 1 5 5 7 4 2 */
4483&(nid_objs[341]),/* OBJ_id_cmc_regInfo 1 3 6 1 5 5 7 7 18 */ 4640300, /* OBJ_id_it_encKeyPairTypes 1 3 6 1 5 5 7 4 3 */
4484&(nid_objs[342]),/* OBJ_id_cmc_responseInfo 1 3 6 1 5 5 7 7 19 */ 4641301, /* OBJ_id_it_preferredSymmAlg 1 3 6 1 5 5 7 4 4 */
4485&(nid_objs[343]),/* OBJ_id_cmc_queryPending 1 3 6 1 5 5 7 7 21 */ 4642302, /* OBJ_id_it_caKeyUpdateInfo 1 3 6 1 5 5 7 4 5 */
4486&(nid_objs[344]),/* OBJ_id_cmc_popLinkRandom 1 3 6 1 5 5 7 7 22 */ 4643303, /* OBJ_id_it_currentCRL 1 3 6 1 5 5 7 4 6 */
4487&(nid_objs[345]),/* OBJ_id_cmc_popLinkWitness 1 3 6 1 5 5 7 7 23 */ 4644304, /* OBJ_id_it_unsupportedOIDs 1 3 6 1 5 5 7 4 7 */
4488&(nid_objs[346]),/* OBJ_id_cmc_confirmCertAcceptance 1 3 6 1 5 5 7 7 24 */ 4645305, /* OBJ_id_it_subscriptionRequest 1 3 6 1 5 5 7 4 8 */
4489&(nid_objs[347]),/* OBJ_id_on_personalData 1 3 6 1 5 5 7 8 1 */ 4646306, /* OBJ_id_it_subscriptionResponse 1 3 6 1 5 5 7 4 9 */
4490&(nid_objs[858]),/* OBJ_id_on_permanentIdentifier 1 3 6 1 5 5 7 8 3 */ 4647307, /* OBJ_id_it_keyPairParamReq 1 3 6 1 5 5 7 4 10 */
4491&(nid_objs[348]),/* OBJ_id_pda_dateOfBirth 1 3 6 1 5 5 7 9 1 */ 4648308, /* OBJ_id_it_keyPairParamRep 1 3 6 1 5 5 7 4 11 */
4492&(nid_objs[349]),/* OBJ_id_pda_placeOfBirth 1 3 6 1 5 5 7 9 2 */ 4649309, /* OBJ_id_it_revPassphrase 1 3 6 1 5 5 7 4 12 */
4493&(nid_objs[351]),/* OBJ_id_pda_gender 1 3 6 1 5 5 7 9 3 */ 4650310, /* OBJ_id_it_implicitConfirm 1 3 6 1 5 5 7 4 13 */
4494&(nid_objs[352]),/* OBJ_id_pda_countryOfCitizenship 1 3 6 1 5 5 7 9 4 */ 4651311, /* OBJ_id_it_confirmWaitTime 1 3 6 1 5 5 7 4 14 */
4495&(nid_objs[353]),/* OBJ_id_pda_countryOfResidence 1 3 6 1 5 5 7 9 5 */ 4652312, /* OBJ_id_it_origPKIMessage 1 3 6 1 5 5 7 4 15 */
4496&(nid_objs[354]),/* OBJ_id_aca_authenticationInfo 1 3 6 1 5 5 7 10 1 */ 4653784, /* OBJ_id_it_suppLangTags 1 3 6 1 5 5 7 4 16 */
4497&(nid_objs[355]),/* OBJ_id_aca_accessIdentity 1 3 6 1 5 5 7 10 2 */ 4654313, /* OBJ_id_regCtrl 1 3 6 1 5 5 7 5 1 */
4498&(nid_objs[356]),/* OBJ_id_aca_chargingIdentity 1 3 6 1 5 5 7 10 3 */ 4655314, /* OBJ_id_regInfo 1 3 6 1 5 5 7 5 2 */
4499&(nid_objs[357]),/* OBJ_id_aca_group 1 3 6 1 5 5 7 10 4 */ 4656323, /* OBJ_id_alg_des40 1 3 6 1 5 5 7 6 1 */
4500&(nid_objs[358]),/* OBJ_id_aca_role 1 3 6 1 5 5 7 10 5 */ 4657324, /* OBJ_id_alg_noSignature 1 3 6 1 5 5 7 6 2 */
4501&(nid_objs[399]),/* OBJ_id_aca_encAttrs 1 3 6 1 5 5 7 10 6 */ 4658325, /* OBJ_id_alg_dh_sig_hmac_sha1 1 3 6 1 5 5 7 6 3 */
4502&(nid_objs[359]),/* OBJ_id_qcs_pkixQCSyntax_v1 1 3 6 1 5 5 7 11 1 */ 4659326, /* OBJ_id_alg_dh_pop 1 3 6 1 5 5 7 6 4 */
4503&(nid_objs[360]),/* OBJ_id_cct_crs 1 3 6 1 5 5 7 12 1 */ 4660327, /* OBJ_id_cmc_statusInfo 1 3 6 1 5 5 7 7 1 */
4504&(nid_objs[361]),/* OBJ_id_cct_PKIData 1 3 6 1 5 5 7 12 2 */ 4661328, /* OBJ_id_cmc_identification 1 3 6 1 5 5 7 7 2 */
4505&(nid_objs[362]),/* OBJ_id_cct_PKIResponse 1 3 6 1 5 5 7 12 3 */ 4662329, /* OBJ_id_cmc_identityProof 1 3 6 1 5 5 7 7 3 */
4506&(nid_objs[664]),/* OBJ_id_ppl_anyLanguage 1 3 6 1 5 5 7 21 0 */ 4663330, /* OBJ_id_cmc_dataReturn 1 3 6 1 5 5 7 7 4 */
4507&(nid_objs[665]),/* OBJ_id_ppl_inheritAll 1 3 6 1 5 5 7 21 1 */ 4664331, /* OBJ_id_cmc_transactionId 1 3 6 1 5 5 7 7 5 */
4508&(nid_objs[667]),/* OBJ_Independent 1 3 6 1 5 5 7 21 2 */ 4665332, /* OBJ_id_cmc_senderNonce 1 3 6 1 5 5 7 7 6 */
4509&(nid_objs[178]),/* OBJ_ad_OCSP 1 3 6 1 5 5 7 48 1 */ 4666333, /* OBJ_id_cmc_recipientNonce 1 3 6 1 5 5 7 7 7 */
4510&(nid_objs[179]),/* OBJ_ad_ca_issuers 1 3 6 1 5 5 7 48 2 */ 4667334, /* OBJ_id_cmc_addExtensions 1 3 6 1 5 5 7 7 8 */
4511&(nid_objs[363]),/* OBJ_ad_timeStamping 1 3 6 1 5 5 7 48 3 */ 4668335, /* OBJ_id_cmc_encryptedPOP 1 3 6 1 5 5 7 7 9 */
4512&(nid_objs[364]),/* OBJ_ad_dvcs 1 3 6 1 5 5 7 48 4 */ 4669336, /* OBJ_id_cmc_decryptedPOP 1 3 6 1 5 5 7 7 10 */
4513&(nid_objs[785]),/* OBJ_caRepository 1 3 6 1 5 5 7 48 5 */ 4670337, /* OBJ_id_cmc_lraPOPWitness 1 3 6 1 5 5 7 7 11 */
4514&(nid_objs[780]),/* OBJ_hmac_md5 1 3 6 1 5 5 8 1 1 */ 4671338, /* OBJ_id_cmc_getCert 1 3 6 1 5 5 7 7 15 */
4515&(nid_objs[781]),/* OBJ_hmac_sha1 1 3 6 1 5 5 8 1 2 */ 4672339, /* OBJ_id_cmc_getCRL 1 3 6 1 5 5 7 7 16 */
4516&(nid_objs[58]),/* OBJ_netscape_cert_extension 2 16 840 1 113730 1 */ 4673340, /* OBJ_id_cmc_revokeRequest 1 3 6 1 5 5 7 7 17 */
4517&(nid_objs[59]),/* OBJ_netscape_data_type 2 16 840 1 113730 2 */ 4674341, /* OBJ_id_cmc_regInfo 1 3 6 1 5 5 7 7 18 */
4518&(nid_objs[438]),/* OBJ_pilotAttributeType 0 9 2342 19200300 100 1 */ 4675342, /* OBJ_id_cmc_responseInfo 1 3 6 1 5 5 7 7 19 */
4519&(nid_objs[439]),/* OBJ_pilotAttributeSyntax 0 9 2342 19200300 100 3 */ 4676343, /* OBJ_id_cmc_queryPending 1 3 6 1 5 5 7 7 21 */
4520&(nid_objs[440]),/* OBJ_pilotObjectClass 0 9 2342 19200300 100 4 */ 4677344, /* OBJ_id_cmc_popLinkRandom 1 3 6 1 5 5 7 7 22 */
4521&(nid_objs[441]),/* OBJ_pilotGroups 0 9 2342 19200300 100 10 */ 4678345, /* OBJ_id_cmc_popLinkWitness 1 3 6 1 5 5 7 7 23 */
4522&(nid_objs[108]),/* OBJ_cast5_cbc 1 2 840 113533 7 66 10 */ 4679346, /* OBJ_id_cmc_confirmCertAcceptance 1 3 6 1 5 5 7 7 24 */
4523&(nid_objs[112]),/* OBJ_pbeWithMD5AndCast5_CBC 1 2 840 113533 7 66 12 */ 4680347, /* OBJ_id_on_personalData 1 3 6 1 5 5 7 8 1 */
4524&(nid_objs[782]),/* OBJ_id_PasswordBasedMAC 1 2 840 113533 7 66 13 */ 4681858, /* OBJ_id_on_permanentIdentifier 1 3 6 1 5 5 7 8 3 */
4525&(nid_objs[783]),/* OBJ_id_DHBasedMac 1 2 840 113533 7 66 30 */ 4682348, /* OBJ_id_pda_dateOfBirth 1 3 6 1 5 5 7 9 1 */
4526&(nid_objs[ 6]),/* OBJ_rsaEncryption 1 2 840 113549 1 1 1 */ 4683349, /* OBJ_id_pda_placeOfBirth 1 3 6 1 5 5 7 9 2 */
4527&(nid_objs[ 7]),/* OBJ_md2WithRSAEncryption 1 2 840 113549 1 1 2 */ 4684351, /* OBJ_id_pda_gender 1 3 6 1 5 5 7 9 3 */
4528&(nid_objs[396]),/* OBJ_md4WithRSAEncryption 1 2 840 113549 1 1 3 */ 4685352, /* OBJ_id_pda_countryOfCitizenship 1 3 6 1 5 5 7 9 4 */
4529&(nid_objs[ 8]),/* OBJ_md5WithRSAEncryption 1 2 840 113549 1 1 4 */ 4686353, /* OBJ_id_pda_countryOfResidence 1 3 6 1 5 5 7 9 5 */
4530&(nid_objs[65]),/* OBJ_sha1WithRSAEncryption 1 2 840 113549 1 1 5 */ 4687354, /* OBJ_id_aca_authenticationInfo 1 3 6 1 5 5 7 10 1 */
4531&(nid_objs[644]),/* OBJ_rsaOAEPEncryptionSET 1 2 840 113549 1 1 6 */ 4688355, /* OBJ_id_aca_accessIdentity 1 3 6 1 5 5 7 10 2 */
4532&(nid_objs[668]),/* OBJ_sha256WithRSAEncryption 1 2 840 113549 1 1 11 */ 4689356, /* OBJ_id_aca_chargingIdentity 1 3 6 1 5 5 7 10 3 */
4533&(nid_objs[669]),/* OBJ_sha384WithRSAEncryption 1 2 840 113549 1 1 12 */ 4690357, /* OBJ_id_aca_group 1 3 6 1 5 5 7 10 4 */
4534&(nid_objs[670]),/* OBJ_sha512WithRSAEncryption 1 2 840 113549 1 1 13 */ 4691358, /* OBJ_id_aca_role 1 3 6 1 5 5 7 10 5 */
4535&(nid_objs[671]),/* OBJ_sha224WithRSAEncryption 1 2 840 113549 1 1 14 */ 4692399, /* OBJ_id_aca_encAttrs 1 3 6 1 5 5 7 10 6 */
4536&(nid_objs[28]),/* OBJ_dhKeyAgreement 1 2 840 113549 1 3 1 */ 4693359, /* OBJ_id_qcs_pkixQCSyntax_v1 1 3 6 1 5 5 7 11 1 */
4537&(nid_objs[ 9]),/* OBJ_pbeWithMD2AndDES_CBC 1 2 840 113549 1 5 1 */ 4694360, /* OBJ_id_cct_crs 1 3 6 1 5 5 7 12 1 */
4538&(nid_objs[10]),/* OBJ_pbeWithMD5AndDES_CBC 1 2 840 113549 1 5 3 */ 4695361, /* OBJ_id_cct_PKIData 1 3 6 1 5 5 7 12 2 */
4539&(nid_objs[168]),/* OBJ_pbeWithMD2AndRC2_CBC 1 2 840 113549 1 5 4 */ 4696362, /* OBJ_id_cct_PKIResponse 1 3 6 1 5 5 7 12 3 */
4540&(nid_objs[169]),/* OBJ_pbeWithMD5AndRC2_CBC 1 2 840 113549 1 5 6 */ 4697664, /* OBJ_id_ppl_anyLanguage 1 3 6 1 5 5 7 21 0 */
4541&(nid_objs[170]),/* OBJ_pbeWithSHA1AndDES_CBC 1 2 840 113549 1 5 10 */ 4698665, /* OBJ_id_ppl_inheritAll 1 3 6 1 5 5 7 21 1 */
4542&(nid_objs[68]),/* OBJ_pbeWithSHA1AndRC2_CBC 1 2 840 113549 1 5 11 */ 4699667, /* OBJ_Independent 1 3 6 1 5 5 7 21 2 */
4543&(nid_objs[69]),/* OBJ_id_pbkdf2 1 2 840 113549 1 5 12 */ 4700178, /* OBJ_ad_OCSP 1 3 6 1 5 5 7 48 1 */
4544&(nid_objs[161]),/* OBJ_pbes2 1 2 840 113549 1 5 13 */ 4701179, /* OBJ_ad_ca_issuers 1 3 6 1 5 5 7 48 2 */
4545&(nid_objs[162]),/* OBJ_pbmac1 1 2 840 113549 1 5 14 */ 4702363, /* OBJ_ad_timeStamping 1 3 6 1 5 5 7 48 3 */
4546&(nid_objs[21]),/* OBJ_pkcs7_data 1 2 840 113549 1 7 1 */ 4703364, /* OBJ_ad_dvcs 1 3 6 1 5 5 7 48 4 */
4547&(nid_objs[22]),/* OBJ_pkcs7_signed 1 2 840 113549 1 7 2 */ 4704785, /* OBJ_caRepository 1 3 6 1 5 5 7 48 5 */
4548&(nid_objs[23]),/* OBJ_pkcs7_enveloped 1 2 840 113549 1 7 3 */ 4705780, /* OBJ_hmac_md5 1 3 6 1 5 5 8 1 1 */
4549&(nid_objs[24]),/* OBJ_pkcs7_signedAndEnveloped 1 2 840 113549 1 7 4 */ 4706781, /* OBJ_hmac_sha1 1 3 6 1 5 5 8 1 2 */
4550&(nid_objs[25]),/* OBJ_pkcs7_digest 1 2 840 113549 1 7 5 */ 470758, /* OBJ_netscape_cert_extension 2 16 840 1 113730 1 */
4551&(nid_objs[26]),/* OBJ_pkcs7_encrypted 1 2 840 113549 1 7 6 */ 470859, /* OBJ_netscape_data_type 2 16 840 1 113730 2 */
4552&(nid_objs[48]),/* OBJ_pkcs9_emailAddress 1 2 840 113549 1 9 1 */ 4709438, /* OBJ_pilotAttributeType 0 9 2342 19200300 100 1 */
4553&(nid_objs[49]),/* OBJ_pkcs9_unstructuredName 1 2 840 113549 1 9 2 */ 4710439, /* OBJ_pilotAttributeSyntax 0 9 2342 19200300 100 3 */
4554&(nid_objs[50]),/* OBJ_pkcs9_contentType 1 2 840 113549 1 9 3 */ 4711440, /* OBJ_pilotObjectClass 0 9 2342 19200300 100 4 */
4555&(nid_objs[51]),/* OBJ_pkcs9_messageDigest 1 2 840 113549 1 9 4 */ 4712441, /* OBJ_pilotGroups 0 9 2342 19200300 100 10 */
4556&(nid_objs[52]),/* OBJ_pkcs9_signingTime 1 2 840 113549 1 9 5 */ 4713108, /* OBJ_cast5_cbc 1 2 840 113533 7 66 10 */
4557&(nid_objs[53]),/* OBJ_pkcs9_countersignature 1 2 840 113549 1 9 6 */ 4714112, /* OBJ_pbeWithMD5AndCast5_CBC 1 2 840 113533 7 66 12 */
4558&(nid_objs[54]),/* OBJ_pkcs9_challengePassword 1 2 840 113549 1 9 7 */ 4715782, /* OBJ_id_PasswordBasedMAC 1 2 840 113533 7 66 13 */
4559&(nid_objs[55]),/* OBJ_pkcs9_unstructuredAddress 1 2 840 113549 1 9 8 */ 4716783, /* OBJ_id_DHBasedMac 1 2 840 113533 7 66 30 */
4560&(nid_objs[56]),/* OBJ_pkcs9_extCertAttributes 1 2 840 113549 1 9 9 */ 4717 6, /* OBJ_rsaEncryption 1 2 840 113549 1 1 1 */
4561&(nid_objs[172]),/* OBJ_ext_req 1 2 840 113549 1 9 14 */ 4718 7, /* OBJ_md2WithRSAEncryption 1 2 840 113549 1 1 2 */
4562&(nid_objs[167]),/* OBJ_SMIMECapabilities 1 2 840 113549 1 9 15 */ 4719396, /* OBJ_md4WithRSAEncryption 1 2 840 113549 1 1 3 */
4563&(nid_objs[188]),/* OBJ_SMIME 1 2 840 113549 1 9 16 */ 4720 8, /* OBJ_md5WithRSAEncryption 1 2 840 113549 1 1 4 */
4564&(nid_objs[156]),/* OBJ_friendlyName 1 2 840 113549 1 9 20 */ 472165, /* OBJ_sha1WithRSAEncryption 1 2 840 113549 1 1 5 */
4565&(nid_objs[157]),/* OBJ_localKeyID 1 2 840 113549 1 9 21 */ 4722644, /* OBJ_rsaOAEPEncryptionSET 1 2 840 113549 1 1 6 */
4566&(nid_objs[681]),/* OBJ_X9_62_onBasis 1 2 840 10045 1 2 3 1 */ 4723668, /* OBJ_sha256WithRSAEncryption 1 2 840 113549 1 1 11 */
4567&(nid_objs[682]),/* OBJ_X9_62_tpBasis 1 2 840 10045 1 2 3 2 */ 4724669, /* OBJ_sha384WithRSAEncryption 1 2 840 113549 1 1 12 */
4568&(nid_objs[683]),/* OBJ_X9_62_ppBasis 1 2 840 10045 1 2 3 3 */ 4725670, /* OBJ_sha512WithRSAEncryption 1 2 840 113549 1 1 13 */
4569&(nid_objs[417]),/* OBJ_ms_csp_name 1 3 6 1 4 1 311 17 1 */ 4726671, /* OBJ_sha224WithRSAEncryption 1 2 840 113549 1 1 14 */
4570&(nid_objs[856]),/* OBJ_LocalKeySet 1 3 6 1 4 1 311 17 2 */ 472728, /* OBJ_dhKeyAgreement 1 2 840 113549 1 3 1 */
4571&(nid_objs[390]),/* OBJ_dcObject 1 3 6 1 4 1 1466 344 */ 4728 9, /* OBJ_pbeWithMD2AndDES_CBC 1 2 840 113549 1 5 1 */
4572&(nid_objs[91]),/* OBJ_bf_cbc 1 3 6 1 4 1 3029 1 2 */ 472910, /* OBJ_pbeWithMD5AndDES_CBC 1 2 840 113549 1 5 3 */
4573&(nid_objs[315]),/* OBJ_id_regCtrl_regToken 1 3 6 1 5 5 7 5 1 1 */ 4730168, /* OBJ_pbeWithMD2AndRC2_CBC 1 2 840 113549 1 5 4 */
4574&(nid_objs[316]),/* OBJ_id_regCtrl_authenticator 1 3 6 1 5 5 7 5 1 2 */ 4731169, /* OBJ_pbeWithMD5AndRC2_CBC 1 2 840 113549 1 5 6 */
4575&(nid_objs[317]),/* OBJ_id_regCtrl_pkiPublicationInfo 1 3 6 1 5 5 7 5 1 3 */ 4732170, /* OBJ_pbeWithSHA1AndDES_CBC 1 2 840 113549 1 5 10 */
4576&(nid_objs[318]),/* OBJ_id_regCtrl_pkiArchiveOptions 1 3 6 1 5 5 7 5 1 4 */ 473368, /* OBJ_pbeWithSHA1AndRC2_CBC 1 2 840 113549 1 5 11 */
4577&(nid_objs[319]),/* OBJ_id_regCtrl_oldCertID 1 3 6 1 5 5 7 5 1 5 */ 473469, /* OBJ_id_pbkdf2 1 2 840 113549 1 5 12 */
4578&(nid_objs[320]),/* OBJ_id_regCtrl_protocolEncrKey 1 3 6 1 5 5 7 5 1 6 */ 4735161, /* OBJ_pbes2 1 2 840 113549 1 5 13 */
4579&(nid_objs[321]),/* OBJ_id_regInfo_utf8Pairs 1 3 6 1 5 5 7 5 2 1 */ 4736162, /* OBJ_pbmac1 1 2 840 113549 1 5 14 */
4580&(nid_objs[322]),/* OBJ_id_regInfo_certReq 1 3 6 1 5 5 7 5 2 2 */ 473721, /* OBJ_pkcs7_data 1 2 840 113549 1 7 1 */
4581&(nid_objs[365]),/* OBJ_id_pkix_OCSP_basic 1 3 6 1 5 5 7 48 1 1 */ 473822, /* OBJ_pkcs7_signed 1 2 840 113549 1 7 2 */
4582&(nid_objs[366]),/* OBJ_id_pkix_OCSP_Nonce 1 3 6 1 5 5 7 48 1 2 */ 473923, /* OBJ_pkcs7_enveloped 1 2 840 113549 1 7 3 */
4583&(nid_objs[367]),/* OBJ_id_pkix_OCSP_CrlID 1 3 6 1 5 5 7 48 1 3 */ 474024, /* OBJ_pkcs7_signedAndEnveloped 1 2 840 113549 1 7 4 */
4584&(nid_objs[368]),/* OBJ_id_pkix_OCSP_acceptableResponses 1 3 6 1 5 5 7 48 1 4 */ 474125, /* OBJ_pkcs7_digest 1 2 840 113549 1 7 5 */
4585&(nid_objs[369]),/* OBJ_id_pkix_OCSP_noCheck 1 3 6 1 5 5 7 48 1 5 */ 474226, /* OBJ_pkcs7_encrypted 1 2 840 113549 1 7 6 */
4586&(nid_objs[370]),/* OBJ_id_pkix_OCSP_archiveCutoff 1 3 6 1 5 5 7 48 1 6 */ 474348, /* OBJ_pkcs9_emailAddress 1 2 840 113549 1 9 1 */
4587&(nid_objs[371]),/* OBJ_id_pkix_OCSP_serviceLocator 1 3 6 1 5 5 7 48 1 7 */ 474449, /* OBJ_pkcs9_unstructuredName 1 2 840 113549 1 9 2 */
4588&(nid_objs[372]),/* OBJ_id_pkix_OCSP_extendedStatus 1 3 6 1 5 5 7 48 1 8 */ 474550, /* OBJ_pkcs9_contentType 1 2 840 113549 1 9 3 */
4589&(nid_objs[373]),/* OBJ_id_pkix_OCSP_valid 1 3 6 1 5 5 7 48 1 9 */ 474651, /* OBJ_pkcs9_messageDigest 1 2 840 113549 1 9 4 */
4590&(nid_objs[374]),/* OBJ_id_pkix_OCSP_path 1 3 6 1 5 5 7 48 1 10 */ 474752, /* OBJ_pkcs9_signingTime 1 2 840 113549 1 9 5 */
4591&(nid_objs[375]),/* OBJ_id_pkix_OCSP_trustRoot 1 3 6 1 5 5 7 48 1 11 */ 474853, /* OBJ_pkcs9_countersignature 1 2 840 113549 1 9 6 */
4592&(nid_objs[418]),/* OBJ_aes_128_ecb 2 16 840 1 101 3 4 1 1 */ 474954, /* OBJ_pkcs9_challengePassword 1 2 840 113549 1 9 7 */
4593&(nid_objs[419]),/* OBJ_aes_128_cbc 2 16 840 1 101 3 4 1 2 */ 475055, /* OBJ_pkcs9_unstructuredAddress 1 2 840 113549 1 9 8 */
4594&(nid_objs[420]),/* OBJ_aes_128_ofb128 2 16 840 1 101 3 4 1 3 */ 475156, /* OBJ_pkcs9_extCertAttributes 1 2 840 113549 1 9 9 */
4595&(nid_objs[421]),/* OBJ_aes_128_cfb128 2 16 840 1 101 3 4 1 4 */ 4752172, /* OBJ_ext_req 1 2 840 113549 1 9 14 */
4596&(nid_objs[788]),/* OBJ_id_aes128_wrap 2 16 840 1 101 3 4 1 5 */ 4753167, /* OBJ_SMIMECapabilities 1 2 840 113549 1 9 15 */
4597&(nid_objs[422]),/* OBJ_aes_192_ecb 2 16 840 1 101 3 4 1 21 */ 4754188, /* OBJ_SMIME 1 2 840 113549 1 9 16 */
4598&(nid_objs[423]),/* OBJ_aes_192_cbc 2 16 840 1 101 3 4 1 22 */ 4755156, /* OBJ_friendlyName 1 2 840 113549 1 9 20 */
4599&(nid_objs[424]),/* OBJ_aes_192_ofb128 2 16 840 1 101 3 4 1 23 */ 4756157, /* OBJ_localKeyID 1 2 840 113549 1 9 21 */
4600&(nid_objs[425]),/* OBJ_aes_192_cfb128 2 16 840 1 101 3 4 1 24 */ 4757681, /* OBJ_X9_62_onBasis 1 2 840 10045 1 2 3 1 */
4601&(nid_objs[789]),/* OBJ_id_aes192_wrap 2 16 840 1 101 3 4 1 25 */ 4758682, /* OBJ_X9_62_tpBasis 1 2 840 10045 1 2 3 2 */
4602&(nid_objs[426]),/* OBJ_aes_256_ecb 2 16 840 1 101 3 4 1 41 */ 4759683, /* OBJ_X9_62_ppBasis 1 2 840 10045 1 2 3 3 */
4603&(nid_objs[427]),/* OBJ_aes_256_cbc 2 16 840 1 101 3 4 1 42 */ 4760417, /* OBJ_ms_csp_name 1 3 6 1 4 1 311 17 1 */
4604&(nid_objs[428]),/* OBJ_aes_256_ofb128 2 16 840 1 101 3 4 1 43 */ 4761856, /* OBJ_LocalKeySet 1 3 6 1 4 1 311 17 2 */
4605&(nid_objs[429]),/* OBJ_aes_256_cfb128 2 16 840 1 101 3 4 1 44 */ 4762390, /* OBJ_dcObject 1 3 6 1 4 1 1466 344 */
4606&(nid_objs[790]),/* OBJ_id_aes256_wrap 2 16 840 1 101 3 4 1 45 */ 476391, /* OBJ_bf_cbc 1 3 6 1 4 1 3029 1 2 */
4607&(nid_objs[672]),/* OBJ_sha256 2 16 840 1 101 3 4 2 1 */ 4764315, /* OBJ_id_regCtrl_regToken 1 3 6 1 5 5 7 5 1 1 */
4608&(nid_objs[673]),/* OBJ_sha384 2 16 840 1 101 3 4 2 2 */ 4765316, /* OBJ_id_regCtrl_authenticator 1 3 6 1 5 5 7 5 1 2 */
4609&(nid_objs[674]),/* OBJ_sha512 2 16 840 1 101 3 4 2 3 */ 4766317, /* OBJ_id_regCtrl_pkiPublicationInfo 1 3 6 1 5 5 7 5 1 3 */
4610&(nid_objs[675]),/* OBJ_sha224 2 16 840 1 101 3 4 2 4 */ 4767318, /* OBJ_id_regCtrl_pkiArchiveOptions 1 3 6 1 5 5 7 5 1 4 */
4611&(nid_objs[802]),/* OBJ_dsa_with_SHA224 2 16 840 1 101 3 4 3 1 */ 4768319, /* OBJ_id_regCtrl_oldCertID 1 3 6 1 5 5 7 5 1 5 */
4612&(nid_objs[803]),/* OBJ_dsa_with_SHA256 2 16 840 1 101 3 4 3 2 */ 4769320, /* OBJ_id_regCtrl_protocolEncrKey 1 3 6 1 5 5 7 5 1 6 */
4613&(nid_objs[71]),/* OBJ_netscape_cert_type 2 16 840 1 113730 1 1 */ 4770321, /* OBJ_id_regInfo_utf8Pairs 1 3 6 1 5 5 7 5 2 1 */
4614&(nid_objs[72]),/* OBJ_netscape_base_url 2 16 840 1 113730 1 2 */ 4771322, /* OBJ_id_regInfo_certReq 1 3 6 1 5 5 7 5 2 2 */
4615&(nid_objs[73]),/* OBJ_netscape_revocation_url 2 16 840 1 113730 1 3 */ 4772365, /* OBJ_id_pkix_OCSP_basic 1 3 6 1 5 5 7 48 1 1 */
4616&(nid_objs[74]),/* OBJ_netscape_ca_revocation_url 2 16 840 1 113730 1 4 */ 4773366, /* OBJ_id_pkix_OCSP_Nonce 1 3 6 1 5 5 7 48 1 2 */
4617&(nid_objs[75]),/* OBJ_netscape_renewal_url 2 16 840 1 113730 1 7 */ 4774367, /* OBJ_id_pkix_OCSP_CrlID 1 3 6 1 5 5 7 48 1 3 */
4618&(nid_objs[76]),/* OBJ_netscape_ca_policy_url 2 16 840 1 113730 1 8 */ 4775368, /* OBJ_id_pkix_OCSP_acceptableResponses 1 3 6 1 5 5 7 48 1 4 */
4619&(nid_objs[77]),/* OBJ_netscape_ssl_server_name 2 16 840 1 113730 1 12 */ 4776369, /* OBJ_id_pkix_OCSP_noCheck 1 3 6 1 5 5 7 48 1 5 */
4620&(nid_objs[78]),/* OBJ_netscape_comment 2 16 840 1 113730 1 13 */ 4777370, /* OBJ_id_pkix_OCSP_archiveCutoff 1 3 6 1 5 5 7 48 1 6 */
4621&(nid_objs[79]),/* OBJ_netscape_cert_sequence 2 16 840 1 113730 2 5 */ 4778371, /* OBJ_id_pkix_OCSP_serviceLocator 1 3 6 1 5 5 7 48 1 7 */
4622&(nid_objs[139]),/* OBJ_ns_sgc 2 16 840 1 113730 4 1 */ 4779372, /* OBJ_id_pkix_OCSP_extendedStatus 1 3 6 1 5 5 7 48 1 8 */
4623&(nid_objs[458]),/* OBJ_userId 0 9 2342 19200300 100 1 1 */ 4780373, /* OBJ_id_pkix_OCSP_valid 1 3 6 1 5 5 7 48 1 9 */
4624&(nid_objs[459]),/* OBJ_textEncodedORAddress 0 9 2342 19200300 100 1 2 */ 4781374, /* OBJ_id_pkix_OCSP_path 1 3 6 1 5 5 7 48 1 10 */
4625&(nid_objs[460]),/* OBJ_rfc822Mailbox 0 9 2342 19200300 100 1 3 */ 4782375, /* OBJ_id_pkix_OCSP_trustRoot 1 3 6 1 5 5 7 48 1 11 */
4626&(nid_objs[461]),/* OBJ_info 0 9 2342 19200300 100 1 4 */ 4783418, /* OBJ_aes_128_ecb 2 16 840 1 101 3 4 1 1 */
4627&(nid_objs[462]),/* OBJ_favouriteDrink 0 9 2342 19200300 100 1 5 */ 4784419, /* OBJ_aes_128_cbc 2 16 840 1 101 3 4 1 2 */
4628&(nid_objs[463]),/* OBJ_roomNumber 0 9 2342 19200300 100 1 6 */ 4785420, /* OBJ_aes_128_ofb128 2 16 840 1 101 3 4 1 3 */
4629&(nid_objs[464]),/* OBJ_photo 0 9 2342 19200300 100 1 7 */ 4786421, /* OBJ_aes_128_cfb128 2 16 840 1 101 3 4 1 4 */
4630&(nid_objs[465]),/* OBJ_userClass 0 9 2342 19200300 100 1 8 */ 4787788, /* OBJ_id_aes128_wrap 2 16 840 1 101 3 4 1 5 */
4631&(nid_objs[466]),/* OBJ_host 0 9 2342 19200300 100 1 9 */ 4788422, /* OBJ_aes_192_ecb 2 16 840 1 101 3 4 1 21 */
4632&(nid_objs[467]),/* OBJ_manager 0 9 2342 19200300 100 1 10 */ 4789423, /* OBJ_aes_192_cbc 2 16 840 1 101 3 4 1 22 */
4633&(nid_objs[468]),/* OBJ_documentIdentifier 0 9 2342 19200300 100 1 11 */ 4790424, /* OBJ_aes_192_ofb128 2 16 840 1 101 3 4 1 23 */
4634&(nid_objs[469]),/* OBJ_documentTitle 0 9 2342 19200300 100 1 12 */ 4791425, /* OBJ_aes_192_cfb128 2 16 840 1 101 3 4 1 24 */
4635&(nid_objs[470]),/* OBJ_documentVersion 0 9 2342 19200300 100 1 13 */ 4792789, /* OBJ_id_aes192_wrap 2 16 840 1 101 3 4 1 25 */
4636&(nid_objs[471]),/* OBJ_documentAuthor 0 9 2342 19200300 100 1 14 */ 4793426, /* OBJ_aes_256_ecb 2 16 840 1 101 3 4 1 41 */
4637&(nid_objs[472]),/* OBJ_documentLocation 0 9 2342 19200300 100 1 15 */ 4794427, /* OBJ_aes_256_cbc 2 16 840 1 101 3 4 1 42 */
4638&(nid_objs[473]),/* OBJ_homeTelephoneNumber 0 9 2342 19200300 100 1 20 */ 4795428, /* OBJ_aes_256_ofb128 2 16 840 1 101 3 4 1 43 */
4639&(nid_objs[474]),/* OBJ_secretary 0 9 2342 19200300 100 1 21 */ 4796429, /* OBJ_aes_256_cfb128 2 16 840 1 101 3 4 1 44 */
4640&(nid_objs[475]),/* OBJ_otherMailbox 0 9 2342 19200300 100 1 22 */ 4797790, /* OBJ_id_aes256_wrap 2 16 840 1 101 3 4 1 45 */
4641&(nid_objs[476]),/* OBJ_lastModifiedTime 0 9 2342 19200300 100 1 23 */ 4798672, /* OBJ_sha256 2 16 840 1 101 3 4 2 1 */
4642&(nid_objs[477]),/* OBJ_lastModifiedBy 0 9 2342 19200300 100 1 24 */ 4799673, /* OBJ_sha384 2 16 840 1 101 3 4 2 2 */
4643&(nid_objs[391]),/* OBJ_domainComponent 0 9 2342 19200300 100 1 25 */ 4800674, /* OBJ_sha512 2 16 840 1 101 3 4 2 3 */
4644&(nid_objs[478]),/* OBJ_aRecord 0 9 2342 19200300 100 1 26 */ 4801675, /* OBJ_sha224 2 16 840 1 101 3 4 2 4 */
4645&(nid_objs[479]),/* OBJ_pilotAttributeType27 0 9 2342 19200300 100 1 27 */ 4802802, /* OBJ_dsa_with_SHA224 2 16 840 1 101 3 4 3 1 */
4646&(nid_objs[480]),/* OBJ_mXRecord 0 9 2342 19200300 100 1 28 */ 4803803, /* OBJ_dsa_with_SHA256 2 16 840 1 101 3 4 3 2 */
4647&(nid_objs[481]),/* OBJ_nSRecord 0 9 2342 19200300 100 1 29 */ 480471, /* OBJ_netscape_cert_type 2 16 840 1 113730 1 1 */
4648&(nid_objs[482]),/* OBJ_sOARecord 0 9 2342 19200300 100 1 30 */ 480572, /* OBJ_netscape_base_url 2 16 840 1 113730 1 2 */
4649&(nid_objs[483]),/* OBJ_cNAMERecord 0 9 2342 19200300 100 1 31 */ 480673, /* OBJ_netscape_revocation_url 2 16 840 1 113730 1 3 */
4650&(nid_objs[484]),/* OBJ_associatedDomain 0 9 2342 19200300 100 1 37 */ 480774, /* OBJ_netscape_ca_revocation_url 2 16 840 1 113730 1 4 */
4651&(nid_objs[485]),/* OBJ_associatedName 0 9 2342 19200300 100 1 38 */ 480875, /* OBJ_netscape_renewal_url 2 16 840 1 113730 1 7 */
4652&(nid_objs[486]),/* OBJ_homePostalAddress 0 9 2342 19200300 100 1 39 */ 480976, /* OBJ_netscape_ca_policy_url 2 16 840 1 113730 1 8 */
4653&(nid_objs[487]),/* OBJ_personalTitle 0 9 2342 19200300 100 1 40 */ 481077, /* OBJ_netscape_ssl_server_name 2 16 840 1 113730 1 12 */
4654&(nid_objs[488]),/* OBJ_mobileTelephoneNumber 0 9 2342 19200300 100 1 41 */ 481178, /* OBJ_netscape_comment 2 16 840 1 113730 1 13 */
4655&(nid_objs[489]),/* OBJ_pagerTelephoneNumber 0 9 2342 19200300 100 1 42 */ 481279, /* OBJ_netscape_cert_sequence 2 16 840 1 113730 2 5 */
4656&(nid_objs[490]),/* OBJ_friendlyCountryName 0 9 2342 19200300 100 1 43 */ 4813139, /* OBJ_ns_sgc 2 16 840 1 113730 4 1 */
4657&(nid_objs[491]),/* OBJ_organizationalStatus 0 9 2342 19200300 100 1 45 */ 4814458, /* OBJ_userId 0 9 2342 19200300 100 1 1 */
4658&(nid_objs[492]),/* OBJ_janetMailbox 0 9 2342 19200300 100 1 46 */ 4815459, /* OBJ_textEncodedORAddress 0 9 2342 19200300 100 1 2 */
4659&(nid_objs[493]),/* OBJ_mailPreferenceOption 0 9 2342 19200300 100 1 47 */ 4816460, /* OBJ_rfc822Mailbox 0 9 2342 19200300 100 1 3 */
4660&(nid_objs[494]),/* OBJ_buildingName 0 9 2342 19200300 100 1 48 */ 4817461, /* OBJ_info 0 9 2342 19200300 100 1 4 */
4661&(nid_objs[495]),/* OBJ_dSAQuality 0 9 2342 19200300 100 1 49 */ 4818462, /* OBJ_favouriteDrink 0 9 2342 19200300 100 1 5 */
4662&(nid_objs[496]),/* OBJ_singleLevelQuality 0 9 2342 19200300 100 1 50 */ 4819463, /* OBJ_roomNumber 0 9 2342 19200300 100 1 6 */
4663&(nid_objs[497]),/* OBJ_subtreeMinimumQuality 0 9 2342 19200300 100 1 51 */ 4820464, /* OBJ_photo 0 9 2342 19200300 100 1 7 */
4664&(nid_objs[498]),/* OBJ_subtreeMaximumQuality 0 9 2342 19200300 100 1 52 */ 4821465, /* OBJ_userClass 0 9 2342 19200300 100 1 8 */
4665&(nid_objs[499]),/* OBJ_personalSignature 0 9 2342 19200300 100 1 53 */ 4822466, /* OBJ_host 0 9 2342 19200300 100 1 9 */
4666&(nid_objs[500]),/* OBJ_dITRedirect 0 9 2342 19200300 100 1 54 */ 4823467, /* OBJ_manager 0 9 2342 19200300 100 1 10 */
4667&(nid_objs[501]),/* OBJ_audio 0 9 2342 19200300 100 1 55 */ 4824468, /* OBJ_documentIdentifier 0 9 2342 19200300 100 1 11 */
4668&(nid_objs[502]),/* OBJ_documentPublisher 0 9 2342 19200300 100 1 56 */ 4825469, /* OBJ_documentTitle 0 9 2342 19200300 100 1 12 */
4669&(nid_objs[442]),/* OBJ_iA5StringSyntax 0 9 2342 19200300 100 3 4 */ 4826470, /* OBJ_documentVersion 0 9 2342 19200300 100 1 13 */
4670&(nid_objs[443]),/* OBJ_caseIgnoreIA5StringSyntax 0 9 2342 19200300 100 3 5 */ 4827471, /* OBJ_documentAuthor 0 9 2342 19200300 100 1 14 */
4671&(nid_objs[444]),/* OBJ_pilotObject 0 9 2342 19200300 100 4 3 */ 4828472, /* OBJ_documentLocation 0 9 2342 19200300 100 1 15 */
4672&(nid_objs[445]),/* OBJ_pilotPerson 0 9 2342 19200300 100 4 4 */ 4829473, /* OBJ_homeTelephoneNumber 0 9 2342 19200300 100 1 20 */
4673&(nid_objs[446]),/* OBJ_account 0 9 2342 19200300 100 4 5 */ 4830474, /* OBJ_secretary 0 9 2342 19200300 100 1 21 */
4674&(nid_objs[447]),/* OBJ_document 0 9 2342 19200300 100 4 6 */ 4831475, /* OBJ_otherMailbox 0 9 2342 19200300 100 1 22 */
4675&(nid_objs[448]),/* OBJ_room 0 9 2342 19200300 100 4 7 */ 4832476, /* OBJ_lastModifiedTime 0 9 2342 19200300 100 1 23 */
4676&(nid_objs[449]),/* OBJ_documentSeries 0 9 2342 19200300 100 4 9 */ 4833477, /* OBJ_lastModifiedBy 0 9 2342 19200300 100 1 24 */
4677&(nid_objs[392]),/* OBJ_Domain 0 9 2342 19200300 100 4 13 */ 4834391, /* OBJ_domainComponent 0 9 2342 19200300 100 1 25 */
4678&(nid_objs[450]),/* OBJ_rFC822localPart 0 9 2342 19200300 100 4 14 */ 4835478, /* OBJ_aRecord 0 9 2342 19200300 100 1 26 */
4679&(nid_objs[451]),/* OBJ_dNSDomain 0 9 2342 19200300 100 4 15 */ 4836479, /* OBJ_pilotAttributeType27 0 9 2342 19200300 100 1 27 */
4680&(nid_objs[452]),/* OBJ_domainRelatedObject 0 9 2342 19200300 100 4 17 */ 4837480, /* OBJ_mXRecord 0 9 2342 19200300 100 1 28 */
4681&(nid_objs[453]),/* OBJ_friendlyCountry 0 9 2342 19200300 100 4 18 */ 4838481, /* OBJ_nSRecord 0 9 2342 19200300 100 1 29 */
4682&(nid_objs[454]),/* OBJ_simpleSecurityObject 0 9 2342 19200300 100 4 19 */ 4839482, /* OBJ_sOARecord 0 9 2342 19200300 100 1 30 */
4683&(nid_objs[455]),/* OBJ_pilotOrganization 0 9 2342 19200300 100 4 20 */ 4840483, /* OBJ_cNAMERecord 0 9 2342 19200300 100 1 31 */
4684&(nid_objs[456]),/* OBJ_pilotDSA 0 9 2342 19200300 100 4 21 */ 4841484, /* OBJ_associatedDomain 0 9 2342 19200300 100 1 37 */
4685&(nid_objs[457]),/* OBJ_qualityLabelledData 0 9 2342 19200300 100 4 22 */ 4842485, /* OBJ_associatedName 0 9 2342 19200300 100 1 38 */
4686&(nid_objs[189]),/* OBJ_id_smime_mod 1 2 840 113549 1 9 16 0 */ 4843486, /* OBJ_homePostalAddress 0 9 2342 19200300 100 1 39 */
4687&(nid_objs[190]),/* OBJ_id_smime_ct 1 2 840 113549 1 9 16 1 */ 4844487, /* OBJ_personalTitle 0 9 2342 19200300 100 1 40 */
4688&(nid_objs[191]),/* OBJ_id_smime_aa 1 2 840 113549 1 9 16 2 */ 4845488, /* OBJ_mobileTelephoneNumber 0 9 2342 19200300 100 1 41 */
4689&(nid_objs[192]),/* OBJ_id_smime_alg 1 2 840 113549 1 9 16 3 */ 4846489, /* OBJ_pagerTelephoneNumber 0 9 2342 19200300 100 1 42 */
4690&(nid_objs[193]),/* OBJ_id_smime_cd 1 2 840 113549 1 9 16 4 */ 4847490, /* OBJ_friendlyCountryName 0 9 2342 19200300 100 1 43 */
4691&(nid_objs[194]),/* OBJ_id_smime_spq 1 2 840 113549 1 9 16 5 */ 4848491, /* OBJ_organizationalStatus 0 9 2342 19200300 100 1 45 */
4692&(nid_objs[195]),/* OBJ_id_smime_cti 1 2 840 113549 1 9 16 6 */ 4849492, /* OBJ_janetMailbox 0 9 2342 19200300 100 1 46 */
4693&(nid_objs[158]),/* OBJ_x509Certificate 1 2 840 113549 1 9 22 1 */ 4850493, /* OBJ_mailPreferenceOption 0 9 2342 19200300 100 1 47 */
4694&(nid_objs[159]),/* OBJ_sdsiCertificate 1 2 840 113549 1 9 22 2 */ 4851494, /* OBJ_buildingName 0 9 2342 19200300 100 1 48 */
4695&(nid_objs[160]),/* OBJ_x509Crl 1 2 840 113549 1 9 23 1 */ 4852495, /* OBJ_dSAQuality 0 9 2342 19200300 100 1 49 */
4696&(nid_objs[144]),/* OBJ_pbe_WithSHA1And128BitRC4 1 2 840 113549 1 12 1 1 */ 4853496, /* OBJ_singleLevelQuality 0 9 2342 19200300 100 1 50 */
4697&(nid_objs[145]),/* OBJ_pbe_WithSHA1And40BitRC4 1 2 840 113549 1 12 1 2 */ 4854497, /* OBJ_subtreeMinimumQuality 0 9 2342 19200300 100 1 51 */
4698&(nid_objs[146]),/* OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC 1 2 840 113549 1 12 1 3 */ 4855498, /* OBJ_subtreeMaximumQuality 0 9 2342 19200300 100 1 52 */
4699&(nid_objs[147]),/* OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC 1 2 840 113549 1 12 1 4 */ 4856499, /* OBJ_personalSignature 0 9 2342 19200300 100 1 53 */
4700&(nid_objs[148]),/* OBJ_pbe_WithSHA1And128BitRC2_CBC 1 2 840 113549 1 12 1 5 */ 4857500, /* OBJ_dITRedirect 0 9 2342 19200300 100 1 54 */
4701&(nid_objs[149]),/* OBJ_pbe_WithSHA1And40BitRC2_CBC 1 2 840 113549 1 12 1 6 */ 4858501, /* OBJ_audio 0 9 2342 19200300 100 1 55 */
4702&(nid_objs[171]),/* OBJ_ms_ext_req 1 3 6 1 4 1 311 2 1 14 */ 4859502, /* OBJ_documentPublisher 0 9 2342 19200300 100 1 56 */
4703&(nid_objs[134]),/* OBJ_ms_code_ind 1 3 6 1 4 1 311 2 1 21 */ 4860442, /* OBJ_iA5StringSyntax 0 9 2342 19200300 100 3 4 */
4704&(nid_objs[135]),/* OBJ_ms_code_com 1 3 6 1 4 1 311 2 1 22 */ 4861443, /* OBJ_caseIgnoreIA5StringSyntax 0 9 2342 19200300 100 3 5 */
4705&(nid_objs[136]),/* OBJ_ms_ctl_sign 1 3 6 1 4 1 311 10 3 1 */ 4862444, /* OBJ_pilotObject 0 9 2342 19200300 100 4 3 */
4706&(nid_objs[137]),/* OBJ_ms_sgc 1 3 6 1 4 1 311 10 3 3 */ 4863445, /* OBJ_pilotPerson 0 9 2342 19200300 100 4 4 */
4707&(nid_objs[138]),/* OBJ_ms_efs 1 3 6 1 4 1 311 10 3 4 */ 4864446, /* OBJ_account 0 9 2342 19200300 100 4 5 */
4708&(nid_objs[648]),/* OBJ_ms_smartcard_login 1 3 6 1 4 1 311 20 2 2 */ 4865447, /* OBJ_document 0 9 2342 19200300 100 4 6 */
4709&(nid_objs[649]),/* OBJ_ms_upn 1 3 6 1 4 1 311 20 2 3 */ 4866448, /* OBJ_room 0 9 2342 19200300 100 4 7 */
4710&(nid_objs[751]),/* OBJ_camellia_128_cbc 1 2 392 200011 61 1 1 1 2 */ 4867449, /* OBJ_documentSeries 0 9 2342 19200300 100 4 9 */
4711&(nid_objs[752]),/* OBJ_camellia_192_cbc 1 2 392 200011 61 1 1 1 3 */ 4868392, /* OBJ_Domain 0 9 2342 19200300 100 4 13 */
4712&(nid_objs[753]),/* OBJ_camellia_256_cbc 1 2 392 200011 61 1 1 1 4 */ 4869450, /* OBJ_rFC822localPart 0 9 2342 19200300 100 4 14 */
4713&(nid_objs[196]),/* OBJ_id_smime_mod_cms 1 2 840 113549 1 9 16 0 1 */ 4870451, /* OBJ_dNSDomain 0 9 2342 19200300 100 4 15 */
4714&(nid_objs[197]),/* OBJ_id_smime_mod_ess 1 2 840 113549 1 9 16 0 2 */ 4871452, /* OBJ_domainRelatedObject 0 9 2342 19200300 100 4 17 */
4715&(nid_objs[198]),/* OBJ_id_smime_mod_oid 1 2 840 113549 1 9 16 0 3 */ 4872453, /* OBJ_friendlyCountry 0 9 2342 19200300 100 4 18 */
4716&(nid_objs[199]),/* OBJ_id_smime_mod_msg_v3 1 2 840 113549 1 9 16 0 4 */ 4873454, /* OBJ_simpleSecurityObject 0 9 2342 19200300 100 4 19 */
4717&(nid_objs[200]),/* OBJ_id_smime_mod_ets_eSignature_88 1 2 840 113549 1 9 16 0 5 */ 4874455, /* OBJ_pilotOrganization 0 9 2342 19200300 100 4 20 */
4718&(nid_objs[201]),/* OBJ_id_smime_mod_ets_eSignature_97 1 2 840 113549 1 9 16 0 6 */ 4875456, /* OBJ_pilotDSA 0 9 2342 19200300 100 4 21 */
4719&(nid_objs[202]),/* OBJ_id_smime_mod_ets_eSigPolicy_88 1 2 840 113549 1 9 16 0 7 */ 4876457, /* OBJ_qualityLabelledData 0 9 2342 19200300 100 4 22 */
4720&(nid_objs[203]),/* OBJ_id_smime_mod_ets_eSigPolicy_97 1 2 840 113549 1 9 16 0 8 */ 4877189, /* OBJ_id_smime_mod 1 2 840 113549 1 9 16 0 */
4721&(nid_objs[204]),/* OBJ_id_smime_ct_receipt 1 2 840 113549 1 9 16 1 1 */ 4878190, /* OBJ_id_smime_ct 1 2 840 113549 1 9 16 1 */
4722&(nid_objs[205]),/* OBJ_id_smime_ct_authData 1 2 840 113549 1 9 16 1 2 */ 4879191, /* OBJ_id_smime_aa 1 2 840 113549 1 9 16 2 */
4723&(nid_objs[206]),/* OBJ_id_smime_ct_publishCert 1 2 840 113549 1 9 16 1 3 */ 4880192, /* OBJ_id_smime_alg 1 2 840 113549 1 9 16 3 */
4724&(nid_objs[207]),/* OBJ_id_smime_ct_TSTInfo 1 2 840 113549 1 9 16 1 4 */ 4881193, /* OBJ_id_smime_cd 1 2 840 113549 1 9 16 4 */
4725&(nid_objs[208]),/* OBJ_id_smime_ct_TDTInfo 1 2 840 113549 1 9 16 1 5 */ 4882194, /* OBJ_id_smime_spq 1 2 840 113549 1 9 16 5 */
4726&(nid_objs[209]),/* OBJ_id_smime_ct_contentInfo 1 2 840 113549 1 9 16 1 6 */ 4883195, /* OBJ_id_smime_cti 1 2 840 113549 1 9 16 6 */
4727&(nid_objs[210]),/* OBJ_id_smime_ct_DVCSRequestData 1 2 840 113549 1 9 16 1 7 */ 4884158, /* OBJ_x509Certificate 1 2 840 113549 1 9 22 1 */
4728&(nid_objs[211]),/* OBJ_id_smime_ct_DVCSResponseData 1 2 840 113549 1 9 16 1 8 */ 4885159, /* OBJ_sdsiCertificate 1 2 840 113549 1 9 22 2 */
4729&(nid_objs[786]),/* OBJ_id_smime_ct_compressedData 1 2 840 113549 1 9 16 1 9 */ 4886160, /* OBJ_x509Crl 1 2 840 113549 1 9 23 1 */
4730&(nid_objs[787]),/* OBJ_id_ct_asciiTextWithCRLF 1 2 840 113549 1 9 16 1 27 */ 4887144, /* OBJ_pbe_WithSHA1And128BitRC4 1 2 840 113549 1 12 1 1 */
4731&(nid_objs[212]),/* OBJ_id_smime_aa_receiptRequest 1 2 840 113549 1 9 16 2 1 */ 4888145, /* OBJ_pbe_WithSHA1And40BitRC4 1 2 840 113549 1 12 1 2 */
4732&(nid_objs[213]),/* OBJ_id_smime_aa_securityLabel 1 2 840 113549 1 9 16 2 2 */ 4889146, /* OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC 1 2 840 113549 1 12 1 3 */
4733&(nid_objs[214]),/* OBJ_id_smime_aa_mlExpandHistory 1 2 840 113549 1 9 16 2 3 */ 4890147, /* OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC 1 2 840 113549 1 12 1 4 */
4734&(nid_objs[215]),/* OBJ_id_smime_aa_contentHint 1 2 840 113549 1 9 16 2 4 */ 4891148, /* OBJ_pbe_WithSHA1And128BitRC2_CBC 1 2 840 113549 1 12 1 5 */
4735&(nid_objs[216]),/* OBJ_id_smime_aa_msgSigDigest 1 2 840 113549 1 9 16 2 5 */ 4892149, /* OBJ_pbe_WithSHA1And40BitRC2_CBC 1 2 840 113549 1 12 1 6 */
4736&(nid_objs[217]),/* OBJ_id_smime_aa_encapContentType 1 2 840 113549 1 9 16 2 6 */ 4893171, /* OBJ_ms_ext_req 1 3 6 1 4 1 311 2 1 14 */
4737&(nid_objs[218]),/* OBJ_id_smime_aa_contentIdentifier 1 2 840 113549 1 9 16 2 7 */ 4894134, /* OBJ_ms_code_ind 1 3 6 1 4 1 311 2 1 21 */
4738&(nid_objs[219]),/* OBJ_id_smime_aa_macValue 1 2 840 113549 1 9 16 2 8 */ 4895135, /* OBJ_ms_code_com 1 3 6 1 4 1 311 2 1 22 */
4739&(nid_objs[220]),/* OBJ_id_smime_aa_equivalentLabels 1 2 840 113549 1 9 16 2 9 */ 4896136, /* OBJ_ms_ctl_sign 1 3 6 1 4 1 311 10 3 1 */
4740&(nid_objs[221]),/* OBJ_id_smime_aa_contentReference 1 2 840 113549 1 9 16 2 10 */ 4897137, /* OBJ_ms_sgc 1 3 6 1 4 1 311 10 3 3 */
4741&(nid_objs[222]),/* OBJ_id_smime_aa_encrypKeyPref 1 2 840 113549 1 9 16 2 11 */ 4898138, /* OBJ_ms_efs 1 3 6 1 4 1 311 10 3 4 */
4742&(nid_objs[223]),/* OBJ_id_smime_aa_signingCertificate 1 2 840 113549 1 9 16 2 12 */ 4899648, /* OBJ_ms_smartcard_login 1 3 6 1 4 1 311 20 2 2 */
4743&(nid_objs[224]),/* OBJ_id_smime_aa_smimeEncryptCerts 1 2 840 113549 1 9 16 2 13 */ 4900649, /* OBJ_ms_upn 1 3 6 1 4 1 311 20 2 3 */
4744&(nid_objs[225]),/* OBJ_id_smime_aa_timeStampToken 1 2 840 113549 1 9 16 2 14 */ 4901751, /* OBJ_camellia_128_cbc 1 2 392 200011 61 1 1 1 2 */
4745&(nid_objs[226]),/* OBJ_id_smime_aa_ets_sigPolicyId 1 2 840 113549 1 9 16 2 15 */ 4902752, /* OBJ_camellia_192_cbc 1 2 392 200011 61 1 1 1 3 */
4746&(nid_objs[227]),/* OBJ_id_smime_aa_ets_commitmentType 1 2 840 113549 1 9 16 2 16 */ 4903753, /* OBJ_camellia_256_cbc 1 2 392 200011 61 1 1 1 4 */
4747&(nid_objs[228]),/* OBJ_id_smime_aa_ets_signerLocation 1 2 840 113549 1 9 16 2 17 */ 4904196, /* OBJ_id_smime_mod_cms 1 2 840 113549 1 9 16 0 1 */
4748&(nid_objs[229]),/* OBJ_id_smime_aa_ets_signerAttr 1 2 840 113549 1 9 16 2 18 */ 4905197, /* OBJ_id_smime_mod_ess 1 2 840 113549 1 9 16 0 2 */
4749&(nid_objs[230]),/* OBJ_id_smime_aa_ets_otherSigCert 1 2 840 113549 1 9 16 2 19 */ 4906198, /* OBJ_id_smime_mod_oid 1 2 840 113549 1 9 16 0 3 */
4750&(nid_objs[231]),/* OBJ_id_smime_aa_ets_contentTimestamp 1 2 840 113549 1 9 16 2 20 */ 4907199, /* OBJ_id_smime_mod_msg_v3 1 2 840 113549 1 9 16 0 4 */
4751&(nid_objs[232]),/* OBJ_id_smime_aa_ets_CertificateRefs 1 2 840 113549 1 9 16 2 21 */ 4908200, /* OBJ_id_smime_mod_ets_eSignature_88 1 2 840 113549 1 9 16 0 5 */
4752&(nid_objs[233]),/* OBJ_id_smime_aa_ets_RevocationRefs 1 2 840 113549 1 9 16 2 22 */ 4909201, /* OBJ_id_smime_mod_ets_eSignature_97 1 2 840 113549 1 9 16 0 6 */
4753&(nid_objs[234]),/* OBJ_id_smime_aa_ets_certValues 1 2 840 113549 1 9 16 2 23 */ 4910202, /* OBJ_id_smime_mod_ets_eSigPolicy_88 1 2 840 113549 1 9 16 0 7 */
4754&(nid_objs[235]),/* OBJ_id_smime_aa_ets_revocationValues 1 2 840 113549 1 9 16 2 24 */ 4911203, /* OBJ_id_smime_mod_ets_eSigPolicy_97 1 2 840 113549 1 9 16 0 8 */
4755&(nid_objs[236]),/* OBJ_id_smime_aa_ets_escTimeStamp 1 2 840 113549 1 9 16 2 25 */ 4912204, /* OBJ_id_smime_ct_receipt 1 2 840 113549 1 9 16 1 1 */
4756&(nid_objs[237]),/* OBJ_id_smime_aa_ets_certCRLTimestamp 1 2 840 113549 1 9 16 2 26 */ 4913205, /* OBJ_id_smime_ct_authData 1 2 840 113549 1 9 16 1 2 */
4757&(nid_objs[238]),/* OBJ_id_smime_aa_ets_archiveTimeStamp 1 2 840 113549 1 9 16 2 27 */ 4914206, /* OBJ_id_smime_ct_publishCert 1 2 840 113549 1 9 16 1 3 */
4758&(nid_objs[239]),/* OBJ_id_smime_aa_signatureType 1 2 840 113549 1 9 16 2 28 */ 4915207, /* OBJ_id_smime_ct_TSTInfo 1 2 840 113549 1 9 16 1 4 */
4759&(nid_objs[240]),/* OBJ_id_smime_aa_dvcs_dvc 1 2 840 113549 1 9 16 2 29 */ 4916208, /* OBJ_id_smime_ct_TDTInfo 1 2 840 113549 1 9 16 1 5 */
4760&(nid_objs[241]),/* OBJ_id_smime_alg_ESDHwith3DES 1 2 840 113549 1 9 16 3 1 */ 4917209, /* OBJ_id_smime_ct_contentInfo 1 2 840 113549 1 9 16 1 6 */
4761&(nid_objs[242]),/* OBJ_id_smime_alg_ESDHwithRC2 1 2 840 113549 1 9 16 3 2 */ 4918210, /* OBJ_id_smime_ct_DVCSRequestData 1 2 840 113549 1 9 16 1 7 */
4762&(nid_objs[243]),/* OBJ_id_smime_alg_3DESwrap 1 2 840 113549 1 9 16 3 3 */ 4919211, /* OBJ_id_smime_ct_DVCSResponseData 1 2 840 113549 1 9 16 1 8 */
4763&(nid_objs[244]),/* OBJ_id_smime_alg_RC2wrap 1 2 840 113549 1 9 16 3 4 */ 4920786, /* OBJ_id_smime_ct_compressedData 1 2 840 113549 1 9 16 1 9 */
4764&(nid_objs[245]),/* OBJ_id_smime_alg_ESDH 1 2 840 113549 1 9 16 3 5 */ 4921787, /* OBJ_id_ct_asciiTextWithCRLF 1 2 840 113549 1 9 16 1 27 */
4765&(nid_objs[246]),/* OBJ_id_smime_alg_CMS3DESwrap 1 2 840 113549 1 9 16 3 6 */ 4922212, /* OBJ_id_smime_aa_receiptRequest 1 2 840 113549 1 9 16 2 1 */
4766&(nid_objs[247]),/* OBJ_id_smime_alg_CMSRC2wrap 1 2 840 113549 1 9 16 3 7 */ 4923213, /* OBJ_id_smime_aa_securityLabel 1 2 840 113549 1 9 16 2 2 */
4767&(nid_objs[125]),/* OBJ_zlib_compression 1 2 840 113549 1 9 16 3 8 */ 4924214, /* OBJ_id_smime_aa_mlExpandHistory 1 2 840 113549 1 9 16 2 3 */
4768&(nid_objs[248]),/* OBJ_id_smime_cd_ldap 1 2 840 113549 1 9 16 4 1 */ 4925215, /* OBJ_id_smime_aa_contentHint 1 2 840 113549 1 9 16 2 4 */
4769&(nid_objs[249]),/* OBJ_id_smime_spq_ets_sqt_uri 1 2 840 113549 1 9 16 5 1 */ 4926216, /* OBJ_id_smime_aa_msgSigDigest 1 2 840 113549 1 9 16 2 5 */
4770&(nid_objs[250]),/* OBJ_id_smime_spq_ets_sqt_unotice 1 2 840 113549 1 9 16 5 2 */ 4927217, /* OBJ_id_smime_aa_encapContentType 1 2 840 113549 1 9 16 2 6 */
4771&(nid_objs[251]),/* OBJ_id_smime_cti_ets_proofOfOrigin 1 2 840 113549 1 9 16 6 1 */ 4928218, /* OBJ_id_smime_aa_contentIdentifier 1 2 840 113549 1 9 16 2 7 */
4772&(nid_objs[252]),/* OBJ_id_smime_cti_ets_proofOfReceipt 1 2 840 113549 1 9 16 6 2 */ 4929219, /* OBJ_id_smime_aa_macValue 1 2 840 113549 1 9 16 2 8 */
4773&(nid_objs[253]),/* OBJ_id_smime_cti_ets_proofOfDelivery 1 2 840 113549 1 9 16 6 3 */ 4930220, /* OBJ_id_smime_aa_equivalentLabels 1 2 840 113549 1 9 16 2 9 */
4774&(nid_objs[254]),/* OBJ_id_smime_cti_ets_proofOfSender 1 2 840 113549 1 9 16 6 4 */ 4931221, /* OBJ_id_smime_aa_contentReference 1 2 840 113549 1 9 16 2 10 */
4775&(nid_objs[255]),/* OBJ_id_smime_cti_ets_proofOfApproval 1 2 840 113549 1 9 16 6 5 */ 4932222, /* OBJ_id_smime_aa_encrypKeyPref 1 2 840 113549 1 9 16 2 11 */
4776&(nid_objs[256]),/* OBJ_id_smime_cti_ets_proofOfCreation 1 2 840 113549 1 9 16 6 6 */ 4933223, /* OBJ_id_smime_aa_signingCertificate 1 2 840 113549 1 9 16 2 12 */
4777&(nid_objs[150]),/* OBJ_keyBag 1 2 840 113549 1 12 10 1 1 */ 4934224, /* OBJ_id_smime_aa_smimeEncryptCerts 1 2 840 113549 1 9 16 2 13 */
4778&(nid_objs[151]),/* OBJ_pkcs8ShroudedKeyBag 1 2 840 113549 1 12 10 1 2 */ 4935225, /* OBJ_id_smime_aa_timeStampToken 1 2 840 113549 1 9 16 2 14 */
4779&(nid_objs[152]),/* OBJ_certBag 1 2 840 113549 1 12 10 1 3 */ 4936226, /* OBJ_id_smime_aa_ets_sigPolicyId 1 2 840 113549 1 9 16 2 15 */
4780&(nid_objs[153]),/* OBJ_crlBag 1 2 840 113549 1 12 10 1 4 */ 4937227, /* OBJ_id_smime_aa_ets_commitmentType 1 2 840 113549 1 9 16 2 16 */
4781&(nid_objs[154]),/* OBJ_secretBag 1 2 840 113549 1 12 10 1 5 */ 4938228, /* OBJ_id_smime_aa_ets_signerLocation 1 2 840 113549 1 9 16 2 17 */
4782&(nid_objs[155]),/* OBJ_safeContentsBag 1 2 840 113549 1 12 10 1 6 */ 4939229, /* OBJ_id_smime_aa_ets_signerAttr 1 2 840 113549 1 9 16 2 18 */
4783&(nid_objs[34]),/* OBJ_idea_cbc 1 3 6 1 4 1 188 7 1 1 2 */ 4940230, /* OBJ_id_smime_aa_ets_otherSigCert 1 2 840 113549 1 9 16 2 19 */
4941231, /* OBJ_id_smime_aa_ets_contentTimestamp 1 2 840 113549 1 9 16 2 20 */
4942232, /* OBJ_id_smime_aa_ets_CertificateRefs 1 2 840 113549 1 9 16 2 21 */
4943233, /* OBJ_id_smime_aa_ets_RevocationRefs 1 2 840 113549 1 9 16 2 22 */
4944234, /* OBJ_id_smime_aa_ets_certValues 1 2 840 113549 1 9 16 2 23 */
4945235, /* OBJ_id_smime_aa_ets_revocationValues 1 2 840 113549 1 9 16 2 24 */
4946236, /* OBJ_id_smime_aa_ets_escTimeStamp 1 2 840 113549 1 9 16 2 25 */
4947237, /* OBJ_id_smime_aa_ets_certCRLTimestamp 1 2 840 113549 1 9 16 2 26 */
4948238, /* OBJ_id_smime_aa_ets_archiveTimeStamp 1 2 840 113549 1 9 16 2 27 */
4949239, /* OBJ_id_smime_aa_signatureType 1 2 840 113549 1 9 16 2 28 */
4950240, /* OBJ_id_smime_aa_dvcs_dvc 1 2 840 113549 1 9 16 2 29 */
4951241, /* OBJ_id_smime_alg_ESDHwith3DES 1 2 840 113549 1 9 16 3 1 */
4952242, /* OBJ_id_smime_alg_ESDHwithRC2 1 2 840 113549 1 9 16 3 2 */
4953243, /* OBJ_id_smime_alg_3DESwrap 1 2 840 113549 1 9 16 3 3 */
4954244, /* OBJ_id_smime_alg_RC2wrap 1 2 840 113549 1 9 16 3 4 */
4955245, /* OBJ_id_smime_alg_ESDH 1 2 840 113549 1 9 16 3 5 */
4956246, /* OBJ_id_smime_alg_CMS3DESwrap 1 2 840 113549 1 9 16 3 6 */
4957247, /* OBJ_id_smime_alg_CMSRC2wrap 1 2 840 113549 1 9 16 3 7 */
4958125, /* OBJ_zlib_compression 1 2 840 113549 1 9 16 3 8 */
4959248, /* OBJ_id_smime_cd_ldap 1 2 840 113549 1 9 16 4 1 */
4960249, /* OBJ_id_smime_spq_ets_sqt_uri 1 2 840 113549 1 9 16 5 1 */
4961250, /* OBJ_id_smime_spq_ets_sqt_unotice 1 2 840 113549 1 9 16 5 2 */
4962251, /* OBJ_id_smime_cti_ets_proofOfOrigin 1 2 840 113549 1 9 16 6 1 */
4963252, /* OBJ_id_smime_cti_ets_proofOfReceipt 1 2 840 113549 1 9 16 6 2 */
4964253, /* OBJ_id_smime_cti_ets_proofOfDelivery 1 2 840 113549 1 9 16 6 3 */
4965254, /* OBJ_id_smime_cti_ets_proofOfSender 1 2 840 113549 1 9 16 6 4 */
4966255, /* OBJ_id_smime_cti_ets_proofOfApproval 1 2 840 113549 1 9 16 6 5 */
4967256, /* OBJ_id_smime_cti_ets_proofOfCreation 1 2 840 113549 1 9 16 6 6 */
4968150, /* OBJ_keyBag 1 2 840 113549 1 12 10 1 1 */
4969151, /* OBJ_pkcs8ShroudedKeyBag 1 2 840 113549 1 12 10 1 2 */
4970152, /* OBJ_certBag 1 2 840 113549 1 12 10 1 3 */
4971153, /* OBJ_crlBag 1 2 840 113549 1 12 10 1 4 */
4972154, /* OBJ_secretBag 1 2 840 113549 1 12 10 1 5 */
4973155, /* OBJ_safeContentsBag 1 2 840 113549 1 12 10 1 6 */
497434, /* OBJ_idea_cbc 1 3 6 1 4 1 188 7 1 1 2 */
4784}; 4975};
4785 4976
diff --git a/src/lib/libcrypto/objects/obj_mac.h b/src/lib/libcrypto/objects/obj_mac.h
index ad5f7cfc10..282f11a8a8 100644
--- a/src/lib/libcrypto/objects/obj_mac.h
+++ b/src/lib/libcrypto/objects/obj_mac.h
@@ -122,7 +122,7 @@
122 122
123#define SN_wap_wsg "wap-wsg" 123#define SN_wap_wsg "wap-wsg"
124#define NID_wap_wsg 679 124#define NID_wap_wsg 679
125#define OBJ_wap_wsg OBJ_wap,13L 125#define OBJ_wap_wsg OBJ_wap,1L
126 126
127#define SN_selected_attribute_types "selected-attribute-types" 127#define SN_selected_attribute_types "selected-attribute-types"
128#define LN_selected_attribute_types "Selected Attribute Types" 128#define LN_selected_attribute_types "Selected Attribute Types"
@@ -2049,6 +2049,7 @@
2049#define NID_stateOrProvinceName 16 2049#define NID_stateOrProvinceName 16
2050#define OBJ_stateOrProvinceName OBJ_X509,8L 2050#define OBJ_stateOrProvinceName OBJ_X509,8L
2051 2051
2052#define SN_streetAddress "street"
2052#define LN_streetAddress "streetAddress" 2053#define LN_streetAddress "streetAddress"
2053#define NID_streetAddress 660 2054#define NID_streetAddress 660
2054#define OBJ_streetAddress OBJ_X509,9L 2055#define OBJ_streetAddress OBJ_X509,9L
@@ -2063,6 +2064,7 @@
2063#define NID_organizationalUnitName 18 2064#define NID_organizationalUnitName 18
2064#define OBJ_organizationalUnitName OBJ_X509,11L 2065#define OBJ_organizationalUnitName OBJ_X509,11L
2065 2066
2067#define SN_title "title"
2066#define LN_title "title" 2068#define LN_title "title"
2067#define NID_title 106 2069#define NID_title 106
2068#define OBJ_title OBJ_X509,12L 2070#define OBJ_title OBJ_X509,12L
@@ -2071,10 +2073,114 @@
2071#define NID_description 107 2073#define NID_description 107
2072#define OBJ_description OBJ_X509,13L 2074#define OBJ_description OBJ_X509,13L
2073 2075
2076#define LN_searchGuide "searchGuide"
2077#define NID_searchGuide 859
2078#define OBJ_searchGuide OBJ_X509,14L
2079
2080#define LN_businessCategory "businessCategory"
2081#define NID_businessCategory 860
2082#define OBJ_businessCategory OBJ_X509,15L
2083
2084#define LN_postalAddress "postalAddress"
2085#define NID_postalAddress 861
2086#define OBJ_postalAddress OBJ_X509,16L
2087
2074#define LN_postalCode "postalCode" 2088#define LN_postalCode "postalCode"
2075#define NID_postalCode 661 2089#define NID_postalCode 661
2076#define OBJ_postalCode OBJ_X509,17L 2090#define OBJ_postalCode OBJ_X509,17L
2077 2091
2092#define LN_postOfficeBox "postOfficeBox"
2093#define NID_postOfficeBox 862
2094#define OBJ_postOfficeBox OBJ_X509,18L
2095
2096#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName"
2097#define NID_physicalDeliveryOfficeName 863
2098#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L
2099
2100#define LN_telephoneNumber "telephoneNumber"
2101#define NID_telephoneNumber 864
2102#define OBJ_telephoneNumber OBJ_X509,20L
2103
2104#define LN_telexNumber "telexNumber"
2105#define NID_telexNumber 865
2106#define OBJ_telexNumber OBJ_X509,21L
2107
2108#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier"
2109#define NID_teletexTerminalIdentifier 866
2110#define OBJ_teletexTerminalIdentifier OBJ_X509,22L
2111
2112#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber"
2113#define NID_facsimileTelephoneNumber 867
2114#define OBJ_facsimileTelephoneNumber OBJ_X509,23L
2115
2116#define LN_x121Address "x121Address"
2117#define NID_x121Address 868
2118#define OBJ_x121Address OBJ_X509,24L
2119
2120#define LN_internationaliSDNNumber "internationaliSDNNumber"
2121#define NID_internationaliSDNNumber 869
2122#define OBJ_internationaliSDNNumber OBJ_X509,25L
2123
2124#define LN_registeredAddress "registeredAddress"
2125#define NID_registeredAddress 870
2126#define OBJ_registeredAddress OBJ_X509,26L
2127
2128#define LN_destinationIndicator "destinationIndicator"
2129#define NID_destinationIndicator 871
2130#define OBJ_destinationIndicator OBJ_X509,27L
2131
2132#define LN_preferredDeliveryMethod "preferredDeliveryMethod"
2133#define NID_preferredDeliveryMethod 872
2134#define OBJ_preferredDeliveryMethod OBJ_X509,28L
2135
2136#define LN_presentationAddress "presentationAddress"
2137#define NID_presentationAddress 873
2138#define OBJ_presentationAddress OBJ_X509,29L
2139
2140#define LN_supportedApplicationContext "supportedApplicationContext"
2141#define NID_supportedApplicationContext 874
2142#define OBJ_supportedApplicationContext OBJ_X509,30L
2143
2144#define SN_member "member"
2145#define NID_member 875
2146#define OBJ_member OBJ_X509,31L
2147
2148#define SN_owner "owner"
2149#define NID_owner 876
2150#define OBJ_owner OBJ_X509,32L
2151
2152#define LN_roleOccupant "roleOccupant"
2153#define NID_roleOccupant 877
2154#define OBJ_roleOccupant OBJ_X509,33L
2155
2156#define SN_seeAlso "seeAlso"
2157#define NID_seeAlso 878
2158#define OBJ_seeAlso OBJ_X509,34L
2159
2160#define LN_userPassword "userPassword"
2161#define NID_userPassword 879
2162#define OBJ_userPassword OBJ_X509,35L
2163
2164#define LN_userCertificate "userCertificate"
2165#define NID_userCertificate 880
2166#define OBJ_userCertificate OBJ_X509,36L
2167
2168#define LN_cACertificate "cACertificate"
2169#define NID_cACertificate 881
2170#define OBJ_cACertificate OBJ_X509,37L
2171
2172#define LN_authorityRevocationList "authorityRevocationList"
2173#define NID_authorityRevocationList 882
2174#define OBJ_authorityRevocationList OBJ_X509,38L
2175
2176#define LN_certificateRevocationList "certificateRevocationList"
2177#define NID_certificateRevocationList 883
2178#define OBJ_certificateRevocationList OBJ_X509,39L
2179
2180#define LN_crossCertificatePair "crossCertificatePair"
2181#define NID_crossCertificatePair 884
2182#define OBJ_crossCertificatePair OBJ_X509,40L
2183
2078#define SN_name "name" 2184#define SN_name "name"
2079#define LN_name "name" 2185#define LN_name "name"
2080#define NID_name 173 2186#define NID_name 173
@@ -2085,6 +2191,7 @@
2085#define NID_givenName 99 2191#define NID_givenName 99
2086#define OBJ_givenName OBJ_X509,42L 2192#define OBJ_givenName OBJ_X509,42L
2087 2193
2194#define SN_initials "initials"
2088#define LN_initials "initials" 2195#define LN_initials "initials"
2089#define NID_initials 101 2196#define NID_initials 101
2090#define OBJ_initials OBJ_X509,43L 2197#define OBJ_initials OBJ_X509,43L
@@ -2102,6 +2209,38 @@
2102#define NID_dnQualifier 174 2209#define NID_dnQualifier 174
2103#define OBJ_dnQualifier OBJ_X509,46L 2210#define OBJ_dnQualifier OBJ_X509,46L
2104 2211
2212#define LN_enhancedSearchGuide "enhancedSearchGuide"
2213#define NID_enhancedSearchGuide 885
2214#define OBJ_enhancedSearchGuide OBJ_X509,47L
2215
2216#define LN_protocolInformation "protocolInformation"
2217#define NID_protocolInformation 886
2218#define OBJ_protocolInformation OBJ_X509,48L
2219
2220#define LN_distinguishedName "distinguishedName"
2221#define NID_distinguishedName 887
2222#define OBJ_distinguishedName OBJ_X509,49L
2223
2224#define LN_uniqueMember "uniqueMember"
2225#define NID_uniqueMember 888
2226#define OBJ_uniqueMember OBJ_X509,50L
2227
2228#define LN_houseIdentifier "houseIdentifier"
2229#define NID_houseIdentifier 889
2230#define OBJ_houseIdentifier OBJ_X509,51L
2231
2232#define LN_supportedAlgorithms "supportedAlgorithms"
2233#define NID_supportedAlgorithms 890
2234#define OBJ_supportedAlgorithms OBJ_X509,52L
2235
2236#define LN_deltaRevocationList "deltaRevocationList"
2237#define NID_deltaRevocationList 891
2238#define OBJ_deltaRevocationList OBJ_X509,53L
2239
2240#define SN_dmdName "dmdName"
2241#define NID_dmdName 892
2242#define OBJ_dmdName OBJ_X509,54L
2243
2105#define LN_pseudonym "pseudonym" 2244#define LN_pseudonym "pseudonym"
2106#define NID_pseudonym 510 2245#define NID_pseudonym 510
2107#define OBJ_pseudonym OBJ_X509,65L 2246#define OBJ_pseudonym OBJ_X509,65L
diff --git a/src/lib/libcrypto/ocsp/Makefile b/src/lib/libcrypto/ocsp/Makefile
index 30a00b3372..60c414cf4d 100644
--- a/src/lib/libcrypto/ocsp/Makefile
+++ b/src/lib/libcrypto/ocsp/Makefile
@@ -36,7 +36,7 @@ top:
36all: lib 36all: lib
37 37
38lib: $(LIBOBJ) 38lib: $(LIBOBJ)
39 $(ARX) $(LIB) $(LIBOBJ) 39 $(AR) $(LIB) $(LIBOBJ)
40 $(RANLIB) $(LIB) || echo Never mind. 40 $(RANLIB) $(LIB) || echo Never mind.
41 @touch lib 41 @touch lib
42 42
@@ -82,10 +82,9 @@ ocsp_asn.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
82ocsp_asn.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 82ocsp_asn.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
83ocsp_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 83ocsp_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
84ocsp_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 84ocsp_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
85ocsp_asn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 85ocsp_asn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
86ocsp_asn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 86ocsp_asn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
87ocsp_asn.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h 87ocsp_asn.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
88ocsp_asn.o: ../../include/openssl/opensslconf.h
89ocsp_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 88ocsp_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
90ocsp_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 89ocsp_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
91ocsp_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 90ocsp_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -98,25 +97,24 @@ ocsp_cl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
98ocsp_cl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 97ocsp_cl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
99ocsp_cl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 98ocsp_cl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
100ocsp_cl.o: ../../include/openssl/err.h ../../include/openssl/evp.h 99ocsp_cl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
101ocsp_cl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 100ocsp_cl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
102ocsp_cl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 101ocsp_cl.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
103ocsp_cl.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 102ocsp_cl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
104ocsp_cl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 103ocsp_cl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
105ocsp_cl.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 104ocsp_cl.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
106ocsp_cl.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 105ocsp_cl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
107ocsp_cl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 106ocsp_cl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
108ocsp_cl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 107ocsp_cl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
109ocsp_cl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 108ocsp_cl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
110ocsp_cl.o: ../../include/openssl/x509v3.h ../cryptlib.h ocsp_cl.c 109ocsp_cl.o: ../cryptlib.h ocsp_cl.c
111ocsp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 110ocsp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
112ocsp_err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 111ocsp_err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
113ocsp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 112ocsp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
114ocsp_err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 113ocsp_err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
115ocsp_err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 114ocsp_err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
116ocsp_err.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 115ocsp_err.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
117ocsp_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 116ocsp_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
118ocsp_err.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h 117ocsp_err.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
119ocsp_err.o: ../../include/openssl/opensslconf.h
120ocsp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 118ocsp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
121ocsp_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 119ocsp_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
122ocsp_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 120ocsp_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -129,9 +127,9 @@ ocsp_ext.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
129ocsp_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 127ocsp_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
130ocsp_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 128ocsp_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
131ocsp_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h 129ocsp_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h
132ocsp_ext.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 130ocsp_ext.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
133ocsp_ext.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 131ocsp_ext.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
134ocsp_ext.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 132ocsp_ext.o: ../../include/openssl/opensslconf.h
135ocsp_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 133ocsp_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
136ocsp_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 134ocsp_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
137ocsp_ext.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 135ocsp_ext.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -144,22 +142,21 @@ ocsp_ht.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
144ocsp_ht.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 142ocsp_ht.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
145ocsp_ht.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 143ocsp_ht.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
146ocsp_ht.o: ../../include/openssl/err.h ../../include/openssl/evp.h 144ocsp_ht.o: ../../include/openssl/err.h ../../include/openssl/evp.h
147ocsp_ht.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 145ocsp_ht.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
148ocsp_ht.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 146ocsp_ht.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
149ocsp_ht.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 147ocsp_ht.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
150ocsp_ht.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 148ocsp_ht.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
151ocsp_ht.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 149ocsp_ht.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
152ocsp_ht.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 150ocsp_ht.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
153ocsp_ht.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 151ocsp_ht.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
154ocsp_ht.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 152ocsp_ht.o: ../../include/openssl/x509v3.h ocsp_ht.c
155ocsp_ht.o: ocsp_ht.c
156ocsp_lib.o: ../../e_os.h ../../include/openssl/asn1.h 153ocsp_lib.o: ../../e_os.h ../../include/openssl/asn1.h
157ocsp_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 154ocsp_lib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
158ocsp_lib.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 155ocsp_lib.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
159ocsp_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 156ocsp_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
160ocsp_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 157ocsp_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
161ocsp_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 158ocsp_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
162ocsp_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 159ocsp_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
163ocsp_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 160ocsp_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
164ocsp_lib.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 161ocsp_lib.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
165ocsp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 162ocsp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -174,10 +171,9 @@ ocsp_prn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
174ocsp_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 171ocsp_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
175ocsp_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 172ocsp_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
176ocsp_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 173ocsp_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
177ocsp_prn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 174ocsp_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
178ocsp_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 175ocsp_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
179ocsp_prn.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h 176ocsp_prn.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
180ocsp_prn.o: ../../include/openssl/opensslconf.h
181ocsp_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 177ocsp_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
182ocsp_prn.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 178ocsp_prn.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
183ocsp_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 179ocsp_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -191,9 +187,9 @@ ocsp_srv.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
191ocsp_srv.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 187ocsp_srv.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
192ocsp_srv.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 188ocsp_srv.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
193ocsp_srv.o: ../../include/openssl/err.h ../../include/openssl/evp.h 189ocsp_srv.o: ../../include/openssl/err.h ../../include/openssl/evp.h
194ocsp_srv.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 190ocsp_srv.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
195ocsp_srv.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 191ocsp_srv.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
196ocsp_srv.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 192ocsp_srv.o: ../../include/openssl/opensslconf.h
197ocsp_srv.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 193ocsp_srv.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
198ocsp_srv.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 194ocsp_srv.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
199ocsp_srv.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 195ocsp_srv.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
@@ -206,10 +202,9 @@ ocsp_vfy.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
206ocsp_vfy.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 202ocsp_vfy.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
207ocsp_vfy.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 203ocsp_vfy.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
208ocsp_vfy.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 204ocsp_vfy.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
209ocsp_vfy.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 205ocsp_vfy.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
210ocsp_vfy.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 206ocsp_vfy.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
211ocsp_vfy.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h 207ocsp_vfy.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
212ocsp_vfy.o: ../../include/openssl/opensslconf.h
213ocsp_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 208ocsp_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
214ocsp_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 209ocsp_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
215ocsp_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 210ocsp_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
diff --git a/src/lib/libcrypto/opensslconf.h b/src/lib/libcrypto/opensslconf.h
index 60505327d3..c21b3913f0 100644
--- a/src/lib/libcrypto/opensslconf.h
+++ b/src/lib/libcrypto/opensslconf.h
@@ -5,15 +5,6 @@
5#ifndef OPENSSL_DOING_MAKEDEPEND 5#ifndef OPENSSL_DOING_MAKEDEPEND
6 6
7 7
8#ifndef OPENSSL_NO_CAMELLIA
9# define OPENSSL_NO_CAMELLIA
10#endif
11#ifndef OPENSSL_NO_CAPIENG
12# define OPENSSL_NO_CAPIENG
13#endif
14#ifndef OPENSSL_NO_CMS
15# define OPENSSL_NO_CMS
16#endif
17#ifndef OPENSSL_NO_GMP 8#ifndef OPENSSL_NO_GMP
18# define OPENSSL_NO_GMP 9# define OPENSSL_NO_GMP
19#endif 10#endif
@@ -23,8 +14,8 @@
23#ifndef OPENSSL_NO_KRB5 14#ifndef OPENSSL_NO_KRB5
24# define OPENSSL_NO_KRB5 15# define OPENSSL_NO_KRB5
25#endif 16#endif
26#ifndef OPENSSL_NO_MDC2 17#ifndef OPENSSL_NO_MD2
27# define OPENSSL_NO_MDC2 18# define OPENSSL_NO_MD2
28#endif 19#endif
29#ifndef OPENSSL_NO_RC5 20#ifndef OPENSSL_NO_RC5
30# define OPENSSL_NO_RC5 21# define OPENSSL_NO_RC5
@@ -32,8 +23,8 @@
32#ifndef OPENSSL_NO_RFC3779 23#ifndef OPENSSL_NO_RFC3779
33# define OPENSSL_NO_RFC3779 24# define OPENSSL_NO_RFC3779
34#endif 25#endif
35#ifndef OPENSSL_NO_SEED 26#ifndef OPENSSL_NO_STORE
36# define OPENSSL_NO_SEED 27# define OPENSSL_NO_STORE
37#endif 28#endif
38 29
39#endif /* OPENSSL_DOING_MAKEDEPEND */ 30#endif /* OPENSSL_DOING_MAKEDEPEND */
@@ -47,15 +38,6 @@
47 who haven't had the time to do the appropriate changes in their 38 who haven't had the time to do the appropriate changes in their
48 applications. */ 39 applications. */
49#ifdef OPENSSL_ALGORITHM_DEFINES 40#ifdef OPENSSL_ALGORITHM_DEFINES
50# if defined(OPENSSL_NO_CAMELLIA) && !defined(NO_CAMELLIA)
51# define NO_CAMELLIA
52# endif
53# if defined(OPENSSL_NO_CAPIENG) && !defined(NO_CAPIENG)
54# define NO_CAPIENG
55# endif
56# if defined(OPENSSL_NO_CMS) && !defined(NO_CMS)
57# define NO_CMS
58# endif
59# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP) 41# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP)
60# define NO_GMP 42# define NO_GMP
61# endif 43# endif
@@ -65,8 +47,8 @@
65# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5) 47# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
66# define NO_KRB5 48# define NO_KRB5
67# endif 49# endif
68# if defined(OPENSSL_NO_MDC2) && !defined(NO_MDC2) 50# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2)
69# define NO_MDC2 51# define NO_MD2
70# endif 52# endif
71# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5) 53# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5)
72# define NO_RC5 54# define NO_RC5
@@ -74,28 +56,13 @@
74# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779) 56# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779)
75# define NO_RFC3779 57# define NO_RFC3779
76# endif 58# endif
77# if defined(OPENSSL_NO_SEED) && !defined(NO_SEED) 59# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE)
78# define NO_SEED 60# define NO_STORE
79# endif 61# endif
80#endif 62#endif
81 63
82/* crypto/opensslconf.h.in */ 64/* crypto/opensslconf.h.in */
83 65
84#ifdef OPENSSL_DOING_MAKEDEPEND
85
86/* Include any symbols here that have to be explicitly set to enable a feature
87 * that should be visible to makedepend.
88 *
89 * [Our "make depend" doesn't actually look at this, we use actual build settings
90 * instead; we want to make it easy to remove subdirectories with disabled algorithms.]
91 */
92
93#ifndef OPENSSL_FIPS
94#define OPENSSL_FIPS
95#endif
96
97#endif
98
99/* Generate 80386 code? */ 66/* Generate 80386 code? */
100#undef I386_ONLY 67#undef I386_ONLY
101 68
@@ -159,14 +126,9 @@
159/* Should we define BN_DIV2W here? */ 126/* Should we define BN_DIV2W here? */
160 127
161/* Only one for the following should be defined */ 128/* Only one for the following should be defined */
162/* The prime number generation stuff may not work when
163 * EIGHT_BIT but I don't care since I've only used this mode
164 * for debuging the bignum libraries */
165#undef SIXTY_FOUR_BIT_LONG 129#undef SIXTY_FOUR_BIT_LONG
166#undef SIXTY_FOUR_BIT 130#undef SIXTY_FOUR_BIT
167#define THIRTY_TWO_BIT 131#define THIRTY_TWO_BIT
168#undef SIXTEEN_BIT
169#undef EIGHT_BIT
170#endif 132#endif
171 133
172#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) 134#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
diff --git a/src/lib/libcrypto/opensslconf.h.in b/src/lib/libcrypto/opensslconf.h.in
index 1c77f03c3d..97e3745563 100644
--- a/src/lib/libcrypto/opensslconf.h.in
+++ b/src/lib/libcrypto/opensslconf.h.in
@@ -1,20 +1,5 @@
1/* crypto/opensslconf.h.in */ 1/* crypto/opensslconf.h.in */
2 2
3#ifdef OPENSSL_DOING_MAKEDEPEND
4
5/* Include any symbols here that have to be explicitly set to enable a feature
6 * that should be visible to makedepend.
7 *
8 * [Our "make depend" doesn't actually look at this, we use actual build settings
9 * instead; we want to make it easy to remove subdirectories with disabled algorithms.]
10 */
11
12#ifndef OPENSSL_FIPS
13#define OPENSSL_FIPS
14#endif
15
16#endif
17
18/* Generate 80386 code? */ 3/* Generate 80386 code? */
19#undef I386_ONLY 4#undef I386_ONLY
20 5
@@ -78,14 +63,9 @@
78/* Should we define BN_DIV2W here? */ 63/* Should we define BN_DIV2W here? */
79 64
80/* Only one for the following should be defined */ 65/* Only one for the following should be defined */
81/* The prime number generation stuff may not work when
82 * EIGHT_BIT but I don't care since I've only used this mode
83 * for debuging the bignum libraries */
84#undef SIXTY_FOUR_BIT_LONG 66#undef SIXTY_FOUR_BIT_LONG
85#undef SIXTY_FOUR_BIT 67#undef SIXTY_FOUR_BIT
86#define THIRTY_TWO_BIT 68#define THIRTY_TWO_BIT
87#undef SIXTEEN_BIT
88#undef EIGHT_BIT
89#endif 69#endif
90 70
91#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) 71#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
diff --git a/src/lib/libcrypto/pem/Makefile b/src/lib/libcrypto/pem/Makefile
index 669f36612c..2cc7801529 100644
--- a/src/lib/libcrypto/pem/Makefile
+++ b/src/lib/libcrypto/pem/Makefile
@@ -18,10 +18,10 @@ APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= pem_sign.c pem_seal.c pem_info.c pem_lib.c pem_all.c pem_err.c \ 20LIBSRC= pem_sign.c pem_seal.c pem_info.c pem_lib.c pem_all.c pem_err.c \
21 pem_x509.c pem_xaux.c pem_oth.c pem_pk8.c pem_pkey.c 21 pem_x509.c pem_xaux.c pem_oth.c pem_pk8.c pem_pkey.c pvkfmt.c
22 22
23LIBOBJ= pem_sign.o pem_seal.o pem_info.o pem_lib.o pem_all.o pem_err.o \ 23LIBOBJ= pem_sign.o pem_seal.o pem_info.o pem_lib.o pem_all.o pem_err.o \
24 pem_x509.o pem_xaux.o pem_oth.o pem_pk8.o pem_pkey.o 24 pem_x509.o pem_xaux.o pem_oth.o pem_pk8.o pem_pkey.o pvkfmt.o
25 25
26SRC= $(LIBSRC) 26SRC= $(LIBSRC)
27 27
@@ -36,7 +36,7 @@ top:
36all: lib 36all: lib
37 37
38lib: $(LIBOBJ) 38lib: $(LIBOBJ)
39 $(ARX) $(LIB) $(LIBOBJ) 39 $(AR) $(LIB) $(LIBOBJ)
40 $(RANLIB) $(LIB) || echo Never mind. 40 $(RANLIB) $(LIB) || echo Never mind.
41 @touch lib 41 @touch lib
42 42
@@ -83,39 +83,36 @@ pem_all.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
83pem_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 83pem_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
84pem_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 84pem_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
85pem_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 85pem_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
86pem_all.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 86pem_all.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
87pem_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 87pem_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
88pem_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 88pem_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
89pem_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 89pem_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
90pem_all.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 90pem_all.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
91pem_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 91pem_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
92pem_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 92pem_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
93pem_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 93pem_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
94pem_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 94pem_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_all.c
95pem_all.o: ../cryptlib.h pem_all.c
96pem_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 95pem_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
97pem_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 96pem_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
98pem_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 97pem_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
99pem_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 98pem_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
100pem_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h 99pem_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h
101pem_err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 100pem_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
102pem_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 101pem_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
103pem_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 102pem_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
104pem_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h 103pem_err.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
105pem_err.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h 104pem_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
106pem_err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 105pem_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
107pem_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 106pem_err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
108pem_err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 107pem_err.o: ../../include/openssl/x509_vfy.h pem_err.c
109pem_err.o: pem_err.c
110pem_info.o: ../../e_os.h ../../include/openssl/asn1.h 108pem_info.o: ../../e_os.h ../../include/openssl/asn1.h
111pem_info.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 109pem_info.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
112pem_info.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 110pem_info.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
113pem_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 111pem_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
114pem_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 112pem_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
115pem_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h 113pem_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h
116pem_info.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 114pem_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
117pem_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 115pem_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
118pem_info.o: ../../include/openssl/opensslconf.h
119pem_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 116pem_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
120pem_info.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 117pem_info.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
121pem_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 118pem_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
@@ -128,8 +125,8 @@ pem_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
128pem_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h 125pem_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
129pem_lib.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h 126pem_lib.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
130pem_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 127pem_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
131pem_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 128pem_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
132pem_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 129pem_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
133pem_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 130pem_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
134pem_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 131pem_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
135pem_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 132pem_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -139,43 +136,43 @@ pem_lib.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
139pem_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 136pem_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
140pem_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h 137pem_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
141pem_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h 138pem_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
142pem_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_lib.c 139pem_lib.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
140pem_lib.o: pem_lib.c
143pem_oth.o: ../../e_os.h ../../include/openssl/asn1.h 141pem_oth.o: ../../e_os.h ../../include/openssl/asn1.h
144pem_oth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 142pem_oth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
145pem_oth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 143pem_oth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
146pem_oth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 144pem_oth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
147pem_oth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 145pem_oth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
148pem_oth.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 146pem_oth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
149pem_oth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 147pem_oth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
150pem_oth.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 148pem_oth.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
151pem_oth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 149pem_oth.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
152pem_oth.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 150pem_oth.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
153pem_oth.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 151pem_oth.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
154pem_oth.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 152pem_oth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
155pem_oth.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 153pem_oth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
156pem_oth.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 154pem_oth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_oth.c
157pem_oth.o: ../cryptlib.h pem_oth.c
158pem_pk8.o: ../../e_os.h ../../include/openssl/asn1.h 155pem_pk8.o: ../../e_os.h ../../include/openssl/asn1.h
159pem_pk8.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 156pem_pk8.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
160pem_pk8.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 157pem_pk8.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
161pem_pk8.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 158pem_pk8.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
162pem_pk8.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 159pem_pk8.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
163pem_pk8.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 160pem_pk8.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
164pem_pk8.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 161pem_pk8.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
165pem_pk8.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 162pem_pk8.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
166pem_pk8.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 163pem_pk8.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
167pem_pk8.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 164pem_pk8.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h
168pem_pk8.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 165pem_pk8.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
169pem_pk8.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 166pem_pk8.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
170pem_pk8.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 167pem_pk8.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
171pem_pk8.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 168pem_pk8.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
172pem_pk8.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_pk8.c 169pem_pk8.o: ../cryptlib.h pem_pk8.c
173pem_pkey.o: ../../e_os.h ../../include/openssl/asn1.h 170pem_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
174pem_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 171pem_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
175pem_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 172pem_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
176pem_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 173pem_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
177pem_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 174pem_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
178pem_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 175pem_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
179pem_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 176pem_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
180pem_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 177pem_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
181pem_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 178pem_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -184,15 +181,16 @@ pem_pkey.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
184pem_pkey.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 181pem_pkey.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
185pem_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 182pem_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
186pem_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 183pem_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
187pem_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_pkey.c 184pem_pkey.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
185pem_pkey.o: pem_pkey.c
188pem_seal.o: ../../e_os.h ../../include/openssl/asn1.h 186pem_seal.o: ../../e_os.h ../../include/openssl/asn1.h
189pem_seal.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 187pem_seal.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
190pem_seal.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 188pem_seal.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
191pem_seal.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 189pem_seal.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
192pem_seal.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 190pem_seal.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
193pem_seal.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 191pem_seal.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
194pem_seal.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 192pem_seal.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
195pem_seal.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 193pem_seal.o: ../../include/openssl/opensslconf.h
196pem_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 194pem_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
197pem_seal.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 195pem_seal.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
198pem_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 196pem_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
@@ -205,9 +203,9 @@ pem_sign.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
205pem_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 203pem_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
206pem_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 204pem_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
207pem_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 205pem_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
208pem_sign.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 206pem_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
209pem_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 207pem_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
210pem_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 208pem_sign.o: ../../include/openssl/opensslconf.h
211pem_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 209pem_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
212pem_sign.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 210pem_sign.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
213pem_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 211pem_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
@@ -220,9 +218,9 @@ pem_x509.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
220pem_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 218pem_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
221pem_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 219pem_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
222pem_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 220pem_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
223pem_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 221pem_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
224pem_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 222pem_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
225pem_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 223pem_x509.o: ../../include/openssl/opensslconf.h
226pem_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 224pem_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
227pem_x509.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 225pem_x509.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
228pem_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 226pem_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -234,12 +232,27 @@ pem_xaux.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
234pem_xaux.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 232pem_xaux.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
235pem_xaux.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 233pem_xaux.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
236pem_xaux.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 234pem_xaux.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
237pem_xaux.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 235pem_xaux.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
238pem_xaux.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 236pem_xaux.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
239pem_xaux.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 237pem_xaux.o: ../../include/openssl/opensslconf.h
240pem_xaux.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 238pem_xaux.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
241pem_xaux.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 239pem_xaux.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
242pem_xaux.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 240pem_xaux.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
243pem_xaux.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 241pem_xaux.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
244pem_xaux.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 242pem_xaux.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
245pem_xaux.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_xaux.c 243pem_xaux.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_xaux.c
244pvkfmt.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
245pvkfmt.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
246pvkfmt.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
247pvkfmt.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
248pvkfmt.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
249pvkfmt.o: ../../include/openssl/err.h ../../include/openssl/evp.h
250pvkfmt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
251pvkfmt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
252pvkfmt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
253pvkfmt.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
254pvkfmt.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
255pvkfmt.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
256pvkfmt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
257pvkfmt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
258pvkfmt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pvkfmt.c
diff --git a/src/lib/libcrypto/perlasm/x86nasm.pl b/src/lib/libcrypto/perlasm/x86nasm.pl
index fa38f89c09..ce2bed9bb2 100644
--- a/src/lib/libcrypto/perlasm/x86nasm.pl
+++ b/src/lib/libcrypto/perlasm/x86nasm.pl
@@ -1,455 +1,166 @@
1#!/usr/local/bin/perl 1#!/usr/bin/env perl
2 2
3package x86nasm; 3package x86nasm;
4 4
5$label="L000"; 5*out=\@::out;
6$under=($main'netware)?'':'_';
7 6
8%lb=( 'eax', 'al', 7$::lbdecor="L\$"; # local label decoration
9 'ebx', 'bl', 8$nmdecor=$::netware?"":"_"; # external name decoration
10 'ecx', 'cl', 9$drdecor=$::mwerks?".":""; # directive decoration
11 'edx', 'dl',
12 'ax', 'al',
13 'bx', 'bl',
14 'cx', 'cl',
15 'dx', 'dl',
16 );
17 10
18%hb=( 'eax', 'ah', 11$initseg="";
19 'ebx', 'bh',
20 'ecx', 'ch',
21 'edx', 'dh',
22 'ax', 'ah',
23 'bx', 'bh',
24 'cx', 'ch',
25 'dx', 'dh',
26 );
27 12
28sub main'asm_init_output { @out=(); } 13sub ::generic
29sub main'asm_get_output { return(@out); } 14{ my $opcode=shift;
30sub main'get_labels { return(@labels); } 15 my $tmp;
31 16
32sub main'external_label 17 if (!$::mwerks)
33{ 18 { if ($opcode =~ m/^j/o && $#_==0) # optimize jumps
34 push(@labels,@_); 19 { $_[0] = "NEAR $_[0]"; }
35 foreach (@_) { 20 elsif ($opcode eq "lea" && $#_==1) # wipe storage qualifier from lea
36 push(@out,".") if ($main'mwerks); 21 { $_[1] =~ s/^[^\[]*\[/\[/o; }
37 push(@out, "extern\t${under}$_\n"); 22 }
38 } 23 &::emit($opcode,@_);
24 1;
39} 25}
40 26#
41sub main'LB 27# opcodes not covered by ::generic above, mostly inconsistent namings...
42 { 28#
43 (defined($lb{$_[0]})) || die "$_[0] does not have a 'low byte'\n"; 29sub ::call { &::emit("call",(&::islabel($_[0]) or "$nmdecor$_[0]")); }
44 return($lb{$_[0]}); 30sub ::call_ptr { &::emit("call",@_); }
45 } 31sub ::jmp_ptr { &::emit("jmp",@_); }
46
47sub main'HB
48 {
49 (defined($hb{$_[0]})) || die "$_[0] does not have a 'high byte'\n";
50 return($hb{$_[0]});
51 }
52
53sub main'BP
54 {
55 &get_mem("BYTE",@_);
56 }
57
58sub main'DWP
59 {
60 &get_mem("DWORD",@_);
61 }
62
63sub main'QWP
64 {
65 &get_mem("",@_);
66 }
67
68sub main'BC
69 {
70 return (($main'mwerks)?"":"BYTE ")."@_";
71 }
72
73sub main'DWC
74 {
75 return (($main'mwerks)?"":"DWORD ")."@_";
76 }
77
78sub main'stack_push
79 {
80 my($num)=@_;
81 $stack+=$num*4;
82 &main'sub("esp",$num*4);
83 }
84
85sub main'stack_pop
86 {
87 my($num)=@_;
88 $stack-=$num*4;
89 &main'add("esp",$num*4);
90 }
91 32
92sub get_mem 33sub get_mem
93 { 34{ my($size,$addr,$reg1,$reg2,$idx)=@_;
94 my($size,$addr,$reg1,$reg2,$idx)=@_; 35 my($post,$ret);
95 my($t,$post); 36
96 my($ret)=$size; 37 if ($size ne "")
97 if ($ret ne "") 38 { $ret .= "$size";
98 { 39 $ret .= " PTR" if ($::mwerks);
99 $ret .= " PTR" if ($main'mwerks); 40 $ret .= " ";
100 $ret .= " "; 41 }
101 } 42 $ret .= "[";
102 $ret .= "["; 43
103 $addr =~ s/^\s+//; 44 $addr =~ s/^\s+//;
104 if ($addr =~ /^(.+)\+(.+)$/) 45 # prepend global references with optional underscore
105 { 46 $addr =~ s/^([^\+\-0-9][^\+\-]*)/::islabel($1) or "$nmdecor$1"/ige;
106 $reg2=&conv($1); 47 # put address arithmetic expression in parenthesis
107 $addr="$under$2"; 48 $addr="($addr)" if ($addr =~ /^.+[\-\+].+$/);
108 } 49
109 elsif ($addr =~ /^[_a-z][_a-z0-9]*$/i) 50 if (($addr ne "") && ($addr ne 0))
110 { 51 { if ($addr !~ /^-/) { $ret .= "$addr+"; }
111 $addr="$under$addr"; 52 else { $post=$addr; }
112 } 53 }
113 54
114 if ($addr =~ /^.+\-.+$/) { $addr="($addr)"; } 55 if ($reg2 ne "")
115 56 { $idx!=0 or $idx=1;
116 $reg1="$regs{$reg1}" if defined($regs{$reg1}); 57 $ret .= "$reg2*$idx";
117 $reg2="$regs{$reg2}" if defined($regs{$reg2}); 58 $ret .= "+$reg1" if ($reg1 ne "");
118 if (($addr ne "") && ($addr ne 0)) 59 }
119 { 60 else
120 if ($addr !~ /^-/) 61 { $ret .= "$reg1"; }
121 { $ret.="${addr}+"; } 62
122 else { $post=$addr; } 63 $ret .= "$post]";
123 } 64 $ret =~ s/\+\]/]/; # in case $addr was the only argument
124 if ($reg2 ne "") 65
125 { 66 $ret;
126 $t=""; 67}
127 $t="*$idx" if ($idx != 0); 68sub ::BP { &get_mem("BYTE",@_); }
128 $reg1="+".$reg1 if ("$reg1$post" ne ""); 69sub ::DWP { &get_mem("DWORD",@_); }
129 $ret.="$reg2$t$reg1$post]"; 70sub ::QWP { &get_mem("",@_); }
130 } 71sub ::BC { (($::mwerks)?"":"BYTE ")."@_"; }
131 else 72sub ::DWC { (($::mwerks)?"":"DWORD ")."@_"; }
132 { 73
133 $ret.="$reg1$post]" 74sub ::file
134 } 75{ if ($::mwerks) { push(@out,".section\t.text,64\n"); }
135 $ret =~ s/\+\]/]/; # in case $addr was the only argument 76 else
136 return($ret); 77 { my $tmp=<<___;
137 } 78%ifidn __OUTPUT_FORMAT__,obj
138 79section code use32 class=code align=64
139sub main'mov { &out2("mov",@_); } 80%elifidn __OUTPUT_FORMAT__,win32
140sub main'movb { &out2("mov",@_); } 81\$\@feat.00 equ 1
141sub main'and { &out2("and",@_); } 82section .text code align=64
142sub main'or { &out2("or",@_); }
143sub main'shl { &out2("shl",@_); }
144sub main'shr { &out2("shr",@_); }
145sub main'xor { &out2("xor",@_); }
146sub main'xorb { &out2("xor",@_); }
147sub main'add { &out2("add",@_); }
148sub main'adc { &out2("adc",@_); }
149sub main'sub { &out2("sub",@_); }
150sub main'sbb { &out2("sbb",@_); }
151sub main'rotl { &out2("rol",@_); }
152sub main'rotr { &out2("ror",@_); }
153sub main'exch { &out2("xchg",@_); }
154sub main'cmp { &out2("cmp",@_); }
155sub main'lea { &out2("lea",@_); }
156sub main'mul { &out1("mul",@_); }
157sub main'imul { &out2("imul",@_); }
158sub main'div { &out1("div",@_); }
159sub main'dec { &out1("dec",@_); }
160sub main'inc { &out1("inc",@_); }
161sub main'jmp { &out1("jmp",@_); }
162sub main'jmp_ptr { &out1p("jmp",@_); }
163
164# This is a bit of a kludge: declare all branches as NEAR.
165$near=($main'mwerks)?'':'NEAR';
166sub main'je { &out1("je $near",@_); }
167sub main'jle { &out1("jle $near",@_); }
168sub main'jz { &out1("jz $near",@_); }
169sub main'jge { &out1("jge $near",@_); }
170sub main'jl { &out1("jl $near",@_); }
171sub main'ja { &out1("ja $near",@_); }
172sub main'jae { &out1("jae $near",@_); }
173sub main'jb { &out1("jb $near",@_); }
174sub main'jbe { &out1("jbe $near",@_); }
175sub main'jc { &out1("jc $near",@_); }
176sub main'jnc { &out1("jnc $near",@_); }
177sub main'jnz { &out1("jnz $near",@_); }
178sub main'jne { &out1("jne $near",@_); }
179sub main'jno { &out1("jno $near",@_); }
180
181sub main'push { &out1("push",@_); $stack+=4; }
182sub main'pop { &out1("pop",@_); $stack-=4; }
183sub main'pushf { &out0("pushfd"); $stack+=4; }
184sub main'popf { &out0("popfd"); $stack-=4; }
185sub main'bswap { &out1("bswap",@_); &using486(); }
186sub main'not { &out1("not",@_); }
187sub main'call { &out1("call",($_[0]=~/^\@L/?'':$under).$_[0]); }
188sub main'call_ptr { &out1p("call",@_); }
189sub main'ret { &out0("ret"); }
190sub main'nop { &out0("nop"); }
191sub main'test { &out2("test",@_); }
192sub main'bt { &out2("bt",@_); }
193sub main'leave { &out0("leave"); }
194sub main'cpuid { &out0("cpuid"); }
195sub main'rdtsc { &out0("rdtsc"); }
196sub main'halt { &out0("hlt"); }
197sub main'movz { &out2("movzx",@_); }
198sub main'neg { &out1("neg",@_); }
199sub main'cld { &out0("cld"); }
200
201# SSE2
202sub main'emms { &out0("emms"); }
203sub main'movd { &out2("movd",@_); }
204sub main'movq { &out2("movq",@_); }
205sub main'movdqu { &out2("movdqu",@_); }
206sub main'movdqa { &out2("movdqa",@_); }
207sub main'movdq2q{ &out2("movdq2q",@_); }
208sub main'movq2dq{ &out2("movq2dq",@_); }
209sub main'paddq { &out2("paddq",@_); }
210sub main'pmuludq{ &out2("pmuludq",@_); }
211sub main'psrlq { &out2("psrlq",@_); }
212sub main'psllq { &out2("psllq",@_); }
213sub main'pxor { &out2("pxor",@_); }
214sub main'por { &out2("por",@_); }
215sub main'pand { &out2("pand",@_); }
216
217sub out2
218 {
219 my($name,$p1,$p2)=@_;
220 my($l,$t);
221
222 push(@out,"\t$name\t");
223 if (!$main'mwerks and $name eq "lea")
224 {
225 $p1 =~ s/^[^\[]*\[/\[/;
226 $p2 =~ s/^[^\[]*\[/\[/;
227 }
228 $t=&conv($p1).",";
229 $l=length($t);
230 push(@out,$t);
231 $l=4-($l+9)/8;
232 push(@out,"\t" x $l);
233 push(@out,&conv($p2));
234 push(@out,"\n");
235 }
236
237sub out0
238 {
239 my($name)=@_;
240
241 push(@out,"\t$name\n");
242 }
243
244sub out1
245 {
246 my($name,$p1)=@_;
247 my($l,$t);
248 push(@out,"\t$name\t".&conv($p1)."\n");
249 }
250
251sub conv
252 {
253 my($p)=@_;
254 $p =~ s/0x([0-9A-Fa-f]+)/0$1h/;
255 return $p;
256 }
257
258sub using486
259 {
260 return if $using486;
261 $using486++;
262 grep(s/\.386/\.486/,@out);
263 }
264
265sub main'file
266 {
267 if ($main'mwerks) { push(@out,".section\t.text\n"); }
268 else {
269 local $tmp=<<___;
270%ifdef __omf__
271section code use32 class=code
272%else 83%else
273section .text 84section .text code
274%endif 85%endif
275___ 86___
276 push(@out,$tmp);
277 }
278 }
279
280sub main'function_begin
281 {
282 my($func,$extra)=@_;
283
284 push(@labels,$func);
285 push(@out,".") if ($main'mwerks);
286 my($tmp)=<<"EOF";
287global $under$func
288$under$func:
289 push ebp
290 push ebx
291 push esi
292 push edi
293EOF
294 push(@out,$tmp);
295 $stack=20;
296 }
297
298sub main'function_begin_B
299 {
300 my($func,$extra)=@_;
301 push(@out,".") if ($main'mwerks);
302 my($tmp)=<<"EOF";
303global $under$func
304$under$func:
305EOF
306 push(@out,$tmp);
307 $stack=4;
308 }
309
310sub main'function_end
311 {
312 my($func)=@_;
313
314 my($tmp)=<<"EOF";
315 pop edi
316 pop esi
317 pop ebx
318 pop ebp
319 ret
320EOF
321 push(@out,$tmp); 87 push(@out,$tmp);
322 $stack=0; 88 }
323 %label=(); 89}
324 }
325
326sub main'function_end_B
327 {
328 $stack=0;
329 %label=();
330 }
331
332sub main'function_end_A
333 {
334 my($func)=@_;
335
336 my($tmp)=<<"EOF";
337 pop edi
338 pop esi
339 pop ebx
340 pop ebp
341 ret
342EOF
343 push(@out,$tmp);
344 }
345
346sub main'file_end
347 {
348 }
349
350sub main'wparam
351 {
352 my($num)=@_;
353
354 return(&main'DWP($stack+$num*4,"esp","",0));
355 }
356 90
357sub main'swtmp 91sub ::function_begin_B
358 { 92{ my $func=shift;
359 return(&main'DWP($_[0]*4,"esp","",0)); 93 my $global=($func !~ /^_/);
360 } 94 my $begin="${::lbdecor}_${func}_begin";
361 95
362# Should use swtmp, which is above esp. Linix can trash the stack above esp 96 $begin =~ s/^\@/./ if ($::mwerks); # the torture never stops
363#sub main'wtmp
364# {
365# my($num)=@_;
366#
367# return(&main'DWP(-(($num+1)*4),"esp","",0));
368# }
369 97
370sub main'comment 98 &::LABEL($func,$global?"$begin":"$nmdecor$func");
371 { 99 $func=$nmdecor.$func;
372 foreach (@_)
373 {
374 push(@out,"\t; $_\n");
375 }
376 }
377 100
378sub main'public_label 101 push(@out,"${drdecor}global $func\n") if ($global);
379 { 102 push(@out,"${drdecor}align 16\n");
380 $label{$_[0]}="${under}${_[0]}" if (!defined($label{$_[0]})); 103 push(@out,"$func:\n");
381 push(@out,".") if ($main'mwerks); 104 push(@out,"$begin:\n") if ($global);
382 push(@out,"global\t$label{$_[0]}\n"); 105 $::stack=4;
383 } 106}
384 107
385sub main'label 108sub ::function_end_B
386 { 109{ $::stack=0;
387 if (!defined($label{$_[0]})) 110 &::wipe_labels();
388 { 111}
389 $label{$_[0]}="\@${label}${_[0]}";
390 $label++;
391 }
392 return($label{$_[0]});
393 }
394 112
395sub main'set_label 113sub ::file_end
396 { 114{ if (grep {/\b${nmdecor}OPENSSL_ia32cap_P\b/i} @out)
397 if (!defined($label{$_[0]})) 115 { my $comm=<<___;
398 { 116${drdecor}segment .bss
399 $label{$_[0]}="\@${label}${_[0]}"; 117${drdecor}common ${nmdecor}OPENSSL_ia32cap_P 4
400 $label++; 118___
401 } 119 # comment out OPENSSL_ia32cap_P declarations
402 if ($_[1]!=0 && $_[1]>1) 120 grep {s/(^extern\s+${nmdecor}OPENSSL_ia32cap_P)/\;$1/} @out;
403 { 121 push (@out,$comm)
404 main'align($_[1]); 122 }
405 } 123 push (@out,$initseg) if ($initseg);
406 push(@out,"$label{$_[0]}:\n"); 124}
407 }
408 125
409sub main'data_byte 126sub ::comment { foreach (@_) { push(@out,"\t; $_\n"); } }
410 {
411 push(@out,(($main'mwerks)?".byte\t":"DB\t").join(',',@_)."\n");
412 }
413 127
414sub main'data_word 128sub ::external_label
415 { 129{ foreach(@_)
416 push(@out,(($main'mwerks)?".long\t":"DD\t").join(',',@_)."\n"); 130 { push(@out,"${drdecor}extern\t".&::LABEL($_,$nmdecor.$_)."\n"); }
417 } 131}
418 132
419sub main'align 133sub ::public_label
420 { 134{ push(@out,"${drdecor}global\t".&::LABEL($_[0],$nmdecor.$_[0])."\n"); }
421 push(@out,".") if ($main'mwerks);
422 push(@out,"align\t$_[0]\n");
423 }
424 135
425sub out1p 136sub ::data_byte
426 { 137{ push(@out,(($::mwerks)?".byte\t":"db\t").join(',',@_)."\n"); }
427 my($name,$p1)=@_;
428 my($l,$t);
429 138
430 push(@out,"\t$name\t".&conv($p1)."\n"); 139sub ::data_word
431 } 140{ push(@out,(($::mwerks)?".long\t":"dd\t").join(',',@_)."\n"); }
432 141
433sub main'picmeup 142sub ::align
434 { 143{ push(@out,"${drdecor}align\t$_[0]\n"); }
435 local($dst,$sym)=@_;
436 &main'lea($dst,&main'DWP($sym));
437 }
438 144
439sub main'blindpop { &out1("pop",@_); } 145sub ::picmeup
146{ my($dst,$sym)=@_;
147 &::lea($dst,&::DWP($sym));
148}
440 149
441sub main'initseg 150sub ::initseg
442 { 151{ my $f=$nmdecor.shift;
443 local($f)=@_; 152 if ($::win32)
444 if ($main'win32) 153 { $initseg=<<___;
445 { 154segment .CRT\$XCU data align=4
446 local($tmp)=<<___; 155extern $f
447segment .CRT\$XCU data 156dd $f
448extern $under$f
449DD $under$f
450___ 157___
451 push(@out,$tmp); 158 }
452 } 159}
453 } 160
161sub ::dataseg
162{ if ($mwerks) { push(@out,".section\t.data,4\n"); }
163 else { push(@out,"section\t.data align=4\n"); }
164}
454 165
4551; 1661;
diff --git a/src/lib/libcrypto/pkcs12/Makefile b/src/lib/libcrypto/pkcs12/Makefile
index eed226b30d..3a7498fe7a 100644
--- a/src/lib/libcrypto/pkcs12/Makefile
+++ b/src/lib/libcrypto/pkcs12/Makefile
@@ -39,7 +39,7 @@ test:
39all: lib 39all: lib
40 40
41lib: $(LIBOBJ) 41lib: $(LIBOBJ)
42 $(ARX) $(LIB) $(LIBOBJ) 42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind. 43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib 44 @touch lib
45 45
@@ -85,37 +85,36 @@ p12_add.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
85p12_add.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 85p12_add.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
86p12_add.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 86p12_add.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
87p12_add.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 87p12_add.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
88p12_add.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 88p12_add.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
89p12_add.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 89p12_add.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
90p12_add.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 90p12_add.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
91p12_add.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 91p12_add.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
92p12_add.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 92p12_add.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
93p12_add.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 93p12_add.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
94p12_add.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 94p12_add.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
95p12_add.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 95p12_add.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_add.c
96p12_add.o: ../cryptlib.h p12_add.c
97p12_asn.o: ../../e_os.h ../../include/openssl/asn1.h 96p12_asn.o: ../../e_os.h ../../include/openssl/asn1.h
98p12_asn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 97p12_asn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
99p12_asn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 98p12_asn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
100p12_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 99p12_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
101p12_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 100p12_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
102p12_asn.o: ../../include/openssl/err.h ../../include/openssl/evp.h 101p12_asn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
103p12_asn.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 102p12_asn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
104p12_asn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 103p12_asn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
105p12_asn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 104p12_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
106p12_asn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h 105p12_asn.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
107p12_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 106p12_asn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
108p12_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 107p12_asn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
109p12_asn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 108p12_asn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
110p12_asn.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_asn.c 109p12_asn.o: ../cryptlib.h p12_asn.c
111p12_attr.o: ../../e_os.h ../../include/openssl/asn1.h 110p12_attr.o: ../../e_os.h ../../include/openssl/asn1.h
112p12_attr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 111p12_attr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
113p12_attr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 112p12_attr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
114p12_attr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 113p12_attr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
115p12_attr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 114p12_attr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
116p12_attr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 115p12_attr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
117p12_attr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 116p12_attr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
118p12_attr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 117p12_attr.o: ../../include/openssl/opensslconf.h
119p12_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 118p12_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
120p12_attr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 119p12_attr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
121p12_attr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 120p12_attr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -127,9 +126,9 @@ p12_crpt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
127p12_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 126p12_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
128p12_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 127p12_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
129p12_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 128p12_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
130p12_crpt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 129p12_crpt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
131p12_crpt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 130p12_crpt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
132p12_crpt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 131p12_crpt.o: ../../include/openssl/opensslconf.h
133p12_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 132p12_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
134p12_crpt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 133p12_crpt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
135p12_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 134p12_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -141,23 +140,22 @@ p12_crt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
141p12_crt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 140p12_crt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
142p12_crt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 141p12_crt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
143p12_crt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 142p12_crt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
144p12_crt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 143p12_crt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
145p12_crt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 144p12_crt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
146p12_crt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 145p12_crt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
147p12_crt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 146p12_crt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
148p12_crt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 147p12_crt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
149p12_crt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 148p12_crt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
150p12_crt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 149p12_crt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
151p12_crt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 150p12_crt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_crt.c
152p12_crt.o: ../cryptlib.h p12_crt.c
153p12_decr.o: ../../e_os.h ../../include/openssl/asn1.h 151p12_decr.o: ../../e_os.h ../../include/openssl/asn1.h
154p12_decr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 152p12_decr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
155p12_decr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 153p12_decr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
156p12_decr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 154p12_decr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
157p12_decr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 155p12_decr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
158p12_decr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 156p12_decr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
159p12_decr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 157p12_decr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
160p12_decr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 158p12_decr.o: ../../include/openssl/opensslconf.h
161p12_decr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 159p12_decr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
162p12_decr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 160p12_decr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
163p12_decr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 161p12_decr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -169,9 +167,9 @@ p12_init.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
169p12_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 167p12_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
170p12_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 168p12_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
171p12_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 169p12_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
172p12_init.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 170p12_init.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
173p12_init.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 171p12_init.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
174p12_init.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 172p12_init.o: ../../include/openssl/opensslconf.h
175p12_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 173p12_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
176p12_init.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 174p12_init.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
177p12_init.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 175p12_init.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -184,22 +182,22 @@ p12_key.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
184p12_key.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 182p12_key.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
185p12_key.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 183p12_key.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
186p12_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h 184p12_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h
187p12_key.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 185p12_key.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
188p12_key.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 186p12_key.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
189p12_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 187p12_key.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
190p12_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h 188p12_key.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
191p12_key.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 189p12_key.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
192p12_key.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 190p12_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
193p12_key.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 191p12_key.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
194p12_key.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_key.c 192p12_key.o: ../cryptlib.h p12_key.c
195p12_kiss.o: ../../e_os.h ../../include/openssl/asn1.h 193p12_kiss.o: ../../e_os.h ../../include/openssl/asn1.h
196p12_kiss.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 194p12_kiss.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
197p12_kiss.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 195p12_kiss.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
198p12_kiss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 196p12_kiss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
199p12_kiss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 197p12_kiss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
200p12_kiss.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 198p12_kiss.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
201p12_kiss.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 199p12_kiss.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
202p12_kiss.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 200p12_kiss.o: ../../include/openssl/opensslconf.h
203p12_kiss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 201p12_kiss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
204p12_kiss.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 202p12_kiss.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
205p12_kiss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 203p12_kiss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -211,10 +209,9 @@ p12_mutl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
211p12_mutl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 209p12_mutl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
212p12_mutl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 210p12_mutl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
213p12_mutl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 211p12_mutl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
214p12_mutl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 212p12_mutl.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h
215p12_mutl.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h 213p12_mutl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
216p12_mutl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 214p12_mutl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
217p12_mutl.o: ../../include/openssl/opensslconf.h
218p12_mutl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 215p12_mutl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
219p12_mutl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 216p12_mutl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
220p12_mutl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 217p12_mutl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
@@ -226,9 +223,8 @@ p12_npas.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
226p12_npas.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 223p12_npas.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
227p12_npas.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 224p12_npas.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
228p12_npas.o: ../../include/openssl/err.h ../../include/openssl/evp.h 225p12_npas.o: ../../include/openssl/err.h ../../include/openssl/evp.h
229p12_npas.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 226p12_npas.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
230p12_npas.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 227p12_npas.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
231p12_npas.o: ../../include/openssl/opensslconf.h
232p12_npas.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 228p12_npas.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
233p12_npas.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 229p12_npas.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
234p12_npas.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 230p12_npas.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
@@ -241,53 +237,50 @@ p12_p8d.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
241p12_p8d.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 237p12_p8d.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
242p12_p8d.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 238p12_p8d.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
243p12_p8d.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 239p12_p8d.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
244p12_p8d.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 240p12_p8d.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
245p12_p8d.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 241p12_p8d.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
246p12_p8d.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 242p12_p8d.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
247p12_p8d.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 243p12_p8d.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
248p12_p8d.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 244p12_p8d.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
249p12_p8d.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 245p12_p8d.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
250p12_p8d.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 246p12_p8d.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
251p12_p8d.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 247p12_p8d.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_p8d.c
252p12_p8d.o: ../cryptlib.h p12_p8d.c
253p12_p8e.o: ../../e_os.h ../../include/openssl/asn1.h 248p12_p8e.o: ../../e_os.h ../../include/openssl/asn1.h
254p12_p8e.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 249p12_p8e.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
255p12_p8e.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 250p12_p8e.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
256p12_p8e.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 251p12_p8e.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
257p12_p8e.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 252p12_p8e.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
258p12_p8e.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 253p12_p8e.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
259p12_p8e.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 254p12_p8e.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
260p12_p8e.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 255p12_p8e.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
261p12_p8e.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 256p12_p8e.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
262p12_p8e.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 257p12_p8e.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
263p12_p8e.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 258p12_p8e.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
264p12_p8e.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 259p12_p8e.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
265p12_p8e.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 260p12_p8e.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_p8e.c
266p12_p8e.o: ../cryptlib.h p12_p8e.c
267p12_utl.o: ../../e_os.h ../../include/openssl/asn1.h 261p12_utl.o: ../../e_os.h ../../include/openssl/asn1.h
268p12_utl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 262p12_utl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
269p12_utl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 263p12_utl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
270p12_utl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 264p12_utl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
271p12_utl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 265p12_utl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
272p12_utl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 266p12_utl.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
273p12_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 267p12_utl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
274p12_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 268p12_utl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
275p12_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 269p12_utl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
276p12_utl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 270p12_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
277p12_utl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 271p12_utl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
278p12_utl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 272p12_utl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
279p12_utl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 273p12_utl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_utl.c
280p12_utl.o: ../cryptlib.h p12_utl.c
281pk12err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 274pk12err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
282pk12err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 275pk12err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
283pk12err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 276pk12err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
284pk12err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 277pk12err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
285pk12err.o: ../../include/openssl/err.h ../../include/openssl/evp.h 278pk12err.o: ../../include/openssl/err.h ../../include/openssl/evp.h
286pk12err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 279pk12err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
287pk12err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 280pk12err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
288pk12err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 281pk12err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
289pk12err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h 282pk12err.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
290pk12err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 283pk12err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
291pk12err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 284pk12err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
292pk12err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 285pk12err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
293pk12err.o: ../../include/openssl/x509_vfy.h pk12err.c 286pk12err.o: pk12err.c
diff --git a/src/lib/libcrypto/pkcs7/Makefile b/src/lib/libcrypto/pkcs7/Makefile
index 790d8edf36..56dc6823d1 100644
--- a/src/lib/libcrypto/pkcs7/Makefile
+++ b/src/lib/libcrypto/pkcs7/Makefile
@@ -21,9 +21,9 @@ APPS=
21 21
22LIB=$(TOP)/libcrypto.a 22LIB=$(TOP)/libcrypto.a
23LIBSRC= pk7_asn1.c pk7_lib.c pkcs7err.c pk7_doit.c pk7_smime.c pk7_attr.c \ 23LIBSRC= pk7_asn1.c pk7_lib.c pkcs7err.c pk7_doit.c pk7_smime.c pk7_attr.c \
24 pk7_mime.c 24 pk7_mime.c bio_pk7.c
25LIBOBJ= pk7_asn1.o pk7_lib.o pkcs7err.o pk7_doit.o pk7_smime.o pk7_attr.o \ 25LIBOBJ= pk7_asn1.o pk7_lib.o pkcs7err.o pk7_doit.o pk7_smime.o pk7_attr.o \
26 pk7_mime.o 26 pk7_mime.o bio_pk7.o
27 27
28SRC= $(LIBSRC) 28SRC= $(LIBSRC)
29 29
@@ -54,7 +54,7 @@ verify: verify.o example.o lib
54 $(CC) $(CFLAGS) -o verify verify.o $(PEX_LIBS) example.o $(LIB) $(EX_LIBS) 54 $(CC) $(CFLAGS) -o verify verify.o $(PEX_LIBS) example.o $(LIB) $(EX_LIBS)
55 55
56lib: $(LIBOBJ) 56lib: $(LIBOBJ)
57 $(ARX) $(LIB) $(LIBOBJ) 57 $(AR) $(LIB) $(LIBOBJ)
58 $(RANLIB) $(LIB) || echo Never mind. 58 $(RANLIB) $(LIB) || echo Never mind.
59 @touch lib 59 @touch lib
60 60
@@ -95,26 +95,31 @@ clean:
95 95
96# DO NOT DELETE THIS LINE -- make depend depends on it. 96# DO NOT DELETE THIS LINE -- make depend depends on it.
97 97
98bio_pk7.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
99bio_pk7.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
100bio_pk7.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
101bio_pk7.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
102bio_pk7.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
103bio_pk7.o: ../../include/openssl/symhacks.h bio_pk7.c
98pk7_asn1.o: ../../e_os.h ../../include/openssl/asn1.h 104pk7_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
99pk7_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 105pk7_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
100pk7_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 106pk7_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
101pk7_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 107pk7_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
102pk7_asn1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 108pk7_asn1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
103pk7_asn1.o: ../../include/openssl/err.h ../../include/openssl/evp.h 109pk7_asn1.o: ../../include/openssl/err.h ../../include/openssl/evp.h
104pk7_asn1.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 110pk7_asn1.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
105pk7_asn1.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 111pk7_asn1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
106pk7_asn1.o: ../../include/openssl/opensslconf.h
107pk7_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 112pk7_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
108pk7_asn1.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 113pk7_asn1.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
109pk7_asn1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 114pk7_asn1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
110pk7_asn1.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 115pk7_asn1.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
111pk7_asn1.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pk7_asn1.c 116pk7_asn1.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pk7_asn1.c
112pk7_attr.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 117pk7_attr.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
113pk7_attr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 118pk7_attr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
114pk7_attr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 119pk7_attr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
115pk7_attr.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 120pk7_attr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
116pk7_attr.o: ../../include/openssl/err.h ../../include/openssl/evp.h 121pk7_attr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
117pk7_attr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 122pk7_attr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
118pk7_attr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 123pk7_attr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
119pk7_attr.o: ../../include/openssl/opensslconf.h 124pk7_attr.o: ../../include/openssl/opensslconf.h
120pk7_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 125pk7_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -129,9 +134,8 @@ pk7_doit.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
129pk7_doit.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 134pk7_doit.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
130pk7_doit.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 135pk7_doit.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
131pk7_doit.o: ../../include/openssl/err.h ../../include/openssl/evp.h 136pk7_doit.o: ../../include/openssl/err.h ../../include/openssl/evp.h
132pk7_doit.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 137pk7_doit.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
133pk7_doit.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 138pk7_doit.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
134pk7_doit.o: ../../include/openssl/opensslconf.h
135pk7_doit.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 139pk7_doit.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
136pk7_doit.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 140pk7_doit.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
137pk7_doit.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 141pk7_doit.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -143,22 +147,22 @@ pk7_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
143pk7_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 147pk7_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
144pk7_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 148pk7_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
145pk7_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 149pk7_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
146pk7_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 150pk7_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
147pk7_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 151pk7_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
148pk7_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 152pk7_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
149pk7_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 153pk7_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
150pk7_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 154pk7_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
151pk7_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 155pk7_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
152pk7_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 156pk7_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
153pk7_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pk7_lib.c 157pk7_lib.o: ../asn1/asn1_locl.h ../cryptlib.h pk7_lib.c
154pk7_mime.o: ../../e_os.h ../../include/openssl/asn1.h 158pk7_mime.o: ../../e_os.h ../../include/openssl/asn1.h
155pk7_mime.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 159pk7_mime.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
156pk7_mime.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 160pk7_mime.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
157pk7_mime.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 161pk7_mime.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
158pk7_mime.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 162pk7_mime.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
159pk7_mime.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 163pk7_mime.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
160pk7_mime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 164pk7_mime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
161pk7_mime.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 165pk7_mime.o: ../../include/openssl/opensslconf.h
162pk7_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 166pk7_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
163pk7_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 167pk7_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
164pk7_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 168pk7_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -171,8 +175,8 @@ pk7_smime.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
171pk7_smime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 175pk7_smime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
172pk7_smime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 176pk7_smime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
173pk7_smime.o: ../../include/openssl/err.h ../../include/openssl/evp.h 177pk7_smime.o: ../../include/openssl/err.h ../../include/openssl/evp.h
174pk7_smime.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 178pk7_smime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
175pk7_smime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 179pk7_smime.o: ../../include/openssl/objects.h
176pk7_smime.o: ../../include/openssl/opensslconf.h 180pk7_smime.o: ../../include/openssl/opensslconf.h
177pk7_smime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 181pk7_smime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
178pk7_smime.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 182pk7_smime.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
diff --git a/src/lib/libcrypto/rand/Makefile b/src/lib/libcrypto/rand/Makefile
index 30794305cb..27694aa664 100644
--- a/src/lib/libcrypto/rand/Makefile
+++ b/src/lib/libcrypto/rand/Makefile
@@ -17,9 +17,9 @@ TEST= randtest.c
17APPS= 17APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC=md_rand.c randfile.c rand_lib.c rand_eng.c rand_err.c rand_egd.c \ 20LIBSRC=md_rand.c randfile.c rand_lib.c rand_err.c rand_egd.c \
21 rand_win.c rand_unix.c rand_os2.c rand_nw.c 21 rand_win.c rand_unix.c rand_os2.c rand_nw.c
22LIBOBJ=md_rand.o randfile.o rand_lib.o rand_eng.o rand_err.o rand_egd.o \ 22LIBOBJ=md_rand.o randfile.o rand_lib.o rand_err.o rand_egd.o \
23 rand_win.o rand_unix.o rand_os2.o rand_nw.o 23 rand_win.o rand_unix.o rand_os2.o rand_nw.o
24 24
25SRC= $(LIBSRC) 25SRC= $(LIBSRC)
@@ -35,7 +35,7 @@ top:
35all: lib 35all: lib
36 36
37lib: $(LIBOBJ) 37lib: $(LIBOBJ)
38 $(ARX) $(LIB) $(LIBOBJ) 38 $(AR) $(LIB) $(LIBOBJ)
39 $(RANLIB) $(LIB) || echo Never mind. 39 $(RANLIB) $(LIB) || echo Never mind.
40 @touch lib 40 @touch lib
41 41
@@ -79,34 +79,17 @@ clean:
79md_rand.o: ../../e_os.h ../../include/openssl/asn1.h 79md_rand.o: ../../e_os.h ../../include/openssl/asn1.h
80md_rand.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 80md_rand.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
81md_rand.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 81md_rand.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
82md_rand.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 82md_rand.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
83md_rand.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 83md_rand.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
84md_rand.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 84md_rand.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
85md_rand.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 85md_rand.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
86md_rand.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 86md_rand.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
87md_rand.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 87md_rand.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
88md_rand.o: ../../include/openssl/symhacks.h md_rand.c rand_lcl.h 88md_rand.o: md_rand.c rand_lcl.h
89rand_egd.o: ../../include/openssl/buffer.h ../../include/openssl/e_os2.h 89rand_egd.o: ../../include/openssl/buffer.h ../../include/openssl/e_os2.h
90rand_egd.o: ../../include/openssl/opensslconf.h 90rand_egd.o: ../../include/openssl/opensslconf.h
91rand_egd.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h 91rand_egd.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
92rand_egd.o: rand_egd.c 92rand_egd.o: rand_egd.c
93rand_eng.o: ../../e_os.h ../../include/openssl/asn1.h
94rand_eng.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
95rand_eng.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
96rand_eng.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
97rand_eng.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
98rand_eng.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
99rand_eng.o: ../../include/openssl/err.h ../../include/openssl/evp.h
100rand_eng.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h
101rand_eng.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
102rand_eng.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
103rand_eng.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
104rand_eng.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
105rand_eng.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
106rand_eng.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
107rand_eng.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
108rand_eng.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
109rand_eng.o: ../cryptlib.h rand_eng.c rand_lcl.h
110rand_err.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 93rand_err.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
111rand_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 94rand_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
112rand_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h 95rand_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
@@ -116,39 +99,34 @@ rand_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
116rand_err.o: rand_err.c 99rand_err.o: rand_err.c
117rand_lib.o: ../../e_os.h ../../include/openssl/asn1.h 100rand_lib.o: ../../e_os.h ../../include/openssl/asn1.h
118rand_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 101rand_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
119rand_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h 102rand_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
120rand_lib.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
121rand_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 103rand_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
122rand_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 104rand_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
123rand_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 105rand_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
124rand_lib.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h
125rand_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 106rand_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
126rand_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 107rand_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
127rand_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 108rand_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
128rand_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 109rand_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
129rand_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 110rand_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
130rand_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 111rand_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
131rand_lib.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
132rand_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 112rand_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
133rand_lib.o: ../cryptlib.h rand_lcl.h rand_lib.c 113rand_lib.o: ../cryptlib.h rand_lib.c
134rand_nw.o: ../../e_os.h ../../include/openssl/asn1.h 114rand_nw.o: ../../e_os.h ../../include/openssl/asn1.h
135rand_nw.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 115rand_nw.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
136rand_nw.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 116rand_nw.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
137rand_nw.o: ../../include/openssl/err.h ../../include/openssl/evp.h 117rand_nw.o: ../../include/openssl/err.h ../../include/openssl/evp.h
138rand_nw.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 118rand_nw.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
139rand_nw.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 119rand_nw.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
140rand_nw.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 120rand_nw.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
141rand_nw.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h 121rand_nw.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
142rand_nw.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 122rand_nw.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
143rand_nw.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 123rand_nw.o: ../../include/openssl/symhacks.h ../cryptlib.h rand_lcl.h rand_nw.c
144rand_nw.o: ../cryptlib.h rand_lcl.h rand_nw.c
145rand_os2.o: ../../e_os.h ../../include/openssl/asn1.h 124rand_os2.o: ../../e_os.h ../../include/openssl/asn1.h
146rand_os2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 125rand_os2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
147rand_os2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 126rand_os2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
148rand_os2.o: ../../include/openssl/err.h ../../include/openssl/evp.h 127rand_os2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
149rand_os2.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 128rand_os2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
150rand_os2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 129rand_os2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
151rand_os2.o: ../../include/openssl/opensslconf.h
152rand_os2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 130rand_os2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
153rand_os2.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 131rand_os2.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
154rand_os2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 132rand_os2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -158,8 +136,8 @@ rand_unix.o: ../../e_os.h ../../include/openssl/asn1.h
158rand_unix.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 136rand_unix.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
159rand_unix.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 137rand_unix.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
160rand_unix.o: ../../include/openssl/err.h ../../include/openssl/evp.h 138rand_unix.o: ../../include/openssl/err.h ../../include/openssl/evp.h
161rand_unix.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 139rand_unix.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
162rand_unix.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 140rand_unix.o: ../../include/openssl/objects.h
163rand_unix.o: ../../include/openssl/opensslconf.h 141rand_unix.o: ../../include/openssl/opensslconf.h
164rand_unix.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 142rand_unix.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
165rand_unix.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 143rand_unix.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
@@ -170,9 +148,8 @@ rand_win.o: ../../e_os.h ../../include/openssl/asn1.h
170rand_win.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 148rand_win.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
171rand_win.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 149rand_win.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
172rand_win.o: ../../include/openssl/err.h ../../include/openssl/evp.h 150rand_win.o: ../../include/openssl/err.h ../../include/openssl/evp.h
173rand_win.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 151rand_win.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
174rand_win.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 152rand_win.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
175rand_win.o: ../../include/openssl/opensslconf.h
176rand_win.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 153rand_win.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
177rand_win.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 154rand_win.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
178rand_win.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 155rand_win.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
diff --git a/src/lib/libcrypto/rand/md_rand.c b/src/lib/libcrypto/rand/md_rand.c
index 0f8dd3e00f..88088ce73c 100644
--- a/src/lib/libcrypto/rand/md_rand.c
+++ b/src/lib/libcrypto/rand/md_rand.c
@@ -126,10 +126,6 @@
126 126
127#include <openssl/crypto.h> 127#include <openssl/crypto.h>
128#include <openssl/err.h> 128#include <openssl/err.h>
129#ifdef OPENSSL_FIPS
130#include <openssl/fips.h>
131#endif
132
133 129
134#ifdef BN_DEBUG 130#ifdef BN_DEBUG
135# define PREDICT 131# define PREDICT
@@ -149,7 +145,7 @@ static unsigned int crypto_lock_rand = 0; /* may be set only when a thread
149 * holds CRYPTO_LOCK_RAND 145 * holds CRYPTO_LOCK_RAND
150 * (to prevent double locking) */ 146 * (to prevent double locking) */
151/* access to lockin_thread is synchronized by CRYPTO_LOCK_RAND2 */ 147/* access to lockin_thread is synchronized by CRYPTO_LOCK_RAND2 */
152static unsigned long locking_thread = 0; /* valid iff crypto_lock_rand is set */ 148static CRYPTO_THREADID locking_threadid; /* valid iff crypto_lock_rand is set */
153 149
154 150
155#ifdef PREDICT 151#ifdef PREDICT
@@ -217,8 +213,10 @@ static void ssleay_rand_add(const void *buf, int num, double add)
217 /* check if we already have the lock */ 213 /* check if we already have the lock */
218 if (crypto_lock_rand) 214 if (crypto_lock_rand)
219 { 215 {
216 CRYPTO_THREADID cur;
217 CRYPTO_THREADID_current(&cur);
220 CRYPTO_r_lock(CRYPTO_LOCK_RAND2); 218 CRYPTO_r_lock(CRYPTO_LOCK_RAND2);
221 do_not_lock = (locking_thread == CRYPTO_thread_id()); 219 do_not_lock = !CRYPTO_THREADID_cmp(&locking_threadid, &cur);
222 CRYPTO_r_unlock(CRYPTO_LOCK_RAND2); 220 CRYPTO_r_unlock(CRYPTO_LOCK_RAND2);
223 } 221 }
224 else 222 else
@@ -274,8 +272,16 @@ static void ssleay_rand_add(const void *buf, int num, double add)
274 } 272 }
275 else 273 else
276 MD_Update(&m,&(state[st_idx]),j); 274 MD_Update(&m,&(state[st_idx]),j);
277 275
276 /* DO NOT REMOVE THE FOLLOWING CALL TO MD_Update()! */
278 MD_Update(&m,buf,j); 277 MD_Update(&m,buf,j);
278 /* We know that line may cause programs such as
279 purify and valgrind to complain about use of
280 uninitialized data. The problem is not, it's
281 with the caller. Removing that line will make
282 sure you get really bad randomness and thereby
283 other problems such as very insecure keys. */
284
279 MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c)); 285 MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c));
280 MD_Final(&m,local_md); 286 MD_Final(&m,local_md);
281 md_c[1]++; 287 md_c[1]++;
@@ -336,14 +342,6 @@ static int ssleay_rand_bytes(unsigned char *buf, int num)
336#endif 342#endif
337 int do_stir_pool = 0; 343 int do_stir_pool = 0;
338 344
339#ifdef OPENSSL_FIPS
340 if(FIPS_mode())
341 {
342 FIPSerr(FIPS_F_SSLEAY_RAND_BYTES,FIPS_R_NON_FIPS_METHOD);
343 return 0;
344 }
345#endif
346
347#ifdef PREDICT 345#ifdef PREDICT
348 if (rand_predictable) 346 if (rand_predictable)
349 { 347 {
@@ -384,7 +382,7 @@ static int ssleay_rand_bytes(unsigned char *buf, int num)
384 382
385 /* prevent ssleay_rand_bytes() from trying to obtain the lock again */ 383 /* prevent ssleay_rand_bytes() from trying to obtain the lock again */
386 CRYPTO_w_lock(CRYPTO_LOCK_RAND2); 384 CRYPTO_w_lock(CRYPTO_LOCK_RAND2);
387 locking_thread = CRYPTO_thread_id(); 385 CRYPTO_THREADID_current(&locking_threadid);
388 CRYPTO_w_unlock(CRYPTO_LOCK_RAND2); 386 CRYPTO_w_unlock(CRYPTO_LOCK_RAND2);
389 crypto_lock_rand = 1; 387 crypto_lock_rand = 1;
390 388
@@ -476,9 +474,15 @@ static int ssleay_rand_bytes(unsigned char *buf, int num)
476#endif 474#endif
477 MD_Update(&m,local_md,MD_DIGEST_LENGTH); 475 MD_Update(&m,local_md,MD_DIGEST_LENGTH);
478 MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c)); 476 MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c));
479#ifndef PURIFY 477
480 MD_Update(&m,buf,j); /* purify complains */ 478#ifndef PURIFY /* purify complains */
479 /* DO NOT REMOVE THE FOLLOWING CALL TO MD_Update()! */
480 MD_Update(&m,buf,j);
481 /* We know that line may cause programs such as
482 purify and valgrind to complain about use of
483 uninitialized data. */
481#endif 484#endif
485
482 k=(st_idx+MD_DIGEST_LENGTH/2)-st_num; 486 k=(st_idx+MD_DIGEST_LENGTH/2)-st_num;
483 if (k > 0) 487 if (k > 0)
484 { 488 {
@@ -539,15 +543,17 @@ static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num)
539 543
540static int ssleay_rand_status(void) 544static int ssleay_rand_status(void)
541 { 545 {
546 CRYPTO_THREADID cur;
542 int ret; 547 int ret;
543 int do_not_lock; 548 int do_not_lock;
544 549
550 CRYPTO_THREADID_current(&cur);
545 /* check if we already have the lock 551 /* check if we already have the lock
546 * (could happen if a RAND_poll() implementation calls RAND_status()) */ 552 * (could happen if a RAND_poll() implementation calls RAND_status()) */
547 if (crypto_lock_rand) 553 if (crypto_lock_rand)
548 { 554 {
549 CRYPTO_r_lock(CRYPTO_LOCK_RAND2); 555 CRYPTO_r_lock(CRYPTO_LOCK_RAND2);
550 do_not_lock = (locking_thread == CRYPTO_thread_id()); 556 do_not_lock = !CRYPTO_THREADID_cmp(&locking_threadid, &cur);
551 CRYPTO_r_unlock(CRYPTO_LOCK_RAND2); 557 CRYPTO_r_unlock(CRYPTO_LOCK_RAND2);
552 } 558 }
553 else 559 else
@@ -559,7 +565,7 @@ static int ssleay_rand_status(void)
559 565
560 /* prevent ssleay_rand_bytes() from trying to obtain the lock again */ 566 /* prevent ssleay_rand_bytes() from trying to obtain the lock again */
561 CRYPTO_w_lock(CRYPTO_LOCK_RAND2); 567 CRYPTO_w_lock(CRYPTO_LOCK_RAND2);
562 locking_thread = CRYPTO_thread_id(); 568 CRYPTO_THREADID_cpy(&locking_threadid, &cur);
563 CRYPTO_w_unlock(CRYPTO_LOCK_RAND2); 569 CRYPTO_w_unlock(CRYPTO_LOCK_RAND2);
564 crypto_lock_rand = 1; 570 crypto_lock_rand = 1;
565 } 571 }
diff --git a/src/lib/libcrypto/rand/rand_egd.c b/src/lib/libcrypto/rand/rand_egd.c
index 50bce6caba..d53b916ebe 100644
--- a/src/lib/libcrypto/rand/rand_egd.c
+++ b/src/lib/libcrypto/rand/rand_egd.c
@@ -95,7 +95,7 @@
95 * RAND_egd() is a wrapper for RAND_egd_bytes() with numbytes=255. 95 * RAND_egd() is a wrapper for RAND_egd_bytes() with numbytes=255.
96 */ 96 */
97 97
98#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_VOS) 98#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_VOS) || defined(OPENSSL_SYS_BEOS)
99int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes) 99int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
100 { 100 {
101 return(-1); 101 return(-1);
diff --git a/src/lib/libcrypto/rand/rand_lcl.h b/src/lib/libcrypto/rand/rand_lcl.h
index 18cc9b1e4a..618a8ec899 100644
--- a/src/lib/libcrypto/rand/rand_lcl.h
+++ b/src/lib/libcrypto/rand/rand_lcl.h
@@ -154,16 +154,5 @@
154#define MD(a,b,c) EVP_Digest(a,b,c,NULL,EVP_md2(), NULL) 154#define MD(a,b,c) EVP_Digest(a,b,c,NULL,EVP_md2(), NULL)
155#endif 155#endif
156 156
157#ifndef OPENSSL_NO_ENGINE
158void int_RAND_set_callbacks(
159 int (*set_rand_func)(const RAND_METHOD *meth,
160 const RAND_METHOD **pmeth),
161 const RAND_METHOD *(*get_rand_func)
162 (const RAND_METHOD **pmeth));
163int eng_RAND_set_rand_method(const RAND_METHOD *meth,
164 const RAND_METHOD **pmeth);
165const RAND_METHOD *eng_RAND_get_rand_method(const RAND_METHOD **pmeth);
166#endif
167
168 157
169#endif 158#endif
diff --git a/src/lib/libcrypto/rand/rand_os2.c b/src/lib/libcrypto/rand/rand_os2.c
index c3e36d4e5e..fc1e78b179 100644
--- a/src/lib/libcrypto/rand/rand_os2.c
+++ b/src/lib/libcrypto/rand/rand_os2.c
@@ -78,8 +78,10 @@ typedef struct _CPUUTIL {
78 ULONG ulIntrHigh; /* High 32 bits of interrupt time */ 78 ULONG ulIntrHigh; /* High 32 bits of interrupt time */
79} CPUUTIL; 79} CPUUTIL;
80 80
81#ifndef __KLIBC__
81APIRET APIENTRY(*DosPerfSysCall) (ULONG ulCommand, ULONG ulParm1, ULONG ulParm2, ULONG ulParm3) = NULL; 82APIRET APIENTRY(*DosPerfSysCall) (ULONG ulCommand, ULONG ulParm1, ULONG ulParm2, ULONG ulParm3) = NULL;
82APIRET APIENTRY(*DosQuerySysState) (ULONG func, ULONG arg1, ULONG pid, ULONG _res_, PVOID buf, ULONG bufsz) = NULL; 83APIRET APIENTRY(*DosQuerySysState) (ULONG func, ULONG arg1, ULONG pid, ULONG _res_, PVOID buf, ULONG bufsz) = NULL;
84#endif
83HMODULE hDoscalls = 0; 85HMODULE hDoscalls = 0;
84 86
85int RAND_poll(void) 87int RAND_poll(void)
@@ -91,6 +93,7 @@ int RAND_poll(void)
91 if (hDoscalls == 0) { 93 if (hDoscalls == 0) {
92 ULONG rc = DosLoadModule(failed_module, sizeof(failed_module), "DOSCALLS", &hDoscalls); 94 ULONG rc = DosLoadModule(failed_module, sizeof(failed_module), "DOSCALLS", &hDoscalls);
93 95
96#ifndef __KLIBC__
94 if (rc == 0) { 97 if (rc == 0) {
95 rc = DosQueryProcAddr(hDoscalls, 976, NULL, (PFN *)&DosPerfSysCall); 98 rc = DosQueryProcAddr(hDoscalls, 976, NULL, (PFN *)&DosPerfSysCall);
96 99
@@ -102,6 +105,7 @@ int RAND_poll(void)
102 if (rc) 105 if (rc)
103 DosQuerySysState = NULL; 106 DosQuerySysState = NULL;
104 } 107 }
108#endif
105 } 109 }
106 110
107 /* Sample the hi-res timer, runs at around 1.1 MHz */ 111 /* Sample the hi-res timer, runs at around 1.1 MHz */
@@ -122,7 +126,9 @@ int RAND_poll(void)
122 RAND_add(&util, sizeof(util), 10); 126 RAND_add(&util, sizeof(util), 10);
123 } 127 }
124 else { 128 else {
129#ifndef __KLIBC__
125 DosPerfSysCall = NULL; 130 DosPerfSysCall = NULL;
131#endif
126 } 132 }
127 } 133 }
128 134
diff --git a/src/lib/libcrypto/rand/rand_unix.c b/src/lib/libcrypto/rand/rand_unix.c
index 71b98ec212..e9ead3a529 100644
--- a/src/lib/libcrypto/rand/rand_unix.c
+++ b/src/lib/libcrypto/rand/rand_unix.c
@@ -133,7 +133,50 @@
133# define FD_SETSIZE (8*sizeof(fd_set)) 133# define FD_SETSIZE (8*sizeof(fd_set))
134#endif 134#endif
135 135
136#ifdef __OpenBSD__ 136#ifdef __VOS__
137int RAND_poll(void)
138{
139 unsigned char buf[ENTROPY_NEEDED];
140 pid_t curr_pid;
141 uid_t curr_uid;
142 static int first=1;
143 int i;
144 long rnd = 0;
145 struct timespec ts;
146 unsigned seed;
147
148/* The VOS random() function starts from a static seed so its
149 initial value is predictable. If random() returns the
150 initial value, reseed it with dynamic data. The VOS
151 real-time clock has a granularity of 1 nsec so it should be
152 reasonably difficult to predict its exact value. Do not
153 gratuitously reseed the PRNG because other code in this
154 process or thread may be using it. */
155
156 if (first) {
157 first = 0;
158 rnd = random ();
159 if (rnd == 1804289383) {
160 clock_gettime (CLOCK_REALTIME, &ts);
161 curr_pid = getpid();
162 curr_uid = getuid();
163 seed = ts.tv_sec ^ ts.tv_nsec ^ curr_pid ^ curr_uid;
164 srandom (seed);
165 }
166 }
167
168 for (i = 0; i < sizeof(buf); i++) {
169 if (i % 4 == 0)
170 rnd = random();
171 buf[i] = rnd;
172 rnd >>= 8;
173 }
174 RAND_add(buf, sizeof(buf), ENTROPY_NEEDED);
175 memset(buf, 0, sizeof(buf));
176
177 return 1;
178}
179#elif defined __OpenBSD__
137int RAND_poll(void) 180int RAND_poll(void)
138{ 181{
139 u_int32_t rnd = 0, i; 182 u_int32_t rnd = 0, i;
@@ -163,7 +206,7 @@ int RAND_poll(void)
163 static const char *randomfiles[] = { DEVRANDOM }; 206 static const char *randomfiles[] = { DEVRANDOM };
164 struct stat randomstats[sizeof(randomfiles)/sizeof(randomfiles[0])]; 207 struct stat randomstats[sizeof(randomfiles)/sizeof(randomfiles[0])];
165 int fd; 208 int fd;
166 size_t i; 209 unsigned int i;
167#endif 210#endif
168#ifdef DEVRANDOM_EGD 211#ifdef DEVRANDOM_EGD
169 static const char *egdsockets[] = { DEVRANDOM_EGD, NULL }; 212 static const char *egdsockets[] = { DEVRANDOM_EGD, NULL };
@@ -176,7 +219,8 @@ int RAND_poll(void)
176 * have this. Use /dev/urandom if you can as /dev/random may block 219 * have this. Use /dev/urandom if you can as /dev/random may block
177 * if it runs out of random entries. */ 220 * if it runs out of random entries. */
178 221
179 for (i=0; i<sizeof(randomfiles)/sizeof(randomfiles[0]) && n < ENTROPY_NEEDED; i++) 222 for (i = 0; (i < sizeof(randomfiles)/sizeof(randomfiles[0])) &&
223 (n < ENTROPY_NEEDED); i++)
180 { 224 {
181 if ((fd = open(randomfiles[i], O_RDONLY 225 if ((fd = open(randomfiles[i], O_RDONLY
182#ifdef O_NONBLOCK 226#ifdef O_NONBLOCK
@@ -193,7 +237,7 @@ int RAND_poll(void)
193 { 237 {
194 int usec = 10*1000; /* spend 10ms on each file */ 238 int usec = 10*1000; /* spend 10ms on each file */
195 int r; 239 int r;
196 size_t j; 240 unsigned int j;
197 struct stat *st=&randomstats[i]; 241 struct stat *st=&randomstats[i];
198 242
199 /* Avoid using same input... Used to be O_NOFOLLOW 243 /* Avoid using same input... Used to be O_NOFOLLOW
@@ -211,7 +255,12 @@ int RAND_poll(void)
211 { 255 {
212 int try_read = 0; 256 int try_read = 0;
213 257
214#if defined(OPENSSL_SYS_LINUX) 258#if defined(OPENSSL_SYS_BEOS_R5)
259 /* select() is broken in BeOS R5, so we simply
260 * try to read something and snooze if we couldn't */
261 try_read = 1;
262
263#elif defined(OPENSSL_SYS_LINUX)
215 /* use poll() */ 264 /* use poll() */
216 struct pollfd pset; 265 struct pollfd pset;
217 266
@@ -258,6 +307,10 @@ int RAND_poll(void)
258 r = read(fd,(unsigned char *)tmpbuf+n, ENTROPY_NEEDED-n); 307 r = read(fd,(unsigned char *)tmpbuf+n, ENTROPY_NEEDED-n);
259 if (r > 0) 308 if (r > 0)
260 n += r; 309 n += r;
310#if defined(OPENSSL_SYS_BEOS_R5)
311 if (r == 0)
312 snooze(t.tv_usec);
313#endif
261 } 314 }
262 else 315 else
263 r = -1; 316 r = -1;
@@ -311,6 +364,14 @@ int RAND_poll(void)
311 l=time(NULL); 364 l=time(NULL);
312 RAND_add(&l,sizeof(l),0.0); 365 RAND_add(&l,sizeof(l),0.0);
313 366
367#if defined(OPENSSL_SYS_BEOS)
368 {
369 system_info sysInfo;
370 get_system_info(&sysInfo);
371 RAND_add(&sysInfo,sizeof(sysInfo),0);
372 }
373#endif
374
314#if defined(DEVRANDOM) || defined(DEVRANDOM_EGD) 375#if defined(DEVRANDOM) || defined(DEVRANDOM_EGD)
315 return 1; 376 return 1;
316#else 377#else
diff --git a/src/lib/libcrypto/rand/rand_win.c b/src/lib/libcrypto/rand/rand_win.c
index 00dbe4232c..5d134e186b 100644
--- a/src/lib/libcrypto/rand/rand_win.c
+++ b/src/lib/libcrypto/rand/rand_win.c
@@ -463,7 +463,7 @@ int RAND_poll(void)
463 PROCESSENTRY32 p; 463 PROCESSENTRY32 p;
464 THREADENTRY32 t; 464 THREADENTRY32 t;
465 MODULEENTRY32 m; 465 MODULEENTRY32 m;
466 DWORD stoptime = 0; 466 DWORD starttime = 0;
467 467
468 snap = (CREATETOOLHELP32SNAPSHOT) 468 snap = (CREATETOOLHELP32SNAPSHOT)
469 GetProcAddress(kernel, "CreateToolhelp32Snapshot"); 469 GetProcAddress(kernel, "CreateToolhelp32Snapshot");
@@ -494,12 +494,29 @@ int RAND_poll(void)
494 * each entry. Consider each field a source of 1 byte 494 * each entry. Consider each field a source of 1 byte
495 * of entropy. 495 * of entropy.
496 */ 496 */
497 ZeroMemory(&hlist, sizeof(HEAPLIST32));
497 hlist.dwSize = sizeof(HEAPLIST32); 498 hlist.dwSize = sizeof(HEAPLIST32);
498 if (good) stoptime = GetTickCount() + MAXDELAY; 499 if (good) starttime = GetTickCount();
500#ifdef _MSC_VER
499 if (heaplist_first(handle, &hlist)) 501 if (heaplist_first(handle, &hlist))
502 {
503 /*
504 following discussion on dev ML, exception on WinCE (or other Win
505 platform) is theoretically of unknown origin; prevent infinite
506 loop here when this theoretical case occurs; otherwise cope with
507 the expected (MSDN documented) exception-throwing behaviour of
508 Heap32Next() on WinCE.
509
510 based on patch in original message by Tanguy Fautré (2009/03/02)
511 Subject: RAND_poll() and CreateToolhelp32Snapshot() stability
512 */
513 int ex_cnt_limit = 42;
500 do 514 do
501 { 515 {
502 RAND_add(&hlist, hlist.dwSize, 3); 516 RAND_add(&hlist, hlist.dwSize, 3);
517 __try
518 {
519 ZeroMemory(&hentry, sizeof(HEAPENTRY32));
503 hentry.dwSize = sizeof(HEAPENTRY32); 520 hentry.dwSize = sizeof(HEAPENTRY32);
504 if (heap_first(&hentry, 521 if (heap_first(&hentry,
505 hlist.th32ProcessID, 522 hlist.th32ProcessID,
@@ -510,10 +527,42 @@ int RAND_poll(void)
510 RAND_add(&hentry, 527 RAND_add(&hentry,
511 hentry.dwSize, 5); 528 hentry.dwSize, 5);
512 while (heap_next(&hentry) 529 while (heap_next(&hentry)
530 && (!good || (GetTickCount()-starttime)<MAXDELAY)
513 && --entrycnt > 0); 531 && --entrycnt > 0);
514 } 532 }
515 } while (heaplist_next(handle, 533 }
516 &hlist) && GetTickCount() < stoptime); 534 __except (EXCEPTION_EXECUTE_HANDLER)
535 {
536 /* ignore access violations when walking the heap list */
537 ex_cnt_limit--;
538 }
539 } while (heaplist_next(handle, &hlist)
540 && (!good || (GetTickCount()-starttime)<MAXDELAY)
541 && ex_cnt_limit > 0);
542 }
543
544#else
545 if (heaplist_first(handle, &hlist))
546 {
547 do
548 {
549 RAND_add(&hlist, hlist.dwSize, 3);
550 hentry.dwSize = sizeof(HEAPENTRY32);
551 if (heap_first(&hentry,
552 hlist.th32ProcessID,
553 hlist.th32HeapID))
554 {
555 int entrycnt = 80;
556 do
557 RAND_add(&hentry,
558 hentry.dwSize, 5);
559 while (heap_next(&hentry)
560 && --entrycnt > 0);
561 }
562 } while (heaplist_next(handle, &hlist)
563 && (!good || (GetTickCount()-starttime)<MAXDELAY));
564 }
565#endif
517 566
518 /* process walking */ 567 /* process walking */
519 /* PROCESSENTRY32 contains 9 fields that will change 568 /* PROCESSENTRY32 contains 9 fields that will change
@@ -522,11 +571,11 @@ int RAND_poll(void)
522 */ 571 */
523 p.dwSize = sizeof(PROCESSENTRY32); 572 p.dwSize = sizeof(PROCESSENTRY32);
524 573
525 if (good) stoptime = GetTickCount() + MAXDELAY; 574 if (good) starttime = GetTickCount();
526 if (process_first(handle, &p)) 575 if (process_first(handle, &p))
527 do 576 do
528 RAND_add(&p, p.dwSize, 9); 577 RAND_add(&p, p.dwSize, 9);
529 while (process_next(handle, &p) && GetTickCount() < stoptime); 578 while (process_next(handle, &p) && (!good || (GetTickCount()-starttime)<MAXDELAY));
530 579
531 /* thread walking */ 580 /* thread walking */
532 /* THREADENTRY32 contains 6 fields that will change 581 /* THREADENTRY32 contains 6 fields that will change
@@ -534,11 +583,11 @@ int RAND_poll(void)
534 * 1 byte of entropy. 583 * 1 byte of entropy.
535 */ 584 */
536 t.dwSize = sizeof(THREADENTRY32); 585 t.dwSize = sizeof(THREADENTRY32);
537 if (good) stoptime = GetTickCount() + MAXDELAY; 586 if (good) starttime = GetTickCount();
538 if (thread_first(handle, &t)) 587 if (thread_first(handle, &t))
539 do 588 do
540 RAND_add(&t, t.dwSize, 6); 589 RAND_add(&t, t.dwSize, 6);
541 while (thread_next(handle, &t) && GetTickCount() < stoptime); 590 while (thread_next(handle, &t) && (!good || (GetTickCount()-starttime)<MAXDELAY));
542 591
543 /* module walking */ 592 /* module walking */
544 /* MODULEENTRY32 contains 9 fields that will change 593 /* MODULEENTRY32 contains 9 fields that will change
@@ -546,12 +595,12 @@ int RAND_poll(void)
546 * 1 byte of entropy. 595 * 1 byte of entropy.
547 */ 596 */
548 m.dwSize = sizeof(MODULEENTRY32); 597 m.dwSize = sizeof(MODULEENTRY32);
549 if (good) stoptime = GetTickCount() + MAXDELAY; 598 if (good) starttime = GetTickCount();
550 if (module_first(handle, &m)) 599 if (module_first(handle, &m))
551 do 600 do
552 RAND_add(&m, m.dwSize, 9); 601 RAND_add(&m, m.dwSize, 9);
553 while (module_next(handle, &m) 602 while (module_next(handle, &m)
554 && (GetTickCount() < stoptime)); 603 && (!good || (GetTickCount()-starttime)<MAXDELAY));
555 if (close_snap) 604 if (close_snap)
556 close_snap(handle); 605 close_snap(handle);
557 else 606 else
@@ -701,7 +750,7 @@ static void readscreen(void)
701 int y; /* y-coordinate of screen lines to grab */ 750 int y; /* y-coordinate of screen lines to grab */
702 int n = 16; /* number of screen lines to grab at a time */ 751 int n = 16; /* number of screen lines to grab at a time */
703 752
704 if (GetVersion() >= 0x80000000 || !OPENSSL_isservice()) 753 if (GetVersion() < 0x80000000 && OPENSSL_isservice()>0)
705 return; 754 return;
706 755
707 /* Create a screen DC and a memory DC compatible to screen DC */ 756 /* Create a screen DC and a memory DC compatible to screen DC */
diff --git a/src/lib/libcrypto/rc2/Makefile b/src/lib/libcrypto/rc2/Makefile
index 4b6292b65f..73eac347e7 100644
--- a/src/lib/libcrypto/rc2/Makefile
+++ b/src/lib/libcrypto/rc2/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -78,11 +78,7 @@ rc2_cbc.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h
78rc2_cbc.o: rc2_cbc.c rc2_locl.h 78rc2_cbc.o: rc2_cbc.c rc2_locl.h
79rc2_ecb.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 79rc2_ecb.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
80rc2_ecb.o: ../../include/openssl/rc2.h rc2_ecb.c rc2_locl.h 80rc2_ecb.o: ../../include/openssl/rc2.h rc2_ecb.c rc2_locl.h
81rc2_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 81rc2_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h
82rc2_skey.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h
83rc2_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
84rc2_skey.o: ../../include/openssl/rc2.h ../../include/openssl/safestack.h
85rc2_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
86rc2_skey.o: rc2_locl.h rc2_skey.c 82rc2_skey.o: rc2_locl.h rc2_skey.c
87rc2cfb64.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h 83rc2cfb64.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h
88rc2cfb64.o: rc2_locl.h rc2cfb64.c 84rc2cfb64.o: rc2_locl.h rc2cfb64.c
diff --git a/src/lib/libcrypto/rc4/Makefile b/src/lib/libcrypto/rc4/Makefile
index f0bd7678fc..264451a213 100644
--- a/src/lib/libcrypto/rc4/Makefile
+++ b/src/lib/libcrypto/rc4/Makefile
@@ -21,8 +21,8 @@ TEST=rc4test.c
21APPS= 21APPS=
22 22
23LIB=$(TOP)/libcrypto.a 23LIB=$(TOP)/libcrypto.a
24LIBSRC=rc4_skey.c rc4_enc.c rc4_fblk.c 24LIBSRC=rc4_skey.c rc4_enc.c
25LIBOBJ=$(RC4_ENC) rc4_fblk.o 25LIBOBJ=$(RC4_ENC)
26 26
27SRC= $(LIBSRC) 27SRC= $(LIBSRC)
28 28
@@ -37,26 +37,26 @@ top:
37all: lib 37all: lib
38 38
39lib: $(LIBOBJ) 39lib: $(LIBOBJ)
40 $(ARX) $(LIB) $(LIBOBJ) 40 $(AR) $(LIB) $(LIBOBJ)
41 $(RANLIB) $(LIB) || echo Never mind. 41 $(RANLIB) $(LIB) || echo Never mind.
42 @touch lib 42 @touch lib
43 43
44# ELF 44rc4-586.s: asm/rc4-586.pl ../perlasm/x86asm.pl
45rx86-elf.s: asm/rc4-586.pl ../perlasm/x86asm.pl 45 $(PERL) asm/rc4-586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
46 (cd asm; $(PERL) rc4-586.pl elf $(CFLAGS) > ../$@)
47# COFF
48rx86-cof.s: asm/rc4-586.pl ../perlasm/x86asm.pl
49 (cd asm; $(PERL) rc4-586.pl coff $(CFLAGS) > ../$@)
50# a.out
51rx86-out.s: asm/rc4-586.pl ../perlasm/x86asm.pl
52 (cd asm; $(PERL) rc4-586.pl a.out $(CFLAGS) > ../$@)
53 46
54rc4-x86_64.s: asm/rc4-x86_64.pl; $(PERL) asm/rc4-x86_64.pl $@ 47rc4-x86_64.s: asm/rc4-x86_64.pl
48 $(PERL) asm/rc4-x86_64.pl $(PERLASM_SCHEME) > $@
55 49
56rc4-ia64.s: asm/rc4-ia64.S 50rc4-ia64.S: asm/rc4-ia64.pl
51 $(PERL) asm/rc4-ia64.pl $(CFLAGS) > $@
52
53rc4-s390x.s: asm/rc4-s390x.pl
54 $(PERL) asm/rc4-s390x.pl > $@
55
56rc4-ia64.s: rc4-ia64.S
57 @case `awk '/^#define RC4_INT/{print$$NF}' $(TOP)/include/openssl/opensslconf.h` in \ 57 @case `awk '/^#define RC4_INT/{print$$NF}' $(TOP)/include/openssl/opensslconf.h` in \
58 int) set -x; $(CC) $(CFLAGS) -DSZ=4 -E asm/rc4-ia64.S > $@ ;; \ 58 int) set -x; $(CC) $(CFLAGS) -DSZ=4 -E rc4-ia64.S > $@ ;; \
59 char) set -x; $(CC) $(CFLAGS) -DSZ=1 -E asm/rc4-ia64.S > $@ ;; \ 59 char) set -x; $(CC) $(CFLAGS) -DSZ=1 -E rc4-ia64.S > $@ ;; \
60 *) exit 1 ;; \ 60 *) exit 1 ;; \
61 esac 61 esac
62 62
@@ -105,20 +105,10 @@ rc4_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
105rc4_enc.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h 105rc4_enc.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h
106rc4_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 106rc4_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
107rc4_enc.o: ../cryptlib.h rc4_enc.c rc4_locl.h 107rc4_enc.o: ../cryptlib.h rc4_enc.c rc4_locl.h
108rc4_fblk.o: ../../e_os.h ../../include/openssl/bio.h
109rc4_fblk.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
110rc4_fblk.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
111rc4_fblk.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
112rc4_fblk.o: ../../include/openssl/opensslconf.h
113rc4_fblk.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
114rc4_fblk.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h
115rc4_fblk.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
116rc4_fblk.o: ../cryptlib.h rc4_fblk.c rc4_locl.h
117rc4_skey.o: ../../e_os.h ../../include/openssl/bio.h 108rc4_skey.o: ../../e_os.h ../../include/openssl/bio.h
118rc4_skey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 109rc4_skey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
119rc4_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 110rc4_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
120rc4_skey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 111rc4_skey.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
121rc4_skey.o: ../../include/openssl/opensslconf.h
122rc4_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 112rc4_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
123rc4_skey.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h 113rc4_skey.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h
124rc4_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 114rc4_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
diff --git a/src/lib/libcrypto/rc4/rc4test.c b/src/lib/libcrypto/rc4/rc4test.c
index 54b597fa26..633a79e758 100644
--- a/src/lib/libcrypto/rc4/rc4test.c
+++ b/src/lib/libcrypto/rc4/rc4test.c
@@ -114,8 +114,8 @@ static unsigned char output[7][30]={
114 114
115int main(int argc, char *argv[]) 115int main(int argc, char *argv[])
116 { 116 {
117 int err=0; 117 int i,err=0;
118 unsigned int i, j; 118 int j;
119 unsigned char *p; 119 unsigned char *p;
120 RC4_KEY key; 120 RC4_KEY key;
121 unsigned char obuf[512]; 121 unsigned char obuf[512];
@@ -129,12 +129,12 @@ int main(int argc, char *argv[])
129 { 129 {
130 printf("error calculating RC4\n"); 130 printf("error calculating RC4\n");
131 printf("output:"); 131 printf("output:");
132 for (j=0; j<data_len[i]+1U; j++) 132 for (j=0; j<data_len[i]+1; j++)
133 printf(" %02x",obuf[j]); 133 printf(" %02x",obuf[j]);
134 printf("\n"); 134 printf("\n");
135 printf("expect:"); 135 printf("expect:");
136 p= &(output[i][0]); 136 p= &(output[i][0]);
137 for (j=0; j<data_len[i]+1U; j++) 137 for (j=0; j<data_len[i]+1; j++)
138 printf(" %02x",*(p++)); 138 printf(" %02x",*(p++));
139 printf("\n"); 139 printf("\n");
140 err++; 140 err++;
@@ -180,12 +180,12 @@ int main(int argc, char *argv[])
180 { 180 {
181 printf("error in RC4 multi-call processing\n"); 181 printf("error in RC4 multi-call processing\n");
182 printf("output:"); 182 printf("output:");
183 for (j=0; j<data_len[3]+1U; j++) 183 for (j=0; j<data_len[3]+1; j++)
184 printf(" %02x",obuf[j]); 184 printf(" %02x",obuf[j]);
185 printf("\n"); 185 printf("\n");
186 printf("expect:"); 186 printf("expect:");
187 p= &(output[3][0]); 187 p= &(output[3][0]);
188 for (j=0; j<data_len[3]+1U; j++) 188 for (j=0; j<data_len[3]+1; j++)
189 printf(" %02x",*(p++)); 189 printf(" %02x",*(p++));
190 err++; 190 err++;
191 } 191 }
@@ -216,11 +216,11 @@ int main(int argc, char *argv[])
216 if (memcmp(md,expected,sizeof(md))) { 216 if (memcmp(md,expected,sizeof(md))) {
217 printf("error in RC4 bulk test\n"); 217 printf("error in RC4 bulk test\n");
218 printf("output:"); 218 printf("output:");
219 for (j=0; j<sizeof(md); j++) 219 for (j=0; j<(int)sizeof(md); j++)
220 printf(" %02x",md[j]); 220 printf(" %02x",md[j]);
221 printf("\n"); 221 printf("\n");
222 printf("expect:"); 222 printf("expect:");
223 for (j=0; j<sizeof(md); j++) 223 for (j=0; j<(int)sizeof(md); j++)
224 printf(" %02x",expected[j]); 224 printf(" %02x",expected[j]);
225 printf("\n"); 225 printf("\n");
226 err++; 226 err++;
diff --git a/src/lib/libcrypto/rc5/Makefile b/src/lib/libcrypto/rc5/Makefile
index b4e21c9bb2..8a8b00eb89 100644
--- a/src/lib/libcrypto/rc5/Makefile
+++ b/src/lib/libcrypto/rc5/Makefile
@@ -12,8 +12,6 @@ MAKEFILE= Makefile
12AR= ar r 12AR= ar r
13 13
14RC5_ENC= rc5_enc.o 14RC5_ENC= rc5_enc.o
15# or use
16#DES_ENC= r586-elf.o
17 15
18CFLAGS= $(INCLUDES) $(CFLAG) 16CFLAGS= $(INCLUDES) $(CFLAG)
19ASFLAGS= $(INCLUDES) $(ASFLAG) 17ASFLAGS= $(INCLUDES) $(ASFLAG)
@@ -40,19 +38,12 @@ top:
40all: lib 38all: lib
41 39
42lib: $(LIBOBJ) 40lib: $(LIBOBJ)
43 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
44 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
45 @touch lib 43 @touch lib
46 44
47# ELF 45rc5-586.s: asm/rc5-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
48r586-elf.s: asm/rc5-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl 46 $(PERL) asm/rc5-586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
49 (cd asm; $(PERL) rc5-586.pl elf $(CFLAGS) > ../$@)
50# COFF
51r586-cof.s: asm/rc5-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
52 (cd asm; $(PERL) rc5-586.pl coff $(CFLAGS) > ../$@)
53# a.out
54r586-out.s: asm/rc5-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
55 (cd asm; $(PERL) rc5-586.pl a.out $(CFLAGS) > ../$@)
56 47
57files: 48files:
58 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 49 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
diff --git a/src/lib/libcrypto/rc5/rc5.h b/src/lib/libcrypto/rc5/rc5.h
index f73a2a02a4..4b3c153b50 100644
--- a/src/lib/libcrypto/rc5/rc5.h
+++ b/src/lib/libcrypto/rc5/rc5.h
@@ -94,10 +94,7 @@ typedef struct rc5_key_st
94 RC5_32_INT data[2*(RC5_16_ROUNDS+1)]; 94 RC5_32_INT data[2*(RC5_16_ROUNDS+1)];
95 } RC5_32_KEY; 95 } RC5_32_KEY;
96 96
97#ifdef OPENSSL_FIPS 97
98void private_RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data,
99 int rounds);
100#endif
101void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data, 98void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data,
102 int rounds); 99 int rounds);
103void RC5_32_ecb_encrypt(const unsigned char *in,unsigned char *out,RC5_32_KEY *key, 100void RC5_32_ecb_encrypt(const unsigned char *in,unsigned char *out,RC5_32_KEY *key,
diff --git a/src/lib/libcrypto/ripemd/Makefile b/src/lib/libcrypto/ripemd/Makefile
index 6145f13699..d5b1067dbe 100644
--- a/src/lib/libcrypto/ripemd/Makefile
+++ b/src/lib/libcrypto/ripemd/Makefile
@@ -38,19 +38,12 @@ top:
38all: lib 38all: lib
39 39
40lib: $(LIBOBJ) 40lib: $(LIBOBJ)
41 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
42 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
43 @touch lib 43 @touch lib
44 44
45# ELF 45rmd-586.s: asm/rmd-586.pl ../perlasm/x86asm.pl
46rm86-elf.s: asm/rmd-586.pl ../perlasm/x86asm.pl 46 $(PERL) asm/rmd-586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
47 (cd asm; $(PERL) rmd-586.pl elf $(CFLAGS) > ../$@)
48# COFF
49rm86-cof.s: asm/rmd-586.pl ../perlasm/x86asm.pl
50 (cd asm; $(PERL) rmd-586.pl coff $(CFLAGS) > ../$@)
51# a.out
52rm86-out.s: asm/rmd-586.pl ../perlasm/x86asm.pl
53 (cd asm; $(PERL) rmd-586.pl a.out $(CFLAGS) > ../$@)
54 47
55files: 48files:
56 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 49 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -89,13 +82,8 @@ clean:
89 82
90# DO NOT DELETE THIS LINE -- make depend depends on it. 83# DO NOT DELETE THIS LINE -- make depend depends on it.
91 84
92rmd_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 85rmd_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
93rmd_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 86rmd_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ripemd.h
94rmd_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
95rmd_dgst.o: ../../include/openssl/opensslconf.h
96rmd_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
97rmd_dgst.o: ../../include/openssl/ripemd.h ../../include/openssl/safestack.h
98rmd_dgst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
99rmd_dgst.o: ../md32_common.h rmd_dgst.c rmd_locl.h rmdconst.h 87rmd_dgst.o: ../md32_common.h rmd_dgst.c rmd_locl.h rmdconst.h
100rmd_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 88rmd_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
101rmd_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 89rmd_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
diff --git a/src/lib/libcrypto/rsa/Makefile b/src/lib/libcrypto/rsa/Makefile
index 7b1fd6428c..bb64223e05 100644
--- a/src/lib/libcrypto/rsa/Makefile
+++ b/src/lib/libcrypto/rsa/Makefile
@@ -19,10 +19,12 @@ APPS=
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= rsa_eay.c rsa_gen.c rsa_lib.c rsa_sign.c rsa_saos.c rsa_err.c \ 20LIBSRC= rsa_eay.c rsa_gen.c rsa_lib.c rsa_sign.c rsa_saos.c rsa_err.c \
21 rsa_pk1.c rsa_ssl.c rsa_none.c rsa_oaep.c rsa_chk.c rsa_null.c \ 21 rsa_pk1.c rsa_ssl.c rsa_none.c rsa_oaep.c rsa_chk.c rsa_null.c \
22 rsa_pss.c rsa_x931.c rsa_x931g.c rsa_asn1.c rsa_depr.c rsa_eng.c 22 rsa_pss.c rsa_x931.c rsa_asn1.c rsa_depr.c rsa_ameth.c rsa_prn.c \
23 rsa_pmeth.c
23LIBOBJ= rsa_eay.o rsa_gen.o rsa_lib.o rsa_sign.o rsa_saos.o rsa_err.o \ 24LIBOBJ= rsa_eay.o rsa_gen.o rsa_lib.o rsa_sign.o rsa_saos.o rsa_err.o \
24 rsa_pk1.o rsa_ssl.o rsa_none.o rsa_oaep.o rsa_chk.o rsa_null.o \ 25 rsa_pk1.o rsa_ssl.o rsa_none.o rsa_oaep.o rsa_chk.o rsa_null.o \
25 rsa_pss.o rsa_x931.o rsa_x931g.o rsa_asn1.o rsa_depr.o rsa_eng.o 26 rsa_pss.o rsa_x931.o rsa_asn1.o rsa_depr.o rsa_ameth.o rsa_prn.o \
27 rsa_pmeth.o
26 28
27SRC= $(LIBSRC) 29SRC= $(LIBSRC)
28 30
@@ -37,7 +39,7 @@ top:
37all: lib 39all: lib
38 40
39lib: $(LIBOBJ) 41lib: $(LIBOBJ)
40 $(ARX) $(LIB) $(LIBOBJ) 42 $(AR) $(LIB) $(LIBOBJ)
41 $(RANLIB) $(LIB) || echo Never mind. 43 $(RANLIB) $(LIB) || echo Never mind.
42 @touch lib 44 @touch lib
43 45
@@ -78,6 +80,22 @@ clean:
78 80
79# DO NOT DELETE THIS LINE -- make depend depends on it. 81# DO NOT DELETE THIS LINE -- make depend depends on it.
80 82
83rsa_ameth.o: ../../e_os.h ../../include/openssl/asn1.h
84rsa_ameth.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
85rsa_ameth.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
86rsa_ameth.o: ../../include/openssl/cms.h ../../include/openssl/crypto.h
87rsa_ameth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
88rsa_ameth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
89rsa_ameth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
90rsa_ameth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
91rsa_ameth.o: ../../include/openssl/objects.h
92rsa_ameth.o: ../../include/openssl/opensslconf.h
93rsa_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
94rsa_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
95rsa_ameth.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
96rsa_ameth.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
97rsa_ameth.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
98rsa_ameth.o: ../asn1/asn1_locl.h ../cryptlib.h rsa_ameth.c
81rsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h 99rsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
82rsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 100rsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
83rsa_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 101rsa_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
@@ -114,21 +132,6 @@ rsa_eay.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
114rsa_eay.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 132rsa_eay.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
115rsa_eay.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 133rsa_eay.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
116rsa_eay.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_eay.c 134rsa_eay.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_eay.c
117rsa_eng.o: ../../e_os.h ../../include/openssl/asn1.h
118rsa_eng.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
119rsa_eng.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
120rsa_eng.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
121rsa_eng.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
122rsa_eng.o: ../../include/openssl/engine.h ../../include/openssl/err.h
123rsa_eng.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
124rsa_eng.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
125rsa_eng.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
126rsa_eng.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
127rsa_eng.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
128rsa_eng.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
129rsa_eng.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
130rsa_eng.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
131rsa_eng.o: ../../include/openssl/x509_vfy.h ../cryptlib.h rsa_eng.c
132rsa_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 135rsa_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
133rsa_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 136rsa_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
134rsa_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h 137rsa_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
@@ -151,15 +154,15 @@ rsa_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
151rsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 154rsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
152rsa_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 155rsa_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
153rsa_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h 156rsa_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h
154rsa_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 157rsa_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
155rsa_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 158rsa_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
156rsa_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 159rsa_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
157rsa_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 160rsa_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
158rsa_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 161rsa_lib.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
159rsa_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 162rsa_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
160rsa_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 163rsa_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
161rsa_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 164rsa_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
162rsa_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h rsa_lib.c 165rsa_lib.o: ../cryptlib.h rsa_lib.c
163rsa_none.o: ../../e_os.h ../../include/openssl/asn1.h 166rsa_none.o: ../../e_os.h ../../include/openssl/asn1.h
164rsa_none.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 167rsa_none.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
165rsa_none.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 168rsa_none.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -182,9 +185,9 @@ rsa_oaep.o: ../../e_os.h ../../include/openssl/asn1.h
182rsa_oaep.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 185rsa_oaep.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
183rsa_oaep.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 186rsa_oaep.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
184rsa_oaep.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 187rsa_oaep.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
185rsa_oaep.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 188rsa_oaep.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
186rsa_oaep.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 189rsa_oaep.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
187rsa_oaep.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 190rsa_oaep.o: ../../include/openssl/opensslconf.h
188rsa_oaep.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 191rsa_oaep.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
189rsa_oaep.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 192rsa_oaep.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
190rsa_oaep.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 193rsa_oaep.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -199,27 +202,50 @@ rsa_pk1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
199rsa_pk1.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 202rsa_pk1.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
200rsa_pk1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 203rsa_pk1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
201rsa_pk1.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_pk1.c 204rsa_pk1.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_pk1.c
205rsa_pmeth.o: ../../e_os.h ../../include/openssl/asn1.h
206rsa_pmeth.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
207rsa_pmeth.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
208rsa_pmeth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
209rsa_pmeth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
210rsa_pmeth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
211rsa_pmeth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
212rsa_pmeth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
213rsa_pmeth.o: ../../include/openssl/opensslconf.h
214rsa_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
215rsa_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
216rsa_pmeth.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
217rsa_pmeth.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
218rsa_pmeth.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
219rsa_pmeth.o: ../cryptlib.h ../evp/evp_locl.h rsa_locl.h rsa_pmeth.c
220rsa_prn.o: ../../e_os.h ../../include/openssl/asn1.h
221rsa_prn.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
222rsa_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
223rsa_prn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
224rsa_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
225rsa_prn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
226rsa_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
227rsa_prn.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
228rsa_prn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
229rsa_prn.o: ../cryptlib.h rsa_prn.c
202rsa_pss.o: ../../e_os.h ../../include/openssl/asn1.h 230rsa_pss.o: ../../e_os.h ../../include/openssl/asn1.h
203rsa_pss.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 231rsa_pss.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
204rsa_pss.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 232rsa_pss.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
205rsa_pss.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 233rsa_pss.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
206rsa_pss.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 234rsa_pss.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
207rsa_pss.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 235rsa_pss.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
208rsa_pss.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 236rsa_pss.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
209rsa_pss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 237rsa_pss.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
210rsa_pss.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 238rsa_pss.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
211rsa_pss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 239rsa_pss.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
212rsa_pss.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 240rsa_pss.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_pss.c
213rsa_pss.o: ../cryptlib.h rsa_pss.c
214rsa_saos.o: ../../e_os.h ../../include/openssl/asn1.h 241rsa_saos.o: ../../e_os.h ../../include/openssl/asn1.h
215rsa_saos.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 242rsa_saos.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
216rsa_saos.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 243rsa_saos.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
217rsa_saos.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 244rsa_saos.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
218rsa_saos.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 245rsa_saos.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
219rsa_saos.o: ../../include/openssl/err.h ../../include/openssl/evp.h 246rsa_saos.o: ../../include/openssl/err.h ../../include/openssl/evp.h
220rsa_saos.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 247rsa_saos.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
221rsa_saos.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 248rsa_saos.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
222rsa_saos.o: ../../include/openssl/opensslconf.h
223rsa_saos.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 249rsa_saos.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
224rsa_saos.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 250rsa_saos.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
225rsa_saos.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 251rsa_saos.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -232,15 +258,14 @@ rsa_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
232rsa_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 258rsa_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
233rsa_sign.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 259rsa_sign.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
234rsa_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h 260rsa_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h
235rsa_sign.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 261rsa_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
236rsa_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 262rsa_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
237rsa_sign.o: ../../include/openssl/opensslconf.h
238rsa_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 263rsa_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
239rsa_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 264rsa_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
240rsa_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 265rsa_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
241rsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 266rsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
242rsa_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 267rsa_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
243rsa_sign.o: ../cryptlib.h rsa_sign.c 268rsa_sign.o: ../cryptlib.h rsa_locl.h rsa_sign.c
244rsa_ssl.o: ../../e_os.h ../../include/openssl/asn1.h 269rsa_ssl.o: ../../e_os.h ../../include/openssl/asn1.h
245rsa_ssl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 270rsa_ssl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
246rsa_ssl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 271rsa_ssl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -260,11 +285,3 @@ rsa_x931.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
260rsa_x931.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 285rsa_x931.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
261rsa_x931.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 286rsa_x931.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
262rsa_x931.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_x931.c 287rsa_x931.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_x931.c
263rsa_x931g.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
264rsa_x931g.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
265rsa_x931g.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
266rsa_x931g.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
267rsa_x931g.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
268rsa_x931g.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
269rsa_x931g.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
270rsa_x931g.o: rsa_x931g.c
diff --git a/src/lib/libcrypto/rsa/rsa_test.c b/src/lib/libcrypto/rsa/rsa_test.c
index 4080de8bcf..c8705a0f6e 100644
--- a/src/lib/libcrypto/rsa/rsa_test.c
+++ b/src/lib/libcrypto/rsa/rsa_test.c
@@ -328,7 +328,7 @@ int main(int argc, char *argv[])
328 } 328 }
329 329
330 CRYPTO_cleanup_all_ex_data(); 330 CRYPTO_cleanup_all_ex_data();
331 ERR_remove_state(0); 331 ERR_remove_thread_state(NULL);
332 332
333 CRYPTO_mem_leaks_fp(stderr); 333 CRYPTO_mem_leaks_fp(stderr);
334 334
diff --git a/src/lib/libcrypto/sha/Makefile b/src/lib/libcrypto/sha/Makefile
index f4741b9ee6..e6eccb05f9 100644
--- a/src/lib/libcrypto/sha/Makefile
+++ b/src/lib/libcrypto/sha/Makefile
@@ -38,25 +38,16 @@ top:
38all: lib 38all: lib
39 39
40lib: $(LIBOBJ) 40lib: $(LIBOBJ)
41 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
42 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
43 @touch lib 43 @touch lib
44 44
45# ELF 45sha1-586.s: asm/sha1-586.pl ../perlasm/x86asm.pl
46sx86-elf.s: asm/sha1-586.pl ../perlasm/x86asm.pl 46 $(PERL) asm/sha1-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
47 (cd asm; $(PERL) sha1-586.pl elf $(CFLAGS) $(PROCESSOR) > ../$@) 47sha256-586.s: asm/sha256-586.pl ../perlasm/x86asm.pl
48s512sse2-elf.s: asm/sha512-sse2.pl ../perlasm/x86asm.pl 48 $(PERL) asm/sha256-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
49 (cd asm; $(PERL) sha512-sse2.pl elf $(CFLAGS) $(PROCESSOR) > ../$@) 49sha512-586.s: asm/sha512-586.pl ../perlasm/x86asm.pl
50# COFF 50 $(PERL) asm/sha512-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
51sx86-cof.s: asm/sha1-586.pl ../perlasm/x86asm.pl
52 (cd asm; $(PERL) sha1-586.pl coff $(CFLAGS) $(PROCESSOR) > ../$@)
53s512sse2-cof.s: asm/sha512-sse2.pl ../perlasm/x86asm.pl
54 (cd asm; $(PERL) sha512-sse2.pl coff $(CFLAGS) $(PROCESSOR) > ../$@)
55# a.out
56sx86-out.s: asm/sha1-586.pl ../perlasm/x86asm.pl
57 (cd asm; $(PERL) sha1-586.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
58s512sse2-out.s: asm/sha512-sse2.pl ../perlasm/x86asm.pl
59 (cd asm; $(PERL) sha512-sse2.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
60 51
61sha1-ia64.s: asm/sha1-ia64.pl 52sha1-ia64.s: asm/sha1-ia64.pl
62 (cd asm; $(PERL) sha1-ia64.pl ../$@ $(CFLAGS)) 53 (cd asm; $(PERL) sha1-ia64.pl ../$@ $(CFLAGS))
@@ -65,10 +56,25 @@ sha256-ia64.s: asm/sha512-ia64.pl
65sha512-ia64.s: asm/sha512-ia64.pl 56sha512-ia64.s: asm/sha512-ia64.pl
66 (cd asm; $(PERL) sha512-ia64.pl ../$@ $(CFLAGS)) 57 (cd asm; $(PERL) sha512-ia64.pl ../$@ $(CFLAGS))
67 58
59sha256-armv4.s: asm/sha256-armv4.pl
60 $(PERL) $< $@
61
68# Solaris make has to be explicitly told 62# Solaris make has to be explicitly told
69sha1-x86_64.s: asm/sha1-x86_64.pl; $(PERL) asm/sha1-x86_64.pl $@ 63sha1-x86_64.s: asm/sha1-x86_64.pl; $(PERL) asm/sha1-x86_64.pl $(PERLASM_SCHEME) > $@
70sha256-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $@ 64sha256-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $(PERLASM_SCHEME) $@
71sha512-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $@ 65sha512-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $(PERLASM_SCHEME) $@
66sha1-sparcv9.s: asm/sha1-sparcv9.pl; $(PERL) asm/sha1-sparcv9.pl $@ $(CFLAGS)
67sha256-sparcv9.s:asm/sha512-sparcv9.pl; $(PERL) asm/sha512-sparcv9.pl $@ $(CFLAGS)
68sha512-sparcv9.s:asm/sha512-sparcv9.pl; $(PERL) asm/sha512-sparcv9.pl $@ $(CFLAGS)
69
70sha1-ppc.s: asm/sha1-ppc.pl; $(PERL) asm/sha1-ppc.pl $(PERLASM_SCHEME) $@
71sha256-ppc.s: asm/sha512-ppc.pl; $(PERL) asm/sha512-ppc.pl $(PERLASM_SCHEME) $@
72sha512-ppc.s: asm/sha512-ppc.pl; $(PERL) asm/sha512-ppc.pl $(PERLASM_SCHEME) $@
73
74# GNU make "catch all"
75sha1-%.s: asm/sha1-%.pl; $(PERL) $< $@
76sha256-%.s: asm/sha512-%.pl; $(PERL) $< $@
77sha512-%.s: asm/sha512-%.pl; $(PERL) $< $@
72 78
73files: 79files:
74 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 80 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -113,31 +119,24 @@ sha1_one.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
113sha1_one.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 119sha1_one.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
114sha1_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 120sha1_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
115sha1_one.o: sha1_one.c 121sha1_one.o: sha1_one.c
116sha1dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h 122sha1dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
117sha1dgst.o: ../../include/openssl/opensslconf.h
118sha1dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h 123sha1dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h
119sha1dgst.o: ../md32_common.h sha1dgst.c sha_locl.h 124sha1dgst.o: ../md32_common.h sha1dgst.c sha_locl.h
120sha256.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 125sha256.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
121sha256.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h 126sha256.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
122sha256.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 127sha256.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
123sha256.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 128sha256.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
124sha256.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 129sha256.o: ../../include/openssl/symhacks.h ../md32_common.h sha256.c
125sha256.o: ../md32_common.h sha256.c
126sha512.o: ../../e_os.h ../../include/openssl/bio.h 130sha512.o: ../../e_os.h ../../include/openssl/bio.h
127sha512.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 131sha512.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
128sha512.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 132sha512.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
129sha512.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 133sha512.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
130sha512.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 134sha512.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
131sha512.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 135sha512.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
132sha512.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 136sha512.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
133sha512.o: ../../include/openssl/symhacks.h ../cryptlib.h sha512.c 137sha512.o: ../cryptlib.h sha512.c
134sha_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 138sha_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
135sha_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 139sha_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h
136sha_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
137sha_dgst.o: ../../include/openssl/opensslconf.h
138sha_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
139sha_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
140sha_dgst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
141sha_dgst.o: ../md32_common.h sha_dgst.c sha_locl.h 140sha_dgst.o: ../md32_common.h sha_dgst.c sha_locl.h
142sha_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 141sha_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
143sha_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 142sha_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
diff --git a/src/lib/libcrypto/sha/sha_dgst.c b/src/lib/libcrypto/sha/sha_dgst.c
index 598f4d721a..70eb56032c 100644
--- a/src/lib/libcrypto/sha/sha_dgst.c
+++ b/src/lib/libcrypto/sha/sha_dgst.c
@@ -57,12 +57,6 @@
57 */ 57 */
58 58
59#include <openssl/opensslconf.h> 59#include <openssl/opensslconf.h>
60#include <openssl/crypto.h>
61#ifdef OPENSSL_FIPS
62#include <openssl/fips.h>
63#endif
64
65#include <openssl/err.h>
66#if !defined(OPENSSL_NO_SHA0) && !defined(OPENSSL_NO_SHA) 60#if !defined(OPENSSL_NO_SHA0) && !defined(OPENSSL_NO_SHA)
67 61
68#undef SHA_1 62#undef SHA_1
diff --git a/src/lib/libcrypto/sha/shatest.c b/src/lib/libcrypto/sha/shatest.c
index ed0fe06a7b..27614646d1 100644
--- a/src/lib/libcrypto/sha/shatest.c
+++ b/src/lib/libcrypto/sha/shatest.c
@@ -123,9 +123,9 @@ int main(int argc, char *argv[])
123 i=1; 123 i=1;
124 while (*P != NULL) 124 while (*P != NULL)
125 { 125 {
126 EVP_Digest(*P,strlen((char *)*P),md,NULL,EVP_sha(), NULL); 126 EVP_Digest(*P,strlen(*P),md,NULL,EVP_sha(), NULL);
127 p=pt(md); 127 p=pt(md);
128 if (strcmp(p,(char *)*R) != 0) 128 if (strcmp(p,*R) != 0)
129 { 129 {
130 printf("error calculating SHA on '%s'\n",*P); 130 printf("error calculating SHA on '%s'\n",*P);
131 printf("got %s instead of %s\n",p,*R); 131 printf("got %s instead of %s\n",p,*R);
diff --git a/src/lib/libcrypto/stack/Makefile b/src/lib/libcrypto/stack/Makefile
index 489a77b93c..5327692ac8 100644
--- a/src/lib/libcrypto/stack/Makefile
+++ b/src/lib/libcrypto/stack/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
diff --git a/src/lib/libcrypto/symhacks.h b/src/lib/libcrypto/symhacks.h
index 8728e6124d..3fd4a81692 100644
--- a/src/lib/libcrypto/symhacks.h
+++ b/src/lib/libcrypto/symhacks.h
@@ -60,12 +60,13 @@
60/* Hacks to solve the problem with linkers incapable of handling very long 60/* Hacks to solve the problem with linkers incapable of handling very long
61 symbol names. In the case of VMS, the limit is 31 characters on VMS for 61 symbol names. In the case of VMS, the limit is 31 characters on VMS for
62 VAX. */ 62 VAX. */
63/* Note that this affects util/libeay.num and util/ssleay.num... you may
64 change those manually, but that's not recommended, as those files are
65 controlled centrally and updated on Unix, and the central definition
66 may disagree with yours, which in turn may come with shareable library
67 incompatibilities. */
63#ifdef OPENSSL_SYS_VMS 68#ifdef OPENSSL_SYS_VMS
64 69
65/* Hack a long name in crypto/cryptlib.c */
66#undef int_CRYPTO_set_do_dynlock_callback
67#define int_CRYPTO_set_do_dynlock_callback int_CRYPTO_set_do_dynlock_cb
68
69/* Hack a long name in crypto/ex_data.c */ 70/* Hack a long name in crypto/ex_data.c */
70#undef CRYPTO_get_ex_data_implementation 71#undef CRYPTO_get_ex_data_implementation
71#define CRYPTO_get_ex_data_implementation CRYPTO_get_ex_data_impl 72#define CRYPTO_get_ex_data_implementation CRYPTO_get_ex_data_impl
@@ -137,6 +138,8 @@
137#define X509_policy_node_get0_qualifiers X509_pcy_node_get0_qualifiers 138#define X509_policy_node_get0_qualifiers X509_pcy_node_get0_qualifiers
138#undef X509_STORE_CTX_get_explicit_policy 139#undef X509_STORE_CTX_get_explicit_policy
139#define X509_STORE_CTX_get_explicit_policy X509_STORE_CTX_get_expl_policy 140#define X509_STORE_CTX_get_explicit_policy X509_STORE_CTX_get_expl_policy
141#undef X509_STORE_CTX_get0_current_issuer
142#define X509_STORE_CTX_get0_current_issuer X509_STORE_CTX_get0_cur_issuer
140 143
141/* Hack some long CRYPTO names */ 144/* Hack some long CRYPTO names */
142#undef CRYPTO_set_dynlock_destroy_callback 145#undef CRYPTO_set_dynlock_destroy_callback
@@ -144,9 +147,9 @@
144#undef CRYPTO_set_dynlock_create_callback 147#undef CRYPTO_set_dynlock_create_callback
145#define CRYPTO_set_dynlock_create_callback CRYPTO_set_dynlock_create_cb 148#define CRYPTO_set_dynlock_create_callback CRYPTO_set_dynlock_create_cb
146#undef CRYPTO_set_dynlock_lock_callback 149#undef CRYPTO_set_dynlock_lock_callback
147#define CRYPTO_set_dynlock_lock_callback CRYPTO_set_dynlock_lock_cb 150#define CRYPTO_set_dynlock_lock_callback CRYPTO_set_dynlock_lock_cb
148#undef CRYPTO_get_dynlock_lock_callback 151#undef CRYPTO_get_dynlock_lock_callback
149#define CRYPTO_get_dynlock_lock_callback CRYPTO_get_dynlock_lock_cb 152#define CRYPTO_get_dynlock_lock_callback CRYPTO_get_dynlock_lock_cb
150#undef CRYPTO_get_dynlock_destroy_callback 153#undef CRYPTO_get_dynlock_destroy_callback
151#define CRYPTO_get_dynlock_destroy_callback CRYPTO_get_dynlock_destroy_cb 154#define CRYPTO_get_dynlock_destroy_callback CRYPTO_get_dynlock_destroy_cb
152#undef CRYPTO_get_dynlock_create_callback 155#undef CRYPTO_get_dynlock_create_callback
@@ -158,7 +161,7 @@
158 161
159/* Hack some long SSL names */ 162/* Hack some long SSL names */
160#undef SSL_CTX_set_default_verify_paths 163#undef SSL_CTX_set_default_verify_paths
161#define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths 164#define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths
162#undef SSL_get_ex_data_X509_STORE_CTX_idx 165#undef SSL_get_ex_data_X509_STORE_CTX_idx
163#define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_d_X509_STORE_CTX_idx 166#define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_d_X509_STORE_CTX_idx
164#undef SSL_add_file_cert_subjects_to_stack 167#undef SSL_add_file_cert_subjects_to_stack
@@ -168,21 +171,38 @@
168#undef SSL_CTX_use_certificate_chain_file 171#undef SSL_CTX_use_certificate_chain_file
169#define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file 172#define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file
170#undef SSL_CTX_set_cert_verify_callback 173#undef SSL_CTX_set_cert_verify_callback
171#define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb 174#define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb
172#undef SSL_CTX_set_default_passwd_cb_userdata 175#undef SSL_CTX_set_default_passwd_cb_userdata
173#define SSL_CTX_set_default_passwd_cb_userdata SSL_CTX_set_def_passwd_cb_ud 176#define SSL_CTX_set_default_passwd_cb_userdata SSL_CTX_set_def_passwd_cb_ud
174#undef SSL_COMP_get_compression_methods 177#undef SSL_COMP_get_compression_methods
175#define SSL_COMP_get_compression_methods SSL_COMP_get_compress_methods 178#define SSL_COMP_get_compression_methods SSL_COMP_get_compress_methods
176 179
180#undef ssl_add_clienthello_renegotiate_ext
181#define ssl_add_clienthello_renegotiate_ext ssl_add_clienthello_reneg_ext
182#undef ssl_add_serverhello_renegotiate_ext
183#define ssl_add_serverhello_renegotiate_ext ssl_add_serverhello_reneg_ext
184#undef ssl_parse_clienthello_renegotiate_ext
185#define ssl_parse_clienthello_renegotiate_ext ssl_parse_clienthello_reneg_ext
186#undef ssl_parse_serverhello_renegotiate_ext
187#define ssl_parse_serverhello_renegotiate_ext ssl_parse_serverhello_reneg_ext
188
177/* Hack some long ENGINE names */ 189/* Hack some long ENGINE names */
178#undef ENGINE_get_default_BN_mod_exp_crt 190#undef ENGINE_get_default_BN_mod_exp_crt
179#define ENGINE_get_default_BN_mod_exp_crt ENGINE_get_def_BN_mod_exp_crt 191#define ENGINE_get_default_BN_mod_exp_crt ENGINE_get_def_BN_mod_exp_crt
180#undef ENGINE_set_default_BN_mod_exp_crt 192#undef ENGINE_set_default_BN_mod_exp_crt
181#define ENGINE_set_default_BN_mod_exp_crt ENGINE_set_def_BN_mod_exp_crt 193#define ENGINE_set_default_BN_mod_exp_crt ENGINE_set_def_BN_mod_exp_crt
182#undef ENGINE_set_load_privkey_function 194#undef ENGINE_set_load_privkey_function
183#define ENGINE_set_load_privkey_function ENGINE_set_load_privkey_fn 195#define ENGINE_set_load_privkey_function ENGINE_set_load_privkey_fn
184#undef ENGINE_get_load_privkey_function 196#undef ENGINE_get_load_privkey_function
185#define ENGINE_get_load_privkey_function ENGINE_get_load_privkey_fn 197#define ENGINE_get_load_privkey_function ENGINE_get_load_privkey_fn
198#undef ENGINE_unregister_pkey_asn1_meths
199#define ENGINE_unregister_pkey_asn1_meths ENGINE_unreg_pkey_asn1_meths
200#undef ENGINE_register_all_pkey_asn1_meths
201#define ENGINE_register_all_pkey_asn1_meths ENGINE_reg_all_pkey_asn1_meths
202#undef ENGINE_set_default_pkey_asn1_meths
203#define ENGINE_set_default_pkey_asn1_meths ENGINE_set_def_pkey_asn1_meths
204#undef ENGINE_get_pkey_asn1_meth_engine
205#define ENGINE_get_pkey_asn1_meth_engine ENGINE_get_pkey_asn1_meth_eng
186#undef ENGINE_set_load_ssl_client_cert_function 206#undef ENGINE_set_load_ssl_client_cert_function
187#define ENGINE_set_load_ssl_client_cert_function \ 207#define ENGINE_set_load_ssl_client_cert_function \
188 ENGINE_set_ld_ssl_clnt_cert_fn 208 ENGINE_set_ld_ssl_clnt_cert_fn
@@ -191,7 +211,7 @@
191 211
192/* Hack some long OCSP names */ 212/* Hack some long OCSP names */
193#undef OCSP_REQUEST_get_ext_by_critical 213#undef OCSP_REQUEST_get_ext_by_critical
194#define OCSP_REQUEST_get_ext_by_critical OCSP_REQUEST_get_ext_by_crit 214#define OCSP_REQUEST_get_ext_by_critical OCSP_REQUEST_get_ext_by_crit
195#undef OCSP_BASICRESP_get_ext_by_critical 215#undef OCSP_BASICRESP_get_ext_by_critical
196#define OCSP_BASICRESP_get_ext_by_critical OCSP_BASICRESP_get_ext_by_crit 216#define OCSP_BASICRESP_get_ext_by_critical OCSP_BASICRESP_get_ext_by_crit
197#undef OCSP_SINGLERESP_get_ext_by_critical 217#undef OCSP_SINGLERESP_get_ext_by_critical
@@ -208,6 +228,8 @@
208#define OPENSSL_add_all_algorithms_noconf OPENSSL_add_all_algo_noconf 228#define OPENSSL_add_all_algorithms_noconf OPENSSL_add_all_algo_noconf
209#undef OPENSSL_add_all_algorithms_conf 229#undef OPENSSL_add_all_algorithms_conf
210#define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf 230#define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf
231#undef EVP_PKEY_meth_set_verify_recover
232#define EVP_PKEY_meth_set_verify_recover EVP_PKEY_meth_set_vrfy_recover
211 233
212/* Hack some long EC names */ 234/* Hack some long EC names */
213#undef EC_GROUP_set_point_conversion_form 235#undef EC_GROUP_set_point_conversion_form
@@ -236,15 +258,15 @@
236#define EC_POINT_set_compressed_coordinates_GF2m \ 258#define EC_POINT_set_compressed_coordinates_GF2m \
237 EC_POINT_set_compr_coords_GF2m 259 EC_POINT_set_compr_coords_GF2m
238#undef ec_GF2m_simple_group_clear_finish 260#undef ec_GF2m_simple_group_clear_finish
239#define ec_GF2m_simple_group_clear_finish ec_GF2m_simple_grp_clr_finish 261#define ec_GF2m_simple_group_clear_finish ec_GF2m_simple_grp_clr_finish
240#undef ec_GF2m_simple_group_check_discriminant 262#undef ec_GF2m_simple_group_check_discriminant
241#define ec_GF2m_simple_group_check_discriminant ec_GF2m_simple_grp_chk_discrim 263#define ec_GF2m_simple_group_check_discriminant ec_GF2m_simple_grp_chk_discrim
242#undef ec_GF2m_simple_point_clear_finish 264#undef ec_GF2m_simple_point_clear_finish
243#define ec_GF2m_simple_point_clear_finish ec_GF2m_simple_pt_clr_finish 265#define ec_GF2m_simple_point_clear_finish ec_GF2m_simple_pt_clr_finish
244#undef ec_GF2m_simple_point_set_to_infinity 266#undef ec_GF2m_simple_point_set_to_infinity
245#define ec_GF2m_simple_point_set_to_infinity ec_GF2m_simple_pt_set_to_inf 267#define ec_GF2m_simple_point_set_to_infinity ec_GF2m_simple_pt_set_to_inf
246#undef ec_GF2m_simple_points_make_affine 268#undef ec_GF2m_simple_points_make_affine
247#define ec_GF2m_simple_points_make_affine ec_GF2m_simple_pts_make_affine 269#define ec_GF2m_simple_points_make_affine ec_GF2m_simple_pts_make_affine
248#undef ec_GF2m_simple_point_set_affine_coordinates 270#undef ec_GF2m_simple_point_set_affine_coordinates
249#define ec_GF2m_simple_point_set_affine_coordinates \ 271#define ec_GF2m_simple_point_set_affine_coordinates \
250 ec_GF2m_smp_pt_set_af_coords 272 ec_GF2m_smp_pt_set_af_coords
@@ -259,19 +281,19 @@
259#undef ec_GFp_simple_group_get_curve_GFp 281#undef ec_GFp_simple_group_get_curve_GFp
260#define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp 282#define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp
261#undef ec_GFp_simple_group_clear_finish 283#undef ec_GFp_simple_group_clear_finish
262#define ec_GFp_simple_group_clear_finish ec_GFp_simple_grp_clear_finish 284#define ec_GFp_simple_group_clear_finish ec_GFp_simple_grp_clear_finish
263#undef ec_GFp_simple_group_set_generator 285#undef ec_GFp_simple_group_set_generator
264#define ec_GFp_simple_group_set_generator ec_GFp_simple_grp_set_generator 286#define ec_GFp_simple_group_set_generator ec_GFp_simple_grp_set_generator
265#undef ec_GFp_simple_group_get0_generator 287#undef ec_GFp_simple_group_get0_generator
266#define ec_GFp_simple_group_get0_generator ec_GFp_simple_grp_gt0_generator 288#define ec_GFp_simple_group_get0_generator ec_GFp_simple_grp_gt0_generator
267#undef ec_GFp_simple_group_get_cofactor 289#undef ec_GFp_simple_group_get_cofactor
268#define ec_GFp_simple_group_get_cofactor ec_GFp_simple_grp_get_cofactor 290#define ec_GFp_simple_group_get_cofactor ec_GFp_simple_grp_get_cofactor
269#undef ec_GFp_simple_point_clear_finish 291#undef ec_GFp_simple_point_clear_finish
270#define ec_GFp_simple_point_clear_finish ec_GFp_simple_pt_clear_finish 292#define ec_GFp_simple_point_clear_finish ec_GFp_simple_pt_clear_finish
271#undef ec_GFp_simple_point_set_to_infinity 293#undef ec_GFp_simple_point_set_to_infinity
272#define ec_GFp_simple_point_set_to_infinity ec_GFp_simple_pt_set_to_inf 294#define ec_GFp_simple_point_set_to_infinity ec_GFp_simple_pt_set_to_inf
273#undef ec_GFp_simple_points_make_affine 295#undef ec_GFp_simple_points_make_affine
274#define ec_GFp_simple_points_make_affine ec_GFp_simple_pts_make_affine 296#define ec_GFp_simple_points_make_affine ec_GFp_simple_pts_make_affine
275#undef ec_GFp_simple_group_get_curve_GFp 297#undef ec_GFp_simple_group_get_curve_GFp
276#define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp 298#define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp
277#undef ec_GFp_simple_set_Jprojective_coordinates_GFp 299#undef ec_GFp_simple_set_Jprojective_coordinates_GFp
@@ -351,6 +373,14 @@
351#undef STORE_method_get_unlock_store_function 373#undef STORE_method_get_unlock_store_function
352#define STORE_method_get_unlock_store_function STORE_meth_get_unlock_store_fn 374#define STORE_method_get_unlock_store_function STORE_meth_get_unlock_store_fn
353 375
376/* Hack some long TS names */
377#undef TS_RESP_CTX_set_status_info_cond
378#define TS_RESP_CTX_set_status_info_cond TS_RESP_CTX_set_stat_info_cond
379#undef TS_RESP_CTX_set_clock_precision_digits
380#define TS_RESP_CTX_set_clock_precision_digits TS_RESP_CTX_set_clk_prec_digits
381#undef TS_CONF_set_clock_precision_digits
382#define TS_CONF_set_clock_precision_digits TS_CONF_set_clk_prec_digits
383
354/* Hack some long CMS names */ 384/* Hack some long CMS names */
355#undef CMS_RecipientInfo_ktri_get0_algs 385#undef CMS_RecipientInfo_ktri_get0_algs
356#define CMS_RecipientInfo_ktri_get0_algs CMS_RecipInfo_ktri_get0_algs 386#define CMS_RecipientInfo_ktri_get0_algs CMS_RecipInfo_ktri_get0_algs
@@ -365,24 +395,34 @@
365#undef cms_SignerIdentifier_get0_signer_id 395#undef cms_SignerIdentifier_get0_signer_id
366#define cms_SignerIdentifier_get0_signer_id cms_SignerId_get0_signer_id 396#define cms_SignerIdentifier_get0_signer_id cms_SignerId_get0_signer_id
367 397
398/* Hack some long DTLS1 names */
399#undef dtls1_retransmit_buffered_messages
400#define dtls1_retransmit_buffered_messages dtls1_retransmit_buffered_msgs
401
402/* Hack some long UI names */
403#undef UI_method_get_prompt_constructor
404#define UI_method_get_prompt_constructor UI_method_get_prompt_constructr
405#undef UI_method_set_prompt_constructor
406#define UI_method_set_prompt_constructor UI_method_set_prompt_constructr
407
368#endif /* defined OPENSSL_SYS_VMS */ 408#endif /* defined OPENSSL_SYS_VMS */
369 409
370 410
371/* Case insensiteve linking causes problems.... */ 411/* Case insensitive linking causes problems.... */
372#if defined(OPENSSL_SYS_WIN16) || defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2) 412#if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2)
373#undef ERR_load_CRYPTO_strings 413#undef ERR_load_CRYPTO_strings
374#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings 414#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings
375#undef OCSP_crlID_new 415#undef OCSP_crlID_new
376#define OCSP_crlID_new OCSP_crlID2_new 416#define OCSP_crlID_new OCSP_crlID2_new
377 417
378#undef d2i_ECPARAMETERS 418#undef d2i_ECPARAMETERS
379#define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS 419#define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS
380#undef i2d_ECPARAMETERS 420#undef i2d_ECPARAMETERS
381#define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS 421#define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS
382#undef d2i_ECPKPARAMETERS 422#undef d2i_ECPKPARAMETERS
383#define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS 423#define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS
384#undef i2d_ECPKPARAMETERS 424#undef i2d_ECPKPARAMETERS
385#define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS 425#define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS
386 426
387/* These functions do not seem to exist! However, I'm paranoid... 427/* These functions do not seem to exist! However, I'm paranoid...
388 Original command in x509v3.h: 428 Original command in x509v3.h:
@@ -391,19 +431,19 @@
391 hide them a little, by giving them an extra 'o' at the 431 hide them a little, by giving them an extra 'o' at the
392 beginning of the name... */ 432 beginning of the name... */
393#undef X509v3_cleanup_extensions 433#undef X509v3_cleanup_extensions
394#define X509v3_cleanup_extensions oX509v3_cleanup_extensions 434#define X509v3_cleanup_extensions oX509v3_cleanup_extensions
395#undef X509v3_add_extension 435#undef X509v3_add_extension
396#define X509v3_add_extension oX509v3_add_extension 436#define X509v3_add_extension oX509v3_add_extension
397#undef X509v3_add_netscape_extensions 437#undef X509v3_add_netscape_extensions
398#define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions 438#define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions
399#undef X509v3_add_standard_extensions 439#undef X509v3_add_standard_extensions
400#define X509v3_add_standard_extensions oX509v3_add_standard_extensions 440#define X509v3_add_standard_extensions oX509v3_add_standard_extensions
401 441
442/* This one clashes with CMS_data_create */
443#undef cms_Data_create
444#define cms_Data_create priv_cms_Data_create
402 445
403#endif 446#endif
404 447
405 448
406#endif /* ! defined HEADER_VMS_IDHACKS_H */ 449#endif /* ! defined HEADER_VMS_IDHACKS_H */
407/* This one clashes with CMS_data_create */
408#undef cms_Data_create
409#define cms_Data_create priv_cms_Data_create
diff --git a/src/lib/libcrypto/threads/mttest.c b/src/lib/libcrypto/threads/mttest.c
index f6f3df4b6a..eba7aa8a6e 100644
--- a/src/lib/libcrypto/threads/mttest.c
+++ b/src/lib/libcrypto/threads/mttest.c
@@ -117,11 +117,13 @@ void solaris_locking_callback(int mode,int type,char *file,int line);
117void win32_locking_callback(int mode,int type,char *file,int line); 117void win32_locking_callback(int mode,int type,char *file,int line);
118void pthreads_locking_callback(int mode,int type,char *file,int line); 118void pthreads_locking_callback(int mode,int type,char *file,int line);
119void netware_locking_callback(int mode,int type,char *file,int line); 119void netware_locking_callback(int mode,int type,char *file,int line);
120void beos_locking_callback(int mode,int type,const char *file,int line);
120 121
121unsigned long irix_thread_id(void ); 122unsigned long irix_thread_id(void );
122unsigned long solaris_thread_id(void ); 123unsigned long solaris_thread_id(void );
123unsigned long pthreads_thread_id(void ); 124unsigned long pthreads_thread_id(void );
124unsigned long netware_thread_id(void ); 125unsigned long netware_thread_id(void );
126unsigned long beos_thread_id(void );
125 127
126#if defined(OPENSSL_SYS_NETWARE) 128#if defined(OPENSSL_SYS_NETWARE)
127static MPKMutex *lock_cs; 129static MPKMutex *lock_cs;
@@ -1209,3 +1211,100 @@ unsigned long netware_thread_id(void)
1209 return(ret); 1211 return(ret);
1210} 1212}
1211#endif /* NETWARE */ 1213#endif /* NETWARE */
1214
1215#ifdef BEOS_THREADS
1216
1217#include <Locker.h>
1218
1219static BLocker** lock_cs;
1220static long* lock_count;
1221
1222void thread_setup(void)
1223 {
1224 int i;
1225
1226 lock_cs=(BLocker**)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(BLocker*));
1227 lock_count=(long*)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(long));
1228 for (i=0; i<CRYPTO_num_locks(); i++)
1229 {
1230 lock_count[i]=0;
1231 lock_cs[i] = new BLocker(CRYPTO_get_lock_name(i));
1232 }
1233
1234 CRYPTO_set_id_callback((unsigned long (*)())beos_thread_id);
1235 CRYPTO_set_locking_callback(beos_locking_callback);
1236 }
1237
1238void thread_cleanup(void)
1239 {
1240 int i;
1241
1242 CRYPTO_set_locking_callback(NULL);
1243 fprintf(stderr,"cleanup\n");
1244 for (i=0; i<CRYPTO_num_locks(); i++)
1245 {
1246 delete lock_cs[i];
1247 fprintf(stderr,"%8ld:%s\n",lock_count[i],
1248 CRYPTO_get_lock_name(i));
1249 }
1250 OPENSSL_free(lock_cs);
1251 OPENSSL_free(lock_count);
1252
1253 fprintf(stderr,"done cleanup\n");
1254 }
1255
1256void beos_locking_callback(int mode, int type, const char *file, int line)
1257 {
1258#if 0
1259 fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n",
1260 CRYPTO_thread_id(),
1261 (mode&CRYPTO_LOCK)?"l":"u",
1262 (type&CRYPTO_READ)?"r":"w",file,line);
1263#endif
1264 if (mode & CRYPTO_LOCK)
1265 {
1266 lock_cs[type]->Lock();
1267 lock_count[type]++;
1268 }
1269 else
1270 {
1271 lock_cs[type]->Unlock();
1272 }
1273 }
1274
1275void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
1276 {
1277 SSL_CTX *ssl_ctx[2];
1278 thread_id thread_ctx[MAX_THREAD_NUMBER];
1279 int i;
1280
1281 ssl_ctx[0]=s_ctx;
1282 ssl_ctx[1]=c_ctx;
1283
1284 for (i=0; i<thread_number; i++)
1285 {
1286 thread_ctx[i] = spawn_thread((thread_func)ndoit,
1287 NULL, B_NORMAL_PRIORITY, (void *)ssl_ctx);
1288 resume_thread(thread_ctx[i]);
1289 }
1290
1291 printf("waiting...\n");
1292 for (i=0; i<thread_number; i++)
1293 {
1294 status_t result;
1295 wait_for_thread(thread_ctx[i], &result);
1296 }
1297
1298 printf("beos threads done (%d,%d)\n",
1299 s_ctx->references,c_ctx->references);
1300 }
1301
1302unsigned long beos_thread_id(void)
1303 {
1304 unsigned long ret;
1305
1306 ret=(unsigned long)find_thread(NULL);
1307 return(ret);
1308 }
1309
1310#endif /* BEOS_THREADS */
diff --git a/src/lib/libcrypto/threads/pthreads-vms.com b/src/lib/libcrypto/threads/pthreads-vms.com
index 63f5b8cc2e..1cf92bdf57 100644
--- a/src/lib/libcrypto/threads/pthreads-vms.com
+++ b/src/lib/libcrypto/threads/pthreads-vms.com
@@ -2,8 +2,13 @@ $! To compile mttest on VMS.
2$! 2$!
3$! WARNING: only tested with DEC C so far. 3$! WARNING: only tested with DEC C so far.
4$ 4$
5$ arch := vax 5$ if (f$getsyi("cpu").lt.128)
6$ if f$getsyi("CPU") .ge. 128 then arch := axp 6$ then
7$ arch := VAX
8$ else
9$ arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
10$ if (arch .eqs. "") then arch = "UNK"
11$ endif
7$ define/user openssl [--.include.openssl] 12$ define/user openssl [--.include.openssl]
8$ cc/def=PTHREADS mttest.c 13$ cc/def=PTHREADS mttest.c
9$ link mttest,[--.'arch'.exe.ssl]libssl/lib,[--.'arch'.exe.crypto]libcrypto/lib 14$ link mttest,[--.'arch'.exe.ssl]libssl/lib,[--.'arch'.exe.crypto]libcrypto/lib
diff --git a/src/lib/libcrypto/txt_db/Makefile b/src/lib/libcrypto/txt_db/Makefile
index 87e57b49f6..e6f30331d8 100644
--- a/src/lib/libcrypto/txt_db/Makefile
+++ b/src/lib/libcrypto/txt_db/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
diff --git a/src/lib/libcrypto/ui/Makefile b/src/lib/libcrypto/ui/Makefile
index 4755e206f6..a685659fb4 100644
--- a/src/lib/libcrypto/ui/Makefile
+++ b/src/lib/libcrypto/ui/Makefile
@@ -37,7 +37,7 @@ top:
37all: lib 37all: lib
38 38
39lib: $(LIBOBJ) 39lib: $(LIBOBJ)
40 $(ARX) $(LIB) $(LIBOBJ) 40 $(AR) $(LIB) $(LIBOBJ)
41 $(RANLIB) $(LIB) || echo Never mind. 41 $(RANLIB) $(LIB) || echo Never mind.
42 @touch lib 42 @touch lib
43 43
diff --git a/src/lib/libcrypto/util/ck_errf.pl b/src/lib/libcrypto/util/ck_errf.pl
index 344b422c34..f13af5c50b 100644
--- a/src/lib/libcrypto/util/ck_errf.pl
+++ b/src/lib/libcrypto/util/ck_errf.pl
@@ -7,8 +7,16 @@
7# perl util/ck_errf.pl */*.c */*/*.c 7# perl util/ck_errf.pl */*.c */*/*.c
8# 8#
9 9
10my $err_strict = 0;
11my $bad = 0;
12
10foreach $file (@ARGV) 13foreach $file (@ARGV)
11 { 14 {
15 if ($file eq "-strict")
16 {
17 $err_strict = 1;
18 next;
19 }
12 open(IN,"<$file") || die "unable to open $file\n"; 20 open(IN,"<$file") || die "unable to open $file\n";
13 $func=""; 21 $func="";
14 while (<IN>) 22 while (<IN>)
@@ -20,13 +28,13 @@ foreach $file (@ARGV)
20 $func = $1; 28 $func = $1;
21 $func =~ tr/A-Z/a-z/; 29 $func =~ tr/A-Z/a-z/;
22 } 30 }
23 if (/([A-Z0-9]+)err\(([^,]+)/) 31 if (/([A-Z0-9]+)err\(([^,]+)/ && ! /ckerr_ignore/)
24 { 32 {
25 $errlib=$1; 33 $errlib=$1;
26 $n=$2; 34 $n=$2;
27 35
28 if ($func eq "") 36 if ($func eq "")
29 { print "$file:$.:???:$n\n"; next; } 37 { print "$file:$.:???:$n\n"; $bad = 1; next; }
30 38
31 if ($n !~ /([^_]+)_F_(.+)$/) 39 if ($n !~ /([^_]+)_F_(.+)$/)
32 { 40 {
@@ -37,14 +45,20 @@ foreach $file (@ARGV)
37 $n=$2; 45 $n=$2;
38 46
39 if ($lib ne $errlib) 47 if ($lib ne $errlib)
40 { print "$file:$.:$func:$n [${errlib}err]\n"; next; } 48 { print "$file:$.:$func:$n [${errlib}err]\n"; $bad = 1; next; }
41 49
42 $n =~ tr/A-Z/a-z/; 50 $n =~ tr/A-Z/a-z/;
43 if (($n ne $func) && ($errlib ne "SYS")) 51 if (($n ne $func) && ($errlib ne "SYS"))
44 { print "$file:$.:$func:$n\n"; next; } 52 { print "$file:$.:$func:$n\n"; $bad = 1; next; }
45 # print "$func:$1\n"; 53 # print "$func:$1\n";
46 } 54 }
47 } 55 }
48 close(IN); 56 close(IN);
49 } 57 }
50 58
59if ($bad && $err_strict)
60 {
61 print STDERR "FATAL: error discrepancy\n";
62 exit 1;
63 }
64
diff --git a/src/lib/libcrypto/util/clean-depend.pl b/src/lib/libcrypto/util/clean-depend.pl
index 2b2bdb4048..d3525b0ed0 100644
--- a/src/lib/libcrypto/util/clean-depend.pl
+++ b/src/lib/libcrypto/util/clean-depend.pl
@@ -42,6 +42,7 @@ foreach $file (sort keys %files) {
42 my @deps = map { $_ =~ s/^\.\///; $_ } @{$files{$file}}; 42 my @deps = map { $_ =~ s/^\.\///; $_ } @{$files{$file}};
43 43
44 foreach $dep (sort @deps) { 44 foreach $dep (sort @deps) {
45 $dep=~s/^\.\///;
45 next if $prevdep eq $dep; # to exterminate duplicates... 46 next if $prevdep eq $dep; # to exterminate duplicates...
46 $prevdep = $dep; 47 $prevdep = $dep;
47 $len=0 if $len+length($dep)+1 >= 80; 48 $len=0 if $len+length($dep)+1 >= 80;
diff --git a/src/lib/libcrypto/util/cygwin.sh b/src/lib/libcrypto/util/cygwin.sh
index 89d1dda95b..a4f2e740b4 100644
--- a/src/lib/libcrypto/util/cygwin.sh
+++ b/src/lib/libcrypto/util/cygwin.sh
@@ -7,7 +7,7 @@
7# Uncomment when debugging 7# Uncomment when debugging
8#set -x 8#set -x
9 9
10CONFIG_OPTIONS="--prefix=/usr shared no-idea no-rc5 no-mdc2" 10CONFIG_OPTIONS="--prefix=/usr shared zlib no-idea no-rc5"
11INSTALL_PREFIX=/tmp/install 11INSTALL_PREFIX=/tmp/install
12 12
13VERSION= 13VERSION=
@@ -66,7 +66,7 @@ function create_cygwin_readme()
66 66
67 ./config ${CONFIG_OPTIONS} 67 ./config ${CONFIG_OPTIONS}
68 68
69 The IDEA, RC5 and MDC2 algorithms are disabled due to patent and/or 69 The IDEA and RC5 algorithms are disabled due to patent and/or
70 licensing issues. 70 licensing issues.
71 EOF 71 EOF
72} 72}
diff --git a/src/lib/libcrypto/util/deltree.com b/src/lib/libcrypto/util/deltree.com
new file mode 100644
index 0000000000..9f36b1a5e9
--- /dev/null
+++ b/src/lib/libcrypto/util/deltree.com
@@ -0,0 +1,34 @@
1$! DELTREE.COM
2$
3$ call deltree 'p1'
4$ exit $status
5$
6$ deltree: subroutine ! P1 is a name of a directory
7$ on control_y then goto dt_STOP
8$ on warning then goto dt_exit
9$ _dt_def = f$trnlnm("SYS$DISK")+f$directory()
10$ if f$parse(p1) .eqs. "" then exit
11$ set default 'f$parse(p1,,,"DEVICE")''f$parse(p1,,,"DIRECTORY")'
12$ p1 = f$parse(p1,,,"NAME") + f$parse(p1,,,"TYPE")
13$ _fp = f$parse(".DIR",p1)
14$ dt_loop:
15$ _f = f$search(_fp)
16$ if _f .eqs. "" then goto dt_loopend
17$ call deltree [.'f$parse(_f,,,"NAME")']*.*
18$ goto dt_loop
19$ dt_loopend:
20$ _fp = f$parse(p1,".;*")
21$ if f$search(_fp) .eqs. "" then goto dt_exit
22$ set noon
23$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) '_fp'
24$ set on
25$ delete/nolog '_fp'
26$ dt_exit:
27$ set default '_dt_def'
28$ goto dt_end
29$ dt_STOP:
30$ set default '_dt_def'
31$ stop/id=""
32$ exit
33$ dt_end:
34$ endsubroutine
diff --git a/src/lib/libcrypto/util/domd b/src/lib/libcrypto/util/domd
index 560ebeaf82..bab48cb7a2 100644
--- a/src/lib/libcrypto/util/domd
+++ b/src/lib/libcrypto/util/domd
@@ -14,7 +14,7 @@ if [ "$MAKEDEPEND" = "" ]; then MAKEDEPEND=makedepend; fi
14cp Makefile Makefile.save 14cp Makefile Makefile.save
15# fake the presence of Kerberos 15# fake the presence of Kerberos
16touch $TOP/krb5.h 16touch $TOP/krb5.h
17if [ "$MAKEDEPEND" = "gcc" ]; then 17if expr "$MAKEDEPEND" : '.*gcc$' > /dev/null; then
18 args="" 18 args=""
19 while [ $# -gt 0 ]; do 19 while [ $# -gt 0 ]; do
20 if [ "$1" != "--" ]; then args="$args $1"; fi 20 if [ "$1" != "--" ]; then args="$args $1"; fi
@@ -22,13 +22,17 @@ if [ "$MAKEDEPEND" = "gcc" ]; then
22 done 22 done
23 sed -e '/^# DO NOT DELETE.*/,$d' < Makefile > Makefile.tmp 23 sed -e '/^# DO NOT DELETE.*/,$d' < Makefile > Makefile.tmp
24 echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' >> Makefile.tmp 24 echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' >> Makefile.tmp
25 ${CC:-gcc} -D OPENSSL_DOING_MAKEDEPEND -M $args >> Makefile.tmp 25 ${MAKEDEPEND} -Werror -D OPENSSL_DOING_MAKEDEPEND -M $args >> Makefile.tmp || exit 1
26 ${PERL} $TOP/util/clean-depend.pl < Makefile.tmp > Makefile.new 26 ${PERL} $TOP/util/clean-depend.pl < Makefile.tmp > Makefile.new
27 RC=$?
27 rm -f Makefile.tmp 28 rm -f Makefile.tmp
28else 29else
29 ${MAKEDEPEND} -D OPENSSL_DOING_MAKEDEPEND $@ 30 ${MAKEDEPEND} -D OPENSSL_DOING_MAKEDEPEND $@ && \
30 ${PERL} $TOP/util/clean-depend.pl < Makefile > Makefile.new 31 ${PERL} $TOP/util/clean-depend.pl < Makefile > Makefile.new
32 RC=$?
31fi 33fi
32mv Makefile.new Makefile 34mv Makefile.new Makefile
33# unfake the presence of Kerberos 35# unfake the presence of Kerberos
34rm $TOP/krb5.h 36rm $TOP/krb5.h
37
38exit $RC
diff --git a/src/lib/libcrypto/util/libeay.num b/src/lib/libcrypto/util/libeay.num
index 74eb337227..6f3067ae2b 100644
--- a/src/lib/libcrypto/util/libeay.num
+++ b/src/lib/libcrypto/util/libeay.num
@@ -1,9 +1,9 @@
1SSLeay 1 EXIST::FUNCTION: 1SSLeay 1 EXIST::FUNCTION:
2SSLeay_version 2 EXIST::FUNCTION: 2SSLeay_version 2 EXIST::FUNCTION:
3ASN1_BIT_STRING_asn1_meth 3 EXIST::FUNCTION: 3ASN1_BIT_STRING_asn1_meth 3 NOEXIST::FUNCTION:
4ASN1_HEADER_free 4 EXIST::FUNCTION: 4ASN1_HEADER_free 4 NOEXIST::FUNCTION:
5ASN1_HEADER_new 5 EXIST::FUNCTION: 5ASN1_HEADER_new 5 NOEXIST::FUNCTION:
6ASN1_IA5STRING_asn1_meth 6 EXIST::FUNCTION: 6ASN1_IA5STRING_asn1_meth 6 NOEXIST::FUNCTION:
7ASN1_INTEGER_get 7 EXIST::FUNCTION: 7ASN1_INTEGER_get 7 EXIST::FUNCTION:
8ASN1_INTEGER_set 8 EXIST::FUNCTION: 8ASN1_INTEGER_set 8 EXIST::FUNCTION:
9ASN1_INTEGER_to_BN 9 EXIST::FUNCTION: 9ASN1_INTEGER_to_BN 9 EXIST::FUNCTION:
@@ -75,8 +75,8 @@ BIO_new 78 EXIST::FUNCTION:
75BIO_new_accept 79 EXIST::FUNCTION: 75BIO_new_accept 79 EXIST::FUNCTION:
76BIO_new_connect 80 EXIST::FUNCTION: 76BIO_new_connect 80 EXIST::FUNCTION:
77BIO_new_fd 81 EXIST::FUNCTION: 77BIO_new_fd 81 EXIST::FUNCTION:
78BIO_new_file 82 EXIST:!WIN16:FUNCTION:FP_API 78BIO_new_file 82 EXIST::FUNCTION:FP_API
79BIO_new_fp 83 EXIST:!WIN16:FUNCTION:FP_API 79BIO_new_fp 83 EXIST::FUNCTION:FP_API
80BIO_new_socket 84 EXIST::FUNCTION: 80BIO_new_socket 84 EXIST::FUNCTION:
81BIO_pop 85 EXIST::FUNCTION: 81BIO_pop 85 EXIST::FUNCTION:
82BIO_printf 86 EXIST::FUNCTION: 82BIO_printf 86 EXIST::FUNCTION:
@@ -86,7 +86,7 @@ BIO_read 89 EXIST::FUNCTION:
86BIO_s_accept 90 EXIST::FUNCTION: 86BIO_s_accept 90 EXIST::FUNCTION:
87BIO_s_connect 91 EXIST::FUNCTION: 87BIO_s_connect 91 EXIST::FUNCTION:
88BIO_s_fd 92 EXIST::FUNCTION: 88BIO_s_fd 92 EXIST::FUNCTION:
89BIO_s_file 93 EXIST:!WIN16:FUNCTION:FP_API 89BIO_s_file 93 EXIST::FUNCTION:FP_API
90BIO_s_mem 95 EXIST::FUNCTION: 90BIO_s_mem 95 EXIST::FUNCTION:
91BIO_s_null 96 EXIST::FUNCTION: 91BIO_s_null 96 EXIST::FUNCTION:
92BIO_s_proxy_client 97 NOEXIST::FUNCTION: 92BIO_s_proxy_client 97 NOEXIST::FUNCTION:
@@ -172,7 +172,7 @@ CRYPTO_dbg_realloc 179 EXIST::FUNCTION:
172CRYPTO_dbg_remalloc 180 NOEXIST::FUNCTION: 172CRYPTO_dbg_remalloc 180 NOEXIST::FUNCTION:
173CRYPTO_free 181 EXIST::FUNCTION: 173CRYPTO_free 181 EXIST::FUNCTION:
174CRYPTO_get_add_lock_callback 182 EXIST::FUNCTION: 174CRYPTO_get_add_lock_callback 182 EXIST::FUNCTION:
175CRYPTO_get_id_callback 183 EXIST::FUNCTION: 175CRYPTO_get_id_callback 183 EXIST::FUNCTION:DEPRECATED
176CRYPTO_get_lock_name 184 EXIST::FUNCTION: 176CRYPTO_get_lock_name 184 EXIST::FUNCTION:
177CRYPTO_get_locking_callback 185 EXIST::FUNCTION: 177CRYPTO_get_locking_callback 185 EXIST::FUNCTION:
178CRYPTO_get_mem_functions 186 EXIST::FUNCTION: 178CRYPTO_get_mem_functions 186 EXIST::FUNCTION:
@@ -185,10 +185,10 @@ CRYPTO_mem_leaks_fp 192 EXIST::FUNCTION:FP_API
185CRYPTO_realloc 193 EXIST::FUNCTION: 185CRYPTO_realloc 193 EXIST::FUNCTION:
186CRYPTO_remalloc 194 EXIST::FUNCTION: 186CRYPTO_remalloc 194 EXIST::FUNCTION:
187CRYPTO_set_add_lock_callback 195 EXIST::FUNCTION: 187CRYPTO_set_add_lock_callback 195 EXIST::FUNCTION:
188CRYPTO_set_id_callback 196 EXIST::FUNCTION: 188CRYPTO_set_id_callback 196 EXIST::FUNCTION:DEPRECATED
189CRYPTO_set_locking_callback 197 EXIST::FUNCTION: 189CRYPTO_set_locking_callback 197 EXIST::FUNCTION:
190CRYPTO_set_mem_functions 198 EXIST::FUNCTION: 190CRYPTO_set_mem_functions 198 EXIST::FUNCTION:
191CRYPTO_thread_id 199 EXIST::FUNCTION: 191CRYPTO_thread_id 199 EXIST::FUNCTION:DEPRECATED
192DH_check 200 EXIST::FUNCTION:DH 192DH_check 200 EXIST::FUNCTION:DH
193DH_compute_key 201 EXIST::FUNCTION:DH 193DH_compute_key 201 EXIST::FUNCTION:DH
194DH_free 202 EXIST::FUNCTION:DH 194DH_free 202 EXIST::FUNCTION:DH
@@ -243,7 +243,7 @@ ERR_print_errors 250 EXIST::FUNCTION:BIO
243ERR_print_errors_fp 251 EXIST::FUNCTION:FP_API 243ERR_print_errors_fp 251 EXIST::FUNCTION:FP_API
244ERR_put_error 252 EXIST::FUNCTION: 244ERR_put_error 252 EXIST::FUNCTION:
245ERR_reason_error_string 253 EXIST::FUNCTION: 245ERR_reason_error_string 253 EXIST::FUNCTION:
246ERR_remove_state 254 EXIST::FUNCTION: 246ERR_remove_state 254 EXIST::FUNCTION:DEPRECATED
247EVP_BytesToKey 255 EXIST::FUNCTION: 247EVP_BytesToKey 255 EXIST::FUNCTION:
248EVP_CIPHER_CTX_cleanup 256 EXIST::FUNCTION: 248EVP_CIPHER_CTX_cleanup 256 EXIST::FUNCTION:
249EVP_CipherFinal 257 EXIST::FUNCTION: 249EVP_CipherFinal 257 EXIST::FUNCTION:
@@ -343,7 +343,7 @@ NETSCAPE_SPKI_new 350 EXIST::FUNCTION:
343NETSCAPE_SPKI_sign 351 EXIST::FUNCTION:EVP 343NETSCAPE_SPKI_sign 351 EXIST::FUNCTION:EVP
344NETSCAPE_SPKI_verify 352 EXIST::FUNCTION:EVP 344NETSCAPE_SPKI_verify 352 EXIST::FUNCTION:EVP
345OBJ_add_object 353 EXIST::FUNCTION: 345OBJ_add_object 353 EXIST::FUNCTION:
346OBJ_bsearch 354 EXIST::FUNCTION: 346OBJ_bsearch 354 NOEXIST::FUNCTION:
347OBJ_cleanup 355 EXIST::FUNCTION: 347OBJ_cleanup 355 EXIST::FUNCTION:
348OBJ_cmp 356 EXIST::FUNCTION: 348OBJ_cmp 356 EXIST::FUNCTION:
349OBJ_create 357 EXIST::FUNCTION: 349OBJ_create 357 EXIST::FUNCTION:
@@ -356,9 +356,9 @@ OBJ_nid2sn 363 EXIST::FUNCTION:
356OBJ_obj2nid 364 EXIST::FUNCTION: 356OBJ_obj2nid 364 EXIST::FUNCTION:
357OBJ_sn2nid 365 EXIST::FUNCTION: 357OBJ_sn2nid 365 EXIST::FUNCTION:
358OBJ_txt2nid 366 EXIST::FUNCTION: 358OBJ_txt2nid 366 EXIST::FUNCTION:
359PEM_ASN1_read 367 EXIST:!WIN16:FUNCTION: 359PEM_ASN1_read 367 EXIST::FUNCTION:
360PEM_ASN1_read_bio 368 EXIST::FUNCTION:BIO 360PEM_ASN1_read_bio 368 EXIST::FUNCTION:BIO
361PEM_ASN1_write 369 EXIST:!WIN16:FUNCTION: 361PEM_ASN1_write 369 EXIST::FUNCTION:
362PEM_ASN1_write_bio 370 EXIST::FUNCTION:BIO 362PEM_ASN1_write_bio 370 EXIST::FUNCTION:BIO
363PEM_SealFinal 371 EXIST::FUNCTION:RSA 363PEM_SealFinal 371 EXIST::FUNCTION:RSA
364PEM_SealInit 372 EXIST::FUNCTION:RSA 364PEM_SealInit 372 EXIST::FUNCTION:RSA
@@ -366,14 +366,14 @@ PEM_SealUpdate 373 EXIST::FUNCTION:RSA
366PEM_SignFinal 374 EXIST::FUNCTION: 366PEM_SignFinal 374 EXIST::FUNCTION:
367PEM_SignInit 375 EXIST::FUNCTION: 367PEM_SignInit 375 EXIST::FUNCTION:
368PEM_SignUpdate 376 EXIST::FUNCTION: 368PEM_SignUpdate 376 EXIST::FUNCTION:
369PEM_X509_INFO_read 377 EXIST:!WIN16:FUNCTION: 369PEM_X509_INFO_read 377 EXIST::FUNCTION:
370PEM_X509_INFO_read_bio 378 EXIST::FUNCTION:BIO 370PEM_X509_INFO_read_bio 378 EXIST::FUNCTION:BIO
371PEM_X509_INFO_write_bio 379 EXIST::FUNCTION:BIO 371PEM_X509_INFO_write_bio 379 EXIST::FUNCTION:BIO
372PEM_dek_info 380 EXIST::FUNCTION: 372PEM_dek_info 380 EXIST::FUNCTION:
373PEM_do_header 381 EXIST::FUNCTION: 373PEM_do_header 381 EXIST::FUNCTION:
374PEM_get_EVP_CIPHER_INFO 382 EXIST::FUNCTION: 374PEM_get_EVP_CIPHER_INFO 382 EXIST::FUNCTION:
375PEM_proc_type 383 EXIST::FUNCTION: 375PEM_proc_type 383 EXIST::FUNCTION:
376PEM_read 384 EXIST:!WIN16:FUNCTION: 376PEM_read 384 EXIST::FUNCTION:
377PEM_read_DHparams 385 EXIST:!WIN16:FUNCTION:DH 377PEM_read_DHparams 385 EXIST:!WIN16:FUNCTION:DH
378PEM_read_DSAPrivateKey 386 EXIST:!WIN16:FUNCTION:DSA 378PEM_read_DSAPrivateKey 386 EXIST:!WIN16:FUNCTION:DSA
379PEM_read_DSAparams 387 EXIST:!WIN16:FUNCTION:DSA 379PEM_read_DSAparams 387 EXIST:!WIN16:FUNCTION:DSA
@@ -393,7 +393,7 @@ PEM_read_bio_RSAPrivateKey 400 EXIST::FUNCTION:RSA
393PEM_read_bio_X509 401 EXIST::FUNCTION: 393PEM_read_bio_X509 401 EXIST::FUNCTION:
394PEM_read_bio_X509_CRL 402 EXIST::FUNCTION: 394PEM_read_bio_X509_CRL 402 EXIST::FUNCTION:
395PEM_read_bio_X509_REQ 403 EXIST::FUNCTION: 395PEM_read_bio_X509_REQ 403 EXIST::FUNCTION:
396PEM_write 404 EXIST:!WIN16:FUNCTION: 396PEM_write 404 EXIST::FUNCTION:
397PEM_write_DHparams 405 EXIST:!WIN16:FUNCTION:DH 397PEM_write_DHparams 405 EXIST:!WIN16:FUNCTION:DH
398PEM_write_DSAPrivateKey 406 EXIST:!WIN16:FUNCTION:DSA 398PEM_write_DSAPrivateKey 406 EXIST:!WIN16:FUNCTION:DSA
399PEM_write_DSAparams 407 EXIST:!WIN16:FUNCTION:DSA 399PEM_write_DSAparams 407 EXIST:!WIN16:FUNCTION:DSA
@@ -469,7 +469,7 @@ RC2_set_key 476 EXIST::FUNCTION:RC2
469RC4 477 EXIST::FUNCTION:RC4 469RC4 477 EXIST::FUNCTION:RC4
470RC4_options 478 EXIST::FUNCTION:RC4 470RC4_options 478 EXIST::FUNCTION:RC4
471RC4_set_key 479 EXIST::FUNCTION:RC4 471RC4_set_key 479 EXIST::FUNCTION:RC4
472RSAPrivateKey_asn1_meth 480 EXIST::FUNCTION:RSA 472RSAPrivateKey_asn1_meth 480 NOEXIST::FUNCTION:
473RSAPrivateKey_dup 481 EXIST::FUNCTION:RSA 473RSAPrivateKey_dup 481 EXIST::FUNCTION:RSA
474RSAPublicKey_dup 482 EXIST::FUNCTION:RSA 474RSAPublicKey_dup 482 EXIST::FUNCTION:RSA
475RSA_PKCS1_SSLeay 483 EXIST::FUNCTION:RSA 475RSA_PKCS1_SSLeay 483 EXIST::FUNCTION:RSA
@@ -624,7 +624,7 @@ X509_STORE_set_default_paths 630 EXIST::FUNCTION:STDIO
624X509_VAL_free 631 EXIST::FUNCTION: 624X509_VAL_free 631 EXIST::FUNCTION:
625X509_VAL_new 632 EXIST::FUNCTION: 625X509_VAL_new 632 EXIST::FUNCTION:
626X509_add_ext 633 EXIST::FUNCTION: 626X509_add_ext 633 EXIST::FUNCTION:
627X509_asn1_meth 634 EXIST::FUNCTION: 627X509_asn1_meth 634 NOEXIST::FUNCTION:
628X509_certificate_type 635 EXIST::FUNCTION: 628X509_certificate_type 635 EXIST::FUNCTION:
629X509_check_private_key 636 EXIST::FUNCTION: 629X509_check_private_key 636 EXIST::FUNCTION:
630X509_cmp_current_time 637 EXIST::FUNCTION: 630X509_cmp_current_time 637 EXIST::FUNCTION:
@@ -704,7 +704,7 @@ bn_sqr_words 710 EXIST::FUNCTION:
704_ossl_old_crypt 711 EXIST:!NeXT,!PERL5:FUNCTION:DES 704_ossl_old_crypt 711 EXIST:!NeXT,!PERL5:FUNCTION:DES
705d2i_ASN1_BIT_STRING 712 EXIST::FUNCTION: 705d2i_ASN1_BIT_STRING 712 EXIST::FUNCTION:
706d2i_ASN1_BOOLEAN 713 EXIST::FUNCTION: 706d2i_ASN1_BOOLEAN 713 EXIST::FUNCTION:
707d2i_ASN1_HEADER 714 EXIST::FUNCTION: 707d2i_ASN1_HEADER 714 NOEXIST::FUNCTION:
708d2i_ASN1_IA5STRING 715 EXIST::FUNCTION: 708d2i_ASN1_IA5STRING 715 EXIST::FUNCTION:
709d2i_ASN1_INTEGER 716 EXIST::FUNCTION: 709d2i_ASN1_INTEGER 716 EXIST::FUNCTION:
710d2i_ASN1_OBJECT 717 EXIST::FUNCTION: 710d2i_ASN1_OBJECT 717 EXIST::FUNCTION:
@@ -809,7 +809,7 @@ i2a_ASN1_OBJECT 816 EXIST::FUNCTION:BIO
809i2a_ASN1_STRING 817 EXIST::FUNCTION:BIO 809i2a_ASN1_STRING 817 EXIST::FUNCTION:BIO
810i2d_ASN1_BIT_STRING 818 EXIST::FUNCTION: 810i2d_ASN1_BIT_STRING 818 EXIST::FUNCTION:
811i2d_ASN1_BOOLEAN 819 EXIST::FUNCTION: 811i2d_ASN1_BOOLEAN 819 EXIST::FUNCTION:
812i2d_ASN1_HEADER 820 EXIST::FUNCTION: 812i2d_ASN1_HEADER 820 NOEXIST::FUNCTION:
813i2d_ASN1_IA5STRING 821 EXIST::FUNCTION: 813i2d_ASN1_IA5STRING 821 EXIST::FUNCTION:
814i2d_ASN1_INTEGER 822 EXIST::FUNCTION: 814i2d_ASN1_INTEGER 822 EXIST::FUNCTION:
815i2d_ASN1_OBJECT 823 EXIST::FUNCTION: 815i2d_ASN1_OBJECT 823 EXIST::FUNCTION:
@@ -950,9 +950,9 @@ ERR_get_next_error_library 966 EXIST::FUNCTION:
950EVP_PKEY_cmp_parameters 967 EXIST::FUNCTION: 950EVP_PKEY_cmp_parameters 967 EXIST::FUNCTION:
951HMAC_cleanup 968 NOEXIST::FUNCTION: 951HMAC_cleanup 968 NOEXIST::FUNCTION:
952BIO_ptr_ctrl 969 EXIST::FUNCTION: 952BIO_ptr_ctrl 969 EXIST::FUNCTION:
953BIO_new_file_internal 970 EXIST:WIN16:FUNCTION:FP_API 953BIO_new_file_internal 970 NOEXIST::FUNCTION:
954BIO_new_fp_internal 971 EXIST:WIN16:FUNCTION:FP_API 954BIO_new_fp_internal 971 NOEXIST::FUNCTION:
955BIO_s_file_internal 972 EXIST:WIN16:FUNCTION:FP_API 955BIO_s_file_internal 972 NOEXIST::FUNCTION:
956BN_BLINDING_convert 973 EXIST::FUNCTION: 956BN_BLINDING_convert 973 EXIST::FUNCTION:
957BN_BLINDING_invert 974 EXIST::FUNCTION: 957BN_BLINDING_invert 974 EXIST::FUNCTION:
958BN_BLINDING_update 975 EXIST::FUNCTION: 958BN_BLINDING_update 975 EXIST::FUNCTION:
@@ -984,8 +984,8 @@ BIO_ghbn_ctrl 1003 NOEXIST::FUNCTION:
984CRYPTO_free_ex_data 1004 EXIST::FUNCTION: 984CRYPTO_free_ex_data 1004 EXIST::FUNCTION:
985CRYPTO_get_ex_data 1005 EXIST::FUNCTION: 985CRYPTO_get_ex_data 1005 EXIST::FUNCTION:
986CRYPTO_set_ex_data 1007 EXIST::FUNCTION: 986CRYPTO_set_ex_data 1007 EXIST::FUNCTION:
987ERR_load_CRYPTO_strings 1009 EXIST:!OS2,!VMS,!WIN16:FUNCTION: 987ERR_load_CRYPTO_strings 1009 EXIST:!OS2,!VMS:FUNCTION:
988ERR_load_CRYPTOlib_strings 1009 EXIST:OS2,VMS,WIN16:FUNCTION: 988ERR_load_CRYPTOlib_strings 1009 EXIST:OS2,VMS:FUNCTION:
989EVP_PKEY_bits 1010 EXIST::FUNCTION: 989EVP_PKEY_bits 1010 EXIST::FUNCTION:
990MD5_Transform 1011 EXIST::FUNCTION:MD5 990MD5_Transform 1011 EXIST::FUNCTION:MD5
991SHA1_Transform 1012 EXIST::FUNCTION:SHA,SHA1 991SHA1_Transform 1012 EXIST::FUNCTION:SHA,SHA1
@@ -1117,11 +1117,11 @@ COMP_compress_block 1144 EXIST::FUNCTION:
1117COMP_expand_block 1145 EXIST::FUNCTION: 1117COMP_expand_block 1145 EXIST::FUNCTION:
1118COMP_rle 1146 EXIST::FUNCTION: 1118COMP_rle 1146 EXIST::FUNCTION:
1119COMP_zlib 1147 EXIST::FUNCTION: 1119COMP_zlib 1147 EXIST::FUNCTION:
1120ms_time_diff 1148 EXIST::FUNCTION: 1120ms_time_diff 1148 NOEXIST::FUNCTION:
1121ms_time_new 1149 EXIST::FUNCTION: 1121ms_time_new 1149 NOEXIST::FUNCTION:
1122ms_time_free 1150 EXIST::FUNCTION: 1122ms_time_free 1150 NOEXIST::FUNCTION:
1123ms_time_cmp 1151 EXIST::FUNCTION: 1123ms_time_cmp 1151 NOEXIST::FUNCTION:
1124ms_time_get 1152 EXIST::FUNCTION: 1124ms_time_get 1152 NOEXIST::FUNCTION:
1125PKCS7_set_attributes 1153 EXIST::FUNCTION: 1125PKCS7_set_attributes 1153 EXIST::FUNCTION:
1126PKCS7_set_signed_attributes 1154 EXIST::FUNCTION: 1126PKCS7_set_signed_attributes 1154 EXIST::FUNCTION:
1127X509_ATTRIBUTE_create 1155 EXIST::FUNCTION: 1127X509_ATTRIBUTE_create 1155 EXIST::FUNCTION:
@@ -1255,8 +1255,8 @@ PKCS12_gen_mac 1278 EXIST::FUNCTION:
1255PKCS12_verify_mac 1279 EXIST::FUNCTION: 1255PKCS12_verify_mac 1279 EXIST::FUNCTION:
1256PKCS12_set_mac 1280 EXIST::FUNCTION: 1256PKCS12_set_mac 1280 EXIST::FUNCTION:
1257PKCS12_setup_mac 1281 EXIST::FUNCTION: 1257PKCS12_setup_mac 1281 EXIST::FUNCTION:
1258asc2uni 1282 EXIST::FUNCTION: 1258OPENSSL_asc2uni 1282 EXIST::FUNCTION:
1259uni2asc 1283 EXIST::FUNCTION: 1259OPENSSL_uni2asc 1283 EXIST::FUNCTION:
1260i2d_PKCS12_BAGS 1284 EXIST::FUNCTION: 1260i2d_PKCS12_BAGS 1284 EXIST::FUNCTION:
1261PKCS12_BAGS_new 1285 EXIST::FUNCTION: 1261PKCS12_BAGS_new 1285 EXIST::FUNCTION:
1262d2i_PKCS12_BAGS 1286 EXIST::FUNCTION: 1262d2i_PKCS12_BAGS 1286 EXIST::FUNCTION:
@@ -2081,7 +2081,7 @@ NETSCAPE_SPKAC_it 2641 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIA
2081NETSCAPE_SPKAC_it 2641 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2081NETSCAPE_SPKAC_it 2641 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2082X509_REVOKED_it 2642 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2082X509_REVOKED_it 2642 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2083X509_REVOKED_it 2642 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2083X509_REVOKED_it 2642 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2084ASN1_STRING_encode 2643 EXIST::FUNCTION: 2084ASN1_STRING_encode 2643 NOEXIST::FUNCTION:
2085EVP_aes_128_ecb 2644 EXIST::FUNCTION:AES 2085EVP_aes_128_ecb 2644 EXIST::FUNCTION:AES
2086KRB5_AUTHENT_free 2645 EXIST::FUNCTION: 2086KRB5_AUTHENT_free 2645 EXIST::FUNCTION:
2087OCSP_BASICRESP_get_ext_by_critical 2646 EXIST:!VMS:FUNCTION: 2087OCSP_BASICRESP_get_ext_by_critical 2646 EXIST:!VMS:FUNCTION:
@@ -2732,8 +2732,8 @@ EC_POINT_point2oct 3178 EXIST::FUNCTION:EC
2732KRB5_APREQ_free 3179 EXIST::FUNCTION: 2732KRB5_APREQ_free 3179 EXIST::FUNCTION:
2733ASN1_OBJECT_it 3180 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2733ASN1_OBJECT_it 3180 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2734ASN1_OBJECT_it 3180 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2734ASN1_OBJECT_it 3180 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2735OCSP_crlID_new 3181 EXIST:!OS2,!VMS,!WIN16:FUNCTION: 2735OCSP_crlID_new 3181 EXIST:!OS2,!VMS:FUNCTION:
2736OCSP_crlID2_new 3181 EXIST:OS2,VMS,WIN16:FUNCTION: 2736OCSP_crlID2_new 3181 EXIST:OS2,VMS:FUNCTION:
2737CONF_modules_load_file 3182 EXIST::FUNCTION: 2737CONF_modules_load_file 3182 EXIST::FUNCTION:
2738CONF_imodule_set_usr_data 3183 EXIST::FUNCTION: 2738CONF_imodule_set_usr_data 3183 EXIST::FUNCTION:
2739ENGINE_set_default_string 3184 EXIST::FUNCTION:ENGINE 2739ENGINE_set_default_string 3184 EXIST::FUNCTION:ENGINE
@@ -2804,57 +2804,57 @@ OPENSSL_cleanse 3245 EXIST::FUNCTION:
2804ENGINE_setup_bsd_cryptodev 3246 EXIST:__FreeBSD__:FUNCTION:ENGINE 2804ENGINE_setup_bsd_cryptodev 3246 EXIST:__FreeBSD__:FUNCTION:ENGINE
2805ERR_release_err_state_table 3247 EXIST::FUNCTION:LHASH 2805ERR_release_err_state_table 3247 EXIST::FUNCTION:LHASH
2806EVP_aes_128_cfb8 3248 EXIST::FUNCTION:AES 2806EVP_aes_128_cfb8 3248 EXIST::FUNCTION:AES
2807FIPS_corrupt_rsa 3249 EXIST:OPENSSL_FIPS:FUNCTION: 2807FIPS_corrupt_rsa 3249 NOEXIST::FUNCTION:
2808FIPS_selftest_des 3250 EXIST:OPENSSL_FIPS:FUNCTION: 2808FIPS_selftest_des 3250 NOEXIST::FUNCTION:
2809EVP_aes_128_cfb1 3251 EXIST::FUNCTION:AES 2809EVP_aes_128_cfb1 3251 EXIST::FUNCTION:AES
2810EVP_aes_192_cfb8 3252 EXIST::FUNCTION:AES 2810EVP_aes_192_cfb8 3252 EXIST::FUNCTION:AES
2811FIPS_mode_set 3253 EXIST:OPENSSL_FIPS:FUNCTION: 2811FIPS_mode_set 3253 NOEXIST::FUNCTION:
2812FIPS_selftest_dsa 3254 EXIST:OPENSSL_FIPS:FUNCTION: 2812FIPS_selftest_dsa 3254 NOEXIST::FUNCTION:
2813EVP_aes_256_cfb8 3255 EXIST::FUNCTION:AES 2813EVP_aes_256_cfb8 3255 EXIST::FUNCTION:AES
2814FIPS_allow_md5 3256 NOEXIST::FUNCTION: 2814FIPS_allow_md5 3256 NOEXIST::FUNCTION:
2815DES_ede3_cfb_encrypt 3257 EXIST::FUNCTION:DES 2815DES_ede3_cfb_encrypt 3257 EXIST::FUNCTION:DES
2816EVP_des_ede3_cfb8 3258 EXIST::FUNCTION:DES 2816EVP_des_ede3_cfb8 3258 EXIST::FUNCTION:DES
2817FIPS_rand_seeded 3259 NOEXIST::FUNCTION: 2817FIPS_rand_seeded 3259 NOEXIST::FUNCTION:
2818AES_cfbr_encrypt_block 3260 EXIST::FUNCTION:AES 2818AES_cfbr_encrypt_block 3260 NOEXIST::FUNCTION:
2819AES_cfb8_encrypt 3261 EXIST::FUNCTION:AES 2819AES_cfb8_encrypt 3261 EXIST::FUNCTION:AES
2820FIPS_rand_seed 3262 EXIST:OPENSSL_FIPS:FUNCTION: 2820FIPS_rand_seed 3262 NOEXIST::FUNCTION:
2821FIPS_corrupt_des 3263 EXIST:OPENSSL_FIPS:FUNCTION: 2821FIPS_corrupt_des 3263 NOEXIST::FUNCTION:
2822EVP_aes_192_cfb1 3264 EXIST::FUNCTION:AES 2822EVP_aes_192_cfb1 3264 EXIST::FUNCTION:AES
2823FIPS_selftest_aes 3265 EXIST:OPENSSL_FIPS:FUNCTION: 2823FIPS_selftest_aes 3265 NOEXIST::FUNCTION:
2824FIPS_set_prng_key 3266 NOEXIST::FUNCTION: 2824FIPS_set_prng_key 3266 NOEXIST::FUNCTION:
2825EVP_des_cfb8 3267 EXIST::FUNCTION:DES 2825EVP_des_cfb8 3267 EXIST::FUNCTION:DES
2826FIPS_corrupt_dsa 3268 EXIST:OPENSSL_FIPS:FUNCTION: 2826FIPS_corrupt_dsa 3268 NOEXIST::FUNCTION:
2827FIPS_test_mode 3269 NOEXIST::FUNCTION: 2827FIPS_test_mode 3269 NOEXIST::FUNCTION:
2828FIPS_rand_method 3270 EXIST:OPENSSL_FIPS:FUNCTION: 2828FIPS_rand_method 3270 NOEXIST::FUNCTION:
2829EVP_aes_256_cfb1 3271 EXIST::FUNCTION:AES 2829EVP_aes_256_cfb1 3271 EXIST::FUNCTION:AES
2830ERR_load_FIPS_strings 3272 EXIST:OPENSSL_FIPS:FUNCTION: 2830ERR_load_FIPS_strings 3272 NOEXIST::FUNCTION:
2831FIPS_corrupt_aes 3273 EXIST:OPENSSL_FIPS:FUNCTION: 2831FIPS_corrupt_aes 3273 NOEXIST::FUNCTION:
2832FIPS_selftest_sha1 3274 EXIST:OPENSSL_FIPS:FUNCTION: 2832FIPS_selftest_sha1 3274 NOEXIST::FUNCTION:
2833FIPS_selftest_rsa 3275 EXIST:OPENSSL_FIPS:FUNCTION: 2833FIPS_selftest_rsa 3275 NOEXIST::FUNCTION:
2834FIPS_corrupt_sha1 3276 EXIST:OPENSSL_FIPS:FUNCTION: 2834FIPS_corrupt_sha1 3276 NOEXIST::FUNCTION:
2835EVP_des_cfb1 3277 EXIST::FUNCTION:DES 2835EVP_des_cfb1 3277 EXIST::FUNCTION:DES
2836FIPS_dsa_check 3278 NOEXIST::FUNCTION: 2836FIPS_dsa_check 3278 NOEXIST::FUNCTION:
2837AES_cfb1_encrypt 3279 EXIST::FUNCTION:AES 2837AES_cfb1_encrypt 3279 EXIST::FUNCTION:AES
2838EVP_des_ede3_cfb1 3280 EXIST::FUNCTION:DES 2838EVP_des_ede3_cfb1 3280 EXIST::FUNCTION:DES
2839FIPS_rand_check 3281 EXIST:OPENSSL_FIPS:FUNCTION: 2839FIPS_rand_check 3281 NOEXIST::FUNCTION:
2840FIPS_md5_allowed 3282 NOEXIST::FUNCTION: 2840FIPS_md5_allowed 3282 NOEXIST::FUNCTION:
2841FIPS_mode 3283 EXIST:OPENSSL_FIPS:FUNCTION: 2841FIPS_mode 3283 NOEXIST::FUNCTION:
2842FIPS_selftest_failed 3284 EXIST:OPENSSL_FIPS:FUNCTION: 2842FIPS_selftest_failed 3284 NOEXIST::FUNCTION:
2843sk_is_sorted 3285 EXIST::FUNCTION: 2843sk_is_sorted 3285 EXIST::FUNCTION:
2844X509_check_ca 3286 EXIST::FUNCTION: 2844X509_check_ca 3286 EXIST::FUNCTION:
2845private_idea_set_encrypt_key 3287 EXIST:OPENSSL_FIPS:FUNCTION:IDEA 2845private_idea_set_encrypt_key 3287 NOEXIST::FUNCTION:
2846HMAC_CTX_set_flags 3288 EXIST::FUNCTION:HMAC 2846HMAC_CTX_set_flags 3288 EXIST::FUNCTION:HMAC
2847private_SHA_Init 3289 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA0 2847private_SHA_Init 3289 NOEXIST::FUNCTION:
2848private_CAST_set_key 3290 EXIST:OPENSSL_FIPS:FUNCTION:CAST 2848private_CAST_set_key 3290 NOEXIST::FUNCTION:
2849private_RIPEMD160_Init 3291 EXIST:OPENSSL_FIPS:FUNCTION:RIPEMD 2849private_RIPEMD160_Init 3291 NOEXIST::FUNCTION:
2850private_RC5_32_set_key 3292 EXIST:OPENSSL_FIPS:FUNCTION:RC5 2850private_RC5_32_set_key 3292 NOEXIST::FUNCTION:
2851private_MD5_Init 3293 EXIST:OPENSSL_FIPS:FUNCTION:MD5 2851private_MD5_Init 3293 NOEXIST::FUNCTION:
2852private_RC4_set_key 3294 EXIST:OPENSSL_FIPS:FUNCTION:RC4 2852private_RC4_set_key 3294 NOEXIST::FUNCTION:
2853private_MDC2_Init 3295 EXIST:OPENSSL_FIPS:FUNCTION:MDC2 2853private_MDC2_Init 3295 NOEXIST::FUNCTION:
2854private_RC2_set_key 3296 EXIST:OPENSSL_FIPS:FUNCTION:RC2 2854private_RC2_set_key 3296 NOEXIST::FUNCTION:
2855private_MD4_Init 3297 EXIST:OPENSSL_FIPS:FUNCTION:MD4 2855private_MD4_Init 3297 NOEXIST::FUNCTION:
2856private_BF_set_key 3298 EXIST:OPENSSL_FIPS:FUNCTION:BF 2856private_BF_set_key 3298 NOEXIST::FUNCTION:
2857private_MD2_Init 3299 EXIST:OPENSSL_FIPS:FUNCTION:MD2 2857private_MD2_Init 3299 NOEXIST::FUNCTION:
2858d2i_PROXY_CERT_INFO_EXTENSION 3300 EXIST::FUNCTION: 2858d2i_PROXY_CERT_INFO_EXTENSION 3300 EXIST::FUNCTION:
2859PROXY_POLICY_it 3301 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2859PROXY_POLICY_it 3301 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2860PROXY_POLICY_it 3301 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2860PROXY_POLICY_it 3301 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
@@ -2868,13 +2868,13 @@ PROXY_CERT_INFO_EXTENSION_it 3307 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTI
2868PROXY_POLICY_free 3308 EXIST::FUNCTION: 2868PROXY_POLICY_free 3308 EXIST::FUNCTION:
2869PROXY_POLICY_new 3309 EXIST::FUNCTION: 2869PROXY_POLICY_new 3309 EXIST::FUNCTION:
2870BN_MONT_CTX_set_locked 3310 EXIST::FUNCTION: 2870BN_MONT_CTX_set_locked 3310 EXIST::FUNCTION:
2871FIPS_selftest_rng 3311 EXIST:OPENSSL_FIPS:FUNCTION: 2871FIPS_selftest_rng 3311 NOEXIST::FUNCTION:
2872EVP_sha384 3312 EXIST::FUNCTION:SHA,SHA512 2872EVP_sha384 3312 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
2873EVP_sha512 3313 EXIST::FUNCTION:SHA,SHA512 2873EVP_sha512 3313 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
2874EVP_sha224 3314 EXIST::FUNCTION:SHA,SHA256 2874EVP_sha224 3314 EXIST::FUNCTION:SHA,SHA256
2875EVP_sha256 3315 EXIST::FUNCTION:SHA,SHA256 2875EVP_sha256 3315 EXIST::FUNCTION:SHA,SHA256
2876FIPS_selftest_hmac 3316 EXIST:OPENSSL_FIPS:FUNCTION: 2876FIPS_selftest_hmac 3316 NOEXIST::FUNCTION:
2877FIPS_corrupt_rng 3317 EXIST:OPENSSL_FIPS:FUNCTION: 2877FIPS_corrupt_rng 3317 NOEXIST::FUNCTION:
2878BN_mod_exp_mont_consttime 3318 EXIST::FUNCTION: 2878BN_mod_exp_mont_consttime 3318 EXIST::FUNCTION:
2879RSA_X931_hash_id 3319 EXIST::FUNCTION:RSA 2879RSA_X931_hash_id 3319 EXIST::FUNCTION:RSA
2880RSA_padding_check_X931 3320 EXIST::FUNCTION:RSA 2880RSA_padding_check_X931 3320 EXIST::FUNCTION:RSA
@@ -2882,7 +2882,7 @@ RSA_verify_PKCS1_PSS 3321 EXIST::FUNCTION:RSA
2882RSA_padding_add_X931 3322 EXIST::FUNCTION:RSA 2882RSA_padding_add_X931 3322 EXIST::FUNCTION:RSA
2883RSA_padding_add_PKCS1_PSS 3323 EXIST::FUNCTION:RSA 2883RSA_padding_add_PKCS1_PSS 3323 EXIST::FUNCTION:RSA
2884PKCS1_MGF1 3324 EXIST::FUNCTION:RSA 2884PKCS1_MGF1 3324 EXIST::FUNCTION:RSA
2885BN_X931_generate_Xpq 3325 EXIST::FUNCTION: 2885BN_X931_generate_Xpq 3325 NOEXIST::FUNCTION:
2886RSA_X931_generate_key 3326 NOEXIST::FUNCTION: 2886RSA_X931_generate_key 3326 NOEXIST::FUNCTION:
2887BN_X931_derive_prime 3327 NOEXIST::FUNCTION: 2887BN_X931_derive_prime 3327 NOEXIST::FUNCTION:
2888BN_X931_generate_prime 3328 NOEXIST::FUNCTION: 2888BN_X931_generate_prime 3328 NOEXIST::FUNCTION:
@@ -2893,43 +2893,43 @@ ERR_set_mark 3332 EXIST::FUNCTION:
2893X509_STORE_CTX_set0_crls 3333 EXIST::FUNCTION: 2893X509_STORE_CTX_set0_crls 3333 EXIST::FUNCTION:
2894ENGINE_set_STORE 3334 EXIST::FUNCTION:ENGINE 2894ENGINE_set_STORE 3334 EXIST::FUNCTION:ENGINE
2895ENGINE_register_ECDSA 3335 EXIST::FUNCTION:ENGINE 2895ENGINE_register_ECDSA 3335 EXIST::FUNCTION:ENGINE
2896STORE_method_set_list_start_function 3336 EXIST:!VMS:FUNCTION: 2896STORE_meth_set_list_start_fn 3336 NOEXIST::FUNCTION:
2897STORE_meth_set_list_start_fn 3336 EXIST:VMS:FUNCTION: 2897STORE_method_set_list_start_function 3336 NOEXIST::FUNCTION:
2898BN_BLINDING_invert_ex 3337 EXIST::FUNCTION: 2898BN_BLINDING_invert_ex 3337 EXIST::FUNCTION:
2899NAME_CONSTRAINTS_free 3338 EXIST::FUNCTION: 2899NAME_CONSTRAINTS_free 3338 EXIST::FUNCTION:
2900STORE_ATTR_INFO_set_number 3339 EXIST::FUNCTION: 2900STORE_ATTR_INFO_set_number 3339 NOEXIST::FUNCTION:
2901BN_BLINDING_get_thread_id 3340 EXIST::FUNCTION: 2901BN_BLINDING_get_thread_id 3340 EXIST::FUNCTION:DEPRECATED
2902X509_STORE_CTX_set0_param 3341 EXIST::FUNCTION: 2902X509_STORE_CTX_set0_param 3341 EXIST::FUNCTION:
2903POLICY_MAPPING_it 3342 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2903POLICY_MAPPING_it 3342 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2904POLICY_MAPPING_it 3342 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2904POLICY_MAPPING_it 3342 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2905STORE_parse_attrs_start 3343 EXIST::FUNCTION: 2905STORE_parse_attrs_start 3343 NOEXIST::FUNCTION:
2906POLICY_CONSTRAINTS_free 3344 EXIST::FUNCTION: 2906POLICY_CONSTRAINTS_free 3344 EXIST::FUNCTION:
2907EVP_PKEY_add1_attr_by_NID 3345 EXIST::FUNCTION: 2907EVP_PKEY_add1_attr_by_NID 3345 EXIST::FUNCTION:
2908BN_nist_mod_192 3346 EXIST::FUNCTION: 2908BN_nist_mod_192 3346 EXIST::FUNCTION:
2909EC_GROUP_get_trinomial_basis 3347 EXIST::FUNCTION:EC 2909EC_GROUP_get_trinomial_basis 3347 EXIST::FUNCTION:EC
2910STORE_set_method 3348 EXIST::FUNCTION: 2910STORE_set_method 3348 NOEXIST::FUNCTION:
2911GENERAL_SUBTREE_free 3349 EXIST::FUNCTION: 2911GENERAL_SUBTREE_free 3349 EXIST::FUNCTION:
2912NAME_CONSTRAINTS_it 3350 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2912NAME_CONSTRAINTS_it 3350 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2913NAME_CONSTRAINTS_it 3350 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2913NAME_CONSTRAINTS_it 3350 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2914ECDH_get_default_method 3351 EXIST::FUNCTION:ECDH 2914ECDH_get_default_method 3351 EXIST::FUNCTION:ECDH
2915PKCS12_add_safe 3352 EXIST::FUNCTION: 2915PKCS12_add_safe 3352 EXIST::FUNCTION:
2916EC_KEY_new_by_curve_name 3353 EXIST::FUNCTION:EC 2916EC_KEY_new_by_curve_name 3353 EXIST::FUNCTION:EC
2917STORE_method_get_update_store_function 3354 EXIST:!VMS:FUNCTION: 2917STORE_meth_get_update_store_fn 3354 NOEXIST::FUNCTION:
2918STORE_meth_get_update_store_fn 3354 EXIST:VMS:FUNCTION: 2918STORE_method_get_update_store_function 3354 NOEXIST::FUNCTION:
2919ENGINE_register_ECDH 3355 EXIST::FUNCTION:ENGINE 2919ENGINE_register_ECDH 3355 EXIST::FUNCTION:ENGINE
2920SHA512_Update 3356 EXIST::FUNCTION:SHA,SHA512 2920SHA512_Update 3356 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
2921i2d_ECPrivateKey 3357 EXIST::FUNCTION:EC 2921i2d_ECPrivateKey 3357 EXIST::FUNCTION:EC
2922BN_get0_nist_prime_192 3358 EXIST::FUNCTION: 2922BN_get0_nist_prime_192 3358 EXIST::FUNCTION:
2923STORE_modify_certificate 3359 EXIST::FUNCTION: 2923STORE_modify_certificate 3359 NOEXIST::FUNCTION:
2924EC_POINT_set_affine_coordinates_GF2m 3360 EXIST:!VMS:FUNCTION:EC 2924EC_POINT_set_affine_coordinates_GF2m 3360 EXIST:!VMS:FUNCTION:EC
2925EC_POINT_set_affine_coords_GF2m 3360 EXIST:VMS:FUNCTION:EC 2925EC_POINT_set_affine_coords_GF2m 3360 EXIST:VMS:FUNCTION:EC
2926BN_GF2m_mod_exp_arr 3361 EXIST::FUNCTION: 2926BN_GF2m_mod_exp_arr 3361 EXIST::FUNCTION:
2927STORE_ATTR_INFO_modify_number 3362 EXIST::FUNCTION: 2927STORE_ATTR_INFO_modify_number 3362 NOEXIST::FUNCTION:
2928X509_keyid_get0 3363 EXIST::FUNCTION: 2928X509_keyid_get0 3363 EXIST::FUNCTION:
2929ENGINE_load_gmp 3364 EXIST::FUNCTION:ENGINE,GMP,STATIC_ENGINE 2929ENGINE_load_gmp 3364 EXIST::FUNCTION:ENGINE,GMP,STATIC_ENGINE
2930pitem_new 3365 EXIST::FUNCTION: 2930pitem_new 3365 EXIST::FUNCTION:
2931BN_GF2m_mod_mul_arr 3366 EXIST::FUNCTION: 2931BN_GF2m_mod_mul_arr 3366 EXIST::FUNCTION:
2932STORE_list_public_key_endp 3367 EXIST::FUNCTION: 2932STORE_list_public_key_endp 3367 NOEXIST::FUNCTION:
2933o2i_ECPublicKey 3368 EXIST::FUNCTION:EC 2933o2i_ECPublicKey 3368 EXIST::FUNCTION:EC
2934EC_KEY_copy 3369 EXIST::FUNCTION:EC 2934EC_KEY_copy 3369 EXIST::FUNCTION:EC
2935BIO_dump_fp 3370 EXIST::FUNCTION:FP_API 2935BIO_dump_fp 3370 EXIST::FUNCTION:FP_API
@@ -2938,25 +2938,25 @@ EC_GROUP_check_discriminant 3372 EXIST::FUNCTION:EC
2938i2o_ECPublicKey 3373 EXIST::FUNCTION:EC 2938i2o_ECPublicKey 3373 EXIST::FUNCTION:EC
2939EC_KEY_precompute_mult 3374 EXIST::FUNCTION:EC 2939EC_KEY_precompute_mult 3374 EXIST::FUNCTION:EC
2940a2i_IPADDRESS 3375 EXIST::FUNCTION: 2940a2i_IPADDRESS 3375 EXIST::FUNCTION:
2941STORE_method_set_initialise_function 3376 EXIST:!VMS:FUNCTION: 2941STORE_meth_set_initialise_fn 3376 NOEXIST::FUNCTION:
2942STORE_meth_set_initialise_fn 3376 EXIST:VMS:FUNCTION: 2942STORE_method_set_initialise_function 3376 NOEXIST::FUNCTION:
2943X509_STORE_CTX_set_depth 3377 EXIST::FUNCTION: 2943X509_STORE_CTX_set_depth 3377 EXIST::FUNCTION:
2944X509_VERIFY_PARAM_inherit 3378 EXIST::FUNCTION: 2944X509_VERIFY_PARAM_inherit 3378 EXIST::FUNCTION:
2945EC_POINT_point2bn 3379 EXIST::FUNCTION:EC 2945EC_POINT_point2bn 3379 EXIST::FUNCTION:EC
2946STORE_ATTR_INFO_set_dn 3380 EXIST::FUNCTION: 2946STORE_ATTR_INFO_set_dn 3380 NOEXIST::FUNCTION:
2947X509_policy_tree_get0_policies 3381 EXIST::FUNCTION: 2947X509_policy_tree_get0_policies 3381 EXIST::FUNCTION:
2948EC_GROUP_new_curve_GF2m 3382 EXIST::FUNCTION:EC 2948EC_GROUP_new_curve_GF2m 3382 EXIST::FUNCTION:EC
2949STORE_destroy_method 3383 EXIST::FUNCTION: 2949STORE_destroy_method 3383 NOEXIST::FUNCTION:
2950ENGINE_unregister_STORE 3384 EXIST::FUNCTION:ENGINE 2950ENGINE_unregister_STORE 3384 EXIST::FUNCTION:ENGINE
2951EVP_PKEY_get1_EC_KEY 3385 EXIST::FUNCTION:EC 2951EVP_PKEY_get1_EC_KEY 3385 EXIST::FUNCTION:EC
2952STORE_ATTR_INFO_get0_number 3386 EXIST::FUNCTION: 2952STORE_ATTR_INFO_get0_number 3386 NOEXIST::FUNCTION:
2953ENGINE_get_default_ECDH 3387 EXIST::FUNCTION:ENGINE 2953ENGINE_get_default_ECDH 3387 EXIST::FUNCTION:ENGINE
2954EC_KEY_get_conv_form 3388 EXIST::FUNCTION:EC 2954EC_KEY_get_conv_form 3388 EXIST::FUNCTION:EC
2955ASN1_OCTET_STRING_NDEF_it 3389 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2955ASN1_OCTET_STRING_NDEF_it 3389 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2956ASN1_OCTET_STRING_NDEF_it 3389 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2956ASN1_OCTET_STRING_NDEF_it 3389 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2957STORE_delete_public_key 3390 EXIST::FUNCTION: 2957STORE_delete_public_key 3390 NOEXIST::FUNCTION:
2958STORE_get_public_key 3391 EXIST::FUNCTION: 2958STORE_get_public_key 3391 NOEXIST::FUNCTION:
2959STORE_modify_arbitrary 3392 EXIST::FUNCTION: 2959STORE_modify_arbitrary 3392 NOEXIST::FUNCTION:
2960ENGINE_get_static_state 3393 EXIST::FUNCTION:ENGINE 2960ENGINE_get_static_state 3393 EXIST::FUNCTION:ENGINE
2961pqueue_iterator 3394 EXIST::FUNCTION: 2961pqueue_iterator 3394 EXIST::FUNCTION:
2962ECDSA_SIG_new 3395 EXIST::FUNCTION:ECDSA 2962ECDSA_SIG_new 3395 EXIST::FUNCTION:ECDSA
@@ -2965,14 +2965,14 @@ BN_GF2m_mod_sqr 3397 EXIST::FUNCTION:
2965EC_POINT_bn2point 3398 EXIST::FUNCTION:EC 2965EC_POINT_bn2point 3398 EXIST::FUNCTION:EC
2966X509_VERIFY_PARAM_set_depth 3399 EXIST::FUNCTION: 2966X509_VERIFY_PARAM_set_depth 3399 EXIST::FUNCTION:
2967EC_KEY_set_asn1_flag 3400 EXIST::FUNCTION:EC 2967EC_KEY_set_asn1_flag 3400 EXIST::FUNCTION:EC
2968STORE_get_method 3401 EXIST::FUNCTION: 2968STORE_get_method 3401 NOEXIST::FUNCTION:
2969EC_KEY_get_key_method_data 3402 EXIST::FUNCTION:EC 2969EC_KEY_get_key_method_data 3402 EXIST::FUNCTION:EC
2970ECDSA_sign_ex 3403 EXIST::FUNCTION:ECDSA 2970ECDSA_sign_ex 3403 EXIST::FUNCTION:ECDSA
2971STORE_parse_attrs_end 3404 EXIST::FUNCTION: 2971STORE_parse_attrs_end 3404 NOEXIST::FUNCTION:
2972EC_GROUP_get_point_conversion_form 3405 EXIST:!VMS:FUNCTION:EC 2972EC_GROUP_get_point_conversion_form 3405 EXIST:!VMS:FUNCTION:EC
2973EC_GROUP_get_point_conv_form 3405 EXIST:VMS:FUNCTION:EC 2973EC_GROUP_get_point_conv_form 3405 EXIST:VMS:FUNCTION:EC
2974STORE_method_set_store_function 3406 EXIST::FUNCTION: 2974STORE_method_set_store_function 3406 NOEXIST::FUNCTION:
2975STORE_ATTR_INFO_in 3407 EXIST::FUNCTION: 2975STORE_ATTR_INFO_in 3407 NOEXIST::FUNCTION:
2976PEM_read_bio_ECPKParameters 3408 EXIST::FUNCTION:EC 2976PEM_read_bio_ECPKParameters 3408 EXIST::FUNCTION:EC
2977EC_GROUP_get_pentanomial_basis 3409 EXIST::FUNCTION:EC 2977EC_GROUP_get_pentanomial_basis 3409 EXIST::FUNCTION:EC
2978EVP_PKEY_add1_attr_by_txt 3410 EXIST::FUNCTION: 2978EVP_PKEY_add1_attr_by_txt 3410 EXIST::FUNCTION:
@@ -2980,7 +2980,7 @@ BN_BLINDING_set_flags 3411 EXIST::FUNCTION:
2980X509_VERIFY_PARAM_set1_policies 3412 EXIST::FUNCTION: 2980X509_VERIFY_PARAM_set1_policies 3412 EXIST::FUNCTION:
2981X509_VERIFY_PARAM_set1_name 3413 EXIST::FUNCTION: 2981X509_VERIFY_PARAM_set1_name 3413 EXIST::FUNCTION:
2982X509_VERIFY_PARAM_set_purpose 3414 EXIST::FUNCTION: 2982X509_VERIFY_PARAM_set_purpose 3414 EXIST::FUNCTION:
2983STORE_get_number 3415 EXIST::FUNCTION: 2983STORE_get_number 3415 NOEXIST::FUNCTION:
2984ECDSA_sign_setup 3416 EXIST::FUNCTION:ECDSA 2984ECDSA_sign_setup 3416 EXIST::FUNCTION:ECDSA
2985BN_GF2m_mod_solve_quad_arr 3417 EXIST::FUNCTION: 2985BN_GF2m_mod_solve_quad_arr 3417 EXIST::FUNCTION:
2986EC_KEY_up_ref 3418 EXIST::FUNCTION:EC 2986EC_KEY_up_ref 3418 EXIST::FUNCTION:EC
@@ -2988,14 +2988,14 @@ POLICY_MAPPING_free 3419 EXIST::FUNCTION:
2988BN_GF2m_mod_div 3420 EXIST::FUNCTION: 2988BN_GF2m_mod_div 3420 EXIST::FUNCTION:
2989X509_VERIFY_PARAM_set_flags 3421 EXIST::FUNCTION: 2989X509_VERIFY_PARAM_set_flags 3421 EXIST::FUNCTION:
2990EC_KEY_free 3422 EXIST::FUNCTION:EC 2990EC_KEY_free 3422 EXIST::FUNCTION:EC
2991STORE_method_set_list_next_function 3423 EXIST:!VMS:FUNCTION: 2991STORE_meth_set_list_next_fn 3423 NOEXIST::FUNCTION:
2992STORE_meth_set_list_next_fn 3423 EXIST:VMS:FUNCTION: 2992STORE_method_set_list_next_function 3423 NOEXIST::FUNCTION:
2993PEM_write_bio_ECPrivateKey 3424 EXIST::FUNCTION:EC 2993PEM_write_bio_ECPrivateKey 3424 EXIST::FUNCTION:EC
2994d2i_EC_PUBKEY 3425 EXIST::FUNCTION:EC 2994d2i_EC_PUBKEY 3425 EXIST::FUNCTION:EC
2995STORE_method_get_generate_function 3426 EXIST:!VMS:FUNCTION: 2995STORE_meth_get_generate_fn 3426 NOEXIST::FUNCTION:
2996STORE_meth_get_generate_fn 3426 EXIST:VMS:FUNCTION: 2996STORE_method_get_generate_function 3426 NOEXIST::FUNCTION:
2997STORE_method_set_list_end_function 3427 EXIST:!VMS:FUNCTION: 2997STORE_meth_set_list_end_fn 3427 NOEXIST::FUNCTION:
2998STORE_meth_set_list_end_fn 3427 EXIST:VMS:FUNCTION: 2998STORE_method_set_list_end_function 3427 NOEXIST::FUNCTION:
2999pqueue_print 3428 EXIST::FUNCTION: 2999pqueue_print 3428 EXIST::FUNCTION:
3000EC_GROUP_have_precompute_mult 3429 EXIST::FUNCTION:EC 3000EC_GROUP_have_precompute_mult 3429 EXIST::FUNCTION:EC
3001EC_KEY_print_fp 3430 EXIST::FUNCTION:EC,FP_API 3001EC_KEY_print_fp 3430 EXIST::FUNCTION:EC,FP_API
@@ -3003,8 +3003,8 @@ BN_GF2m_mod_arr 3431 EXIST::FUNCTION:
3003PEM_write_bio_X509_CERT_PAIR 3432 EXIST::FUNCTION: 3003PEM_write_bio_X509_CERT_PAIR 3432 EXIST::FUNCTION:
3004EVP_PKEY_cmp 3433 EXIST::FUNCTION: 3004EVP_PKEY_cmp 3433 EXIST::FUNCTION:
3005X509_policy_level_node_count 3434 EXIST::FUNCTION: 3005X509_policy_level_node_count 3434 EXIST::FUNCTION:
3006STORE_new_engine 3435 EXIST::FUNCTION: 3006STORE_new_engine 3435 NOEXIST::FUNCTION:
3007STORE_list_public_key_start 3436 EXIST::FUNCTION: 3007STORE_list_public_key_start 3436 NOEXIST::FUNCTION:
3008X509_VERIFY_PARAM_new 3437 EXIST::FUNCTION: 3008X509_VERIFY_PARAM_new 3437 EXIST::FUNCTION:
3009ECDH_get_ex_data 3438 EXIST::FUNCTION:ECDH 3009ECDH_get_ex_data 3438 EXIST::FUNCTION:ECDH
3010EVP_PKEY_get_attr 3439 EXIST::FUNCTION: 3010EVP_PKEY_get_attr 3439 EXIST::FUNCTION:
@@ -3014,11 +3014,11 @@ ECDH_OpenSSL 3442 EXIST::FUNCTION:ECDH
3014EC_KEY_set_conv_form 3443 EXIST::FUNCTION:EC 3014EC_KEY_set_conv_form 3443 EXIST::FUNCTION:EC
3015EC_POINT_dup 3444 EXIST::FUNCTION:EC 3015EC_POINT_dup 3444 EXIST::FUNCTION:EC
3016GENERAL_SUBTREE_new 3445 EXIST::FUNCTION: 3016GENERAL_SUBTREE_new 3445 EXIST::FUNCTION:
3017STORE_list_crl_endp 3446 EXIST::FUNCTION: 3017STORE_list_crl_endp 3446 NOEXIST::FUNCTION:
3018EC_get_builtin_curves 3447 EXIST::FUNCTION:EC 3018EC_get_builtin_curves 3447 EXIST::FUNCTION:EC
3019X509_policy_node_get0_qualifiers 3448 EXIST:!VMS:FUNCTION: 3019X509_policy_node_get0_qualifiers 3448 EXIST:!VMS:FUNCTION:
3020X509_pcy_node_get0_qualifiers 3448 EXIST:VMS:FUNCTION: 3020X509_pcy_node_get0_qualifiers 3448 EXIST:VMS:FUNCTION:
3021STORE_list_crl_end 3449 EXIST::FUNCTION: 3021STORE_list_crl_end 3449 NOEXIST::FUNCTION:
3022EVP_PKEY_set1_EC_KEY 3450 EXIST::FUNCTION:EC 3022EVP_PKEY_set1_EC_KEY 3450 EXIST::FUNCTION:EC
3023BN_GF2m_mod_sqrt_arr 3451 EXIST::FUNCTION: 3023BN_GF2m_mod_sqrt_arr 3451 EXIST::FUNCTION:
3024i2d_ECPrivateKey_bio 3452 EXIST::FUNCTION:BIO,EC 3024i2d_ECPrivateKey_bio 3452 EXIST::FUNCTION:BIO,EC
@@ -3026,60 +3026,60 @@ ECPKParameters_print_fp 3453 EXIST::FUNCTION:EC,FP_API
3026pqueue_find 3454 EXIST::FUNCTION: 3026pqueue_find 3454 EXIST::FUNCTION:
3027ECDSA_SIG_free 3455 EXIST::FUNCTION:ECDSA 3027ECDSA_SIG_free 3455 EXIST::FUNCTION:ECDSA
3028PEM_write_bio_ECPKParameters 3456 EXIST::FUNCTION:EC 3028PEM_write_bio_ECPKParameters 3456 EXIST::FUNCTION:EC
3029STORE_method_set_ctrl_function 3457 EXIST::FUNCTION: 3029STORE_method_set_ctrl_function 3457 NOEXIST::FUNCTION:
3030STORE_list_public_key_end 3458 EXIST::FUNCTION: 3030STORE_list_public_key_end 3458 NOEXIST::FUNCTION:
3031EC_KEY_set_private_key 3459 EXIST::FUNCTION:EC 3031EC_KEY_set_private_key 3459 EXIST::FUNCTION:EC
3032pqueue_peek 3460 EXIST::FUNCTION: 3032pqueue_peek 3460 EXIST::FUNCTION:
3033STORE_get_arbitrary 3461 EXIST::FUNCTION: 3033STORE_get_arbitrary 3461 NOEXIST::FUNCTION:
3034STORE_store_crl 3462 EXIST::FUNCTION: 3034STORE_store_crl 3462 NOEXIST::FUNCTION:
3035X509_policy_node_get0_policy 3463 EXIST::FUNCTION: 3035X509_policy_node_get0_policy 3463 EXIST::FUNCTION:
3036PKCS12_add_safes 3464 EXIST::FUNCTION: 3036PKCS12_add_safes 3464 EXIST::FUNCTION:
3037BN_BLINDING_convert_ex 3465 EXIST::FUNCTION: 3037BN_BLINDING_convert_ex 3465 EXIST::FUNCTION:
3038X509_policy_tree_free 3466 EXIST::FUNCTION: 3038X509_policy_tree_free 3466 EXIST::FUNCTION:
3039OPENSSL_ia32cap_loc 3467 EXIST::FUNCTION: 3039OPENSSL_ia32cap_loc 3467 EXIST::FUNCTION:
3040BN_GF2m_poly2arr 3468 EXIST::FUNCTION: 3040BN_GF2m_poly2arr 3468 EXIST::FUNCTION:
3041STORE_ctrl 3469 EXIST::FUNCTION: 3041STORE_ctrl 3469 NOEXIST::FUNCTION:
3042STORE_ATTR_INFO_compare 3470 EXIST::FUNCTION: 3042STORE_ATTR_INFO_compare 3470 NOEXIST::FUNCTION:
3043BN_get0_nist_prime_224 3471 EXIST::FUNCTION: 3043BN_get0_nist_prime_224 3471 EXIST::FUNCTION:
3044i2d_ECParameters 3472 EXIST::FUNCTION:EC 3044i2d_ECParameters 3472 EXIST::FUNCTION:EC
3045i2d_ECPKParameters 3473 EXIST::FUNCTION:EC 3045i2d_ECPKParameters 3473 EXIST::FUNCTION:EC
3046BN_GENCB_call 3474 EXIST::FUNCTION: 3046BN_GENCB_call 3474 EXIST::FUNCTION:
3047d2i_ECPKParameters 3475 EXIST::FUNCTION:EC 3047d2i_ECPKParameters 3475 EXIST::FUNCTION:EC
3048STORE_method_set_generate_function 3476 EXIST:!VMS:FUNCTION: 3048STORE_meth_set_generate_fn 3476 NOEXIST::FUNCTION:
3049STORE_meth_set_generate_fn 3476 EXIST:VMS:FUNCTION: 3049STORE_method_set_generate_function 3476 NOEXIST::FUNCTION:
3050ENGINE_set_ECDH 3477 EXIST::FUNCTION:ENGINE 3050ENGINE_set_ECDH 3477 EXIST::FUNCTION:ENGINE
3051NAME_CONSTRAINTS_new 3478 EXIST::FUNCTION: 3051NAME_CONSTRAINTS_new 3478 EXIST::FUNCTION:
3052SHA256_Init 3479 EXIST::FUNCTION:SHA,SHA256 3052SHA256_Init 3479 EXIST::FUNCTION:SHA,SHA256
3053EC_KEY_get0_public_key 3480 EXIST::FUNCTION:EC 3053EC_KEY_get0_public_key 3480 EXIST::FUNCTION:EC
3054PEM_write_bio_EC_PUBKEY 3481 EXIST::FUNCTION:EC 3054PEM_write_bio_EC_PUBKEY 3481 EXIST::FUNCTION:EC
3055STORE_ATTR_INFO_set_cstr 3482 EXIST::FUNCTION: 3055STORE_ATTR_INFO_set_cstr 3482 NOEXIST::FUNCTION:
3056STORE_list_crl_next 3483 EXIST::FUNCTION: 3056STORE_list_crl_next 3483 NOEXIST::FUNCTION:
3057STORE_ATTR_INFO_in_range 3484 EXIST::FUNCTION: 3057STORE_ATTR_INFO_in_range 3484 NOEXIST::FUNCTION:
3058ECParameters_print 3485 EXIST::FUNCTION:BIO,EC 3058ECParameters_print 3485 EXIST::FUNCTION:BIO,EC
3059STORE_method_set_delete_function 3486 EXIST:!VMS:FUNCTION: 3059STORE_meth_set_delete_fn 3486 NOEXIST::FUNCTION:
3060STORE_meth_set_delete_fn 3486 EXIST:VMS:FUNCTION: 3060STORE_method_set_delete_function 3486 NOEXIST::FUNCTION:
3061STORE_list_certificate_next 3487 EXIST::FUNCTION: 3061STORE_list_certificate_next 3487 NOEXIST::FUNCTION:
3062ASN1_generate_nconf 3488 EXIST::FUNCTION: 3062ASN1_generate_nconf 3488 EXIST::FUNCTION:
3063BUF_memdup 3489 EXIST::FUNCTION: 3063BUF_memdup 3489 EXIST::FUNCTION:
3064BN_GF2m_mod_mul 3490 EXIST::FUNCTION: 3064BN_GF2m_mod_mul 3490 EXIST::FUNCTION:
3065STORE_method_get_list_next_function 3491 EXIST:!VMS:FUNCTION: 3065STORE_meth_get_list_next_fn 3491 NOEXIST::FUNCTION:
3066STORE_meth_get_list_next_fn 3491 EXIST:VMS:FUNCTION: 3066STORE_method_get_list_next_function 3491 NOEXIST::FUNCTION:
3067STORE_ATTR_INFO_get0_dn 3492 EXIST::FUNCTION: 3067STORE_ATTR_INFO_get0_dn 3492 NOEXIST::FUNCTION:
3068STORE_list_private_key_next 3493 EXIST::FUNCTION: 3068STORE_list_private_key_next 3493 NOEXIST::FUNCTION:
3069EC_GROUP_set_seed 3494 EXIST::FUNCTION:EC 3069EC_GROUP_set_seed 3494 EXIST::FUNCTION:EC
3070X509_VERIFY_PARAM_set_trust 3495 EXIST::FUNCTION: 3070X509_VERIFY_PARAM_set_trust 3495 EXIST::FUNCTION:
3071STORE_ATTR_INFO_free 3496 EXIST::FUNCTION: 3071STORE_ATTR_INFO_free 3496 NOEXIST::FUNCTION:
3072STORE_get_private_key 3497 EXIST::FUNCTION: 3072STORE_get_private_key 3497 NOEXIST::FUNCTION:
3073EVP_PKEY_get_attr_count 3498 EXIST::FUNCTION: 3073EVP_PKEY_get_attr_count 3498 EXIST::FUNCTION:
3074STORE_ATTR_INFO_new 3499 EXIST::FUNCTION: 3074STORE_ATTR_INFO_new 3499 NOEXIST::FUNCTION:
3075EC_GROUP_get_curve_GF2m 3500 EXIST::FUNCTION:EC 3075EC_GROUP_get_curve_GF2m 3500 EXIST::FUNCTION:EC
3076STORE_method_set_revoke_function 3501 EXIST:!VMS:FUNCTION: 3076STORE_meth_set_revoke_fn 3501 NOEXIST::FUNCTION:
3077STORE_meth_set_revoke_fn 3501 EXIST:VMS:FUNCTION: 3077STORE_method_set_revoke_function 3501 NOEXIST::FUNCTION:
3078STORE_store_number 3502 EXIST::FUNCTION: 3078STORE_store_number 3502 NOEXIST::FUNCTION:
3079BN_is_prime_ex 3503 EXIST::FUNCTION: 3079BN_is_prime_ex 3503 EXIST::FUNCTION:
3080STORE_revoke_public_key 3504 EXIST::FUNCTION: 3080STORE_revoke_public_key 3504 NOEXIST::FUNCTION:
3081X509_STORE_CTX_get0_param 3505 EXIST::FUNCTION: 3081X509_STORE_CTX_get0_param 3505 EXIST::FUNCTION:
3082STORE_delete_arbitrary 3506 EXIST::FUNCTION: 3082STORE_delete_arbitrary 3506 NOEXIST::FUNCTION:
3083PEM_read_X509_CERT_PAIR 3507 EXIST:!WIN16:FUNCTION: 3083PEM_read_X509_CERT_PAIR 3507 EXIST:!WIN16:FUNCTION:
3084X509_STORE_set_depth 3508 EXIST::FUNCTION: 3084X509_STORE_set_depth 3508 EXIST::FUNCTION:
3085ECDSA_get_ex_data 3509 EXIST::FUNCTION:ECDSA 3085ECDSA_get_ex_data 3509 EXIST::FUNCTION:ECDSA
@@ -3087,40 +3087,40 @@ SHA224 3510 EXIST::FUNCTION:SHA,SHA256
3087BIO_dump_indent_fp 3511 EXIST::FUNCTION:FP_API 3087BIO_dump_indent_fp 3511 EXIST::FUNCTION:FP_API
3088EC_KEY_set_group 3512 EXIST::FUNCTION:EC 3088EC_KEY_set_group 3512 EXIST::FUNCTION:EC
3089BUF_strndup 3513 EXIST::FUNCTION: 3089BUF_strndup 3513 EXIST::FUNCTION:
3090STORE_list_certificate_start 3514 EXIST::FUNCTION: 3090STORE_list_certificate_start 3514 NOEXIST::FUNCTION:
3091BN_GF2m_mod 3515 EXIST::FUNCTION: 3091BN_GF2m_mod 3515 EXIST::FUNCTION:
3092X509_REQ_check_private_key 3516 EXIST::FUNCTION: 3092X509_REQ_check_private_key 3516 EXIST::FUNCTION:
3093EC_GROUP_get_seed_len 3517 EXIST::FUNCTION:EC 3093EC_GROUP_get_seed_len 3517 EXIST::FUNCTION:EC
3094ERR_load_STORE_strings 3518 EXIST::FUNCTION: 3094ERR_load_STORE_strings 3518 NOEXIST::FUNCTION:
3095PEM_read_bio_EC_PUBKEY 3519 EXIST::FUNCTION:EC 3095PEM_read_bio_EC_PUBKEY 3519 EXIST::FUNCTION:EC
3096STORE_list_private_key_end 3520 EXIST::FUNCTION: 3096STORE_list_private_key_end 3520 NOEXIST::FUNCTION:
3097i2d_EC_PUBKEY 3521 EXIST::FUNCTION:EC 3097i2d_EC_PUBKEY 3521 EXIST::FUNCTION:EC
3098ECDSA_get_default_method 3522 EXIST::FUNCTION:ECDSA 3098ECDSA_get_default_method 3522 EXIST::FUNCTION:ECDSA
3099ASN1_put_eoc 3523 EXIST::FUNCTION: 3099ASN1_put_eoc 3523 EXIST::FUNCTION:
3100X509_STORE_CTX_get_explicit_policy 3524 EXIST:!VMS:FUNCTION: 3100X509_STORE_CTX_get_explicit_policy 3524 EXIST:!VMS:FUNCTION:
3101X509_STORE_CTX_get_expl_policy 3524 EXIST:VMS:FUNCTION: 3101X509_STORE_CTX_get_expl_policy 3524 EXIST:VMS:FUNCTION:
3102X509_VERIFY_PARAM_table_cleanup 3525 EXIST::FUNCTION: 3102X509_VERIFY_PARAM_table_cleanup 3525 EXIST::FUNCTION:
3103STORE_modify_private_key 3526 EXIST::FUNCTION: 3103STORE_modify_private_key 3526 NOEXIST::FUNCTION:
3104X509_VERIFY_PARAM_free 3527 EXIST::FUNCTION: 3104X509_VERIFY_PARAM_free 3527 EXIST::FUNCTION:
3105EC_METHOD_get_field_type 3528 EXIST::FUNCTION:EC 3105EC_METHOD_get_field_type 3528 EXIST::FUNCTION:EC
3106EC_GFp_nist_method 3529 EXIST::FUNCTION:EC 3106EC_GFp_nist_method 3529 EXIST::FUNCTION:EC
3107STORE_method_set_modify_function 3530 EXIST:!VMS:FUNCTION: 3107STORE_meth_set_modify_fn 3530 NOEXIST::FUNCTION:
3108STORE_meth_set_modify_fn 3530 EXIST:VMS:FUNCTION: 3108STORE_method_set_modify_function 3530 NOEXIST::FUNCTION:
3109STORE_parse_attrs_next 3531 EXIST::FUNCTION: 3109STORE_parse_attrs_next 3531 NOEXIST::FUNCTION:
3110ENGINE_load_padlock 3532 EXIST::FUNCTION:ENGINE 3110ENGINE_load_padlock 3532 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
3111EC_GROUP_set_curve_name 3533 EXIST::FUNCTION:EC 3111EC_GROUP_set_curve_name 3533 EXIST::FUNCTION:EC
3112X509_CERT_PAIR_it 3534 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 3112X509_CERT_PAIR_it 3534 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3113X509_CERT_PAIR_it 3534 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 3113X509_CERT_PAIR_it 3534 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3114STORE_method_get_revoke_function 3535 EXIST:!VMS:FUNCTION: 3114STORE_meth_get_revoke_fn 3535 NOEXIST::FUNCTION:
3115STORE_meth_get_revoke_fn 3535 EXIST:VMS:FUNCTION: 3115STORE_method_get_revoke_function 3535 NOEXIST::FUNCTION:
3116STORE_method_set_get_function 3536 EXIST::FUNCTION: 3116STORE_method_set_get_function 3536 NOEXIST::FUNCTION:
3117STORE_modify_number 3537 EXIST::FUNCTION: 3117STORE_modify_number 3537 NOEXIST::FUNCTION:
3118STORE_method_get_store_function 3538 EXIST::FUNCTION: 3118STORE_method_get_store_function 3538 NOEXIST::FUNCTION:
3119STORE_store_private_key 3539 EXIST::FUNCTION: 3119STORE_store_private_key 3539 NOEXIST::FUNCTION:
3120BN_GF2m_mod_sqr_arr 3540 EXIST::FUNCTION: 3120BN_GF2m_mod_sqr_arr 3540 EXIST::FUNCTION:
3121RSA_setup_blinding 3541 EXIST::FUNCTION:RSA 3121RSA_setup_blinding 3541 EXIST::FUNCTION:RSA
3122BIO_s_datagram 3542 EXIST::FUNCTION:DGRAM 3122BIO_s_datagram 3542 EXIST::FUNCTION:DGRAM
3123STORE_Memory 3543 EXIST::FUNCTION: 3123STORE_Memory 3543 NOEXIST::FUNCTION:
3124sk_find_ex 3544 EXIST::FUNCTION: 3124sk_find_ex 3544 EXIST::FUNCTION:
3125EC_GROUP_set_curve_GF2m 3545 EXIST::FUNCTION:EC 3125EC_GROUP_set_curve_GF2m 3545 EXIST::FUNCTION:EC
3126ENGINE_set_default_ECDSA 3546 EXIST::FUNCTION:ENGINE 3126ENGINE_set_default_ECDSA 3546 EXIST::FUNCTION:ENGINE
@@ -3128,69 +3128,69 @@ POLICY_CONSTRAINTS_new 3547 EXIST::FUNCTION:
3128BN_GF2m_mod_sqrt 3548 EXIST::FUNCTION: 3128BN_GF2m_mod_sqrt 3548 EXIST::FUNCTION:
3129ECDH_set_default_method 3549 EXIST::FUNCTION:ECDH 3129ECDH_set_default_method 3549 EXIST::FUNCTION:ECDH
3130EC_KEY_generate_key 3550 EXIST::FUNCTION:EC 3130EC_KEY_generate_key 3550 EXIST::FUNCTION:EC
3131SHA384_Update 3551 EXIST::FUNCTION:SHA,SHA512 3131SHA384_Update 3551 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3132BN_GF2m_arr2poly 3552 EXIST::FUNCTION: 3132BN_GF2m_arr2poly 3552 EXIST::FUNCTION:
3133STORE_method_get_get_function 3553 EXIST::FUNCTION: 3133STORE_method_get_get_function 3553 NOEXIST::FUNCTION:
3134STORE_method_set_cleanup_function 3554 EXIST:!VMS:FUNCTION: 3134STORE_meth_set_cleanup_fn 3554 NOEXIST::FUNCTION:
3135STORE_meth_set_cleanup_fn 3554 EXIST:VMS:FUNCTION: 3135STORE_method_set_cleanup_function 3554 NOEXIST::FUNCTION:
3136EC_GROUP_check 3555 EXIST::FUNCTION:EC 3136EC_GROUP_check 3555 EXIST::FUNCTION:EC
3137d2i_ECPrivateKey_bio 3556 EXIST::FUNCTION:BIO,EC 3137d2i_ECPrivateKey_bio 3556 EXIST::FUNCTION:BIO,EC
3138EC_KEY_insert_key_method_data 3557 EXIST::FUNCTION:EC 3138EC_KEY_insert_key_method_data 3557 EXIST::FUNCTION:EC
3139STORE_method_get_lock_store_function 3558 EXIST:!VMS:FUNCTION: 3139STORE_meth_get_lock_store_fn 3558 NOEXIST::FUNCTION:
3140STORE_meth_get_lock_store_fn 3558 EXIST:VMS:FUNCTION: 3140STORE_method_get_lock_store_function 3558 NOEXIST::FUNCTION:
3141X509_VERIFY_PARAM_get_depth 3559 EXIST::FUNCTION: 3141X509_VERIFY_PARAM_get_depth 3559 EXIST::FUNCTION:
3142SHA224_Final 3560 EXIST::FUNCTION:SHA,SHA256 3142SHA224_Final 3560 EXIST::FUNCTION:SHA,SHA256
3143STORE_method_set_update_store_function 3561 EXIST:!VMS:FUNCTION: 3143STORE_meth_set_update_store_fn 3561 NOEXIST::FUNCTION:
3144STORE_meth_set_update_store_fn 3561 EXIST:VMS:FUNCTION: 3144STORE_method_set_update_store_function 3561 NOEXIST::FUNCTION:
3145SHA224_Update 3562 EXIST::FUNCTION:SHA,SHA256 3145SHA224_Update 3562 EXIST::FUNCTION:SHA,SHA256
3146d2i_ECPrivateKey 3563 EXIST::FUNCTION:EC 3146d2i_ECPrivateKey 3563 EXIST::FUNCTION:EC
3147ASN1_item_ndef_i2d 3564 EXIST::FUNCTION: 3147ASN1_item_ndef_i2d 3564 EXIST::FUNCTION:
3148STORE_delete_private_key 3565 EXIST::FUNCTION: 3148STORE_delete_private_key 3565 NOEXIST::FUNCTION:
3149ERR_pop_to_mark 3566 EXIST::FUNCTION: 3149ERR_pop_to_mark 3566 EXIST::FUNCTION:
3150ENGINE_register_all_STORE 3567 EXIST::FUNCTION:ENGINE 3150ENGINE_register_all_STORE 3567 EXIST::FUNCTION:ENGINE
3151X509_policy_level_get0_node 3568 EXIST::FUNCTION: 3151X509_policy_level_get0_node 3568 EXIST::FUNCTION:
3152i2d_PKCS7_NDEF 3569 EXIST::FUNCTION: 3152i2d_PKCS7_NDEF 3569 EXIST::FUNCTION:
3153EC_GROUP_get_degree 3570 EXIST::FUNCTION:EC 3153EC_GROUP_get_degree 3570 EXIST::FUNCTION:EC
3154ASN1_generate_v3 3571 EXIST::FUNCTION: 3154ASN1_generate_v3 3571 EXIST::FUNCTION:
3155STORE_ATTR_INFO_modify_cstr 3572 EXIST::FUNCTION: 3155STORE_ATTR_INFO_modify_cstr 3572 NOEXIST::FUNCTION:
3156X509_policy_tree_level_count 3573 EXIST::FUNCTION: 3156X509_policy_tree_level_count 3573 EXIST::FUNCTION:
3157BN_GF2m_add 3574 EXIST::FUNCTION: 3157BN_GF2m_add 3574 EXIST::FUNCTION:
3158EC_KEY_get0_group 3575 EXIST::FUNCTION:EC 3158EC_KEY_get0_group 3575 EXIST::FUNCTION:EC
3159STORE_generate_crl 3576 EXIST::FUNCTION: 3159STORE_generate_crl 3576 NOEXIST::FUNCTION:
3160STORE_store_public_key 3577 EXIST::FUNCTION: 3160STORE_store_public_key 3577 NOEXIST::FUNCTION:
3161X509_CERT_PAIR_free 3578 EXIST::FUNCTION: 3161X509_CERT_PAIR_free 3578 EXIST::FUNCTION:
3162STORE_revoke_private_key 3579 EXIST::FUNCTION: 3162STORE_revoke_private_key 3579 NOEXIST::FUNCTION:
3163BN_nist_mod_224 3580 EXIST::FUNCTION: 3163BN_nist_mod_224 3580 EXIST::FUNCTION:
3164SHA512_Final 3581 EXIST::FUNCTION:SHA,SHA512 3164SHA512_Final 3581 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3165STORE_ATTR_INFO_modify_dn 3582 EXIST::FUNCTION: 3165STORE_ATTR_INFO_modify_dn 3582 NOEXIST::FUNCTION:
3166STORE_method_get_initialise_function 3583 EXIST:!VMS:FUNCTION: 3166STORE_meth_get_initialise_fn 3583 NOEXIST::FUNCTION:
3167STORE_meth_get_initialise_fn 3583 EXIST:VMS:FUNCTION: 3167STORE_method_get_initialise_function 3583 NOEXIST::FUNCTION:
3168STORE_delete_number 3584 EXIST::FUNCTION: 3168STORE_delete_number 3584 NOEXIST::FUNCTION:
3169i2d_EC_PUBKEY_bio 3585 EXIST::FUNCTION:BIO,EC 3169i2d_EC_PUBKEY_bio 3585 EXIST::FUNCTION:BIO,EC
3170BIO_dgram_non_fatal_error 3586 EXIST::FUNCTION: 3170BIO_dgram_non_fatal_error 3586 EXIST::FUNCTION:
3171EC_GROUP_get_asn1_flag 3587 EXIST::FUNCTION:EC 3171EC_GROUP_get_asn1_flag 3587 EXIST::FUNCTION:EC
3172STORE_ATTR_INFO_in_ex 3588 EXIST::FUNCTION: 3172STORE_ATTR_INFO_in_ex 3588 NOEXIST::FUNCTION:
3173STORE_list_crl_start 3589 EXIST::FUNCTION: 3173STORE_list_crl_start 3589 NOEXIST::FUNCTION:
3174ECDH_get_ex_new_index 3590 EXIST::FUNCTION:ECDH 3174ECDH_get_ex_new_index 3590 EXIST::FUNCTION:ECDH
3175STORE_method_get_modify_function 3591 EXIST:!VMS:FUNCTION: 3175STORE_meth_get_modify_fn 3591 NOEXIST::FUNCTION:
3176STORE_meth_get_modify_fn 3591 EXIST:VMS:FUNCTION: 3176STORE_method_get_modify_function 3591 NOEXIST::FUNCTION:
3177v2i_ASN1_BIT_STRING 3592 EXIST::FUNCTION: 3177v2i_ASN1_BIT_STRING 3592 EXIST::FUNCTION:
3178STORE_store_certificate 3593 EXIST::FUNCTION: 3178STORE_store_certificate 3593 NOEXIST::FUNCTION:
3179OBJ_bsearch_ex 3594 EXIST::FUNCTION: 3179OBJ_bsearch_ex 3594 NOEXIST::FUNCTION:
3180X509_STORE_CTX_set_default 3595 EXIST::FUNCTION: 3180X509_STORE_CTX_set_default 3595 EXIST::FUNCTION:
3181STORE_ATTR_INFO_set_sha1str 3596 EXIST::FUNCTION: 3181STORE_ATTR_INFO_set_sha1str 3596 NOEXIST::FUNCTION:
3182BN_GF2m_mod_inv 3597 EXIST::FUNCTION: 3182BN_GF2m_mod_inv 3597 EXIST::FUNCTION:
3183BN_GF2m_mod_exp 3598 EXIST::FUNCTION: 3183BN_GF2m_mod_exp 3598 EXIST::FUNCTION:
3184STORE_modify_public_key 3599 EXIST::FUNCTION: 3184STORE_modify_public_key 3599 NOEXIST::FUNCTION:
3185STORE_method_get_list_start_function 3600 EXIST:!VMS:FUNCTION: 3185STORE_meth_get_list_start_fn 3600 NOEXIST::FUNCTION:
3186STORE_meth_get_list_start_fn 3600 EXIST:VMS:FUNCTION: 3186STORE_method_get_list_start_function 3600 NOEXIST::FUNCTION:
3187EC_GROUP_get0_seed 3601 EXIST::FUNCTION:EC 3187EC_GROUP_get0_seed 3601 EXIST::FUNCTION:EC
3188STORE_store_arbitrary 3602 EXIST::FUNCTION: 3188STORE_store_arbitrary 3602 NOEXIST::FUNCTION:
3189STORE_method_set_unlock_store_function 3603 EXIST:!VMS:FUNCTION: 3189STORE_meth_set_unlock_store_fn 3603 NOEXIST::FUNCTION:
3190STORE_meth_set_unlock_store_fn 3603 EXIST:VMS:FUNCTION: 3190STORE_method_set_unlock_store_function 3603 NOEXIST::FUNCTION:
3191BN_GF2m_mod_div_arr 3604 EXIST::FUNCTION: 3191BN_GF2m_mod_div_arr 3604 EXIST::FUNCTION:
3192ENGINE_set_ECDSA 3605 EXIST::FUNCTION:ENGINE 3192ENGINE_set_ECDSA 3605 EXIST::FUNCTION:ENGINE
3193STORE_create_method 3606 EXIST::FUNCTION: 3193STORE_create_method 3606 NOEXIST::FUNCTION:
3194ECPKParameters_print 3607 EXIST::FUNCTION:BIO,EC 3194ECPKParameters_print 3607 EXIST::FUNCTION:BIO,EC
3195EC_KEY_get0_private_key 3608 EXIST::FUNCTION:EC 3195EC_KEY_get0_private_key 3608 EXIST::FUNCTION:EC
3196PEM_write_EC_PUBKEY 3609 EXIST:!WIN16:FUNCTION:EC 3196PEM_write_EC_PUBKEY 3609 EXIST:!WIN16:FUNCTION:EC
@@ -3198,7 +3198,7 @@ X509_VERIFY_PARAM_set1 3610 EXIST::FUNCTION:
3198ECDH_set_method 3611 EXIST::FUNCTION:ECDH 3198ECDH_set_method 3611 EXIST::FUNCTION:ECDH
3199v2i_GENERAL_NAME_ex 3612 EXIST::FUNCTION: 3199v2i_GENERAL_NAME_ex 3612 EXIST::FUNCTION:
3200ECDH_set_ex_data 3613 EXIST::FUNCTION:ECDH 3200ECDH_set_ex_data 3613 EXIST::FUNCTION:ECDH
3201STORE_generate_key 3614 EXIST::FUNCTION: 3201STORE_generate_key 3614 NOEXIST::FUNCTION:
3202BN_nist_mod_521 3615 EXIST::FUNCTION: 3202BN_nist_mod_521 3615 EXIST::FUNCTION:
3203X509_policy_tree_get0_level 3616 EXIST::FUNCTION: 3203X509_policy_tree_get0_level 3616 EXIST::FUNCTION:
3204EC_GROUP_set_point_conversion_form 3617 EXIST:!VMS:FUNCTION:EC 3204EC_GROUP_set_point_conversion_form 3617 EXIST:!VMS:FUNCTION:EC
@@ -3206,7 +3206,7 @@ EC_GROUP_set_point_conv_form 3617 EXIST:VMS:FUNCTION:EC
3206PEM_read_EC_PUBKEY 3618 EXIST:!WIN16:FUNCTION:EC 3206PEM_read_EC_PUBKEY 3618 EXIST:!WIN16:FUNCTION:EC
3207i2d_ECDSA_SIG 3619 EXIST::FUNCTION:ECDSA 3207i2d_ECDSA_SIG 3619 EXIST::FUNCTION:ECDSA
3208ECDSA_OpenSSL 3620 EXIST::FUNCTION:ECDSA 3208ECDSA_OpenSSL 3620 EXIST::FUNCTION:ECDSA
3209STORE_delete_crl 3621 EXIST::FUNCTION: 3209STORE_delete_crl 3621 NOEXIST::FUNCTION:
3210EC_KEY_get_enc_flags 3622 EXIST::FUNCTION:EC 3210EC_KEY_get_enc_flags 3622 EXIST::FUNCTION:EC
3211ASN1_const_check_infinite_end 3623 EXIST::FUNCTION: 3211ASN1_const_check_infinite_end 3623 EXIST::FUNCTION:
3212EVP_PKEY_delete_attr 3624 EXIST::FUNCTION: 3212EVP_PKEY_delete_attr 3624 EXIST::FUNCTION:
@@ -3214,31 +3214,31 @@ ECDSA_set_default_method 3625 EXIST::FUNCTION:ECDSA
3214EC_POINT_set_compressed_coordinates_GF2m 3626 EXIST:!VMS:FUNCTION:EC 3214EC_POINT_set_compressed_coordinates_GF2m 3626 EXIST:!VMS:FUNCTION:EC
3215EC_POINT_set_compr_coords_GF2m 3626 EXIST:VMS:FUNCTION:EC 3215EC_POINT_set_compr_coords_GF2m 3626 EXIST:VMS:FUNCTION:EC
3216EC_GROUP_cmp 3627 EXIST::FUNCTION:EC 3216EC_GROUP_cmp 3627 EXIST::FUNCTION:EC
3217STORE_revoke_certificate 3628 EXIST::FUNCTION: 3217STORE_revoke_certificate 3628 NOEXIST::FUNCTION:
3218BN_get0_nist_prime_256 3629 EXIST::FUNCTION: 3218BN_get0_nist_prime_256 3629 EXIST::FUNCTION:
3219STORE_method_get_delete_function 3630 EXIST:!VMS:FUNCTION: 3219STORE_meth_get_delete_fn 3630 NOEXIST::FUNCTION:
3220STORE_meth_get_delete_fn 3630 EXIST:VMS:FUNCTION: 3220STORE_method_get_delete_function 3630 NOEXIST::FUNCTION:
3221SHA224_Init 3631 EXIST::FUNCTION:SHA,SHA256 3221SHA224_Init 3631 EXIST::FUNCTION:SHA,SHA256
3222PEM_read_ECPrivateKey 3632 EXIST:!WIN16:FUNCTION:EC 3222PEM_read_ECPrivateKey 3632 EXIST:!WIN16:FUNCTION:EC
3223SHA512_Init 3633 EXIST::FUNCTION:SHA,SHA512 3223SHA512_Init 3633 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3224STORE_parse_attrs_endp 3634 EXIST::FUNCTION: 3224STORE_parse_attrs_endp 3634 NOEXIST::FUNCTION:
3225BN_set_negative 3635 EXIST::FUNCTION: 3225BN_set_negative 3635 EXIST::FUNCTION:
3226ERR_load_ECDSA_strings 3636 EXIST::FUNCTION:ECDSA 3226ERR_load_ECDSA_strings 3636 EXIST::FUNCTION:ECDSA
3227EC_GROUP_get_basis_type 3637 EXIST::FUNCTION:EC 3227EC_GROUP_get_basis_type 3637 EXIST::FUNCTION:EC
3228STORE_list_public_key_next 3638 EXIST::FUNCTION: 3228STORE_list_public_key_next 3638 NOEXIST::FUNCTION:
3229i2v_ASN1_BIT_STRING 3639 EXIST::FUNCTION: 3229i2v_ASN1_BIT_STRING 3639 EXIST::FUNCTION:
3230STORE_OBJECT_free 3640 EXIST::FUNCTION: 3230STORE_OBJECT_free 3640 NOEXIST::FUNCTION:
3231BN_nist_mod_384 3641 EXIST::FUNCTION: 3231BN_nist_mod_384 3641 EXIST::FUNCTION:
3232i2d_X509_CERT_PAIR 3642 EXIST::FUNCTION: 3232i2d_X509_CERT_PAIR 3642 EXIST::FUNCTION:
3233PEM_write_ECPKParameters 3643 EXIST:!WIN16:FUNCTION:EC 3233PEM_write_ECPKParameters 3643 EXIST:!WIN16:FUNCTION:EC
3234ECDH_compute_key 3644 EXIST::FUNCTION:ECDH 3234ECDH_compute_key 3644 EXIST::FUNCTION:ECDH
3235STORE_ATTR_INFO_get0_sha1str 3645 EXIST::FUNCTION: 3235STORE_ATTR_INFO_get0_sha1str 3645 NOEXIST::FUNCTION:
3236ENGINE_register_all_ECDH 3646 EXIST::FUNCTION:ENGINE 3236ENGINE_register_all_ECDH 3646 EXIST::FUNCTION:ENGINE
3237pqueue_pop 3647 EXIST::FUNCTION: 3237pqueue_pop 3647 EXIST::FUNCTION:
3238STORE_ATTR_INFO_get0_cstr 3648 EXIST::FUNCTION: 3238STORE_ATTR_INFO_get0_cstr 3648 NOEXIST::FUNCTION:
3239POLICY_CONSTRAINTS_it 3649 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 3239POLICY_CONSTRAINTS_it 3649 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3240POLICY_CONSTRAINTS_it 3649 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 3240POLICY_CONSTRAINTS_it 3649 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3241STORE_get_ex_new_index 3650 EXIST::FUNCTION: 3241STORE_get_ex_new_index 3650 NOEXIST::FUNCTION:
3242EVP_PKEY_get_attr_by_OBJ 3651 EXIST::FUNCTION: 3242EVP_PKEY_get_attr_by_OBJ 3651 EXIST::FUNCTION:
3243X509_VERIFY_PARAM_add0_policy 3652 EXIST::FUNCTION: 3243X509_VERIFY_PARAM_add0_policy 3652 EXIST::FUNCTION:
3244BN_GF2m_mod_solve_quad 3653 EXIST::FUNCTION: 3244BN_GF2m_mod_solve_quad 3653 EXIST::FUNCTION:
@@ -3259,20 +3259,20 @@ EC_KEY_set_enc_flags 3665 EXIST::FUNCTION:EC
3259ECDSA_verify 3666 EXIST::FUNCTION:ECDSA 3259ECDSA_verify 3666 EXIST::FUNCTION:ECDSA
3260EC_POINT_point2hex 3667 EXIST::FUNCTION:EC 3260EC_POINT_point2hex 3667 EXIST::FUNCTION:EC
3261ENGINE_get_STORE 3668 EXIST::FUNCTION:ENGINE 3261ENGINE_get_STORE 3668 EXIST::FUNCTION:ENGINE
3262SHA512 3669 EXIST::FUNCTION:SHA,SHA512 3262SHA512 3669 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3263STORE_get_certificate 3670 EXIST::FUNCTION: 3263STORE_get_certificate 3670 NOEXIST::FUNCTION:
3264ECDSA_do_sign_ex 3671 EXIST::FUNCTION:ECDSA 3264ECDSA_do_sign_ex 3671 EXIST::FUNCTION:ECDSA
3265ECDSA_do_verify 3672 EXIST::FUNCTION:ECDSA 3265ECDSA_do_verify 3672 EXIST::FUNCTION:ECDSA
3266d2i_ECPrivateKey_fp 3673 EXIST::FUNCTION:EC,FP_API 3266d2i_ECPrivateKey_fp 3673 EXIST::FUNCTION:EC,FP_API
3267STORE_delete_certificate 3674 EXIST::FUNCTION: 3267STORE_delete_certificate 3674 NOEXIST::FUNCTION:
3268SHA512_Transform 3675 EXIST::FUNCTION:SHA,SHA512 3268SHA512_Transform 3675 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3269X509_STORE_set1_param 3676 EXIST::FUNCTION: 3269X509_STORE_set1_param 3676 EXIST::FUNCTION:
3270STORE_method_get_ctrl_function 3677 EXIST::FUNCTION: 3270STORE_method_get_ctrl_function 3677 NOEXIST::FUNCTION:
3271STORE_free 3678 EXIST::FUNCTION: 3271STORE_free 3678 NOEXIST::FUNCTION:
3272PEM_write_ECPrivateKey 3679 EXIST:!WIN16:FUNCTION:EC 3272PEM_write_ECPrivateKey 3679 EXIST:!WIN16:FUNCTION:EC
3273STORE_method_get_unlock_store_function 3680 EXIST:!VMS:FUNCTION: 3273STORE_meth_get_unlock_store_fn 3680 NOEXIST::FUNCTION:
3274STORE_meth_get_unlock_store_fn 3680 EXIST:VMS:FUNCTION: 3274STORE_method_get_unlock_store_function 3680 NOEXIST::FUNCTION:
3275STORE_get_ex_data 3681 EXIST::FUNCTION: 3275STORE_get_ex_data 3681 NOEXIST::FUNCTION:
3276EC_KEY_set_public_key 3682 EXIST::FUNCTION:EC 3276EC_KEY_set_public_key 3682 EXIST::FUNCTION:EC
3277PEM_read_ECPKParameters 3683 EXIST:!WIN16:FUNCTION:EC 3277PEM_read_ECPKParameters 3683 EXIST:!WIN16:FUNCTION:EC
3278X509_CERT_PAIR_new 3684 EXIST::FUNCTION: 3278X509_CERT_PAIR_new 3684 EXIST::FUNCTION:
@@ -3282,8 +3282,8 @@ DSA_generate_parameters_ex 3687 EXIST::FUNCTION:DSA
3282ECParameters_print_fp 3688 EXIST::FUNCTION:EC,FP_API 3282ECParameters_print_fp 3688 EXIST::FUNCTION:EC,FP_API
3283X509V3_NAME_from_section 3689 EXIST::FUNCTION: 3283X509V3_NAME_from_section 3689 EXIST::FUNCTION:
3284EVP_PKEY_add1_attr 3690 EXIST::FUNCTION: 3284EVP_PKEY_add1_attr 3690 EXIST::FUNCTION:
3285STORE_modify_crl 3691 EXIST::FUNCTION: 3285STORE_modify_crl 3691 NOEXIST::FUNCTION:
3286STORE_list_private_key_start 3692 EXIST::FUNCTION: 3286STORE_list_private_key_start 3692 NOEXIST::FUNCTION:
3287POLICY_MAPPINGS_it 3693 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 3287POLICY_MAPPINGS_it 3693 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3288POLICY_MAPPINGS_it 3693 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 3288POLICY_MAPPINGS_it 3693 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3289GENERAL_SUBTREE_it 3694 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 3289GENERAL_SUBTREE_it 3694 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
@@ -3292,7 +3292,7 @@ EC_GROUP_get_curve_name 3695 EXIST::FUNCTION:EC
3292PEM_write_X509_CERT_PAIR 3696 EXIST:!WIN16:FUNCTION: 3292PEM_write_X509_CERT_PAIR 3696 EXIST:!WIN16:FUNCTION:
3293BIO_dump_indent_cb 3697 EXIST::FUNCTION: 3293BIO_dump_indent_cb 3697 EXIST::FUNCTION:
3294d2i_X509_CERT_PAIR 3698 EXIST::FUNCTION: 3294d2i_X509_CERT_PAIR 3698 EXIST::FUNCTION:
3295STORE_list_private_key_endp 3699 EXIST::FUNCTION: 3295STORE_list_private_key_endp 3699 NOEXIST::FUNCTION:
3296asn1_const_Finish 3700 EXIST::FUNCTION: 3296asn1_const_Finish 3700 EXIST::FUNCTION:
3297i2d_EC_PUBKEY_fp 3701 EXIST::FUNCTION:EC,FP_API 3297i2d_EC_PUBKEY_fp 3701 EXIST::FUNCTION:EC,FP_API
3298BN_nist_mod_256 3702 EXIST::FUNCTION: 3298BN_nist_mod_256 3702 EXIST::FUNCTION:
@@ -3302,47 +3302,47 @@ BN_BLINDING_create_param 3705 EXIST::FUNCTION:
3302ECDSA_size 3706 EXIST::FUNCTION:ECDSA 3302ECDSA_size 3706 EXIST::FUNCTION:ECDSA
3303d2i_EC_PUBKEY_bio 3707 EXIST::FUNCTION:BIO,EC 3303d2i_EC_PUBKEY_bio 3707 EXIST::FUNCTION:BIO,EC
3304BN_get0_nist_prime_521 3708 EXIST::FUNCTION: 3304BN_get0_nist_prime_521 3708 EXIST::FUNCTION:
3305STORE_ATTR_INFO_modify_sha1str 3709 EXIST::FUNCTION: 3305STORE_ATTR_INFO_modify_sha1str 3709 NOEXIST::FUNCTION:
3306BN_generate_prime_ex 3710 EXIST::FUNCTION: 3306BN_generate_prime_ex 3710 EXIST::FUNCTION:
3307EC_GROUP_new_by_curve_name 3711 EXIST::FUNCTION:EC 3307EC_GROUP_new_by_curve_name 3711 EXIST::FUNCTION:EC
3308SHA256_Final 3712 EXIST::FUNCTION:SHA,SHA256 3308SHA256_Final 3712 EXIST::FUNCTION:SHA,SHA256
3309DH_generate_parameters_ex 3713 EXIST::FUNCTION:DH 3309DH_generate_parameters_ex 3713 EXIST::FUNCTION:DH
3310PEM_read_bio_ECPrivateKey 3714 EXIST::FUNCTION:EC 3310PEM_read_bio_ECPrivateKey 3714 EXIST::FUNCTION:EC
3311STORE_method_get_cleanup_function 3715 EXIST:!VMS:FUNCTION: 3311STORE_meth_get_cleanup_fn 3715 NOEXIST::FUNCTION:
3312STORE_meth_get_cleanup_fn 3715 EXIST:VMS:FUNCTION: 3312STORE_method_get_cleanup_function 3715 NOEXIST::FUNCTION:
3313ENGINE_get_ECDH 3716 EXIST::FUNCTION:ENGINE 3313ENGINE_get_ECDH 3716 EXIST::FUNCTION:ENGINE
3314d2i_ECDSA_SIG 3717 EXIST::FUNCTION:ECDSA 3314d2i_ECDSA_SIG 3717 EXIST::FUNCTION:ECDSA
3315BN_is_prime_fasttest_ex 3718 EXIST::FUNCTION: 3315BN_is_prime_fasttest_ex 3718 EXIST::FUNCTION:
3316ECDSA_sign 3719 EXIST::FUNCTION:ECDSA 3316ECDSA_sign 3719 EXIST::FUNCTION:ECDSA
3317X509_policy_check 3720 EXIST::FUNCTION: 3317X509_policy_check 3720 EXIST::FUNCTION:
3318EVP_PKEY_get_attr_by_NID 3721 EXIST::FUNCTION: 3318EVP_PKEY_get_attr_by_NID 3721 EXIST::FUNCTION:
3319STORE_set_ex_data 3722 EXIST::FUNCTION: 3319STORE_set_ex_data 3722 NOEXIST::FUNCTION:
3320ENGINE_get_ECDSA 3723 EXIST::FUNCTION:ENGINE 3320ENGINE_get_ECDSA 3723 EXIST::FUNCTION:ENGINE
3321EVP_ecdsa 3724 EXIST::FUNCTION:SHA 3321EVP_ecdsa 3724 EXIST::FUNCTION:SHA
3322BN_BLINDING_get_flags 3725 EXIST::FUNCTION: 3322BN_BLINDING_get_flags 3725 EXIST::FUNCTION:
3323PKCS12_add_cert 3726 EXIST::FUNCTION: 3323PKCS12_add_cert 3726 EXIST::FUNCTION:
3324STORE_OBJECT_new 3727 EXIST::FUNCTION: 3324STORE_OBJECT_new 3727 NOEXIST::FUNCTION:
3325ERR_load_ECDH_strings 3728 EXIST::FUNCTION:ECDH 3325ERR_load_ECDH_strings 3728 EXIST::FUNCTION:ECDH
3326EC_KEY_dup 3729 EXIST::FUNCTION:EC 3326EC_KEY_dup 3729 EXIST::FUNCTION:EC
3327EVP_CIPHER_CTX_rand_key 3730 EXIST::FUNCTION: 3327EVP_CIPHER_CTX_rand_key 3730 EXIST::FUNCTION:
3328ECDSA_set_method 3731 EXIST::FUNCTION:ECDSA 3328ECDSA_set_method 3731 EXIST::FUNCTION:ECDSA
3329a2i_IPADDRESS_NC 3732 EXIST::FUNCTION: 3329a2i_IPADDRESS_NC 3732 EXIST::FUNCTION:
3330d2i_ECParameters 3733 EXIST::FUNCTION:EC 3330d2i_ECParameters 3733 EXIST::FUNCTION:EC
3331STORE_list_certificate_end 3734 EXIST::FUNCTION: 3331STORE_list_certificate_end 3734 NOEXIST::FUNCTION:
3332STORE_get_crl 3735 EXIST::FUNCTION: 3332STORE_get_crl 3735 NOEXIST::FUNCTION:
3333X509_POLICY_NODE_print 3736 EXIST::FUNCTION: 3333X509_POLICY_NODE_print 3736 EXIST::FUNCTION:
3334SHA384_Init 3737 EXIST::FUNCTION:SHA,SHA512 3334SHA384_Init 3737 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3335EC_GF2m_simple_method 3738 EXIST::FUNCTION:EC 3335EC_GF2m_simple_method 3738 EXIST::FUNCTION:EC
3336ECDSA_set_ex_data 3739 EXIST::FUNCTION:ECDSA 3336ECDSA_set_ex_data 3739 EXIST::FUNCTION:ECDSA
3337SHA384_Final 3740 EXIST::FUNCTION:SHA,SHA512 3337SHA384_Final 3740 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3338PKCS7_set_digest 3741 EXIST::FUNCTION: 3338PKCS7_set_digest 3741 EXIST::FUNCTION:
3339EC_KEY_print 3742 EXIST::FUNCTION:BIO,EC 3339EC_KEY_print 3742 EXIST::FUNCTION:BIO,EC
3340STORE_method_set_lock_store_function 3743 EXIST:!VMS:FUNCTION: 3340STORE_meth_set_lock_store_fn 3743 NOEXIST::FUNCTION:
3341STORE_meth_set_lock_store_fn 3743 EXIST:VMS:FUNCTION: 3341STORE_method_set_lock_store_function 3743 NOEXIST::FUNCTION:
3342ECDSA_get_ex_new_index 3744 EXIST::FUNCTION:ECDSA 3342ECDSA_get_ex_new_index 3744 EXIST::FUNCTION:ECDSA
3343SHA384 3745 EXIST::FUNCTION:SHA,SHA512 3343SHA384 3745 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3344POLICY_MAPPING_new 3746 EXIST::FUNCTION: 3344POLICY_MAPPING_new 3746 EXIST::FUNCTION:
3345STORE_list_certificate_endp 3747 EXIST::FUNCTION: 3345STORE_list_certificate_endp 3747 NOEXIST::FUNCTION:
3346X509_STORE_CTX_get0_policy_tree 3748 EXIST::FUNCTION: 3346X509_STORE_CTX_get0_policy_tree 3748 EXIST::FUNCTION:
3347EC_GROUP_set_asn1_flag 3749 EXIST::FUNCTION:EC 3347EC_GROUP_set_asn1_flag 3749 EXIST::FUNCTION:EC
3348EC_KEY_check_key 3750 EXIST::FUNCTION:EC 3348EC_KEY_check_key 3750 EXIST::FUNCTION:EC
@@ -3350,13 +3350,13 @@ d2i_EC_PUBKEY_fp 3751 EXIST::FUNCTION:EC,FP_API
3350PKCS7_set0_type_other 3752 EXIST::FUNCTION: 3350PKCS7_set0_type_other 3752 EXIST::FUNCTION:
3351PEM_read_bio_X509_CERT_PAIR 3753 EXIST::FUNCTION: 3351PEM_read_bio_X509_CERT_PAIR 3753 EXIST::FUNCTION:
3352pqueue_next 3754 EXIST::FUNCTION: 3352pqueue_next 3754 EXIST::FUNCTION:
3353STORE_method_get_list_end_function 3755 EXIST:!VMS:FUNCTION: 3353STORE_meth_get_list_end_fn 3755 NOEXIST::FUNCTION:
3354STORE_meth_get_list_end_fn 3755 EXIST:VMS:FUNCTION: 3354STORE_method_get_list_end_function 3755 NOEXIST::FUNCTION:
3355EVP_PKEY_add1_attr_by_OBJ 3756 EXIST::FUNCTION: 3355EVP_PKEY_add1_attr_by_OBJ 3756 EXIST::FUNCTION:
3356X509_VERIFY_PARAM_set_time 3757 EXIST::FUNCTION: 3356X509_VERIFY_PARAM_set_time 3757 EXIST::FUNCTION:
3357pqueue_new 3758 EXIST::FUNCTION: 3357pqueue_new 3758 EXIST::FUNCTION:
3358ENGINE_set_default_ECDH 3759 EXIST::FUNCTION:ENGINE 3358ENGINE_set_default_ECDH 3759 EXIST::FUNCTION:ENGINE
3359STORE_new_method 3760 EXIST::FUNCTION: 3359STORE_new_method 3760 NOEXIST::FUNCTION:
3360PKCS12_add_key 3761 EXIST::FUNCTION: 3360PKCS12_add_key 3761 EXIST::FUNCTION:
3361DSO_merge 3762 EXIST::FUNCTION: 3361DSO_merge 3762 EXIST::FUNCTION:
3362EC_POINT_hex2point 3763 EXIST::FUNCTION:EC 3362EC_POINT_hex2point 3763 EXIST::FUNCTION:EC
@@ -3366,7 +3366,7 @@ pqueue_insert 3766 EXIST::FUNCTION:
3366pitem_free 3767 EXIST::FUNCTION: 3366pitem_free 3767 EXIST::FUNCTION:
3367BN_GF2m_mod_inv_arr 3768 EXIST::FUNCTION: 3367BN_GF2m_mod_inv_arr 3768 EXIST::FUNCTION:
3368ENGINE_unregister_ECDSA 3769 EXIST::FUNCTION:ENGINE 3368ENGINE_unregister_ECDSA 3769 EXIST::FUNCTION:ENGINE
3369BN_BLINDING_set_thread_id 3770 EXIST::FUNCTION: 3369BN_BLINDING_set_thread_id 3770 EXIST::FUNCTION:DEPRECATED
3370get_rfc3526_prime_8192 3771 EXIST::FUNCTION: 3370get_rfc3526_prime_8192 3771 EXIST::FUNCTION:
3371X509_VERIFY_PARAM_clear_flags 3772 EXIST::FUNCTION: 3371X509_VERIFY_PARAM_clear_flags 3772 EXIST::FUNCTION:
3372get_rfc2409_prime_1024 3773 EXIST::FUNCTION: 3372get_rfc2409_prime_1024 3773 EXIST::FUNCTION:
@@ -3385,7 +3385,7 @@ Camellia_cfb128_encrypt 3785 EXIST::FUNCTION:CAMELLIA
3385Camellia_cfb1_encrypt 3786 EXIST::FUNCTION:CAMELLIA 3385Camellia_cfb1_encrypt 3786 EXIST::FUNCTION:CAMELLIA
3386Camellia_cfb8_encrypt 3787 EXIST::FUNCTION:CAMELLIA 3386Camellia_cfb8_encrypt 3787 EXIST::FUNCTION:CAMELLIA
3387Camellia_ctr128_encrypt 3788 EXIST::FUNCTION:CAMELLIA 3387Camellia_ctr128_encrypt 3788 EXIST::FUNCTION:CAMELLIA
3388Camellia_cfbr_encrypt_block 3789 EXIST::FUNCTION:CAMELLIA 3388Camellia_cfbr_encrypt_block 3789 NOEXIST::FUNCTION:
3389Camellia_decrypt 3790 EXIST::FUNCTION:CAMELLIA 3389Camellia_decrypt 3790 EXIST::FUNCTION:CAMELLIA
3390Camellia_ecb_encrypt 3791 EXIST::FUNCTION:CAMELLIA 3390Camellia_ecb_encrypt 3791 EXIST::FUNCTION:CAMELLIA
3391Camellia_encrypt 3792 EXIST::FUNCTION:CAMELLIA 3391Camellia_encrypt 3792 EXIST::FUNCTION:CAMELLIA
@@ -3585,7 +3585,7 @@ CMS_data_create 3975 EXIST::FUNCTION:CMS
3585i2d_CMS_bio 3976 EXIST::FUNCTION:CMS 3585i2d_CMS_bio 3976 EXIST::FUNCTION:CMS
3586CMS_EncryptedData_set1_key 3977 EXIST::FUNCTION:CMS 3586CMS_EncryptedData_set1_key 3977 EXIST::FUNCTION:CMS
3587CMS_decrypt 3978 EXIST::FUNCTION:CMS 3587CMS_decrypt 3978 EXIST::FUNCTION:CMS
3588int_smime_write_ASN1 3979 EXIST::FUNCTION: 3588int_smime_write_ASN1 3979 NOEXIST::FUNCTION:
3589CMS_unsigned_delete_attr 3980 EXIST::FUNCTION:CMS 3589CMS_unsigned_delete_attr 3980 EXIST::FUNCTION:CMS
3590CMS_unsigned_get_attr_count 3981 EXIST::FUNCTION:CMS 3590CMS_unsigned_get_attr_count 3981 EXIST::FUNCTION:CMS
3591CMS_add_smimecap 3982 EXIST::FUNCTION:CMS 3591CMS_add_smimecap 3982 EXIST::FUNCTION:CMS
@@ -3657,53 +3657,52 @@ ENGINE_set_ld_ssl_clnt_cert_fn 4044 EXIST:VMS:FUNCTION:ENGINE
3657ENGINE_get_ssl_client_cert_function 4045 EXIST:!VMS:FUNCTION:ENGINE 3657ENGINE_get_ssl_client_cert_function 4045 EXIST:!VMS:FUNCTION:ENGINE
3658ENGINE_get_ssl_client_cert_fn 4045 EXIST:VMS:FUNCTION:ENGINE 3658ENGINE_get_ssl_client_cert_fn 4045 EXIST:VMS:FUNCTION:ENGINE
3659ENGINE_load_ssl_client_cert 4046 EXIST::FUNCTION:ENGINE 3659ENGINE_load_ssl_client_cert 4046 EXIST::FUNCTION:ENGINE
3660ENGINE_load_capi 4047 EXIST::FUNCTION:CAPIENG,ENGINE 3660ENGINE_load_capi 4047 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
3661OPENSSL_isservice 4048 EXIST::FUNCTION: 3661OPENSSL_isservice 4048 EXIST::FUNCTION:
3662FIPS_dsa_sig_decode 4049 EXIST:OPENSSL_FIPS:FUNCTION:DSA 3662FIPS_dsa_sig_decode 4049 NOEXIST::FUNCTION:
3663EVP_CIPHER_CTX_clear_flags 4050 EXIST::FUNCTION: 3663EVP_CIPHER_CTX_clear_flags 4050 EXIST::FUNCTION:
3664FIPS_rand_status 4051 EXIST:OPENSSL_FIPS:FUNCTION: 3664FIPS_rand_status 4051 NOEXIST::FUNCTION:
3665FIPS_rand_set_key 4052 EXIST:OPENSSL_FIPS:FUNCTION: 3665FIPS_rand_set_key 4052 NOEXIST::FUNCTION:
3666CRYPTO_set_mem_info_functions 4053 EXIST::FUNCTION: 3666CRYPTO_set_mem_info_functions 4053 NOEXIST::FUNCTION:
3667RSA_X931_generate_key_ex 4054 EXIST::FUNCTION:RSA 3667RSA_X931_generate_key_ex 4054 NOEXIST::FUNCTION:
3668int_ERR_set_state_func 4055 EXIST:OPENSSL_FIPS:FUNCTION: 3668int_ERR_set_state_func 4055 NOEXIST::FUNCTION:
3669int_EVP_MD_set_engine_callbacks 4056 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3669int_EVP_MD_set_engine_callbacks 4056 NOEXIST::FUNCTION:
3670int_CRYPTO_set_do_dynlock_callback 4057 EXIST:!VMS:FUNCTION: 3670int_CRYPTO_set_do_dynlock_callback 4057 NOEXIST::FUNCTION:
3671int_CRYPTO_set_do_dynlock_cb 4057 EXIST:VMS:FUNCTION: 3671FIPS_rng_stick 4058 NOEXIST::FUNCTION:
3672FIPS_rng_stick 4058 EXIST:OPENSSL_FIPS:FUNCTION:
3673EVP_CIPHER_CTX_set_flags 4059 EXIST::FUNCTION: 3672EVP_CIPHER_CTX_set_flags 4059 EXIST::FUNCTION:
3674BN_X931_generate_prime_ex 4060 EXIST::FUNCTION: 3673BN_X931_generate_prime_ex 4060 NOEXIST::FUNCTION:
3675FIPS_selftest_check 4061 EXIST:OPENSSL_FIPS:FUNCTION: 3674FIPS_selftest_check 4061 NOEXIST::FUNCTION:
3676FIPS_rand_set_dt 4062 EXIST:OPENSSL_FIPS:FUNCTION: 3675FIPS_rand_set_dt 4062 NOEXIST::FUNCTION:
3677CRYPTO_dbg_pop_info 4063 EXIST::FUNCTION: 3676CRYPTO_dbg_pop_info 4063 NOEXIST::FUNCTION:
3678FIPS_dsa_free 4064 EXIST:OPENSSL_FIPS:FUNCTION:DSA 3677FIPS_dsa_free 4064 NOEXIST::FUNCTION:
3679RSA_X931_derive_ex 4065 EXIST::FUNCTION:RSA 3678RSA_X931_derive_ex 4065 NOEXIST::FUNCTION:
3680FIPS_rsa_new 4066 EXIST:OPENSSL_FIPS:FUNCTION:RSA 3679FIPS_rsa_new 4066 NOEXIST::FUNCTION:
3681FIPS_rand_bytes 4067 EXIST:OPENSSL_FIPS:FUNCTION: 3680FIPS_rand_bytes 4067 NOEXIST::FUNCTION:
3682fips_cipher_test 4068 EXIST:OPENSSL_FIPS:FUNCTION: 3681fips_cipher_test 4068 NOEXIST::FUNCTION:
3683EVP_CIPHER_CTX_test_flags 4069 EXIST::FUNCTION: 3682EVP_CIPHER_CTX_test_flags 4069 EXIST::FUNCTION:
3684CRYPTO_malloc_debug_init 4070 EXIST::FUNCTION: 3683CRYPTO_malloc_debug_init 4070 NOEXIST::FUNCTION:
3685CRYPTO_dbg_push_info 4071 EXIST::FUNCTION: 3684CRYPTO_dbg_push_info 4071 NOEXIST::FUNCTION:
3686FIPS_corrupt_rsa_keygen 4072 EXIST:OPENSSL_FIPS:FUNCTION: 3685FIPS_corrupt_rsa_keygen 4072 NOEXIST::FUNCTION:
3687FIPS_dh_new 4073 EXIST:OPENSSL_FIPS:FUNCTION:DH 3686FIPS_dh_new 4073 NOEXIST::FUNCTION:
3688FIPS_corrupt_dsa_keygen 4074 EXIST:OPENSSL_FIPS:FUNCTION: 3687FIPS_corrupt_dsa_keygen 4074 NOEXIST::FUNCTION:
3689FIPS_dh_free 4075 EXIST:OPENSSL_FIPS:FUNCTION:DH 3688FIPS_dh_free 4075 NOEXIST::FUNCTION:
3690fips_pkey_signature_test 4076 EXIST:OPENSSL_FIPS:FUNCTION: 3689fips_pkey_signature_test 4076 NOEXIST::FUNCTION:
3691EVP_add_alg_module 4077 EXIST::FUNCTION: 3690EVP_add_alg_module 4077 NOEXIST::FUNCTION:
3692int_RAND_init_engine_callbacks 4078 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3691int_RAND_init_engine_callbacks 4078 NOEXIST::FUNCTION:
3693int_EVP_CIPHER_set_engine_callbacks 4079 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3692int_EVP_CIPHER_set_engine_callbacks 4079 NOEXIST::FUNCTION:
3694int_EVP_MD_init_engine_callbacks 4080 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3693int_EVP_MD_init_engine_callbacks 4080 NOEXIST::FUNCTION:
3695FIPS_rand_test_mode 4081 EXIST:OPENSSL_FIPS:FUNCTION: 3694FIPS_rand_test_mode 4081 NOEXIST::FUNCTION:
3696FIPS_rand_reset 4082 EXIST:OPENSSL_FIPS:FUNCTION: 3695FIPS_rand_reset 4082 NOEXIST::FUNCTION:
3697FIPS_dsa_new 4083 EXIST:OPENSSL_FIPS:FUNCTION:DSA 3696FIPS_dsa_new 4083 NOEXIST::FUNCTION:
3698int_RAND_set_callbacks 4084 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3697int_RAND_set_callbacks 4084 NOEXIST::FUNCTION:
3699BN_X931_derive_prime_ex 4085 EXIST::FUNCTION: 3698BN_X931_derive_prime_ex 4085 NOEXIST::FUNCTION:
3700int_ERR_lib_init 4086 EXIST:OPENSSL_FIPS:FUNCTION: 3699int_ERR_lib_init 4086 NOEXIST::FUNCTION:
3701int_EVP_CIPHER_init_engine_callbacks 4087 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3700int_EVP_CIPHER_init_engine_callbacks 4087 NOEXIST::FUNCTION:
3702FIPS_rsa_free 4088 EXIST:OPENSSL_FIPS:FUNCTION:RSA 3701FIPS_rsa_free 4088 NOEXIST::FUNCTION:
3703FIPS_dsa_sig_encode 4089 EXIST:OPENSSL_FIPS:FUNCTION:DSA 3702FIPS_dsa_sig_encode 4089 NOEXIST::FUNCTION:
3704CRYPTO_dbg_remove_all_info 4090 EXIST::FUNCTION: 3703CRYPTO_dbg_remove_all_info 4090 NOEXIST::FUNCTION:
3705OPENSSL_init 4091 EXIST::FUNCTION: 3704OPENSSL_init 4091 NOEXIST::FUNCTION:
3706private_Camellia_set_key 4092 EXIST:OPENSSL_FIPS:FUNCTION:CAMELLIA 3705private_Camellia_set_key 4092 NOEXIST::FUNCTION:
3707CRYPTO_strdup 4093 EXIST::FUNCTION: 3706CRYPTO_strdup 4093 EXIST::FUNCTION:
3708JPAKE_STEP3A_process 4094 EXIST::FUNCTION:JPAKE 3707JPAKE_STEP3A_process 4094 EXIST::FUNCTION:JPAKE
3709JPAKE_STEP1_release 4095 EXIST::FUNCTION:JPAKE 3708JPAKE_STEP1_release 4095 EXIST::FUNCTION:JPAKE
@@ -3725,3 +3724,457 @@ JPAKE_STEP2_release 4110 EXIST::FUNCTION:JPAKE
3725JPAKE_STEP3A_init 4111 EXIST::FUNCTION:JPAKE 3724JPAKE_STEP3A_init 4111 EXIST::FUNCTION:JPAKE
3726ERR_load_JPAKE_strings 4112 EXIST::FUNCTION:JPAKE 3725ERR_load_JPAKE_strings 4112 EXIST::FUNCTION:JPAKE
3727JPAKE_STEP2_init 4113 EXIST::FUNCTION:JPAKE 3726JPAKE_STEP2_init 4113 EXIST::FUNCTION:JPAKE
3727pqueue_size 4114 EXIST::FUNCTION:
3728i2d_TS_ACCURACY 4115 EXIST::FUNCTION:
3729i2d_TS_MSG_IMPRINT_fp 4116 EXIST::FUNCTION:
3730i2d_TS_MSG_IMPRINT 4117 EXIST::FUNCTION:
3731EVP_PKEY_print_public 4118 EXIST::FUNCTION:
3732EVP_PKEY_CTX_new 4119 EXIST::FUNCTION:
3733i2d_TS_TST_INFO 4120 EXIST::FUNCTION:
3734EVP_PKEY_asn1_find 4121 EXIST::FUNCTION:
3735DSO_METHOD_beos 4122 EXIST::FUNCTION:
3736TS_CONF_load_cert 4123 EXIST::FUNCTION:
3737TS_REQ_get_ext 4124 EXIST::FUNCTION:
3738EVP_PKEY_sign_init 4125 EXIST::FUNCTION:
3739ASN1_item_print 4126 EXIST::FUNCTION:
3740TS_TST_INFO_set_nonce 4127 EXIST::FUNCTION:
3741TS_RESP_dup 4128 EXIST::FUNCTION:
3742ENGINE_register_pkey_meths 4129 EXIST::FUNCTION:ENGINE
3743EVP_PKEY_asn1_add0 4130 EXIST::FUNCTION:
3744PKCS7_add0_attrib_signing_time 4131 EXIST::FUNCTION:
3745i2d_TS_TST_INFO_fp 4132 EXIST::FUNCTION:
3746BIO_asn1_get_prefix 4133 EXIST::FUNCTION:
3747TS_TST_INFO_set_time 4134 EXIST::FUNCTION:
3748EVP_PKEY_meth_set_decrypt 4135 EXIST::FUNCTION:
3749EVP_PKEY_set_type_str 4136 EXIST::FUNCTION:
3750EVP_PKEY_CTX_get_keygen_info 4137 EXIST::FUNCTION:
3751TS_REQ_set_policy_id 4138 EXIST::FUNCTION:
3752d2i_TS_RESP_fp 4139 EXIST::FUNCTION:
3753ENGINE_get_pkey_asn1_meth_engine 4140 EXIST:!VMS:FUNCTION:ENGINE
3754ENGINE_get_pkey_asn1_meth_eng 4140 EXIST:VMS:FUNCTION:ENGINE
3755WHIRLPOOL_Init 4141 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
3756TS_RESP_set_status_info 4142 EXIST::FUNCTION:
3757EVP_PKEY_keygen 4143 EXIST::FUNCTION:
3758EVP_DigestSignInit 4144 EXIST::FUNCTION:
3759TS_ACCURACY_set_millis 4145 EXIST::FUNCTION:
3760TS_REQ_dup 4146 EXIST::FUNCTION:
3761GENERAL_NAME_dup 4147 EXIST::FUNCTION:
3762ASN1_SEQUENCE_ANY_it 4148 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3763ASN1_SEQUENCE_ANY_it 4148 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3764WHIRLPOOL 4149 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
3765X509_STORE_get1_crls 4150 EXIST::FUNCTION:
3766ENGINE_get_pkey_asn1_meth 4151 EXIST::FUNCTION:ENGINE
3767EVP_PKEY_asn1_new 4152 EXIST::FUNCTION:
3768BIO_new_NDEF 4153 EXIST::FUNCTION:
3769ENGINE_get_pkey_meth 4154 EXIST::FUNCTION:ENGINE
3770TS_MSG_IMPRINT_set_algo 4155 EXIST::FUNCTION:
3771i2d_TS_TST_INFO_bio 4156 EXIST::FUNCTION:
3772TS_TST_INFO_set_ordering 4157 EXIST::FUNCTION:
3773TS_TST_INFO_get_ext_by_OBJ 4158 EXIST::FUNCTION:
3774CRYPTO_THREADID_set_pointer 4159 EXIST::FUNCTION:
3775TS_CONF_get_tsa_section 4160 EXIST::FUNCTION:
3776SMIME_write_ASN1 4161 EXIST::FUNCTION:
3777TS_RESP_CTX_set_signer_key 4162 EXIST::FUNCTION:
3778EVP_PKEY_encrypt_old 4163 EXIST::FUNCTION:
3779EVP_PKEY_encrypt_init 4164 EXIST::FUNCTION:
3780CRYPTO_THREADID_cpy 4165 EXIST::FUNCTION:
3781ASN1_PCTX_get_cert_flags 4166 EXIST::FUNCTION:
3782i2d_ESS_SIGNING_CERT 4167 EXIST::FUNCTION:
3783TS_CONF_load_key 4168 EXIST::FUNCTION:
3784i2d_ASN1_SEQUENCE_ANY 4169 EXIST::FUNCTION:
3785d2i_TS_MSG_IMPRINT_bio 4170 EXIST::FUNCTION:
3786EVP_PKEY_asn1_set_public 4171 EXIST::FUNCTION:
3787b2i_PublicKey_bio 4172 EXIST::FUNCTION:
3788BIO_asn1_set_prefix 4173 EXIST::FUNCTION:
3789EVP_PKEY_new_mac_key 4174 EXIST::FUNCTION:
3790BIO_new_CMS 4175 EXIST::FUNCTION:CMS
3791CRYPTO_THREADID_cmp 4176 EXIST::FUNCTION:
3792TS_REQ_ext_free 4177 EXIST::FUNCTION:
3793EVP_PKEY_asn1_set_free 4178 EXIST::FUNCTION:
3794EVP_PKEY_get0_asn1 4179 EXIST::FUNCTION:
3795d2i_NETSCAPE_X509 4180 EXIST::FUNCTION:
3796EVP_PKEY_verify_recover_init 4181 EXIST::FUNCTION:
3797EVP_PKEY_CTX_set_data 4182 EXIST::FUNCTION:
3798EVP_PKEY_keygen_init 4183 EXIST::FUNCTION:
3799TS_RESP_CTX_set_status_info 4184 EXIST::FUNCTION:
3800TS_MSG_IMPRINT_get_algo 4185 EXIST::FUNCTION:
3801TS_REQ_print_bio 4186 EXIST::FUNCTION:
3802EVP_PKEY_CTX_ctrl_str 4187 EXIST::FUNCTION:
3803EVP_PKEY_get_default_digest_nid 4188 EXIST::FUNCTION:
3804PEM_write_bio_PKCS7_stream 4189 EXIST::FUNCTION:
3805TS_MSG_IMPRINT_print_bio 4190 EXIST::FUNCTION:
3806BN_asc2bn 4191 EXIST::FUNCTION:
3807TS_REQ_get_policy_id 4192 EXIST::FUNCTION:
3808ENGINE_set_default_pkey_asn1_meths 4193 EXIST:!VMS:FUNCTION:ENGINE
3809ENGINE_set_def_pkey_asn1_meths 4193 EXIST:VMS:FUNCTION:ENGINE
3810d2i_TS_ACCURACY 4194 EXIST::FUNCTION:
3811DSO_global_lookup 4195 EXIST::FUNCTION:
3812TS_CONF_set_tsa_name 4196 EXIST::FUNCTION:
3813i2d_ASN1_SET_ANY 4197 EXIST::FUNCTION:
3814ENGINE_load_gost 4198 EXIST::FUNCTION:ENGINE,GOST,STATIC_ENGINE
3815WHIRLPOOL_BitUpdate 4199 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
3816ASN1_PCTX_get_flags 4200 EXIST::FUNCTION:
3817TS_TST_INFO_get_ext_by_NID 4201 EXIST::FUNCTION:
3818TS_RESP_new 4202 EXIST::FUNCTION:
3819ESS_CERT_ID_dup 4203 EXIST::FUNCTION:
3820TS_STATUS_INFO_dup 4204 EXIST::FUNCTION:
3821TS_REQ_delete_ext 4205 EXIST::FUNCTION:
3822EVP_DigestVerifyFinal 4206 EXIST::FUNCTION:
3823EVP_PKEY_print_params 4207 EXIST::FUNCTION:
3824i2d_CMS_bio_stream 4208 EXIST::FUNCTION:CMS
3825TS_REQ_get_msg_imprint 4209 EXIST::FUNCTION:
3826OBJ_find_sigid_by_algs 4210 EXIST::FUNCTION:
3827TS_TST_INFO_get_serial 4211 EXIST::FUNCTION:
3828TS_REQ_get_nonce 4212 EXIST::FUNCTION:
3829X509_PUBKEY_set0_param 4213 EXIST::FUNCTION:
3830EVP_PKEY_CTX_set0_keygen_info 4214 EXIST::FUNCTION:
3831DIST_POINT_set_dpname 4215 EXIST::FUNCTION:
3832i2d_ISSUING_DIST_POINT 4216 EXIST::FUNCTION:
3833ASN1_SET_ANY_it 4217 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3834ASN1_SET_ANY_it 4217 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3835EVP_PKEY_CTX_get_data 4218 EXIST::FUNCTION:
3836TS_STATUS_INFO_print_bio 4219 EXIST::FUNCTION:
3837EVP_PKEY_derive_init 4220 EXIST::FUNCTION:
3838d2i_TS_TST_INFO 4221 EXIST::FUNCTION:
3839EVP_PKEY_asn1_add_alias 4222 EXIST::FUNCTION:
3840d2i_TS_RESP_bio 4223 EXIST::FUNCTION:
3841OTHERNAME_cmp 4224 EXIST::FUNCTION:
3842GENERAL_NAME_set0_value 4225 EXIST::FUNCTION:
3843PKCS7_RECIP_INFO_get0_alg 4226 EXIST::FUNCTION:
3844TS_RESP_CTX_new 4227 EXIST::FUNCTION:
3845TS_RESP_set_tst_info 4228 EXIST::FUNCTION:
3846PKCS7_final 4229 EXIST::FUNCTION:
3847EVP_PKEY_base_id 4230 EXIST::FUNCTION:
3848TS_RESP_CTX_set_signer_cert 4231 EXIST::FUNCTION:
3849TS_REQ_set_msg_imprint 4232 EXIST::FUNCTION:
3850EVP_PKEY_CTX_ctrl 4233 EXIST::FUNCTION:
3851TS_CONF_set_digests 4234 EXIST::FUNCTION:
3852d2i_TS_MSG_IMPRINT 4235 EXIST::FUNCTION:
3853EVP_PKEY_meth_set_ctrl 4236 EXIST::FUNCTION:
3854TS_REQ_get_ext_by_NID 4237 EXIST::FUNCTION:
3855PKCS5_pbe_set0_algor 4238 EXIST::FUNCTION:
3856BN_BLINDING_thread_id 4239 EXIST::FUNCTION:
3857TS_ACCURACY_new 4240 EXIST::FUNCTION:
3858X509_CRL_METHOD_free 4241 EXIST::FUNCTION:
3859ASN1_PCTX_get_nm_flags 4242 EXIST::FUNCTION:
3860EVP_PKEY_meth_set_sign 4243 EXIST::FUNCTION:
3861CRYPTO_THREADID_current 4244 EXIST::FUNCTION:
3862EVP_PKEY_decrypt_init 4245 EXIST::FUNCTION:
3863NETSCAPE_X509_free 4246 EXIST::FUNCTION:
3864i2b_PVK_bio 4247 EXIST::FUNCTION:RC4
3865EVP_PKEY_print_private 4248 EXIST::FUNCTION:
3866GENERAL_NAME_get0_value 4249 EXIST::FUNCTION:
3867b2i_PVK_bio 4250 EXIST::FUNCTION:RC4
3868ASN1_UTCTIME_adj 4251 EXIST::FUNCTION:
3869TS_TST_INFO_new 4252 EXIST::FUNCTION:
3870EVP_MD_do_all_sorted 4253 EXIST::FUNCTION:
3871TS_CONF_set_default_engine 4254 EXIST::FUNCTION:
3872TS_ACCURACY_set_seconds 4255 EXIST::FUNCTION:
3873TS_TST_INFO_get_time 4256 EXIST::FUNCTION:
3874PKCS8_pkey_get0 4257 EXIST::FUNCTION:
3875EVP_PKEY_asn1_get0 4258 EXIST::FUNCTION:
3876OBJ_add_sigid 4259 EXIST::FUNCTION:
3877PKCS7_SIGNER_INFO_sign 4260 EXIST::FUNCTION:
3878EVP_PKEY_paramgen_init 4261 EXIST::FUNCTION:
3879EVP_PKEY_sign 4262 EXIST::FUNCTION:
3880OBJ_sigid_free 4263 EXIST::FUNCTION:
3881EVP_PKEY_meth_set_init 4264 EXIST::FUNCTION:
3882d2i_ESS_ISSUER_SERIAL 4265 EXIST::FUNCTION:
3883ISSUING_DIST_POINT_new 4266 EXIST::FUNCTION:
3884ASN1_TIME_adj 4267 EXIST::FUNCTION:
3885TS_OBJ_print_bio 4268 EXIST::FUNCTION:
3886EVP_PKEY_meth_set_verify_recover 4269 EXIST:!VMS:FUNCTION:
3887EVP_PKEY_meth_set_vrfy_recover 4269 EXIST:VMS:FUNCTION:
3888TS_RESP_get_status_info 4270 EXIST::FUNCTION:
3889CMS_stream 4271 EXIST::FUNCTION:CMS
3890EVP_PKEY_CTX_set_cb 4272 EXIST::FUNCTION:
3891PKCS7_to_TS_TST_INFO 4273 EXIST::FUNCTION:
3892ASN1_PCTX_get_oid_flags 4274 EXIST::FUNCTION:
3893TS_TST_INFO_add_ext 4275 EXIST::FUNCTION:
3894EVP_PKEY_meth_set_derive 4276 EXIST::FUNCTION:
3895i2d_TS_RESP_fp 4277 EXIST::FUNCTION:
3896i2d_TS_MSG_IMPRINT_bio 4278 EXIST::FUNCTION:
3897TS_RESP_CTX_set_accuracy 4279 EXIST::FUNCTION:
3898TS_REQ_set_nonce 4280 EXIST::FUNCTION:
3899ESS_CERT_ID_new 4281 EXIST::FUNCTION:
3900ENGINE_pkey_asn1_find_str 4282 EXIST::FUNCTION:ENGINE
3901TS_REQ_get_ext_count 4283 EXIST::FUNCTION:
3902BUF_reverse 4284 EXIST::FUNCTION:
3903TS_TST_INFO_print_bio 4285 EXIST::FUNCTION:
3904d2i_ISSUING_DIST_POINT 4286 EXIST::FUNCTION:
3905ENGINE_get_pkey_meths 4287 EXIST::FUNCTION:ENGINE
3906i2b_PrivateKey_bio 4288 EXIST::FUNCTION:
3907i2d_TS_RESP 4289 EXIST::FUNCTION:
3908b2i_PublicKey 4290 EXIST::FUNCTION:
3909TS_VERIFY_CTX_cleanup 4291 EXIST::FUNCTION:
3910TS_STATUS_INFO_free 4292 EXIST::FUNCTION:
3911TS_RESP_verify_token 4293 EXIST::FUNCTION:
3912OBJ_bsearch_ex_ 4294 EXIST::FUNCTION:
3913ASN1_bn_print 4295 EXIST::FUNCTION:BIO
3914EVP_PKEY_asn1_get_count 4296 EXIST::FUNCTION:
3915ENGINE_register_pkey_asn1_meths 4297 EXIST::FUNCTION:ENGINE
3916ASN1_PCTX_set_nm_flags 4298 EXIST::FUNCTION:
3917EVP_DigestVerifyInit 4299 EXIST::FUNCTION:
3918ENGINE_set_default_pkey_meths 4300 EXIST::FUNCTION:ENGINE
3919TS_TST_INFO_get_policy_id 4301 EXIST::FUNCTION:
3920TS_REQ_get_cert_req 4302 EXIST::FUNCTION:
3921X509_CRL_set_meth_data 4303 EXIST::FUNCTION:
3922PKCS8_pkey_set0 4304 EXIST::FUNCTION:
3923ASN1_STRING_copy 4305 EXIST::FUNCTION:
3924d2i_TS_TST_INFO_fp 4306 EXIST::FUNCTION:
3925X509_CRL_match 4307 EXIST::FUNCTION:
3926EVP_PKEY_asn1_set_private 4308 EXIST::FUNCTION:
3927TS_TST_INFO_get_ext_d2i 4309 EXIST::FUNCTION:
3928TS_RESP_CTX_add_policy 4310 EXIST::FUNCTION:
3929d2i_TS_RESP 4311 EXIST::FUNCTION:
3930TS_CONF_load_certs 4312 EXIST::FUNCTION:
3931TS_TST_INFO_get_msg_imprint 4313 EXIST::FUNCTION:
3932ERR_load_TS_strings 4314 EXIST::FUNCTION:
3933TS_TST_INFO_get_version 4315 EXIST::FUNCTION:
3934EVP_PKEY_CTX_dup 4316 EXIST::FUNCTION:
3935EVP_PKEY_meth_set_verify 4317 EXIST::FUNCTION:
3936i2b_PublicKey_bio 4318 EXIST::FUNCTION:
3937TS_CONF_set_certs 4319 EXIST::FUNCTION:
3938EVP_PKEY_asn1_get0_info 4320 EXIST::FUNCTION:
3939TS_VERIFY_CTX_free 4321 EXIST::FUNCTION:
3940TS_REQ_get_ext_by_critical 4322 EXIST::FUNCTION:
3941TS_RESP_CTX_set_serial_cb 4323 EXIST::FUNCTION:
3942X509_CRL_get_meth_data 4324 EXIST::FUNCTION:
3943TS_RESP_CTX_set_time_cb 4325 EXIST::FUNCTION:
3944TS_MSG_IMPRINT_get_msg 4326 EXIST::FUNCTION:
3945TS_TST_INFO_ext_free 4327 EXIST::FUNCTION:
3946TS_REQ_get_version 4328 EXIST::FUNCTION:
3947TS_REQ_add_ext 4329 EXIST::FUNCTION:
3948EVP_PKEY_CTX_set_app_data 4330 EXIST::FUNCTION:
3949OBJ_bsearch_ 4331 EXIST::FUNCTION:
3950EVP_PKEY_meth_set_verifyctx 4332 EXIST::FUNCTION:
3951i2d_PKCS7_bio_stream 4333 EXIST::FUNCTION:
3952CRYPTO_THREADID_set_numeric 4334 EXIST::FUNCTION:
3953PKCS7_sign_add_signer 4335 EXIST::FUNCTION:
3954d2i_TS_TST_INFO_bio 4336 EXIST::FUNCTION:
3955TS_TST_INFO_get_ordering 4337 EXIST::FUNCTION:
3956TS_RESP_print_bio 4338 EXIST::FUNCTION:
3957TS_TST_INFO_get_exts 4339 EXIST::FUNCTION:
3958HMAC_CTX_copy 4340 EXIST::FUNCTION:HMAC
3959PKCS5_pbe2_set_iv 4341 EXIST::FUNCTION:
3960ENGINE_get_pkey_asn1_meths 4342 EXIST::FUNCTION:ENGINE
3961b2i_PrivateKey 4343 EXIST::FUNCTION:
3962EVP_PKEY_CTX_get_app_data 4344 EXIST::FUNCTION:
3963TS_REQ_set_cert_req 4345 EXIST::FUNCTION:
3964CRYPTO_THREADID_set_callback 4346 EXIST::FUNCTION:
3965TS_CONF_set_serial 4347 EXIST::FUNCTION:
3966TS_TST_INFO_free 4348 EXIST::FUNCTION:
3967d2i_TS_REQ_fp 4349 EXIST::FUNCTION:
3968TS_RESP_verify_response 4350 EXIST::FUNCTION:
3969i2d_ESS_ISSUER_SERIAL 4351 EXIST::FUNCTION:
3970TS_ACCURACY_get_seconds 4352 EXIST::FUNCTION:
3971EVP_CIPHER_do_all 4353 EXIST::FUNCTION:
3972b2i_PrivateKey_bio 4354 EXIST::FUNCTION:
3973OCSP_CERTID_dup 4355 EXIST::FUNCTION:
3974X509_PUBKEY_get0_param 4356 EXIST::FUNCTION:
3975TS_MSG_IMPRINT_dup 4357 EXIST::FUNCTION:
3976PKCS7_print_ctx 4358 EXIST::FUNCTION:
3977i2d_TS_REQ_bio 4359 EXIST::FUNCTION:
3978EVP_whirlpool 4360 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
3979EVP_PKEY_asn1_set_param 4361 EXIST::FUNCTION:
3980EVP_PKEY_meth_set_encrypt 4362 EXIST::FUNCTION:
3981ASN1_PCTX_set_flags 4363 EXIST::FUNCTION:
3982i2d_ESS_CERT_ID 4364 EXIST::FUNCTION:
3983TS_VERIFY_CTX_new 4365 EXIST::FUNCTION:
3984TS_RESP_CTX_set_extension_cb 4366 EXIST::FUNCTION:
3985ENGINE_register_all_pkey_meths 4367 EXIST::FUNCTION:ENGINE
3986TS_RESP_CTX_set_status_info_cond 4368 EXIST:!VMS:FUNCTION:
3987TS_RESP_CTX_set_stat_info_cond 4368 EXIST:VMS:FUNCTION:
3988EVP_PKEY_verify 4369 EXIST::FUNCTION:
3989WHIRLPOOL_Final 4370 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
3990X509_CRL_METHOD_new 4371 EXIST::FUNCTION:
3991EVP_DigestSignFinal 4372 EXIST::FUNCTION:
3992TS_RESP_CTX_set_def_policy 4373 EXIST::FUNCTION:
3993NETSCAPE_X509_it 4374 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3994NETSCAPE_X509_it 4374 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3995TS_RESP_create_response 4375 EXIST::FUNCTION:
3996PKCS7_SIGNER_INFO_get0_algs 4376 EXIST::FUNCTION:
3997TS_TST_INFO_get_nonce 4377 EXIST::FUNCTION:
3998EVP_PKEY_decrypt_old 4378 EXIST::FUNCTION:
3999TS_TST_INFO_set_policy_id 4379 EXIST::FUNCTION:
4000TS_CONF_set_ess_cert_id_chain 4380 EXIST::FUNCTION:
4001EVP_PKEY_CTX_get0_pkey 4381 EXIST::FUNCTION:
4002d2i_TS_REQ 4382 EXIST::FUNCTION:
4003EVP_PKEY_asn1_find_str 4383 EXIST::FUNCTION:
4004BIO_f_asn1 4384 EXIST::FUNCTION:
4005ESS_SIGNING_CERT_new 4385 EXIST::FUNCTION:
4006EVP_PBE_find 4386 EXIST::FUNCTION:
4007X509_CRL_get0_by_cert 4387 EXIST::FUNCTION:
4008EVP_PKEY_derive 4388 EXIST::FUNCTION:
4009i2d_TS_REQ 4389 EXIST::FUNCTION:
4010TS_TST_INFO_delete_ext 4390 EXIST::FUNCTION:
4011ESS_ISSUER_SERIAL_free 4391 EXIST::FUNCTION:
4012ASN1_PCTX_set_str_flags 4392 EXIST::FUNCTION:
4013ENGINE_get_pkey_asn1_meth_str 4393 EXIST::FUNCTION:ENGINE
4014TS_CONF_set_signer_key 4394 EXIST::FUNCTION:
4015TS_ACCURACY_get_millis 4395 EXIST::FUNCTION:
4016TS_RESP_get_token 4396 EXIST::FUNCTION:
4017TS_ACCURACY_dup 4397 EXIST::FUNCTION:
4018ENGINE_register_all_pkey_asn1_meths 4398 EXIST:!VMS:FUNCTION:ENGINE
4019ENGINE_reg_all_pkey_asn1_meths 4398 EXIST:VMS:FUNCTION:ENGINE
4020X509_CRL_set_default_method 4399 EXIST::FUNCTION:
4021CRYPTO_THREADID_hash 4400 EXIST::FUNCTION:
4022CMS_ContentInfo_print_ctx 4401 EXIST::FUNCTION:CMS
4023TS_RESP_free 4402 EXIST::FUNCTION:
4024ISSUING_DIST_POINT_free 4403 EXIST::FUNCTION:
4025ESS_ISSUER_SERIAL_new 4404 EXIST::FUNCTION:
4026CMS_add1_crl 4405 EXIST::FUNCTION:CMS
4027PKCS7_add1_attrib_digest 4406 EXIST::FUNCTION:
4028TS_RESP_CTX_add_md 4407 EXIST::FUNCTION:
4029TS_TST_INFO_dup 4408 EXIST::FUNCTION:
4030ENGINE_set_pkey_asn1_meths 4409 EXIST::FUNCTION:ENGINE
4031PEM_write_bio_Parameters 4410 EXIST::FUNCTION:
4032TS_TST_INFO_get_accuracy 4411 EXIST::FUNCTION:
4033X509_CRL_get0_by_serial 4412 EXIST::FUNCTION:
4034TS_TST_INFO_set_version 4413 EXIST::FUNCTION:
4035TS_RESP_CTX_get_tst_info 4414 EXIST::FUNCTION:
4036TS_RESP_verify_signature 4415 EXIST::FUNCTION:
4037CRYPTO_THREADID_get_callback 4416 EXIST::FUNCTION:
4038TS_TST_INFO_get_tsa 4417 EXIST::FUNCTION:
4039TS_STATUS_INFO_new 4418 EXIST::FUNCTION:
4040EVP_PKEY_CTX_get_cb 4419 EXIST::FUNCTION:
4041TS_REQ_get_ext_d2i 4420 EXIST::FUNCTION:
4042GENERAL_NAME_set0_othername 4421 EXIST::FUNCTION:
4043TS_TST_INFO_get_ext_count 4422 EXIST::FUNCTION:
4044TS_RESP_CTX_get_request 4423 EXIST::FUNCTION:
4045i2d_NETSCAPE_X509 4424 EXIST::FUNCTION:
4046ENGINE_get_pkey_meth_engine 4425 EXIST::FUNCTION:ENGINE
4047EVP_PKEY_meth_set_signctx 4426 EXIST::FUNCTION:
4048EVP_PKEY_asn1_copy 4427 EXIST::FUNCTION:
4049ASN1_TYPE_cmp 4428 EXIST::FUNCTION:
4050EVP_CIPHER_do_all_sorted 4429 EXIST::FUNCTION:
4051EVP_PKEY_CTX_free 4430 EXIST::FUNCTION:
4052ISSUING_DIST_POINT_it 4431 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
4053ISSUING_DIST_POINT_it 4431 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
4054d2i_TS_MSG_IMPRINT_fp 4432 EXIST::FUNCTION:
4055X509_STORE_get1_certs 4433 EXIST::FUNCTION:
4056EVP_PKEY_CTX_get_operation 4434 EXIST::FUNCTION:
4057d2i_ESS_SIGNING_CERT 4435 EXIST::FUNCTION:
4058TS_CONF_set_ordering 4436 EXIST::FUNCTION:
4059EVP_PBE_alg_add_type 4437 EXIST::FUNCTION:
4060TS_REQ_set_version 4438 EXIST::FUNCTION:
4061EVP_PKEY_get0 4439 EXIST::FUNCTION:
4062BIO_asn1_set_suffix 4440 EXIST::FUNCTION:
4063i2d_TS_STATUS_INFO 4441 EXIST::FUNCTION:
4064EVP_MD_do_all 4442 EXIST::FUNCTION:
4065TS_TST_INFO_set_accuracy 4443 EXIST::FUNCTION:
4066PKCS7_add_attrib_content_type 4444 EXIST::FUNCTION:
4067ERR_remove_thread_state 4445 EXIST::FUNCTION:
4068EVP_PKEY_meth_add0 4446 EXIST::FUNCTION:
4069TS_TST_INFO_set_tsa 4447 EXIST::FUNCTION:
4070EVP_PKEY_meth_new 4448 EXIST::FUNCTION:
4071WHIRLPOOL_Update 4449 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
4072TS_CONF_set_accuracy 4450 EXIST::FUNCTION:
4073ASN1_PCTX_set_oid_flags 4451 EXIST::FUNCTION:
4074ESS_SIGNING_CERT_dup 4452 EXIST::FUNCTION:
4075d2i_TS_REQ_bio 4453 EXIST::FUNCTION:
4076X509_time_adj_ex 4454 EXIST::FUNCTION:
4077TS_RESP_CTX_add_flags 4455 EXIST::FUNCTION:
4078d2i_TS_STATUS_INFO 4456 EXIST::FUNCTION:
4079TS_MSG_IMPRINT_set_msg 4457 EXIST::FUNCTION:
4080BIO_asn1_get_suffix 4458 EXIST::FUNCTION:
4081TS_REQ_free 4459 EXIST::FUNCTION:
4082EVP_PKEY_meth_free 4460 EXIST::FUNCTION:
4083TS_REQ_get_exts 4461 EXIST::FUNCTION:
4084TS_RESP_CTX_set_clock_precision_digits 4462 EXIST:!VMS:FUNCTION:
4085TS_RESP_CTX_set_clk_prec_digits 4462 EXIST:VMS:FUNCTION:
4086TS_RESP_CTX_add_failure_info 4463 EXIST::FUNCTION:
4087i2d_TS_RESP_bio 4464 EXIST::FUNCTION:
4088EVP_PKEY_CTX_get0_peerkey 4465 EXIST::FUNCTION:
4089PEM_write_bio_CMS_stream 4466 EXIST::FUNCTION:CMS
4090TS_REQ_new 4467 EXIST::FUNCTION:
4091TS_MSG_IMPRINT_new 4468 EXIST::FUNCTION:
4092EVP_PKEY_meth_find 4469 EXIST::FUNCTION:
4093EVP_PKEY_id 4470 EXIST::FUNCTION:
4094TS_TST_INFO_set_serial 4471 EXIST::FUNCTION:
4095a2i_GENERAL_NAME 4472 EXIST::FUNCTION:
4096TS_CONF_set_crypto_device 4473 EXIST::FUNCTION:
4097EVP_PKEY_verify_init 4474 EXIST::FUNCTION:
4098TS_CONF_set_policies 4475 EXIST::FUNCTION:
4099ASN1_PCTX_new 4476 EXIST::FUNCTION:
4100ESS_CERT_ID_free 4477 EXIST::FUNCTION:
4101ENGINE_unregister_pkey_meths 4478 EXIST::FUNCTION:ENGINE
4102TS_MSG_IMPRINT_free 4479 EXIST::FUNCTION:
4103TS_VERIFY_CTX_init 4480 EXIST::FUNCTION:
4104PKCS7_stream 4481 EXIST::FUNCTION:
4105TS_RESP_CTX_set_certs 4482 EXIST::FUNCTION:
4106TS_CONF_set_def_policy 4483 EXIST::FUNCTION:
4107ASN1_GENERALIZEDTIME_adj 4484 EXIST::FUNCTION:
4108NETSCAPE_X509_new 4485 EXIST::FUNCTION:
4109TS_ACCURACY_free 4486 EXIST::FUNCTION:
4110TS_RESP_get_tst_info 4487 EXIST::FUNCTION:
4111EVP_PKEY_derive_set_peer 4488 EXIST::FUNCTION:
4112PEM_read_bio_Parameters 4489 EXIST::FUNCTION:
4113TS_CONF_set_clock_precision_digits 4490 EXIST:!VMS:FUNCTION:
4114TS_CONF_set_clk_prec_digits 4490 EXIST:VMS:FUNCTION:
4115ESS_ISSUER_SERIAL_dup 4491 EXIST::FUNCTION:
4116TS_ACCURACY_get_micros 4492 EXIST::FUNCTION:
4117ASN1_PCTX_get_str_flags 4493 EXIST::FUNCTION:
4118NAME_CONSTRAINTS_check 4494 EXIST::FUNCTION:
4119ASN1_BIT_STRING_check 4495 EXIST::FUNCTION:
4120X509_check_akid 4496 EXIST::FUNCTION:
4121ENGINE_unregister_pkey_asn1_meths 4497 EXIST:!VMS:FUNCTION:ENGINE
4122ENGINE_unreg_pkey_asn1_meths 4497 EXIST:VMS:FUNCTION:ENGINE
4123ASN1_PCTX_free 4498 EXIST::FUNCTION:
4124PEM_write_bio_ASN1_stream 4499 EXIST::FUNCTION:
4125i2d_ASN1_bio_stream 4500 EXIST::FUNCTION:
4126TS_X509_ALGOR_print_bio 4501 EXIST::FUNCTION:
4127EVP_PKEY_meth_set_cleanup 4502 EXIST::FUNCTION:
4128EVP_PKEY_asn1_free 4503 EXIST::FUNCTION:
4129ESS_SIGNING_CERT_free 4504 EXIST::FUNCTION:
4130TS_TST_INFO_set_msg_imprint 4505 EXIST::FUNCTION:
4131GENERAL_NAME_cmp 4506 EXIST::FUNCTION:
4132d2i_ASN1_SET_ANY 4507 EXIST::FUNCTION:
4133ENGINE_set_pkey_meths 4508 EXIST::FUNCTION:ENGINE
4134i2d_TS_REQ_fp 4509 EXIST::FUNCTION:
4135d2i_ASN1_SEQUENCE_ANY 4510 EXIST::FUNCTION:
4136GENERAL_NAME_get0_otherName 4511 EXIST::FUNCTION:
4137d2i_ESS_CERT_ID 4512 EXIST::FUNCTION:
4138OBJ_find_sigid_algs 4513 EXIST::FUNCTION:
4139EVP_PKEY_meth_set_keygen 4514 EXIST::FUNCTION:
4140PKCS5_PBKDF2_HMAC 4515 EXIST::FUNCTION:
4141EVP_PKEY_paramgen 4516 EXIST::FUNCTION:
4142EVP_PKEY_meth_set_paramgen 4517 EXIST::FUNCTION:
4143BIO_new_PKCS7 4518 EXIST::FUNCTION:
4144EVP_PKEY_verify_recover 4519 EXIST::FUNCTION:
4145TS_ext_print_bio 4520 EXIST::FUNCTION:
4146TS_ASN1_INTEGER_print_bio 4521 EXIST::FUNCTION:
4147check_defer 4522 EXIST::FUNCTION:
4148DSO_pathbyaddr 4523 EXIST::FUNCTION:
4149EVP_PKEY_set_type 4524 EXIST::FUNCTION:
4150TS_ACCURACY_set_micros 4525 EXIST::FUNCTION:
4151TS_REQ_to_TS_VERIFY_CTX 4526 EXIST::FUNCTION:
4152EVP_PKEY_meth_set_copy 4527 EXIST::FUNCTION:
4153ASN1_PCTX_set_cert_flags 4528 EXIST::FUNCTION:
4154TS_TST_INFO_get_ext 4529 EXIST::FUNCTION:
4155EVP_PKEY_asn1_set_ctrl 4530 EXIST::FUNCTION:
4156TS_TST_INFO_get_ext_by_critical 4531 EXIST::FUNCTION:
4157EVP_PKEY_CTX_new_id 4532 EXIST::FUNCTION:
4158TS_REQ_get_ext_by_OBJ 4533 EXIST::FUNCTION:
4159TS_CONF_set_signer_cert 4534 EXIST::FUNCTION:
4160X509_NAME_hash_old 4535 EXIST::FUNCTION:
4161ASN1_TIME_set_string 4536 EXIST::FUNCTION:
4162EVP_MD_flags 4537 EXIST::FUNCTION:
4163TS_RESP_CTX_free 4538 EXIST::FUNCTION:
4164DSAparams_dup 4539 EXIST::FUNCTION:DSA
4165DHparams_dup 4540 EXIST::FUNCTION:DH
4166OCSP_REQ_CTX_add1_header 4541 EXIST::FUNCTION:
4167OCSP_REQ_CTX_set1_req 4542 EXIST::FUNCTION:
4168X509_STORE_set_verify_cb 4543 EXIST::FUNCTION:
4169X509_STORE_CTX_get0_current_crl 4544 EXIST::FUNCTION:
4170X509_STORE_CTX_get0_parent_ctx 4545 EXIST::FUNCTION:
4171X509_STORE_CTX_get0_current_issuer 4546 EXIST:!VMS:FUNCTION:
4172X509_STORE_CTX_get0_cur_issuer 4546 EXIST:VMS:FUNCTION:
4173X509_issuer_name_hash_old 4547 EXIST::FUNCTION:MD5
4174X509_subject_name_hash_old 4548 EXIST::FUNCTION:MD5
4175EVP_CIPHER_CTX_copy 4549 EXIST::FUNCTION:
4176UI_method_get_prompt_constructor 4550 EXIST:!VMS:FUNCTION:
4177UI_method_get_prompt_constructr 4550 EXIST:VMS:FUNCTION:
4178UI_method_set_prompt_constructor 4551 EXIST:!VMS:FUNCTION:
4179UI_method_set_prompt_constructr 4551 EXIST:VMS:FUNCTION:
4180EVP_read_pw_string_min 4552 EXIST::FUNCTION:
diff --git a/src/lib/libcrypto/util/mk1mf.pl b/src/lib/libcrypto/util/mk1mf.pl
index f2b92b2b25..280e9de1ad 100644
--- a/src/lib/libcrypto/util/mk1mf.pl
+++ b/src/lib/libcrypto/util/mk1mf.pl
@@ -6,36 +6,56 @@
6# 6#
7 7
8$INSTALLTOP="/usr/local/ssl"; 8$INSTALLTOP="/usr/local/ssl";
9$OPENSSLDIR="/usr/local/ssl";
9$OPTIONS=""; 10$OPTIONS="";
10$ssl_version=""; 11$ssl_version="";
11$banner="\t\@echo Building OpenSSL"; 12$banner="\t\@echo Building OpenSSL";
12 13
13my $no_static_engine = 0; 14my $no_static_engine = 1;
14my $engines = ""; 15my $engines = "";
15local $zlib_opt = 0; # 0 = no zlib, 1 = static, 2 = dynamic 16local $zlib_opt = 0; # 0 = no zlib, 1 = static, 2 = dynamic
16local $zlib_lib = ""; 17local $zlib_lib = "";
18local $perl_asm = 0; # 1 to autobuild asm files from perl scripts
19
20# Options to import from top level Makefile
21
22my %mf_import = (
23 VERSION => \$ssl_version,
24 OPTIONS => \$OPTIONS,
25 INSTALLTOP => \$INSTALLTOP,
26 OPENSSLDIR => \$OPENSSLDIR,
27 PLATFORM => \$mf_platform,
28 CFLAG => \$mf_cflag,
29 DEPFLAG => \$mf_depflag,
30 CPUID_OBJ => \$mf_cpuid_asm,
31 BN_ASM => \$mf_bn_asm,
32 DES_ENC => \$mf_des_asm,
33 AES_ENC => \$mf_aes_asm,
34 BF_ENC => \$mf_bf_asm,
35 CAST_ENC => \$mf_cast_asm,
36 RC4_ENC => \$mf_rc4_asm,
37 RC5_ENC => \$mf_rc5_asm,
38 MD5_ASM_OBJ => \$mf_md5_asm,
39 SHA1_ASM_OBJ => \$mf_sha_asm,
40 RMD160_ASM_OBJ => \$mf_rmd_asm,
41 WP_ASM_OBJ => \$mf_wp_asm,
42 CMLL_ENC => \$mf_cm_asm
43);
17 44
18local $fips_canister_path = "";
19my $fips_premain_dso_exe_path = "";
20my $fips_premain_c_path = "";
21my $fips_sha1_exe_path = "";
22
23local $fipscanisterbuild = 0;
24local $fipsdso = 0;
25
26my $fipslibdir = "";
27my $baseaddr = "";
28
29my $ex_l_libs = "";
30 45
31open(IN,"<Makefile") || die "unable to open Makefile!\n"; 46open(IN,"<Makefile") || die "unable to open Makefile!\n";
32while(<IN>) { 47while(<IN>) {
33 $ssl_version=$1 if (/^VERSION=(.*)$/); 48 my ($mf_opt, $mf_ref);
34 $OPTIONS=$1 if (/^OPTIONS=(.*)$/); 49 while (($mf_opt, $mf_ref) = each %mf_import) {
35 $INSTALLTOP=$1 if (/^INSTALLTOP=(.*$)/); 50 if (/^$mf_opt\s*=\s*(.*)$/) {
51 $$mf_ref = $1;
52 }
53 }
36} 54}
37close(IN); 55close(IN);
38 56
57$debug = 1 if $mf_platform =~ /^debug-/;
58
39die "Makefile is not the toplevel Makefile!\n" if $ssl_version eq ""; 59die "Makefile is not the toplevel Makefile!\n" if $ssl_version eq "";
40 60
41$infile="MINFO"; 61$infile="MINFO";
@@ -58,6 +78,7 @@ $infile="MINFO";
58 "netware-libc", "CodeWarrior for NetWare - LibC - with WinSock Sockets", 78 "netware-libc", "CodeWarrior for NetWare - LibC - with WinSock Sockets",
59 "netware-libc-bsdsock", "CodeWarrior for NetWare - LibC - with BSD Sockets", 79 "netware-libc-bsdsock", "CodeWarrior for NetWare - LibC - with BSD Sockets",
60 "default","cc under unix", 80 "default","cc under unix",
81 "auto", "auto detect from top level Makefile"
61 ); 82 );
62 83
63$platform=""; 84$platform="";
@@ -144,6 +165,12 @@ $bin_dir=(defined($VARS{'BIN'}))?$VARS{'BIN'}:'';
144$NT=0; 165$NT=0;
145 166
146push(@INC,"util/pl","pl"); 167push(@INC,"util/pl","pl");
168
169if ($platform eq "auto") {
170 $platform = $mf_platform;
171 print STDERR "Imported platform $mf_platform\n";
172}
173
147if (($platform =~ /VC-(.+)/)) 174if (($platform =~ /VC-(.+)/))
148 { 175 {
149 $FLAVOR=$1; 176 $FLAVOR=$1;
@@ -228,13 +255,12 @@ $cflags.=" -DOPENSSL_NO_DES" if $no_des;
228$cflags.=" -DOPENSSL_NO_RSA" if $no_rsa; 255$cflags.=" -DOPENSSL_NO_RSA" if $no_rsa;
229$cflags.=" -DOPENSSL_NO_DSA" if $no_dsa; 256$cflags.=" -DOPENSSL_NO_DSA" if $no_dsa;
230$cflags.=" -DOPENSSL_NO_DH" if $no_dh; 257$cflags.=" -DOPENSSL_NO_DH" if $no_dh;
258$cflags.=" -DOPENSSL_NO_WHIRLPOOL" if $no_whirlpool;
231$cflags.=" -DOPENSSL_NO_SOCK" if $no_sock; 259$cflags.=" -DOPENSSL_NO_SOCK" if $no_sock;
232$cflags.=" -DOPENSSL_NO_SSL2" if $no_ssl2; 260$cflags.=" -DOPENSSL_NO_SSL2" if $no_ssl2;
233$cflags.=" -DOPENSSL_NO_SSL3" if $no_ssl3; 261$cflags.=" -DOPENSSL_NO_SSL3" if $no_ssl3;
234$cflags.=" -DOPENSSL_NO_TLSEXT" if $no_tlsext; 262$cflags.=" -DOPENSSL_NO_TLSEXT" if $no_tlsext;
235$cflags.=" -DOPENSSL_NO_CMS" if $no_cms; 263$cflags.=" -DOPENSSL_NO_CMS" if $no_cms;
236$cflags.=" -DOPENSSL_NO_JPAKE" if $no_jpake;
237$cflags.=" -DOPENSSL_NO_CAPIENG" if $no_capieng;
238$cflags.=" -DOPENSSL_NO_ERR" if $no_err; 264$cflags.=" -DOPENSSL_NO_ERR" if $no_err;
239$cflags.=" -DOPENSSL_NO_KRB5" if $no_krb5; 265$cflags.=" -DOPENSSL_NO_KRB5" if $no_krb5;
240$cflags.=" -DOPENSSL_NO_EC" if $no_ec; 266$cflags.=" -DOPENSSL_NO_EC" if $no_ec;
@@ -242,7 +268,7 @@ $cflags.=" -DOPENSSL_NO_ECDSA" if $no_ecdsa;
242$cflags.=" -DOPENSSL_NO_ECDH" if $no_ecdh; 268$cflags.=" -DOPENSSL_NO_ECDH" if $no_ecdh;
243$cflags.=" -DOPENSSL_NO_ENGINE" if $no_engine; 269$cflags.=" -DOPENSSL_NO_ENGINE" if $no_engine;
244$cflags.=" -DOPENSSL_NO_HW" if $no_hw; 270$cflags.=" -DOPENSSL_NO_HW" if $no_hw;
245$cflags.=" -DOPENSSL_FIPS" if $fips; 271$cflags.=" -DOPENSSL_NO_JPAKE" if $no_jpake;
246$cflags.= " -DZLIB" if $zlib_opt; 272$cflags.= " -DZLIB" if $zlib_opt;
247$cflags.= " -DZLIB_SHARED" if $zlib_opt == 2; 273$cflags.= " -DZLIB_SHARED" if $zlib_opt == 2;
248 274
@@ -264,9 +290,9 @@ else
264 290
265$ex_libs="$l_flags$ex_libs" if ($l_flags ne ""); 291$ex_libs="$l_flags$ex_libs" if ($l_flags ne "");
266 292
293
267%shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL", 294%shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL",
268 "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO", 295 "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO");
269 "FIPS" => " -DOPENSSL_BUILD_SHLIBCRYPTO");
270 296
271if ($msdos) 297if ($msdos)
272 { 298 {
@@ -280,6 +306,7 @@ if ($msdos)
280$link="$bin_dir$link" if ($link !~ /^\$/); 306$link="$bin_dir$link" if ($link !~ /^\$/);
281 307
282$INSTALLTOP =~ s|/|$o|g; 308$INSTALLTOP =~ s|/|$o|g;
309$OPENSSLDIR =~ s|/|$o|g;
283 310
284############################################# 311#############################################
285# We parse in input file and 'store' info for later printing. 312# We parse in input file and 'store' info for later printing.
@@ -294,21 +321,11 @@ for (;;)
294 { 321 {
295 if ($lib ne "") 322 if ($lib ne "")
296 { 323 {
297 if ($fips && $dir =~ /^fips/) 324 $uc=$lib;
298 { 325 $uc =~ s/^lib(.*)\.a/$1/;
299 $uc = "FIPS"; 326 $uc =~ tr/a-z/A-Z/;
300 } 327 $lib_nam{$uc}=$uc;
301 else 328 $lib_obj{$uc}.=$libobj." ";
302 {
303 $uc=$lib;
304 $uc =~ s/^lib(.*)\.a/$1/;
305 $uc =~ tr/a-z/A-Z/;
306 }
307 if (($uc ne "FIPS") || $fipscanisterbuild)
308 {
309 $lib_nam{$uc}=$uc;
310 $lib_obj{$uc}.=$libobj." ";
311 }
312 } 329 }
313 last if ($val eq "FINISHED"); 330 last if ($val eq "FINISHED");
314 $lib=""; 331 $lib="";
@@ -351,130 +368,11 @@ for (;;)
351 if ($key eq "LIBNAMES" && $dir eq "engines" && $no_static_engine) 368 if ($key eq "LIBNAMES" && $dir eq "engines" && $no_static_engine)
352 { $engines.=$val } 369 { $engines.=$val }
353 370
354 if ($key eq "FIPS_EX_OBJ")
355 {
356 $fips_ex_obj=&var_add("crypto",$val,0);
357 }
358
359 if ($key eq "FIPSLIBDIR")
360 {
361 $fipslibdir=$val;
362 $fipslibdir =~ s/\/$//;
363 $fipslibdir =~ s/\//$o/g;
364 }
365
366 if ($key eq "BASEADDR")
367 { $baseaddr=$val;}
368
369 if (!($_=<IN>)) 371 if (!($_=<IN>))
370 { $_="RELATIVE_DIRECTORY=FINISHED\n"; } 372 { $_="RELATIVE_DIRECTORY=FINISHED\n"; }
371 } 373 }
372close(IN); 374close(IN);
373 375
374if ($fips)
375 {
376
377 foreach (split " ", $fips_ex_obj)
378 {
379 $fips_exclude_obj{$1} = 1 if (/\/([^\/]*)$/);
380 }
381
382 $fips_exclude_obj{"cpu_win32"} = 1;
383 $fips_exclude_obj{"bn_asm"} = 1;
384 $fips_exclude_obj{"des_enc"} = 1;
385 $fips_exclude_obj{"fcrypt_b"} = 1;
386 $fips_exclude_obj{"aes_core"} = 1;
387 $fips_exclude_obj{"aes_cbc"} = 1;
388
389 my @ltmp = split " ", $lib_obj{"CRYPTO"};
390
391
392 $lib_obj{"CRYPTO"} = "";
393
394 foreach(@ltmp)
395 {
396 if (/\/([^\/]*)$/ && exists $fips_exclude_obj{$1})
397 {
398 if ($fipscanisterbuild)
399 {
400 $lib_obj{"FIPS"} .= "$_ ";
401 }
402 }
403 else
404 {
405 $lib_obj{"CRYPTO"} .= "$_ ";
406 }
407 }
408
409 }
410
411if ($fipscanisterbuild)
412 {
413 $fips_canister_path = "\$(LIB_D)${o}fipscanister.lib" if $fips_canister_path eq "";
414 $fips_premain_c_path = "\$(LIB_D)${o}fips_premain.c";
415 }
416else
417 {
418 if ($fips_canister_path eq "")
419 {
420 $fips_canister_path = "\$(FIPSLIB_D)${o}fipscanister.lib";
421 }
422
423 if ($fips_premain_c_path eq "")
424 {
425 $fips_premain_c_path = "\$(FIPSLIB_D)${o}fips_premain.c";
426 }
427 }
428
429if ($fips)
430 {
431 if ($fips_sha1_exe_path eq "")
432 {
433 $fips_sha1_exe_path =
434 "\$(BIN_D)${o}fips_standalone_sha1$exep";
435 }
436 }
437 else
438 {
439 $fips_sha1_exe_path = "";
440 }
441
442if ($fips_premain_dso_exe_path eq "")
443 {
444 $fips_premain_dso_exe_path = "\$(BIN_D)${o}fips_premain_dso$exep";
445 }
446
447# $ex_build_targets .= "\$(BIN_D)${o}\$(E_PREMAIN_DSO)$exep" if ($fips);
448
449#$ex_l_libs .= " \$(L_FIPS)" if $fipsdso;
450
451if ($fips)
452 {
453 if (!$shlib)
454 {
455 $ex_build_targets .= " \$(LIB_D)$o$crypto_compat \$(PREMAIN_DSO_EXE)";
456 $ex_l_libs .= " \$(O_FIPSCANISTER)";
457 $ex_libs_dep .= " \$(O_FIPSCANISTER)" if $fipscanisterbuild;
458 }
459 if ($fipscanisterbuild)
460 {
461 $fipslibdir = "\$(LIB_D)";
462 }
463 else
464 {
465 if ($fipslibdir eq "")
466 {
467 open (IN, "util/fipslib_path.txt") || fipslib_error();
468 $fipslibdir = <IN>;
469 chomp $fipslibdir;
470 close IN;
471 }
472 fips_check_files($fipslibdir,
473 "fipscanister.lib", "fipscanister.lib.sha1",
474 "fips_premain.c", "fips_premain.c.sha1");
475 }
476 }
477
478if ($shlib) 376if ($shlib)
479 { 377 {
480 $extra_install= <<"EOF"; 378 $extra_install= <<"EOF";
@@ -520,6 +418,7 @@ $defs .= $preamble if defined $preamble;
520 418
521$defs.= <<"EOF"; 419$defs.= <<"EOF";
522INSTALLTOP=$INSTALLTOP 420INSTALLTOP=$INSTALLTOP
421OPENSSLDIR=$OPENSSLDIR
523 422
524# Set your compiler options 423# Set your compiler options
525PLATFORM=$platform 424PLATFORM=$platform
@@ -540,32 +439,6 @@ SRC_D=$src_dir
540LINK=$link 439LINK=$link
541LFLAGS=$lflags 440LFLAGS=$lflags
542RSC=$rsc 441RSC=$rsc
543FIPSLINK=\$(PERL) util${o}fipslink.pl
544
545AES_ASM_OBJ=$aes_asm_obj
546AES_ASM_SRC=$aes_asm_src
547BN_ASM_OBJ=$bn_asm_obj
548BN_ASM_SRC=$bn_asm_src
549BNCO_ASM_OBJ=$bnco_asm_obj
550BNCO_ASM_SRC=$bnco_asm_src
551DES_ENC_OBJ=$des_enc_obj
552DES_ENC_SRC=$des_enc_src
553BF_ENC_OBJ=$bf_enc_obj
554BF_ENC_SRC=$bf_enc_src
555CAST_ENC_OBJ=$cast_enc_obj
556CAST_ENC_SRC=$cast_enc_src
557RC4_ENC_OBJ=$rc4_enc_obj
558RC4_ENC_SRC=$rc4_enc_src
559RC5_ENC_OBJ=$rc5_enc_obj
560RC5_ENC_SRC=$rc5_enc_src
561MD5_ASM_OBJ=$md5_asm_obj
562MD5_ASM_SRC=$md5_asm_src
563SHA1_ASM_OBJ=$sha1_asm_obj
564SHA1_ASM_SRC=$sha1_asm_src
565RMD160_ASM_OBJ=$rmd160_asm_obj
566RMD160_ASM_SRC=$rmd160_asm_src
567CPUID_ASM_OBJ=$cpuid_asm_obj
568CPUID_ASM_SRC=$cpuid_asm_src
569 442
570# The output directory for everything intersting 443# The output directory for everything intersting
571OUT_D=$out_dir 444OUT_D=$out_dir
@@ -584,17 +457,6 @@ MKLIB=$bin_dir$mklib
584MLFLAGS=$mlflags 457MLFLAGS=$mlflags
585ASM=$bin_dir$asm 458ASM=$bin_dir$asm
586 459
587# FIPS validated module and support file locations
588
589E_PREMAIN_DSO=fips_premain_dso
590
591FIPSLIB_D=$fipslibdir
592BASEADDR=$baseaddr
593FIPS_PREMAIN_SRC=$fips_premain_c_path
594O_FIPSCANISTER=$fips_canister_path
595FIPS_SHA1_EXE=$fips_sha1_exe_path
596PREMAIN_DSO_EXE=$fips_premain_dso_exe_path
597
598###################################################### 460######################################################
599# You should not need to touch anything below this point 461# You should not need to touch anything below this point
600###################################################### 462######################################################
@@ -602,7 +464,6 @@ PREMAIN_DSO_EXE=$fips_premain_dso_exe_path
602E_EXE=openssl 464E_EXE=openssl
603SSL=$ssl 465SSL=$ssl
604CRYPTO=$crypto 466CRYPTO=$crypto
605LIBFIPS=libosslfips
606 467
607# BIN_D - Binary output directory 468# BIN_D - Binary output directory
608# TEST_D - Binary test file output directory 469# TEST_D - Binary test file output directory
@@ -623,14 +484,12 @@ INCL_D=\$(TMP_D)
623 484
624O_SSL= \$(LIB_D)$o$plib\$(SSL)$shlibp 485O_SSL= \$(LIB_D)$o$plib\$(SSL)$shlibp
625O_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$shlibp 486O_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$shlibp
626O_FIPS= \$(LIB_D)$o$plib\$(LIBFIPS)$shlibp
627SO_SSL= $plib\$(SSL)$so_shlibp 487SO_SSL= $plib\$(SSL)$so_shlibp
628SO_CRYPTO= $plib\$(CRYPTO)$so_shlibp 488SO_CRYPTO= $plib\$(CRYPTO)$so_shlibp
629L_SSL= \$(LIB_D)$o$plib\$(SSL)$libp 489L_SSL= \$(LIB_D)$o$plib\$(SSL)$libp
630L_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$libp 490L_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$libp
631L_FIPS= \$(LIB_D)$o$plib\$(LIBFIPS)$libp
632 491
633L_LIBS= \$(L_SSL) \$(L_CRYPTO) $ex_l_libs 492L_LIBS= \$(L_SSL) \$(L_CRYPTO)
634 493
635###################################################### 494######################################################
636# Don't touch anything below this point 495# Don't touch anything below this point
@@ -640,13 +499,13 @@ INC=-I\$(INC_D) -I\$(INCL_D)
640APP_CFLAGS=\$(INC) \$(CFLAG) \$(APP_CFLAG) 499APP_CFLAGS=\$(INC) \$(CFLAG) \$(APP_CFLAG)
641LIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) 500LIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG)
642SHLIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) \$(SHLIB_CFLAG) 501SHLIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) \$(SHLIB_CFLAG)
643LIBS_DEP=\$(O_CRYPTO) \$(O_SSL) $ex_libs_dep 502LIBS_DEP=\$(O_CRYPTO) \$(O_SSL)
644 503
645############################################# 504#############################################
646EOF 505EOF
647 506
648$rules=<<"EOF"; 507$rules=<<"EOF";
649all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) headers \$(FIPS_SHA1_EXE) lib exe $ex_build_targets 508all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) headers lib exe
650 509
651banner: 510banner:
652$banner 511$banner
@@ -683,8 +542,9 @@ install: all
683 \$(MKDIR) \"\$(INSTALLTOP)${o}include${o}openssl\" 542 \$(MKDIR) \"\$(INSTALLTOP)${o}include${o}openssl\"
684 \$(MKDIR) \"\$(INSTALLTOP)${o}lib\" 543 \$(MKDIR) \"\$(INSTALLTOP)${o}lib\"
685 \$(CP) \"\$(INCO_D)${o}*.\[ch\]\" \"\$(INSTALLTOP)${o}include${o}openssl\" 544 \$(CP) \"\$(INCO_D)${o}*.\[ch\]\" \"\$(INSTALLTOP)${o}include${o}openssl\"
686 \$(CP) \"\$(BIN_D)$o\$(E_EXE)$exep\" \"\$(INSTALLTOP)${o}bin\" 545 \$(CP) \"\$(BIN_D)$o\$(E_EXE)$exep \$(INSTALLTOP)${o}bin\"
687 \$(CP) \"apps${o}openssl.cnf\" \"\$(INSTALLTOP)\" 546 \$(MKDIR) \"\$(OPENSSLDIR)\"
547 \$(CP) apps${o}openssl.cnf \"\$(OPENSSLDIR)\"
688$extra_install 548$extra_install
689 549
690 550
@@ -761,26 +621,6 @@ $rules.=&do_compile_rule("\$(OBJ_D)",$test,"\$(APP_CFLAGS)");
761$defs.=&do_defs("E_OBJ",$e_exe,"\$(OBJ_D)",$obj); 621$defs.=&do_defs("E_OBJ",$e_exe,"\$(OBJ_D)",$obj);
762$rules.=&do_compile_rule("\$(OBJ_D)",$e_exe,'-DMONOLITH $(APP_CFLAGS)'); 622$rules.=&do_compile_rule("\$(OBJ_D)",$e_exe,'-DMONOLITH $(APP_CFLAGS)');
763 623
764# Special case rules for fips_start and fips_end fips_premain_dso
765
766if ($fips)
767 {
768 if ($fipscanisterbuild)
769 {
770 $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_start$obj",
771 "fips${o}fips_canister.c",
772 "-DFIPS_START \$(SHLIB_CFLAGS)");
773 $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_end$obj",
774 "fips${o}fips_canister.c", "\$(SHLIB_CFLAGS)");
775 }
776 $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_standalone_sha1$obj",
777 "fips${o}sha${o}fips_standalone_sha1.c",
778 "\$(SHLIB_CFLAGS)");
779 $rules.=&cc_compile_target("\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj",
780 "fips${o}fips_premain.c",
781 "-DFINGERPRINT_PREMAIN_DSO_LOAD \$(SHLIB_CFLAGS)");
782 }
783
784foreach (values %lib_nam) 624foreach (values %lib_nam)
785 { 625 {
786 $lib_obj=$lib_obj{$_}; 626 $lib_obj=$lib_obj{$_};
@@ -792,78 +632,14 @@ foreach (values %lib_nam)
792 next; 632 next;
793 } 633 }
794 634
795 if ((!$fips && ($_ eq "CRYPTO")) || ($fips && ($_ eq "FIPS")))
796 {
797 if ($cpuid_asm_obj ne "")
798 {
799 $lib_obj =~ s/(\S*\/cryptlib\S*)/$1 \$(CPUID_ASM_OBJ)/;
800 $rules.=&do_asm_rule($cpuid_asm_obj,$cpuid_asm_src);
801 }
802 if ($aes_asm_obj ne "")
803 {
804 $lib_obj =~ s/\s(\S*\/aes_core\S*)/ \$(AES_ASM_OBJ)/;
805 $lib_obj =~ s/\s\S*\/aes_cbc\S*//;
806 $rules.=&do_asm_rule($aes_asm_obj,$aes_asm_src);
807 }
808 if ($sha1_asm_obj ne "")
809 {
810 $lib_obj =~ s/\s(\S*\/sha1dgst\S*)/ $1 \$(SHA1_ASM_OBJ)/;
811 $rules.=&do_asm_rule($sha1_asm_obj,$sha1_asm_src);
812 }
813 if ($bn_asm_obj ne "")
814 {
815 $lib_obj =~ s/\s\S*\/bn_asm\S*/ \$(BN_ASM_OBJ)/;
816 $rules.=&do_asm_rule($bn_asm_obj,$bn_asm_src);
817 }
818 if ($bnco_asm_obj ne "")
819 {
820 $lib_obj .= "\$(BNCO_ASM_OBJ)";
821 $rules.=&do_asm_rule($bnco_asm_obj,$bnco_asm_src);
822 }
823 if ($des_enc_obj ne "")
824 {
825 $lib_obj =~ s/\s\S*des_enc\S*/ \$(DES_ENC_OBJ)/;
826 $lib_obj =~ s/\s\S*\/fcrypt_b\S*\s*/ /;
827 $rules.=&do_asm_rule($des_enc_obj,$des_enc_src);
828 }
829 }
830 if (($bf_enc_obj ne "") && ($_ eq "CRYPTO"))
831 {
832 $lib_obj =~ s/\s\S*\/bf_enc\S*/ \$(BF_ENC_OBJ)/;
833 $rules.=&do_asm_rule($bf_enc_obj,$bf_enc_src);
834 }
835 if (($cast_enc_obj ne "") && ($_ eq "CRYPTO"))
836 {
837 $lib_obj =~ s/(\s\S*\/c_enc\S*)/ \$(CAST_ENC_OBJ)/;
838 $rules.=&do_asm_rule($cast_enc_obj,$cast_enc_src);
839 }
840 if (($rc4_enc_obj ne "") && ($_ eq "CRYPTO"))
841 {
842 $lib_obj =~ s/\s\S*\/rc4_enc\S*/ \$(RC4_ENC_OBJ)/;
843 $rules.=&do_asm_rule($rc4_enc_obj,$rc4_enc_src);
844 }
845 if (($rc5_enc_obj ne "") && ($_ eq "CRYPTO"))
846 {
847 $lib_obj =~ s/\s\S*\/rc5_enc\S*/ \$(RC5_ENC_OBJ)/;
848 $rules.=&do_asm_rule($rc5_enc_obj,$rc5_enc_src);
849 }
850 if (($md5_asm_obj ne "") && ($_ eq "CRYPTO"))
851 {
852 $lib_obj =~ s/\s(\S*\/md5_dgst\S*)/ $1 \$(MD5_ASM_OBJ)/;
853 $rules.=&do_asm_rule($md5_asm_obj,$md5_asm_src);
854 }
855 if (($rmd160_asm_obj ne "") && ($_ eq "CRYPTO"))
856 {
857 $lib_obj =~ s/\s(\S*\/rmd_dgst\S*)/ $1 \$(RMD160_ASM_OBJ)/;
858 $rules.=&do_asm_rule($rmd160_asm_obj,$rmd160_asm_src);
859 }
860 $defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj); 635 $defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj);
861 $lib=($slib)?" \$(SHLIB_CFLAGS)".$shlib_ex_cflags{$_}:" \$(LIB_CFLAGS)"; 636 $lib=($slib)?" \$(SHLIB_CFLAGS)".$shlib_ex_cflags{$_}:" \$(LIB_CFLAGS)";
862 $rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib); 637 $rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib);
863 } 638 }
864 639
865# hack to add version info on MSVC 640# hack to add version info on MSVC
866if (($platform eq "VC-WIN32") || ($platform eq "VC-NT")) { 641if (($platform eq "VC-WIN32") || ($platform eq "VC-WIN64A")
642 || ($platform eq "VC-WIN64I") || ($platform eq "VC-NT")) {
867 $rules.= <<"EOF"; 643 $rules.= <<"EOF";
868\$(OBJ_D)\\\$(CRYPTO).res: ms\\version32.rc 644\$(OBJ_D)\\\$(CRYPTO).res: ms\\version32.rc
869 \$(RSC) /fo"\$(OBJ_D)\\\$(CRYPTO).res" /d CRYPTO ms\\version32.rc 645 \$(RSC) /fo"\$(OBJ_D)\\\$(CRYPTO).res" /d CRYPTO ms\\version32.rc
@@ -871,43 +647,15 @@ if (($platform eq "VC-WIN32") || ($platform eq "VC-NT")) {
871\$(OBJ_D)\\\$(SSL).res: ms\\version32.rc 647\$(OBJ_D)\\\$(SSL).res: ms\\version32.rc
872 \$(RSC) /fo"\$(OBJ_D)\\\$(SSL).res" /d SSL ms\\version32.rc 648 \$(RSC) /fo"\$(OBJ_D)\\\$(SSL).res" /d SSL ms\\version32.rc
873 649
874\$(OBJ_D)\\\$(LIBFIPS).res: ms\\version32.rc
875 \$(RSC) /fo"\$(OBJ_D)\\\$(LIBFIPS).res" /d FIPS ms\\version32.rc
876
877EOF 650EOF
878} 651}
879 652
880$defs.=&do_defs("T_EXE",$test,"\$(TEST_D)",$exep); 653$defs.=&do_defs("T_EXE",$test,"\$(TEST_D)",$exep);
881foreach (split(/\s+/,$test)) 654foreach (split(/\s+/,$test))
882 { 655 {
883 my $t_libs;
884 $t=&bname($_); 656 $t=&bname($_);
885 my $ltype;
886 # Check to see if test program is FIPS
887 if ($fips && /fips/)
888 {
889 # If fipsdso link to libosslfips.dll
890 # otherwise perform static link to
891 # $(O_FIPSCANISTER)
892 if ($fipsdso)
893 {
894 $t_libs = "\$(L_FIPS)";
895 $ltype = 0;
896 }
897 else
898 {
899 $t_libs = "\$(O_FIPSCANISTER)";
900 $ltype = 2;
901 }
902 }
903 else
904 {
905 $t_libs = "\$(L_LIBS)";
906 $ltype = 0;
907 }
908
909 $tt="\$(OBJ_D)${o}$t${obj}"; 657 $tt="\$(OBJ_D)${o}$t${obj}";
910 $rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","$t_libs \$(EX_LIBS)", $ltype); 658 $rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)");
911 } 659 }
912 660
913$defs.=&do_defs("E_SHLIB",$engines,"\$(ENG_D)",$shlibp); 661$defs.=&do_defs("E_SHLIB",$engines,"\$(ENG_D)",$shlibp);
@@ -921,69 +669,9 @@ foreach (split(/\s+/,$engines))
921 669
922 670
923$rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)"); 671$rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)");
672$rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)");
924 673
925if ($fips) 674$rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)");
926 {
927 if ($shlib)
928 {
929 if ($fipsdso)
930 {
931 $rules.= &do_lib_rule("\$(CRYPTOOBJ)",
932 "\$(O_CRYPTO)", "$crypto",
933 $shlib, "", "");
934 $rules.= &do_lib_rule(
935 "\$(O_FIPSCANISTER)",
936 "\$(O_FIPS)", "\$(LIBFIPS)",
937 $shlib, "\$(SO_CRYPTO)", "\$(BASEADDR)");
938 $rules.= &do_sdef_rule();
939 }
940 else
941 {
942 $rules.= &do_lib_rule(
943 "\$(CRYPTOOBJ) \$(O_FIPSCANISTER)",
944 "\$(O_CRYPTO)", "$crypto",
945 $shlib, "\$(SO_CRYPTO)", "\$(BASEADDR)");
946 }
947 }
948 else
949 {
950 $rules.= &do_lib_rule("\$(CRYPTOOBJ)",
951 "\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)", "");
952 $rules.= &do_lib_rule("\$(CRYPTOOBJ) \$(FIPSOBJ)",
953 "\$(LIB_D)$o$crypto_compat",$crypto,$shlib,"\$(SO_CRYPTO)", "");
954 }
955 }
956 else
957 {
958 $rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,
959 "\$(SO_CRYPTO)");
960 }
961
962if ($fips)
963 {
964 if ($fipscanisterbuild)
965 {
966 $rules.= &do_rlink_rule("\$(O_FIPSCANISTER)",
967 "\$(OBJ_D)${o}fips_start$obj",
968 "\$(FIPSOBJ)",
969 "\$(OBJ_D)${o}fips_end$obj",
970 "\$(FIPS_SHA1_EXE)", "");
971 $rules.=&do_link_rule("\$(FIPS_SHA1_EXE)",
972 "\$(OBJ_D)${o}fips_standalone_sha1$obj \$(OBJ_D)${o}sha1dgst$obj \$(SHA1_ASM_OBJ)",
973 "","\$(EX_LIBS)", 1);
974 }
975 else
976 {
977 $rules.=&do_link_rule("\$(FIPS_SHA1_EXE)",
978 "\$(OBJ_D)${o}fips_standalone_sha1$obj \$(O_FIPSCANISTER)",
979 "","", 1);
980
981 }
982 $rules.=&do_link_rule("\$(PREMAIN_DSO_EXE)","\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj \$(CRYPTOOBJ) \$(O_FIPSCANISTER)","","\$(EX_LIBS)", 1);
983
984 }
985
986$rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)", ($fips && !$shlib) ? 2 : 0);
987 675
988print $defs; 676print $defs;
989 677
@@ -1022,7 +710,6 @@ sub var_add
1022 return("") if $no_ec && $dir =~ /\/ec/; 710 return("") if $no_ec && $dir =~ /\/ec/;
1023 return("") if $no_cms && $dir =~ /\/cms/; 711 return("") if $no_cms && $dir =~ /\/cms/;
1024 return("") if $no_jpake && $dir =~ /\/jpake/; 712 return("") if $no_jpake && $dir =~ /\/jpake/;
1025 return("") if !$fips && $dir =~ /^fips/;
1026 if ($no_des && $dir =~ /\/des/) 713 if ($no_des && $dir =~ /\/des/)
1027 { 714 {
1028 if ($val =~ /read_pwd/) 715 if ($val =~ /read_pwd/)
@@ -1034,6 +721,7 @@ sub var_add
1034 return("") if $no_sock && $dir =~ /\/proxy/; 721 return("") if $no_sock && $dir =~ /\/proxy/;
1035 return("") if $no_bf && $dir =~ /\/bf/; 722 return("") if $no_bf && $dir =~ /\/bf/;
1036 return("") if $no_cast && $dir =~ /\/cast/; 723 return("") if $no_cast && $dir =~ /\/cast/;
724 return("") if $no_whirlpool && $dir =~ /\/whrlpool/;
1037 725
1038 $val =~ s/^\s*(.*)\s*$/$1/; 726 $val =~ s/^\s*(.*)\s*$/$1/;
1039 @a=split(/\s+/,$val); 727 @a=split(/\s+/,$val);
@@ -1051,8 +739,8 @@ sub var_add
1051 @a=grep(!/^e_camellia$/,@a) if $no_camellia; 739 @a=grep(!/^e_camellia$/,@a) if $no_camellia;
1052 @a=grep(!/^e_seed$/,@a) if $no_seed; 740 @a=grep(!/^e_seed$/,@a) if $no_seed;
1053 741
1054 @a=grep(!/(^s2_)|(^s23_)/,@a) if $no_ssl2; 742 #@a=grep(!/(^s2_)|(^s23_)/,@a) if $no_ssl2;
1055 @a=grep(!/(^s3_)|(^s23_)/,@a) if $no_ssl3; 743 #@a=grep(!/(^s3_)|(^s23_)/,@a) if $no_ssl3;
1056 744
1057 @a=grep(!/(_sock$)|(_acpt$)|(_conn$)|(^pxy_)/,@a) if $no_sock; 745 @a=grep(!/(_sock$)|(_acpt$)|(_conn$)|(^pxy_)/,@a) if $no_sock;
1058 746
@@ -1126,6 +814,7 @@ sub do_defs
1126 else { $pf=$postfix; } 814 else { $pf=$postfix; }
1127 if ($_ =~ /BN_ASM/) { $t="$_ "; } 815 if ($_ =~ /BN_ASM/) { $t="$_ "; }
1128 elsif ($_ =~ /BNCO_ASM/){ $t="$_ "; } 816 elsif ($_ =~ /BNCO_ASM/){ $t="$_ "; }
817 elsif ($_ =~ /AES_ASM/){ $t="$_ "; }
1129 elsif ($_ =~ /DES_ENC/) { $t="$_ "; } 818 elsif ($_ =~ /DES_ENC/) { $t="$_ "; }
1130 elsif ($_ =~ /BF_ENC/) { $t="$_ "; } 819 elsif ($_ =~ /BF_ENC/) { $t="$_ "; }
1131 elsif ($_ =~ /CAST_ENC/){ $t="$_ "; } 820 elsif ($_ =~ /CAST_ENC/){ $t="$_ "; }
@@ -1133,8 +822,8 @@ sub do_defs
1133 elsif ($_ =~ /RC5_ENC/) { $t="$_ "; } 822 elsif ($_ =~ /RC5_ENC/) { $t="$_ "; }
1134 elsif ($_ =~ /MD5_ASM/) { $t="$_ "; } 823 elsif ($_ =~ /MD5_ASM/) { $t="$_ "; }
1135 elsif ($_ =~ /SHA1_ASM/){ $t="$_ "; } 824 elsif ($_ =~ /SHA1_ASM/){ $t="$_ "; }
1136 elsif ($_ =~ /AES_ASM/){ $t="$_ "; }
1137 elsif ($_ =~ /RMD160_ASM/){ $t="$_ "; } 825 elsif ($_ =~ /RMD160_ASM/){ $t="$_ "; }
826 elsif ($_ =~ /WHIRLPOOL_ASM/){ $t="$_ "; }
1138 elsif ($_ =~ /CPUID_ASM/){ $t="$_ "; } 827 elsif ($_ =~ /CPUID_ASM/){ $t="$_ "; }
1139 else { $t="$location${o}$_$pf "; } 828 else { $t="$location${o}$_$pf "; }
1140 829
@@ -1142,7 +831,7 @@ sub do_defs
1142 $ret.=$t; 831 $ret.=$t;
1143 } 832 }
1144 # hack to add version info on MSVC 833 # hack to add version info on MSVC
1145 if ($shlib && (($platform eq "VC-WIN32") || ($platform eq "VC-NT"))) 834 if ($shlib && (($platform eq "VC-WIN32") || ($platfrom eq "VC-WIN64I") || ($platform eq "VC-WIN64A") || ($platform eq "VC-NT")))
1146 { 835 {
1147 if ($var eq "CRYPTOOBJ") 836 if ($var eq "CRYPTOOBJ")
1148 { $ret.="\$(OBJ_D)\\\$(CRYPTO).res "; } 837 { $ret.="\$(OBJ_D)\\\$(CRYPTO).res "; }
@@ -1162,6 +851,13 @@ sub bname
1162 return($ret); 851 return($ret);
1163 } 852 }
1164 853
854# return the leading path
855sub dname
856 {
857 my $ret=shift;
858 $ret =~ s/(^.*)[\\\/][^\\\/]+$/$1/;
859 return($ret);
860 }
1165 861
1166############################################################## 862##############################################################
1167# do a rule for each file that says 'compile' to new direcory 863# do a rule for each file that says 'compile' to new direcory
@@ -1169,19 +865,61 @@ sub bname
1169sub do_compile_rule 865sub do_compile_rule
1170 { 866 {
1171 local($to,$files,$ex)=@_; 867 local($to,$files,$ex)=@_;
1172 local($ret,$_,$n); 868 local($ret,$_,$n,$d,$s);
1173 869
1174 $files =~ s/\//$o/g if $o ne '/'; 870 $files =~ s/\//$o/g if $o ne '/';
1175 foreach (split(/\s+/,$files)) 871 foreach (split(/\s+/,$files))
1176 { 872 {
1177 $n=&bname($_); 873 $n=&bname($_);
1178 $ret.=&cc_compile_target("$to${o}$n$obj","${_}.c",$ex) 874 $d=&dname($_);
875 if (-f "${_}.c")
876 {
877 $ret.=&cc_compile_target("$to${o}$n$obj","${_}.c",$ex)
878 }
879 elsif (-f ($s="${d}${o}asm${o}${n}.pl") or
880 ($s=~s/sha256/sha512/ and -f $s) or
881 -f ($s="${d}${o}${n}.pl"))
882 {
883 $ret.=&perlasm_compile_target("$to${o}$n$obj",$s,$n);
884 }
885 elsif (-f ($s="${d}${o}asm${o}${n}.S") or
886 -f ($s="${d}${o}${n}.S"))
887 {
888 $ret.=&Sasm_compile_target("$to${o}$n$obj",$s,$n);
889 }
890 else { die "no rule for $_"; }
1179 } 891 }
1180 return($ret); 892 return($ret);
1181 } 893 }
1182 894
1183############################################################## 895##############################################################
1184# do a rule for each file that says 'compile' to new direcory 896# do a rule for each file that says 'compile' to new direcory
897sub perlasm_compile_target
898 {
899 my($target,$source,$bname)=@_;
900 my($ret);
901
902 $bname =~ s/(.*)\.[^\.]$/$1/;
903 $ret ="\$(TMP_D)$o$bname.asm: $source\n";
904 $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) >\$\@\n\n";
905 $ret.="$target: \$(TMP_D)$o$bname.asm\n";
906 $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm\n\n";
907 return($ret);
908 }
909
910sub Sasm_compile_target
911 {
912 my($target,$source,$bname)=@_;
913 my($ret);
914
915 $bname =~ s/(.*)\.[^\.]$/$1/;
916 $ret ="\$(TMP_D)$o$bname.asm: $source\n";
917 $ret.="\t\$(CC) -E \$(CFLAG) $source >\$\@\n\n";
918 $ret.="$target: \$(TMP_D)$o$bname.asm\n";
919 $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm\n\n";
920 return($ret);
921 }
922
1185sub cc_compile_target 923sub cc_compile_target
1186 { 924 {
1187 local($target,$source,$ex_flags)=@_; 925 local($target,$source,$ex_flags)=@_;
@@ -1204,13 +942,25 @@ sub do_asm_rule
1204 $target =~ s/\//$o/g if $o ne "/"; 942 $target =~ s/\//$o/g if $o ne "/";
1205 $src =~ s/\//$o/g if $o ne "/"; 943 $src =~ s/\//$o/g if $o ne "/";
1206 944
1207 @s=split(/\s+/,$src);
1208 @t=split(/\s+/,$target); 945 @t=split(/\s+/,$target);
946 @s=split(/\s+/,$src);
947
1209 948
1210 for ($i=0; $i<=$#s; $i++) 949 for ($i=0; $i<=$#s; $i++)
1211 { 950 {
1212 $ret.="$t[$i]: $s[$i]\n"; 951 my $objfile = $t[$i];
1213 $ret.="\t\$(ASM) $afile$t[$i] \$(SRC_D)$o$s[$i]\n\n"; 952 my $srcfile = $s[$i];
953
954 if ($perl_asm == 1)
955 {
956 my $plasm = $objfile;
957 $plasm =~ s/${obj}/.pl/;
958 $ret.="$srcfile: $plasm\n";
959 $ret.="\t\$(PERL) $plasm $asmtype \$(CFLAG) >$srcfile\n\n";
960 }
961
962 $ret.="$objfile: $srcfile\n";
963 $ret.="\t\$(ASM) $afile$objfile \$(SRC_D)$o$srcfile\n\n";
1214 } 964 }
1215 return($ret); 965 return($ret);
1216 } 966 }
@@ -1274,6 +1024,7 @@ sub read_options
1274 "no-sha1" => \$no_sha1, 1024 "no-sha1" => \$no_sha1,
1275 "no-ripemd" => \$no_ripemd, 1025 "no-ripemd" => \$no_ripemd,
1276 "no-mdc2" => \$no_mdc2, 1026 "no-mdc2" => \$no_mdc2,
1027 "no-whirlpool" => \$no_whirlpool,
1277 "no-patents" => 1028 "no-patents" =>
1278 [\$no_rc2, \$no_rc4, \$no_rc5, \$no_idea, \$no_rsa], 1029 [\$no_rc2, \$no_rc4, \$no_rc5, \$no_idea, \$no_rsa],
1279 "no-rsa" => \$no_rsa, 1030 "no-rsa" => \$no_rsa,
@@ -1282,7 +1033,6 @@ sub read_options
1282 "no-hmac" => \$no_hmac, 1033 "no-hmac" => \$no_hmac,
1283 "no-asm" => \$no_asm, 1034 "no-asm" => \$no_asm,
1284 "nasm" => \$nasm, 1035 "nasm" => \$nasm,
1285 "ml64" => \$ml64,
1286 "nw-nasm" => \$nw_nasm, 1036 "nw-nasm" => \$nw_nasm,
1287 "nw-mwasm" => \$nw_mwasm, 1037 "nw-mwasm" => \$nw_mwasm,
1288 "gaswin" => \$gaswin, 1038 "gaswin" => \$gaswin,
@@ -1291,7 +1041,6 @@ sub read_options
1291 "no-tlsext" => \$no_tlsext, 1041 "no-tlsext" => \$no_tlsext,
1292 "no-cms" => \$no_cms, 1042 "no-cms" => \$no_cms,
1293 "no-jpake" => \$no_jpake, 1043 "no-jpake" => \$no_jpake,
1294 "no-capieng" => \$no_capieng,
1295 "no-err" => \$no_err, 1044 "no-err" => \$no_err,
1296 "no-sock" => \$no_sock, 1045 "no-sock" => \$no_sock,
1297 "no-krb5" => \$no_krb5, 1046 "no-krb5" => \$no_krb5,
@@ -1316,11 +1065,9 @@ sub read_options
1316 "no-rfc3779" => 0, 1065 "no-rfc3779" => 0,
1317 "no-montasm" => 0, 1066 "no-montasm" => 0,
1318 "no-shared" => 0, 1067 "no-shared" => 0,
1068 "no-store" => 0,
1319 "no-zlib" => 0, 1069 "no-zlib" => 0,
1320 "no-zlib-dynamic" => 0, 1070 "no-zlib-dynamic" => 0,
1321 "fips" => \$fips,
1322 "fipscanisterbuild" => [\$fips, \$fipscanisterbuild],
1323 "fipsdso" => [\$fips, \$fipscanisterbuild, \$fipsdso],
1324 ); 1071 );
1325 1072
1326 if (exists $valid_options{$_}) 1073 if (exists $valid_options{$_})
@@ -1397,31 +1144,3 @@ sub read_options
1397 else { return(0); } 1144 else { return(0); }
1398 return(1); 1145 return(1);
1399 } 1146 }
1400
1401sub fipslib_error
1402 {
1403 print STDERR "***FIPS module directory sanity check failed***\n";
1404 print STDERR "FIPS module build failed, or was deleted\n";
1405 print STDERR "Please rebuild FIPS module.\n";
1406 exit 1;
1407 }
1408
1409sub fips_check_files
1410 {
1411 my $dir = shift @_;
1412 my $ret = 1;
1413 if (!-d $dir)
1414 {
1415 print STDERR "FIPS module directory $dir does not exist\n";
1416 fipslib_error();
1417 }
1418 foreach (@_)
1419 {
1420 if (!-f "$dir${o}$_")
1421 {
1422 print STDERR "FIPS module file $_ does not exist!\n";
1423 $ret = 0;
1424 }
1425 }
1426 fipslib_error() if ($ret == 0);
1427 }
diff --git a/src/lib/libcrypto/util/mkdef.pl b/src/lib/libcrypto/util/mkdef.pl
index 5ae9ebb619..a4a17e3ae9 100644
--- a/src/lib/libcrypto/util/mkdef.pl
+++ b/src/lib/libcrypto/util/mkdef.pl
@@ -69,7 +69,7 @@ my $do_ctestall = 0;
69my $do_checkexist = 0; 69my $do_checkexist = 0;
70 70
71my $VMSVAX=0; 71my $VMSVAX=0;
72my $VMSAlpha=0; 72my $VMSNonVAX=0;
73my $VMS=0; 73my $VMS=0;
74my $W32=0; 74my $W32=0;
75my $W16=0; 75my $W16=0;
@@ -79,12 +79,13 @@ my $OS2=0;
79my $safe_stack_def = 0; 79my $safe_stack_def = 0;
80 80
81my @known_platforms = ( "__FreeBSD__", "PERL5", "NeXT", 81my @known_platforms = ( "__FreeBSD__", "PERL5", "NeXT",
82 "EXPORT_VAR_AS_FUNCTION", "ZLIB", "OPENSSL_FIPS"); 82 "EXPORT_VAR_AS_FUNCTION", "ZLIB" );
83my @known_ossl_platforms = ( "VMS", "WIN16", "WIN32", "WINNT", "OS2" ); 83my @known_ossl_platforms = ( "VMS", "WIN16", "WIN32", "WINNT", "OS2" );
84my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF", 84my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",
85 "CAST", "MD2", "MD4", "MD5", "SHA", "SHA0", "SHA1", 85 "CAST", "MD2", "MD4", "MD5", "SHA", "SHA0", "SHA1",
86 "SHA256", "SHA512", "RIPEMD", 86 "SHA256", "SHA512", "RIPEMD",
87 "MDC2", "RSA", "DSA", "DH", "EC", "ECDH", "ECDSA", "HMAC", "AES", "CAMELLIA", "SEED", 87 "MDC2", "WHIRLPOOL", "RSA", "DSA", "DH", "EC", "ECDH", "ECDSA",
88 "HMAC", "AES", "CAMELLIA", "SEED", "GOST",
88 # Envelope "algorithms" 89 # Envelope "algorithms"
89 "EVP", "X509", "ASN1_TYPEDEFS", 90 "EVP", "X509", "ASN1_TYPEDEFS",
90 # Helper "algorithms" 91 # Helper "algorithms"
@@ -94,14 +95,16 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",
94 "FP_API", "STDIO", "SOCK", "KRB5", "DGRAM", 95 "FP_API", "STDIO", "SOCK", "KRB5", "DGRAM",
95 # Engines 96 # Engines
96 "STATIC_ENGINE", "ENGINE", "HW", "GMP", 97 "STATIC_ENGINE", "ENGINE", "HW", "GMP",
97 # RFC3779 support 98 # RFC3779
98 "RFC3779", 99 "RFC3779",
99 # TLS extension support 100 # TLS
100 "TLSEXT", 101 "TLSEXT", "PSK",
101 # CMS 102 # CMS
102 "CMS", 103 "CMS",
103 # CryptoAPI Engine 104 # CryptoAPI Engine
104 "CAPIENG", 105 "CAPIENG",
106 # SSL v2
107 "SSL2",
105 # JPAKE 108 # JPAKE
106 "JPAKE", 109 "JPAKE",
107 # Deprecated functions 110 # Deprecated functions
@@ -118,14 +121,15 @@ close(IN);
118# defined with ifndef(NO_XXX) are not included in the .def file, and everything 121# defined with ifndef(NO_XXX) are not included in the .def file, and everything
119# in directory xxx is ignored. 122# in directory xxx is ignored.
120my $no_rc2; my $no_rc4; my $no_rc5; my $no_idea; my $no_des; my $no_bf; 123my $no_rc2; my $no_rc4; my $no_rc5; my $no_idea; my $no_des; my $no_bf;
121my $no_cast; 124my $no_cast; my $no_whirlpool; my $no_camellia; my $no_seed;
122my $no_md2; my $no_md4; my $no_md5; my $no_sha; my $no_ripemd; my $no_mdc2; 125my $no_md2; my $no_md4; my $no_md5; my $no_sha; my $no_ripemd; my $no_mdc2;
123my $no_rsa; my $no_dsa; my $no_dh; my $no_hmac=0; my $no_aes; my $no_krb5; 126my $no_rsa; my $no_dsa; my $no_dh; my $no_hmac=0; my $no_aes; my $no_krb5;
124my $no_ec; my $no_ecdsa; my $no_ecdh; my $no_engine; my $no_hw; my $no_camellia; 127my $no_ec; my $no_ecdsa; my $no_ecdh; my $no_engine; my $no_hw;
125my $no_seed; 128my $no_fp_api; my $no_static_engine=1; my $no_gmp; my $no_deprecated;
126my $no_fp_api; my $no_static_engine; my $no_gmp; my $no_deprecated; 129my $no_rfc3779; my $no_psk; my $no_tlsext; my $no_cms; my $no_capieng;
127my $no_rfc3779; my $no_tlsext; my $no_cms; my $no_capieng; my $no_jpake; 130my $no_jpake; my $no_ssl2;
128my $fips; 131
132my $zlib;
129 133
130 134
131foreach (@ARGV, split(/ /, $options)) 135foreach (@ARGV, split(/ /, $options))
@@ -141,17 +145,15 @@ foreach (@ARGV, split(/ /, $options))
141 $VMS=1; 145 $VMS=1;
142 $VMSVAX=1; 146 $VMSVAX=1;
143 } 147 }
144 if ($_ eq "VMS-Alpha") { 148 if ($_ eq "VMS-NonVAX") {
145 $VMS=1; 149 $VMS=1;
146 $VMSAlpha=1; 150 $VMSNonVAX=1;
147 } 151 }
148 $VMS=1 if $_ eq "VMS"; 152 $VMS=1 if $_ eq "VMS";
149 $OS2=1 if $_ eq "OS2"; 153 $OS2=1 if $_ eq "OS2";
150 $fips=1 if /^fips/; 154 if ($_ eq "zlib" || $_ eq "enable-zlib" || $_ eq "zlib-dynamic"
151 155 || $_ eq "enable-zlib-dynamic") {
152 if ($_ eq "zlib" || $_ eq "zlib-dynamic" 156 $zlib = 1;
153 || $_ eq "enable-zlib-dynamic") {
154 $zlib = 1;
155 } 157 }
156 158
157 $do_ssl=1 if $_ eq "ssleay"; 159 $do_ssl=1 if $_ eq "ssleay";
@@ -180,6 +182,7 @@ foreach (@ARGV, split(/ /, $options))
180 elsif (/^no-des$/) { $no_des=1; $no_mdc2=1; } 182 elsif (/^no-des$/) { $no_des=1; $no_mdc2=1; }
181 elsif (/^no-bf$/) { $no_bf=1; } 183 elsif (/^no-bf$/) { $no_bf=1; }
182 elsif (/^no-cast$/) { $no_cast=1; } 184 elsif (/^no-cast$/) { $no_cast=1; }
185 elsif (/^no-whirlpool$/) { $no_whirlpool=1; }
183 elsif (/^no-md2$/) { $no_md2=1; } 186 elsif (/^no-md2$/) { $no_md2=1; }
184 elsif (/^no-md4$/) { $no_md4=1; } 187 elsif (/^no-md4$/) { $no_md4=1; }
185 elsif (/^no-md5$/) { $no_md5=1; } 188 elsif (/^no-md5$/) { $no_md5=1; }
@@ -212,6 +215,7 @@ foreach (@ARGV, split(/ /, $options))
212 elsif (/^no-rfc3779$/) { $no_rfc3779=1; } 215 elsif (/^no-rfc3779$/) { $no_rfc3779=1; }
213 elsif (/^no-tlsext$/) { $no_tlsext=1; } 216 elsif (/^no-tlsext$/) { $no_tlsext=1; }
214 elsif (/^no-cms$/) { $no_cms=1; } 217 elsif (/^no-cms$/) { $no_cms=1; }
218 elsif (/^no-ssl2$/) { $no_ssl2=1; }
215 elsif (/^no-capieng$/) { $no_capieng=1; } 219 elsif (/^no-capieng$/) { $no_capieng=1; }
216 elsif (/^no-jpake$/) { $no_jpake=1; } 220 elsif (/^no-jpake$/) { $no_jpake=1; }
217 } 221 }
@@ -260,6 +264,7 @@ $crypto.=" crypto/rc5/rc5.h" ; # unless $no_rc5;
260$crypto.=" crypto/rc2/rc2.h" ; # unless $no_rc2; 264$crypto.=" crypto/rc2/rc2.h" ; # unless $no_rc2;
261$crypto.=" crypto/bf/blowfish.h" ; # unless $no_bf; 265$crypto.=" crypto/bf/blowfish.h" ; # unless $no_bf;
262$crypto.=" crypto/cast/cast.h" ; # unless $no_cast; 266$crypto.=" crypto/cast/cast.h" ; # unless $no_cast;
267$crypto.=" crypto/whrlpool/whrlpool.h" ;
263$crypto.=" crypto/md2/md2.h" ; # unless $no_md2; 268$crypto.=" crypto/md2/md2.h" ; # unless $no_md2;
264$crypto.=" crypto/md4/md4.h" ; # unless $no_md4; 269$crypto.=" crypto/md4/md4.h" ; # unless $no_md4;
265$crypto.=" crypto/md5/md5.h" ; # unless $no_md5; 270$crypto.=" crypto/md5/md5.h" ; # unless $no_md5;
@@ -301,17 +306,16 @@ $crypto.=" crypto/pkcs12/pkcs12.h";
301$crypto.=" crypto/x509/x509.h"; 306$crypto.=" crypto/x509/x509.h";
302$crypto.=" crypto/x509/x509_vfy.h"; 307$crypto.=" crypto/x509/x509_vfy.h";
303$crypto.=" crypto/x509v3/x509v3.h"; 308$crypto.=" crypto/x509v3/x509v3.h";
309$crypto.=" crypto/ts/ts.h";
304$crypto.=" crypto/rand/rand.h"; 310$crypto.=" crypto/rand/rand.h";
305$crypto.=" crypto/comp/comp.h" ; # unless $no_comp; 311$crypto.=" crypto/comp/comp.h" ; # unless $no_comp;
306$crypto.=" crypto/ocsp/ocsp.h"; 312$crypto.=" crypto/ocsp/ocsp.h";
307$crypto.=" crypto/ui/ui.h crypto/ui/ui_compat.h"; 313$crypto.=" crypto/ui/ui.h crypto/ui/ui_compat.h";
308$crypto.=" crypto/krb5/krb5_asn.h"; 314$crypto.=" crypto/krb5/krb5_asn.h";
309$crypto.=" crypto/tmdiff.h"; 315#$crypto.=" crypto/store/store.h";
310$crypto.=" crypto/store/store.h";
311$crypto.=" crypto/pqueue/pqueue.h"; 316$crypto.=" crypto/pqueue/pqueue.h";
312$crypto.=" crypto/cms/cms.h"; 317$crypto.=" crypto/cms/cms.h";
313$crypto.=" crypto/jpake/jpake.h"; 318$crypto.=" crypto/jpake/jpake.h";
314$crypto.=" fips/fips.h fips/rand/fips_rand.h";
315 319
316my $symhacks="crypto/symhacks.h"; 320my $symhacks="crypto/symhacks.h";
317 321
@@ -885,6 +889,7 @@ sub do_defs
885 s/\{\}/\(\)/gs; 889 s/\{\}/\(\)/gs;
886 890
887 s/STACK_OF\(\)/void/gs; 891 s/STACK_OF\(\)/void/gs;
892 s/LHASH_OF\(\)/void/gs;
888 893
889 print STDERR "DEBUG: \$_ = \"$_\"\n" if $debug; 894 print STDERR "DEBUG: \$_ = \"$_\"\n" if $debug;
890 if (/^\#INFO:([^:]*):(.*)$/) { 895 if (/^\#INFO:([^:]*):(.*)$/) {
@@ -961,6 +966,25 @@ sub do_defs
961 $platform{"PEM_write_NS_CERT_SEQ"} = "VMS"; 966 $platform{"PEM_write_NS_CERT_SEQ"} = "VMS";
962 $platform{"PEM_read_P8_PRIV_KEY_INFO"} = "VMS"; 967 $platform{"PEM_read_P8_PRIV_KEY_INFO"} = "VMS";
963 $platform{"PEM_write_P8_PRIV_KEY_INFO"} = "VMS"; 968 $platform{"PEM_write_P8_PRIV_KEY_INFO"} = "VMS";
969 $platform{"EVP_sha384"} = "!VMSVAX";
970 $platform{"EVP_sha512"} = "!VMSVAX";
971 $platform{"SHA384_Init"} = "!VMSVAX";
972 $platform{"SHA384_Transform"} = "!VMSVAX";
973 $platform{"SHA384_Update"} = "!VMSVAX";
974 $platform{"SHA384_Final"} = "!VMSVAX";
975 $platform{"SHA384"} = "!VMSVAX";
976 $platform{"SHA512_Init"} = "!VMSVAX";
977 $platform{"SHA512_Transform"} = "!VMSVAX";
978 $platform{"SHA512_Update"} = "!VMSVAX";
979 $platform{"SHA512_Final"} = "!VMSVAX";
980 $platform{"SHA512"} = "!VMSVAX";
981 $platform{"WHIRLPOOL_Init"} = "!VMSVAX";
982 $platform{"WHIRLPOOL"} = "!VMSVAX";
983 $platform{"WHIRLPOOL_BitUpdate"} = "!VMSVAX";
984 $platform{"EVP_whirlpool"} = "!VMSVAX";
985 $platform{"WHIRLPOOL_Final"} = "!VMSVAX";
986 $platform{"WHIRLPOOL_Update"} = "!VMSVAX";
987
964 988
965 # Info we know about 989 # Info we know about
966 990
@@ -1085,6 +1109,8 @@ sub is_valid
1085 1109
1086 if ($platforms) { 1110 if ($platforms) {
1087 # platforms 1111 # platforms
1112 if ($keyword eq "VMSVAX" && $VMSVAX) { return 1; }
1113 if ($keyword eq "VMSNonVAX" && $VMSNonVAX) { return 1; }
1088 if ($keyword eq "VMS" && $VMS) { return 1; } 1114 if ($keyword eq "VMS" && $VMS) { return 1; }
1089 if ($keyword eq "WIN32" && $W32) { return 1; } 1115 if ($keyword eq "WIN32" && $W32) { return 1; }
1090 if ($keyword eq "WIN16" && $W16) { return 1; } 1116 if ($keyword eq "WIN16" && $W16) { return 1; }
@@ -1097,9 +1123,6 @@ sub is_valid
1097 if ($keyword eq "EXPORT_VAR_AS_FUNCTION" && ($VMSVAX || $W32 || $W16)) { 1123 if ($keyword eq "EXPORT_VAR_AS_FUNCTION" && ($VMSVAX || $W32 || $W16)) {
1098 return 1; 1124 return 1;
1099 } 1125 }
1100 if ($keyword eq "OPENSSL_FIPS" && $fips) {
1101 return 1;
1102 }
1103 if ($keyword eq "ZLIB" && $zlib) { return 1; } 1126 if ($keyword eq "ZLIB" && $zlib) { return 1; }
1104 return 0; 1127 return 0;
1105 } else { 1128 } else {
@@ -1117,6 +1140,7 @@ sub is_valid
1117 if ($keyword eq "SHA" && $no_sha) { return 0; } 1140 if ($keyword eq "SHA" && $no_sha) { return 0; }
1118 if ($keyword eq "RIPEMD" && $no_ripemd) { return 0; } 1141 if ($keyword eq "RIPEMD" && $no_ripemd) { return 0; }
1119 if ($keyword eq "MDC2" && $no_mdc2) { return 0; } 1142 if ($keyword eq "MDC2" && $no_mdc2) { return 0; }
1143 if ($keyword eq "WHIRLPOOL" && $no_whirlpool) { return 0; }
1120 if ($keyword eq "RSA" && $no_rsa) { return 0; } 1144 if ($keyword eq "RSA" && $no_rsa) { return 0; }
1121 if ($keyword eq "DSA" && $no_dsa) { return 0; } 1145 if ($keyword eq "DSA" && $no_dsa) { return 0; }
1122 if ($keyword eq "DH" && $no_dh) { return 0; } 1146 if ($keyword eq "DH" && $no_dh) { return 0; }
@@ -1143,7 +1167,9 @@ sub is_valid
1143 if ($keyword eq "GMP" && $no_gmp) { return 0; } 1167 if ($keyword eq "GMP" && $no_gmp) { return 0; }
1144 if ($keyword eq "RFC3779" && $no_rfc3779) { return 0; } 1168 if ($keyword eq "RFC3779" && $no_rfc3779) { return 0; }
1145 if ($keyword eq "TLSEXT" && $no_tlsext) { return 0; } 1169 if ($keyword eq "TLSEXT" && $no_tlsext) { return 0; }
1170 if ($keyword eq "PSK" && $no_psk) { return 0; }
1146 if ($keyword eq "CMS" && $no_cms) { return 0; } 1171 if ($keyword eq "CMS" && $no_cms) { return 0; }
1172 if ($keyword eq "SSL2" && $no_ssl2) { return 0; }
1147 if ($keyword eq "CAPIENG" && $no_capieng) { return 0; } 1173 if ($keyword eq "CAPIENG" && $no_capieng) { return 0; }
1148 if ($keyword eq "JPAKE" && $no_jpake) { return 0; } 1174 if ($keyword eq "JPAKE" && $no_jpake) { return 0; }
1149 if ($keyword eq "DEPRECATED" && $no_deprecated) { return 0; } 1175 if ($keyword eq "DEPRECATED" && $no_deprecated) { return 0; }
diff --git a/src/lib/libcrypto/util/mkfiles.pl b/src/lib/libcrypto/util/mkfiles.pl
index 67fb8694c8..6d15831450 100644
--- a/src/lib/libcrypto/util/mkfiles.pl
+++ b/src/lib/libcrypto/util/mkfiles.pl
@@ -26,6 +26,7 @@ my @dirs = (
26"crypto/aes", 26"crypto/aes",
27"crypto/camellia", 27"crypto/camellia",
28"crypto/seed", 28"crypto/seed",
29"crypto/modes",
29"crypto/bn", 30"crypto/bn",
30"crypto/rsa", 31"crypto/rsa",
31"crypto/dsa", 32"crypto/dsa",
@@ -46,6 +47,7 @@ my @dirs = (
46"crypto/pem", 47"crypto/pem",
47"crypto/x509", 48"crypto/x509",
48"crypto/x509v3", 49"crypto/x509v3",
50"crypto/cms",
49"crypto/conf", 51"crypto/conf",
50"crypto/jpake", 52"crypto/jpake",
51"crypto/txt_db", 53"crypto/txt_db",
@@ -56,25 +58,20 @@ my @dirs = (
56"crypto/ocsp", 58"crypto/ocsp",
57"crypto/ui", 59"crypto/ui",
58"crypto/krb5", 60"crypto/krb5",
59"crypto/store", 61#"crypto/store",
60"crypto/pqueue", 62"crypto/pqueue",
61"crypto/cms", 63"crypto/whrlpool",
62"fips", 64"crypto/ts",
63"fips/aes",
64"fips/des",
65"fips/dsa",
66"fips/dh",
67"fips/hmac",
68"fips/rand",
69"fips/rsa",
70"fips/sha",
71"ssl", 65"ssl",
72"apps", 66"apps",
73"engines", 67"engines",
68"engines/ccgost",
74"test", 69"test",
75"tools" 70"tools"
76); 71);
77 72
73%top;
74
78foreach (@dirs) { 75foreach (@dirs) {
79 &files_dir ($_, "Makefile"); 76 &files_dir ($_, "Makefile");
80} 77}
@@ -118,8 +115,8 @@ while (<IN>)
118 $o =~ s/\s+$//; 115 $o =~ s/\s+$//;
119 $o =~ s/\s+/ /g; 116 $o =~ s/\s+/ /g;
120 117
121 $o =~ s/\$[({]([^)}]+)[)}]/$sym{$1}/g; 118 $o =~ s/\$[({]([^)}]+)[)}]/$top{$1} or $sym{$1}/ge;
122 $sym{$s}=$o; 119 $sym{$s}=($top{$s} or $o);
123 } 120 }
124 } 121 }
125 122
@@ -129,6 +126,15 @@ foreach (sort keys %sym)
129 { 126 {
130 print "$_=$sym{$_}\n"; 127 print "$_=$sym{$_}\n";
131 } 128 }
129if ($dir eq "." && defined($sym{"BUILDENV"}))
130 {
131 foreach (split(' ',$sym{"BUILDENV"}))
132 {
133 /^(.+)=/;
134 $top{$1}=$sym{$1};
135 }
136 }
137
132print "RELATIVE_DIRECTORY=\n"; 138print "RELATIVE_DIRECTORY=\n";
133 139
134close (IN); 140close (IN);
diff --git a/src/lib/libcrypto/util/mklink.pl b/src/lib/libcrypto/util/mklink.pl
index eacc327882..61db12c68f 100644
--- a/src/lib/libcrypto/util/mklink.pl
+++ b/src/lib/libcrypto/util/mklink.pl
@@ -15,21 +15,13 @@
15# Apart from this, this script should be able to handle even the most 15# Apart from this, this script should be able to handle even the most
16# pathological cases. 16# pathological cases.
17 17
18my $pwd; 18use Cwd;
19eval 'use Cwd;';
20if ($@)
21 {
22 $pwd = `pwd`;
23 }
24else
25 {
26 $pwd = getcwd();
27 }
28 19
29my $from = shift; 20my $from = shift;
30my @files = @ARGV; 21my @files = @ARGV;
31 22
32my @from_path = split(/[\\\/]/, $from); 23my @from_path = split(/[\\\/]/, $from);
24my $pwd = getcwd();
33chomp($pwd); 25chomp($pwd);
34my @pwd_path = split(/[\\\/]/, $pwd); 26my @pwd_path = split(/[\\\/]/, $pwd);
35 27
@@ -59,6 +51,7 @@ my $to = join('/', @to_path);
59 51
60my $file; 52my $file;
61$symlink_exists=eval {symlink("",""); 1}; 53$symlink_exists=eval {symlink("",""); 1};
54if ($^O eq "msys") { $symlink_exists=0 };
62foreach $file (@files) { 55foreach $file (@files) {
63 my $err = ""; 56 my $err = "";
64 if ($symlink_exists) { 57 if ($symlink_exists) {
diff --git a/src/lib/libcrypto/util/pl/BC-32.pl b/src/lib/libcrypto/util/pl/BC-32.pl
index 99b8c058d2..1f1e13fb40 100644
--- a/src/lib/libcrypto/util/pl/BC-32.pl
+++ b/src/lib/libcrypto/util/pl/BC-32.pl
@@ -117,7 +117,7 @@ ___
117 else 117 else
118 { 118 {
119 local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; 119 local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':'';
120 $ex.=' wsock32.lib gdi32.lib'; 120 $ex.=' ws2_32.lib gdi32.lib';
121 $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n"; 121 $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
122 } 122 }
123 $ret.="\n"; 123 $ret.="\n";
diff --git a/src/lib/libcrypto/util/pl/Mingw32.pl b/src/lib/libcrypto/util/pl/Mingw32.pl
index 8f0483fb93..fe3fb27a78 100644
--- a/src/lib/libcrypto/util/pl/Mingw32.pl
+++ b/src/lib/libcrypto/util/pl/Mingw32.pl
@@ -19,7 +19,7 @@ $cc='gcc';
19if ($debug) 19if ($debug)
20 { $cflags="-DL_ENDIAN -DDSO_WIN32 -g2 -ggdb"; } 20 { $cflags="-DL_ENDIAN -DDSO_WIN32 -g2 -ggdb"; }
21else 21else
22 { $cflags="-DL_ENDIAN -DDSO_WIN32 -fomit-frame-pointer -O3 -march=i486 -Wall"; } 22 { $cflags="-DL_ENDIAN -DDSO_WIN32 -fomit-frame-pointer -O3 -mcpu=i486 -Wall"; }
23 23
24if ($gaswin and !$no_asm) 24if ($gaswin and !$no_asm)
25 { 25 {
@@ -43,8 +43,6 @@ if ($gaswin and !$no_asm)
43 $rmd160_asm_src='crypto/ripemd/asm/rm-win32.s'; 43 $rmd160_asm_src='crypto/ripemd/asm/rm-win32.s';
44 $sha1_asm_obj='$(OBJ_D)\s1-win32.o'; 44 $sha1_asm_obj='$(OBJ_D)\s1-win32.o';
45 $sha1_asm_src='crypto/sha/asm/s1-win32.s'; 45 $sha1_asm_src='crypto/sha/asm/s1-win32.s';
46 $cpuid_asm_obj='$(OBJ_D)\cpu-win32.o';
47 $cpuid_asm_src='crypto/cpu-win32.s';
48 $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART_WORDS"; 46 $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART_WORDS";
49 } 47 }
50 48
@@ -57,7 +55,7 @@ $link='${CC}';
57$lflags='${CFLAGS}'; 55$lflags='${CFLAGS}';
58$efile='-o '; 56$efile='-o ';
59$exep=''; 57$exep='';
60$ex_libs="-lwsock32 -lgdi32"; 58$ex_libs="-lws2_32 -lgdi32";
61 59
62# static library stuff 60# static library stuff
63$mklib='ar r'; 61$mklib='ar r';
diff --git a/src/lib/libcrypto/util/pl/VC-32.pl b/src/lib/libcrypto/util/pl/VC-32.pl
index 85121c8ed1..c3e29fda96 100644
--- a/src/lib/libcrypto/util/pl/VC-32.pl
+++ b/src/lib/libcrypto/util/pl/VC-32.pl
@@ -4,21 +4,7 @@
4# 4#
5 5
6$ssl= "ssleay32"; 6$ssl= "ssleay32";
7 7$crypto="libeay32";
8if ($fips && !$shlib)
9 {
10 $crypto="libeayfips32";
11 $crypto_compat = "libeaycompat32.lib";
12 }
13else
14 {
15 $crypto="libeay32";
16 }
17
18if ($fipscanisterbuild)
19 {
20 $fips_canister_path = "\$(LIB_D)\\fipscanister.lib";
21 }
22 8
23$o='\\'; 9$o='\\';
24$cp='$(PERL) util/copy.pl'; 10$cp='$(PERL) util/copy.pl';
@@ -27,6 +13,10 @@ $rm='del /Q';
27 13
28$zlib_lib="zlib1.lib"; 14$zlib_lib="zlib1.lib";
29 15
16# Santize -L options for ms link
17$l_flags =~ s/-L("\[^"]+")/\/libpath:$1/g;
18$l_flags =~ s/-L(\S+)/\/libpath:$1/g;
19
30# C compiler stuff 20# C compiler stuff
31$cc='cl'; 21$cc='cl';
32if ($FLAVOR =~ /WIN64/) 22if ($FLAVOR =~ /WIN64/)
@@ -42,14 +32,28 @@ if ($FLAVOR =~ /WIN64/)
42 # per 0.9.8 release remaining warnings were explicitly examined and 32 # per 0.9.8 release remaining warnings were explicitly examined and
43 # considered safe to ignore. 33 # considered safe to ignore.
44 # 34 #
45 $base_cflags=' /W3 /Gs0 /GF /Gy /nologo -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DOPENSSL_SYSNAME_WIN32 -DOPENSSL_SYSNAME_WINNT -DUNICODE -D_UNICODE'; 35 $base_cflags= " $mf_cflag";
46 $base_cflags.=' -D_CRT_SECURE_NO_DEPRECATE'; # shut up VC8
47 $base_cflags.=' -D_CRT_NONSTDC_NO_DEPRECATE'; # shut up VC8
48 my $f = $shlib?' /MD':' /MT'; 36 my $f = $shlib?' /MD':' /MT';
49 $lib_cflag='/Zl' if (!$shlib); # remove /DEFAULTLIBs from static lib 37 $lib_cflag='/Zl' if (!$shlib); # remove /DEFAULTLIBs from static lib
50 $opt_cflags=$f.' /Ox'; 38 $opt_cflags=$f.' /Ox';
51 $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG'; 39 $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG';
52 $lflags="/nologo /subsystem:console /opt:ref"; 40 $lflags="/nologo /subsystem:console /opt:ref";
41
42 *::perlasm_compile_target = sub {
43 my ($target,$source,$bname)=@_;
44 my $ret;
45
46 $bname =~ s/(.*)\.[^\.]$/$1/;
47 $ret=<<___;
48\$(TMP_D)$o$bname.asm: $source
49 set ASM=\$(ASM)
50 \$(PERL) $source \$\@
51
52$target: \$(TMP_D)$o$bname.asm
53 \$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm
54
55___
56 }
53 } 57 }
54elsif ($FLAVOR =~ /CE/) 58elsif ($FLAVOR =~ /CE/)
55 { 59 {
@@ -99,18 +103,18 @@ elsif ($FLAVOR =~ /CE/)
99 } 103 }
100 104
101 $cc='$(CC)'; 105 $cc='$(CC)';
102 $base_cflags=' /W3 /WX /GF /Gy /nologo -DUNICODE -D_UNICODE -DOPENSSL_SYSNAME_WINCE -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DNO_CHMOD -I$(WCECOMPAT)/include -DOPENSSL_SMALL_FOOTPRINT'; 106 $base_cflags=' /W3 /WX /GF /Gy /nologo -DUNICODE -D_UNICODE -DOPENSSL_SYSNAME_WINCE -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DNO_CHMOD -DOPENSSL_SMALL_FOOTPRINT';
103 $base_cflags.=" $wcecdefs"; 107 $base_cflags.=" $wcecdefs";
108 $base_cflags.=' -I$(WCECOMPAT)/include' if (defined($ENV{'WCECOMPAT'}));
109 $base_cflags.=' -I$(PORTSDK_LIBPATH)/../../include' if (defined($ENV{'PORTSDK_LIBPATH'}));
104 $opt_cflags=' /MC /O1i'; # optimize for space, but with intrinsics... 110 $opt_cflags=' /MC /O1i'; # optimize for space, but with intrinsics...
105 $dbg_clfags=' /MC /Od -DDEBUG -D_DEBUG'; 111 $dbg_clfags=' /MC /Od -DDEBUG -D_DEBUG';
106 $lflags="/nologo /opt:ref $wcelflag"; 112 $lflags="/nologo /opt:ref $wcelflag";
107 } 113 }
108else # Win32 114else # Win32
109 { 115 {
110 $base_cflags=' /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32'; 116 $base_cflags= " $mf_cflag";
111 $base_cflags.=' -D_CRT_SECURE_NO_DEPRECATE'; # shut up VC8 117 my $f = $shlib?' /MD':' /MT';
112 $base_cflags.=' -D_CRT_NONSTDC_NO_DEPRECATE'; # shut up VC8
113 my $f = $shlib || $fips ?' /MD':' /MT';
114 $lib_cflag='/Zl' if (!$shlib); # remove /DEFAULTLIBs from static lib 118 $lib_cflag='/Zl' if (!$shlib); # remove /DEFAULTLIBs from static lib
115 $opt_cflags=$f.' /Ox /O2 /Ob2'; 119 $opt_cflags=$f.' /Ox /O2 /Ob2';
116 $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG'; 120 $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG';
@@ -118,22 +122,28 @@ else # Win32
118 } 122 }
119$mlflags=''; 123$mlflags='';
120 124
121$out_def="out32"; $out_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/); 125$out_def ="out32"; $out_def.="dll" if ($shlib);
122$tmp_def="tmp32"; $tmp_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/); 126 $out_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/);
127$tmp_def ="tmp32"; $tmp_def.="dll" if ($shlib);
128 $tmp_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/);
123$inc_def="inc32"; 129$inc_def="inc32";
124 130
125if ($debug) 131if ($debug)
126 { 132 {
127 $cflags=$dbg_cflags.$base_cflags; 133 $cflags=$dbg_cflags.$base_cflags;
128 $lflags.=" /debug";
129 $mlflags.=' /debug';
130 } 134 }
131else 135else
132 { 136 {
133 $cflags=$opt_cflags.$base_cflags; 137 $cflags=$opt_cflags.$base_cflags;
134 } 138 }
135 139
140# generate symbols.pdb unconditionally
141$app_cflag.=" /Zi /Fd$tmp_def/app";
142$lib_cflag.=" /Zi /Fd$tmp_def/lib";
143$lflags.=" /debug";
144
136$obj='.obj'; 145$obj='.obj';
146$asm_suffix='.asm';
137$ofile="/Fo"; 147$ofile="/Fo";
138 148
139# EXE linking stuff 149# EXE linking stuff
@@ -143,26 +153,23 @@ $efile="/out:";
143$exep='.exe'; 153$exep='.exe';
144if ($no_sock) { $ex_libs=''; } 154if ($no_sock) { $ex_libs=''; }
145elsif ($FLAVOR =~ /CE/) { $ex_libs='winsock.lib'; } 155elsif ($FLAVOR =~ /CE/) { $ex_libs='winsock.lib'; }
146else { $ex_libs='wsock32.lib'; } 156else { $ex_libs='ws2_32.lib'; }
147 157
148if ($FLAVOR =~ /CE/) 158if ($FLAVOR =~ /CE/)
149 { 159 {
150 $ex_libs.=' $(WCECOMPAT)/lib/wcecompatex.lib'; 160 $ex_libs.=' $(WCECOMPAT)/lib/wcecompatex.lib' if (defined($ENV{'WCECOMPAT'}));
161 $ex_libs.=' $(PORTSDK_LIBPATH)/portlib.lib' if (defined($ENV{'PORTSDK_LIBPATH'}));
151 $ex_libs.=' /nodefaultlib:oldnames.lib coredll.lib corelibc.lib' if ($ENV{'TARGETCPU'} eq "X86"); 162 $ex_libs.=' /nodefaultlib:oldnames.lib coredll.lib corelibc.lib' if ($ENV{'TARGETCPU'} eq "X86");
152 } 163 }
153else 164else
154 { 165 {
155 $ex_libs.=' gdi32.lib crypt32.lib advapi32.lib user32.lib'; 166 $ex_libs.=' gdi32.lib advapi32.lib crypt32.lib user32.lib';
156 $ex_libs.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/); 167 $ex_libs.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/ and `cl 2>&1` =~ /14\.00\.4[0-9]{4}\./);
168 # WIN32 UNICODE build gets linked with unicows.lib for
169 # backward compatibility with Win9x.
170 $ex_libs="unicows.lib $ex_libs" if ($FLAVOR =~ /WIN32/ and $cflags =~ /\-DUNICODE/);
157 } 171 }
158 172
159# As native NT API is pure UNICODE, our WIN-NT build defaults to UNICODE,
160# but gets linked with unicows.lib to ensure backward compatibility.
161if ($FLAVOR =~ /NT/)
162 {
163 $cflags.=" -DOPENSSL_SYSNAME_WINNT -DUNICODE -D_UNICODE";
164 $ex_libs="unicows.lib $ex_libs";
165 }
166# static library stuff 173# static library stuff
167$mklib='lib /nologo'; 174$mklib='lib /nologo';
168$ranlib=''; 175$ranlib='';
@@ -173,23 +180,30 @@ $lfile='/out:';
173 180
174$shlib_ex_obj=""; 181$shlib_ex_obj="";
175$app_ex_obj="setargv.obj" if ($FLAVOR !~ /CE/); 182$app_ex_obj="setargv.obj" if ($FLAVOR !~ /CE/);
176if ($nasm) { 183if ($FLAVOR =~ /WIN64A/) {
184 if (`nasm -v 2>NUL` =~ /NASM version ([0-9]+\.[0-9]+)/ && $1 >= 2.0) {
185 $asm='nasm -f win64 -DNEAR -Ox -g';
186 $afile='-o ';
187 } else {
188 $asm='ml64 /c /Cp /Cx /Zi';
189 $afile='/Fo';
190 }
191} elsif ($FLAVOR =~ /WIN64I/) {
192 $asm='ias -d debug';
193 $afile="-o ";
194} elsif ($nasm) {
177 my $ver=`nasm -v 2>NUL`; 195 my $ver=`nasm -v 2>NUL`;
178 my $vew=`nasmw -v 2>NUL`; 196 my $vew=`nasmw -v 2>NUL`;
179 # pick newest version 197 # pick newest version
180 $asm=($ver gt $vew?"nasm":"nasmw")." -f win32"; 198 $asm=($ver gt $vew?"nasm":"nasmw")." -f win32";
199 $asmtype="win32n";
181 $afile='-o '; 200 $afile='-o ';
182} elsif ($ml64) {
183 $asm='ml64 /c /Cp /Cx';
184 $asm.=' /Zi' if $debug;
185 $afile='/Fo';
186} else { 201} else {
187 $asm='ml /nologo /Cp /coff /c /Cx'; 202 $asm='ml /nologo /Cp /coff /c /Cx /Zi';
188 $asm.=" /Zi" if $debug;
189 $afile='/Fo'; 203 $afile='/Fo';
204 $asmtype="win32";
190} 205}
191 206
192$aes_asm_obj='';
193$bn_asm_obj=''; 207$bn_asm_obj='';
194$bn_asm_src=''; 208$bn_asm_src='';
195$des_enc_obj=''; 209$des_enc_obj='';
@@ -198,56 +212,26 @@ $bf_enc_obj='';
198$bf_enc_src=''; 212$bf_enc_src='';
199 213
200if (!$no_asm) 214if (!$no_asm)
201 {
202 if ($FLAVOR =~ "WIN32")
203 {
204 $aes_asm_obj='crypto\aes\asm\a_win32.obj';
205 $aes_asm_src='crypto\aes\asm\a_win32.asm';
206 $bn_asm_obj='crypto\bn\asm\bn_win32.obj crypto\bn\asm\mt_win32.obj';
207 $bn_asm_src='crypto\bn\asm\bn_win32.asm crypto\bn\asm\mt_win32.asm';
208 $bnco_asm_obj='crypto\bn\asm\co_win32.obj';
209 $bnco_asm_src='crypto\bn\asm\co_win32.asm';
210 $des_enc_obj='crypto\des\asm\d_win32.obj crypto\des\asm\y_win32.obj';
211 $des_enc_src='crypto\des\asm\d_win32.asm crypto\des\asm\y_win32.asm';
212 $bf_enc_obj='crypto\bf\asm\b_win32.obj';
213 $bf_enc_src='crypto\bf\asm\b_win32.asm';
214 $cast_enc_obj='crypto\cast\asm\c_win32.obj';
215 $cast_enc_src='crypto\cast\asm\c_win32.asm';
216 $rc4_enc_obj='crypto\rc4\asm\r4_win32.obj';
217 $rc4_enc_src='crypto\rc4\asm\r4_win32.asm';
218 $rc5_enc_obj='crypto\rc5\asm\r5_win32.obj';
219 $rc5_enc_src='crypto\rc5\asm\r5_win32.asm';
220 $md5_asm_obj='crypto\md5\asm\m5_win32.obj';
221 $md5_asm_src='crypto\md5\asm\m5_win32.asm';
222 $sha1_asm_obj='crypto\sha\asm\s1_win32.obj crypto\sha\asm\sha512-sse2.obj';
223 $sha1_asm_src='crypto\sha\asm\s1_win32.asm crypto\sha\asm\sha512-sse2.asm';
224 $rmd160_asm_obj='crypto\ripemd\asm\rm_win32.obj';
225 $rmd160_asm_src='crypto\ripemd\asm\rm_win32.asm';
226 $cpuid_asm_obj='crypto\cpu_win32.obj';
227 $cpuid_asm_src='crypto\cpu_win32.asm';
228 $cflags.=" -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DAES_ASM -DBN_ASM -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_BN_ASM_MONT -DMD5_ASM -DSHA1_ASM -DRMD160_ASM";
229 }
230 elsif ($FLAVOR =~ "WIN64A")
231 { 215 {
232 $aes_asm_obj='$(OBJ_D)\aes-x86_64.obj'; 216 win32_import_asm($mf_bn_asm, "bn", \$bn_asm_obj, \$bn_asm_src);
233 $aes_asm_src='crypto\aes\asm\aes-x86_64.asm'; 217 win32_import_asm($mf_aes_asm, "aes", \$aes_asm_obj, \$aes_asm_src);
234 $bn_asm_obj='$(OBJ_D)\x86_64-mont.obj $(OBJ_D)\bn_asm.obj'; 218 win32_import_asm($mf_des_asm, "des", \$des_enc_obj, \$des_enc_src);
235 $bn_asm_src='crypto\bn\asm\x86_64-mont.asm'; 219 win32_import_asm($mf_bf_asm, "bf", \$bf_enc_obj, \$bf_enc_src);
236 $sha1_asm_obj='$(OBJ_D)\sha1-x86_64.obj $(OBJ_D)\sha256-x86_64.obj $(OBJ_D)\sha512-x86_64.obj'; 220 win32_import_asm($mf_cast_asm, "cast", \$cast_enc_obj, \$cast_enc_src);
237 $sha1_asm_src='crypto\sha\asm\sha1-x86_64.asm crypto\sha\asm\sha256-x86_64.asm crypto\sha\asm\sha512-x86_64.asm'; 221 win32_import_asm($mf_rc4_asm, "rc4", \$rc4_enc_obj, \$rc4_enc_src);
238 $cpuid_asm_obj='$(OBJ_D)\cpuid-x86_64.obj'; 222 win32_import_asm($mf_rc5_asm, "rc5", \$rc5_enc_obj, \$rc5_enc_src);
239 $cpuid_asm_src='crypto\cpuid-x86_64.asm'; 223 win32_import_asm($mf_md5_asm, "md5", \$md5_asm_obj, \$md5_asm_src);
240 $cflags.=" -DOPENSSL_CPUID_OBJ -DAES_ASM -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM"; 224 win32_import_asm($mf_sha_asm, "sha", \$sha1_asm_obj, \$sha1_asm_src);
225 win32_import_asm($mf_rmd_asm, "ripemd", \$rmd160_asm_obj, \$rmd160_asm_src);
226 win32_import_asm($mf_wp_asm, "whrlpool", \$whirlpool_asm_obj, \$whirlpool_asm_src);
227 win32_import_asm($mf_cpuid_asm, "", \$cpuid_asm_obj, \$cpuid_asm_src);
228 $perl_asm = 1;
241 } 229 }
242 }
243 230
244if ($shlib && $FLAVOR !~ /CE/) 231if ($shlib && $FLAVOR !~ /CE/)
245 { 232 {
246 $mlflags.=" $lflags /dll"; 233 $mlflags.=" $lflags /dll";
247# $cflags =~ s| /MD| /MT|; 234 $lib_cflag.=" -D_WINDLL";
248 $lib_cflag=" -D_WINDLL";
249 $out_def="out32dll";
250 $tmp_def="tmp32dll";
251 # 235 #
252 # Engage Applink... 236 # Engage Applink...
253 # 237 #
@@ -267,8 +251,8 @@ $(INCO_D)\applink.c: ms\applink.c
267EXHEADER= $(EXHEADER) $(INCO_D)\applink.c 251EXHEADER= $(EXHEADER) $(INCO_D)\applink.c
268 252
269LIBS_DEP=$(LIBS_DEP) $(OBJ_D)\applink.obj 253LIBS_DEP=$(LIBS_DEP) $(OBJ_D)\applink.obj
254CRYPTOOBJ=$(OBJ_D)\uplink.obj $(CRYPTOOBJ)
270___ 255___
271$banner .= "CRYPTOOBJ=\$(OBJ_D)\\uplink.obj \$(CRYPTOOBJ)\n";
272 $banner.=<<'___' if ($FLAVOR =~ /WIN64/); 256 $banner.=<<'___' if ($FLAVOR =~ /WIN64/);
273CRYPTOOBJ=ms\uptable.obj $(CRYPTOOBJ) 257CRYPTOOBJ=ms\uptable.obj $(CRYPTOOBJ)
274___ 258___
@@ -276,120 +260,35 @@ ___
276elsif ($shlib && $FLAVOR =~ /CE/) 260elsif ($shlib && $FLAVOR =~ /CE/)
277 { 261 {
278 $mlflags.=" $lflags /dll"; 262 $mlflags.=" $lflags /dll";
279 $lib_cflag=" -D_WINDLL -D_DLL"; 263 $lflags.=' /entry:mainCRTstartup' if(defined($ENV{'PORTSDK_LIBPATH'}));
280 $out_def='out32dll_$(TARGETCPU)'; 264 $lib_cflag.=" -D_WINDLL -D_DLL";
281 $tmp_def='tmp32dll_$(TARGETCPU)';
282 } 265 }
283 266
284$cflags.=" /Fd$out_def";
285
286sub do_lib_rule 267sub do_lib_rule
287 { 268 {
288 my($objs,$target,$name,$shlib,$ign,$base_addr) = @_; 269 local($objs,$target,$name,$shlib)=@_;
289 local($ret); 270 local($ret);
290 271
291 $taget =~ s/\//$o/g if $o ne '/'; 272 $taget =~ s/\//$o/g if $o ne '/';
292 my $base_arg; 273 if ($name ne "")
293 if ($base_addr ne "")
294 {
295 $base_arg= " /base:$base_addr";
296 }
297 else
298 {
299 $base_arg = "";
300 }
301 if ($target =~ /O_CRYPTO/ && $fipsdso)
302 {
303 $name = "/def:ms/libeayfips.def";
304 }
305 elsif ($name ne "")
306 { 274 {
307 $name =~ tr/a-z/A-Z/; 275 $name =~ tr/a-z/A-Z/;
308 $name = "/def:ms/${name}.def"; 276 $name = "/def:ms/${name}.def";
309 } 277 }
310 278
311# $target="\$(LIB_D)$o$target"; 279# $target="\$(LIB_D)$o$target";
312# $ret.="$target: $objs\n"; 280 $ret.="$target: $objs\n";
313 if (!$shlib) 281 if (!$shlib)
314 { 282 {
315# $ret.="\t\$(RM) \$(O_$Name)\n"; 283# $ret.="\t\$(RM) \$(O_$Name)\n";
316 $ex =' '; 284 $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs\n<<\n";
317 $ret.="$target: $objs\n";
318 $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n";
319 } 285 }
320 else 286 else
321 { 287 {
322 my $ex = ""; 288 local($ex)=($target =~ /O_CRYPTO/)?'':' $(L_CRYPTO)';
323 if ($target =~ /O_SSL/)
324 {
325 $ex .= " \$(L_CRYPTO)";
326 #$ex .= " \$(L_FIPS)" if $fipsdso;
327 }
328 my $fipstarget;
329 if ($fipsdso)
330 {
331 $fipstarget = "O_FIPS";
332 }
333 else
334 {
335 $fipstarget = "O_CRYPTO";
336 }
337
338
339 if ($name eq "")
340 {
341 $ex.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/);
342 if ($target =~ /capi/)
343 {
344 $ex.=' crypt32.lib advapi32.lib';
345 }
346 }
347 elsif ($FLAVOR =~ /CE/)
348 {
349 $ex.=' winsock.lib $(WCECOMPAT)/lib/wcecompatex.lib';
350 }
351 else
352 {
353 $ex.=' unicows.lib' if ($FLAVOR =~ /NT/);
354 $ex.=' wsock32.lib gdi32.lib advapi32.lib user32.lib';
355 $ex.=' crypt32.lib';
356 $ex.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/);
357 }
358 $ex.=" $zlib_lib" if $zlib_opt == 1 && $target =~ /O_CRYPTO/; 289 $ex.=" $zlib_lib" if $zlib_opt == 1 && $target =~ /O_CRYPTO/;
359 290 $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target $name @<<\n \$(SHLIB_EX_OBJ) $objs $ex \$(EX_LIBS)\n<<\n";
360 if ($fips && $target =~ /$fipstarget/) 291 $ret.="\tIF EXIST \$@.manifest mt -nologo -manifest \$@.manifest -outputresource:\$@;2\n\n";
361 {
362 $ex.= $mwex unless $fipscanisterbuild;
363 $ret.="$target: $objs \$(PREMAIN_DSO_EXE)";
364 if ($fipsdso)
365 {
366 $ex.=" \$(OBJ_D)\\\$(LIBFIPS).res";
367 $ret.=" \$(OBJ_D)\\\$(LIBFIPS).res";
368 $ret.=" ms/\$(LIBFIPS).def";
369 }
370 $ret.="\n\tSET FIPS_LINK=\$(LINK)\n";
371 $ret.="\tSET FIPS_CC=\$(CC)\n";
372 $ret.="\tSET FIPS_CC_ARGS=/Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\n";
373 $ret.="\tSET PREMAIN_DSO_EXE=\$(PREMAIN_DSO_EXE)\n";
374 $ret.="\tSET FIPS_SHA1_EXE=\$(FIPS_SHA1_EXE)\n";
375 $ret.="\tSET FIPS_TARGET=$target\n";
376 $ret.="\tSET FIPSLIB_D=\$(FIPSLIB_D)\n";
377 $ret.="\t\$(FIPSLINK) \$(MLFLAGS) /map $base_arg $efile$target ";
378 $ret.="$name @<<\n \$(SHLIB_EX_OBJ) $objs ";
379 $ret.="\$(OBJ_D)${o}fips_premain.obj $ex\n<<\n";
380 }
381 else
382 {
383 $ret.="$target: $objs";
384 if ($target =~ /O_CRYPTO/ && $fipsdso)
385 {
386 $ret .= " \$(O_FIPS)";
387 $ex .= " \$(L_FIPS)";
388 }
389 $ret.="\n\t\$(LINK) \$(MLFLAGS) $efile$target $name @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
390 }
391
392 $ret.="\tIF EXIST \$@.manifest mt -nologo -manifest \$@.manifest -outputresource:\$@;2\n\n";
393 } 292 }
394 $ret.="\n"; 293 $ret.="\n";
395 return($ret); 294 return($ret);
@@ -397,64 +296,43 @@ sub do_lib_rule
397 296
398sub do_link_rule 297sub do_link_rule
399 { 298 {
400 my($target,$files,$dep_libs,$libs,$standalone)=@_; 299 local($target,$files,$dep_libs,$libs)=@_;
401 local($ret,$_); 300 local($ret,$_);
301
402 $file =~ s/\//$o/g if $o ne '/'; 302 $file =~ s/\//$o/g if $o ne '/';
403 $n=&bname($targer); 303 $n=&bname($targer);
404 $ret.="$target: $files $dep_libs\n"; 304 $ret.="$target: $files $dep_libs\n";
405 if ($standalone == 1) 305 $ret.="\t\$(LINK) \$(LFLAGS) $efile$target @<<\n";
406 { 306 $ret.=" \$(APP_EX_OBJ) $files $libs\n<<\n";
407 $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n\t"; 307 $ret.="\tIF EXIST \$@.manifest mt -nologo -manifest \$@.manifest -outputresource:\$@;1\n\n";
408 $ret.= "\$(EX_LIBS) " if ($files =~ /O_FIPSCANISTER/ && !$fipscanisterbuild); 308 return($ret);
409 $ret.="$files $libs\n<<\n"; 309 }
410 } 310
411 elsif ($standalone == 2) 311sub win32_import_asm
312 {
313 my ($mf_var, $asm_name, $oref, $sref) = @_;
314 my $asm_dir;
315 if ($asm_name eq "")
412 { 316 {
413 $ret.="\tSET FIPS_LINK=\$(LINK)\n"; 317 $asm_dir = "crypto\\";
414 $ret.="\tSET FIPS_CC=\$(CC)\n";
415 $ret.="\tSET FIPS_CC_ARGS=/Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\n";
416 $ret.="\tSET PREMAIN_DSO_EXE=\n";
417 $ret.="\tSET FIPS_TARGET=$target\n";
418 $ret.="\tSET FIPS_SHA1_EXE=\$(FIPS_SHA1_EXE)\n";
419 $ret.="\tSET FIPSLIB_D=\$(FIPSLIB_D)\n";
420 $ret.="\t\$(FIPSLINK) \$(LFLAGS) /map $efile$target @<<\n";
421 $ret.="\t\$(APP_EX_OBJ) $files \$(OBJ_D)${o}fips_premain.obj $libs\n<<\n";
422 } 318 }
423 else 319 else
424 { 320 {
425 $ret.="\t\$(LINK) \$(LFLAGS) $efile$target @<<\n"; 321 $asm_dir = "crypto\\$asm_name\\asm\\";
426 $ret.="\t\$(APP_EX_OBJ) $files $libs\n<<\n";
427 } 322 }
428 $ret.="\tIF EXIST \$@.manifest mt -nologo -manifest \$@.manifest -outputresource:\$@;1\n\n";
429 return($ret);
430 }
431 323
432sub do_rlink_rule 324 $$oref = "";
433 { 325 $mf_var =~ s/\.o$/.obj/g;
434 local($target,$rl_start, $rl_mid, $rl_end,$dep_libs,$libs)=@_;
435 local($ret,$_);
436 my $files = "$rl_start $rl_mid $rl_end";
437 326
438 $file =~ s/\//$o/g if $o ne '/'; 327 foreach (split(/ /, $mf_var))
439 $n=&bname($targer); 328 {
440 $ret.="$target: $files $dep_libs \$(FIPS_SHA1_EXE)\n"; 329 $$oref .= $asm_dir . $_ . " ";
441 $ret.="\t\$(PERL) ms\\segrenam.pl \$\$a $rl_start\n"; 330 }
442 $ret.="\t\$(PERL) ms\\segrenam.pl \$\$b $rl_mid\n"; 331 $$oref =~ s/ $//;
443 $ret.="\t\$(PERL) ms\\segrenam.pl \$\$c $rl_end\n"; 332 $$sref = $$oref;
444 $ret.="\t\$(MKLIB) $lfile$target @<<\n\t$files\n<<\n"; 333 $$sref =~ s/\.obj/.asm/g;
445 $ret.="\t\$(FIPS_SHA1_EXE) $target > ${target}.sha1\n";
446 $ret.="\t\$(PERL) util${o}copy.pl -stripcr fips${o}fips_premain.c \$(LIB_D)${o}fips_premain.c\n";
447 $ret.="\t\$(CP) fips${o}fips_premain.c.sha1 \$(LIB_D)${o}fips_premain.c.sha1\n";
448 $ret.="\n";
449 return($ret);
450 }
451 334
452sub do_sdef_rule
453 {
454 my $ret = "ms/\$(LIBFIPS).def: \$(O_FIPSCANISTER)\n";
455 $ret.="\t\$(PERL) util/mksdef.pl \$(MLFLAGS) /out:dummy.dll /def:ms/libeay32.def @<<\n \$(O_FIPSCANISTER)\n<<\n";
456 $ret.="\n";
457 return $ret;
458 } 335 }
459 336
337
4601; 3381;
diff --git a/src/lib/libcrypto/util/pod2man.pl b/src/lib/libcrypto/util/pod2man.pl
index 546d1ec186..025d914f2e 100644
--- a/src/lib/libcrypto/util/pod2man.pl
+++ b/src/lib/libcrypto/util/pod2man.pl
@@ -425,7 +425,7 @@ if ($name ne 'something') {
425 } 425 }
426 next if /^=cut\b/; # DB_File and Net::Ping have =cut before NAME 426 next if /^=cut\b/; # DB_File and Net::Ping have =cut before NAME
427 next if /^=pod\b/; # It is OK to have =pod before NAME 427 next if /^=pod\b/; # It is OK to have =pod before NAME
428 next if /^=for\s+comment\b/; # It is OK to have =for comment before NAME 428 next if /^=(for|begin|end)\s+comment\b/; # It is OK to have =for =begin or =end comment before NAME
429 die "$0: Invalid man page - 1st pod line is not NAME in $ARGV[0]\n" unless $lax; 429 die "$0: Invalid man page - 1st pod line is not NAME in $ARGV[0]\n" unless $lax;
430 } 430 }
431 die "$0: Invalid man page - no documentation in $ARGV[0]\n" unless $lax; 431 die "$0: Invalid man page - no documentation in $ARGV[0]\n" unless $lax;
diff --git a/src/lib/libcrypto/util/point.sh b/src/lib/libcrypto/util/point.sh
index 4790e08f8a..da39899cb1 100644
--- a/src/lib/libcrypto/util/point.sh
+++ b/src/lib/libcrypto/util/point.sh
@@ -1,7 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2 2
3rm -f "$2" 3rm -f "$2"
4if test "$OSTYPE" = msdosdjgpp; then 4if test "$OSTYPE" = msdosdjgpp || test "x$PLATFORM" = xmingw ; then
5 cp "$1" "$2" 5 cp "$1" "$2"
6else 6else
7 ln -s "$1" "$2" 7 ln -s "$1" "$2"
diff --git a/src/lib/libcrypto/util/selftest.pl b/src/lib/libcrypto/util/selftest.pl
index 4778c5ab01..7b32e9f4ff 100644
--- a/src/lib/libcrypto/util/selftest.pl
+++ b/src/lib/libcrypto/util/selftest.pl
@@ -78,7 +78,7 @@ print OUT "\n";
78 78
79print "Checking compiler...\n"; 79print "Checking compiler...\n";
80if (open(TEST,">cctest.c")) { 80if (open(TEST,">cctest.c")) {
81 print TEST "#include <stdio.h>\n#include <errno.h>\nmain(){printf(\"Hello world\\n\");}\n"; 81 print TEST "#include <stdio.h>\n#include <stdlib.h>\n#include <errno.h>\nmain(){printf(\"Hello world\\n\");}\n";
82 close(TEST); 82 close(TEST);
83 system("$cc -o cctest cctest.c"); 83 system("$cc -o cctest cctest.c");
84 if (`./cctest` !~ /Hello world/) { 84 if (`./cctest` !~ /Hello world/) {
@@ -96,7 +96,7 @@ if (open(TEST,">cctest.c")) {
96 print OUT "Can't create cctest.c\n"; 96 print OUT "Can't create cctest.c\n";
97} 97}
98if (open(TEST,">cctest.c")) { 98if (open(TEST,">cctest.c")) {
99 print TEST "#include <openssl/opensslv.h>\nmain(){printf(OPENSSL_VERSION_TEXT);}\n"; 99 print TEST "#include <stdio.h>\n#include <stdlib.h>\n#include <openssl/opensslv.h>\nmain(){printf(OPENSSL_VERSION_TEXT);}\n";
100 close(TEST); 100 close(TEST);
101 system("$cc -o cctest -Iinclude cctest.c"); 101 system("$cc -o cctest -Iinclude cctest.c");
102 $cctest = `./cctest`; 102 $cctest = `./cctest`;
diff --git a/src/lib/libcrypto/util/shlib_wrap.sh b/src/lib/libcrypto/util/shlib_wrap.sh
index a2f62d696f..9416d593d2 100755
--- a/src/lib/libcrypto/util/shlib_wrap.sh
+++ b/src/lib/libcrypto/util/shlib_wrap.sh
@@ -80,7 +80,7 @@ if [ -f "$LIBCRYPTOSO" -a -z "$preload_var" ]; then
80 # it into a script makes it possible to do so on multi-ABI 80 # it into a script makes it possible to do so on multi-ABI
81 # platforms. 81 # platforms.
82 case "$SYSNAME" in 82 case "$SYSNAME" in
83 *BSD) LD_PRELOAD="$LIBCRYPTOSO:$LIBSSLSO" ;; # *BSD 83 *BSD|QNX) LD_PRELOAD="$LIBCRYPTOSO:$LIBSSLSO" ;; # *BSD, QNX
84 *) LD_PRELOAD="$LIBCRYPTOSO $LIBSSLSO" ;; # SunOS, Linux, ELF HP-UX 84 *) LD_PRELOAD="$LIBCRYPTOSO $LIBSSLSO" ;; # SunOS, Linux, ELF HP-UX
85 esac 85 esac
86 _RLD_LIST="$LIBCRYPTOSO:$LIBSSLSO:DEFAULT" # Tru64, o32 IRIX 86 _RLD_LIST="$LIBCRYPTOSO:$LIBSSLSO:DEFAULT" # Tru64, o32 IRIX
@@ -88,4 +88,6 @@ if [ -f "$LIBCRYPTOSO" -a -z "$preload_var" ]; then
88 export LD_PRELOAD _RLD_LIST DYLD_INSERT_LIBRARIES 88 export LD_PRELOAD _RLD_LIST DYLD_INSERT_LIBRARIES
89fi 89fi
90 90
91exec "$@" 91cmd="$1${EXE_EXT}"
92shift
93exec "$cmd" "$@"
diff --git a/src/lib/libcrypto/util/ssleay.num b/src/lib/libcrypto/util/ssleay.num
index 2055cc1597..15a58e7b13 100644
--- a/src/lib/libcrypto/util/ssleay.num
+++ b/src/lib/libcrypto/util/ssleay.num
@@ -98,9 +98,9 @@ SSLeay_add_ssl_algorithms 109 NOEXIST::FUNCTION:
98SSLv23_client_method 110 EXIST::FUNCTION:RSA 98SSLv23_client_method 110 EXIST::FUNCTION:RSA
99SSLv23_method 111 EXIST::FUNCTION:RSA 99SSLv23_method 111 EXIST::FUNCTION:RSA
100SSLv23_server_method 112 EXIST::FUNCTION:RSA 100SSLv23_server_method 112 EXIST::FUNCTION:RSA
101SSLv2_client_method 113 EXIST::FUNCTION:RSA 101SSLv2_client_method 113 EXIST::FUNCTION:RSA,SSL2
102SSLv2_method 114 EXIST::FUNCTION:RSA 102SSLv2_method 114 EXIST::FUNCTION:RSA,SSL2
103SSLv2_server_method 115 EXIST::FUNCTION:RSA 103SSLv2_server_method 115 EXIST::FUNCTION:RSA,SSL2
104SSLv3_client_method 116 EXIST::FUNCTION: 104SSLv3_client_method 116 EXIST::FUNCTION:
105SSLv3_method 117 EXIST::FUNCTION: 105SSLv3_method 117 EXIST::FUNCTION:
106SSLv3_server_method 118 EXIST::FUNCTION: 106SSLv3_server_method 118 EXIST::FUNCTION:
@@ -117,8 +117,8 @@ SSL_CIPHER_get_bits 128 EXIST::FUNCTION:
117SSL_CIPHER_get_version 129 EXIST::FUNCTION: 117SSL_CIPHER_get_version 129 EXIST::FUNCTION:
118SSL_CIPHER_get_name 130 EXIST::FUNCTION: 118SSL_CIPHER_get_name 130 EXIST::FUNCTION:
119BIO_ssl_shutdown 131 EXIST::FUNCTION:BIO 119BIO_ssl_shutdown 131 EXIST::FUNCTION:BIO
120SSL_SESSION_cmp 132 EXIST::FUNCTION: 120SSL_SESSION_cmp 132 NOEXIST::FUNCTION:
121SSL_SESSION_hash 133 EXIST::FUNCTION: 121SSL_SESSION_hash 133 NOEXIST::FUNCTION:
122SSL_SESSION_get_time 134 EXIST::FUNCTION: 122SSL_SESSION_get_time 134 EXIST::FUNCTION:
123SSL_SESSION_set_time 135 EXIST::FUNCTION: 123SSL_SESSION_set_time 135 EXIST::FUNCTION:
124SSL_SESSION_get_timeout 136 EXIST::FUNCTION: 124SSL_SESSION_get_timeout 136 EXIST::FUNCTION:
@@ -242,3 +242,20 @@ SSL_set_SSL_CTX 290 EXIST::FUNCTION:
242SSL_get_servername 291 EXIST::FUNCTION:TLSEXT 242SSL_get_servername 291 EXIST::FUNCTION:TLSEXT
243SSL_get_servername_type 292 EXIST::FUNCTION:TLSEXT 243SSL_get_servername_type 292 EXIST::FUNCTION:TLSEXT
244SSL_CTX_set_client_cert_engine 293 EXIST::FUNCTION:ENGINE 244SSL_CTX_set_client_cert_engine 293 EXIST::FUNCTION:ENGINE
245SSL_CTX_use_psk_identity_hint 294 EXIST::FUNCTION:PSK
246SSL_CTX_set_psk_client_callback 295 EXIST::FUNCTION:PSK
247PEM_write_bio_SSL_SESSION 296 EXIST::FUNCTION:
248SSL_get_psk_identity_hint 297 EXIST::FUNCTION:PSK
249SSL_set_psk_server_callback 298 EXIST::FUNCTION:PSK
250SSL_use_psk_identity_hint 299 EXIST::FUNCTION:PSK
251SSL_set_psk_client_callback 300 EXIST::FUNCTION:PSK
252PEM_read_SSL_SESSION 301 EXIST:!WIN16:FUNCTION:
253PEM_read_bio_SSL_SESSION 302 EXIST::FUNCTION:
254SSL_CTX_set_psk_server_callback 303 EXIST::FUNCTION:PSK
255SSL_get_psk_identity 304 EXIST::FUNCTION:PSK
256PEM_write_SSL_SESSION 305 EXIST:!WIN16:FUNCTION:
257SSL_set_session_ticket_ext 306 EXIST::FUNCTION:
258SSL_set_session_secret_cb 307 EXIST::FUNCTION:
259SSL_set_session_ticket_ext_cb 308 EXIST::FUNCTION:
260SSL_set1_param 309 EXIST::FUNCTION:
261SSL_CTX_set1_param 310 EXIST::FUNCTION:
diff --git a/src/lib/libcrypto/x509/Makefile b/src/lib/libcrypto/x509/Makefile
index 464752b159..72c82278f4 100644
--- a/src/lib/libcrypto/x509/Makefile
+++ b/src/lib/libcrypto/x509/Makefile
@@ -43,12 +43,12 @@ top:
43all: lib 43all: lib
44 44
45lib: $(LIBOBJ) 45lib: $(LIBOBJ)
46 $(ARX) $(LIB) $(LIBOBJ) 46 $(AR) $(LIB) $(LIBOBJ)
47 $(RANLIB) $(LIB) || echo Never mind. 47 $(RANLIB) $(LIB) || echo Never mind.
48 @touch lib 48 @touch lib
49 49
50files: 50files:
51 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO 51 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
52 52
53links: 53links:
54 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER) 54 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
@@ -89,37 +89,35 @@ by_dir.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
89by_dir.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 89by_dir.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
90by_dir.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 90by_dir.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
91by_dir.o: ../../include/openssl/err.h ../../include/openssl/evp.h 91by_dir.o: ../../include/openssl/err.h ../../include/openssl/evp.h
92by_dir.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 92by_dir.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
93by_dir.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 93by_dir.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
94by_dir.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 94by_dir.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
95by_dir.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 95by_dir.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
96by_dir.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 96by_dir.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
97by_dir.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 97by_dir.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
98by_dir.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 98by_dir.o: ../../include/openssl/x509_vfy.h ../cryptlib.h by_dir.c
99by_dir.o: ../cryptlib.h by_dir.c
100by_file.o: ../../e_os.h ../../include/openssl/asn1.h 99by_file.o: ../../e_os.h ../../include/openssl/asn1.h
101by_file.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 100by_file.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
102by_file.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 101by_file.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
103by_file.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 102by_file.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
104by_file.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 103by_file.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
105by_file.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 104by_file.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
106by_file.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 105by_file.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
107by_file.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 106by_file.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
108by_file.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 107by_file.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
109by_file.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 108by_file.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
110by_file.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 109by_file.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
111by_file.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 110by_file.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
112by_file.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 111by_file.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
113by_file.o: ../../include/openssl/x509_vfy.h ../cryptlib.h by_file.c 112by_file.o: ../cryptlib.h by_file.c
114x509_att.o: ../../e_os.h ../../include/openssl/asn1.h 113x509_att.o: ../../e_os.h ../../include/openssl/asn1.h
115x509_att.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 114x509_att.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
116x509_att.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 115x509_att.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
117x509_att.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 116x509_att.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
118x509_att.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 117x509_att.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
119x509_att.o: ../../include/openssl/err.h ../../include/openssl/evp.h 118x509_att.o: ../../include/openssl/err.h ../../include/openssl/evp.h
120x509_att.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 119x509_att.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
121x509_att.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 120x509_att.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
122x509_att.o: ../../include/openssl/opensslconf.h
123x509_att.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 121x509_att.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
124x509_att.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 122x509_att.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
125x509_att.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 123x509_att.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -132,9 +130,8 @@ x509_cmp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
132x509_cmp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 130x509_cmp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
133x509_cmp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 131x509_cmp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
134x509_cmp.o: ../../include/openssl/err.h ../../include/openssl/evp.h 132x509_cmp.o: ../../include/openssl/err.h ../../include/openssl/evp.h
135x509_cmp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 133x509_cmp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
136x509_cmp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 134x509_cmp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
137x509_cmp.o: ../../include/openssl/opensslconf.h
138x509_cmp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 135x509_cmp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
139x509_cmp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 136x509_cmp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
140x509_cmp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 137x509_cmp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -146,22 +143,22 @@ x509_d2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
146x509_d2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 143x509_d2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
147x509_d2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 144x509_d2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
148x509_d2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 145x509_d2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
149x509_d2.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 146x509_d2.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
150x509_d2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 147x509_d2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
151x509_d2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 148x509_d2.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
152x509_d2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 149x509_d2.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
153x509_d2.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 150x509_d2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
154x509_d2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 151x509_d2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
155x509_d2.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 152x509_d2.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
156x509_d2.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x509_d2.c 153x509_d2.o: ../cryptlib.h x509_d2.c
157x509_def.o: ../../e_os.h ../../include/openssl/asn1.h 154x509_def.o: ../../e_os.h ../../include/openssl/asn1.h
158x509_def.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 155x509_def.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
159x509_def.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 156x509_def.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
160x509_def.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 157x509_def.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
161x509_def.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 158x509_def.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
162x509_def.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 159x509_def.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
163x509_def.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 160x509_def.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
164x509_def.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 161x509_def.o: ../../include/openssl/opensslconf.h
165x509_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 162x509_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
166x509_def.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 163x509_def.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
167x509_def.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 164x509_def.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -172,9 +169,8 @@ x509_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
172x509_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 169x509_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
173x509_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 170x509_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
174x509_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h 171x509_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h
175x509_err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 172x509_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
176x509_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 173x509_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
177x509_err.o: ../../include/openssl/opensslconf.h
178x509_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 174x509_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
179x509_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 175x509_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
180x509_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 176x509_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -186,9 +182,8 @@ x509_ext.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
186x509_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 182x509_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
187x509_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 183x509_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
188x509_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h 184x509_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h
189x509_ext.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 185x509_ext.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
190x509_ext.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 186x509_ext.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
191x509_ext.o: ../../include/openssl/opensslconf.h
192x509_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 187x509_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
193x509_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 188x509_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
194x509_ext.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 189x509_ext.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -201,22 +196,22 @@ x509_lu.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
201x509_lu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 196x509_lu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
202x509_lu.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 197x509_lu.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
203x509_lu.o: ../../include/openssl/err.h ../../include/openssl/evp.h 198x509_lu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
204x509_lu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 199x509_lu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
205x509_lu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 200x509_lu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
206x509_lu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 201x509_lu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
207x509_lu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 202x509_lu.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
208x509_lu.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 203x509_lu.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
209x509_lu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 204x509_lu.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
210x509_lu.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 205x509_lu.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
211x509_lu.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_lu.c 206x509_lu.o: ../cryptlib.h x509_lu.c
212x509_obj.o: ../../e_os.h ../../include/openssl/asn1.h 207x509_obj.o: ../../e_os.h ../../include/openssl/asn1.h
213x509_obj.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 208x509_obj.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
214x509_obj.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 209x509_obj.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
215x509_obj.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 210x509_obj.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
216x509_obj.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 211x509_obj.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
217x509_obj.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 212x509_obj.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
218x509_obj.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 213x509_obj.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
219x509_obj.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 214x509_obj.o: ../../include/openssl/opensslconf.h
220x509_obj.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 215x509_obj.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
221x509_obj.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 216x509_obj.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
222x509_obj.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 217x509_obj.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -228,21 +223,20 @@ x509_r2x.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
228x509_r2x.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 223x509_r2x.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
229x509_r2x.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 224x509_r2x.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
230x509_r2x.o: ../../include/openssl/err.h ../../include/openssl/evp.h 225x509_r2x.o: ../../include/openssl/err.h ../../include/openssl/evp.h
231x509_r2x.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 226x509_r2x.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
232x509_r2x.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 227x509_r2x.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
233x509_r2x.o: ../../include/openssl/opensslconf.h
234x509_r2x.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 228x509_r2x.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
235x509_r2x.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 229x509_r2x.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
236x509_r2x.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 230x509_r2x.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
237x509_r2x.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 231x509_r2x.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
238x509_r2x.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x509_r2x.c 232x509_r2x.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x509_r2x.c
239x509_req.o: ../../e_os.h ../../include/openssl/asn1.h 233x509_req.o: ../../e_os.h ../../include/openssl/asn1.h
240x509_req.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 234x509_req.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
241x509_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 235x509_req.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
242x509_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 236x509_req.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
243x509_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 237x509_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
244x509_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h 238x509_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
245x509_req.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 239x509_req.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
246x509_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 240x509_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
247x509_req.o: ../../include/openssl/opensslconf.h 241x509_req.o: ../../include/openssl/opensslconf.h
248x509_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 242x509_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -256,9 +250,9 @@ x509_set.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
256x509_set.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 250x509_set.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
257x509_set.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 251x509_set.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
258x509_set.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 252x509_set.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
259x509_set.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 253x509_set.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
260x509_set.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 254x509_set.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
261x509_set.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 255x509_set.o: ../../include/openssl/opensslconf.h
262x509_set.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 256x509_set.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
263x509_set.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 257x509_set.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
264x509_set.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 258x509_set.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -270,9 +264,8 @@ x509_trs.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
270x509_trs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 264x509_trs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
271x509_trs.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 265x509_trs.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
272x509_trs.o: ../../include/openssl/err.h ../../include/openssl/evp.h 266x509_trs.o: ../../include/openssl/err.h ../../include/openssl/evp.h
273x509_trs.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 267x509_trs.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
274x509_trs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 268x509_trs.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
275x509_trs.o: ../../include/openssl/opensslconf.h
276x509_trs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 269x509_trs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
277x509_trs.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 270x509_trs.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
278x509_trs.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 271x509_trs.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -284,9 +277,9 @@ x509_txt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
284x509_txt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 277x509_txt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
285x509_txt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 278x509_txt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
286x509_txt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 279x509_txt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
287x509_txt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 280x509_txt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
288x509_txt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 281x509_txt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
289x509_txt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 282x509_txt.o: ../../include/openssl/opensslconf.h
290x509_txt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 283x509_txt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
291x509_txt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 284x509_txt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
292x509_txt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 285x509_txt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -298,23 +291,22 @@ x509_v3.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
298x509_v3.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 291x509_v3.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
299x509_v3.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 292x509_v3.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
300x509_v3.o: ../../include/openssl/err.h ../../include/openssl/evp.h 293x509_v3.o: ../../include/openssl/err.h ../../include/openssl/evp.h
301x509_v3.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 294x509_v3.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
302x509_v3.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 295x509_v3.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
303x509_v3.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 296x509_v3.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
304x509_v3.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 297x509_v3.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
305x509_v3.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 298x509_v3.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
306x509_v3.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 299x509_v3.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
307x509_v3.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 300x509_v3.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
308x509_v3.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_v3.c 301x509_v3.o: ../cryptlib.h x509_v3.c
309x509_vfy.o: ../../e_os.h ../../include/openssl/asn1.h 302x509_vfy.o: ../../e_os.h ../../include/openssl/asn1.h
310x509_vfy.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 303x509_vfy.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
311x509_vfy.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 304x509_vfy.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
312x509_vfy.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 305x509_vfy.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
313x509_vfy.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 306x509_vfy.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
314x509_vfy.o: ../../include/openssl/err.h ../../include/openssl/evp.h 307x509_vfy.o: ../../include/openssl/err.h ../../include/openssl/evp.h
315x509_vfy.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 308x509_vfy.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
316x509_vfy.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 309x509_vfy.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
317x509_vfy.o: ../../include/openssl/opensslconf.h
318x509_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 310x509_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
319x509_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 311x509_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
320x509_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 312x509_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -327,9 +319,8 @@ x509_vpm.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
327x509_vpm.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 319x509_vpm.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
328x509_vpm.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 320x509_vpm.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
329x509_vpm.o: ../../include/openssl/err.h ../../include/openssl/evp.h 321x509_vpm.o: ../../include/openssl/err.h ../../include/openssl/evp.h
330x509_vpm.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 322x509_vpm.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
331x509_vpm.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 323x509_vpm.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
332x509_vpm.o: ../../include/openssl/opensslconf.h
333x509_vpm.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 324x509_vpm.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
334x509_vpm.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 325x509_vpm.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
335x509_vpm.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 326x509_vpm.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -341,9 +332,9 @@ x509cset.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
341x509cset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 332x509cset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
342x509cset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 333x509cset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
343x509cset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 334x509cset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
344x509cset.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 335x509cset.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
345x509cset.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 336x509cset.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
346x509cset.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 337x509cset.o: ../../include/openssl/opensslconf.h
347x509cset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 338x509cset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
348x509cset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 339x509cset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
349x509cset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 340x509cset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -354,9 +345,9 @@ x509name.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
354x509name.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 345x509name.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
355x509name.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 346x509name.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
356x509name.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 347x509name.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
357x509name.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 348x509name.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
358x509name.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 349x509name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
359x509name.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 350x509name.o: ../../include/openssl/opensslconf.h
360x509name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 351x509name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
361x509name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 352x509name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
362x509name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 353x509name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -367,9 +358,9 @@ x509rset.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
367x509rset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 358x509rset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
368x509rset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 359x509rset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
369x509rset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 360x509rset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
370x509rset.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 361x509rset.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
371x509rset.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 362x509rset.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
372x509rset.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 363x509rset.o: ../../include/openssl/opensslconf.h
373x509rset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 364x509rset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
374x509rset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 365x509rset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
375x509rset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 366x509rset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -380,9 +371,9 @@ x509spki.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
380x509spki.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 371x509spki.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
381x509spki.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 372x509spki.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
382x509spki.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 373x509spki.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
383x509spki.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 374x509spki.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
384x509spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 375x509spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
385x509spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 376x509spki.o: ../../include/openssl/opensslconf.h
386x509spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 377x509spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
387x509spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 378x509spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
388x509spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 379x509spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -393,9 +384,9 @@ x509type.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
393x509type.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 384x509type.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
394x509type.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 385x509type.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
395x509type.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 386x509type.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
396x509type.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 387x509type.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
397x509type.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 388x509type.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
398x509type.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 389x509type.o: ../../include/openssl/opensslconf.h
399x509type.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 390x509type.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
400x509type.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 391x509type.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
401x509type.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 392x509type.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -406,12 +397,11 @@ x_all.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
406x_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 397x_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
407x_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 398x_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
408x_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 399x_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
409x_all.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 400x_all.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
410x_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 401x_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
411x_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 402x_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
412x_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 403x_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
413x_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 404x_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
414x_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 405x_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
415x_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 406x_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
416x_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 407x_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_all.c
417x_all.o: ../cryptlib.h x_all.c
diff --git a/src/lib/libcrypto/x509v3/Makefile b/src/lib/libcrypto/x509v3/Makefile
index e71dc42f9f..556ef351bf 100644
--- a/src/lib/libcrypto/x509v3/Makefile
+++ b/src/lib/libcrypto/x509v3/Makefile
@@ -43,7 +43,7 @@ top:
43all: lib 43all: lib
44 44
45lib: $(LIBOBJ) 45lib: $(LIBOBJ)
46 $(ARX) $(LIB) $(LIBOBJ) 46 $(AR) $(LIB) $(LIBOBJ)
47 $(RANLIB) $(LIB) || echo Never mind. 47 $(RANLIB) $(LIB) || echo Never mind.
48 @touch lib 48 @touch lib
49 49
@@ -90,8 +90,8 @@ pcy_cache.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
90pcy_cache.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 90pcy_cache.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
91pcy_cache.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 91pcy_cache.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
92pcy_cache.o: ../../include/openssl/err.h ../../include/openssl/evp.h 92pcy_cache.o: ../../include/openssl/err.h ../../include/openssl/evp.h
93pcy_cache.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 93pcy_cache.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
94pcy_cache.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 94pcy_cache.o: ../../include/openssl/objects.h
95pcy_cache.o: ../../include/openssl/opensslconf.h 95pcy_cache.o: ../../include/openssl/opensslconf.h
96pcy_cache.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 96pcy_cache.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
97pcy_cache.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 97pcy_cache.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -105,9 +105,8 @@ pcy_data.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
105pcy_data.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 105pcy_data.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
106pcy_data.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 106pcy_data.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
107pcy_data.o: ../../include/openssl/err.h ../../include/openssl/evp.h 107pcy_data.o: ../../include/openssl/err.h ../../include/openssl/evp.h
108pcy_data.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 108pcy_data.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
109pcy_data.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 109pcy_data.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
110pcy_data.o: ../../include/openssl/opensslconf.h
111pcy_data.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 110pcy_data.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
112pcy_data.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 111pcy_data.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
113pcy_data.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 112pcy_data.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -120,36 +119,35 @@ pcy_lib.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
120pcy_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 119pcy_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
121pcy_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 120pcy_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
122pcy_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 121pcy_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
123pcy_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 122pcy_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
124pcy_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 123pcy_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
125pcy_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 124pcy_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
126pcy_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 125pcy_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
127pcy_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 126pcy_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
128pcy_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 127pcy_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
129pcy_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 128pcy_lib.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
130pcy_lib.o: ../../include/openssl/x509v3.h ../cryptlib.h pcy_int.h pcy_lib.c 129pcy_lib.o: ../cryptlib.h pcy_int.h pcy_lib.c
131pcy_map.o: ../../e_os.h ../../include/openssl/asn1.h 130pcy_map.o: ../../e_os.h ../../include/openssl/asn1.h
132pcy_map.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 131pcy_map.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
133pcy_map.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 132pcy_map.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
134pcy_map.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 133pcy_map.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
135pcy_map.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 134pcy_map.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
136pcy_map.o: ../../include/openssl/err.h ../../include/openssl/evp.h 135pcy_map.o: ../../include/openssl/err.h ../../include/openssl/evp.h
137pcy_map.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 136pcy_map.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
138pcy_map.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 137pcy_map.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
139pcy_map.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 138pcy_map.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
140pcy_map.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 139pcy_map.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
141pcy_map.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 140pcy_map.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
142pcy_map.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 141pcy_map.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
143pcy_map.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 142pcy_map.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
144pcy_map.o: ../../include/openssl/x509v3.h ../cryptlib.h pcy_int.h pcy_map.c 143pcy_map.o: ../cryptlib.h pcy_int.h pcy_map.c
145pcy_node.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 144pcy_node.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
146pcy_node.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 145pcy_node.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
147pcy_node.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 146pcy_node.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
148pcy_node.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 147pcy_node.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
149pcy_node.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h 148pcy_node.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
150pcy_node.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 149pcy_node.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
151pcy_node.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 150pcy_node.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
152pcy_node.o: ../../include/openssl/opensslconf.h
153pcy_node.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 151pcy_node.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
154pcy_node.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 152pcy_node.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
155pcy_node.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 153pcy_node.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -162,9 +160,8 @@ pcy_tree.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
162pcy_tree.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 160pcy_tree.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
163pcy_tree.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 161pcy_tree.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
164pcy_tree.o: ../../include/openssl/err.h ../../include/openssl/evp.h 162pcy_tree.o: ../../include/openssl/err.h ../../include/openssl/evp.h
165pcy_tree.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 163pcy_tree.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
166pcy_tree.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 164pcy_tree.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
167pcy_tree.o: ../../include/openssl/opensslconf.h
168pcy_tree.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 165pcy_tree.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
169pcy_tree.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 166pcy_tree.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
170pcy_tree.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 167pcy_tree.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -177,39 +174,37 @@ v3_addr.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
177v3_addr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 174v3_addr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
178v3_addr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 175v3_addr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
179v3_addr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 176v3_addr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
180v3_addr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 177v3_addr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
181v3_addr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 178v3_addr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
182v3_addr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 179v3_addr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
183v3_addr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 180v3_addr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
184v3_addr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 181v3_addr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
185v3_addr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 182v3_addr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
186v3_addr.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 183v3_addr.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
187v3_addr.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 184v3_addr.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_addr.c
188v3_addr.o: ../cryptlib.h v3_addr.c
189v3_akey.o: ../../e_os.h ../../include/openssl/asn1.h 185v3_akey.o: ../../e_os.h ../../include/openssl/asn1.h
190v3_akey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 186v3_akey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
191v3_akey.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 187v3_akey.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
192v3_akey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 188v3_akey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
193v3_akey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 189v3_akey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
194v3_akey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 190v3_akey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
195v3_akey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 191v3_akey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
196v3_akey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 192v3_akey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
197v3_akey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 193v3_akey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
198v3_akey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 194v3_akey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
199v3_akey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 195v3_akey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
200v3_akey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 196v3_akey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
201v3_akey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 197v3_akey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
202v3_akey.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 198v3_akey.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_akey.c
203v3_akey.o: ../cryptlib.h v3_akey.c
204v3_akeya.o: ../../e_os.h ../../include/openssl/asn1.h 199v3_akeya.o: ../../e_os.h ../../include/openssl/asn1.h
205v3_akeya.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 200v3_akeya.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
206v3_akeya.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 201v3_akeya.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
207v3_akeya.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 202v3_akeya.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
208v3_akeya.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 203v3_akeya.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
209v3_akeya.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 204v3_akeya.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
210v3_akeya.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 205v3_akeya.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
211v3_akeya.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 206v3_akeya.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
212v3_akeya.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 207v3_akeya.o: ../../include/openssl/opensslconf.h
213v3_akeya.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 208v3_akeya.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
214v3_akeya.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 209v3_akeya.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
215v3_akeya.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 210v3_akeya.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -221,15 +216,14 @@ v3_alt.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
221v3_alt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 216v3_alt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
222v3_alt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 217v3_alt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
223v3_alt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 218v3_alt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
224v3_alt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 219v3_alt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
225v3_alt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 220v3_alt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
226v3_alt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 221v3_alt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
227v3_alt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 222v3_alt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
228v3_alt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 223v3_alt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
229v3_alt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 224v3_alt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
230v3_alt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 225v3_alt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
231v3_alt.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 226v3_alt.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_alt.c
232v3_alt.o: ../cryptlib.h v3_alt.c
233v3_asid.o: ../../e_os.h ../../include/openssl/asn1.h 227v3_asid.o: ../../e_os.h ../../include/openssl/asn1.h
234v3_asid.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 228v3_asid.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
235v3_asid.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 229v3_asid.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
@@ -237,23 +231,23 @@ v3_asid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
237v3_asid.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 231v3_asid.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
238v3_asid.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 232v3_asid.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
239v3_asid.o: ../../include/openssl/err.h ../../include/openssl/evp.h 233v3_asid.o: ../../include/openssl/err.h ../../include/openssl/evp.h
240v3_asid.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 234v3_asid.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
241v3_asid.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 235v3_asid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
242v3_asid.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 236v3_asid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
243v3_asid.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 237v3_asid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
244v3_asid.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 238v3_asid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
245v3_asid.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 239v3_asid.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
246v3_asid.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 240v3_asid.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
247v3_asid.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_asid.c 241v3_asid.o: ../cryptlib.h v3_asid.c
248v3_bcons.o: ../../e_os.h ../../include/openssl/asn1.h 242v3_bcons.o: ../../e_os.h ../../include/openssl/asn1.h
249v3_bcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 243v3_bcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
250v3_bcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 244v3_bcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
251v3_bcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 245v3_bcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
252v3_bcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 246v3_bcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
253v3_bcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 247v3_bcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
254v3_bcons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 248v3_bcons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
255v3_bcons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 249v3_bcons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
256v3_bcons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 250v3_bcons.o: ../../include/openssl/opensslconf.h
257v3_bcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 251v3_bcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
258v3_bcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 252v3_bcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
259v3_bcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 253v3_bcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -266,9 +260,8 @@ v3_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
266v3_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 260v3_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
267v3_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 261v3_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
268v3_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h 262v3_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h
269v3_bitst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 263v3_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
270v3_bitst.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 264v3_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
271v3_bitst.o: ../../include/openssl/opensslconf.h
272v3_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 265v3_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
273v3_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 266v3_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
274v3_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 267v3_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -281,23 +274,23 @@ v3_conf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
281v3_conf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 274v3_conf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
282v3_conf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 275v3_conf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
283v3_conf.o: ../../include/openssl/err.h ../../include/openssl/evp.h 276v3_conf.o: ../../include/openssl/err.h ../../include/openssl/evp.h
284v3_conf.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 277v3_conf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
285v3_conf.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 278v3_conf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
286v3_conf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 279v3_conf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
287v3_conf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 280v3_conf.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
288v3_conf.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 281v3_conf.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
289v3_conf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 282v3_conf.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
290v3_conf.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 283v3_conf.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
291v3_conf.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_conf.c 284v3_conf.o: ../cryptlib.h v3_conf.c
292v3_cpols.o: ../../e_os.h ../../include/openssl/asn1.h 285v3_cpols.o: ../../e_os.h ../../include/openssl/asn1.h
293v3_cpols.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 286v3_cpols.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
294v3_cpols.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 287v3_cpols.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
295v3_cpols.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 288v3_cpols.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
296v3_cpols.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 289v3_cpols.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
297v3_cpols.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 290v3_cpols.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
298v3_cpols.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 291v3_cpols.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
299v3_cpols.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 292v3_cpols.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
300v3_cpols.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 293v3_cpols.o: ../../include/openssl/opensslconf.h
301v3_cpols.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 294v3_cpols.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
302v3_cpols.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 295v3_cpols.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
303v3_cpols.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 296v3_cpols.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -310,38 +303,37 @@ v3_crld.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
310v3_crld.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 303v3_crld.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
311v3_crld.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 304v3_crld.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
312v3_crld.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 305v3_crld.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
313v3_crld.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 306v3_crld.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
314v3_crld.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 307v3_crld.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
315v3_crld.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 308v3_crld.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
316v3_crld.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 309v3_crld.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
317v3_crld.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 310v3_crld.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
318v3_crld.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 311v3_crld.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
319v3_crld.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 312v3_crld.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
320v3_crld.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 313v3_crld.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_crld.c
321v3_crld.o: ../cryptlib.h v3_crld.c
322v3_enum.o: ../../e_os.h ../../include/openssl/asn1.h 314v3_enum.o: ../../e_os.h ../../include/openssl/asn1.h
323v3_enum.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 315v3_enum.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
324v3_enum.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 316v3_enum.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
325v3_enum.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 317v3_enum.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
326v3_enum.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 318v3_enum.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
327v3_enum.o: ../../include/openssl/err.h ../../include/openssl/evp.h 319v3_enum.o: ../../include/openssl/err.h ../../include/openssl/evp.h
328v3_enum.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 320v3_enum.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
329v3_enum.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 321v3_enum.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
330v3_enum.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 322v3_enum.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
331v3_enum.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 323v3_enum.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
332v3_enum.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 324v3_enum.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
333v3_enum.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 325v3_enum.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
334v3_enum.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 326v3_enum.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
335v3_enum.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_enum.c 327v3_enum.o: ../cryptlib.h v3_enum.c
336v3_extku.o: ../../e_os.h ../../include/openssl/asn1.h 328v3_extku.o: ../../e_os.h ../../include/openssl/asn1.h
337v3_extku.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 329v3_extku.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
338v3_extku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 330v3_extku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
339v3_extku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 331v3_extku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
340v3_extku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 332v3_extku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
341v3_extku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 333v3_extku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
342v3_extku.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 334v3_extku.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
343v3_extku.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 335v3_extku.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
344v3_extku.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 336v3_extku.o: ../../include/openssl/opensslconf.h
345v3_extku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 337v3_extku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
346v3_extku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 338v3_extku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
347v3_extku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 339v3_extku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -354,81 +346,76 @@ v3_genn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
354v3_genn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 346v3_genn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
355v3_genn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 347v3_genn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
356v3_genn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 348v3_genn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
357v3_genn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 349v3_genn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
358v3_genn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 350v3_genn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
359v3_genn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 351v3_genn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
360v3_genn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 352v3_genn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
361v3_genn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 353v3_genn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
362v3_genn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 354v3_genn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
363v3_genn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 355v3_genn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
364v3_genn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 356v3_genn.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_genn.c
365v3_genn.o: ../cryptlib.h v3_genn.c
366v3_ia5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 357v3_ia5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
367v3_ia5.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 358v3_ia5.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
368v3_ia5.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 359v3_ia5.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
369v3_ia5.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 360v3_ia5.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
370v3_ia5.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 361v3_ia5.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
371v3_ia5.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 362v3_ia5.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
372v3_ia5.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 363v3_ia5.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
373v3_ia5.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 364v3_ia5.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
374v3_ia5.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 365v3_ia5.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
375v3_ia5.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 366v3_ia5.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
376v3_ia5.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 367v3_ia5.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
377v3_ia5.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 368v3_ia5.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
378v3_ia5.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 369v3_ia5.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_ia5.c
379v3_ia5.o: ../cryptlib.h v3_ia5.c
380v3_info.o: ../../e_os.h ../../include/openssl/asn1.h 370v3_info.o: ../../e_os.h ../../include/openssl/asn1.h
381v3_info.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 371v3_info.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
382v3_info.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 372v3_info.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
383v3_info.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 373v3_info.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
384v3_info.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 374v3_info.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
385v3_info.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 375v3_info.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
386v3_info.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 376v3_info.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
387v3_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 377v3_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
388v3_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 378v3_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
389v3_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 379v3_info.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
390v3_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 380v3_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
391v3_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 381v3_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
392v3_info.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 382v3_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
393v3_info.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 383v3_info.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_info.c
394v3_info.o: ../cryptlib.h v3_info.c
395v3_int.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 384v3_int.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
396v3_int.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 385v3_int.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
397v3_int.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 386v3_int.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
398v3_int.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 387v3_int.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
399v3_int.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 388v3_int.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
400v3_int.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 389v3_int.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
401v3_int.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 390v3_int.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
402v3_int.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 391v3_int.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
403v3_int.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 392v3_int.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
404v3_int.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 393v3_int.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
405v3_int.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 394v3_int.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
406v3_int.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 395v3_int.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
407v3_int.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 396v3_int.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_int.c
408v3_int.o: ../cryptlib.h v3_int.c
409v3_lib.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 397v3_lib.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
410v3_lib.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 398v3_lib.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
411v3_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 399v3_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
412v3_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 400v3_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
413v3_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 401v3_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
414v3_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 402v3_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
415v3_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 403v3_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
416v3_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 404v3_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
417v3_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 405v3_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
418v3_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 406v3_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
419v3_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 407v3_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
420v3_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 408v3_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
421v3_lib.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 409v3_lib.o: ../../include/openssl/x509v3.h ../cryptlib.h ext_dat.h v3_lib.c
422v3_lib.o: ../cryptlib.h ext_dat.h v3_lib.c
423v3_ncons.o: ../../e_os.h ../../include/openssl/asn1.h 410v3_ncons.o: ../../e_os.h ../../include/openssl/asn1.h
424v3_ncons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 411v3_ncons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
425v3_ncons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 412v3_ncons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
426v3_ncons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 413v3_ncons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
427v3_ncons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 414v3_ncons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
428v3_ncons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 415v3_ncons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
429v3_ncons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 416v3_ncons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
430v3_ncons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 417v3_ncons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
431v3_ncons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 418v3_ncons.o: ../../include/openssl/opensslconf.h
432v3_ncons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 419v3_ncons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
433v3_ncons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 420v3_ncons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
434v3_ncons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 421v3_ncons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -441,52 +428,49 @@ v3_ocsp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
441v3_ocsp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 428v3_ocsp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
442v3_ocsp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 429v3_ocsp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
443v3_ocsp.o: ../../include/openssl/err.h ../../include/openssl/evp.h 430v3_ocsp.o: ../../include/openssl/err.h ../../include/openssl/evp.h
444v3_ocsp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 431v3_ocsp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
445v3_ocsp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 432v3_ocsp.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
446v3_ocsp.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 433v3_ocsp.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
447v3_ocsp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 434v3_ocsp.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
448v3_ocsp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 435v3_ocsp.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
449v3_ocsp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 436v3_ocsp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
450v3_ocsp.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 437v3_ocsp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
451v3_ocsp.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 438v3_ocsp.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_ocsp.c
452v3_ocsp.o: ../cryptlib.h v3_ocsp.c
453v3_pci.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 439v3_pci.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
454v3_pci.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 440v3_pci.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
455v3_pci.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 441v3_pci.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
456v3_pci.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 442v3_pci.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
457v3_pci.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 443v3_pci.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
458v3_pci.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 444v3_pci.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
459v3_pci.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 445v3_pci.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
460v3_pci.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 446v3_pci.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
461v3_pci.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 447v3_pci.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
462v3_pci.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 448v3_pci.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
463v3_pci.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 449v3_pci.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
464v3_pci.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 450v3_pci.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
465v3_pci.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 451v3_pci.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_pci.c
466v3_pci.o: ../cryptlib.h v3_pci.c
467v3_pcia.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 452v3_pcia.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
468v3_pcia.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 453v3_pcia.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
469v3_pcia.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 454v3_pcia.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
470v3_pcia.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 455v3_pcia.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
471v3_pcia.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 456v3_pcia.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
472v3_pcia.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 457v3_pcia.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
473v3_pcia.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 458v3_pcia.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
474v3_pcia.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 459v3_pcia.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
475v3_pcia.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 460v3_pcia.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
476v3_pcia.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 461v3_pcia.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
477v3_pcia.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 462v3_pcia.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
478v3_pcia.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 463v3_pcia.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
479v3_pcia.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 464v3_pcia.o: ../../include/openssl/x509v3.h v3_pcia.c
480v3_pcia.o: v3_pcia.c
481v3_pcons.o: ../../e_os.h ../../include/openssl/asn1.h 465v3_pcons.o: ../../e_os.h ../../include/openssl/asn1.h
482v3_pcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 466v3_pcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
483v3_pcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 467v3_pcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
484v3_pcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 468v3_pcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
485v3_pcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 469v3_pcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
486v3_pcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 470v3_pcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
487v3_pcons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 471v3_pcons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
488v3_pcons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 472v3_pcons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
489v3_pcons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 473v3_pcons.o: ../../include/openssl/opensslconf.h
490v3_pcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 474v3_pcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
491v3_pcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 475v3_pcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
492v3_pcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 476v3_pcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -499,24 +483,23 @@ v3_pku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
499v3_pku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 483v3_pku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
500v3_pku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 484v3_pku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
501v3_pku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 485v3_pku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
502v3_pku.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 486v3_pku.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
503v3_pku.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 487v3_pku.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
504v3_pku.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 488v3_pku.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
505v3_pku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 489v3_pku.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
506v3_pku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 490v3_pku.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
507v3_pku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 491v3_pku.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
508v3_pku.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 492v3_pku.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
509v3_pku.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 493v3_pku.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_pku.c
510v3_pku.o: ../cryptlib.h v3_pku.c
511v3_pmaps.o: ../../e_os.h ../../include/openssl/asn1.h 494v3_pmaps.o: ../../e_os.h ../../include/openssl/asn1.h
512v3_pmaps.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 495v3_pmaps.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
513v3_pmaps.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 496v3_pmaps.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
514v3_pmaps.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 497v3_pmaps.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
515v3_pmaps.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 498v3_pmaps.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
516v3_pmaps.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 499v3_pmaps.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
517v3_pmaps.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 500v3_pmaps.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
518v3_pmaps.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 501v3_pmaps.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
519v3_pmaps.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 502v3_pmaps.o: ../../include/openssl/opensslconf.h
520v3_pmaps.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 503v3_pmaps.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
521v3_pmaps.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 504v3_pmaps.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
522v3_pmaps.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 505v3_pmaps.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -528,52 +511,51 @@ v3_prn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
528v3_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 511v3_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
529v3_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 512v3_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
530v3_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 513v3_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
531v3_prn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 514v3_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
532v3_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 515v3_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
533v3_prn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 516v3_prn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
534v3_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 517v3_prn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
535v3_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 518v3_prn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
536v3_prn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 519v3_prn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
537v3_prn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 520v3_prn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
538v3_prn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 521v3_prn.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_prn.c
539v3_prn.o: ../cryptlib.h v3_prn.c
540v3_purp.o: ../../e_os.h ../../include/openssl/asn1.h 522v3_purp.o: ../../e_os.h ../../include/openssl/asn1.h
541v3_purp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 523v3_purp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
542v3_purp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 524v3_purp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
543v3_purp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 525v3_purp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
544v3_purp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 526v3_purp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
545v3_purp.o: ../../include/openssl/err.h ../../include/openssl/evp.h 527v3_purp.o: ../../include/openssl/err.h ../../include/openssl/evp.h
546v3_purp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 528v3_purp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
547v3_purp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 529v3_purp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
548v3_purp.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 530v3_purp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
549v3_purp.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 531v3_purp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
550v3_purp.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 532v3_purp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
551v3_purp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 533v3_purp.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
552v3_purp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 534v3_purp.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
553v3_purp.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_purp.c 535v3_purp.o: ../cryptlib.h v3_purp.c
554v3_skey.o: ../../e_os.h ../../include/openssl/asn1.h 536v3_skey.o: ../../e_os.h ../../include/openssl/asn1.h
555v3_skey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 537v3_skey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
556v3_skey.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 538v3_skey.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
557v3_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 539v3_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
558v3_skey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 540v3_skey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
559v3_skey.o: ../../include/openssl/err.h ../../include/openssl/evp.h 541v3_skey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
560v3_skey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 542v3_skey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
561v3_skey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 543v3_skey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
562v3_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 544v3_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
563v3_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 545v3_skey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
564v3_skey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 546v3_skey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
565v3_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 547v3_skey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
566v3_skey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 548v3_skey.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
567v3_skey.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_skey.c 549v3_skey.o: ../cryptlib.h v3_skey.c
568v3_sxnet.o: ../../e_os.h ../../include/openssl/asn1.h 550v3_sxnet.o: ../../e_os.h ../../include/openssl/asn1.h
569v3_sxnet.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 551v3_sxnet.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
570v3_sxnet.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 552v3_sxnet.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
571v3_sxnet.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 553v3_sxnet.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
572v3_sxnet.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 554v3_sxnet.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
573v3_sxnet.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 555v3_sxnet.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
574v3_sxnet.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 556v3_sxnet.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
575v3_sxnet.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 557v3_sxnet.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
576v3_sxnet.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 558v3_sxnet.o: ../../include/openssl/opensslconf.h
577v3_sxnet.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 559v3_sxnet.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
578v3_sxnet.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 560v3_sxnet.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
579v3_sxnet.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 561v3_sxnet.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -586,25 +568,24 @@ v3_utl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
586v3_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 568v3_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
587v3_utl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 569v3_utl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
588v3_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h 570v3_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
589v3_utl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 571v3_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
590v3_utl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 572v3_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
591v3_utl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 573v3_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
592v3_utl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 574v3_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
593v3_utl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 575v3_utl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
594v3_utl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 576v3_utl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
595v3_utl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 577v3_utl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
596v3_utl.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_utl.c 578v3_utl.o: ../cryptlib.h v3_utl.c
597v3err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 579v3err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
598v3err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 580v3err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
599v3err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 581v3err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
600v3err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 582v3err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
601v3err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 583v3err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
602v3err.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 584v3err.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
603v3err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 585v3err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
604v3err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 586v3err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
605v3err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 587v3err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
606v3err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 588v3err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
607v3err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 589v3err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
608v3err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 590v3err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
609v3err.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 591v3err.o: ../../include/openssl/x509v3.h v3err.c
610v3err.o: v3err.c
diff --git a/src/lib/libssl/src/CHANGES b/src/lib/libssl/src/CHANGES
index 04d332e338..b139cf6244 100644
--- a/src/lib/libssl/src/CHANGES
+++ b/src/lib/libssl/src/CHANGES
@@ -2,6 +2,1049 @@
2 OpenSSL CHANGES 2 OpenSSL CHANGES
3 _______________ 3 _______________
4 4
5 Changes between 1.0.0 and 1.0.0a [01 Jun 2010]
6
7 *) Check return value of int_rsa_verify in pkey_rsa_verifyrecover
8 (CVE-2010-1633)
9 [Steve Henson, Peter-Michael Hager <hager@dortmund.net>]
10
11 Changes between 0.9.8n and 1.0.0 [29 Mar 2010]
12
13 *) Add "missing" function EVP_CIPHER_CTX_copy(). This copies a cipher
14 context. The operation can be customised via the ctrl mechanism in
15 case ENGINEs want to include additional functionality.
16 [Steve Henson]
17
18 *) Tolerate yet another broken PKCS#8 key format: private key value negative.
19 [Steve Henson]
20
21 *) Add new -subject_hash_old and -issuer_hash_old options to x509 utility to
22 output hashes compatible with older versions of OpenSSL.
23 [Willy Weisz <weisz@vcpc.univie.ac.at>]
24
25 *) Fix compression algorithm handling: if resuming a session use the
26 compression algorithm of the resumed session instead of determining
27 it from client hello again. Don't allow server to change algorithm.
28 [Steve Henson]
29
30 *) Add load_crls() function to apps tidying load_certs() too. Add option
31 to verify utility to allow additional CRLs to be included.
32 [Steve Henson]
33
34 *) Update OCSP request code to permit adding custom headers to the request:
35 some responders need this.
36 [Steve Henson]
37
38 *) The function EVP_PKEY_sign() returns <=0 on error: check return code
39 correctly.
40 [Julia Lawall <julia@diku.dk>]
41
42 *) Update verify callback code in apps/s_cb.c and apps/verify.c, it
43 needlessly dereferenced structures, used obsolete functions and
44 didn't handle all updated verify codes correctly.
45 [Steve Henson]
46
47 *) Disable MD2 in the default configuration.
48 [Steve Henson]
49
50 *) In BIO_pop() and BIO_push() use the ctrl argument (which was NULL) to
51 indicate the initial BIO being pushed or popped. This makes it possible
52 to determine whether the BIO is the one explicitly called or as a result
53 of the ctrl being passed down the chain. Fix BIO_pop() and SSL BIOs so
54 it handles reference counts correctly and doesn't zero out the I/O bio
55 when it is not being explicitly popped. WARNING: applications which
56 included workarounds for the old buggy behaviour will need to be modified
57 or they could free up already freed BIOs.
58 [Steve Henson]
59
60 *) Extend the uni2asc/asc2uni => OPENSSL_uni2asc/OPENSSL_asc2uni
61 renaming to all platforms (within the 0.9.8 branch, this was
62 done conditionally on Netware platforms to avoid a name clash).
63 [Guenter <lists@gknw.net>]
64
65 *) Add ECDHE and PSK support to DTLS.
66 [Michael Tuexen <tuexen@fh-muenster.de>]
67
68 *) Add CHECKED_STACK_OF macro to safestack.h, otherwise safestack can't
69 be used on C++.
70 [Steve Henson]
71
72 *) Add "missing" function EVP_MD_flags() (without this the only way to
73 retrieve a digest flags is by accessing the structure directly. Update
74 EVP_MD_do_all*() and EVP_CIPHER_do_all*() to include the name a digest
75 or cipher is registered as in the "from" argument. Print out all
76 registered digests in the dgst usage message instead of manually
77 attempting to work them out.
78 [Steve Henson]
79
80 *) If no SSLv2 ciphers are used don't use an SSLv2 compatible client hello:
81 this allows the use of compression and extensions. Change default cipher
82 string to remove SSLv2 ciphersuites. This effectively avoids ancient SSLv2
83 by default unless an application cipher string requests it.
84 [Steve Henson]
85
86 *) Alter match criteria in PKCS12_parse(). It used to try to use local
87 key ids to find matching certificates and keys but some PKCS#12 files
88 don't follow the (somewhat unwritten) rules and this strategy fails.
89 Now just gather all certificates together and the first private key
90 then look for the first certificate that matches the key.
91 [Steve Henson]
92
93 *) Support use of registered digest and cipher names for dgst and cipher
94 commands instead of having to add each one as a special case. So now
95 you can do:
96
97 openssl sha256 foo
98
99 as well as:
100
101 openssl dgst -sha256 foo
102
103 and this works for ENGINE based algorithms too.
104
105 [Steve Henson]
106
107 *) Update Gost ENGINE to support parameter files.
108 [Victor B. Wagner <vitus@cryptocom.ru>]
109
110 *) Support GeneralizedTime in ca utility.
111 [Oliver Martin <oliver@volatilevoid.net>, Steve Henson]
112
113 *) Enhance the hash format used for certificate directory links. The new
114 form uses the canonical encoding (meaning equivalent names will work
115 even if they aren't identical) and uses SHA1 instead of MD5. This form
116 is incompatible with the older format and as a result c_rehash should
117 be used to rebuild symbolic links.
118 [Steve Henson]
119
120 *) Make PKCS#8 the default write format for private keys, replacing the
121 traditional format. This form is standardised, more secure and doesn't
122 include an implicit MD5 dependency.
123 [Steve Henson]
124
125 *) Add a $gcc_devteam_warn option to Configure. The idea is that any code
126 committed to OpenSSL should pass this lot as a minimum.
127 [Steve Henson]
128
129 *) Add session ticket override functionality for use by EAP-FAST.
130 [Jouni Malinen <j@w1.fi>]
131
132 *) Modify HMAC functions to return a value. Since these can be implemented
133 in an ENGINE errors can occur.
134 [Steve Henson]
135
136 *) Type-checked OBJ_bsearch_ex.
137 [Ben Laurie]
138
139 *) Type-checked OBJ_bsearch. Also some constification necessitated
140 by type-checking. Still to come: TXT_DB, bsearch(?),
141 OBJ_bsearch_ex, qsort, CRYPTO_EX_DATA, ASN1_VALUE, ASN1_STRING,
142 CONF_VALUE.
143 [Ben Laurie]
144
145 *) New function OPENSSL_gmtime_adj() to add a specific number of days and
146 seconds to a tm structure directly, instead of going through OS
147 specific date routines. This avoids any issues with OS routines such
148 as the year 2038 bug. New *_adj() functions for ASN1 time structures
149 and X509_time_adj_ex() to cover the extended range. The existing
150 X509_time_adj() is still usable and will no longer have any date issues.
151 [Steve Henson]
152
153 *) Delta CRL support. New use deltas option which will attempt to locate
154 and search any appropriate delta CRLs available.
155
156 This work was sponsored by Google.
157 [Steve Henson]
158
159 *) Support for CRLs partitioned by reason code. Reorganise CRL processing
160 code and add additional score elements. Validate alternate CRL paths
161 as part of the CRL checking and indicate a new error "CRL path validation
162 error" in this case. Applications wanting additional details can use
163 the verify callback and check the new "parent" field. If this is not
164 NULL CRL path validation is taking place. Existing applications wont
165 see this because it requires extended CRL support which is off by
166 default.
167
168 This work was sponsored by Google.
169 [Steve Henson]
170
171 *) Support for freshest CRL extension.
172
173 This work was sponsored by Google.
174 [Steve Henson]
175
176 *) Initial indirect CRL support. Currently only supported in the CRLs
177 passed directly and not via lookup. Process certificate issuer
178 CRL entry extension and lookup CRL entries by bother issuer name
179 and serial number. Check and process CRL issuer entry in IDP extension.
180
181 This work was sponsored by Google.
182 [Steve Henson]
183
184 *) Add support for distinct certificate and CRL paths. The CRL issuer
185 certificate is validated separately in this case. Only enabled if
186 an extended CRL support flag is set: this flag will enable additional
187 CRL functionality in future.
188
189 This work was sponsored by Google.
190 [Steve Henson]
191
192 *) Add support for policy mappings extension.
193
194 This work was sponsored by Google.
195 [Steve Henson]
196
197 *) Fixes to pathlength constraint, self issued certificate handling,
198 policy processing to align with RFC3280 and PKITS tests.
199
200 This work was sponsored by Google.
201 [Steve Henson]
202
203 *) Support for name constraints certificate extension. DN, email, DNS
204 and URI types are currently supported.
205
206 This work was sponsored by Google.
207 [Steve Henson]
208
209 *) To cater for systems that provide a pointer-based thread ID rather
210 than numeric, deprecate the current numeric thread ID mechanism and
211 replace it with a structure and associated callback type. This
212 mechanism allows a numeric "hash" to be extracted from a thread ID in
213 either case, and on platforms where pointers are larger than 'long',
214 mixing is done to help ensure the numeric 'hash' is usable even if it
215 can't be guaranteed unique. The default mechanism is to use "&errno"
216 as a pointer-based thread ID to distinguish between threads.
217
218 Applications that want to provide their own thread IDs should now use
219 CRYPTO_THREADID_set_callback() to register a callback that will call
220 either CRYPTO_THREADID_set_numeric() or CRYPTO_THREADID_set_pointer().
221
222 Note that ERR_remove_state() is now deprecated, because it is tied
223 to the assumption that thread IDs are numeric. ERR_remove_state(0)
224 to free the current thread's error state should be replaced by
225 ERR_remove_thread_state(NULL).
226
227 (This new approach replaces the functions CRYPTO_set_idptr_callback(),
228 CRYPTO_get_idptr_callback(), and CRYPTO_thread_idptr() that existed in
229 OpenSSL 0.9.9-dev between June 2006 and August 2008. Also, if an
230 application was previously providing a numeric thread callback that
231 was inappropriate for distinguishing threads, then uniqueness might
232 have been obtained with &errno that happened immediately in the
233 intermediate development versions of OpenSSL; this is no longer the
234 case, the numeric thread callback will now override the automatic use
235 of &errno.)
236 [Geoff Thorpe, with help from Bodo Moeller]
237
238 *) Initial support for different CRL issuing certificates. This covers a
239 simple case where the self issued certificates in the chain exist and
240 the real CRL issuer is higher in the existing chain.
241
242 This work was sponsored by Google.
243 [Steve Henson]
244
245 *) Removed effectively defunct crypto/store from the build.
246 [Ben Laurie]
247
248 *) Revamp of STACK to provide stronger type-checking. Still to come:
249 TXT_DB, bsearch(?), OBJ_bsearch, qsort, CRYPTO_EX_DATA, ASN1_VALUE,
250 ASN1_STRING, CONF_VALUE.
251 [Ben Laurie]
252
253 *) Add a new SSL_MODE_RELEASE_BUFFERS mode flag to release unused buffer
254 RAM on SSL connections. This option can save about 34k per idle SSL.
255 [Nick Mathewson]
256
257 *) Revamp of LHASH to provide stronger type-checking. Still to come:
258 STACK, TXT_DB, bsearch, qsort.
259 [Ben Laurie]
260
261 *) Initial support for Cryptographic Message Syntax (aka CMS) based
262 on RFC3850, RFC3851 and RFC3852. New cms directory and cms utility,
263 support for data, signedData, compressedData, digestedData and
264 encryptedData, envelopedData types included. Scripts to check against
265 RFC4134 examples draft and interop and consistency checks of many
266 content types and variants.
267 [Steve Henson]
268
269 *) Add options to enc utility to support use of zlib compression BIO.
270 [Steve Henson]
271
272 *) Extend mk1mf to support importing of options and assembly language
273 files from Configure script, currently only included in VC-WIN32.
274 The assembly language rules can now optionally generate the source
275 files from the associated perl scripts.
276 [Steve Henson]
277
278 *) Implement remaining functionality needed to support GOST ciphersuites.
279 Interop testing has been performed using CryptoPro implementations.
280 [Victor B. Wagner <vitus@cryptocom.ru>]
281
282 *) s390x assembler pack.
283 [Andy Polyakov]
284
285 *) ARMv4 assembler pack. ARMv4 refers to v4 and later ISA, not CPU
286 "family."
287 [Andy Polyakov]
288
289 *) Implement Opaque PRF Input TLS extension as specified in
290 draft-rescorla-tls-opaque-prf-input-00.txt. Since this is not an
291 official specification yet and no extension type assignment by
292 IANA exists, this extension (for now) will have to be explicitly
293 enabled when building OpenSSL by providing the extension number
294 to use. For example, specify an option
295
296 -DTLSEXT_TYPE_opaque_prf_input=0x9527
297
298 to the "config" or "Configure" script to enable the extension,
299 assuming extension number 0x9527 (which is a completely arbitrary
300 and unofficial assignment based on the MD5 hash of the Internet
301 Draft). Note that by doing so, you potentially lose
302 interoperability with other TLS implementations since these might
303 be using the same extension number for other purposes.
304
305 SSL_set_tlsext_opaque_prf_input(ssl, src, len) is used to set the
306 opaque PRF input value to use in the handshake. This will create
307 an interal copy of the length-'len' string at 'src', and will
308 return non-zero for success.
309
310 To get more control and flexibility, provide a callback function
311 by using
312
313 SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb)
314 SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg)
315
316 where
317
318 int (*cb)(SSL *, void *peerinput, size_t len, void *arg);
319 void *arg;
320
321 Callback function 'cb' will be called in handshakes, and is
322 expected to use SSL_set_tlsext_opaque_prf_input() as appropriate.
323 Argument 'arg' is for application purposes (the value as given to
324 SSL_CTX_set_tlsext_opaque_prf_input_callback_arg() will directly
325 be provided to the callback function). The callback function
326 has to return non-zero to report success: usually 1 to use opaque
327 PRF input just if possible, or 2 to enforce use of the opaque PRF
328 input. In the latter case, the library will abort the handshake
329 if opaque PRF input is not successfully negotiated.
330
331 Arguments 'peerinput' and 'len' given to the callback function
332 will always be NULL and 0 in the case of a client. A server will
333 see the client's opaque PRF input through these variables if
334 available (NULL and 0 otherwise). Note that if the server
335 provides an opaque PRF input, the length must be the same as the
336 length of the client's opaque PRF input.
337
338 Note that the callback function will only be called when creating
339 a new session (session resumption can resume whatever was
340 previously negotiated), and will not be called in SSL 2.0
341 handshakes; thus, SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2) or
342 SSL_set_options(ssl, SSL_OP_NO_SSLv2) is especially recommended
343 for applications that need to enforce opaque PRF input.
344
345 [Bodo Moeller]
346
347 *) Update ssl code to support digests other than SHA1+MD5 for handshake
348 MAC.
349
350 [Victor B. Wagner <vitus@cryptocom.ru>]
351
352 *) Add RFC4507 support to OpenSSL. This includes the corrections in
353 RFC4507bis. The encrypted ticket format is an encrypted encoded
354 SSL_SESSION structure, that way new session features are automatically
355 supported.
356
357 If a client application caches session in an SSL_SESSION structure
358 support is transparent because tickets are now stored in the encoded
359 SSL_SESSION.
360
361 The SSL_CTX structure automatically generates keys for ticket
362 protection in servers so again support should be possible
363 with no application modification.
364
365 If a client or server wishes to disable RFC4507 support then the option
366 SSL_OP_NO_TICKET can be set.
367
368 Add a TLS extension debugging callback to allow the contents of any client
369 or server extensions to be examined.
370
371 This work was sponsored by Google.
372 [Steve Henson]
373
374 *) Final changes to avoid use of pointer pointer casts in OpenSSL.
375 OpenSSL should now compile cleanly on gcc 4.2
376 [Peter Hartley <pdh@utter.chaos.org.uk>, Steve Henson]
377
378 *) Update SSL library to use new EVP_PKEY MAC API. Include generic MAC
379 support including streaming MAC support: this is required for GOST
380 ciphersuite support.
381 [Victor B. Wagner <vitus@cryptocom.ru>, Steve Henson]
382
383 *) Add option -stream to use PKCS#7 streaming in smime utility. New
384 function i2d_PKCS7_bio_stream() and PEM_write_PKCS7_bio_stream()
385 to output in BER and PEM format.
386 [Steve Henson]
387
388 *) Experimental support for use of HMAC via EVP_PKEY interface. This
389 allows HMAC to be handled via the EVP_DigestSign*() interface. The
390 EVP_PKEY "key" in this case is the HMAC key, potentially allowing
391 ENGINE support for HMAC keys which are unextractable. New -mac and
392 -macopt options to dgst utility.
393 [Steve Henson]
394
395 *) New option -sigopt to dgst utility. Update dgst to use
396 EVP_Digest{Sign,Verify}*. These two changes make it possible to use
397 alternative signing paramaters such as X9.31 or PSS in the dgst
398 utility.
399 [Steve Henson]
400
401 *) Change ssl_cipher_apply_rule(), the internal function that does
402 the work each time a ciphersuite string requests enabling
403 ("foo+bar"), moving ("+foo+bar"), disabling ("-foo+bar", or
404 removing ("!foo+bar") a class of ciphersuites: Now it maintains
405 the order of disabled ciphersuites such that those ciphersuites
406 that most recently went from enabled to disabled not only stay
407 in order with respect to each other, but also have higher priority
408 than other disabled ciphersuites the next time ciphersuites are
409 enabled again.
410
411 This means that you can now say, e.g., "PSK:-PSK:HIGH" to enable
412 the same ciphersuites as with "HIGH" alone, but in a specific
413 order where the PSK ciphersuites come first (since they are the
414 most recently disabled ciphersuites when "HIGH" is parsed).
415
416 Also, change ssl_create_cipher_list() (using this new
417 funcionality) such that between otherwise identical
418 cihpersuites, ephemeral ECDH is preferred over ephemeral DH in
419 the default order.
420 [Bodo Moeller]
421
422 *) Change ssl_create_cipher_list() so that it automatically
423 arranges the ciphersuites in reasonable order before starting
424 to process the rule string. Thus, the definition for "DEFAULT"
425 (SSL_DEFAULT_CIPHER_LIST) now is just "ALL:!aNULL:!eNULL", but
426 remains equivalent to "AES:ALL:!aNULL:!eNULL:+aECDH:+kRSA:+RC4:@STRENGTH".
427 This makes it much easier to arrive at a reasonable default order
428 in applications for which anonymous ciphers are OK (meaning
429 that you can't actually use DEFAULT).
430 [Bodo Moeller; suggested by Victor Duchovni]
431
432 *) Split the SSL/TLS algorithm mask (as used for ciphersuite string
433 processing) into multiple integers instead of setting
434 "SSL_MKEY_MASK" bits, "SSL_AUTH_MASK" bits, "SSL_ENC_MASK",
435 "SSL_MAC_MASK", and "SSL_SSL_MASK" bits all in a single integer.
436 (These masks as well as the individual bit definitions are hidden
437 away into the non-exported interface ssl/ssl_locl.h, so this
438 change to the definition of the SSL_CIPHER structure shouldn't
439 affect applications.) This give us more bits for each of these
440 categories, so there is no longer a need to coagulate AES128 and
441 AES256 into a single algorithm bit, and to coagulate Camellia128
442 and Camellia256 into a single algorithm bit, which has led to all
443 kinds of kludges.
444
445 Thus, among other things, the kludge introduced in 0.9.7m and
446 0.9.8e for masking out AES256 independently of AES128 or masking
447 out Camellia256 independently of AES256 is not needed here in 0.9.9.
448
449 With the change, we also introduce new ciphersuite aliases that
450 so far were missing: "AES128", "AES256", "CAMELLIA128", and
451 "CAMELLIA256".
452 [Bodo Moeller]
453
454 *) Add support for dsa-with-SHA224 and dsa-with-SHA256.
455 Use the leftmost N bytes of the signature input if the input is
456 larger than the prime q (with N being the size in bytes of q).
457 [Nils Larsch]
458
459 *) Very *very* experimental PKCS#7 streaming encoder support. Nothing uses
460 it yet and it is largely untested.
461 [Steve Henson]
462
463 *) Add support for the ecdsa-with-SHA224/256/384/512 signature types.
464 [Nils Larsch]
465
466 *) Initial incomplete changes to avoid need for function casts in OpenSSL
467 some compilers (gcc 4.2 and later) reject their use. Safestack is
468 reimplemented. Update ASN1 to avoid use of legacy functions.
469 [Steve Henson]
470
471 *) Win32/64 targets are linked with Winsock2.
472 [Andy Polyakov]
473
474 *) Add an X509_CRL_METHOD structure to allow CRL processing to be redirected
475 to external functions. This can be used to increase CRL handling
476 efficiency especially when CRLs are very large by (for example) storing
477 the CRL revoked certificates in a database.
478 [Steve Henson]
479
480 *) Overhaul of by_dir code. Add support for dynamic loading of CRLs so
481 new CRLs added to a directory can be used. New command line option
482 -verify_return_error to s_client and s_server. This causes real errors
483 to be returned by the verify callback instead of carrying on no matter
484 what. This reflects the way a "real world" verify callback would behave.
485 [Steve Henson]
486
487 *) GOST engine, supporting several GOST algorithms and public key formats.
488 Kindly donated by Cryptocom.
489 [Cryptocom]
490
491 *) Partial support for Issuing Distribution Point CRL extension. CRLs
492 partitioned by DP are handled but no indirect CRL or reason partitioning
493 (yet). Complete overhaul of CRL handling: now the most suitable CRL is
494 selected via a scoring technique which handles IDP and AKID in CRLs.
495 [Steve Henson]
496
497 *) New X509_STORE_CTX callbacks lookup_crls() and lookup_certs() which
498 will ultimately be used for all verify operations: this will remove the
499 X509_STORE dependency on certificate verification and allow alternative
500 lookup methods. X509_STORE based implementations of these two callbacks.
501 [Steve Henson]
502
503 *) Allow multiple CRLs to exist in an X509_STORE with matching issuer names.
504 Modify get_crl() to find a valid (unexpired) CRL if possible.
505 [Steve Henson]
506
507 *) New function X509_CRL_match() to check if two CRLs are identical. Normally
508 this would be called X509_CRL_cmp() but that name is already used by
509 a function that just compares CRL issuer names. Cache several CRL
510 extensions in X509_CRL structure and cache CRLDP in X509.
511 [Steve Henson]
512
513 *) Store a "canonical" representation of X509_NAME structure (ASN1 Name)
514 this maps equivalent X509_NAME structures into a consistent structure.
515 Name comparison can then be performed rapidly using memcmp().
516 [Steve Henson]
517
518 *) Non-blocking OCSP request processing. Add -timeout option to ocsp
519 utility.
520 [Steve Henson]
521
522 *) Allow digests to supply their own micalg string for S/MIME type using
523 the ctrl EVP_MD_CTRL_MICALG.
524 [Steve Henson]
525
526 *) During PKCS7 signing pass the PKCS7 SignerInfo structure to the
527 EVP_PKEY_METHOD before and after signing via the EVP_PKEY_CTRL_PKCS7_SIGN
528 ctrl. It can then customise the structure before and/or after signing
529 if necessary.
530 [Steve Henson]
531
532 *) New function OBJ_add_sigid() to allow application defined signature OIDs
533 to be added to OpenSSLs internal tables. New function OBJ_sigid_free()
534 to free up any added signature OIDs.
535 [Steve Henson]
536
537 *) New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(),
538 EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal
539 digest and cipher tables. New options added to openssl utility:
540 list-message-digest-algorithms and list-cipher-algorithms.
541 [Steve Henson]
542
543 *) Change the array representation of binary polynomials: the list
544 of degrees of non-zero coefficients is now terminated with -1.
545 Previously it was terminated with 0, which was also part of the
546 value; thus, the array representation was not applicable to
547 polynomials where t^0 has coefficient zero. This change makes
548 the array representation useful in a more general context.
549 [Douglas Stebila]
550
551 *) Various modifications and fixes to SSL/TLS cipher string
552 handling. For ECC, the code now distinguishes between fixed ECDH
553 with RSA certificates on the one hand and with ECDSA certificates
554 on the other hand, since these are separate ciphersuites. The
555 unused code for Fortezza ciphersuites has been removed.
556
557 For consistency with EDH, ephemeral ECDH is now called "EECDH"
558 (not "ECDHE"). For consistency with the code for DH
559 certificates, use of ECDH certificates is now considered ECDH
560 authentication, not RSA or ECDSA authentication (the latter is
561 merely the CA's signing algorithm and not actively used in the
562 protocol).
563
564 The temporary ciphersuite alias "ECCdraft" is no longer
565 available, and ECC ciphersuites are no longer excluded from "ALL"
566 and "DEFAULT". The following aliases now exist for RFC 4492
567 ciphersuites, most of these by analogy with the DH case:
568
569 kECDHr - ECDH cert, signed with RSA
570 kECDHe - ECDH cert, signed with ECDSA
571 kECDH - ECDH cert (signed with either RSA or ECDSA)
572 kEECDH - ephemeral ECDH
573 ECDH - ECDH cert or ephemeral ECDH
574
575 aECDH - ECDH cert
576 aECDSA - ECDSA cert
577 ECDSA - ECDSA cert
578
579 AECDH - anonymous ECDH
580 EECDH - non-anonymous ephemeral ECDH (equivalent to "kEECDH:-AECDH")
581
582 [Bodo Moeller]
583
584 *) Add additional S/MIME capabilities for AES and GOST ciphers if supported.
585 Use correct micalg parameters depending on digest(s) in signed message.
586 [Steve Henson]
587
588 *) Add engine support for EVP_PKEY_ASN1_METHOD. Add functions to process
589 an ENGINE asn1 method. Support ENGINE lookups in the ASN1 code.
590 [Steve Henson]
591
592 *) Initial engine support for EVP_PKEY_METHOD. New functions to permit
593 an engine to register a method. Add ENGINE lookups for methods and
594 functional reference processing.
595 [Steve Henson]
596
597 *) New functions EVP_Digest{Sign,Verify)*. These are enchance versions of
598 EVP_{Sign,Verify}* which allow an application to customise the signature
599 process.
600 [Steve Henson]
601
602 *) New -resign option to smime utility. This adds one or more signers
603 to an existing PKCS#7 signedData structure. Also -md option to use an
604 alternative message digest algorithm for signing.
605 [Steve Henson]
606
607 *) Tidy up PKCS#7 routines and add new functions to make it easier to
608 create PKCS7 structures containing multiple signers. Update smime
609 application to support multiple signers.
610 [Steve Henson]
611
612 *) New -macalg option to pkcs12 utility to allow setting of an alternative
613 digest MAC.
614 [Steve Henson]
615
616 *) Initial support for PKCS#5 v2.0 PRFs other than default SHA1 HMAC.
617 Reorganize PBE internals to lookup from a static table using NIDs,
618 add support for HMAC PBE OID translation. Add a EVP_CIPHER ctrl:
619 EVP_CTRL_PBE_PRF_NID this allows a cipher to specify an alternative
620 PRF which will be automatically used with PBES2.
621 [Steve Henson]
622
623 *) Replace the algorithm specific calls to generate keys in "req" with the
624 new API.
625 [Steve Henson]
626
627 *) Update PKCS#7 enveloped data routines to use new API. This is now
628 supported by any public key method supporting the encrypt operation. A
629 ctrl is added to allow the public key algorithm to examine or modify
630 the PKCS#7 RecipientInfo structure if it needs to: for RSA this is
631 a no op.
632 [Steve Henson]
633
634 *) Add a ctrl to asn1 method to allow a public key algorithm to express
635 a default digest type to use. In most cases this will be SHA1 but some
636 algorithms (such as GOST) need to specify an alternative digest. The
637 return value indicates how strong the prefernce is 1 means optional and
638 2 is mandatory (that is it is the only supported type). Modify
639 ASN1_item_sign() to accept a NULL digest argument to indicate it should
640 use the default md. Update openssl utilities to use the default digest
641 type for signing if it is not explicitly indicated.
642 [Steve Henson]
643
644 *) Use OID cross reference table in ASN1_sign() and ASN1_verify(). New
645 EVP_MD flag EVP_MD_FLAG_PKEY_METHOD_SIGNATURE. This uses the relevant
646 signing method from the key type. This effectively removes the link
647 between digests and public key types.
648 [Steve Henson]
649
650 *) Add an OID cross reference table and utility functions. Its purpose is to
651 translate between signature OIDs such as SHA1WithrsaEncryption and SHA1,
652 rsaEncryption. This will allow some of the algorithm specific hackery
653 needed to use the correct OID to be removed.
654 [Steve Henson]
655
656 *) Remove algorithm specific dependencies when setting PKCS7_SIGNER_INFO
657 structures for PKCS7_sign(). They are now set up by the relevant public
658 key ASN1 method.
659 [Steve Henson]
660
661 *) Add provisional EC pkey method with support for ECDSA and ECDH.
662 [Steve Henson]
663
664 *) Add support for key derivation (agreement) in the API, DH method and
665 pkeyutl.
666 [Steve Henson]
667
668 *) Add DSA pkey method and DH pkey methods, extend DH ASN1 method to support
669 public and private key formats. As a side effect these add additional
670 command line functionality not previously available: DSA signatures can be
671 generated and verified using pkeyutl and DH key support and generation in
672 pkey, genpkey.
673 [Steve Henson]
674
675 *) BeOS support.
676 [Oliver Tappe <zooey@hirschkaefer.de>]
677
678 *) New make target "install_html_docs" installs HTML renditions of the
679 manual pages.
680 [Oliver Tappe <zooey@hirschkaefer.de>]
681
682 *) New utility "genpkey" this is analagous to "genrsa" etc except it can
683 generate keys for any algorithm. Extend and update EVP_PKEY_METHOD to
684 support key and parameter generation and add initial key generation
685 functionality for RSA.
686 [Steve Henson]
687
688 *) Add functions for main EVP_PKEY_method operations. The undocumented
689 functions EVP_PKEY_{encrypt,decrypt} have been renamed to
690 EVP_PKEY_{encrypt,decrypt}_old.
691 [Steve Henson]
692
693 *) Initial definitions for EVP_PKEY_METHOD. This will be a high level public
694 key API, doesn't do much yet.
695 [Steve Henson]
696
697 *) New function EVP_PKEY_asn1_get0_info() to retrieve information about
698 public key algorithms. New option to openssl utility:
699 "list-public-key-algorithms" to print out info.
700 [Steve Henson]
701
702 *) Implement the Supported Elliptic Curves Extension for
703 ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
704 [Douglas Stebila]
705
706 *) Don't free up OIDs in OBJ_cleanup() if they are in use by EVP_MD or
707 EVP_CIPHER structures to avoid later problems in EVP_cleanup().
708 [Steve Henson]
709
710 *) New utilities pkey and pkeyparam. These are similar to algorithm specific
711 utilities such as rsa, dsa, dsaparam etc except they process any key
712 type.
713 [Steve Henson]
714
715 *) Transfer public key printing routines to EVP_PKEY_ASN1_METHOD. New
716 functions EVP_PKEY_print_public(), EVP_PKEY_print_private(),
717 EVP_PKEY_print_param() to print public key data from an EVP_PKEY
718 structure.
719 [Steve Henson]
720
721 *) Initial support for pluggable public key ASN1.
722 De-spaghettify the public key ASN1 handling. Move public and private
723 key ASN1 handling to a new EVP_PKEY_ASN1_METHOD structure. Relocate
724 algorithm specific handling to a single module within the relevant
725 algorithm directory. Add functions to allow (near) opaque processing
726 of public and private key structures.
727 [Steve Henson]
728
729 *) Implement the Supported Point Formats Extension for
730 ECC ciphersuites from draft-ietf-tls-ecc-12.txt.
731 [Douglas Stebila]
732
733 *) Add initial support for RFC 4279 PSK TLS ciphersuites. Add members
734 for the psk identity [hint] and the psk callback functions to the
735 SSL_SESSION, SSL and SSL_CTX structure.
736
737 New ciphersuites:
738 PSK-RC4-SHA, PSK-3DES-EDE-CBC-SHA, PSK-AES128-CBC-SHA,
739 PSK-AES256-CBC-SHA
740
741 New functions:
742 SSL_CTX_use_psk_identity_hint
743 SSL_get_psk_identity_hint
744 SSL_get_psk_identity
745 SSL_use_psk_identity_hint
746
747 [Mika Kousa and Pasi Eronen of Nokia Corporation]
748
749 *) Add RFC 3161 compliant time stamp request creation, response generation
750 and response verification functionality.
751 [Zoltán Glózik <zglozik@opentsa.org>, The OpenTSA Project]
752
753 *) Add initial support for TLS extensions, specifically for the server_name
754 extension so far. The SSL_SESSION, SSL_CTX, and SSL data structures now
755 have new members for a host name. The SSL data structure has an
756 additional member SSL_CTX *initial_ctx so that new sessions can be
757 stored in that context to allow for session resumption, even after the
758 SSL has been switched to a new SSL_CTX in reaction to a client's
759 server_name extension.
760
761 New functions (subject to change):
762
763 SSL_get_servername()
764 SSL_get_servername_type()
765 SSL_set_SSL_CTX()
766
767 New CTRL codes and macros (subject to change):
768
769 SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
770 - SSL_CTX_set_tlsext_servername_callback()
771 SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG
772 - SSL_CTX_set_tlsext_servername_arg()
773 SSL_CTRL_SET_TLSEXT_HOSTNAME - SSL_set_tlsext_host_name()
774
775 openssl s_client has a new '-servername ...' option.
776
777 openssl s_server has new options '-servername_host ...', '-cert2 ...',
778 '-key2 ...', '-servername_fatal' (subject to change). This allows
779 testing the HostName extension for a specific single host name ('-cert'
780 and '-key' remain fallbacks for handshakes without HostName
781 negotiation). If the unrecogninzed_name alert has to be sent, this by
782 default is a warning; it becomes fatal with the '-servername_fatal'
783 option.
784
785 [Peter Sylvester, Remy Allais, Christophe Renou]
786
787 *) Whirlpool hash implementation is added.
788 [Andy Polyakov]
789
790 *) BIGNUM code on 64-bit SPARCv9 targets is switched from bn(64,64) to
791 bn(64,32). Because of instruction set limitations it doesn't have
792 any negative impact on performance. This was done mostly in order
793 to make it possible to share assembler modules, such as bn_mul_mont
794 implementations, between 32- and 64-bit builds without hassle.
795 [Andy Polyakov]
796
797 *) Move code previously exiled into file crypto/ec/ec2_smpt.c
798 to ec2_smpl.c, and no longer require the OPENSSL_EC_BIN_PT_COMP
799 macro.
800 [Bodo Moeller]
801
802 *) New candidate for BIGNUM assembler implementation, bn_mul_mont,
803 dedicated Montgomery multiplication procedure, is introduced.
804 BN_MONT_CTX is modified to allow bn_mul_mont to reach for higher
805 "64-bit" performance on certain 32-bit targets.
806 [Andy Polyakov]
807
808 *) New option SSL_OP_NO_COMP to disable use of compression selectively
809 in SSL structures. New SSL ctrl to set maximum send fragment size.
810 Save memory by seeting the I/O buffer sizes dynamically instead of
811 using the maximum available value.
812 [Steve Henson]
813
814 *) New option -V for 'openssl ciphers'. This prints the ciphersuite code
815 in addition to the text details.
816 [Bodo Moeller]
817
818 *) Very, very preliminary EXPERIMENTAL support for printing of general
819 ASN1 structures. This currently produces rather ugly output and doesn't
820 handle several customised structures at all.
821 [Steve Henson]
822
823 *) Integrated support for PVK file format and some related formats such
824 as MS PUBLICKEYBLOB and PRIVATEKEYBLOB. Command line switches to support
825 these in the 'rsa' and 'dsa' utilities.
826 [Steve Henson]
827
828 *) Support for PKCS#1 RSAPublicKey format on rsa utility command line.
829 [Steve Henson]
830
831 *) Remove the ancient ASN1_METHOD code. This was only ever used in one
832 place for the (very old) "NETSCAPE" format certificates which are now
833 handled using new ASN1 code equivalents.
834 [Steve Henson]
835
836 *) Let the TLSv1_method() etc. functions return a 'const' SSL_METHOD
837 pointer and make the SSL_METHOD parameter in SSL_CTX_new,
838 SSL_CTX_set_ssl_version and SSL_set_ssl_method 'const'.
839 [Nils Larsch]
840
841 *) Modify CRL distribution points extension code to print out previously
842 unsupported fields. Enhance extension setting code to allow setting of
843 all fields.
844 [Steve Henson]
845
846 *) Add print and set support for Issuing Distribution Point CRL extension.
847 [Steve Henson]
848
849 *) Change 'Configure' script to enable Camellia by default.
850 [NTT]
851
852 Changes between 0.9.8n and 0.9.8o [xx XXX xxxx]
853
854 *) Correct a typo in the CMS ASN1 module which can result in invalid memory
855 access or freeing data twice (CVE-2010-0742)
856 [Steve Henson, Ronald Moesbergen <intercommit@gmail.com>]
857
858 *) Add SHA2 algorithms to SSL_library_init(). SHA2 is becoming far more
859 common in certificates and some applications which only call
860 SSL_library_init and not OpenSSL_add_all_algorithms() will fail.
861 [Steve Henson]
862
863 Changes between 0.9.8m and 0.9.8n [24 Mar 2010]
864
865 *) When rejecting SSL/TLS records due to an incorrect version number, never
866 update s->server with a new major version number. As of
867 - OpenSSL 0.9.8m if 'short' is a 16-bit type,
868 - OpenSSL 0.9.8f if 'short' is longer than 16 bits,
869 the previous behavior could result in a read attempt at NULL when
870 receiving specific incorrect SSL/TLS records once record payload
871 protection is active. (CVE-2010-####)
872 [Bodo Moeller, Adam Langley]
873
874 *) Fix for CVE-2010-0433 where some kerberos enabled versions of OpenSSL
875 could be crashed if the relevant tables were not present (e.g. chrooted).
876 [Tomas Hoger <thoger@redhat.com>]
877
878 Changes between 0.9.8l and 0.9.8m [25 Feb 2010]
879
880 *) Always check bn_wexpend() return values for failure. (CVE-2009-3245)
881 [Martin Olsson, Neel Mehta]
882
883 *) Fix X509_STORE locking: Every 'objs' access requires a lock (to
884 accommodate for stack sorting, always a write lock!).
885 [Bodo Moeller]
886
887 *) On some versions of WIN32 Heap32Next is very slow. This can cause
888 excessive delays in the RAND_poll(): over a minute. As a workaround
889 include a time check in the inner Heap32Next loop too.
890 [Steve Henson]
891
892 *) The code that handled flushing of data in SSL/TLS originally used the
893 BIO_CTRL_INFO ctrl to see if any data was pending first. This caused
894 the problem outlined in PR#1949. The fix suggested there however can
895 trigger problems with buggy BIO_CTRL_WPENDING (e.g. some versions
896 of Apache). So instead simplify the code to flush unconditionally.
897 This should be fine since flushing with no data to flush is a no op.
898 [Steve Henson]
899
900 *) Handle TLS versions 2.0 and later properly and correctly use the
901 highest version of TLS/SSL supported. Although TLS >= 2.0 is some way
902 off ancient servers have a habit of sticking around for a while...
903 [Steve Henson]
904
905 *) Modify compression code so it frees up structures without using the
906 ex_data callbacks. This works around a problem where some applications
907 call CRYPTO_cleanup_all_ex_data() before application exit (e.g. when
908 restarting) then use compression (e.g. SSL with compression) later.
909 This results in significant per-connection memory leaks and
910 has caused some security issues including CVE-2008-1678 and
911 CVE-2009-4355.
912 [Steve Henson]
913
914 *) Constify crypto/cast (i.e., <openssl/cast.h>): a CAST_KEY doesn't
915 change when encrypting or decrypting.
916 [Bodo Moeller]
917
918 *) Add option SSL_OP_LEGACY_SERVER_CONNECT which will allow clients to
919 connect and renegotiate with servers which do not support RI.
920 Until RI is more widely deployed this option is enabled by default.
921 [Steve Henson]
922
923 *) Add "missing" ssl ctrls to clear options and mode.
924 [Steve Henson]
925
926 *) If client attempts to renegotiate and doesn't support RI respond with
927 a no_renegotiation alert as required by RFC5746. Some renegotiating
928 TLS clients will continue a connection gracefully when they receive
929 the alert. Unfortunately OpenSSL mishandled this alert and would hang
930 waiting for a server hello which it will never receive. Now we treat a
931 received no_renegotiation alert as a fatal error. This is because
932 applications requesting a renegotiation might well expect it to succeed
933 and would have no code in place to handle the server denying it so the
934 only safe thing to do is to terminate the connection.
935 [Steve Henson]
936
937 *) Add ctrl macro SSL_get_secure_renegotiation_support() which returns 1 if
938 peer supports secure renegotiation and 0 otherwise. Print out peer
939 renegotiation support in s_client/s_server.
940 [Steve Henson]
941
942 *) Replace the highly broken and deprecated SPKAC certification method with
943 the updated NID creation version. This should correctly handle UTF8.
944 [Steve Henson]
945
946 *) Implement RFC5746. Re-enable renegotiation but require the extension
947 as needed. Unfortunately, SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
948 turns out to be a bad idea. It has been replaced by
949 SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION which can be set with
950 SSL_CTX_set_options(). This is really not recommended unless you
951 know what you are doing.
952 [Eric Rescorla <ekr@networkresonance.com>, Ben Laurie, Steve Henson]
953
954 *) Fixes to stateless session resumption handling. Use initial_ctx when
955 issuing and attempting to decrypt tickets in case it has changed during
956 servername handling. Use a non-zero length session ID when attempting
957 stateless session resumption: this makes it possible to determine if
958 a resumption has occurred immediately after receiving server hello
959 (several places in OpenSSL subtly assume this) instead of later in
960 the handshake.
961 [Steve Henson]
962
963 *) The functions ENGINE_ctrl(), OPENSSL_isservice(),
964 CMS_get1_RecipientRequest() and RAND_bytes() can return <=0 on error
965 fixes for a few places where the return code is not checked
966 correctly.
967 [Julia Lawall <julia@diku.dk>]
968
969 *) Add --strict-warnings option to Configure script to include devteam
970 warnings in other configurations.
971 [Steve Henson]
972
973 *) Add support for --libdir option and LIBDIR variable in makefiles. This
974 makes it possible to install openssl libraries in locations which
975 have names other than "lib", for example "/usr/lib64" which some
976 systems need.
977 [Steve Henson, based on patch from Jeremy Utley]
978
979 *) Don't allow the use of leading 0x80 in OIDs. This is a violation of
980 X690 8.9.12 and can produce some misleading textual output of OIDs.
981 [Steve Henson, reported by Dan Kaminsky]
982
983 *) Delete MD2 from algorithm tables. This follows the recommendation in
984 several standards that it is not used in new applications due to
985 several cryptographic weaknesses. For binary compatibility reasons
986 the MD2 API is still compiled in by default.
987 [Steve Henson]
988
989 *) Add compression id to {d2i,i2d}_SSL_SESSION so it is correctly saved
990 and restored.
991 [Steve Henson]
992
993 *) Rename uni2asc and asc2uni functions to OPENSSL_uni2asc and
994 OPENSSL_asc2uni conditionally on Netware platforms to avoid a name
995 clash.
996 [Guenter <lists@gknw.net>]
997
998 *) Fix the server certificate chain building code to use X509_verify_cert(),
999 it used to have an ad-hoc builder which was unable to cope with anything
1000 other than a simple chain.
1001 [David Woodhouse <dwmw2@infradead.org>, Steve Henson]
1002
1003 *) Don't check self signed certificate signatures in X509_verify_cert()
1004 by default (a flag can override this): it just wastes time without
1005 adding any security. As a useful side effect self signed root CAs
1006 with non-FIPS digests are now usable in FIPS mode.
1007 [Steve Henson]
1008
1009 *) In dtls1_process_out_of_seq_message() the check if the current message
1010 is already buffered was missing. For every new message was memory
1011 allocated, allowing an attacker to perform an denial of service attack
1012 with sending out of seq handshake messages until there is no memory
1013 left. Additionally every future messege was buffered, even if the
1014 sequence number made no sense and would be part of another handshake.
1015 So only messages with sequence numbers less than 10 in advance will be
1016 buffered. (CVE-2009-1378)
1017 [Robin Seggelmann, discovered by Daniel Mentz]
1018
1019 *) Records are buffered if they arrive with a future epoch to be
1020 processed after finishing the corresponding handshake. There is
1021 currently no limitation to this buffer allowing an attacker to perform
1022 a DOS attack with sending records with future epochs until there is no
1023 memory left. This patch adds the pqueue_size() function to detemine
1024 the size of a buffer and limits the record buffer to 100 entries.
1025 (CVE-2009-1377)
1026 [Robin Seggelmann, discovered by Daniel Mentz]
1027
1028 *) Keep a copy of frag->msg_header.frag_len so it can be used after the
1029 parent structure is freed. (CVE-2009-1379)
1030 [Daniel Mentz]
1031
1032 *) Handle non-blocking I/O properly in SSL_shutdown() call.
1033 [Darryl Miles <darryl-mailinglists@netbauds.net>]
1034
1035 *) Add 2.5.4.* OIDs
1036 [Ilya O. <vrghost@gmail.com>]
1037
1038 Changes between 0.9.8k and 0.9.8l [5 Nov 2009]
1039
1040 *) Disable renegotiation completely - this fixes a severe security
1041 problem (CVE-2009-3555) at the cost of breaking all
1042 renegotiation. Renegotiation can be re-enabled by setting
1043 SSL3_FLAGS_ALLOW_UNSAFE_LEGACY_RENEGOTIATION in s3->flags at
1044 run-time. This is really not recommended unless you know what
1045 you're doing.
1046 [Ben Laurie]
1047
5 Changes between 0.9.8j and 0.9.8k [25 Mar 2009] 1048 Changes between 0.9.8j and 0.9.8k [25 Mar 2009]
6 1049
7 *) Don't set val to NULL when freeing up structures, it is freed up by 1050 *) Don't set val to NULL when freeing up structures, it is freed up by
@@ -86,6 +1129,10 @@
86 1129
87 Changes between 0.9.8h and 0.9.8i [15 Sep 2008] 1130 Changes between 0.9.8h and 0.9.8i [15 Sep 2008]
88 1131
1132 *) Fix NULL pointer dereference if a DTLS server received
1133 ChangeCipherSpec as first record (CVE-2009-1386).
1134 [PR #1679]
1135
89 *) Fix a state transitition in s3_srvr.c and d1_srvr.c 1136 *) Fix a state transitition in s3_srvr.c and d1_srvr.c
90 (was using SSL3_ST_CW_CLNT_HELLO_B, should be ..._ST_SW_SRVR_...). 1137 (was using SSL3_ST_CW_CLNT_HELLO_B, should be ..._ST_SW_SRVR_...).
91 [Nagendra Modadugu] 1138 [Nagendra Modadugu]
@@ -1489,19 +2536,6 @@
1489 differing sizes. 2536 differing sizes.
1490 [Richard Levitte] 2537 [Richard Levitte]
1491 2538
1492 Changes between 0.9.7m and 0.9.7n [xx XXX xxxx]
1493
1494 *) In the SSL/TLS server implementation, be strict about session ID
1495 context matching (which matters if an application uses a single
1496 external cache for different purposes). Previously,
1497 out-of-context reuse was forbidden only if SSL_VERIFY_PEER was
1498 set. This did ensure strict client verification, but meant that,
1499 with applications using a single external cache for quite
1500 different requirements, clients could circumvent ciphersuite
1501 restrictions for a given session ID context by starting a session
1502 in a different context.
1503 [Bodo Moeller]
1504
1505 Changes between 0.9.7l and 0.9.7m [23 Feb 2007] 2539 Changes between 0.9.7l and 0.9.7m [23 Feb 2007]
1506 2540
1507 *) Cleanse PEM buffers before freeing them since they may contain 2541 *) Cleanse PEM buffers before freeing them since they may contain
diff --git a/src/lib/libssl/src/CHANGES.SSLeay b/src/lib/libssl/src/CHANGES.SSLeay
index dbb80b003d..ca5cd72976 100644
--- a/src/lib/libssl/src/CHANGES.SSLeay
+++ b/src/lib/libssl/src/CHANGES.SSLeay
@@ -148,7 +148,7 @@ eric (about to go bushwalking for the 4 day easter break :-)
148 This would tend to cause memory overwrites since SSLv3 has 148 This would tend to cause memory overwrites since SSLv3 has
149 a maximum packet size of 16k. If your program uses 149 a maximum packet size of 16k. If your program uses
150 buffers <= 16k, you would probably never see this problem. 150 buffers <= 16k, you would probably never see this problem.
151 - Fixed a new errors that were cause by malloc() not returning 151 - Fixed a few errors that were cause by malloc() not returning
152 0 initialised memory.. 152 0 initialised memory..
153 - SSL_OP_NETSCAPE_CA_DN_BUG was being switched on when using 153 - SSL_OP_NETSCAPE_CA_DN_BUG was being switched on when using
154 SSL_CTX_set_options(ssl_ctx,SSL_OP_ALL); which was a bad thing 154 SSL_CTX_set_options(ssl_ctx,SSL_OP_ALL); which was a bad thing
diff --git a/src/lib/libssl/src/Configure b/src/lib/libssl/src/Configure
index c6dbfae482..e3b13b9d43 100644
--- a/src/lib/libssl/src/Configure
+++ b/src/lib/libssl/src/Configure
@@ -6,13 +6,11 @@ eval 'exec perl -S $0 ${1+"$@"}'
6## 6##
7 7
8require 5.000; 8require 5.000;
9eval 'use strict;'; 9use strict;
10
11print STDERR "Warning: perl module strict not found.\n" if ($@);
12 10
13# see INSTALL for instructions. 11# see INSTALL for instructions.
14 12
15my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimental-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [enable-montasm] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]\n"; 13my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimental-<cipher> ...] [-Dxxx] [-lxxx] [-Lxxx] [-fxxx] [-Kxxx] [no-hw-xxx|no-hw] [[no-]threads] [[no-]shared] [[no-]zlib|zlib-dynamic] [no-asm] [no-dso] [no-krb5] [386] [--prefix=DIR] [--openssldir=OPENSSLDIR] [--with-xxx[=vvv]] [--test-sanity] os/compiler[:flags]\n";
16 14
17# Options: 15# Options:
18# 16#
@@ -40,6 +38,8 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimenta
40# --test-sanity Make a number of sanity checks on the data in this file. 38# --test-sanity Make a number of sanity checks on the data in this file.
41# This is a debugging tool for OpenSSL developers. 39# This is a debugging tool for OpenSSL developers.
42# 40#
41# --cross-compile-prefix Add specified prefix to binutils components.
42#
43# no-hw-xxx do not compile support for specific crypto hardware. 43# no-hw-xxx do not compile support for specific crypto hardware.
44# Generic OpenSSL-style methods relating to this support 44# Generic OpenSSL-style methods relating to this support
45# are always compiled but return NULL if the hardware 45# are always compiled but return NULL if the hardware
@@ -56,8 +56,6 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimenta
56# [no-]zlib [don't] compile support for zlib compression. 56# [no-]zlib [don't] compile support for zlib compression.
57# zlib-dynamic Like "zlib", but the zlib library is expected to be a shared 57# zlib-dynamic Like "zlib", but the zlib library is expected to be a shared
58# library and will be loaded in run-time by the OpenSSL library. 58# library and will be loaded in run-time by the OpenSSL library.
59# enable-montasm 0.9.8 branch only: enable Montgomery x86 assembler backport
60# from 0.9.9
61# 386 generate 80386 code 59# 386 generate 80386 code
62# no-sse2 disables IA-32 SSE2 code, above option implies no-sse2 60# no-sse2 disables IA-32 SSE2 code, above option implies no-sse2
63# no-<cipher> build without specified algorithm (rsa, idea, rc5, ...) 61# no-<cipher> build without specified algorithm (rsa, idea, rc5, ...)
@@ -106,6 +104,8 @@ my $usage="Usage: Configure [no-<cipher> ...] [enable-<cipher> ...] [experimenta
106 104
107my $gcc_devteam_warn = "-Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DOPENSSL_NO_DEPRECATED"; 105my $gcc_devteam_warn = "-Wall -pedantic -DPEDANTIC -Wno-long-long -Wsign-compare -Wmissing-prototypes -Wshadow -Wformat -Werror -DCRYPTO_MDEBUG_ALL -DCRYPTO_MDEBUG_ABORT -DREF_CHECK -DOPENSSL_NO_DEPRECATED";
108 106
107my $strict_warnings = 0;
108
109my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL"; 109my $x86_gcc_des="DES_PTR DES_RISC1 DES_UNROLL";
110 110
111# MD2_CHAR slags pentium pros 111# MD2_CHAR slags pentium pros
@@ -123,14 +123,21 @@ my $tlib="-lnsl -lsocket";
123my $bits1="THIRTY_TWO_BIT "; 123my $bits1="THIRTY_TWO_BIT ";
124my $bits2="SIXTY_FOUR_BIT "; 124my $bits2="SIXTY_FOUR_BIT ";
125 125
126my $x86_elf_asm="x86cpuid-elf.o:bn86-elf.o co86-elf.o MAYBE-MO86-elf.o:dx86-elf.o yx86-elf.o:ax86-elf.o:bx86-elf.o:mx86-elf.o:sx86-elf.o s512sse2-elf.o:cx86-elf.o:rx86-elf.o rc4_skey.o:rm86-elf.o:r586-elf.o"; 126my $x86_asm="x86cpuid.o:bn-586.o co-586.o x86-mont.o:des-586.o crypt586.o:aes-586.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o:cmll-x86.o";
127my $x86_coff_asm="x86cpuid-cof.o:bn86-cof.o co86-cof.o MAYBE-MO86-cof.o:dx86-cof.o yx86-cof.o:ax86-cof.o:bx86-cof.o:mx86-cof.o:sx86-cof.o s512sse2-cof.o:cx86-cof.o:rx86-cof.o rc4_skey.o:rm86-cof.o:r586-cof.o";
128my $x86_out_asm="x86cpuid-out.o:bn86-out.o co86-out.o MAYBE-MO86-out.o:dx86-out.o yx86-out.o:ax86-out.o:bx86-out.o:mx86-out.o:sx86-out.o s512sse2-out.o:cx86-out.o:rx86-out.o rc4_skey.o:rm86-out.o:r586-out.o";
129 127
130my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o::"; 128my $x86_elf_asm="$x86_asm:elf";
131my $ia64_asm=":bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o:::sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o::";
132 129
133my $no_asm="::::::::::"; 130my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o";
131my $ia64_asm="ia64cpuid.o:bn-ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o:::::void";
132my $sparcv9_asm="sparcv9cap.o sparccpuid.o:bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o:des_enc-sparc.o fcrypt_b.o:aes_core.o aes_cbc.o aes-sparcv9.o:::sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o:::::::void";
133my $sparcv8_asm=":sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::::void";
134my $alpha_asm="alphacpuid.o:bn_asm.o alpha-mont.o::::::::::::void";
135my $mips3_asm=":bn-mips3.o::::::::::::void";
136my $s390x_asm="s390xcap.o s390xcpuid.o:bn-s390x.o s390x-mont.o::aes-s390x.o:::sha1-s390x.o sha256-s390x.o sha512-s390x.o::rc4-s390x.o:::::void";
137my $armv4_asm=":bn_asm.o armv4-mont.o::aes_cbc.o aes-armv4.o:::sha1-armv4-large.o sha256-armv4.o sha512-armv4.o:::::::void";
138my $ppc32_asm="ppccpuid.o:bn-ppc.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o::::::";
139my $ppc64_asm="ppccpuid.o:bn-ppc.o ppc-mont.o::aes_core.o aes_cbc.o aes-ppc.o:::sha1-ppc.o sha256-ppc.o sha512-ppc.o::::::";
140my $no_asm=":::::::::::::void";
134 141
135# As for $BSDthreads. Idea is to maintain "collective" set of flags, 142# As for $BSDthreads. Idea is to maintain "collective" set of flags,
136# which would cover all BSD flavors. -pthread applies to them all, 143# which would cover all BSD flavors. -pthread applies to them all,
@@ -141,7 +148,7 @@ my $no_asm="::::::::::";
141# seems to be sufficient? 148# seems to be sufficient?
142my $BSDthreads="-pthread -D_THREAD_SAFE -D_REENTRANT"; 149my $BSDthreads="-pthread -D_THREAD_SAFE -D_REENTRANT";
143 150
144#config-string $cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $cpuid_obj : $bn_obj : $des_obj : $aes_obj : $bf_obj : $md5_obj : $sha1_obj : $cast_obj : $rc4_obj : $rmd160_obj : $rc5_obj : $dso_scheme : $shared_target : $shared_cflag : $shared_ldflag : $shared_extension : $ranlib : $arflags 151#config-string $cc : $cflags : $unistd : $thread_cflag : $sys_id : $lflags : $bn_ops : $cpuid_obj : $bn_obj : $des_obj : $aes_obj : $bf_obj : $md5_obj : $sha1_obj : $cast_obj : $rc4_obj : $rmd160_obj : $rc5_obj : $wp_obj : $cmll_obj : $dso_scheme : $shared_target : $shared_cflag : $shared_ldflag : $shared_extension : $ranlib : $arflags : $multilib
145 152
146my %table=( 153my %table=(
147# File 'TABLE' (created by 'make TABLE') contains the data from this list, 154# File 'TABLE' (created by 'make TABLE') contains the data from this list,
@@ -156,28 +163,32 @@ my %table=(
156# Our development configs 163# Our development configs
157"purify", "purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::", 164"purify", "purify gcc:-g -DPURIFY -Wall::(unknown)::-lsocket -lnsl::::",
158"debug", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -ggdb -g2 -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror::(unknown)::-lefence::::", 165"debug", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -ggdb -g2 -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror::(unknown)::-lefence::::",
159"debug-ben", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown):::::bn86-elf.o co86-elf.o", 166"debug-ben", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG_UNUSED -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown):::::bn86-elf.o co86-elf.o",
160"debug-ben-openbsd","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::", 167"debug-ben-openbsd","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
161"debug-ben-openbsd-debug","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::", 168"debug-ben-openbsd-debug","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DOPENSSL_OPENBSD_DEV_CRYPTO -DOPENSSL_NO_ASM -g3 -O2 -pedantic -Wall -Wshadow -Werror -pipe::(unknown)::::",
162"debug-ben-debug", "gcc:$gcc_devteam_warn -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -g3 -O2 -pipe::(unknown)::::::", 169"debug-ben-debug", "gcc44:$gcc_devteam_warn -DBN_DEBUG -DCONF_DEBUG -DDEBUG_SAFESTACK -DDEBUG_UNUSED -g3 -O2 -pipe::(unknown)::::::",
170"debug-ben-no-opt", "gcc: -Wall -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG -Werror -DL_ENDIAN -DTERMIOS -Wall -g3::(unknown)::::::",
163"debug-ben-strict", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe::(unknown)::::::", 171"debug-ben-strict", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DCONST_STRICT -O2 -Wall -Wshadow -Werror -Wpointer-arith -Wcast-qual -Wwrite-strings -pipe::(unknown)::::::",
164"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}", 172"debug-rse","cc:-DTERMIOS -DL_ENDIAN -pipe -O -g -ggdb3 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
165"debug-bodo", "gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -march=i486 -pedantic -Wshadow -Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}", 173"debug-bodo", "gcc:-DL_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBIO_PAIR_DEBUG -DPEDANTIC -g -march=i486 -pedantic -Wshadow -Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion::-D_REENTRANT:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}",
166"debug-ulf", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DBN_DEBUG_RAND -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations:::CYGWIN32:::${no_asm}:win32:cygwin-shared:::.dll", 174"debug-ulf", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DBN_DEBUG_RAND -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations:::CYGWIN32:::${no_asm}:win32:cygwin-shared:::.dll",
167"debug-steve64", "gcc:$gcc_devteam_warn -m64 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 175"debug-steve64", "gcc:$gcc_devteam_warn -m64 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
168"debug-steve32", "gcc:$gcc_devteam_warn -m32 -DL_ENDIAN -DCONF_DEBUG -DDEBUG_SAFESTACK -g -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 176"debug-steve32", "gcc:$gcc_devteam_warn -m32 -DL_ENDIAN -DCONF_DEBUG -DDEBUG_SAFESTACK -g -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
169"debug-steve-opt", "gcc:$gcc_devteam_warn -m64 -O3 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 177"debug-steve-opt", "gcc:$gcc_devteam_warn -m64 -O3 -DL_ENDIAN -DTERMIO -DCONF_DEBUG -DDEBUG_SAFESTACK -g -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
170"debug-steve", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DPEDANTIC -m32 -g -pedantic -Wno-long-long -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared",
171"debug-steve-linux-pseudo64", "gcc:-DL_ENDIAN -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DDEBUG_SAFESTACK -DCRYPTO_MDEBUG_ALL -DOPENSSL_NO_ASM -g -mcpu=i486 -Wall -Werror -Wshadow -pipe::-D_REENTRANT::-rdynamic -ldl:SIXTY_FOUR_BIT:${no_asm}:dlfcn:linux-shared",
172"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 178"debug-levitte-linux-elf","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
173"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 179"debug-levitte-linux-noasm","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
174"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 180"debug-levitte-linux-elf-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
175"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 181"debug-levitte-linux-noasm-extreme","gcc:-DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
176"debug-geoff","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 182"debug-geoff32","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -DMD32_REG_T=int -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:BN_LLONG:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
177"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn", 183"debug-geoff64","gcc:-DBN_DEBUG -DBN_DEBUG_RAND -DBN_STRICT -DPURIFY -DOPENSSL_NO_DEPRECATED -DOPENSSL_NO_ASM -DOPENSSL_NO_INLINE_ASM -DL_ENDIAN -DTERMIO -DPEDANTIC -DMD32_REG_T=int -O1 -ggdb2 -Wall -Werror -Wundef -pedantic -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align -Wsign-compare -Wmissing-prototypes -Wmissing-declarations -Wno-long-long::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
178"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn", 184"debug-linux-pentium","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentium -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
179"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 185"debug-linux-ppro","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -mcpu=pentiumpro -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn",
180"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 186"debug-linux-elf","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
187"debug-linux-elf-noefence","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -g -march=i486 -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
188"debug-linux-ia32-aes", "gcc:-DAES_EXPERIMENTAL -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:x86cpuid.o:bn-586.o co-586.o x86-mont.o:des-586.o crypt586.o:aes_x86core.o aes_cbc.o:bf-586.o:md5-586.o:sha1-586.o sha256-586.o sha512-586.o:cast-586.o:rc4-586.o:rmd-586.o:rc5-586.o:wp_block.o wp-mmx.o::elf:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
189"debug-linux-generic32","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DTERMIO -g -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
190"debug-linux-generic64","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DTERMIO -g -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
191"debug-linux-x86_64", "gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -m64 -DL_ENDIAN -DTERMIO -g -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
181"dist", "cc:-O::(unknown)::::::", 192"dist", "cc:-O::(unknown)::::::",
182 193
183# Basic configs that should work on any (32 and less bit) box 194# Basic configs that should work on any (32 and less bit) box
@@ -185,8 +196,8 @@ my %table=(
185"cc", "cc:-O::(unknown)::::::", 196"cc", "cc:-O::(unknown)::::::",
186 197
187####VOS Configurations 198####VOS Configurations
188"vos-gcc","gcc:-O3 -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DB_ENDIAN::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:", 199"vos-gcc","gcc:-O3 -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:",
189"debug-vos-gcc","gcc:-O0 -g -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -DB_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:", 200"debug-vos-gcc","gcc:-O0 -g -Wall -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG::(unknown):VOS:-Wl,-map:BN_LLONG:${no_asm}:::::.so:",
190 201
191#### Solaris x86 with GNU C setups 202#### Solaris x86 with GNU C setups
192# -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it 203# -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have to do it
@@ -203,33 +214,33 @@ my %table=(
203# actually recommend to consider using gcc shared build even with vendor 214# actually recommend to consider using gcc shared build even with vendor
204# compiler:-) 215# compiler:-)
205# <appro@fy.chalmers.se> 216# <appro@fy.chalmers.se>
206"solaris64-x86_64-gcc","gcc:-m64 -O3 -Wall -DL_ENDIAN -DMD32_REG_T=int::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 217"solaris64-x86_64-gcc","gcc:-m64 -O3 -Wall -DL_ENDIAN -DMD32_REG_T=int::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:solaris-shared:-fPIC:-m64 -shared -static-libgcc:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
207 218
208#### Solaris x86 with Sun C setups 219#### Solaris x86 with Sun C setups
209"solaris-x86-cc","cc:-fast -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 220"solaris-x86-cc","cc:-fast -O -Xa::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
210"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 221"solaris64-x86_64-cc","cc:-fast -xarch=amd64 -xstrconst -Xa -DL_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:solaris-shared:-KPIC:-xarch=amd64 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
211 222
212#### SPARC Solaris with GNU C setups 223#### SPARC Solaris with GNU C setups
213"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 224"solaris-sparcv7-gcc","gcc:-O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
214"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 225"solaris-sparcv8-gcc","gcc:-mv8 -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
215# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc 226# -m32 should be safe to add as long as driver recognizes -mcpu=ultrasparc
216"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 227"solaris-sparcv9-gcc","gcc:-m32 -mcpu=ultrasparc -O3 -fomit-frame-pointer -Wall -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
217"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 228"solaris64-sparcv9-gcc","gcc:-m64 -mcpu=ultrasparc -O3 -Wall -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-m64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/64",
218#### 229####
219"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 230"debug-solaris-sparcv8-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -O -g -mv8 -Wall -DB_ENDIAN::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
220"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 231"debug-solaris-sparcv9-gcc","gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -DPEDANTIC -O -g -mcpu=ultrasparc -pedantic -ansi -Wall -Wshadow -Wno-long-long -D__EXTENSIONS__ -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
221 232
222#### SPARC Solaris with Sun C setups 233#### SPARC Solaris with Sun C setups
223# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2. 234# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
224# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8 235# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
225# SC5.0 note: Compiler common patch 107357-01 or later is required! 236# SC5.0 note: Compiler common patch 107357-01 or later is required!
226"solaris-sparcv7-cc","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 237"solaris-sparcv7-cc","cc:-xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${no_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
227"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 238"solaris-sparcv8-cc","cc:-xarch=v8 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
228"solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 239"solaris-sparcv9-cc","cc:-xtarget=ultra -xarch=v8plus -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
229"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs", 240"solaris64-sparcv9-cc","cc:-xtarget=ultra -xarch=v9 -xO5 -xstrconst -xdepend -Xa -DB_ENDIAN::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-xarch=v9 -G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):/usr/ccs/bin/ar rs::/64",
230#### 241####
231"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8.o::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 242"debug-solaris-sparcv8-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xarch=v8 -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
232"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR::sparcv8plus.o::::::::::dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 243"debug-solaris-sparcv9-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG_ALL -xtarget=ultra -xarch=v8plus -g -O -xstrconst -Xa -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-lsocket -lnsl -ldl:BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:solaris-shared:-KPIC:-G -dy -z text:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
233 244
234#### SunOS configs, assuming sparc for the gcc one. 245#### SunOS configs, assuming sparc for the gcc one.
235#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::", 246#"sunos-cc", "cc:-O4 -DNOPROTO -DNOCONST::(unknown):SUNOS::DES_UNROLL:${no_asm}::",
@@ -242,11 +253,11 @@ my %table=(
242#### IRIX 6.x configs 253#### IRIX 6.x configs
243# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke 254# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
244# './Configure irix-cc -o32' manually. 255# './Configure irix-cc -o32' manually.
245"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 256"irix-mips3-gcc","gcc:-mabi=n32 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::MD2_CHAR RC4_INDEX RC4_CHAR RC4_CHUNK_LL DES_UNROLL DES_RISC2 DES_PTR BF_PTR SIXTY_FOUR_BIT:${mips3_asm}:dlfcn:irix-shared::-mabi=n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32",
246"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT::bn-mips3.o::::::::::dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 257"irix-mips3-cc", "cc:-n32 -mips3 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::DES_PTR RC4_CHAR RC4_CHUNK_LL DES_RISC2 DES_UNROLL BF_PTR SIXTY_FOUR_BIT:${mips3_asm}:dlfcn:irix-shared::-n32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::32",
247# N64 ABI builds. 258# N64 ABI builds.
248"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 259"irix64-mips4-gcc","gcc:-mabi=64 -mips4 -O3 -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips3_asm}:dlfcn:irix-shared::-mabi=64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
249"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG::bn-mips3.o::::::::::dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 260"irix64-mips4-cc", "cc:-64 -mips4 -O2 -use_readonly_const -G0 -rdata_shared -DTERMIOS -DB_ENDIAN -DBN_DIV3W::-D_SGI_MP_SOURCE:::RC4_CHAR RC4_CHUNK DES_RISC2 DES_UNROLL SIXTY_FOUR_BIT_LONG:${mips3_asm}:dlfcn:irix-shared::-64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
250 261
251#### Unified HP-UX ANSI C configs. 262#### Unified HP-UX ANSI C configs.
252# Special notes: 263# Special notes:
@@ -279,8 +290,8 @@ my %table=(
279# Since there is mention of this in shlib/hpux10-cc.sh 290# Since there is mention of this in shlib/hpux10-cc.sh
280"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 291"hpux-parisc-cc-o4","cc:-Ae +O4 +ESlit -z -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
281"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 292"hpux-parisc-gcc","gcc:-O3 -DB_ENDIAN -DBN_DIV2W::-D_REENTRANT::-Wl,+s -ldld:BN_LLONG DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
282"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1::pa-risc2.o::::::::::dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 293"hpux-parisc2-gcc","gcc:-march=2.0 -O3 -DB_ENDIAN -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT RC4_CHAR RC4_CHUNK DES_PTR DES_UNROLL DES_RISC1::pa-risc2.o::::::::::::void:dl:hpux-shared:-fPIC:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
283"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 294"hpux64-parisc2-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::::void:dlfcn:hpux-shared:-fpic:-shared:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_64",
284 295
285# More attempts at unified 10.X and 11.X targets for HP C compiler. 296# More attempts at unified 10.X and 11.X targets for HP C compiler.
286# 297#
@@ -288,17 +299,17 @@ my %table=(
288# Kevin Steves <ks@hp.se> 299# Kevin Steves <ks@hp.se>
289"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 300"hpux-parisc-cc","cc:+O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
290"hpux-parisc1_0-cc","cc:+DAportable +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 301"hpux-parisc1_0-cc","cc:+DAportable +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY::-D_REENTRANT::-Wl,+s -ldld:MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
291"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2.o::::::::::dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 302"hpux-parisc2-cc","cc:+DA2.0 +DS2.0 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-Wl,+s -ldld:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2.o::::::::::::void:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
292"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 303"hpux64-parisc2-cc","cc:+DD64 +O3 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX RC4_CHAR DES_UNROLL DES_RISC1 DES_INT::pa-risc2W.o::::::::::::void:dlfcn:hpux-shared:+Z:+DD64 -b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/pa20_64",
293 304
294# HP/UX IA-64 targets 305# HP/UX IA-64 targets
295"hpux-ia64-cc","cc:-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD32 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 306"hpux-ia64-cc","cc:-Ae +DD32 +O2 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD32 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux32",
296# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with 307# Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted with
297# with debugging of the following config. 308# with debugging of the following config.
298"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 309"hpux64-ia64-cc","cc:-Ae +DD64 +O3 +Olit=all -z -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:+Z:+DD64 -b:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux64",
299# GCC builds... 310# GCC builds...
300"hpux-ia64-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 311"hpux-ia64-gcc","gcc:-O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux32",
301"hpux64-ia64-gcc","gcc:-mlp64 -O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-mlp64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 312"hpux64-ia64-gcc","gcc:-mlp64 -O3 -DB_ENDIAN -D_REENTRANT::::-ldl:SIXTY_FOUR_BIT_LONG MD2_CHAR RC4_INDEX DES_UNROLL DES_RISC1 DES_INT:${ia64_asm}:dlfcn:hpux-shared:-fpic:-mlp64 -shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::/hpux64",
302 313
303# Legacy HPUX 9.X configs... 314# Legacy HPUX 9.X configs...
304"hpux-cc", "cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O2 -z::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 315"hpux-cc", "cc:-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY -Ae +ESlit +O2 -z::(unknown)::-Wl,+s -ldld:DES_PTR DES_UNROLL DES_RISC1:${no_asm}:dl:hpux-shared:+Z:-b:.sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
@@ -316,9 +327,9 @@ my %table=(
316# 327#
317# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version 328# For gcc, the following gave a %50 speedup on a 164 over the 'DES_INT' version
318# 329#
319"osf1-alpha-gcc", "gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${no_asm}:dlfcn:alpha-osf1-shared:::.so", 330"osf1-alpha-gcc", "gcc:-O3::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_RISC1:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
320"osf1-alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${no_asm}:dlfcn:alpha-osf1-shared:::.so", 331"osf1-alpha-cc", "cc:-std1 -tune host -O4 -readonly_strings::(unknown):::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared:::.so",
321"tru64-alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${no_asm}:dlfcn:alpha-osf1-shared::-msym:.so", 332"tru64-alpha-cc", "cc:-std1 -tune host -fast -readonly_strings::-pthread:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${alpha_asm}:dlfcn:alpha-osf1-shared::-msym:.so",
322 333
323#### 334####
324#### Variety of LINUX:-) 335#### Variety of LINUX:-)
@@ -326,27 +337,31 @@ my %table=(
326# *-generic* is endian-neutral target, but ./config is free to 337# *-generic* is endian-neutral target, but ./config is free to
327# throw in -D[BL]_ENDIAN, whichever appropriate... 338# throw in -D[BL]_ENDIAN, whichever appropriate...
328"linux-generic32","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 339"linux-generic32","gcc:-DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
329"linux-ppc", "gcc:-DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc32.o::::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 340"linux-ppc", "gcc:-DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc32_asm}:linux32:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
341# It's believed that majority of ARM toolchains predefine appropriate -march.
342# If you compiler does not, do complement config command line with one!
343"linux-armv4", "gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${armv4_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
330#### IA-32 targets... 344#### IA-32 targets...
331"linux-ia32-icc", "icc:-DL_ENDIAN -DTERMIO -O2 -no_cpprt::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 345"linux-ia32-icc", "icc:-DL_ENDIAN -DTERMIO -O2 -no_cpprt::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-KPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
332"linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 346"linux-elf", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
333"linux-aout", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}", 347"linux-aout", "gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -march=i486 -Wall::(unknown):::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out",
334#### 348####
335"linux-generic64","gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 349"linux-generic64","gcc:-DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
336"linux-ppc64", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL::linux_ppc64.o::::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 350"linux-ppc64", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${ppc64_asm}:linux64:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
337"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 351"linux-ia64", "gcc:-DL_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
338"linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 352"linux-ia64-ecc","ecc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
339"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 353"linux-ia64-icc","icc:-DL_ENDIAN -DTERMIO -O2 -Wall -no_cpprt::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_INT:${ia64_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
340"linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 354"linux-x86_64", "gcc:-m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
355"linux-s390x", "gcc:-m64 -DB_ENDIAN -DTERMIO -O3 -Wall::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${s390x_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
341#### SPARC Linux setups 356#### SPARC Linux setups
342# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently 357# Ray Miller <ray.miller@computing-services.oxford.ac.uk> has patiently
343# assisted with debugging of following two configs. 358# assisted with debugging of following two configs.
344"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 359"linux-sparcv8","gcc:-mv8 -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -DBN_DIV2W::-D_REENTRANT::-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv8_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
345# it's a real mess with -mcpu=ultrasparc option under Linux, but 360# it's a real mess with -mcpu=ultrasparc option under Linux, but
346# -Wa,-Av8plus should do the trick no matter what. 361# -Wa,-Av8plus should do the trick no matter what.
347"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::sparcv8plus.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 362"linux-sparcv9","gcc:-m32 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall -Wa,-Av8plus -DBN_DIV2W::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m32:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
348# GCC 3.1 is a requirement 363# GCC 3.1 is a requirement
349"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::::::::::::dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 364"linux64-sparcv9","gcc:-m64 -mcpu=ultrasparc -DB_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT:ULTRASPARC:-ldl:BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL BF_PTR:${sparcv9_asm}:dlfcn:linux-shared:-fPIC:-m64:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):::64",
350#### Alpha Linux with GNU C and Compaq C setups 365#### Alpha Linux with GNU C and Compaq C setups
351# Special notes: 366# Special notes:
352# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you 367# - linux-alpha+bwx-gcc is ment to be used from ./config only. If you
@@ -360,25 +375,25 @@ my %table=(
360# 375#
361# <appro@fy.chalmers.se> 376# <appro@fy.chalmers.se>
362# 377#
363"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 378"linux-alpha-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
364"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${no_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 379"linux-alpha+bwx-gcc","gcc:-O3 -DL_ENDIAN -DTERMIO::-D_REENTRANT::-ldl:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_RISC1 DES_UNROLL:${alpha_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
365"linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}", 380"linux-alpha-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
366"linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${no_asm}", 381"linux-alpha+bwx-ccc","ccc:-fast -readonly_strings -DL_ENDIAN -DTERMIO::-D_REENTRANT:::SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL:${alpha_asm}",
367 382
368#### *BSD [do see comment about ${BSDthreads} above!] 383#### *BSD [do see comment about ${BSDthreads} above!]
369"BSD-generic32","gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 384"BSD-generic32","gcc:-DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
370"BSD-x86", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 385"BSD-x86", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
371"BSD-x86-elf", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 386"BSD-x86-elf", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -Wall::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
372"debug-BSD-x86-elf", "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 387"debug-BSD-x86-elf", "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall -g::${BSDthreads}:::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
373"BSD-sparcv8", "gcc:-DB_ENDIAN -DTERMIOS -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL::sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 388"BSD-sparcv8", "gcc:-DB_ENDIAN -DTERMIOS -O3 -mv8 -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_INDEX DES_INT DES_UNROLL:${sparcv8_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
374 389
375"BSD-generic64","gcc:-DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 390"BSD-generic64","gcc:-DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
376# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it 391# -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
377# simply *happens* to work around a compiler bug in gcc 3.3.3, 392# simply *happens* to work around a compiler bug in gcc 3.3.3,
378# triggered by RIPEMD160 code. 393# triggered by RIPEMD160 code.
379"BSD-sparc64", "gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:::des_enc-sparc.o fcrypt_b.o:::::::::dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 394"BSD-sparc64", "gcc:-DB_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::BN_LLONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR:${sparcv9_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
380"BSD-ia64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 395"BSD-ia64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_UNROLL DES_INT:${ia64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
381"BSD-x86_64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 396"BSD-x86_64", "gcc:-DL_ENDIAN -DTERMIOS -O3 -DMD32_REG_T=int -Wall::${BSDthreads}:::SIXTY_FOUR_BIT_LONG RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:elf:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
382 397
383"bsdi-elf-gcc", "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall::(unknown)::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", 398"bsdi-elf-gcc", "gcc:-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall::(unknown)::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
384 399
@@ -390,7 +405,12 @@ my %table=(
390 405
391# QNX 406# QNX
392"qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:", 407"qnx4", "cc:-DL_ENDIAN -DTERMIO::(unknown):::${x86_gcc_des} ${x86_gcc_opts}:",
393"qnx6", "cc:-DL_ENDIAN -DTERMIOS::(unknown)::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:", 408"QNX6", "gcc:-DTERMIOS::::-lsocket::${no_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
409"QNX6-i386", "gcc:-DL_ENDIAN -DTERMIOS -O2 -Wall::::-lsocket:${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:bsd-gcc-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
410
411# BeOS
412"beos-x86-r5", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lnet:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC -DPIC:-shared:.so",
413"beos-x86-bone", "gcc:-DL_ENDIAN -DTERMIOS -O3 -fomit-frame-pointer -mcpu=pentium -Wall::-D_REENTRANT:BEOS:-lbe -lbind -lsocket:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:beos:beos-shared:-fPIC:-shared:.so",
394 414
395#### SCO/Caldera targets. 415#### SCO/Caldera targets.
396# 416#
@@ -414,12 +434,12 @@ my %table=(
414 434
415#### IBM's AIX. 435#### IBM's AIX.
416"aix3-cc", "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::", 436"aix3-cc", "cc:-O -DB_ENDIAN -qmaxmem=16384::(unknown):AIX::BN_LLONG RC4_CHAR:::",
417"aix-gcc", "gcc:-O -DB_ENDIAN::-pthread:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32", 437"aix-gcc", "gcc:-O -DB_ENDIAN::-pthread:AIX::BN_LLONG RC4_CHAR:${ppc32_asm}:aix32:dlfcn:aix-shared::-shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X32",
418"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-pthread:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-maix64 -shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64", 438"aix64-gcc","gcc:-maix64 -O -DB_ENDIAN::-pthread:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${ppc64_asm}:aix64:dlfcn:aix-shared::-maix64 -shared -Wl,-G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X64",
419# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE 439# Below targets assume AIX 5. Idea is to effectively disregard $OBJECT_MODE
420# at build time. $OBJECT_MODE is respected at ./config stage! 440# at build time. $OBJECT_MODE is respected at ./config stage!
421"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR::aix_ppc32.o::::::::::dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32", 441"aix-cc", "cc:-q32 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::BN_LLONG RC4_CHAR:${ppc32_asm}:aix32:dlfcn:aix-shared::-q32 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 32",
422"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR::aix_ppc64.o::::::::::dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64", 442"aix64-cc", "cc:-q64 -O -DB_ENDIAN -qmaxmem=16384 -qro -qroconst::-qthreaded:AIX::SIXTY_FOUR_BIT_LONG RC4_CHAR:${ppc64_asm}:aix64:dlfcn:aix-shared::-q64 -G:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)::-X 64",
423 443
424# 444#
425# Cray T90 and similar (SDSC) 445# Cray T90 and similar (SDSC)
@@ -467,28 +487,39 @@ my %table=(
467# 487#
468"OS390-Unix","c89.sh:-O -DB_ENDIAN -DCHARSET_EBCDIC -DNO_SYS_PARAM_H -D_ALL_SOURCE::(unknown):::THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR:::", 488"OS390-Unix","c89.sh:-O -DB_ENDIAN -DCHARSET_EBCDIC -DNO_SYS_PARAM_H -D_ALL_SOURCE::(unknown):::THIRTY_TWO_BIT DES_PTR DES_UNROLL MD2_CHAR RC4_INDEX RC4_CHAR BF_PTR:::",
469 489
470# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
471"VC-WIN64I","cl::::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${no_asm}:win32",
472"VC-WIN64A","cl::::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${no_asm}:win32",
473
474# Visual C targets 490# Visual C targets
475"VC-NT","cl::::WINNT::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32", 491#
492# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
493"VC-WIN64I","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64I::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:ia64cpuid.o:ia64.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o:::::::ias:win32",
494"VC-WIN64A","cl:-W3 -Gs0 -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DUNICODE -D_UNICODE -D_CRT_SECURE_NO_DEPRECATE:::WIN64A::SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:x86_64cpuid.o:bn_asm.o x86_64-mont.o::aes-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o:auto:win32",
495# x86 Win32 target defaults to ANSI API, if you want UNICODE, complement
496# 'perl Configure VC-WIN32' with '-DUNICODE -D_UNICODE'
497"VC-WIN32","cl:-W3 -WX -Gs0 -GF -Gy -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE:::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${x86_asm}:win32n:win32",
498# Unified CE target
499"debug-VC-WIN32","cl:-W3 -WX -Gs0 -GF -Gy -Zi -nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE:::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${x86_asm}:win32n:win32",
476"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32", 500"VC-CE","cl::::WINCE::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
477"VC-WIN32","cl::::WIN32::BN_LLONG RC4_INDEX EXPORT_VAR_AS_FN ${x86_gcc_opts}:${no_asm}:win32",
478 501
479# Borland C++ 4.5 502# Borland C++ 4.5
480"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32", 503"BC-32","bcc32::::WIN32::BN_LLONG DES_PTR RC4_INDEX EXPORT_VAR_AS_FN:${no_asm}:win32",
481 504
482# MinGW 505# MinGW
483"mingw", "gcc:-mno-cygwin -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall -D_WIN32_WINNT=0x333:::MINGW32:-lwsock32 -lgdi32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_coff_asm}:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin -shared:.dll.a", 506"mingw", "gcc:-mno-cygwin -DL_ENDIAN -DWIN32_LEAN_AND_MEAN -fomit-frame-pointer -O3 -march=i486 -Wall::-D_MT:MINGW32:-lws2_32 -lgdi32 -lcrypt32:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts} EXPORT_VAR_AS_FN:${x86_asm}:coff:win32:cygwin-shared:-D_WINDLL -DOPENSSL_USE_APPLINK:-mno-cygwin:.dll.a",
507# As for OPENSSL_USE_APPLINK. Applink makes it possible to use .dll
508# compiled with one compiler with application compiled with another
509# compiler. It's possible to engage Applink support in mingw64 build,
510# but it's not done, because till mingw64 supports structured exception
511# handling, one can't seriously consider its binaries for using with
512# non-mingw64 run-time environment. And as mingw64 is always consistent
513# with itself, Applink is never engaged and can as well be omitted.
514"mingw64", "gcc:-mno-cygwin -DL_ENDIAN -O3 -Wall -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE::-D_MT:MINGW64:-lws2_32 -lgdi32 -lcrypt32:SIXTY_FOUR_BIT RC4_CHUNK_LL DES_INT EXPORT_VAR_AS_FN:${x86_64_asm}:mingw64:win32:cygwin-shared:-D_WINDLL:-mno-cygwin:.dll.a",
484 515
485# UWIN 516# UWIN
486"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32", 517"UWIN", "cc:-DTERMIOS -DL_ENDIAN -O -Wall:::UWIN::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
487 518
488# Cygwin 519# Cygwin
489"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32", 520"Cygwin-pre1.3", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -m486 -Wall::(unknown):CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${no_asm}:win32",
490"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_coff_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a", 521"Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O3 -march=i486 -Wall:::CYGWIN32::BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:coff:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
491"debug-Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:::CYGWIN32:::${no_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a", 522"debug-Cygwin", "gcc:-DTERMIOS -DL_ENDIAN -march=i486 -Wall -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -g -Wformat -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror:::CYGWIN32:::${no_asm}:dlfcn:cygwin-shared:-D_WINDLL:-shared:.dll.a",
492 523
493# NetWare from David Ward (dsward@novell.com) 524# NetWare from David Ward (dsward@novell.com)
494# requires either MetroWerks NLM development tools, or gcc / nlmconv 525# requires either MetroWerks NLM development tools, or gcc / nlmconv
@@ -506,7 +537,7 @@ my %table=(
506"netware-libc-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::", 537"netware-libc-bsdsock-gcc", "i586-netware-gcc:-nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYSNAME_NETWARE -DTERMIO -O2 -Wall:::::BN_LLONG ${x86_gcc_opts}::",
507 538
508# DJGPP 539# DJGPP
509"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_out_asm}:", 540"DJGPP", "gcc:-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall:::MSDOS:-L/dev/env/WATT_ROOT/lib -lwatt:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_asm}:a.out:",
510 541
511# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at> 542# Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
512"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::", 543"ultrix-cc","cc:-std1 -O -Olimit 2500 -DL_ENDIAN::(unknown):::::::",
@@ -516,12 +547,12 @@ my %table=(
516 547
517##### MacOS X (a.k.a. Rhapsody or Darwin) setup 548##### MacOS X (a.k.a. Rhapsody or Darwin) setup
518"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}::", 549"rhapsody-ppc-cc","cc:-O3 -DB_ENDIAN::(unknown):MACOSX_RHAPSODY::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}::",
519"darwin-ppc-cc","cc:-arch ppc -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 550"darwin-ppc-cc","cc:-arch ppc -O3 -DB_ENDIAN -Wa,-force_cpusubtype_ALL::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
520"darwin64-ppc-cc","cc:-arch ppc64 -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc64.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 551"darwin64-ppc-cc","cc:-arch ppc64 -O3 -DB_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc64_asm}:osx64:dlfcn:darwin-shared:-fPIC -fno-common:-arch ppc64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
521"darwin-i386-cc","cc:-arch i386 -O3 -fomit-frame-pointer -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 552"darwin-i386-cc","cc:-arch i386 -O3 -fomit-frame-pointer -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR:${x86_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
522"debug-darwin-i386-cc","cc:-arch i386 -g3 -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 553"debug-darwin-i386-cc","cc:-arch i386 -g3 -DL_ENDIAN::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:BN_LLONG RC4_INT RC4_CHUNK DES_UNROLL BF_PTR:${x86_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch i386 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
523"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -fomit-frame-pointer -DL_ENDIAN -DMD32_REG_T=int -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK BF_PTR2 DES_INT DES_UNROLL:${no_asm}:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 554"darwin64-x86_64-cc","cc:-arch x86_64 -O3 -DL_ENDIAN -DMD32_REG_T=int -Wall::-D_REENTRANT:MACOSX:-Wl,-search_paths_first%:SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL:${x86_64_asm}:macosx:dlfcn:darwin-shared:-fPIC -fno-common:-arch x86_64 -dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
524"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR::osx_ppc32.o::::::::::dlfcn:darwin-shared:-fPIC -fno-common:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib", 555"debug-darwin-ppc-cc","cc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DB_ENDIAN -g -Wall -O::-D_REENTRANT:MACOSX::BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:${ppc32_asm}:osx32:dlfcn:darwin-shared:-fPIC:-dynamiclib:.\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
525 556
526##### A/UX 557##### A/UX
527"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::", 558"aux3-gcc","gcc:-O2 -DTERMIO::(unknown):AUX:-lbsd:RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR:::",
@@ -538,18 +569,22 @@ my %table=(
538##### VxWorks for various targets 569##### VxWorks for various targets
539"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::", 570"vxworks-ppc405","ccppc:-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
540"vxworks-ppc750","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h \$(DEBUG_FLAG):::VXWORKS:-r:::::", 571"vxworks-ppc750","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h \$(DEBUG_FLAG):::VXWORKS:-r:::::",
541"vxworks-ppc750-debug","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g:::VXWORKS:-r:::::", 572"vxworks-ppc750-debug","ccppc:-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h -DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g:::VXWORKS:-r:::::",
542"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::", 573"vxworks-ppc860","ccppc:-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r:::::",
543"vxworks-mipsle","ccmips:-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -DL_ENDIAN -EL -Wl,-EL -mips2 -mno-branch-likely -G 0 -fno-builtin -msoft-float -DCPU=MIPS32 -DMIPSEL -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r::${no_asm}::::::ranlibmips:", 574"vxworks-mipsle","ccmips:-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -DL_ENDIAN -EL -Wl,-EL -mips2 -mno-branch-likely -G 0 -fno-builtin -msoft-float -DCPU=MIPS32 -DMIPSEL -DNO_STRINGS_H -I\$(WIND_BASE)/target/h:::VXWORKS:-r::${no_asm}::::::ranlibmips:",
544 575
545##### Compaq Non-Stop Kernel (Tandem) 576##### Compaq Non-Stop Kernel (Tandem)
546"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::", 577"tandem-c89","c89:-Ww -D__TANDEM -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D_TANDEM_SOURCE -DB_ENDIAN::(unknown):::THIRTY_TWO_BIT:::",
547 578
579# uClinux
580"uClinux-dist","$ENV{'CC'}:\$(CFLAGS)::-D_REENTRANT::\$(LDFLAGS) \$(LDLIBS):BN_LLONG:::::::::::::::$ENV{'LIBSSL_dlfcn'}:linux-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):$ENV{'RANLIB'}::",
581"uClinux-dist64","$ENV{'CC'}:\$(CFLAGS)::-D_REENTRANT::\$(LDFLAGS) \$(LDLIBS):SIXTY_FOUR_BIT_LONG:::::::::::::::$ENV{'LIBSSL_dlfcn'}:linux-shared:-fPIC:-shared:.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR):$ENV{'RANLIB'}::",
582
548); 583);
549 584
550my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A 585my @MK1MF_Builds=qw(VC-WIN64I VC-WIN64A
551 VC-NT VC-CE VC-WIN32 586 VC-NT VC-CE VC-WIN32 debug-VC-WIN32
552 BC-32 OS2-EMX 587 BC-32
553 netware-clib netware-clib-bsdsock 588 netware-clib netware-clib-bsdsock
554 netware-libc netware-libc-bsdsock); 589 netware-libc netware-libc-bsdsock);
555 590
@@ -572,6 +607,9 @@ my $idx_cast_obj = $idx++;
572my $idx_rc4_obj = $idx++; 607my $idx_rc4_obj = $idx++;
573my $idx_rmd160_obj = $idx++; 608my $idx_rmd160_obj = $idx++;
574my $idx_rc5_obj = $idx++; 609my $idx_rc5_obj = $idx++;
610my $idx_wp_obj = $idx++;
611my $idx_cmll_obj = $idx++;
612my $idx_perlasm_scheme = $idx++;
575my $idx_dso_scheme = $idx++; 613my $idx_dso_scheme = $idx++;
576my $idx_shared_target = $idx++; 614my $idx_shared_target = $idx++;
577my $idx_shared_cflag = $idx++; 615my $idx_shared_cflag = $idx++;
@@ -579,23 +617,20 @@ my $idx_shared_ldflag = $idx++;
579my $idx_shared_extension = $idx++; 617my $idx_shared_extension = $idx++;
580my $idx_ranlib = $idx++; 618my $idx_ranlib = $idx++;
581my $idx_arflags = $idx++; 619my $idx_arflags = $idx++;
620my $idx_multilib = $idx++;
582 621
583my $prefix=""; 622my $prefix="";
623my $libdir="";
584my $openssldir=""; 624my $openssldir="";
585my $exe_ext=""; 625my $exe_ext="";
586my $install_prefix=""; 626my $install_prefix= "$ENV{'INSTALL_PREFIX'}";
587my $fipslibdir="/usr/local/ssl/fips-1.0/lib/"; 627my $cross_compile_prefix="";
588my $nofipscanistercheck=0;
589my $fipsdso=0;
590my $fipscanisterinternal="n";
591my $baseaddr="0xFB00000";
592my $no_threads=0; 628my $no_threads=0;
593my $threads=0; 629my $threads=0;
594my $no_shared=0; # but "no-shared" is default 630my $no_shared=0; # but "no-shared" is default
595my $zlib=1; # but "no-zlib" is default 631my $zlib=1; # but "no-zlib" is default
596my $no_krb5=0; # but "no-krb5" is implied unless "--with-krb5-..." is used 632my $no_krb5=0; # but "no-krb5" is implied unless "--with-krb5-..." is used
597my $no_rfc3779=1; # but "no-rfc3779" is default 633my $no_rfc3779=1; # but "no-rfc3779" is default
598my $montasm=1; # but "no-montasm" is default
599my $no_asm=0; 634my $no_asm=0;
600my $no_dso=0; 635my $no_dso=0;
601my $no_gmp=0; 636my $no_gmp=0;
@@ -612,7 +647,6 @@ my $rc2 ="crypto/rc2/rc2.h";
612my $bf ="crypto/bf/bf_locl.h"; 647my $bf ="crypto/bf/bf_locl.h";
613my $bn_asm ="bn_asm.o"; 648my $bn_asm ="bn_asm.o";
614my $des_enc="des_enc.o fcrypt_b.o"; 649my $des_enc="des_enc.o fcrypt_b.o";
615my $fips_des_enc="fips_des_enc.o";
616my $aes_enc="aes_core.o aes_cbc.o"; 650my $aes_enc="aes_core.o aes_cbc.o";
617my $bf_enc ="bf_enc.o"; 651my $bf_enc ="bf_enc.o";
618my $cast_enc="c_enc.o"; 652my $cast_enc="c_enc.o";
@@ -621,26 +655,22 @@ my $rc5_enc="rc5_enc.o";
621my $md5_obj=""; 655my $md5_obj="";
622my $sha1_obj=""; 656my $sha1_obj="";
623my $rmd160_obj=""; 657my $rmd160_obj="";
658my $cmll_enc="camellia.o cmll_misc.o cmll_cbc.o";
624my $processor=""; 659my $processor="";
625my $default_ranlib; 660my $default_ranlib;
626my $perl; 661my $perl;
627my $fips=0;
628 662
629 663
630# All of the following is disabled by default (RC5 was enabled before 0.9.8): 664# All of the following is disabled by default (RC5 was enabled before 0.9.8):
631 665
632my %disabled = ( # "what" => "comment" [or special keyword "experimental"] 666my %disabled = ( # "what" => "comment" [or special keyword "experimental"]
633 "camellia" => "default", 667 "gmp" => "default",
634 "capieng" => "default",
635 "cms" => "default",
636 "gmp" => "default",
637 "jpake" => "experimental", 668 "jpake" => "experimental",
638 "mdc2" => "default", 669 "md2" => "default",
639 "montasm" => "default", # explicit option in 0.9.8 only (implicitly enabled in 0.9.9)
640 "rc5" => "default", 670 "rc5" => "default",
641 "rfc3779" => "default", 671 "rfc3779" => "default",
642 "seed" => "default",
643 "shared" => "default", 672 "shared" => "default",
673 "store" => "experimental",
644 "zlib" => "default", 674 "zlib" => "default",
645 "zlib-dynamic" => "default" 675 "zlib-dynamic" => "default"
646 ); 676 );
@@ -648,8 +678,7 @@ my @experimental = ();
648 678
649# This is what $depflags will look like with the above defaults 679# This is what $depflags will look like with the above defaults
650# (we need this to see if we should advise the user to run "make depend"): 680# (we need this to see if we should advise the user to run "make depend"):
651my $default_depflags = " -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_CMS -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED"; 681my $default_depflags = " -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE";
652
653 682
654# Explicit "no-..." options will be collected in %disabled along with the defaults. 683# Explicit "no-..." options will be collected in %disabled along with the defaults.
655# To remove something from %disabled, use "enable-foo" (unless it's experimental). 684# To remove something from %disabled, use "enable-foo" (unless it's experimental).
@@ -728,8 +757,8 @@ PROCESS_ARGS:
728 { 757 {
729 $disabled{$1} = "option"; 758 $disabled{$1} = "option";
730 } 759 }
731 } 760 }
732 } 761 }
733 elsif (/^enable-(.+)$/ || /^experimental-(.+)$/) 762 elsif (/^enable-(.+)$/ || /^experimental-(.+)$/)
734 { 763 {
735 my $algo = $1; 764 my $algo = $1;
@@ -747,6 +776,10 @@ PROCESS_ARGS:
747 { 776 {
748 exit(&test_sanity()); 777 exit(&test_sanity());
749 } 778 }
779 elsif (/^--strict-warnings/)
780 {
781 $strict_warnings = 1;
782 }
750 elsif (/^reconfigure/ || /^reconf/) 783 elsif (/^reconfigure/ || /^reconf/)
751 { 784 {
752 if (open(IN,"<$Makefile")) 785 if (open(IN,"<$Makefile"))
@@ -772,39 +805,15 @@ PROCESS_ARGS:
772 } 805 }
773 elsif (/^386$/) 806 elsif (/^386$/)
774 { $processor=386; } 807 { $processor=386; }
775 elsif (/^fips$/)
776 {
777 $fips=1;
778 }
779 elsif (/^rsaref$/) 808 elsif (/^rsaref$/)
780 { 809 {
781 # No RSAref support any more since it's not needed. 810 # No RSAref support any more since it's not needed.
782 # The check for the option is there so scripts aren't 811 # The check for the option is there so scripts aren't
783 # broken 812 # broken
784 } 813 }
785 elsif (/^nofipscanistercheck$/)
786 {
787 $fips = 1;
788 $nofipscanistercheck = 1;
789 }
790 elsif (/^fipscanisterbuild$/)
791 {
792 $fips = 1;
793 $nofipscanistercheck = 1;
794 $fipslibdir="";
795 $fipscanisterinternal="y";
796 }
797 elsif (/^fipsdso$/)
798 {
799 $fips = 1;
800 $nofipscanistercheck = 1;
801 $fipslibdir="";
802 $fipscanisterinternal="y";
803 $fipsdso = 1;
804 }
805 elsif (/^[-+]/) 814 elsif (/^[-+]/)
806 { 815 {
807 if (/^-[lL](.*)$/) 816 if (/^-[lL](.*)$/ or /^-Wl,/)
808 { 817 {
809 $libs.=$_." "; 818 $libs.=$_." ";
810 } 819 }
@@ -816,6 +825,10 @@ PROCESS_ARGS:
816 { 825 {
817 $prefix=$1; 826 $prefix=$1;
818 } 827 }
828 elsif (/^--libdir=(.*)$/)
829 {
830 $libdir=$1;
831 }
819 elsif (/^--openssldir=(.*)$/) 832 elsif (/^--openssldir=(.*)$/)
820 { 833 {
821 $openssldir=$1; 834 $openssldir=$1;
@@ -836,13 +849,9 @@ PROCESS_ARGS:
836 { 849 {
837 $withargs{"zlib-include"}="-I$1"; 850 $withargs{"zlib-include"}="-I$1";
838 } 851 }
839 elsif (/^--with-fipslibdir=(.*)$/) 852 elsif (/^--cross-compile-prefix=(.*)$/)
840 {
841 $fipslibdir="$1/";
842 }
843 elsif (/^--with-baseaddr=(.*)$/)
844 { 853 {
845 $baseaddr="$1"; 854 $cross_compile_prefix=$1;
846 } 855 }
847 else 856 else
848 { 857 {
@@ -928,6 +937,12 @@ if (defined($disabled{"tls1"}))
928 $disabled{"tlsext"} = "forced"; 937 $disabled{"tlsext"} = "forced";
929 } 938 }
930 939
940if (defined($disabled{"ec"}) || defined($disabled{"dsa"})
941 || defined($disabled{"dh"}))
942 {
943 $disabled{"gost"} = "forced";
944 }
945
931if ($target eq "TABLE") { 946if ($target eq "TABLE") {
932 foreach $target (sort keys %table) { 947 foreach $target (sort keys %table) {
933 print_table_entry($target); 948 print_table_entry($target);
@@ -951,54 +966,6 @@ print "Configuring for $target\n";
951 966
952&usage if (!defined($table{$target})); 967&usage if (!defined($table{$target}));
953 968
954my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
955my $cc = $fields[$idx_cc];
956# Allow environment CC to override compiler...
957if($ENV{CC}) {
958 $cc = $ENV{CC};
959}
960my $cflags = $fields[$idx_cflags];
961my $unistd = $fields[$idx_unistd];
962my $thread_cflag = $fields[$idx_thread_cflag];
963my $sys_id = $fields[$idx_sys_id];
964my $lflags = $fields[$idx_lflags];
965my $bn_ops = $fields[$idx_bn_ops];
966my $cpuid_obj = $fields[$idx_cpuid_obj];
967my $bn_obj = $fields[$idx_bn_obj];
968my $des_obj = $fields[$idx_des_obj];
969my $aes_obj = $fields[$idx_aes_obj];
970my $bf_obj = $fields[$idx_bf_obj];
971my $md5_obj = $fields[$idx_md5_obj];
972my $sha1_obj = $fields[$idx_sha1_obj];
973my $cast_obj = $fields[$idx_cast_obj];
974my $rc4_obj = $fields[$idx_rc4_obj];
975my $rmd160_obj = $fields[$idx_rmd160_obj];
976my $rc5_obj = $fields[$idx_rc5_obj];
977my $dso_scheme = $fields[$idx_dso_scheme];
978my $shared_target = $fields[$idx_shared_target];
979my $shared_cflag = $fields[$idx_shared_cflag];
980my $shared_ldflag = $fields[$idx_shared_ldflag];
981my $shared_extension = $fields[$idx_shared_extension];
982my $ranlib = $fields[$idx_ranlib];
983my $arflags = $fields[$idx_arflags];
984
985if ($fips)
986 {
987 delete $disabled{"shared"} if ($disabled{"shared"} eq "default");
988 $disabled{"asm"}="forced"
989 if ($target !~ "VC\-.*" &&
990 "$cpuid_obj:$bn_obj:$aes_obj:$des_obj:$sha1_obj" eq "::::");
991 }
992
993foreach (sort @experimental)
994 {
995 my $ALGO;
996 ($ALGO = $_) =~ tr/[a-z]/[A-Z]/;
997
998 # opensslconf.h will set OPENSSL_NO_... unless OPENSSL_EXPERIMENTAL_... is defined
999 $openssl_experimental_defines .= "#define OPENSSL_NO_$ALGO\n";
1000 $cflags .= " -DOPENSSL_EXPERIMENTAL_$ALGO";
1001 }
1002 969
1003foreach (sort (keys %disabled)) 970foreach (sort (keys %disabled))
1004 { 971 {
@@ -1014,8 +981,6 @@ foreach (sort (keys %disabled))
1014 { $no_shared = 1; } 981 { $no_shared = 1; }
1015 elsif (/^zlib$/) 982 elsif (/^zlib$/)
1016 { $zlib = 0; } 983 { $zlib = 0; }
1017 elsif (/^montasm$/)
1018 { $montasm = 0; }
1019 elsif (/^static-engine$/) 984 elsif (/^static-engine$/)
1020 { } 985 { }
1021 elsif (/^zlib-dynamic$/) 986 elsif (/^zlib-dynamic$/)
@@ -1057,31 +1022,31 @@ foreach (sort (keys %disabled))
1057 print "\n"; 1022 print "\n";
1058 } 1023 }
1059 1024
1060my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds; 1025my $exp_cflags = "";
1026foreach (sort @experimental)
1027 {
1028 my $ALGO;
1029 ($ALGO = $_) =~ tr/[a-z]/[A-Z]/;
1061 1030
1062$IsMK1MF=1 if ($target eq "mingw" && $^O ne "cygwin" && !is_msys()); 1031 # opensslconf.h will set OPENSSL_NO_... unless OPENSSL_EXPERIMENTAL_... is defined
1032 $openssl_experimental_defines .= "#define OPENSSL_NO_$ALGO\n";
1033 $exp_cflags .= " -DOPENSSL_EXPERIMENTAL_$ALGO";
1034 }
1063 1035
1064$no_shared = 0 if ($fipsdso && !$IsMK1MF); 1036my $IsMK1MF=scalar grep /^$target$/,@MK1MF_Builds;
1065 1037
1066$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target eq "mingw"); 1038$exe_ext=".exe" if ($target eq "Cygwin" || $target eq "DJGPP" || $target =~ /^mingw/);
1067$exe_ext=".nlm" if ($target =~ /netware/); 1039$exe_ext=".nlm" if ($target =~ /netware/);
1068$exe_ext=".pm" if ($target =~ /vos/); 1040$exe_ext=".pm" if ($target =~ /vos/);
1069if ($openssldir eq "" and $prefix eq "") 1041$openssldir="/usr/local/ssl" if ($openssldir eq "" and $prefix eq "");
1070 {
1071 if ($fips)
1072 {
1073 $openssldir="/usr/local/ssl/fips";
1074 }
1075 else
1076 {
1077 $openssldir="/usr/local/ssl";
1078 }
1079 }
1080$prefix=$openssldir if $prefix eq ""; 1042$prefix=$openssldir if $prefix eq "";
1081 1043
1082$default_ranlib= &which("ranlib") or $default_ranlib="true"; 1044$default_ranlib= &which("ranlib") or $default_ranlib="true";
1083$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl") 1045$perl=$ENV{'PERL'} or $perl=&which("perl5") or $perl=&which("perl")
1084 or $perl="perl"; 1046 or $perl="perl";
1047my $make = $ENV{'MAKE'} || "make";
1048
1049$cross_compile_prefix=$ENV{'CROSS_COMPILE'} if $cross_compile_prefix eq "";
1085 1050
1086chop $openssldir if $openssldir =~ /\/$/; 1051chop $openssldir if $openssldir =~ /\/$/;
1087chop $prefix if $prefix =~ /.\/$/; 1052chop $prefix if $prefix =~ /.\/$/;
@@ -1092,10 +1057,50 @@ $openssldir=$prefix . "/" . $openssldir if $openssldir !~ /(^\/|^[a-zA-Z]:[\\\/]
1092 1057
1093print "IsMK1MF=$IsMK1MF\n"; 1058print "IsMK1MF=$IsMK1MF\n";
1094 1059
1060my @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
1061my $cc = $fields[$idx_cc];
1062# Allow environment CC to override compiler...
1063if($ENV{CC}) {
1064 $cc = $ENV{CC};
1065}
1066my $cflags = $fields[$idx_cflags];
1067my $unistd = $fields[$idx_unistd];
1068my $thread_cflag = $fields[$idx_thread_cflag];
1069my $sys_id = $fields[$idx_sys_id];
1070my $lflags = $fields[$idx_lflags];
1071my $bn_ops = $fields[$idx_bn_ops];
1072my $cpuid_obj = $fields[$idx_cpuid_obj];
1073my $bn_obj = $fields[$idx_bn_obj];
1074my $des_obj = $fields[$idx_des_obj];
1075my $aes_obj = $fields[$idx_aes_obj];
1076my $bf_obj = $fields[$idx_bf_obj];
1077my $md5_obj = $fields[$idx_md5_obj];
1078my $sha1_obj = $fields[$idx_sha1_obj];
1079my $cast_obj = $fields[$idx_cast_obj];
1080my $rc4_obj = $fields[$idx_rc4_obj];
1081my $rmd160_obj = $fields[$idx_rmd160_obj];
1082my $rc5_obj = $fields[$idx_rc5_obj];
1083my $wp_obj = $fields[$idx_wp_obj];
1084my $cmll_obj = $fields[$idx_cmll_obj];
1085my $perlasm_scheme = $fields[$idx_perlasm_scheme];
1086my $dso_scheme = $fields[$idx_dso_scheme];
1087my $shared_target = $fields[$idx_shared_target];
1088my $shared_cflag = $fields[$idx_shared_cflag];
1089my $shared_ldflag = $fields[$idx_shared_ldflag];
1090my $shared_extension = $fields[$idx_shared_extension];
1091my $ranlib = $ENV{'RANLIB'} || $fields[$idx_ranlib];
1092my $ar = $ENV{'AR'} || "ar";
1093my $arflags = $fields[$idx_arflags];
1094my $multilib = $fields[$idx_multilib];
1095
1096$libdir="lib$multilib" if $libdir eq "";
1097
1098$cflags = "$cflags$exp_cflags";
1099
1095# '%' in $lflags is used to split flags to "pre-" and post-flags 1100# '%' in $lflags is used to split flags to "pre-" and post-flags
1096my ($prelflags,$postlflags)=split('%',$lflags); 1101my ($prelflags,$postlflags)=split('%',$lflags);
1097if (defined($postlflags)) { $lflags=$postlflags; } 1102if (defined($postlflags)) { $lflags=$postlflags; }
1098else { $lflags=$prelflags; undef $prelflags; } 1103else { $lflags=$prelflags; undef $prelflags; }
1099 1104
1100my $no_shared_warn=0; 1105my $no_shared_warn=0;
1101my $no_user_cflags=0; 1106my $no_user_cflags=0;
@@ -1223,18 +1228,9 @@ $lflags="$libs$lflags" if ($libs ne "");
1223 1228
1224if ($no_asm) 1229if ($no_asm)
1225 { 1230 {
1226 $cpuid_obj=$bn_obj=$des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj=""; 1231 $cpuid_obj=$bn_obj=
1227 $sha1_obj=$md5_obj=$rmd160_obj=""; 1232 $des_obj=$aes_obj=$bf_obj=$cast_obj=$rc4_obj=$rc5_obj=$cmll_obj=
1228 $cflags=~s/\-D[BL]_ENDIAN// if ($fips); 1233 $sha1_obj=$md5_obj=$rmd160_obj=$wp_obj="";
1229 $thread_cflags=~s/\-D[BL]_ENDIAN// if ($fips);
1230 }
1231if ($montasm)
1232 {
1233 $bn_obj =~ s/MAYBE-MO86-/mo86-/;
1234 }
1235else
1236 {
1237 $bn_obj =~ s/MAYBE-MO86-[a-z.]*//;
1238 } 1234 }
1239 1235
1240if (!$no_shared) 1236if (!$no_shared)
@@ -1253,7 +1249,14 @@ if ($zlib)
1253 $cflags = "-DZLIB $cflags"; 1249 $cflags = "-DZLIB $cflags";
1254 if (defined($disabled{"zlib-dynamic"})) 1250 if (defined($disabled{"zlib-dynamic"}))
1255 { 1251 {
1256 $lflags = "$lflags -lz"; 1252 if (defined($withargs{"zlib-lib"}))
1253 {
1254 $lflags = "$lflags -L" . $withargs{"zlib-lib"} . " -lz";
1255 }
1256 else
1257 {
1258 $lflags = "$lflags -lz";
1259 }
1257 } 1260 }
1258 else 1261 else
1259 { 1262 {
@@ -1265,7 +1268,7 @@ if ($zlib)
1265my $shared_mark = ""; 1268my $shared_mark = "";
1266if ($shared_target eq "") 1269if ($shared_target eq "")
1267 { 1270 {
1268 $no_shared_warn = 1 if !$no_shared && !$fips; 1271 $no_shared_warn = 1 if !$no_shared;
1269 $no_shared = 1; 1272 $no_shared = 1;
1270 } 1273 }
1271if (!$no_shared) 1274if (!$no_shared)
@@ -1278,13 +1281,16 @@ if (!$no_shared)
1278 1281
1279if (!$IsMK1MF) 1282if (!$IsMK1MF)
1280 { 1283 {
1284 # add {no-}static-engine to options to allow mkdef.pl to work without extra arguments
1281 if ($no_shared) 1285 if ($no_shared)
1282 { 1286 {
1283 $openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n"; 1287 $openssl_other_defines.="#define OPENSSL_NO_DYNAMIC_ENGINE\n";
1288 $options.=" static-engine";
1284 } 1289 }
1285 else 1290 else
1286 { 1291 {
1287 $openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n"; 1292 $openssl_other_defines.="#define OPENSSL_NO_STATIC_ENGINE\n";
1293 $options.=" no-static-engine";
1288 } 1294 }
1289 } 1295 }
1290 1296
@@ -1351,17 +1357,13 @@ if ($ranlib eq "")
1351$cpuid_obj="" if ($processor eq "386"); 1357$cpuid_obj="" if ($processor eq "386");
1352 1358
1353$bn_obj = $bn_asm unless $bn_obj ne ""; 1359$bn_obj = $bn_asm unless $bn_obj ne "";
1354# bn86* is the only one implementing bn_*_part_words 1360# bn-586 is the only one implementing bn_*_part_words
1355$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn86/); 1361$cflags.=" -DOPENSSL_BN_ASM_PART_WORDS" if ($bn_obj =~ /bn-586/);
1356$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /bn86/); 1362$cflags.=" -DOPENSSL_IA32_SSE2" if (!$no_sse2 && $bn_obj =~ /86/);
1357 1363
1358$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /\-mont|mo86\-/); 1364$cflags.=" -DOPENSSL_BN_ASM_MONT" if ($bn_obj =~ /-mont/);
1359
1360if ($fips)
1361 {
1362 $openssl_other_defines.="#define OPENSSL_FIPS\n";
1363 }
1364 1365
1366$cpuid_obj="mem_clr.o" unless ($cpuid_obj =~ /\.o$/);
1365$des_obj=$des_enc unless ($des_obj =~ /\.o$/); 1367$des_obj=$des_enc unless ($des_obj =~ /\.o$/);
1366$bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/); 1368$bf_obj=$bf_enc unless ($bf_obj =~ /\.o$/);
1367$cast_obj=$cast_enc unless ($cast_obj =~ /\.o$/); 1369$cast_obj=$cast_enc unless ($cast_obj =~ /\.o$/);
@@ -1397,6 +1399,15 @@ if ($aes_obj =~ /\.o$/)
1397else { 1399else {
1398 $aes_obj=$aes_enc; 1400 $aes_obj=$aes_enc;
1399 } 1401 }
1402$wp_obj="" if ($wp_obj =~ /mmx/ && $processor eq "386");
1403if ($wp_obj =~ /\.o$/)
1404 {
1405 $cflags.=" -DWHIRLPOOL_ASM";
1406 }
1407else {
1408 $wp_obj="wp_block.o";
1409 }
1410$cmll_obj=$cmll_enc unless ($cmll_obj =~ /.o$/);
1400 1411
1401# "Stringify" the C flags string. This permits it to be made part of a string 1412# "Stringify" the C flags string. This permits it to be made part of a string
1402# and works as well on command lines. 1413# and works as well on command lines.
@@ -1434,6 +1445,16 @@ if ($shlib_version_number =~ /(^[0-9]*)\.([0-9\.]*)/)
1434 $shlib_minor=$2; 1445 $shlib_minor=$2;
1435 } 1446 }
1436 1447
1448if ($strict_warnings)
1449 {
1450 my $wopt;
1451 die "ERROR --strict-warnings requires gcc" unless ($cc =~ /gcc$/);
1452 foreach $wopt (split /\s+/, $gcc_devteam_warn)
1453 {
1454 $cflags .= " $wopt" unless ($cflags =~ /$wopt/)
1455 }
1456 }
1457
1437open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n"; 1458open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n";
1438unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new"; 1459unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new";
1439open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n"; 1460open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n";
@@ -1446,13 +1467,13 @@ while (<IN>)
1446 if ($sdirs) { 1467 if ($sdirs) {
1447 my $dir; 1468 my $dir;
1448 foreach $dir (@skip) { 1469 foreach $dir (@skip) {
1449 s/(\s)$dir\s/$1/; 1470 s/(\s)$dir /$1/;
1450 s/\s$dir$//; 1471 s/\s$dir$//;
1451 } 1472 }
1452 } 1473 }
1453 $sdirs = 0 unless /\\$/; 1474 $sdirs = 0 unless /\\$/;
1454 s/fips // if (/^DIRS=/ && !$fips);
1455 s/engines // if (/^DIRS=/ && $disabled{"engine"}); 1475 s/engines // if (/^DIRS=/ && $disabled{"engine"});
1476 s/ccgost// if (/^ENGDIRS=/ && $disabled{"gost"});
1456 s/^VERSION=.*/VERSION=$version/; 1477 s/^VERSION=.*/VERSION=$version/;
1457 s/^MAJOR=.*/MAJOR=$major/; 1478 s/^MAJOR=.*/MAJOR=$major/;
1458 s/^MINOR=.*/MINOR=$minor/; 1479 s/^MINOR=.*/MINOR=$minor/;
@@ -1462,13 +1483,27 @@ while (<IN>)
1462 s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/; 1483 s/^SHLIB_MINOR=.*/SHLIB_MINOR=$shlib_minor/;
1463 s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/; 1484 s/^SHLIB_EXT=.*/SHLIB_EXT=$shared_extension/;
1464 s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/; 1485 s/^INSTALLTOP=.*$/INSTALLTOP=$prefix/;
1486 s/^MULTILIB=.*$/MULTILIB=$multilib/;
1465 s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/; 1487 s/^OPENSSLDIR=.*$/OPENSSLDIR=$openssldir/;
1488 s/^LIBDIR=.*$/LIBDIR=$libdir/;
1466 s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/; 1489 s/^INSTALL_PREFIX=.*$/INSTALL_PREFIX=$install_prefix/;
1467 s/^PLATFORM=.*$/PLATFORM=$target/; 1490 s/^PLATFORM=.*$/PLATFORM=$target/;
1468 s/^OPTIONS=.*$/OPTIONS=$options/; 1491 s/^OPTIONS=.*$/OPTIONS=$options/;
1469 s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/; 1492 s/^CONFIGURE_ARGS=.*$/CONFIGURE_ARGS=$argvstring/;
1470 s/^CC=.*$/CC= $cc/; 1493 if ($cross_compile_prefix)
1471 s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc"; 1494 {
1495 s/^CC=.*$/CROSS_COMPILE= $cross_compile_prefix\nCC= \$\(CROSS_COMPILE\)$cc/;
1496 s/^AR=\s*/AR= \$\(CROSS_COMPILE\)/;
1497 s/^NM=\s*/NM= \$\(CROSS_COMPILE\)/;
1498 s/^RANLIB=\s*/RANLIB= \$\(CROSS_COMPILE\)/;
1499 s/^MAKEDEPPROG=.*$/MAKEDEPPROG= \$\(CROSS_COMPILE\)$cc/ if $cc eq "gcc";
1500 }
1501 else {
1502 s/^CC=.*$/CC= $cc/;
1503 s/^AR=\s*ar/AR= $ar/;
1504 s/^RANLIB=.*/RANLIB= $ranlib/;
1505 s/^MAKEDEPPROG=.*$/MAKEDEPPROG= $cc/ if $cc eq "gcc";
1506 }
1472 s/^CFLAG=.*$/CFLAG= $cflags/; 1507 s/^CFLAG=.*$/CFLAG= $cflags/;
1473 s/^DEPFLAG=.*$/DEPFLAG=$depflags/; 1508 s/^DEPFLAG=.*$/DEPFLAG=$depflags/;
1474 s/^PEX_LIBS=.*$/PEX_LIBS= $prelflags/; 1509 s/^PEX_LIBS=.*$/PEX_LIBS= $prelflags/;
@@ -1477,7 +1512,7 @@ while (<IN>)
1477 s/^CPUID_OBJ=.*$/CPUID_OBJ= $cpuid_obj/; 1512 s/^CPUID_OBJ=.*$/CPUID_OBJ= $cpuid_obj/;
1478 s/^BN_ASM=.*$/BN_ASM= $bn_obj/; 1513 s/^BN_ASM=.*$/BN_ASM= $bn_obj/;
1479 s/^DES_ENC=.*$/DES_ENC= $des_obj/; 1514 s/^DES_ENC=.*$/DES_ENC= $des_obj/;
1480 s/^AES_ASM_OBJ=.*$/AES_ASM_OBJ= $aes_obj/; 1515 s/^AES_ENC=.*$/AES_ENC= $aes_obj/;
1481 s/^BF_ENC=.*$/BF_ENC= $bf_obj/; 1516 s/^BF_ENC=.*$/BF_ENC= $bf_obj/;
1482 s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/; 1517 s/^CAST_ENC=.*$/CAST_ENC= $cast_obj/;
1483 s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/; 1518 s/^RC4_ENC=.*$/RC4_ENC= $rc4_obj/;
@@ -1485,32 +1520,19 @@ while (<IN>)
1485 s/^MD5_ASM_OBJ=.*$/MD5_ASM_OBJ= $md5_obj/; 1520 s/^MD5_ASM_OBJ=.*$/MD5_ASM_OBJ= $md5_obj/;
1486 s/^SHA1_ASM_OBJ=.*$/SHA1_ASM_OBJ= $sha1_obj/; 1521 s/^SHA1_ASM_OBJ=.*$/SHA1_ASM_OBJ= $sha1_obj/;
1487 s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/; 1522 s/^RMD160_ASM_OBJ=.*$/RMD160_ASM_OBJ= $rmd160_obj/;
1523 s/^WP_ASM_OBJ=.*$/WP_ASM_OBJ= $wp_obj/;
1524 s/^CMLL_ENC=.*$/CMLL_ENC= $cmll_obj/;
1525 s/^PERLASM_SCHEME=.*$/PERLASM_SCHEME= $perlasm_scheme/;
1488 s/^PROCESSOR=.*/PROCESSOR= $processor/; 1526 s/^PROCESSOR=.*/PROCESSOR= $processor/;
1489 s/^RANLIB=.*/RANLIB= $ranlib/;
1490 s/^ARFLAGS=.*/ARFLAGS= $arflags/; 1527 s/^ARFLAGS=.*/ARFLAGS= $arflags/;
1491 s/^PERL=.*/PERL= $perl/; 1528 s/^PERL=.*/PERL= $perl/;
1492 s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/; 1529 s/^KRB5_INCLUDES=.*/KRB5_INCLUDES=$withargs{"krb5-include"}/;
1493 s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/; 1530 s/^LIBKRB5=.*/LIBKRB5=$withargs{"krb5-lib"}/;
1494 s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/; 1531 s/^LIBZLIB=.*/LIBZLIB=$withargs{"zlib-lib"}/;
1495 s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/; 1532 s/^ZLIB_INCLUDE=.*/ZLIB_INCLUDE=$withargs{"zlib-include"}/;
1496 s/^FIPSLIBDIR=.*/FIPSLIBDIR=$fipslibdir/;
1497 if ($fipsdso)
1498 {
1499 s/^FIPSCANLIB=.*/FIPSCANLIB=libfips/;
1500 s/^SHARED_FIPS=.*/SHARED_FIPS=libfips\$(SHLIB_EXT)/;
1501 s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl fips/;
1502 }
1503 else
1504 {
1505 s/^FIPSCANLIB=.*/FIPSCANLIB=libcrypto/ if $fips;
1506 s/^SHARED_FIPS=.*/SHARED_FIPS=/;
1507 s/^SHLIBDIRS=.*/SHLIBDIRS= crypto ssl/;
1508 }
1509 s/^FIPSCANISTERINTERNAL=.*/FIPSCANISTERINTERNAL=$fipscanisterinternal/;
1510 s/^BASEADDR=.*/BASEADDR=$baseaddr/;
1511 s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/; 1533 s/^SHLIB_TARGET=.*/SHLIB_TARGET=$shared_target/;
1512 s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/; 1534 s/^SHLIB_MARK=.*/SHLIB_MARK=$shared_mark/;
1513 s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_FIPS) \$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared); 1535 s/^SHARED_LIBS=.*/SHARED_LIBS=\$(SHARED_CRYPTO) \$(SHARED_SSL)/ if (!$no_shared);
1514 if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/) 1536 if ($shared_extension ne "" && $shared_extension =~ /^\.s([ol])\.[^\.]*$/)
1515 { 1537 {
1516 my $sotmp = $1; 1538 my $sotmp = $1;
@@ -1543,7 +1565,7 @@ print "EX_LIBS =$lflags\n";
1543print "CPUID_OBJ =$cpuid_obj\n"; 1565print "CPUID_OBJ =$cpuid_obj\n";
1544print "BN_ASM =$bn_obj\n"; 1566print "BN_ASM =$bn_obj\n";
1545print "DES_ENC =$des_obj\n"; 1567print "DES_ENC =$des_obj\n";
1546print "AES_ASM_OBJ =$aes_obj\n"; 1568print "AES_ENC =$aes_obj\n";
1547print "BF_ENC =$bf_obj\n"; 1569print "BF_ENC =$bf_obj\n";
1548print "CAST_ENC =$cast_obj\n"; 1570print "CAST_ENC =$cast_obj\n";
1549print "RC4_ENC =$rc4_obj\n"; 1571print "RC4_ENC =$rc4_obj\n";
@@ -1551,6 +1573,7 @@ print "RC5_ENC =$rc5_obj\n";
1551print "MD5_OBJ_ASM =$md5_obj\n"; 1573print "MD5_OBJ_ASM =$md5_obj\n";
1552print "SHA1_OBJ_ASM =$sha1_obj\n"; 1574print "SHA1_OBJ_ASM =$sha1_obj\n";
1553print "RMD160_OBJ_ASM=$rmd160_obj\n"; 1575print "RMD160_OBJ_ASM=$rmd160_obj\n";
1576print "CMLL_ENC= =$cmll_obj\n";
1554print "PROCESSOR =$processor\n"; 1577print "PROCESSOR =$processor\n";
1555print "RANLIB =$ranlib\n"; 1578print "RANLIB =$ranlib\n";
1556print "ARFLAGS =$arflags\n"; 1579print "ARFLAGS =$arflags\n";
@@ -1638,14 +1661,22 @@ print OUT "#ifdef OPENSSL_ALGORITHM_DEFINES\n";
1638print OUT $openssl_algorithm_defines_trans; 1661print OUT $openssl_algorithm_defines_trans;
1639print OUT "#endif\n\n"; 1662print OUT "#endif\n\n";
1640 1663
1641print OUT "#define OPENSSL_CPUID_OBJ\n\n" if ($cpuid_obj); 1664print OUT "#define OPENSSL_CPUID_OBJ\n\n" if ($cpuid_obj ne "mem_clr.o");
1642 1665
1643while (<IN>) 1666while (<IN>)
1644 { 1667 {
1645 if (/^#define\s+OPENSSLDIR/) 1668 if (/^#define\s+OPENSSLDIR/)
1646 { print OUT "#define OPENSSLDIR \"$openssldir\"\n"; } 1669 {
1670 my $foo = $openssldir;
1671 $foo =~ s/\\/\\\\/g;
1672 print OUT "#define OPENSSLDIR \"$foo\"\n";
1673 }
1647 elsif (/^#define\s+ENGINESDIR/) 1674 elsif (/^#define\s+ENGINESDIR/)
1648 { print OUT "#define ENGINESDIR \"$prefix/lib/engines\"\n"; } 1675 {
1676 my $foo = "$prefix/$libdir/engines";
1677 $foo =~ s/\\/\\\\/g;
1678 print OUT "#define ENGINESDIR \"$foo\"\n";
1679 }
1649 elsif (/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/) 1680 elsif (/^#((define)|(undef))\s+OPENSSL_EXPORT_VAR_AS_FUNCTION/)
1650 { printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n" 1681 { printf OUT "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION\n"
1651 if $export_var_as_fn; 1682 if $export_var_as_fn;
@@ -1750,7 +1781,7 @@ if($IsMK1MF) {
1750EOF 1781EOF
1751 close(OUT); 1782 close(OUT);
1752} else { 1783} else {
1753 my $make_command = "make PERL=\'$perl\'"; 1784 my $make_command = "$make PERL=\'$perl\'";
1754 my $make_targets = ""; 1785 my $make_targets = "";
1755 $make_targets .= " links" if $symlink; 1786 $make_targets .= " links" if $symlink;
1756 $make_targets .= " depend" if $depflags ne $default_depflags && $make_depend; 1787 $make_targets .= " depend" if $depflags ne $default_depflags && $make_depend;
@@ -1758,11 +1789,11 @@ EOF
1758 (system $make_command.$make_targets) == 0 or exit $? 1789 (system $make_command.$make_targets) == 0 or exit $?
1759 if $make_targets ne ""; 1790 if $make_targets ne "";
1760 if ( $perl =~ m@^/@) { 1791 if ( $perl =~ m@^/@) {
1761 &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";'); 1792 &dofile("tools/c_rehash",$perl,'^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
1762 &dofile("apps/CA.pl",$perl,'^#!/', '#!%s'); 1793 &dofile("apps/CA.pl",$perl,'^#!/', '#!%s');
1763 } else { 1794 } else {
1764 # No path for Perl known ... 1795 # No path for Perl known ...
1765 &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";'); 1796 &dofile("tools/c_rehash",'/usr/local/bin/perl','^#!/', '#!%s','^my \$dir;$', 'my $dir = "' . $openssldir . '";', '^my \$prefix;$', 'my $prefix = "' . $prefix . '";');
1766 &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s'); 1797 &dofile("apps/CA.pl",'/usr/local/bin/perl','^#!/', '#!%s');
1767 } 1798 }
1768 if ($depflags ne $default_depflags && !$make_depend) { 1799 if ($depflags ne $default_depflags && !$make_depend) {
@@ -1808,16 +1839,9 @@ BEGIN
1808 BEGIN 1839 BEGIN
1809 BLOCK "040904b0" 1840 BLOCK "040904b0"
1810 BEGIN 1841 BEGIN
1811#if defined(FIPS)
1812 VALUE "Comments", "WARNING: TEST VERSION ONLY ***NOT*** FIPS 140-2 VALIDATED.\\0"
1813#endif
1814 // Required: 1842 // Required:
1815 VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0" 1843 VALUE "CompanyName", "The OpenSSL Project, http://www.openssl.org/\\0"
1816#if defined(FIPS)
1817 VALUE "FileDescription", "TEST UNVALIDATED FIPS140-2 DLL\\0"
1818#else
1819 VALUE "FileDescription", "OpenSSL Shared Library\\0" 1844 VALUE "FileDescription", "OpenSSL Shared Library\\0"
1820#endif
1821 VALUE "FileVersion", "$version\\0" 1845 VALUE "FileVersion", "$version\\0"
1822#if defined(CRYPTO) 1846#if defined(CRYPTO)
1823 VALUE "InternalName", "libeay32\\0" 1847 VALUE "InternalName", "libeay32\\0"
@@ -1825,15 +1849,12 @@ BEGIN
1825#elif defined(SSL) 1849#elif defined(SSL)
1826 VALUE "InternalName", "ssleay32\\0" 1850 VALUE "InternalName", "ssleay32\\0"
1827 VALUE "OriginalFilename", "ssleay32.dll\\0" 1851 VALUE "OriginalFilename", "ssleay32.dll\\0"
1828#elif defined(FIPS)
1829 VALUE "InternalName", "libosslfips\\0"
1830 VALUE "OriginalFilename", "libosslfips.dll\\0"
1831#endif 1852#endif
1832 VALUE "ProductName", "The OpenSSL Toolkit\\0" 1853 VALUE "ProductName", "The OpenSSL Toolkit\\0"
1833 VALUE "ProductVersion", "$version\\0" 1854 VALUE "ProductVersion", "$version\\0"
1834 // Optional: 1855 // Optional:
1835 //VALUE "Comments", "\\0" 1856 //VALUE "Comments", "\\0"
1836 VALUE "LegalCopyright", "Copyright © 1998-2007 The OpenSSL Project. Copyright © 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0" 1857 VALUE "LegalCopyright", "Copyright © 1998-2005 The OpenSSL Project. Copyright © 1995-1998 Eric A. Young, Tim J. Hudson. All rights reserved.\\0"
1837 //VALUE "LegalTrademarks", "\\0" 1858 //VALUE "LegalTrademarks", "\\0"
1838 //VALUE "PrivateBuild", "\\0" 1859 //VALUE "PrivateBuild", "\\0"
1839 //VALUE "SpecialBuild", "\\0" 1860 //VALUE "SpecialBuild", "\\0"
@@ -1870,21 +1891,6 @@ libraries on this platform, they will at least look at it and try their best
1870(but please first make sure you have tried with a current version of OpenSSL). 1891(but please first make sure you have tried with a current version of OpenSSL).
1871EOF 1892EOF
1872 1893
1873print <<\EOF if ($fipscanisterinternal eq "y");
1874
1875WARNING: OpenSSL has been configured using unsupported option(s) to internally
1876generate a fipscanister.o object module for TESTING PURPOSES ONLY; that
1877compiled module is NOT FIPS 140-2 validated and CANNOT be used to replace the
1878OpenSSL FIPS Object Module as identified by the CMVP
1879(http://csrc.nist.gov/cryptval/) in any application requiring the use of FIPS
1880140-2 validated software.
1881
1882This is an OpenSSL 0.9.8 test version.
1883
1884See the file README.FIPS for details of how to build a test library.
1885
1886EOF
1887
1888exit(0); 1894exit(0);
1889 1895
1890sub usage 1896sub usage
@@ -1960,8 +1966,8 @@ sub print_table_entry
1960 (my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags, 1966 (my $cc,my $cflags,my $unistd,my $thread_cflag,my $sys_id,my $lflags,
1961 my $bn_ops,my $cpuid_obj,my $bn_obj,my $des_obj,my $aes_obj, my $bf_obj, 1967 my $bn_ops,my $cpuid_obj,my $bn_obj,my $des_obj,my $aes_obj, my $bf_obj,
1962 my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj, 1968 my $md5_obj,my $sha1_obj,my $cast_obj,my $rc4_obj,my $rmd160_obj,
1963 my $rc5_obj,my $dso_scheme,my $shared_target,my $shared_cflag, 1969 my $rc5_obj,my $wp_obj,my $cmll_obj,my $perlasm_scheme,my $dso_scheme,my $shared_target,my $shared_cflag,
1964 my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags)= 1970 my $shared_ldflag,my $shared_extension,my $ranlib,my $arflags,my $multilib)=
1965 split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 1971 split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
1966 1972
1967 print <<EOF 1973 print <<EOF
@@ -1985,6 +1991,9 @@ sub print_table_entry
1985\$rc4_obj = $rc4_obj 1991\$rc4_obj = $rc4_obj
1986\$rmd160_obj = $rmd160_obj 1992\$rmd160_obj = $rmd160_obj
1987\$rc5_obj = $rc5_obj 1993\$rc5_obj = $rc5_obj
1994\$wp_obj = $wp_obj
1995\$cmll_obj = $cmll_obj
1996\$perlasm_scheme = $perlasm_scheme
1988\$dso_scheme = $dso_scheme 1997\$dso_scheme = $dso_scheme
1989\$shared_target= $shared_target 1998\$shared_target= $shared_target
1990\$shared_cflag = $shared_cflag 1999\$shared_cflag = $shared_cflag
@@ -1992,6 +2001,7 @@ sub print_table_entry
1992\$shared_extension = $shared_extension 2001\$shared_extension = $shared_extension
1993\$ranlib = $ranlib 2002\$ranlib = $ranlib
1994\$arflags = $arflags 2003\$arflags = $arflags
2004\$multilib = $multilib
1995EOF 2005EOF
1996 } 2006 }
1997 2007
@@ -2008,33 +2018,25 @@ sub test_sanity
2008 { 2018 {
2009 @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1); 2019 @fields = split(/\s*:\s*/,$table{$target} . ":" x 30 , -1);
2010 2020
2011 if ($fields[$idx_dso_scheme-1] =~ /^(dl|dlfcn|win32|vms)$/) 2021 if ($fields[$idx_dso_scheme-1] =~ /^(beos|dl|dlfcn|win32|vms)$/)
2012 { 2022 {
2013 $errorcnt++; 2023 $errorcnt++;
2014 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n"; 2024 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
2015 print STDERR " in the previous field\n"; 2025 print STDERR " in the previous field\n";
2016 } 2026 }
2017 elsif ($fields[$idx_dso_scheme+1] =~ /^(dl|dlfcn|win32|vms)$/) 2027 elsif ($fields[$idx_dso_scheme+1] =~ /^(beos|dl|dlfcn|win32|vms)$/)
2018 { 2028 {
2019 $errorcnt++; 2029 $errorcnt++;
2020 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n"; 2030 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] values\n";
2021 print STDERR " in the following field\n"; 2031 print STDERR " in the following field\n";
2022 } 2032 }
2023 elsif ($fields[$idx_dso_scheme] !~ /^(dl|dlfcn|win32|vms|)$/) 2033 elsif ($fields[$idx_dso_scheme] !~ /^(beos|dl|dlfcn|win32|vms|)$/)
2024 { 2034 {
2025 $errorcnt++; 2035 $errorcnt++;
2026 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n"; 2036 print STDERR "SANITY ERROR: '$target' has the dso_scheme [$idx_dso_scheme] field = ",$fields[$idx_dso_scheme],"\n";
2027 print STDERR " valid values are 'dl', 'dlfcn', 'win32' and 'vms'\n"; 2037 print STDERR " valid values are 'beos', 'dl', 'dlfcn', 'win32' and 'vms'\n";
2028 } 2038 }
2029 } 2039 }
2030 print STDERR "No sanity errors detected!\n" if $errorcnt == 0; 2040 print STDERR "No sanity errors detected!\n" if $errorcnt == 0;
2031 return $errorcnt; 2041 return $errorcnt;
2032 } 2042 }
2033
2034# Attempt to detect MSYS environment
2035
2036sub is_msys
2037 {
2038 return 1 if (exists $ENV{"TERM"} && $ENV{"TERM"} eq "msys");
2039 return 0;
2040 }
diff --git a/src/lib/libssl/src/FAQ b/src/lib/libssl/src/FAQ
index 942a671f2c..becee6663f 100644
--- a/src/lib/libssl/src/FAQ
+++ b/src/lib/libssl/src/FAQ
@@ -70,6 +70,7 @@ OpenSSL - Frequently Asked Questions
70* I think I've detected a memory leak, is this a bug? 70* I think I've detected a memory leak, is this a bug?
71* Why does Valgrind complain about the use of uninitialized data? 71* Why does Valgrind complain about the use of uninitialized data?
72* Why doesn't a memory BIO work when a file does? 72* Why doesn't a memory BIO work when a file does?
73* Where are the declarations and implementations of d2i_X509() etc?
73 74
74=============================================================================== 75===============================================================================
75 76
@@ -78,7 +79,7 @@ OpenSSL - Frequently Asked Questions
78* Which is the current version of OpenSSL? 79* Which is the current version of OpenSSL?
79 80
80The current version is available from <URL: http://www.openssl.org>. 81The current version is available from <URL: http://www.openssl.org>.
81OpenSSL 0.9.8k was released on Mar 25th, 2009. 82OpenSSL 1.0.0a was released on Jun 1st, 2010.
82 83
83In addition to the current stable release, you can also access daily 84In addition to the current stable release, you can also access daily
84snapshots of the OpenSSL development version at <URL: 85snapshots of the OpenSSL development version at <URL:
@@ -94,14 +95,17 @@ explains how to install this library.
94 95
95OpenSSL includes a command line utility that can be used to perform a 96OpenSSL includes a command line utility that can be used to perform a
96variety of cryptographic functions. It is described in the openssl(1) 97variety of cryptographic functions. It is described in the openssl(1)
97manpage. Documentation for developers is currently being written. A 98manpage. Documentation for developers is currently being written. Many
98few manual pages already are available; overviews over libcrypto and 99manual pages are available; overviews over libcrypto and
99libssl are given in the crypto(3) and ssl(3) manpages. 100libssl are given in the crypto(3) and ssl(3) manpages.
100 101
101The OpenSSL manpages are installed in /usr/local/ssl/man/ (or a 102The OpenSSL manpages are installed in /usr/local/ssl/man/ (or a
102different directory if you specified one as described in INSTALL). 103different directory if you specified one as described in INSTALL).
103In addition, you can read the most current versions at 104In addition, you can read the most current versions at
104<URL: http://www.openssl.org/docs/>. 105<URL: http://www.openssl.org/docs/>. Note that the online documents refer
106to the very latest development versions of OpenSSL and may include features
107not present in released versions. If in doubt refer to the documentation
108that came with the version of OpenSSL you are using.
105 109
106For information on parts of libcrypto that are not yet documented, you 110For information on parts of libcrypto that are not yet documented, you
107might want to read Ariel Glenn's documentation on SSLeay 0.9, OpenSSL's 111might want to read Ariel Glenn's documentation on SSLeay 0.9, OpenSSL's
@@ -717,8 +721,10 @@ file.
717 721
718Multi-threaded applications must provide two callback functions to 722Multi-threaded applications must provide two callback functions to
719OpenSSL by calling CRYPTO_set_locking_callback() and 723OpenSSL by calling CRYPTO_set_locking_callback() and
720CRYPTO_set_id_callback(). This is described in the threads(3) 724CRYPTO_set_id_callback(), for all versions of OpenSSL up to and
721manpage. 725including 0.9.8[abc...]. As of version 1.0.0, CRYPTO_set_id_callback()
726and associated APIs are deprecated by CRYPTO_THREADID_set_callback()
727and friends. This is described in the threads(3) manpage.
722 728
723* I've compiled a program under Windows and it crashes: why? 729* I've compiled a program under Windows and it crashes: why?
724 730
@@ -962,4 +968,15 @@ is needed. This must be done by calling:
962See the manual pages for more details. 968See the manual pages for more details.
963 969
964 970
971* Where are the declarations and implementations of d2i_X509() etc?
972
973These are defined and implemented by macros of the form:
974
975
976 DECLARE_ASN1_FUNCTIONS(X509) and IMPLEMENT_ASN1_FUNCTIONS(X509)
977
978The implementation passes an ASN1 "template" defining the structure into an
979ASN1 interpreter using generalised functions such as ASN1_item_d2i().
980
981
965=============================================================================== 982===============================================================================
diff --git a/src/lib/libssl/src/INSTALL b/src/lib/libssl/src/INSTALL
index c72cc1dcee..1325079f2a 100644
--- a/src/lib/libssl/src/INSTALL
+++ b/src/lib/libssl/src/INSTALL
@@ -98,11 +98,17 @@
98 The crypto/<cipher> directory can be removed after running 98 The crypto/<cipher> directory can be removed after running
99 "make depend". 99 "make depend".
100 100
101 -Dxxx, -lxxx, -Lxxx, -fxxx, -mxxx, -Kxxx These system specific options will 101 -Dxxx, -lxxx, -Lxxx, -fxxx, -mXXX, -Kxxx These system specific options will
102 be passed through to the compiler to allow you to 102 be passed through to the compiler to allow you to
103 define preprocessor symbols, specify additional libraries, 103 define preprocessor symbols, specify additional libraries,
104 library directories or other compiler options. 104 library directories or other compiler options.
105 105
106 -DHAVE_CRYPTODEV Enable the BSD cryptodev engine even if we are not using
107 BSD. Useful if you are running ocf-linux or something
108 similar. Once enabled you can also enable the use of
109 cryptodev digests, which is usually slower unless you have
110 large amounts data. Use -DUSE_CRYPTODEV_DIGESTS to force
111 it.
106 112
107 Installation in Detail 113 Installation in Detail
108 ---------------------- 114 ----------------------
@@ -206,6 +212,10 @@
206 compile programs with libcrypto or libssl. 212 compile programs with libcrypto or libssl.
207 lib Contains the OpenSSL library files themselves. 213 lib Contains the OpenSSL library files themselves.
208 214
215 Use "make install_sw" to install the software without documentation,
216 and "install_docs_html" to install HTML renditions of the manual
217 pages.
218
209 Package builders who want to configure the library for standard 219 Package builders who want to configure the library for standard
210 locations, but have the package installed somewhere else so that 220 locations, but have the package installed somewhere else so that
211 it can easily be packaged, can use 221 it can easily be packaged, can use
diff --git a/src/lib/libssl/src/INSTALL.W32 b/src/lib/libssl/src/INSTALL.W32
index 3dd7832f4e..77441f1ef3 100644
--- a/src/lib/libssl/src/INSTALL.W32
+++ b/src/lib/libssl/src/INSTALL.W32
@@ -5,19 +5,30 @@
5 [Instructions for building for Windows CE can be found in INSTALL.WCE] 5 [Instructions for building for Windows CE can be found in INSTALL.WCE]
6 [Instructions for building for Win64 can be found in INSTALL.W64] 6 [Instructions for building for Win64 can be found in INSTALL.W64]
7 7
8 Heres a few comments about building OpenSSL in Windows environments. Most 8 Here are a few comments about building OpenSSL for Win32 environments,
9 of this is tested on Win32 but it may also work in Win 3.1 with some 9 such as Windows NT and Windows 9x. It should be noted though that
10 modification. 10 Windows 9x are not ordinarily tested. Its mention merely means that we
11 attempt to maintain certain programming discipline and pay attention
12 to backward compatibility issues, in other words it's kind of expected
13 to work on Windows 9x, but no regression tests are actually performed.
11 14
12 You need Perl for Win32. Unless you will build on Cygwin, you will need 15 On additional note newer OpenSSL versions are compiled and linked with
13 ActiveState Perl, available from http://www.activestate.com/ActivePerl. 16 Winsock 2. This means that minimum OS requirement was elevated to NT 4
17 and Windows 98 [there is Winsock 2 update for Windows 95 though].
14 18
15 and one of the following C compilers: 19 - you need Perl for Win32. Unless you will build on Cygwin, you will need
20 ActiveState Perl, available from http://www.activestate.com/ActivePerl.
21
22 - one of the following C compilers:
16 23
17 * Visual C++ 24 * Visual C++
18 * Borland C 25 * Borland C
19 * GNU C (Cygwin or MinGW) 26 * GNU C (Cygwin or MinGW)
20 27
28- Netwide Assembler, a.k.a. NASM, available from http://nasm.sourceforge.net/
29 is required if you intend to utilize assembler modules. Note that NASM
30 is now the only supported assembler.
31
21 If you are compiling from a tarball or a CVS snapshot then the Win32 files 32 If you are compiling from a tarball or a CVS snapshot then the Win32 files
22 may well be not up to date. This may mean that some "tweaking" is required to 33 may well be not up to date. This may mean that some "tweaking" is required to
23 get it all to work. See the trouble shooting section later on for if (when?) 34 get it all to work. See the trouble shooting section later on for if (when?)
@@ -26,39 +37,18 @@
26 Visual C++ 37 Visual C++
27 ---------- 38 ----------
28 39
29 If you want to compile in the assembly language routines with Visual C++ then 40 If you want to compile in the assembly language routines with Visual
30 you will need an assembler. This is worth doing because it will result in 41 C++, then you will need already mentioned Netwide Assembler binary,
31 faster code: for example it will typically result in a 2 times speedup in the 42 nasmw.exe or nasm.exe, to be available on your %PATH%.
32 RSA routines. Currently the following assemblers are supported:
33
34 * Microsoft MASM (aka "ml")
35 * Free Netwide Assembler NASM.
36
37 MASM is distributed with most versions of VC++. For the versions where it is
38 not included in VC++, it is also distributed with some Microsoft DDKs, for
39 example the Windows NT 4.0 DDK and the Windows 98 DDK. If you do not have
40 either of these DDKs then you can just download the binaries for the Windows
41 98 DDK and extract and rename the two files XXXXXml.exe and XXXXXml.err, to
42 ml.exe and ml.err and install somewhere on your PATH. Both DDKs can be
43 downloaded from the Microsoft developers site www.msdn.com.
44
45 NASM is freely available. Version 0.98 was used during testing: other versions
46 may also work. It is available from many places, see for example:
47 http://www.kernel.org/pub/software/devel/nasm/binaries/win32/
48 The NASM binary nasmw.exe needs to be installed anywhere on your PATH.
49 43
50 Firstly you should run Configure: 44 Firstly you should run Configure with platform VC-WIN32:
51 45
52 > perl Configure VC-WIN32 --prefix=c:/some/openssl/dir 46 > perl Configure VC-WIN32 --prefix=c:\some\openssl\dir
53 47
54Where the prefix argument specifies where OpenSSL will be installed to. 48 Where the prefix argument specifies where OpenSSL will be installed to.
55 49
56 Next you need to build the Makefiles and optionally the assembly language 50 Next you need to build the Makefiles and optionally the assembly
57 files: 51 language files:
58
59 - If you are using MASM then run:
60
61 > ms\do_masm
62 52
63 - If you are using NASM then run: 53 - If you are using NASM then run:
64 54
@@ -66,6 +56,7 @@ Where the prefix argument specifies where OpenSSL will be installed to.
66 56
67 - If you don't want to use the assembly language files at all then run: 57 - If you don't want to use the assembly language files at all then run:
68 58
59 > perl Configure VC-WIN32 no-asm --prefix=c:/some/openssl/dir
69 > ms\do_ms 60 > ms\do_ms
70 61
71 If you get errors about things not having numbers assigned then check the 62 If you get errors about things not having numbers assigned then check the
@@ -76,42 +67,39 @@ Where the prefix argument specifies where OpenSSL will be installed to.
76 67
77 > nmake -f ms\ntdll.mak 68 > nmake -f ms\ntdll.mak
78 69
79 If all is well it should compile and you will have some DLLs and executables 70 If all is well it should compile and you will have some DLLs and
80 in out32dll. If you want to try the tests then do: 71 executables in out32dll. If you want to try the tests then do:
81 72
82 > nmake -f ms\ntdll.mak test 73 > nmake -f ms\ntdll.mak test
83 74
84 75
85To install OpenSSL to the specified location do: 76 To install OpenSSL to the specified location do:
86 77
87> nmake -f ms\ntdll.mak install 78 > nmake -f ms\ntdll.mak install
88 79
89 Tweaks: 80 Tweaks:
90 81
91 There are various changes you can make to the Win32 compile environment. By 82 There are various changes you can make to the Win32 compile
92 default the library is not compiled with debugging symbols. If you add 'debug' 83 environment. By default the library is not compiled with debugging
93 to the mk1mf.pl lines in the do_* batch file then debugging symbols will be 84 symbols. If you use the platform debug-VC-WIN32 instead of VC-WIN32
94 compiled in. Note that mk1mf.pl expects the platform to be the last argument 85 then debugging symbols will be compiled in.
95 on the command line, so 'debug' must appear before that, as all other options.
96
97 86
98 By default in 0.9.8 OpenSSL will compile builtin ENGINES into the libeay32.dll 87 By default in 1.0.0 OpenSSL will compile builtin ENGINES into the
99 shared library. If you specify the "no-static-engine" option on the command 88 separate shared librariesy. If you specify the "enable-static-engine"
100 line to Configure the shared library build (ms\ntdll.mak) will compile the 89 option on the command line to Configure the shared library build
101 engines as separate DLLs. 90 (ms\ntdll.mak) will compile the engines into libeay32.dll instead.
102 91
103 The default Win32 environment is to leave out any Windows NT specific 92 The default Win32 environment is to leave out any Windows NT specific
104 features. 93 features.
105 94
106 If you want to enable the NT specific features of OpenSSL (currently only the 95 If you want to enable the NT specific features of OpenSSL (currently
107 logging BIO) follow the instructions above but call the batch file do_nt.bat 96 only the logging BIO) follow the instructions above but call the batch
108 instead of do_ms.bat. 97 file do_nt.bat instead of do_ms.bat.
109 98
110 You can also build a static version of the library using the Makefile 99 You can also build a static version of the library using the Makefile
111 ms\nt.mak 100 ms\nt.mak
112 101
113 102
114
115 Borland C++ builder 5 103 Borland C++ builder 5
116 --------------------- 104 ---------------------
117 105
@@ -137,17 +125,13 @@ To install OpenSSL to the specified location do:
137 GNU C (Cygwin) 125 GNU C (Cygwin)
138 -------------- 126 --------------
139 127
140 Cygwin provides a bash shell and GNU tools environment running 128 Cygwin implements a Posix/Unix runtime system (cygwin1.dll) on top of
141 on NT 4.0, Windows 9x, Windows ME, Windows 2000, and Windows XP. 129 Win32 subsystem and provides a bash shell and GNU tools environment.
142 Consequently, a make of OpenSSL with Cygwin is closer to a GNU 130 Consequently, a make of OpenSSL with Cygwin is virtually identical to
143 bash environment such as Linux than to other the other Win32 131 Unix procedure. It is also possible to create Win32 binaries that only
144 makes. 132 use the Microsoft C runtime system (msvcrt.dll or crtdll.dll) using
145 133 MinGW. MinGW can be used in the Cygwin development environment or in a
146 Cygwin implements a Posix/Unix runtime system (cygwin1.dll). 134 standalone setup as described in the following section.
147 It is also possible to create Win32 binaries that only use the
148 Microsoft C runtime system (msvcrt.dll or crtdll.dll) using
149 MinGW. MinGW can be used in the Cygwin development environment
150 or in a standalone setup as described in the following section.
151 135
152 To build OpenSSL using Cygwin: 136 To build OpenSSL using Cygwin:
153 137
@@ -192,35 +176,35 @@ To install OpenSSL to the specified location do:
192 non-fatal error in "make test" but is otherwise harmless. If 176 non-fatal error in "make test" but is otherwise harmless. If
193 desired and needed, GNU bc can be built with Cygwin without change. 177 desired and needed, GNU bc can be built with Cygwin without change.
194 178
195 GNU C (MinGW) 179 GNU C (MinGW/MSYS)
196 ------------- 180 -------------
197 181
198 * Compiler installation: 182 * Compiler and shell environment installation:
199 183
200 MinGW is available from http://www.mingw.org. Run the installer and 184 MinGW and MSYS are available from http://www.mingw.org/, both are
201 set the MinGW bin directory to the PATH in "System Properties" or 185 required. Run the installers and do whatever magic they say it takes
202 autoexec.bat. 186 to start MSYS bash shell with GNU tools on its PATH.
203 187
204 * Compile OpenSSL: 188 * Compile OpenSSL:
205 189
206 > ms\mingw32 190 $ ./config
191 [...]
192 $ make
193 [...]
194 $ make test
207 195
208 This will create the library and binaries in out. In case any problems 196 This will create the library and binaries in root source directory
209 occur, try 197 and openssl.exe application in apps directory.
210 > ms\mingw32 no-asm 198
211 instead. 199 It is also possible to cross-compile it on Linux by configuring
200 with './Configure --cross-compile-prefix=i386-mingw32- mingw ...'.
201 'make test' is naturally not applicable then.
212 202
213 libcrypto.a and libssl.a are the static libraries. To use the DLLs, 203 libcrypto.a and libssl.a are the static libraries. To use the DLLs,
214 link with libeay32.a and libssl32.a instead. 204 link with libeay32.a and libssl32.a instead.
215 205
216 See troubleshooting if you get error messages about functions not having 206 See troubleshooting if you get error messages about functions not
217 a number assigned. 207 having a number assigned.
218
219 * You can now try the tests:
220
221 > cd out
222 > ..\ms\test
223
224 208
225 Installation 209 Installation
226 ------------ 210 ------------
@@ -307,13 +291,13 @@ To install OpenSSL to the specified location do:
307 291
308 If you link with static OpenSSL libraries [those built with ms/nt.mak], 292 If you link with static OpenSSL libraries [those built with ms/nt.mak],
309 then you're expected to additionally link your application with 293 then you're expected to additionally link your application with
310 WSOCK32.LIB, ADVAPI32.LIB, GDI32.LIB and USER32.LIB. Those developing 294 WS2_32.LIB, ADVAPI32.LIB, GDI32.LIB and USER32.LIB. Those developing
311 non-interactive service applications might feel concerned about linking 295 non-interactive service applications might feel concerned about linking
312 with latter two, as they are justly associated with interactive desktop, 296 with the latter two, as they are justly associated with interactive
313 which is not available to service processes. The toolkit is designed 297 desktop, which is not available to service processes. The toolkit is
314 to detect in which context it's currently executed, GUI, console app 298 designed to detect in which context it's currently executed, GUI,
315 or service, and act accordingly, namely whether or not to actually make 299 console app or service, and act accordingly, namely whether or not to
316 GUI calls. 300 actually make GUI calls.
317 301
318 If you link with OpenSSL .DLLs, then you're expected to include into 302 If you link with OpenSSL .DLLs, then you're expected to include into
319 your application code small "shim" snippet, which provides glue between 303 your application code small "shim" snippet, which provides glue between
diff --git a/src/lib/libssl/src/INSTALL.WCE b/src/lib/libssl/src/INSTALL.WCE
index adc03f41d4..d78c61afa8 100644
--- a/src/lib/libssl/src/INSTALL.WCE
+++ b/src/lib/libssl/src/INSTALL.WCE
@@ -4,27 +4,36 @@
4 4
5 Building OpenSSL for Windows CE requires the following external tools: 5 Building OpenSSL for Windows CE requires the following external tools:
6 6
7 * Microsoft eMbedded Visual C++ 3.0 7 * Microsoft eMbedded Visual C++ 3.0 or later
8 * wcecompat compatibility library (www.essemer.com.au) 8 * Appropriate SDK might be required
9 * Optionally ceutils for running automated tests (www.essemer.com.au) 9 * Perl for Win32 [commonly recommended ActiveState Perl is available
10 10 from http://www.activestate.com/Products/ActivePerl/]
11 You also need Perl for Win32. You will need ActiveState Perl, available 11
12 from http://www.activestate.com/ActivePerl. 12 * wcecompat compatibility library available at
13 13 http://www.essemer.com.au/windowsce/
14 Windows CE support in OpenSSL relies on wcecompat and therefore it's 14 * Optionally ceutils for running automated tests (same location)
15 appropriate to check http://www.essemer.com.au/windowsce/ for updates in 15
16 case of compilation problems. As for the moment of this writing version 16 _or_
17 1.1 is available and actually required for WCE 4.2 and newer platforms. 17
18 All Windows CE specific issues should be directed to www.essemer.com.au. 18 * PocketConsole driver and PortSDK available at
19 19 http://www.symbolictools.de/public/pocketconsole/
20 The C Runtime Library implementation for Windows CE that is included with 20 * CMD command interpreter (same location)
21 Microsoft eMbedded Visual C++ 3.0 is incomplete and in some places 21
22 incorrect. wcecompat plugs the holes and tries to bring the Windows CE 22 As Windows CE support in OpenSSL relies on 3rd party compatibility
23 CRT to a level that is more compatible with ANSI C. wcecompat goes further 23 library, it's appropriate to check corresponding URL for updates. For
24 and provides low-level IO and stream IO support for stdin/stdout/stderr 24 example if you choose wcecompat, note that as for the moment of this
25 (which Windows CE does not provide). This IO functionality is not needed 25 writing version 1.2 is available and actually required for WCE 4.2
26 by the OpenSSL library itself but is used for the tests and openssl.exe. 26 and newer platforms. All wcecompat issues should be directed to
27 More information is available at www.essemer.com.au. 27 www.essemer.com.au.
28
29 Why compatibility library at all? The C Runtime Library implementation
30 for Windows CE that is included with Microsoft eMbedded Visual C++ is
31 incomplete and in some places incorrect. Compatibility library plugs
32 the holes and tries to bring the Windows CE CRT to [more] usable level.
33 Most gaping hole in CRT is support for stdin/stdout/stderr IO, which
34 proposed compatibility libraries solve in two different ways: wcecompat
35 redirects IO to active sync link, while PortSDK - to NT-like console
36 driver on the handheld itself.
28 37
29 Building 38 Building
30 -------- 39 --------
@@ -34,9 +43,21 @@
34 43
35 > "C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN\WCEARM.BAT" 44 > "C:\Program Files\Microsoft eMbedded Tools\EVC\WCE300\BIN\WCEARM.BAT"
36 45
37 Next indicate where wcecompat is located: 46 Next pick compatibility library according to your preferences.
38 47
39 > set WCECOMPAT=C:\wcecompat 48 1. To choose wcecompat set up WCECOMPAT environment variable pointing
49 at the location of wcecompat tree "root":
50
51 > set WCECOMPAT=C:\wcecompat
52 > set PORTSDK_LIBPATH=
53
54 2. To choose PortSDK set up PORTSDK_LIBPATH to point at hardware-
55 specific location where your portlib.lib is installed:
56
57 > set PORTSDK_LIBPATH=C:\PortSDK\lib\ARM
58 > set WCECOMPAT=
59
60 Note that you may not set both variables.
40 61
41 Next you should run Configure: 62 Next you should run Configure:
42 63
@@ -52,16 +73,16 @@
52 73
53 Then from the VC++ environment at a prompt do: 74 Then from the VC++ environment at a prompt do:
54 75
55 - to build static libraries: 76 > nmake -f ms\cedll.mak
56 77
57 > nmake -f ms\ce.mak 78 [note that static builds are not supported under CE]
58 79
59 - or to build DLLs: 80 If all is well it should compile and you will have some DLLs and executables
81 in out32dll*.
60 82
61 > nmake -f ms\cedll.mak 83 <<< everyting below needs revision in respect to wcecompat vs. PortSDK >>>
62 84
63 If all is well it should compile and you will have some static libraries and 85 If you want
64 executables in out32, or some DLLs and executables in out32dll. If you want
65 to try the tests then make sure the ceutils are in the path and do: 86 to try the tests then make sure the ceutils are in the path and do:
66 87
67 > cd out32 88 > cd out32
diff --git a/src/lib/libssl/src/Makefile b/src/lib/libssl/src/Makefile
index 57d742e4d4..47bb99c40b 100644
--- a/src/lib/libssl/src/Makefile
+++ b/src/lib/libssl/src/Makefile
@@ -4,16 +4,16 @@
4## Makefile for OpenSSL 4## Makefile for OpenSSL
5## 5##
6 6
7VERSION=0.9.8k 7VERSION=1.0.0a
8MAJOR=0 8MAJOR=1
9MINOR=9.8 9MINOR=0.0
10SHLIB_VERSION_NUMBER=0.9.8 10SHLIB_VERSION_NUMBER=1.0.0
11SHLIB_VERSION_HISTORY= 11SHLIB_VERSION_HISTORY=
12SHLIB_MAJOR=0 12SHLIB_MAJOR=1
13SHLIB_MINOR=9.8 13SHLIB_MINOR=0.0
14SHLIB_EXT= 14SHLIB_EXT=
15PLATFORM=dist 15PLATFORM=dist
16OPTIONS= no-camellia no-capieng no-cms no-gmp no-jpake no-krb5 no-mdc2 no-montasm no-rc5 no-rfc3779 no-seed no-shared no-zlib no-zlib-dynamic 16OPTIONS= no-gmp no-jpake no-krb5 no-md2 no-rc5 no-rfc3779 no-shared no-store no-zlib no-zlib-dynamic static-engine
17CONFIGURE_ARGS=dist 17CONFIGURE_ARGS=dist
18SHLIB_TARGET= 18SHLIB_TARGET=
19 19
@@ -61,18 +61,19 @@ OPENSSLDIR=/usr/local/ssl
61 61
62CC= cc 62CC= cc
63CFLAG= -O 63CFLAG= -O
64DEPFLAG= -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_CMS -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED 64DEPFLAG= -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MD2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_STORE
65PEX_LIBS= 65PEX_LIBS=
66EX_LIBS= 66EX_LIBS=
67EXE_EXT= 67EXE_EXT=
68ARFLAGS= 68ARFLAGS=
69AR=ar $(ARFLAGS) r 69AR= ar $(ARFLAGS) r
70ARD=ar $(ARFLAGS) d
71RANLIB= /usr/bin/ranlib 70RANLIB= /usr/bin/ranlib
71NM= nm
72PERL= /usr/bin/perl 72PERL= /usr/bin/perl
73TAR= tar 73TAR= tar
74TARFLAGS= --no-recursion 74TARFLAGS= --no-recursion
75MAKEDEPPROG=makedepend 75MAKEDEPPROG=makedepend
76LIBDIR=lib
76 77
77# We let the C compiler driver to take care of .s files. This is done in 78# We let the C compiler driver to take care of .s files. This is done in
78# order to be excused from maintaining a separate set of architecture 79# order to be excused from maintaining a separate set of architecture
@@ -87,10 +88,10 @@ ASFLAG=$(CFLAG)
87PROCESSOR= 88PROCESSOR=
88 89
89# CPUID module collects small commonly used assembler snippets 90# CPUID module collects small commonly used assembler snippets
90CPUID_OBJ= 91CPUID_OBJ= mem_clr.o
91BN_ASM= bn_asm.o 92BN_ASM= bn_asm.o
92DES_ENC= des_enc.o fcrypt_b.o 93DES_ENC= des_enc.o fcrypt_b.o
93AES_ASM_OBJ= aes_core.o aes_cbc.o 94AES_ENC= aes_core.o aes_cbc.o
94BF_ENC= bf_enc.o 95BF_ENC= bf_enc.o
95CAST_ENC= c_enc.o 96CAST_ENC= c_enc.o
96RC4_ENC= rc4_enc.o rc4_skey.o 97RC4_ENC= rc4_enc.o rc4_skey.o
@@ -98,6 +99,9 @@ RC5_ENC= rc5_enc.o
98MD5_ASM_OBJ= 99MD5_ASM_OBJ=
99SHA1_ASM_OBJ= 100SHA1_ASM_OBJ=
100RMD160_ASM_OBJ= 101RMD160_ASM_OBJ=
102WP_ASM_OBJ= wp_block.o
103CMLL_ENC= camellia.o cmll_misc.o cmll_cbc.o
104PERLASM_SCHEME=
101 105
102# KRB5 stuff 106# KRB5 stuff
103KRB5_INCLUDES= 107KRB5_INCLUDES=
@@ -107,44 +111,19 @@ LIBKRB5=
107ZLIB_INCLUDE= 111ZLIB_INCLUDE=
108LIBZLIB= 112LIBZLIB=
109 113
110# This is the location of fipscanister.o and friends.
111# The FIPS module build will place it $(INSTALLTOP)/lib
112# but since $(INSTALLTOP) can only take the default value
113# when the module is built it will be in /usr/local/ssl/lib
114# $(INSTALLTOP) for this build make be different so hard
115# code the path.
116
117FIPSLIBDIR=/usr/local/ssl/fips-1.0/lib/
118
119# This is set to "y" if fipscanister.o is compiled internally as
120# opposed to coming from an external validated location.
121
122FIPSCANISTERINTERNAL=n
123
124# The location of the library which contains fipscanister.o
125# normally it will be libcrypto unless fipsdso is set in which
126# case it will be libfips. If not compiling in FIPS mode at all
127# this is empty making it a useful test for a FIPS compile.
128
129FIPSCANLIB=
130
131# Shared library base address. Currently only used on Windows.
132#
133
134BASEADDR=0xFB00000
135
136DIRS= crypto ssl engines apps test tools 114DIRS= crypto ssl engines apps test tools
115ENGDIRS= ccgost
137SHLIBDIRS= crypto ssl 116SHLIBDIRS= crypto ssl
138 117
139# dirs in crypto to build 118# dirs in crypto to build
140SDIRS= \ 119SDIRS= \
141 objects \ 120 objects \
142 md2 md4 md5 sha hmac ripemd \ 121 md4 md5 sha mdc2 hmac ripemd whrlpool \
143 des aes rc2 rc4 idea bf cast \ 122 des aes rc2 rc4 idea bf cast camellia seed modes \
144 bn ec rsa dsa ecdsa dh ecdh dso engine \ 123 bn ec rsa dsa ecdsa dh ecdh dso engine \
145 buffer bio stack lhash rand err \ 124 buffer bio stack lhash rand err \
146 evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \ 125 evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \
147 store pqueue 126 cms pqueue ts
148# keep in mind that the above list is adjusted by ./Configure 127# keep in mind that the above list is adjusted by ./Configure
149# according to no-xxx arguments... 128# according to no-xxx arguments...
150 129
@@ -158,6 +137,8 @@ MANDIR=$(OPENSSLDIR)/man
158MAN1=1 137MAN1=1
159MAN3=3 138MAN3=3
160MANSUFFIX= 139MANSUFFIX=
140HTMLSUFFIX=html
141HTMLDIR=$(OPENSSLDIR)/html
161SHELL=/bin/sh 142SHELL=/bin/sh
162 143
163TOP= . 144TOP= .
@@ -167,7 +148,6 @@ WDIRS= windows
167LIBS= libcrypto.a libssl.a 148LIBS= libcrypto.a libssl.a
168SHARED_CRYPTO=libcrypto$(SHLIB_EXT) 149SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
169SHARED_SSL=libssl$(SHLIB_EXT) 150SHARED_SSL=libssl$(SHLIB_EXT)
170SHARED_FIPS=
171SHARED_LIBS= 151SHARED_LIBS=
172SHARED_LIBS_LINK_EXTS= 152SHARED_LIBS_LINK_EXTS=
173SHARED_LDFLAGS= 153SHARED_LDFLAGS=
@@ -198,33 +178,35 @@ CLEARENV= TOP= && unset TOP $${LIB+LIB} $${LIBS+LIBS} \
198 $${SHAREDCMD+SHAREDCMD} $${SHAREDFLAGS+SHAREDFLAGS} \ 178 $${SHAREDCMD+SHAREDCMD} $${SHAREDFLAGS+SHAREDFLAGS} \
199 $${SHARED_LIB+SHARED_LIB} $${LIBEXTRAS+LIBEXTRAS} 179 $${SHARED_LIB+SHARED_LIB} $${LIBEXTRAS+LIBEXTRAS}
200 180
201BUILDENV= PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \ 181BUILDENV= PLATFORM='$(PLATFORM)' PROCESSOR='$(PROCESSOR)' \
202 CC='${CC}' CFLAG='${CFLAG}' \ 182 CC='$(CC)' CFLAG='$(CFLAG)' \
203 AS='${CC}' ASFLAG='${CFLAG} -c' \ 183 AS='$(CC)' ASFLAG='$(CFLAG) -c' \
204 AR='${AR}' PERL='${PERL}' RANLIB='${RANLIB}' \ 184 AR='$(AR)' NM='$(NM)' RANLIB='$(RANLIB)' \
205 SDIRS='${SDIRS}' LIBRPATH='${INSTALLTOP}/lib' \ 185 CROSS_COMPILE='$(CROSS_COMPILE)' \
206 INSTALL_PREFIX='${INSTALL_PREFIX}' \ 186 PERL='$(PERL)' ENGDIRS='$(ENGDIRS)' \
207 INSTALLTOP='${INSTALLTOP}' OPENSSLDIR='${OPENSSLDIR}' \ 187 SDIRS='$(SDIRS)' LIBRPATH='$(INSTALLTOP)/$(LIBDIR)' \
208 MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD ${MAKEDEPPROG}' \ 188 INSTALL_PREFIX='$(INSTALL_PREFIX)' \
209 DEPFLAG='-DOPENSSL_NO_DEPRECATED ${DEPFLAG}' \ 189 INSTALLTOP='$(INSTALLTOP)' OPENSSLDIR='$(OPENSSLDIR)' \
210 MAKEDEPPROG='${MAKEDEPPROG}' \ 190 LIBDIR='$(LIBDIR)' \
211 SHARED_LDFLAGS='${SHARED_LDFLAGS}' \ 191 MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD $(MAKEDEPPROG)' \
212 KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' \ 192 DEPFLAG='-DOPENSSL_NO_DEPRECATED $(DEPFLAG)' \
213 EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' \ 193 MAKEDEPPROG='$(MAKEDEPPROG)' \
214 SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' \ 194 SHARED_LDFLAGS='$(SHARED_LDFLAGS)' \
215 PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' \ 195 KRB5_INCLUDES='$(KRB5_INCLUDES)' LIBKRB5='$(LIBKRB5)' \
216 CPUID_OBJ='${CPUID_OBJ}' \ 196 ZLIB_INCLUDE='$(ZLIB_INCLUDE)' LIBZLIB='$(LIBZLIB)' \
217 BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' \ 197 EXE_EXT='$(EXE_EXT)' SHARED_LIBS='$(SHARED_LIBS)' \
218 AES_ASM_OBJ='${AES_ASM_OBJ}' \ 198 SHLIB_EXT='$(SHLIB_EXT)' SHLIB_TARGET='$(SHLIB_TARGET)' \
219 BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' \ 199 PEX_LIBS='$(PEX_LIBS)' EX_LIBS='$(EX_LIBS)' \
220 RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' \ 200 CPUID_OBJ='$(CPUID_OBJ)' \
221 SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' \ 201 BN_ASM='$(BN_ASM)' DES_ENC='$(DES_ENC)' \
222 MD5_ASM_OBJ='${MD5_ASM_OBJ}' \ 202 AES_ENC='$(AES_ENC)' CMLL_ENC='$(CMLL_ENC)' \
223 RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' \ 203 BF_ENC='$(BF_ENC)' CAST_ENC='$(CAST_ENC)' \
224 FIPSLIBDIR='${FIPSLIBDIR}' \ 204 RC4_ENC='$(RC4_ENC)' RC5_ENC='$(RC5_ENC)' \
225 FIPSCANLIB="$${FIPSCANLIB:-$(FIPSCANLIB)}" \ 205 SHA1_ASM_OBJ='$(SHA1_ASM_OBJ)' \
226 FIPSCANISTERINTERNAL='${FIPSCANISTERINTERNAL}' \ 206 MD5_ASM_OBJ='$(MD5_ASM_OBJ)' \
227 FIPS_EX_OBJ='${FIPS_EX_OBJ}' \ 207 RMD160_ASM_OBJ='$(RMD160_ASM_OBJ)' \
208 WP_ASM_OBJ='$(WP_ASM_OBJ)' \
209 PERLASM_SCHEME='$(PERLASM_SCHEME)' \
228 THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES= 210 THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
229# MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors, 211# MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors,
230# which in turn eliminates ambiguities in variable treatment with -e. 212# which in turn eliminates ambiguities in variable treatment with -e.
@@ -243,98 +225,26 @@ BUILDENV= PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
243# subdirectories defined in $(DIRS). It requires that the target 225# subdirectories defined in $(DIRS). It requires that the target
244# is given through the shell variable `target'. 226# is given through the shell variable `target'.
245BUILD_CMD= if [ -d "$$dir" ]; then \ 227BUILD_CMD= if [ -d "$$dir" ]; then \
246 ( [ $$target != all -a -z "$(FIPSCANLIB)" ] && FIPSCANLIB=/dev/null; \ 228 ( cd $$dir && echo "making $$target in $$dir..." && \
247 cd $$dir && echo "making $$target in $$dir..." && \
248 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. DIR=$$dir $$target \ 229 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. DIR=$$dir $$target \
249 ) || exit 1; \ 230 ) || exit 1; \
250 fi 231 fi
251RECURSIVE_BUILD_CMD=for dir in $(DIRS); do $(BUILD_CMD); done 232RECURSIVE_BUILD_CMD=for dir in $(DIRS); do $(BUILD_CMD); done
252BUILD_ONE_CMD=\ 233BUILD_ONE_CMD=\
253 if echo " $(DIRS) " | grep " $$dir " >/dev/null 2>/dev/null; then \ 234 if expr " $(DIRS) " : ".* $$dir " >/dev/null 2>&1; then \
254 $(BUILD_CMD); \ 235 $(BUILD_CMD); \
255 fi 236 fi
256 237
257reflect: 238reflect:
258 @[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV) 239 @[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
259 240
260FIPS_EX_OBJ= ../crypto/aes/aes_cfb.o \
261 ../crypto/aes/aes_ecb.o \
262 ../crypto/aes/aes_ofb.o \
263 ../crypto/bn/bn_add.o \
264 ../crypto/bn/bn_blind.o \
265 ../crypto/bn/bn_ctx.o \
266 ../crypto/bn/bn_div.o \
267 ../crypto/bn/bn_exp2.o \
268 ../crypto/bn/bn_exp.o \
269 ../crypto/bn/bn_gcd.o \
270 ../crypto/bn/bn_lib.o \
271 ../crypto/bn/bn_mod.o \
272 ../crypto/bn/bn_mont.o \
273 ../crypto/bn/bn_mul.o \
274 ../crypto/bn/bn_prime.o \
275 ../crypto/bn/bn_rand.o \
276 ../crypto/bn/bn_recp.o \
277 ../crypto/bn/bn_shift.o \
278 ../crypto/bn/bn_sqr.o \
279 ../crypto/bn/bn_word.o \
280 ../crypto/bn/bn_x931p.o \
281 ../crypto/buffer/buf_str.o \
282 ../crypto/cryptlib.o \
283 ../crypto/des/cfb64ede.o \
284 ../crypto/des/cfb64enc.o \
285 ../crypto/des/cfb_enc.o \
286 ../crypto/des/ecb3_enc.o \
287 ../crypto/des/ecb_enc.o \
288 ../crypto/des/ofb64ede.o \
289 ../crypto/des/ofb64enc.o \
290 ../crypto/des/fcrypt.o \
291 ../crypto/des/set_key.o \
292 ../crypto/dsa/dsa_utl.o \
293 ../crypto/dsa/dsa_sign.o \
294 ../crypto/dsa/dsa_vrf.o \
295 ../crypto/err/err.o \
296 ../crypto/evp/digest.o \
297 ../crypto/evp/enc_min.o \
298 ../crypto/evp/e_aes.o \
299 ../crypto/evp/e_des3.o \
300 ../crypto/evp/p_sign.o \
301 ../crypto/evp/p_verify.o \
302 ../crypto/mem_clr.o \
303 ../crypto/mem.o \
304 ../crypto/rand/md_rand.o \
305 ../crypto/rand/rand_egd.o \
306 ../crypto/rand/randfile.o \
307 ../crypto/rand/rand_lib.o \
308 ../crypto/rand/rand_os2.o \
309 ../crypto/rand/rand_unix.o \
310 ../crypto/rand/rand_win.o \
311 ../crypto/rsa/rsa_lib.o \
312 ../crypto/rsa/rsa_none.o \
313 ../crypto/rsa/rsa_oaep.o \
314 ../crypto/rsa/rsa_pk1.o \
315 ../crypto/rsa/rsa_pss.o \
316 ../crypto/rsa/rsa_ssl.o \
317 ../crypto/rsa/rsa_x931.o \
318 ../crypto/sha/sha1dgst.o \
319 ../crypto/sha/sha256.o \
320 ../crypto/sha/sha512.o \
321 ../crypto/uid.o
322
323sub_all: build_all 241sub_all: build_all
324build_all: build_libs build_apps build_tests build_tools 242build_all: build_libs build_apps build_tests build_tools
325 243
326build_libs: build_crypto build_fips build_ssl build_shared build_engines 244build_libs: build_crypto build_ssl build_engines
327 245
328build_crypto: 246build_crypto:
329 if [ -n "$(FIPSCANLIB)" ]; then \ 247 @dir=crypto; target=all; $(BUILD_ONE_CMD)
330 EXCL_OBJ='$(AES_ASM_OBJ) $(BN_ASM) $(DES_ENC) $(CPUID_OBJ) $(SHA1_ASM_OBJ) $(FIPS_EX_OBJ)' ; export EXCL_OBJ ; \
331 ARX='$(PERL) $${TOP}/util/arx.pl $(AR)' ; \
332 else \
333 ARX='${AR}' ; \
334 fi ; export ARX ; \
335 dir=crypto; target=all; $(BUILD_ONE_CMD)
336build_fips:
337 @dir=fips; target=all; [ -z "$(FIPSCANLIB)" ] || $(BUILD_ONE_CMD)
338build_ssl: 248build_ssl:
339 @dir=ssl; target=all; $(BUILD_ONE_CMD) 249 @dir=ssl; target=all; $(BUILD_ONE_CMD)
340build_engines: 250build_engines:
@@ -350,20 +260,9 @@ all_testapps: build_libs build_testapps
350build_testapps: 260build_testapps:
351 @dir=crypto; target=testapps; $(BUILD_ONE_CMD) 261 @dir=crypto; target=testapps; $(BUILD_ONE_CMD)
352 262
353build_shared: $(SHARED_LIBS) 263libcrypto$(SHLIB_EXT): libcrypto.a
354libcrypto$(SHLIB_EXT): libcrypto.a $(SHARED_FIPS)
355 @if [ "$(SHLIB_TARGET)" != "" ]; then \ 264 @if [ "$(SHLIB_TARGET)" != "" ]; then \
356 if [ "$(FIPSCANLIB)" = "libfips" ]; then \ 265 $(MAKE) SHLIBDIRS=crypto build-shared; \
357 $(ARD) libcrypto.a fipscanister.o ; \
358 $(MAKE) SHLIBDIRS='crypto' SHLIBDEPS='-lfips' build-shared; \
359 $(AR) libcrypto.a fips/fipscanister.o ; \
360 else \
361 if [ "$(FIPSCANLIB)" = "libcrypto" ]; then \
362 FIPSLD_CC=$(CC); CC=fips/fipsld; \
363 export CC FIPSLD_CC; \
364 fi; \
365 $(MAKE) -e SHLIBDIRS='crypto' build-shared; \
366 fi \
367 else \ 266 else \
368 echo "There's no support for shared libraries on this platform" >&2; \ 267 echo "There's no support for shared libraries on this platform" >&2; \
369 exit 1; \ 268 exit 1; \
@@ -371,32 +270,12 @@ libcrypto$(SHLIB_EXT): libcrypto.a $(SHARED_FIPS)
371 270
372libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a 271libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
373 @if [ "$(SHLIB_TARGET)" != "" ]; then \ 272 @if [ "$(SHLIB_TARGET)" != "" ]; then \
374 shlibdeps=-lcrypto; \ 273 $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
375 [ "$(FIPSCANLIB)" = "libfips" ] && shlibdeps="$$shlibdeps -lfips"; \
376 $(MAKE) SHLIBDIRS=ssl SHLIBDEPS="$$shlibdeps" build-shared; \
377 else \
378 echo "There's no support for shared libraries on this platform" >&2 ; \
379 exit 1; \
380 fi
381
382fips/fipscanister.o: build_fips
383libfips$(SHLIB_EXT): fips/fipscanister.o
384 @if [ "$(SHLIB_TARGET)" != "" ]; then \
385 FIPSLD_CC=$(CC); CC=fips/fipsld; export CC FIPSLD_CC; \
386 $(MAKE) -f Makefile.shared -e $(BUILDENV) \
387 CC=$${CC} LIBNAME=fips THIS=$@ \
388 LIBEXTRAS=fips/fipscanister.o \
389 LIBDEPS="$(EX_LIBS)" \
390 LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \
391 link_o.$(SHLIB_TARGET) || { rm -f $@; exit 1; } \
392 else \ 274 else \
393 echo "There's no support for shared libraries on this platform" >&2; \ 275 echo "There's no support for shared libraries on this platform" >&2; \
394 exit 1; \ 276 exit 1; \
395 fi 277 fi
396 278
397libfips.a:
398 dir=fips; target=all; $(BUILD_ONE_CMD)
399
400clean-shared: 279clean-shared:
401 @set -e; for i in $(SHLIBDIRS); do \ 280 @set -e; for i in $(SHLIBDIRS); do \
402 if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \ 281 if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
@@ -412,10 +291,10 @@ clean-shared:
412 done 291 done
413 292
414link-shared: 293link-shared:
415 @ set -e; for i in ${SHLIBDIRS}; do \ 294 @ set -e; for i in $(SHLIBDIRS); do \
416 $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \ 295 $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \
417 LIBNAME=$$i LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \ 296 LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
418 LIBCOMPATVERSIONS=";${SHLIB_VERSION_HISTORY}" \ 297 LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
419 symlink.$(SHLIB_TARGET); \ 298 symlink.$(SHLIB_TARGET); \
420 libs="$$libs -l$$i"; \ 299 libs="$$libs -l$$i"; \
421 done 300 done
@@ -423,13 +302,13 @@ link-shared:
423build-shared: do_$(SHLIB_TARGET) link-shared 302build-shared: do_$(SHLIB_TARGET) link-shared
424 303
425do_$(SHLIB_TARGET): 304do_$(SHLIB_TARGET):
426 @ set -e; libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \ 305 @ set -e; libs='-L. $(SHLIBDEPS)'; for i in $(SHLIBDIRS); do \
427 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \ 306 if [ "$$i" = "ssl" -a -n "$(LIBKRB5)" ]; then \
428 libs="$(LIBKRB5) $$libs"; \ 307 libs="$(LIBKRB5) $$libs"; \
429 fi; \ 308 fi; \
430 $(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \ 309 $(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \
431 LIBNAME=$$i LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \ 310 LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
432 LIBCOMPATVERSIONS=";${SHLIB_VERSION_HISTORY}" \ 311 LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
433 LIBDEPS="$$libs $(EX_LIBS)" \ 312 LIBDEPS="$$libs $(EX_LIBS)" \
434 link_a.$(SHLIB_TARGET); \ 313 link_a.$(SHLIB_TARGET); \
435 libs="-l$$i $$libs"; \ 314 libs="-l$$i $$libs"; \
@@ -438,7 +317,7 @@ do_$(SHLIB_TARGET):
438libcrypto.pc: Makefile 317libcrypto.pc: Makefile
439 @ ( echo 'prefix=$(INSTALLTOP)'; \ 318 @ ( echo 'prefix=$(INSTALLTOP)'; \
440 echo 'exec_prefix=$${prefix}'; \ 319 echo 'exec_prefix=$${prefix}'; \
441 echo 'libdir=$${exec_prefix}/lib'; \ 320 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
442 echo 'includedir=$${prefix}/include'; \ 321 echo 'includedir=$${prefix}/include'; \
443 echo ''; \ 322 echo ''; \
444 echo 'Name: OpenSSL-libcrypto'; \ 323 echo 'Name: OpenSSL-libcrypto'; \
@@ -451,7 +330,7 @@ libcrypto.pc: Makefile
451libssl.pc: Makefile 330libssl.pc: Makefile
452 @ ( echo 'prefix=$(INSTALLTOP)'; \ 331 @ ( echo 'prefix=$(INSTALLTOP)'; \
453 echo 'exec_prefix=$${prefix}'; \ 332 echo 'exec_prefix=$${prefix}'; \
454 echo 'libdir=$${exec_prefix}/lib'; \ 333 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
455 echo 'includedir=$${prefix}/include'; \ 334 echo 'includedir=$${prefix}/include'; \
456 echo ''; \ 335 echo ''; \
457 echo 'Name: OpenSSL'; \ 336 echo 'Name: OpenSSL'; \
@@ -464,7 +343,7 @@ libssl.pc: Makefile
464openssl.pc: Makefile 343openssl.pc: Makefile
465 @ ( echo 'prefix=$(INSTALLTOP)'; \ 344 @ ( echo 'prefix=$(INSTALLTOP)'; \
466 echo 'exec_prefix=$${prefix}'; \ 345 echo 'exec_prefix=$${prefix}'; \
467 echo 'libdir=$${exec_prefix}/lib'; \ 346 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
468 echo 'includedir=$${prefix}/include'; \ 347 echo 'includedir=$${prefix}/include'; \
469 echo ''; \ 348 echo ''; \
470 echo 'Name: OpenSSL'; \ 349 echo 'Name: OpenSSL'; \
@@ -506,32 +385,32 @@ links:
506 @$(PERL) $(TOP)/util/mkdir-p.pl include/openssl 385 @$(PERL) $(TOP)/util/mkdir-p.pl include/openssl
507 @$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER) 386 @$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER)
508 @set -e; target=links; $(RECURSIVE_BUILD_CMD) 387 @set -e; target=links; $(RECURSIVE_BUILD_CMD)
509 @if [ -z "$(FIPSCANLIB)" ]; then \
510 set -e; target=links; dir=fips ; $(BUILD_CMD) ; \
511 fi
512 388
513gentests: 389gentests:
514 @(cd test && echo "generating dummy tests (if needed)..." && \ 390 @(cd test && echo "generating dummy tests (if needed)..." && \
515 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on generate ); 391 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on generate );
516 392
517dclean: 393dclean:
518 rm -f *.bak 394 rm -rf *.bak include/openssl certs/.0
519 @set -e; target=dclean; $(RECURSIVE_BUILD_CMD) 395 @set -e; target=dclean; $(RECURSIVE_BUILD_CMD)
520 396
521rehash: rehash.time 397rehash: rehash.time
522rehash.time: certs 398rehash.time: certs apps
523 @(OPENSSL="`pwd`/util/opensslwrap.sh"; \ 399 @if [ -z "$(CROSS_COMPILE)" ]; then \
524 OPENSSL_DEBUG_MEMORY=on; \ 400 (OPENSSL="`pwd`/util/opensslwrap.sh"; \
525 export OPENSSL OPENSSL_DEBUG_MEMORY; \ 401 [ -x "apps/openssl.exe" ] && OPENSSL="apps/openssl.exe" || :; \
526 $(PERL) tools/c_rehash certs) 402 OPENSSL_DEBUG_MEMORY=on; \
527 touch rehash.time 403 export OPENSSL OPENSSL_DEBUG_MEMORY; \
404 $(PERL) tools/c_rehash certs) && \
405 touch rehash.time; \
406 else :; fi
528 407
529test: tests 408test: tests
530 409
531tests: rehash 410tests: rehash
532 @(cd test && echo "testing..." && \ 411 @(cd test && echo "testing..." && \
533 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on tests ); 412 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on OPENSSL_CONF=../apps/openssl.cnf tests );
534 util/opensslwrap.sh version -a 413 OPENSSL_CONF=apps/openssl.cnf util/opensslwrap.sh version -a
535 414
536report: 415report:
537 @$(PERL) util/selftest.pl 416 @$(PERL) util/selftest.pl
@@ -564,6 +443,8 @@ crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
564 $(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h 443 $(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
565crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num 444crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
566 $(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h 445 $(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
446crypto/objects/obj_xref.h: crypto/objects/objxref.pl crypto/objects/obj_xref.txt crypto/objects/obj_mac.num
447 $(PERL) crypto/objects/objxref.pl crypto/objects/obj_mac.num crypto/objects/obj_xref.txt >crypto/objects/obj_xref.h
567 448
568apps/openssl-vms.cnf: apps/openssl.cnf 449apps/openssl-vms.cnf: apps/openssl.cnf
569 $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf 450 $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf
@@ -576,7 +457,7 @@ TABLE: Configure
576 (echo 'Output of `Configure TABLE'"':"; \ 457 (echo 'Output of `Configure TABLE'"':"; \
577 $(PERL) Configure TABLE) > TABLE 458 $(PERL) Configure TABLE) > TABLE
578 459
579update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend 460update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
580 461
581# Build distribution tar-file. As the list of files returned by "find" is 462# Build distribution tar-file. As the list of files returned by "find" is
582# pretty long, on several platforms a "too many arguments" error or similar 463# pretty long, on several platforms a "too many arguments" error or similar
@@ -607,8 +488,8 @@ tar-snap:
607dist: 488dist:
608 $(PERL) Configure dist 489 $(PERL) Configure dist
609 @$(MAKE) dist_pem_h 490 @$(MAKE) dist_pem_h
610 @$(MAKE) SDIRS='${SDIRS}' clean 491 @$(MAKE) SDIRS='$(SDIRS)' clean
611 @$(MAKE) TAR='${TAR}' TARFLAGS='${TARFLAGS}' tar 492 @$(MAKE) TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' tar
612 493
613dist_pem_h: 494dist_pem_h:
614 (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean) 495 (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
@@ -617,9 +498,9 @@ install: all install_docs install_sw
617 498
618install_sw: 499install_sw:
619 @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \ 500 @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
620 $(INSTALL_PREFIX)$(INSTALLTOP)/lib \ 501 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) \
621 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines \ 502 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines \
622 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig \ 503 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig \
623 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \ 504 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
624 $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \ 505 $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
625 $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \ 506 $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
@@ -634,10 +515,10 @@ install_sw:
634 do \ 515 do \
635 if [ -f "$$i" ]; then \ 516 if [ -f "$$i" ]; then \
636 ( echo installing $$i; \ 517 ( echo installing $$i; \
637 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 518 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
638 $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 519 $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
639 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 520 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
640 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \ 521 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i ); \
641 fi; \ 522 fi; \
642 done; 523 done;
643 @set -e; if [ -n "$(SHARED_LIBS)" ]; then \ 524 @set -e; if [ -n "$(SHARED_LIBS)" ]; then \
@@ -647,22 +528,32 @@ install_sw:
647 if [ -f "$$i" -o -f "$$i.a" ]; then \ 528 if [ -f "$$i" -o -f "$$i.a" ]; then \
648 ( echo installing $$i; \ 529 ( echo installing $$i; \
649 if [ "$(PLATFORM)" != "Cygwin" ]; then \ 530 if [ "$(PLATFORM)" != "Cygwin" ]; then \
650 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 531 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
651 chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 532 chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
652 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \ 533 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
653 else \ 534 else \
654 c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \ 535 c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
655 cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \ 536 cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
656 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \ 537 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
657 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \ 538 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
658 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 539 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
659 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 540 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
660 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \ 541 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
661 fi ); \ 542 fi ); \
543 if expr $(PLATFORM) : 'mingw' > /dev/null; then \
544 ( case $$i in \
545 *crypto*) i=libeay32.dll;; \
546 *ssl*) i=ssleay32.dll;; \
547 esac; \
548 echo installing $$i; \
549 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
550 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
551 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); \
552 fi; \
662 fi; \ 553 fi; \
663 done; \ 554 done; \
664 ( here="`pwd`"; \ 555 ( here="`pwd`"; \
665 cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \ 556 cd $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR); \
666 $(MAKE) -f $$here/Makefile HERE="$$here" link-shared ); \ 557 $(MAKE) -f $$here/Makefile HERE="$$here" link-shared ); \
667 if [ "$(INSTALLTOP)" != "/usr" ]; then \ 558 if [ "$(INSTALLTOP)" != "/usr" ]; then \
668 echo 'OpenSSL shared libraries have been installed in:'; \ 559 echo 'OpenSSL shared libraries have been installed in:'; \
@@ -671,12 +562,33 @@ install_sw:
671 sed -e '1,/^$$/d' doc/openssl-shared.txt; \ 562 sed -e '1,/^$$/d' doc/openssl-shared.txt; \
672 fi; \ 563 fi; \
673 fi 564 fi
674 cp libcrypto.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig 565 cp libcrypto.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
675 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/libcrypto.pc 566 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc
676 cp libssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig 567 cp libssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
677 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/libssl.pc 568 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc
678 cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig 569 cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
679 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/openssl.pc 570 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc
571
572install_html_docs:
573 here="`pwd`"; \
574 for subdir in apps crypto ssl; do \
575 mkdir -p $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
576 for i in doc/$$subdir/*.pod; do \
577 fn=`basename $$i .pod`; \
578 echo "installing html/$$fn.$(HTMLSUFFIX)"; \
579 cat $$i \
580 | sed -r 's/L<([^)]*)(\([0-9]\))?\|([^)]*)(\([0-9]\))?>/L<\1|\3>/g' \
581 | pod2html --podroot=doc --htmlroot=.. --podpath=apps:crypto:ssl \
582 | sed -r 's/<!DOCTYPE.*//g' \
583 > $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir/$$fn.$(HTMLSUFFIX); \
584 $(PERL) util/extract-names.pl < $$i | \
585 grep -v $$filecase "^$$fn\$$" | \
586 (cd $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
587 while read n; do \
588 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$(HTMLSUFFIX) "$$n".$(HTMLSUFFIX); \
589 done); \
590 done; \
591 done
680 592
681install_docs: 593install_docs:
682 @$(PERL) $(TOP)/util/mkdir-p.pl \ 594 @$(PERL) $(TOP)/util/mkdir-p.pl \
@@ -684,7 +596,7 @@ install_docs:
684 $(INSTALL_PREFIX)$(MANDIR)/man3 \ 596 $(INSTALL_PREFIX)$(MANDIR)/man3 \
685 $(INSTALL_PREFIX)$(MANDIR)/man5 \ 597 $(INSTALL_PREFIX)$(MANDIR)/man5 \
686 $(INSTALL_PREFIX)$(MANDIR)/man7 598 $(INSTALL_PREFIX)$(MANDIR)/man7
687 @pod2man="`cd util; ./pod2mantest $(PERL)`"; \ 599 @pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \
688 here="`pwd`"; \ 600 here="`pwd`"; \
689 filecase=; \ 601 filecase=; \
690 if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \ 602 if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \
@@ -704,7 +616,7 @@ install_docs:
704 (grep -v "[ ]"; true) | \ 616 (grep -v "[ ]"; true) | \
705 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \ 617 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
706 while read n; do \ 618 while read n; do \
707 $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \ 619 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
708 done); \ 620 done); \
709 done; \ 621 done; \
710 set -e; for i in doc/crypto/*.pod doc/ssl/*.pod; do \ 622 set -e; for i in doc/crypto/*.pod doc/ssl/*.pod; do \
@@ -721,7 +633,7 @@ install_docs:
721 (grep -v "[ ]"; true) | \ 633 (grep -v "[ ]"; true) | \
722 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \ 634 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
723 while read n; do \ 635 while read n; do \
724 $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \ 636 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
725 done); \ 637 done); \
726 done 638 done
727 639
diff --git a/src/lib/libssl/src/Makefile.org b/src/lib/libssl/src/Makefile.org
index d1b56b2f58..fb0af7ecc2 100644
--- a/src/lib/libssl/src/Makefile.org
+++ b/src/lib/libssl/src/Makefile.org
@@ -65,12 +65,13 @@ EX_LIBS=
65EXE_EXT= 65EXE_EXT=
66ARFLAGS= 66ARFLAGS=
67AR=ar $(ARFLAGS) r 67AR=ar $(ARFLAGS) r
68ARD=ar $(ARFLAGS) d
69RANLIB= ranlib 68RANLIB= ranlib
69NM= nm
70PERL= perl 70PERL= perl
71TAR= tar 71TAR= tar
72TARFLAGS= --no-recursion 72TARFLAGS= --no-recursion
73MAKEDEPPROG=makedepend 73MAKEDEPPROG=makedepend
74LIBDIR=lib
74 75
75# We let the C compiler driver to take care of .s files. This is done in 76# We let the C compiler driver to take care of .s files. This is done in
76# order to be excused from maintaining a separate set of architecture 77# order to be excused from maintaining a separate set of architecture
@@ -88,7 +89,7 @@ PROCESSOR=
88CPUID_OBJ= 89CPUID_OBJ=
89BN_ASM= bn_asm.o 90BN_ASM= bn_asm.o
90DES_ENC= des_enc.o fcrypt_b.o 91DES_ENC= des_enc.o fcrypt_b.o
91AES_ASM_OBJ=aes_core.o aes_cbc.o 92AES_ENC= aes_core.o aes_cbc.o
92BF_ENC= bf_enc.o 93BF_ENC= bf_enc.o
93CAST_ENC= c_enc.o 94CAST_ENC= c_enc.o
94RC4_ENC= rc4_enc.o 95RC4_ENC= rc4_enc.o
@@ -96,6 +97,9 @@ RC5_ENC= rc5_enc.o
96MD5_ASM_OBJ= 97MD5_ASM_OBJ=
97SHA1_ASM_OBJ= 98SHA1_ASM_OBJ=
98RMD160_ASM_OBJ= 99RMD160_ASM_OBJ=
100WP_ASM_OBJ=
101CMLL_ENC=
102PERLASM_SCHEME=
99 103
100# KRB5 stuff 104# KRB5 stuff
101KRB5_INCLUDES= 105KRB5_INCLUDES=
@@ -105,44 +109,19 @@ LIBKRB5=
105ZLIB_INCLUDE= 109ZLIB_INCLUDE=
106LIBZLIB= 110LIBZLIB=
107 111
108# This is the location of fipscanister.o and friends. 112DIRS= crypto ssl engines apps test tools
109# The FIPS module build will place it $(INSTALLTOP)/lib 113ENGDIRS= ccgost
110# but since $(INSTALLTOP) can only take the default value 114SHLIBDIRS= crypto ssl
111# when the module is built it will be in /usr/local/ssl/lib
112# $(INSTALLTOP) for this build make be different so hard
113# code the path.
114
115FIPSLIBDIR=/usr/local/ssl/lib/
116
117# This is set to "y" if fipscanister.o is compiled internally as
118# opposed to coming from an external validated location.
119
120FIPSCANISTERINTERNAL=n
121
122# The location of the library which contains fipscanister.o
123# normally it will be libcrypto unless fipsdso is set in which
124# case it will be libfips. If not compiling in FIPS mode at all
125# this is empty making it a useful test for a FIPS compile.
126
127FIPSCANLIB=
128
129# Shared library base address. Currently only used on Windows.
130#
131
132BASEADDR=
133
134DIRS= crypto fips ssl engines apps test tools
135SHLIBDIRS= crypto ssl fips
136 115
137# dirs in crypto to build 116# dirs in crypto to build
138SDIRS= \ 117SDIRS= \
139 objects \ 118 objects \
140 md2 md4 md5 sha mdc2 hmac ripemd \ 119 md2 md4 md5 sha mdc2 hmac ripemd whrlpool \
141 des aes rc2 rc4 rc5 idea bf cast camellia seed \ 120 des aes rc2 rc4 rc5 idea bf cast camellia seed modes \
142 bn ec rsa dsa ecdsa dh ecdh dso engine \ 121 bn ec rsa dsa ecdsa dh ecdh dso engine \
143 buffer bio stack lhash rand err \ 122 buffer bio stack lhash rand err \
144 evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \ 123 evp asn1 pem x509 x509v3 conf txt_db pkcs7 pkcs12 comp ocsp ui krb5 \
145 store cms pqueue jpake 124 cms pqueue ts jpake store
146# keep in mind that the above list is adjusted by ./Configure 125# keep in mind that the above list is adjusted by ./Configure
147# according to no-xxx arguments... 126# according to no-xxx arguments...
148 127
@@ -156,6 +135,8 @@ MANDIR=$(OPENSSLDIR)/man
156MAN1=1 135MAN1=1
157MAN3=3 136MAN3=3
158MANSUFFIX= 137MANSUFFIX=
138HTMLSUFFIX=html
139HTMLDIR=$(OPENSSLDIR)/html
159SHELL=/bin/sh 140SHELL=/bin/sh
160 141
161TOP= . 142TOP= .
@@ -165,7 +146,6 @@ WDIRS= windows
165LIBS= libcrypto.a libssl.a 146LIBS= libcrypto.a libssl.a
166SHARED_CRYPTO=libcrypto$(SHLIB_EXT) 147SHARED_CRYPTO=libcrypto$(SHLIB_EXT)
167SHARED_SSL=libssl$(SHLIB_EXT) 148SHARED_SSL=libssl$(SHLIB_EXT)
168SHARED_FIPS=
169SHARED_LIBS= 149SHARED_LIBS=
170SHARED_LIBS_LINK_EXTS= 150SHARED_LIBS_LINK_EXTS=
171SHARED_LDFLAGS= 151SHARED_LDFLAGS=
@@ -196,33 +176,35 @@ CLEARENV= TOP= && unset TOP $${LIB+LIB} $${LIBS+LIBS} \
196 $${SHAREDCMD+SHAREDCMD} $${SHAREDFLAGS+SHAREDFLAGS} \ 176 $${SHAREDCMD+SHAREDCMD} $${SHAREDFLAGS+SHAREDFLAGS} \
197 $${SHARED_LIB+SHARED_LIB} $${LIBEXTRAS+LIBEXTRAS} 177 $${SHARED_LIB+SHARED_LIB} $${LIBEXTRAS+LIBEXTRAS}
198 178
199BUILDENV= PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \ 179BUILDENV= PLATFORM='$(PLATFORM)' PROCESSOR='$(PROCESSOR)' \
200 CC='${CC}' CFLAG='${CFLAG}' \ 180 CC='$(CC)' CFLAG='$(CFLAG)' \
201 AS='${CC}' ASFLAG='${CFLAG} -c' \ 181 AS='$(CC)' ASFLAG='$(CFLAG) -c' \
202 AR='${AR}' PERL='${PERL}' RANLIB='${RANLIB}' \ 182 AR='$(AR)' NM='$(NM)' RANLIB='$(RANLIB)' \
203 SDIRS='${SDIRS}' LIBRPATH='${INSTALLTOP}/lib' \ 183 CROSS_COMPILE='$(CROSS_COMPILE)' \
204 INSTALL_PREFIX='${INSTALL_PREFIX}' \ 184 PERL='$(PERL)' ENGDIRS='$(ENGDIRS)' \
205 INSTALLTOP='${INSTALLTOP}' OPENSSLDIR='${OPENSSLDIR}' \ 185 SDIRS='$(SDIRS)' LIBRPATH='$(INSTALLTOP)/$(LIBDIR)' \
206 MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD ${MAKEDEPPROG}' \ 186 INSTALL_PREFIX='$(INSTALL_PREFIX)' \
207 DEPFLAG='-DOPENSSL_NO_DEPRECATED ${DEPFLAG}' \ 187 INSTALLTOP='$(INSTALLTOP)' OPENSSLDIR='$(OPENSSLDIR)' \
208 MAKEDEPPROG='${MAKEDEPPROG}' \ 188 LIBDIR='$(LIBDIR)' \
209 SHARED_LDFLAGS='${SHARED_LDFLAGS}' \ 189 MAKEDEPEND='$$$${TOP}/util/domd $$$${TOP} -MD $(MAKEDEPPROG)' \
210 KRB5_INCLUDES='${KRB5_INCLUDES}' LIBKRB5='${LIBKRB5}' \ 190 DEPFLAG='-DOPENSSL_NO_DEPRECATED $(DEPFLAG)' \
211 EXE_EXT='${EXE_EXT}' SHARED_LIBS='${SHARED_LIBS}' \ 191 MAKEDEPPROG='$(MAKEDEPPROG)' \
212 SHLIB_EXT='${SHLIB_EXT}' SHLIB_TARGET='${SHLIB_TARGET}' \ 192 SHARED_LDFLAGS='$(SHARED_LDFLAGS)' \
213 PEX_LIBS='${PEX_LIBS}' EX_LIBS='${EX_LIBS}' \ 193 KRB5_INCLUDES='$(KRB5_INCLUDES)' LIBKRB5='$(LIBKRB5)' \
214 CPUID_OBJ='${CPUID_OBJ}' \ 194 ZLIB_INCLUDE='$(ZLIB_INCLUDE)' LIBZLIB='$(LIBZLIB)' \
215 BN_ASM='${BN_ASM}' DES_ENC='${DES_ENC}' \ 195 EXE_EXT='$(EXE_EXT)' SHARED_LIBS='$(SHARED_LIBS)' \
216 AES_ASM_OBJ='${AES_ASM_OBJ}' \ 196 SHLIB_EXT='$(SHLIB_EXT)' SHLIB_TARGET='$(SHLIB_TARGET)' \
217 BF_ENC='${BF_ENC}' CAST_ENC='${CAST_ENC}' \ 197 PEX_LIBS='$(PEX_LIBS)' EX_LIBS='$(EX_LIBS)' \
218 RC4_ENC='${RC4_ENC}' RC5_ENC='${RC5_ENC}' \ 198 CPUID_OBJ='$(CPUID_OBJ)' \
219 SHA1_ASM_OBJ='${SHA1_ASM_OBJ}' \ 199 BN_ASM='$(BN_ASM)' DES_ENC='$(DES_ENC)' \
220 MD5_ASM_OBJ='${MD5_ASM_OBJ}' \ 200 AES_ENC='$(AES_ENC)' CMLL_ENC='$(CMLL_ENC)' \
221 RMD160_ASM_OBJ='${RMD160_ASM_OBJ}' \ 201 BF_ENC='$(BF_ENC)' CAST_ENC='$(CAST_ENC)' \
222 FIPSLIBDIR='${FIPSLIBDIR}' \ 202 RC4_ENC='$(RC4_ENC)' RC5_ENC='$(RC5_ENC)' \
223 FIPSCANLIB="$${FIPSCANLIB:-$(FIPSCANLIB)}" \ 203 SHA1_ASM_OBJ='$(SHA1_ASM_OBJ)' \
224 FIPSCANISTERINTERNAL='${FIPSCANISTERINTERNAL}' \ 204 MD5_ASM_OBJ='$(MD5_ASM_OBJ)' \
225 FIPS_EX_OBJ='${FIPS_EX_OBJ}' \ 205 RMD160_ASM_OBJ='$(RMD160_ASM_OBJ)' \
206 WP_ASM_OBJ='$(WP_ASM_OBJ)' \
207 PERLASM_SCHEME='$(PERLASM_SCHEME)' \
226 THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES= 208 THIS=$${THIS:-$@} MAKEFILE=Makefile MAKEOVERRIDES=
227# MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors, 209# MAKEOVERRIDES= effectively "equalizes" GNU-ish and SysV-ish make flavors,
228# which in turn eliminates ambiguities in variable treatment with -e. 210# which in turn eliminates ambiguities in variable treatment with -e.
@@ -241,98 +223,26 @@ BUILDENV= PLATFORM='${PLATFORM}' PROCESSOR='${PROCESSOR}' \
241# subdirectories defined in $(DIRS). It requires that the target 223# subdirectories defined in $(DIRS). It requires that the target
242# is given through the shell variable `target'. 224# is given through the shell variable `target'.
243BUILD_CMD= if [ -d "$$dir" ]; then \ 225BUILD_CMD= if [ -d "$$dir" ]; then \
244 ( [ $$target != all -a -z "$(FIPSCANLIB)" ] && FIPSCANLIB=/dev/null; \ 226 ( cd $$dir && echo "making $$target in $$dir..." && \
245 cd $$dir && echo "making $$target in $$dir..." && \
246 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. DIR=$$dir $$target \ 227 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. DIR=$$dir $$target \
247 ) || exit 1; \ 228 ) || exit 1; \
248 fi 229 fi
249RECURSIVE_BUILD_CMD=for dir in $(DIRS); do $(BUILD_CMD); done 230RECURSIVE_BUILD_CMD=for dir in $(DIRS); do $(BUILD_CMD); done
250BUILD_ONE_CMD=\ 231BUILD_ONE_CMD=\
251 if echo " $(DIRS) " | grep " $$dir " >/dev/null 2>/dev/null; then \ 232 if expr " $(DIRS) " : ".* $$dir " >/dev/null 2>&1; then \
252 $(BUILD_CMD); \ 233 $(BUILD_CMD); \
253 fi 234 fi
254 235
255reflect: 236reflect:
256 @[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV) 237 @[ -n "$(THIS)" ] && $(CLEARENV) && $(MAKE) $(THIS) -e $(BUILDENV)
257 238
258FIPS_EX_OBJ= ../crypto/aes/aes_cfb.o \
259 ../crypto/aes/aes_ecb.o \
260 ../crypto/aes/aes_ofb.o \
261 ../crypto/bn/bn_add.o \
262 ../crypto/bn/bn_blind.o \
263 ../crypto/bn/bn_ctx.o \
264 ../crypto/bn/bn_div.o \
265 ../crypto/bn/bn_exp2.o \
266 ../crypto/bn/bn_exp.o \
267 ../crypto/bn/bn_gcd.o \
268 ../crypto/bn/bn_lib.o \
269 ../crypto/bn/bn_mod.o \
270 ../crypto/bn/bn_mont.o \
271 ../crypto/bn/bn_mul.o \
272 ../crypto/bn/bn_prime.o \
273 ../crypto/bn/bn_rand.o \
274 ../crypto/bn/bn_recp.o \
275 ../crypto/bn/bn_shift.o \
276 ../crypto/bn/bn_sqr.o \
277 ../crypto/bn/bn_word.o \
278 ../crypto/bn/bn_x931p.o \
279 ../crypto/buffer/buf_str.o \
280 ../crypto/cryptlib.o \
281 ../crypto/des/cfb64ede.o \
282 ../crypto/des/cfb64enc.o \
283 ../crypto/des/cfb_enc.o \
284 ../crypto/des/ecb3_enc.o \
285 ../crypto/des/ecb_enc.o \
286 ../crypto/des/ofb64ede.o \
287 ../crypto/des/ofb64enc.o \
288 ../crypto/des/fcrypt.o \
289 ../crypto/des/set_key.o \
290 ../crypto/dsa/dsa_utl.o \
291 ../crypto/dsa/dsa_sign.o \
292 ../crypto/dsa/dsa_vrf.o \
293 ../crypto/err/err.o \
294 ../crypto/evp/digest.o \
295 ../crypto/evp/enc_min.o \
296 ../crypto/evp/e_aes.o \
297 ../crypto/evp/e_des3.o \
298 ../crypto/evp/p_sign.o \
299 ../crypto/evp/p_verify.o \
300 ../crypto/mem_clr.o \
301 ../crypto/mem.o \
302 ../crypto/rand/md_rand.o \
303 ../crypto/rand/rand_egd.o \
304 ../crypto/rand/randfile.o \
305 ../crypto/rand/rand_lib.o \
306 ../crypto/rand/rand_os2.o \
307 ../crypto/rand/rand_unix.o \
308 ../crypto/rand/rand_win.o \
309 ../crypto/rsa/rsa_lib.o \
310 ../crypto/rsa/rsa_none.o \
311 ../crypto/rsa/rsa_oaep.o \
312 ../crypto/rsa/rsa_pk1.o \
313 ../crypto/rsa/rsa_pss.o \
314 ../crypto/rsa/rsa_ssl.o \
315 ../crypto/rsa/rsa_x931.o \
316 ../crypto/sha/sha1dgst.o \
317 ../crypto/sha/sha256.o \
318 ../crypto/sha/sha512.o \
319 ../crypto/uid.o
320
321sub_all: build_all 239sub_all: build_all
322build_all: build_libs build_apps build_tests build_tools 240build_all: build_libs build_apps build_tests build_tools
323 241
324build_libs: build_crypto build_fips build_ssl build_shared build_engines 242build_libs: build_crypto build_ssl build_engines
325 243
326build_crypto: 244build_crypto:
327 if [ -n "$(FIPSCANLIB)" ]; then \ 245 @dir=crypto; target=all; $(BUILD_ONE_CMD)
328 EXCL_OBJ='$(AES_ASM_OBJ) $(BN_ASM) $(DES_ENC) $(CPUID_OBJ) $(SHA1_ASM_OBJ) $(FIPS_EX_OBJ)' ; export EXCL_OBJ ; \
329 ARX='$(PERL) $${TOP}/util/arx.pl $(AR)' ; \
330 else \
331 ARX='${AR}' ; \
332 fi ; export ARX ; \
333 dir=crypto; target=all; $(BUILD_ONE_CMD)
334build_fips:
335 @dir=fips; target=all; [ -z "$(FIPSCANLIB)" ] || $(BUILD_ONE_CMD)
336build_ssl: 246build_ssl:
337 @dir=ssl; target=all; $(BUILD_ONE_CMD) 247 @dir=ssl; target=all; $(BUILD_ONE_CMD)
338build_engines: 248build_engines:
@@ -348,20 +258,9 @@ all_testapps: build_libs build_testapps
348build_testapps: 258build_testapps:
349 @dir=crypto; target=testapps; $(BUILD_ONE_CMD) 259 @dir=crypto; target=testapps; $(BUILD_ONE_CMD)
350 260
351build_shared: $(SHARED_LIBS) 261libcrypto$(SHLIB_EXT): libcrypto.a
352libcrypto$(SHLIB_EXT): libcrypto.a $(SHARED_FIPS)
353 @if [ "$(SHLIB_TARGET)" != "" ]; then \ 262 @if [ "$(SHLIB_TARGET)" != "" ]; then \
354 if [ "$(FIPSCANLIB)" = "libfips" ]; then \ 263 $(MAKE) SHLIBDIRS=crypto build-shared; \
355 $(ARD) libcrypto.a fipscanister.o ; \
356 $(MAKE) SHLIBDIRS='crypto' SHLIBDEPS='-lfips' build-shared; \
357 $(AR) libcrypto.a fips/fipscanister.o ; \
358 else \
359 if [ "$(FIPSCANLIB)" = "libcrypto" ]; then \
360 FIPSLD_CC=$(CC); CC=fips/fipsld; \
361 export CC FIPSLD_CC; \
362 fi; \
363 $(MAKE) -e SHLIBDIRS='crypto' build-shared; \
364 fi \
365 else \ 264 else \
366 echo "There's no support for shared libraries on this platform" >&2; \ 265 echo "There's no support for shared libraries on this platform" >&2; \
367 exit 1; \ 266 exit 1; \
@@ -369,32 +268,12 @@ libcrypto$(SHLIB_EXT): libcrypto.a $(SHARED_FIPS)
369 268
370libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a 269libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
371 @if [ "$(SHLIB_TARGET)" != "" ]; then \ 270 @if [ "$(SHLIB_TARGET)" != "" ]; then \
372 shlibdeps=-lcrypto; \ 271 $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
373 [ "$(FIPSCANLIB)" = "libfips" ] && shlibdeps="$$shlibdeps -lfips"; \
374 $(MAKE) SHLIBDIRS=ssl SHLIBDEPS="$$shlibdeps" build-shared; \
375 else \
376 echo "There's no support for shared libraries on this platform" >&2 ; \
377 exit 1; \
378 fi
379
380fips/fipscanister.o: build_fips
381libfips$(SHLIB_EXT): fips/fipscanister.o
382 @if [ "$(SHLIB_TARGET)" != "" ]; then \
383 FIPSLD_CC=$(CC); CC=fips/fipsld; export CC FIPSLD_CC; \
384 $(MAKE) -f Makefile.shared -e $(BUILDENV) \
385 CC=$${CC} LIBNAME=fips THIS=$@ \
386 LIBEXTRAS=fips/fipscanister.o \
387 LIBDEPS="$(EX_LIBS)" \
388 LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \
389 link_o.$(SHLIB_TARGET) || { rm -f $@; exit 1; } \
390 else \ 272 else \
391 echo "There's no support for shared libraries on this platform" >&2; \ 273 echo "There's no support for shared libraries on this platform" >&2; \
392 exit 1; \ 274 exit 1; \
393 fi 275 fi
394 276
395libfips.a:
396 dir=fips; target=all; $(BUILD_ONE_CMD)
397
398clean-shared: 277clean-shared:
399 @set -e; for i in $(SHLIBDIRS); do \ 278 @set -e; for i in $(SHLIBDIRS); do \
400 if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \ 279 if [ -n "$(SHARED_LIBS_LINK_EXTS)" ]; then \
@@ -410,10 +289,10 @@ clean-shared:
410 done 289 done
411 290
412link-shared: 291link-shared:
413 @ set -e; for i in ${SHLIBDIRS}; do \ 292 @ set -e; for i in $(SHLIBDIRS); do \
414 $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \ 293 $(MAKE) -f $(HERE)/Makefile.shared -e $(BUILDENV) \
415 LIBNAME=$$i LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \ 294 LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
416 LIBCOMPATVERSIONS=";${SHLIB_VERSION_HISTORY}" \ 295 LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
417 symlink.$(SHLIB_TARGET); \ 296 symlink.$(SHLIB_TARGET); \
418 libs="$$libs -l$$i"; \ 297 libs="$$libs -l$$i"; \
419 done 298 done
@@ -421,13 +300,13 @@ link-shared:
421build-shared: do_$(SHLIB_TARGET) link-shared 300build-shared: do_$(SHLIB_TARGET) link-shared
422 301
423do_$(SHLIB_TARGET): 302do_$(SHLIB_TARGET):
424 @ set -e; libs='-L. ${SHLIBDEPS}'; for i in ${SHLIBDIRS}; do \ 303 @ set -e; libs='-L. $(SHLIBDEPS)'; for i in $(SHLIBDIRS); do \
425 if [ "${SHLIBDIRS}" = "ssl" -a -n "$(LIBKRB5)" ]; then \ 304 if [ "$$i" = "ssl" -a -n "$(LIBKRB5)" ]; then \
426 libs="$(LIBKRB5) $$libs"; \ 305 libs="$(LIBKRB5) $$libs"; \
427 fi; \ 306 fi; \
428 $(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \ 307 $(CLEARENV) && $(MAKE) -f Makefile.shared -e $(BUILDENV) \
429 LIBNAME=$$i LIBVERSION=${SHLIB_MAJOR}.${SHLIB_MINOR} \ 308 LIBNAME=$$i LIBVERSION=$(SHLIB_MAJOR).$(SHLIB_MINOR) \
430 LIBCOMPATVERSIONS=";${SHLIB_VERSION_HISTORY}" \ 309 LIBCOMPATVERSIONS=";$(SHLIB_VERSION_HISTORY)" \
431 LIBDEPS="$$libs $(EX_LIBS)" \ 310 LIBDEPS="$$libs $(EX_LIBS)" \
432 link_a.$(SHLIB_TARGET); \ 311 link_a.$(SHLIB_TARGET); \
433 libs="-l$$i $$libs"; \ 312 libs="-l$$i $$libs"; \
@@ -436,7 +315,7 @@ do_$(SHLIB_TARGET):
436libcrypto.pc: Makefile 315libcrypto.pc: Makefile
437 @ ( echo 'prefix=$(INSTALLTOP)'; \ 316 @ ( echo 'prefix=$(INSTALLTOP)'; \
438 echo 'exec_prefix=$${prefix}'; \ 317 echo 'exec_prefix=$${prefix}'; \
439 echo 'libdir=$${exec_prefix}/lib'; \ 318 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
440 echo 'includedir=$${prefix}/include'; \ 319 echo 'includedir=$${prefix}/include'; \
441 echo ''; \ 320 echo ''; \
442 echo 'Name: OpenSSL-libcrypto'; \ 321 echo 'Name: OpenSSL-libcrypto'; \
@@ -449,7 +328,7 @@ libcrypto.pc: Makefile
449libssl.pc: Makefile 328libssl.pc: Makefile
450 @ ( echo 'prefix=$(INSTALLTOP)'; \ 329 @ ( echo 'prefix=$(INSTALLTOP)'; \
451 echo 'exec_prefix=$${prefix}'; \ 330 echo 'exec_prefix=$${prefix}'; \
452 echo 'libdir=$${exec_prefix}/lib'; \ 331 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
453 echo 'includedir=$${prefix}/include'; \ 332 echo 'includedir=$${prefix}/include'; \
454 echo ''; \ 333 echo ''; \
455 echo 'Name: OpenSSL'; \ 334 echo 'Name: OpenSSL'; \
@@ -462,7 +341,7 @@ libssl.pc: Makefile
462openssl.pc: Makefile 341openssl.pc: Makefile
463 @ ( echo 'prefix=$(INSTALLTOP)'; \ 342 @ ( echo 'prefix=$(INSTALLTOP)'; \
464 echo 'exec_prefix=$${prefix}'; \ 343 echo 'exec_prefix=$${prefix}'; \
465 echo 'libdir=$${exec_prefix}/lib'; \ 344 echo 'libdir=$${exec_prefix}/$(LIBDIR)'; \
466 echo 'includedir=$${prefix}/include'; \ 345 echo 'includedir=$${prefix}/include'; \
467 echo ''; \ 346 echo ''; \
468 echo 'Name: OpenSSL'; \ 347 echo 'Name: OpenSSL'; \
@@ -504,32 +383,32 @@ links:
504 @$(PERL) $(TOP)/util/mkdir-p.pl include/openssl 383 @$(PERL) $(TOP)/util/mkdir-p.pl include/openssl
505 @$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER) 384 @$(PERL) $(TOP)/util/mklink.pl include/openssl $(EXHEADER)
506 @set -e; target=links; $(RECURSIVE_BUILD_CMD) 385 @set -e; target=links; $(RECURSIVE_BUILD_CMD)
507 @if [ -z "$(FIPSCANLIB)" ]; then \
508 set -e; target=links; dir=fips ; $(BUILD_CMD) ; \
509 fi
510 386
511gentests: 387gentests:
512 @(cd test && echo "generating dummy tests (if needed)..." && \ 388 @(cd test && echo "generating dummy tests (if needed)..." && \
513 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on generate ); 389 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on generate );
514 390
515dclean: 391dclean:
516 rm -f *.bak 392 rm -rf *.bak include/openssl certs/.0
517 @set -e; target=dclean; $(RECURSIVE_BUILD_CMD) 393 @set -e; target=dclean; $(RECURSIVE_BUILD_CMD)
518 394
519rehash: rehash.time 395rehash: rehash.time
520rehash.time: certs 396rehash.time: certs apps
521 @(OPENSSL="`pwd`/util/opensslwrap.sh"; \ 397 @if [ -z "$(CROSS_COMPILE)" ]; then \
522 OPENSSL_DEBUG_MEMORY=on; \ 398 (OPENSSL="`pwd`/util/opensslwrap.sh"; \
523 export OPENSSL OPENSSL_DEBUG_MEMORY; \ 399 [ -x "apps/openssl.exe" ] && OPENSSL="apps/openssl.exe" || :; \
524 $(PERL) tools/c_rehash certs) 400 OPENSSL_DEBUG_MEMORY=on; \
525 touch rehash.time 401 export OPENSSL OPENSSL_DEBUG_MEMORY; \
402 $(PERL) tools/c_rehash certs) && \
403 touch rehash.time; \
404 else :; fi
526 405
527test: tests 406test: tests
528 407
529tests: rehash 408tests: rehash
530 @(cd test && echo "testing..." && \ 409 @(cd test && echo "testing..." && \
531 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. TESTS='${TESTS}' OPENSSL_DEBUG_MEMORY=on tests ); 410 $(CLEARENV) && $(MAKE) -e $(BUILDENV) TOP=.. TESTS='$(TESTS)' OPENSSL_DEBUG_MEMORY=on OPENSSL_CONF=../apps/openssl.cnf tests );
532 util/opensslwrap.sh version -a 411 OPENSSL_CONF=apps/openssl.cnf util/opensslwrap.sh version -a
533 412
534report: 413report:
535 @$(PERL) util/selftest.pl 414 @$(PERL) util/selftest.pl
@@ -562,6 +441,8 @@ crypto/objects/obj_dat.h: crypto/objects/obj_dat.pl crypto/objects/obj_mac.h
562 $(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h 441 $(PERL) crypto/objects/obj_dat.pl crypto/objects/obj_mac.h crypto/objects/obj_dat.h
563crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num 442crypto/objects/obj_mac.h: crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num
564 $(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h 443 $(PERL) crypto/objects/objects.pl crypto/objects/objects.txt crypto/objects/obj_mac.num crypto/objects/obj_mac.h
444crypto/objects/obj_xref.h: crypto/objects/objxref.pl crypto/objects/obj_xref.txt crypto/objects/obj_mac.num
445 $(PERL) crypto/objects/objxref.pl crypto/objects/obj_mac.num crypto/objects/obj_xref.txt >crypto/objects/obj_xref.h
565 446
566apps/openssl-vms.cnf: apps/openssl.cnf 447apps/openssl-vms.cnf: apps/openssl.cnf
567 $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf 448 $(PERL) VMS/VMSify-conf.pl < apps/openssl.cnf > apps/openssl-vms.cnf
@@ -574,7 +455,7 @@ TABLE: Configure
574 (echo 'Output of `Configure TABLE'"':"; \ 455 (echo 'Output of `Configure TABLE'"':"; \
575 $(PERL) Configure TABLE) > TABLE 456 $(PERL) Configure TABLE) > TABLE
576 457
577update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend 458update: errors stacks util/libeay.num util/ssleay.num crypto/objects/obj_dat.h crypto/objects/obj_xref.h apps/openssl-vms.cnf crypto/bn/bn_prime.h TABLE depend
578 459
579# Build distribution tar-file. As the list of files returned by "find" is 460# Build distribution tar-file. As the list of files returned by "find" is
580# pretty long, on several platforms a "too many arguments" error or similar 461# pretty long, on several platforms a "too many arguments" error or similar
@@ -605,8 +486,8 @@ tar-snap:
605dist: 486dist:
606 $(PERL) Configure dist 487 $(PERL) Configure dist
607 @$(MAKE) dist_pem_h 488 @$(MAKE) dist_pem_h
608 @$(MAKE) SDIRS='${SDIRS}' clean 489 @$(MAKE) SDIRS='$(SDIRS)' clean
609 @$(MAKE) TAR='${TAR}' TARFLAGS='${TARFLAGS}' tar 490 @$(MAKE) TAR='$(TAR)' TARFLAGS='$(TARFLAGS)' tar
610 491
611dist_pem_h: 492dist_pem_h:
612 (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean) 493 (cd crypto/pem; $(MAKE) -e $(BUILDENV) pem.h; $(MAKE) clean)
@@ -615,9 +496,9 @@ install: all install_docs install_sw
615 496
616install_sw: 497install_sw:
617 @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \ 498 @$(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/bin \
618 $(INSTALL_PREFIX)$(INSTALLTOP)/lib \ 499 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR) \
619 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/engines \ 500 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines \
620 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig \ 501 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig \
621 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \ 502 $(INSTALL_PREFIX)$(INSTALLTOP)/include/openssl \
622 $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \ 503 $(INSTALL_PREFIX)$(OPENSSLDIR)/misc \
623 $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \ 504 $(INSTALL_PREFIX)$(OPENSSLDIR)/certs \
@@ -632,10 +513,10 @@ install_sw:
632 do \ 513 do \
633 if [ -f "$$i" ]; then \ 514 if [ -f "$$i" ]; then \
634 ( echo installing $$i; \ 515 ( echo installing $$i; \
635 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 516 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
636 $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 517 $(RANLIB) $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
637 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 518 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
638 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i ); \ 519 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i ); \
639 fi; \ 520 fi; \
640 done; 521 done;
641 @set -e; if [ -n "$(SHARED_LIBS)" ]; then \ 522 @set -e; if [ -n "$(SHARED_LIBS)" ]; then \
@@ -645,22 +526,32 @@ install_sw:
645 if [ -f "$$i" -o -f "$$i.a" ]; then \ 526 if [ -f "$$i" -o -f "$$i.a" ]; then \
646 ( echo installing $$i; \ 527 ( echo installing $$i; \
647 if [ "$(PLATFORM)" != "Cygwin" ]; then \ 528 if [ "$(PLATFORM)" != "Cygwin" ]; then \
648 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 529 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
649 chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 530 chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
650 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \ 531 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
651 else \ 532 else \
652 c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \ 533 c=`echo $$i | sed 's/^lib\(.*\)\.dll\.a/cyg\1-$(SHLIB_VERSION_NUMBER).dll/'`; \
653 cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \ 534 cp $$c $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
654 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \ 535 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new; \
655 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \ 536 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$c; \
656 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 537 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
657 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new; \ 538 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new; \
658 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/lib/$$i; \ 539 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/$$i; \
659 fi ); \ 540 fi ); \
541 if expr $(PLATFORM) : 'mingw' > /dev/null; then \
542 ( case $$i in \
543 *crypto*) i=libeay32.dll;; \
544 *ssl*) i=ssleay32.dll;; \
545 esac; \
546 echo installing $$i; \
547 cp $$i $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
548 chmod 755 $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new; \
549 mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i.new $(INSTALL_PREFIX)$(INSTALLTOP)/bin/$$i ); \
550 fi; \
660 fi; \ 551 fi; \
661 done; \ 552 done; \
662 ( here="`pwd`"; \ 553 ( here="`pwd`"; \
663 cd $(INSTALL_PREFIX)$(INSTALLTOP)/lib; \ 554 cd $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR); \
664 $(MAKE) -f $$here/Makefile HERE="$$here" link-shared ); \ 555 $(MAKE) -f $$here/Makefile HERE="$$here" link-shared ); \
665 if [ "$(INSTALLTOP)" != "/usr" ]; then \ 556 if [ "$(INSTALLTOP)" != "/usr" ]; then \
666 echo 'OpenSSL shared libraries have been installed in:'; \ 557 echo 'OpenSSL shared libraries have been installed in:'; \
@@ -669,12 +560,33 @@ install_sw:
669 sed -e '1,/^$$/d' doc/openssl-shared.txt; \ 560 sed -e '1,/^$$/d' doc/openssl-shared.txt; \
670 fi; \ 561 fi; \
671 fi 562 fi
672 cp libcrypto.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig 563 cp libcrypto.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
673 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/libcrypto.pc 564 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libcrypto.pc
674 cp libssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig 565 cp libssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
675 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/libssl.pc 566 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/libssl.pc
676 cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig 567 cp openssl.pc $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig
677 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/lib/pkgconfig/openssl.pc 568 chmod 644 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/pkgconfig/openssl.pc
569
570install_html_docs:
571 here="`pwd`"; \
572 for subdir in apps crypto ssl; do \
573 mkdir -p $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
574 for i in doc/$$subdir/*.pod; do \
575 fn=`basename $$i .pod`; \
576 echo "installing html/$$fn.$(HTMLSUFFIX)"; \
577 cat $$i \
578 | sed -r 's/L<([^)]*)(\([0-9]\))?\|([^)]*)(\([0-9]\))?>/L<\1|\3>/g' \
579 | pod2html --podroot=doc --htmlroot=.. --podpath=apps:crypto:ssl \
580 | sed -r 's/<!DOCTYPE.*//g' \
581 > $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir/$$fn.$(HTMLSUFFIX); \
582 $(PERL) util/extract-names.pl < $$i | \
583 grep -v $$filecase "^$$fn\$$" | \
584 (cd $(INSTALL_PREFIX)$(HTMLDIR)/$$subdir; \
585 while read n; do \
586 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$(HTMLSUFFIX) "$$n".$(HTMLSUFFIX); \
587 done); \
588 done; \
589 done
678 590
679install_docs: 591install_docs:
680 @$(PERL) $(TOP)/util/mkdir-p.pl \ 592 @$(PERL) $(TOP)/util/mkdir-p.pl \
@@ -682,7 +594,7 @@ install_docs:
682 $(INSTALL_PREFIX)$(MANDIR)/man3 \ 594 $(INSTALL_PREFIX)$(MANDIR)/man3 \
683 $(INSTALL_PREFIX)$(MANDIR)/man5 \ 595 $(INSTALL_PREFIX)$(MANDIR)/man5 \
684 $(INSTALL_PREFIX)$(MANDIR)/man7 596 $(INSTALL_PREFIX)$(MANDIR)/man7
685 @pod2man="`cd util; ./pod2mantest $(PERL)`"; \ 597 @pod2man="`cd ./util; ./pod2mantest $(PERL)`"; \
686 here="`pwd`"; \ 598 here="`pwd`"; \
687 filecase=; \ 599 filecase=; \
688 if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \ 600 if [ "$(PLATFORM)" = "DJGPP" -o "$(PLATFORM)" = "Cygwin" -o "$(PLATFORM)" = "mingw" ]; then \
@@ -702,7 +614,7 @@ install_docs:
702 (grep -v "[ ]"; true) | \ 614 (grep -v "[ ]"; true) | \
703 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \ 615 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
704 while read n; do \ 616 while read n; do \
705 $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \ 617 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
706 done); \ 618 done); \
707 done; \ 619 done; \
708 set -e; for i in doc/crypto/*.pod doc/ssl/*.pod; do \ 620 set -e; for i in doc/crypto/*.pod doc/ssl/*.pod; do \
@@ -719,7 +631,7 @@ install_docs:
719 (grep -v "[ ]"; true) | \ 631 (grep -v "[ ]"; true) | \
720 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \ 632 (cd $(INSTALL_PREFIX)$(MANDIR)/man$$sec/; \
721 while read n; do \ 633 while read n; do \
722 $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \ 634 PLATFORM=$(PLATFORM) $$here/util/point.sh $$fn.$${sec}$(MANSUFFIX) "$$n".$${sec}$(MANSUFFIX); \
723 done); \ 635 done); \
724 done 636 done
725 637
diff --git a/src/lib/libssl/src/NEWS b/src/lib/libssl/src/NEWS
index 37156fc593..3a787ea06c 100644
--- a/src/lib/libssl/src/NEWS
+++ b/src/lib/libssl/src/NEWS
@@ -5,6 +5,63 @@
5 This file gives a brief overview of the major changes between each OpenSSL 5 This file gives a brief overview of the major changes between each OpenSSL
6 release. For more details please read the CHANGES file. 6 release. For more details please read the CHANGES file.
7 7
8 Major changes between OpenSSL 1.0.0 and OpenSSL 1.0.0a:
9
10 o Fix for security issue CVE-2010-1633.
11 o GOST MAC and CFB fixes.
12
13 Major changes between OpenSSL 0.9.8n and OpenSSL 1.0:
14
15 o RFC3280 path validation: sufficient to process PKITS tests.
16 o Integrated support for PVK files and keyblobs.
17 o Change default private key format to PKCS#8.
18 o CMS support: able to process all examples in RFC4134
19 o Streaming ASN1 encode support for PKCS#7 and CMS.
20 o Multiple signer and signer add support for PKCS#7 and CMS.
21 o ASN1 printing support.
22 o Whirlpool hash algorithm added.
23 o RFC3161 time stamp support.
24 o New generalised public key API supporting ENGINE based algorithms.
25 o New generalised public key API utilities.
26 o New ENGINE supporting GOST algorithms.
27 o SSL/TLS GOST ciphersuite support.
28 o PKCS#7 and CMS GOST support.
29 o RFC4279 PSK ciphersuite support.
30 o Supported points format extension for ECC ciphersuites.
31 o ecdsa-with-SHA224/256/384/512 signature types.
32 o dsa-with-SHA224 and dsa-with-SHA256 signature types.
33 o Opaque PRF Input TLS extension support.
34 o Updated time routines to avoid OS limitations.
35
36 Major changes between OpenSSL 0.9.8n and OpenSSL 0.9.8o:
37
38 o Fix for security issue CVE-2010-0742.
39 o Various DTLS fixes.
40 o Recognise SHA2 certificates if only SSL algorithms added.
41 o Fix for no-rc4 compilation.
42 o Chil ENGINE unload workaround.
43
44 Major changes between OpenSSL 0.9.8m and OpenSSL 0.9.8n:
45
46 o CFB cipher definition fixes.
47 o Fix security issues CVE-2010-0740 and CVE-2010-0433.
48
49 Major changes between OpenSSL 0.9.8l and OpenSSL 0.9.8m:
50
51 o Cipher definition fixes.
52 o Workaround for slow RAND_poll() on some WIN32 versions.
53 o Remove MD2 from algorithm tables.
54 o SPKAC handling fixes.
55 o Support for RFC5746 TLS renegotiation extension.
56 o Compression memory leak fixed.
57 o Compression session resumption fixed.
58 o Ticket and SNI coexistence fixes.
59 o Many fixes to DTLS handling.
60
61 Major changes between OpenSSL 0.9.8k and OpenSSL 0.9.8l:
62
63 o Temporary work around for CVE-2009-3555: disable renegotiation.
64
8 Major changes between OpenSSL 0.9.8j and OpenSSL 0.9.8k: 65 Major changes between OpenSSL 0.9.8j and OpenSSL 0.9.8k:
9 66
10 o Fix various build issues. 67 o Fix various build issues.
@@ -143,6 +200,11 @@
143 o Added initial support for Win64. 200 o Added initial support for Win64.
144 o Added alternate pkg-config files. 201 o Added alternate pkg-config files.
145 202
203 Major changes between OpenSSL 0.9.7l and OpenSSL 0.9.7m:
204
205 o FIPS 1.1.1 module linking.
206 o Various ciphersuite selection fixes.
207
146 Major changes between OpenSSL 0.9.7k and OpenSSL 0.9.7l: 208 Major changes between OpenSSL 0.9.7k and OpenSSL 0.9.7l:
147 209
148 o Introduce limits to prevent malicious key DoS (CVE-2006-2940) 210 o Introduce limits to prevent malicious key DoS (CVE-2006-2940)
diff --git a/src/lib/libssl/src/Netware/build.bat b/src/lib/libssl/src/Netware/build.bat
index 823134bda1..3125c2a487 100644
--- a/src/lib/libssl/src/Netware/build.bat
+++ b/src/lib/libssl/src/Netware/build.bat
@@ -159,6 +159,8 @@ cd ..\..\..
159echo SHA1 159echo SHA1
160cd crypto\sha\asm 160cd crypto\sha\asm
161perl sha1-586.pl %ASM_MODE% > s1-nw.asm 161perl sha1-586.pl %ASM_MODE% > s1-nw.asm
162perl sha256-586.pl %ASM_MODE% > sha256-nw.asm
163perl sha512-586.pl %ASM_MODE% > sha512-nw.asm
162cd ..\..\.. 164cd ..\..\..
163 165
164echo RIPEMD160 166echo RIPEMD160
@@ -171,6 +173,11 @@ cd crypto\rc5\asm
171perl rc5-586.pl %ASM_MODE% > r5-nw.asm 173perl rc5-586.pl %ASM_MODE% > r5-nw.asm
172cd ..\..\.. 174cd ..\..\..
173 175
176echo WHIRLPOOL
177cd crypto\whrlpool\asm
178perl wp-mmx.pl %ASM_MODE% > wp-nw.asm
179cd ..\..\..
180
174echo CPUID 181echo CPUID
175cd crypto 182cd crypto
176perl x86cpuid.pl %ASM_MODE% > x86cpuid-nw.asm 183perl x86cpuid.pl %ASM_MODE% > x86cpuid-nw.asm
diff --git a/src/lib/libssl/src/README b/src/lib/libssl/src/README
index 99a6a7b4bf..c1d0a5fd52 100644
--- a/src/lib/libssl/src/README
+++ b/src/lib/libssl/src/README
@@ -1,7 +1,7 @@
1 1
2 OpenSSL 0.9.8k 2 OpenSSL 1.0.0a 1 Jun 2010
3 3
4 Copyright (c) 1998-2008 The OpenSSL Project 4 Copyright (c) 1998-2010 The OpenSSL Project
5 Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson 5 Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
6 All rights reserved. 6 All rights reserved.
7 7
@@ -112,8 +112,6 @@
112 should be contacted if that algorithm is to be used; their web page is 112 should be contacted if that algorithm is to be used; their web page is
113 http://www.ascom.ch/. 113 http://www.ascom.ch/.
114 114
115 The MDC2 algorithm is patented by IBM.
116
117 NTT and Mitsubishi have patents and pending patents on the Camellia 115 NTT and Mitsubishi have patents and pending patents on the Camellia
118 algorithm, but allow use at no charge without requiring an explicit 116 algorithm, but allow use at no charge without requiring an explicit
119 licensing agreement: http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html 117 licensing agreement: http://info.isl.ntt.co.jp/crypt/eng/info/chiteki.html
@@ -139,6 +137,9 @@
139 SUPPORT 137 SUPPORT
140 ------- 138 -------
141 139
140 See the OpenSSL website www.openssl.org for details of how to obtain
141 commercial technical support.
142
142 If you have any problems with OpenSSL then please take the following steps 143 If you have any problems with OpenSSL then please take the following steps
143 first: 144 first:
144 145
@@ -165,6 +166,10 @@
165 166
166 openssl-bugs@openssl.org 167 openssl-bugs@openssl.org
167 168
169 Note that the request tracker should NOT be used for general assistance
170 or support queries. Just because something doesn't work the way you expect
171 does not mean it is necessarily a bug in OpenSSL.
172
168 Note that mail to openssl-bugs@openssl.org is recorded in the publicly 173 Note that mail to openssl-bugs@openssl.org is recorded in the publicly
169 readable request tracker database and is forwarded to a public 174 readable request tracker database and is forwarded to a public
170 mailing list. Confidential mail may be sent to openssl-security@openssl.org 175 mailing list. Confidential mail may be sent to openssl-security@openssl.org
@@ -175,10 +180,22 @@
175 180
176 Development is coordinated on the openssl-dev mailing list (see 181 Development is coordinated on the openssl-dev mailing list (see
177 http://www.openssl.org for information on subscribing). If you 182 http://www.openssl.org for information on subscribing). If you
178 would like to submit a patch, send it to openssl-dev@openssl.org with 183 would like to submit a patch, send it to openssl-bugs@openssl.org with
179 the string "[PATCH]" in the subject. Please be sure to include a 184 the string "[PATCH]" in the subject. Please be sure to include a
180 textual explanation of what your patch does. 185 textual explanation of what your patch does.
181 186
187 If you are unsure as to whether a feature will be useful for the general
188 OpenSSL community please discuss it on the openssl-dev mailing list first.
189 Someone may be already working on the same thing or there may be a good
190 reason as to why that feature isn't implemented.
191
192 Patches should be as up to date as possible, preferably relative to the
193 current CVS or the last snapshot. They should follow the coding style of
194 OpenSSL and compile without warnings. Some of the core team developer targets
195 can be used for testing purposes, (debug-steve64, debug-geoff etc). OpenSSL
196 compiles on many varied platforms: try to ensure you only use portable
197 features.
198
182 Note: For legal reasons, contributions from the US can be accepted only 199 Note: For legal reasons, contributions from the US can be accepted only
183 if a TSU notification and a copy of the patch are sent to crypt@bis.doc.gov 200 if a TSU notification and a copy of the patch are sent to crypt@bis.doc.gov
184 (formerly BXA) with a copy to the ENC Encryption Request Coordinator; 201 (formerly BXA) with a copy to the ENC Encryption Request Coordinator;
diff --git a/src/lib/libssl/src/VMS/install.com b/src/lib/libssl/src/VMS/install.com
index f62635f24d..9c9c0e1e27 100644
--- a/src/lib/libssl/src/VMS/install.com
+++ b/src/lib/libssl/src/VMS/install.com
@@ -12,6 +12,14 @@ $ WRITE SYS$OUTPUT "Should be the directory where you want things installed.
12$ EXIT 12$ EXIT
13$ ENDIF 13$ ENDIF
14$ 14$
15$ IF (F$GETSYI("CPU").LT.128)
16$ THEN
17$ ARCH := VAX
18$ ELSE
19$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
20$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
21$ ENDIF
22$
15$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0" 23$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
16$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY") 24$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
17$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") - 25$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
@@ -19,13 +27,7 @@ $ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
19$ ROOT = ROOT_DEV + "[" + ROOT_DIR 27$ ROOT = ROOT_DEV + "[" + ROOT_DIR
20$ 28$
21$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC 29$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
22$ DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB]
23$ DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB]
24$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE] 30$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE]
25$ DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE]
26$ DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE]
27$ DEFINE/NOLOG WRK_SSLCERTS WRK_SSLROOT:[CERTS]
28$ DEFINE/NOLOG WRK_SSLPRIVATE WRK_SSLROOT:[PRIVATE]
29$ 31$
30$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN - 32$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
31 CREATE/DIR/LOG WRK_SSLROOT:[000000] 33 CREATE/DIR/LOG WRK_SSLROOT:[000000]
@@ -39,7 +41,7 @@ $ IF F$SEARCH("WRK_SSLINCLUDE:vms_idhacks.h") .NES. "" THEN -
39$ 41$
40$ OPEN/WRITE SF WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM 42$ OPEN/WRITE SF WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM
41$ WRITE SYS$OUTPUT "%OPEN-I-CREATED, ",F$SEARCH("WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM")," created." 43$ WRITE SYS$OUTPUT "%OPEN-I-CREATED, ",F$SEARCH("WRK_SSLROOT:[VMS]OPENSSL_STARTUP.COM")," created."
42$ WRITE SF "$! Startup file for Openssl 0.9.2-RL 15-Mar-1999" 44$ WRITE SF "$! Startup file for Openssl"
43$ WRITE SF "$!" 45$ WRITE SF "$!"
44$ WRITE SF "$! Do not edit this file, as it will be regenerated during next installation." 46$ WRITE SF "$! Do not edit this file, as it will be regenerated during next installation."
45$ WRITE SF "$! Instead, add or change SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM" 47$ WRITE SF "$! Instead, add or change SSLROOT:[VMS]OPENSSL_SYSTARTUP.COM"
@@ -47,8 +49,13 @@ $ WRITE SF "$!"
47$ WRITE SF "$! P1 a qualifier to DEFINE. For example ""/SYSTEM"" to get the logical names" 49$ WRITE SF "$! P1 a qualifier to DEFINE. For example ""/SYSTEM"" to get the logical names"
48$ WRITE SF "$! defined in the system logical name table." 50$ WRITE SF "$! defined in the system logical name table."
49$ WRITE SF "$!" 51$ WRITE SF "$!"
50$ WRITE SF "$ ARCH = ""VAX""" 52$ WRITE SF "$ IF (F$GETSYI(""CPU"").LT.128)"
51$ WRITE SF "$ IF F$GETSYI(""CPU"") .GE. 128 THEN ARCH = ""ALPHA""" 53$ WRITE SF "$ THEN"
54$ WRITE SF "$ ARCH := VAX"
55$ WRITE SF "$ ELSE"
56$ WRITE SF "$ ARCH = F$EDIT( F$GETSYI( ""ARCH_NAME""), ""UPCASE"")"
57$ WRITE SF "$ IF (ARCH .EQS. """") THEN ARCH = ""UNK"""
58$ WRITE SF "$ ENDIF"
52$ WRITE SF "$ DEFINE/NOLOG'P1 SSLROOT ",ROOT,".] /TRANS=CONC" 59$ WRITE SF "$ DEFINE/NOLOG'P1 SSLROOT ",ROOT,".] /TRANS=CONC"
53$ WRITE SF "$ DEFINE/NOLOG'P1 SSLLIB SSLROOT:['ARCH'_LIB]" 60$ WRITE SF "$ DEFINE/NOLOG'P1 SSLLIB SSLROOT:['ARCH'_LIB]"
54$ WRITE SF "$ DEFINE/NOLOG'P1 SSLINCLUDE SSLROOT:[INCLUDE]" 61$ WRITE SF "$ DEFINE/NOLOG'P1 SSLINCLUDE SSLROOT:[INCLUDE]"
diff --git a/src/lib/libssl/src/VMS/mkshared.com b/src/lib/libssl/src/VMS/mkshared.com
index 1356fb9dd7..c8acd2adeb 100644
--- a/src/lib/libssl/src/VMS/mkshared.com
+++ b/src/lib/libssl/src/VMS/mkshared.com
@@ -3,10 +3,10 @@ $!
3$! No command line parameters. This should be run at the start of the source 3$! No command line parameters. This should be run at the start of the source
4$! tree (the same directory where one finds INSTALL.VMS). 4$! tree (the same directory where one finds INSTALL.VMS).
5$! 5$!
6$! Input: [.UTIL]LIBEAY.NUM,[.AXP.EXE.CRYPTO]LIBCRYPTO.OLB 6$! Input: [.UTIL]LIBEAY.NUM,[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB
7$! [.UTIL]SSLEAY.NUM,[.AXP.EXE.SSL]LIBSSL.OLB 7$! [.UTIL]SSLEAY.NUM,[.xxx.EXE.SSL]LIBSSL.OLB
8$! Output: [.AXP.EXE.CRYPTO]LIBCRYPTO.OPT,.MAP,.EXE 8$! Output: [.xxx.EXE.CRYPTO]LIBCRYPTO.OPT,.MAP,.EXE
9$! [.AXP.EXE.SSL]LIBSSL.OPT,.MAP,.EXE 9$! [.xxx.EXE.SSL]LIBSSL.OPT,.MAP,.EXE
10$! 10$!
11$! So far, tests have only been made on VMS for Alpha. VAX will come in time. 11$! So far, tests have only been made on VMS for Alpha. VAX will come in time.
12$! =========================================================================== 12$! ===========================================================================
@@ -19,31 +19,41 @@ $ write sys$error "ERROR: Couldn't find any library version info..."
19$ exit 19$ exit
20$ endif 20$ endif
21$ 21$
22$ if f$getsyi("CPU") .ge. 128 22$ if (f$getsyi("cpu").lt.128)
23$ then 23$ then
24$ arch := VAX
25$ else
26$ arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
27$ if (arch .eqs. "") then arch = "UNK"
28$ endif
29$
30$ if arch .nes. "VAX"
31$ then
32$ arch_vax = 0
24$ libid = "Crypto" 33$ libid = "Crypto"
25$ libnum = "[.UTIL]LIBEAY.NUM" 34$ libnum = "[.UTIL]LIBEAY.NUM"
26$ libdir = "[.AXP.EXE.CRYPTO]" 35$ libdir = "[.''ARCH'.EXE.CRYPTO]"
27$ libolb = "''libdir'LIBCRYPTO.OLB" 36$ libolb = "''libdir'LIBCRYPTO.OLB"
28$ libopt = "''libdir'LIBCRYPTO.OPT" 37$ libopt = "''libdir'LIBCRYPTO.OPT"
29$ libmap = "''libdir'LIBCRYPTO.MAP" 38$ libmap = "''libdir'LIBCRYPTO.MAP"
30$ libgoal= "''libdir'LIBCRYPTO.EXE" 39$ libgoal= "''libdir'LIBCRYPTO.EXE"
31$ libref = "" 40$ libref = ""
32$ gosub create_axp_shr 41$ gosub create_nonvax_shr
33$ libid = "SSL" 42$ libid = "SSL"
34$ libnum = "[.UTIL]SSLEAY.NUM" 43$ libnum = "[.UTIL]SSLEAY.NUM"
35$ libdir = "[.AXP.EXE.SSL]" 44$ libdir = "[.''ARCH'.EXE.SSL]"
36$ libolb = "''libdir'LIBSSL.OLB" 45$ libolb = "''libdir'LIBSSL.OLB"
37$ libopt = "''libdir'LIBSSL.OPT" 46$ libopt = "''libdir'LIBSSL.OPT"
38$ libmap = "''libdir'LIBSSL.MAP" 47$ libmap = "''libdir'LIBSSL.MAP"
39$ libgoal= "''libdir'LIBSSL.EXE" 48$ libgoal= "''libdir'LIBSSL.EXE"
40$ libref = "[.AXP.EXE.CRYPTO]LIBCRYPTO.EXE" 49$ libref = "[.''ARCH'.EXE.CRYPTO]LIBCRYPTO.EXE"
41$ gosub create_axp_shr 50$ gosub create_nonvax_shr
42$ else 51$ else
52$ arch_vax = 1
43$ libtit = "CRYPTO_TRANSFER_VECTOR" 53$ libtit = "CRYPTO_TRANSFER_VECTOR"
44$ libid = "Crypto" 54$ libid = "Crypto"
45$ libnum = "[.UTIL]LIBEAY.NUM" 55$ libnum = "[.UTIL]LIBEAY.NUM"
46$ libdir = "[.VAX.EXE.CRYPTO]" 56$ libdir = "[.''ARCH'.EXE.CRYPTO]"
47$ libmar = "''libdir'LIBCRYPTO.MAR" 57$ libmar = "''libdir'LIBCRYPTO.MAR"
48$ libolb = "''libdir'LIBCRYPTO.OLB" 58$ libolb = "''libdir'LIBCRYPTO.OLB"
49$ libopt = "''libdir'LIBCRYPTO.OPT" 59$ libopt = "''libdir'LIBCRYPTO.OPT"
@@ -56,22 +66,22 @@ $ gosub create_vax_shr
56$ libtit = "SSL_TRANSFER_VECTOR" 66$ libtit = "SSL_TRANSFER_VECTOR"
57$ libid = "SSL" 67$ libid = "SSL"
58$ libnum = "[.UTIL]SSLEAY.NUM" 68$ libnum = "[.UTIL]SSLEAY.NUM"
59$ libdir = "[.VAX.EXE.SSL]" 69$ libdir = "[.''ARCH'.EXE.SSL]"
60$ libmar = "''libdir'LIBSSL.MAR" 70$ libmar = "''libdir'LIBSSL.MAR"
61$ libolb = "''libdir'LIBSSL.OLB" 71$ libolb = "''libdir'LIBSSL.OLB"
62$ libopt = "''libdir'LIBSSL.OPT" 72$ libopt = "''libdir'LIBSSL.OPT"
63$ libobj = "''libdir'LIBSSL.OBJ" 73$ libobj = "''libdir'LIBSSL.OBJ"
64$ libmap = "''libdir'LIBSSL.MAP" 74$ libmap = "''libdir'LIBSSL.MAP"
65$ libgoal= "''libdir'LIBSSL.EXE" 75$ libgoal= "''libdir'LIBSSL.EXE"
66$ libref = "[.VAX.EXE.CRYPTO]LIBCRYPTO.EXE" 76$ libref = "[.''ARCH'.EXE.CRYPTO]LIBCRYPTO.EXE"
67$ libvec = "LIBSSL" 77$ libvec = "LIBSSL"
68$ gosub create_vax_shr 78$ gosub create_vax_shr
69$ endif 79$ endif
70$ exit 80$ exit
71$ 81$
72$! ----- Soubroutines to actually build the shareable libraries 82$! ----- Soubroutines to build the shareable libraries
73$! The way things work, there's a main shareable library creator for each 83$! For each supported architecture, there's a main shareable library
74$! supported architecture, which is called from the main code above. 84$! creator, which is called from the main code above.
75$! The creator will define a number of variables to tell the next levels of 85$! The creator will define a number of variables to tell the next levels of
76$! subroutines what routines to use to write to the option files, call the 86$! subroutines what routines to use to write to the option files, call the
77$! main processor, read_func_num, and when that is done, it will write version 87$! main processor, read_func_num, and when that is done, it will write version
@@ -97,10 +107,10 @@ $! read_func_num depends on the following variables from the creator:
97$! libwriter The name of the writer routine to call for each .num file line 107$! libwriter The name of the writer routine to call for each .num file line
98$! ----- 108$! -----
99$ 109$
100$! ----- Subroutines for AXP 110$! ----- Subroutines for non-VAX
101$! ----- 111$! -----
102$! The creator routine 112$! The creator routine
103$ create_axp_shr: 113$ create_nonvax_shr:
104$ open/write opt 'libopt' 114$ open/write opt 'libopt'
105$ write opt "identification=""",libid," ",libverstr,"""" 115$ write opt "identification=""",libid," ",libverstr,""""
106$ write opt libolb,"/lib" 116$ write opt libolb,"/lib"
@@ -108,7 +118,7 @@ $ if libref .nes. "" then write opt libref,"/SHARE"
108$ write opt "SYMBOL_VECTOR=(-" 118$ write opt "SYMBOL_VECTOR=(-"
109$ libfirstentry := true 119$ libfirstentry := true
110$ libwrch := opt 120$ libwrch := opt
111$ libwriter := write_axp_transfer_entry 121$ libwriter := write_nonvax_transfer_entry
112$ textcount = 0 122$ textcount = 0
113$ gosub read_func_num 123$ gosub read_func_num
114$ write opt ")" 124$ write opt ")"
@@ -118,7 +128,7 @@ $ link/map='libmap'/full/share='libgoal' 'libopt'/option
118$ return 128$ return
119$ 129$
120$! The record writer routine 130$! The record writer routine
121$ write_axp_transfer_entry: 131$ write_nonvax_transfer_entry:
122$ if libentry .eqs. ".dummy" then return 132$ if libentry .eqs. ".dummy" then return
123$ if info_kind .eqs. "VARIABLE" 133$ if info_kind .eqs. "VARIABLE"
124$ then 134$ then
@@ -144,7 +154,7 @@ $ libfirstentry := false
144$ textcount = textcount + textcount_this 154$ textcount = textcount + textcount_this
145$ return 155$ return
146$ 156$
147$! ----- Subroutines for AXP 157$! ----- Subroutines for VAX
148$! ----- 158$! -----
149$! The creator routine 159$! The creator routine
150$ create_vax_shr: 160$ create_vax_shr:
@@ -264,8 +274,15 @@ $ truesum = truesum + 1
264$ if plat_entry .eqs. "!EXPORT_VAR_AS_FUNCTION" then - 274$ if plat_entry .eqs. "!EXPORT_VAR_AS_FUNCTION" then -
265$ falsesum = falsesum + 1 275$ falsesum = falsesum + 1
266$ endif 276$ endif
267$ if plat_entry .eqs. "VMS" then truesum = truesum + 1 277$!
268$ if plat_entry .eqs. "!VMS" then falsesum = falsesum + 1 278$ if ((plat_entry .eqs. "VMS") .or. -
279 (arch_vax .and. (plat_entry .eqs. "VMSVAX"))) then -
280 truesum = truesum + 1
281$!
282$ if ((plat_entry .eqs. "!VMS") .or. -
283 (arch_vax .and. (plat_entry .eqs. "!VMSVAX"))) then -
284 falsesum = falsesum + 1
285$!
269$ goto loop1 286$ goto loop1
270$ endif 287$ endif
271$ endloop1: 288$ endloop1:
diff --git a/src/lib/libssl/src/VMS/openssl_utils.com b/src/lib/libssl/src/VMS/openssl_utils.com
index ddc107394f..64f4915104 100644
--- a/src/lib/libssl/src/VMS/openssl_utils.com
+++ b/src/lib/libssl/src/VMS/openssl_utils.com
@@ -8,31 +8,39 @@ $!
8$! 8$!
9$! Slightly modified by Richard Levitte <richard@levitte.org> 9$! Slightly modified by Richard Levitte <richard@levitte.org>
10$! 10$!
11$!
12$! Always define OPENSSL. Others are optional (non-null P1).
13$!
11$ OPENSSL :== $SSLEXE:OPENSSL 14$ OPENSSL :== $SSLEXE:OPENSSL
12$ VERIFY :== $SSLEXE:OPENSSL VERIFY 15$
13$ ASN1PARSE:== $SSLEXE:OPENSSL ASN1PARS 16$ IF (P1 .NES. "")
14$ REQ :== $SSLEXE:OPENSSL REQ 17$ THEN
15$ DGST :== $SSLEXE:OPENSSL DGST 18$ VERIFY :== $SSLEXE:OPENSSL VERIFY
16$ DH :== $SSLEXE:OPENSSL DH 19$ ASN1PARSE:== $SSLEXE:OPENSSL ASN1PARS
17$ ENC :== $SSLEXE:OPENSSL ENC 20$! REQ could conflict with REQUEST.
18$ GENDH :== $SSLEXE:OPENSSL GENDH 21$ OREQ :== $SSLEXE:OPENSSL REQ
19$ ERRSTR :== $SSLEXE:OPENSSL ERRSTR 22$ DGST :== $SSLEXE:OPENSSL DGST
20$ CA :== $SSLEXE:OPENSSL CA 23$ DH :== $SSLEXE:OPENSSL DH
21$ CRL :== $SSLEXE:OPENSSL CRL 24$ ENC :== $SSLEXE:OPENSSL ENC
22$ RSA :== $SSLEXE:OPENSSL RSA 25$ GENDH :== $SSLEXE:OPENSSL GENDH
23$ DSA :== $SSLEXE:OPENSSL DSA 26$ ERRSTR :== $SSLEXE:OPENSSL ERRSTR
24$ DSAPARAM :== $SSLEXE:OPENSSL DSAPARAM 27$ CA :== $SSLEXE:OPENSSL CA
25$ X509 :== $SSLEXE:OPENSSL X509 28$ CRL :== $SSLEXE:OPENSSL CRL
26$ GENRSA :== $SSLEXE:OPENSSL GENRSA 29$ RSA :== $SSLEXE:OPENSSL RSA
27$ GENDSA :== $SSLEXE:OPENSSL GENDSA 30$ DSA :== $SSLEXE:OPENSSL DSA
28$ S_SERVER :== $SSLEXE:OPENSSL S_SERVER 31$ DSAPARAM :== $SSLEXE:OPENSSL DSAPARAM
29$ S_CLIENT :== $SSLEXE:OPENSSL S_CLIENT 32$ X509 :== $SSLEXE:OPENSSL X509
30$ SPEED :== $SSLEXE:OPENSSL SPEED 33$ GENRSA :== $SSLEXE:OPENSSL GENRSA
31$ S_TIME :== $SSLEXE:OPENSSL S_TIME 34$ GENDSA :== $SSLEXE:OPENSSL GENDSA
32$ VERSION :== $SSLEXE:OPENSSL VERSION 35$ S_SERVER :== $SSLEXE:OPENSSL S_SERVER
33$ PKCS7 :== $SSLEXE:OPENSSL PKCS7 36$ S_CLIENT :== $SSLEXE:OPENSSL S_CLIENT
34$ CRL2PKCS7:== $SSLEXE:OPENSSL CRL2P7 37$ SPEED :== $SSLEXE:OPENSSL SPEED
35$ SESS_ID :== $SSLEXE:OPENSSL SESS_ID 38$ S_TIME :== $SSLEXE:OPENSSL S_TIME
36$ CIPHERS :== $SSLEXE:OPENSSL CIPHERS 39$ VERSION :== $SSLEXE:OPENSSL VERSION
37$ NSEQ :== $SSLEXE:OPENSSL NSEQ 40$ PKCS7 :== $SSLEXE:OPENSSL PKCS7
38$ PKCS12 :== $SSLEXE:OPENSSL PKCS12 41$ CRL2PKCS7:== $SSLEXE:OPENSSL CRL2P7
42$ SESS_ID :== $SSLEXE:OPENSSL SESS_ID
43$ CIPHERS :== $SSLEXE:OPENSSL CIPHERS
44$ NSEQ :== $SSLEXE:OPENSSL NSEQ
45$ PKCS12 :== $SSLEXE:OPENSSL PKCS12
46$ ENDIF
diff --git a/src/lib/libssl/src/apps/CA.com b/src/lib/libssl/src/apps/CA.com
index 02682e424a..69b7bb3fd8 100644
--- a/src/lib/libssl/src/apps/CA.com
+++ b/src/lib/libssl/src/apps/CA.com
@@ -114,8 +114,8 @@ $!
114$ IF F$SEARCH(CATOP+".private"+CAKEY) .EQS. "" 114$ IF F$SEARCH(CATOP+".private"+CAKEY) .EQS. ""
115$ THEN 115$ THEN
116$ READ '__INPUT' FILE - 116$ READ '__INPUT' FILE -
117 /PROMT="CA certificate filename (or enter to create)" 117 /PROMPT="CA certificate filename (or enter to create)"
118$ IF F$SEARCH(FILE) .NES. "" 118$ IF (FILE .NES. "") .AND. (F$SEARCH(FILE) .NES. "")
119$ THEN 119$ THEN
120$ COPY 'FILE' 'CATOP'.private'CAKEY' 120$ COPY 'FILE' 'CATOP'.private'CAKEY'
121$ RET=$STATUS 121$ RET=$STATUS
diff --git a/src/lib/libssl/src/apps/CA.sh b/src/lib/libssl/src/apps/CA.sh
index a0b20d85a9..7ad6b8c52e 100644
--- a/src/lib/libssl/src/apps/CA.sh
+++ b/src/lib/libssl/src/apps/CA.sh
@@ -5,10 +5,10 @@
5# things easier between now and when Eric is convinced to fix it :-) 5# things easier between now and when Eric is convinced to fix it :-)
6# 6#
7# CA -newca ... will setup the right stuff 7# CA -newca ... will setup the right stuff
8# CA -newreq ... will generate a certificate request 8# CA -newreq ... will generate a certificate request
9# CA -sign ... will sign the generated request and output 9# CA -sign ... will sign the generated request and output
10# 10#
11# At the end of that grab newreq.pem and newcert.pem (one has the key 11# At the end of that grab newreq.pem and newcert.pem (one has the key
12# and the other the certificate) and cat them together and that is what 12# and the other the certificate) and cat them together and that is what
13# you want/need ... I'll make even this a little cleaner later. 13# you want/need ... I'll make even this a little cleaner later.
14# 14#
@@ -16,8 +16,8 @@
16# 12-Jan-96 tjh Added more things ... including CA -signcert which 16# 12-Jan-96 tjh Added more things ... including CA -signcert which
17# converts a certificate to a request and then signs it. 17# converts a certificate to a request and then signs it.
18# 10-Jan-96 eay Fixed a few more bugs and added the SSLEAY_CONFIG 18# 10-Jan-96 eay Fixed a few more bugs and added the SSLEAY_CONFIG
19# environment variable so this can be driven from 19# environment variable so this can be driven from
20# a script. 20# a script.
21# 25-Jul-96 eay Cleaned up filenames some more. 21# 25-Jul-96 eay Cleaned up filenames some more.
22# 11-Jun-96 eay Fixed a few filename missmatches. 22# 11-Jun-96 eay Fixed a few filename missmatches.
23# 03-May-96 eay Modified to use 'ssleay cmd' instead of 'cmd'. 23# 03-May-96 eay Modified to use 'ssleay cmd' instead of 'cmd'.
@@ -29,52 +29,87 @@
29 29
30# default openssl.cnf file has setup as per the following 30# default openssl.cnf file has setup as per the following
31# demoCA ... where everything is stored 31# demoCA ... where everything is stored
32cp_pem() {
33 infile=$1
34 outfile=$2
35 bound=$3
36 flag=0
37 exec <$infile;
38 while read line; do
39 if [ $flag -eq 1 ]; then
40 echo $line|grep "^-----END.*$bound" 2>/dev/null 1>/dev/null
41 if [ $? -eq 0 ] ; then
42 echo $line >>$outfile
43 break
44 else
45 echo $line >>$outfile
46 fi
47 fi
48
49 echo $line|grep "^-----BEGIN.*$bound" 2>/dev/null 1>/dev/null
50 if [ $? -eq 0 ]; then
51 echo $line >$outfile
52 flag=1
53 fi
54 done
55}
56
57usage() {
58 echo "usage: $0 -newcert|-newreq|-newreq-nodes|-newca|-sign|-verify" >&2
59}
32 60
33if [ -z "$OPENSSL" ]; then OPENSSL=openssl; fi 61if [ -z "$OPENSSL" ]; then OPENSSL=openssl; fi
34 62
35DAYS="-days 365" # 1 year 63if [ -z "$DAYS" ] ; then DAYS="-days 365" ; fi # 1 year
36CADAYS="-days 1095" # 3 years 64CADAYS="-days 1095" # 3 years
37REQ="$OPENSSL req $SSLEAY_CONFIG" 65REQ="$OPENSSL req $SSLEAY_CONFIG"
38CA="$OPENSSL ca $SSLEAY_CONFIG" 66CA="$OPENSSL ca $SSLEAY_CONFIG"
39VERIFY="$OPENSSL verify" 67VERIFY="$OPENSSL verify"
40X509="$OPENSSL x509" 68X509="$OPENSSL x509"
69PKCS12="openssl pkcs12"
41 70
42CATOP=./demoCA 71if [ -z "$CATOP" ] ; then CATOP=./demoCA ; fi
43CAKEY=./cakey.pem 72CAKEY=./cakey.pem
44CAREQ=./careq.pem 73CAREQ=./careq.pem
45CACERT=./cacert.pem 74CACERT=./cacert.pem
46 75
47for i 76RET=0
48do 77
49case $i in 78while [ "$1" != "" ] ; do
79case $1 in
50-\?|-h|-help) 80-\?|-h|-help)
51 echo "usage: CA -newcert|-newreq|-newca|-sign|-verify" >&2 81 usage
52 exit 0 82 exit 0
53 ;; 83 ;;
54-newcert) 84-newcert)
55 # create a certificate 85 # create a certificate
56 $REQ -new -x509 -keyout newkey.pem -out newcert.pem $DAYS 86 $REQ -new -x509 -keyout newkey.pem -out newcert.pem $DAYS
57 RET=$? 87 RET=$?
58 echo "Certificate is in newcert.pem, private key is in newkey.pem" 88 echo "Certificate is in newcert.pem, private key is in newkey.pem"
59 ;; 89 ;;
60-newreq) 90-newreq)
61 # create a certificate request 91 # create a certificate request
62 $REQ -new -keyout newkey.pem -out newreq.pem $DAYS 92 $REQ -new -keyout newkey.pem -out newreq.pem $DAYS
63 RET=$? 93 RET=$?
64 echo "Request is in newreq.pem, private key is in newkey.pem" 94 echo "Request is in newreq.pem, private key is in newkey.pem"
65 ;; 95 ;;
66-newca) 96-newreq-nodes)
97 # create a certificate request
98 $REQ -new -nodes -keyout newreq.pem -out newreq.pem $DAYS
99 RET=$?
100 echo "Request (and private key) is in newreq.pem"
101 ;;
102-newca)
67 # if explicitly asked for or it doesn't exist then setup the directory 103 # if explicitly asked for or it doesn't exist then setup the directory
68 # structure that Eric likes to manage things 104 # structure that Eric likes to manage things
69 NEW="1" 105 NEW="1"
70 if [ "$NEW" -o ! -f ${CATOP}/serial ]; then 106 if [ "$NEW" -o ! -f ${CATOP}/serial ]; then
71 # create the directory hierarchy 107 # create the directory hierarchy
72 mkdir ${CATOP} 108 mkdir -p ${CATOP}
73 mkdir ${CATOP}/certs 109 mkdir -p ${CATOP}/certs
74 mkdir ${CATOP}/crl 110 mkdir -p ${CATOP}/crl
75 mkdir ${CATOP}/newcerts 111 mkdir -p ${CATOP}/newcerts
76 mkdir ${CATOP}/private 112 mkdir -p ${CATOP}/private
77 echo "00" > ${CATOP}/serial
78 touch ${CATOP}/index.txt 113 touch ${CATOP}/index.txt
79 fi 114 fi
80 if [ ! -f ${CATOP}/private/$CAKEY ]; then 115 if [ ! -f ${CATOP}/private/$CAKEY ]; then
@@ -83,37 +118,60 @@ case $i in
83 118
84 # ask user for existing CA certificate 119 # ask user for existing CA certificate
85 if [ "$FILE" ]; then 120 if [ "$FILE" ]; then
86 cp $FILE ${CATOP}/private/$CAKEY 121 cp_pem $FILE ${CATOP}/private/$CAKEY PRIVATE
122 cp_pem $FILE ${CATOP}/$CACERT CERTIFICATE
87 RET=$? 123 RET=$?
124 if [ ! -f "${CATOP}/serial" ]; then
125 $X509 -in ${CATOP}/$CACERT -noout -next_serial \
126 -out ${CATOP}/serial
127 fi
88 else 128 else
89 echo "Making CA certificate ..." 129 echo "Making CA certificate ..."
90 $REQ -new -keyout ${CATOP}/private/$CAKEY \ 130 $REQ -new -keyout ${CATOP}/private/$CAKEY \
91 -out ${CATOP}/$CAREQ 131 -out ${CATOP}/$CAREQ
92 $CA -out ${CATOP}/$CACERT $CADAYS -batch \ 132 $CA -create_serial -out ${CATOP}/$CACERT $CADAYS -batch \
93 -keyfile ${CATOP}/private/$CAKEY -selfsign \ 133 -keyfile ${CATOP}/private/$CAKEY -selfsign \
94 -infiles ${CATOP}/$CAREQ 134 -extensions v3_ca \
135 -infiles ${CATOP}/$CAREQ
95 RET=$? 136 RET=$?
96 fi 137 fi
97 fi 138 fi
98 ;; 139 ;;
99-xsign) 140-xsign)
100 $CA -policy policy_anything -infiles newreq.pem 141 $CA -policy policy_anything -infiles newreq.pem
101 RET=$? 142 RET=$?
102 ;; 143 ;;
103-sign|-signreq) 144-pkcs12)
145 if [ -z "$2" ] ; then
146 CNAME="My Certificate"
147 else
148 CNAME="$2"
149 fi
150 $PKCS12 -in newcert.pem -inkey newreq.pem -certfile ${CATOP}/$CACERT \
151 -out newcert.p12 -export -name "$CNAME"
152 RET=$?
153 exit $RET
154 ;;
155-sign|-signreq)
104 $CA -policy policy_anything -out newcert.pem -infiles newreq.pem 156 $CA -policy policy_anything -out newcert.pem -infiles newreq.pem
105 RET=$? 157 RET=$?
106 cat newcert.pem 158 cat newcert.pem
107 echo "Signed certificate is in newcert.pem" 159 echo "Signed certificate is in newcert.pem"
108 ;; 160 ;;
109-signcert) 161-signCA)
162 $CA -policy policy_anything -out newcert.pem -extensions v3_ca -infiles newreq.pem
163 RET=$?
164 echo "Signed CA certificate is in newcert.pem"
165 ;;
166-signcert)
110 echo "Cert passphrase will be requested twice - bug?" 167 echo "Cert passphrase will be requested twice - bug?"
111 $X509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem 168 $X509 -x509toreq -in newreq.pem -signkey newreq.pem -out tmp.pem
112 $CA -policy policy_anything -out newcert.pem -infiles tmp.pem 169 $CA -policy policy_anything -out newcert.pem -infiles tmp.pem
170 RET=$?
113 cat newcert.pem 171 cat newcert.pem
114 echo "Signed certificate is in newcert.pem" 172 echo "Signed certificate is in newcert.pem"
115 ;; 173 ;;
116-verify) 174-verify)
117 shift 175 shift
118 if [ -z "$1" ]; then 176 if [ -z "$1" ]; then
119 $VERIFY -CAfile $CATOP/$CACERT newcert.pem 177 $VERIFY -CAfile $CATOP/$CACERT newcert.pem
@@ -127,13 +185,14 @@ case $i in
127 fi 185 fi
128 done 186 done
129 fi 187 fi
130 exit 0 188 exit $RET
131 ;; 189 ;;
132*) 190*)
133 echo "Unknown arg $i"; 191 echo "Unknown arg $i" >&2
192 usage
134 exit 1 193 exit 1
135 ;; 194 ;;
136esac 195esac
196shift
137done 197done
138exit $RET 198exit $RET
139
diff --git a/src/lib/libssl/src/apps/Makefile b/src/lib/libssl/src/apps/Makefile
index 402981aede..fa32d2d7e7 100644
--- a/src/lib/libssl/src/apps/Makefile
+++ b/src/lib/libssl/src/apps/Makefile
@@ -31,15 +31,15 @@ LIBSSL=-L.. -lssl
31 31
32PROGRAM= openssl 32PROGRAM= openssl
33 33
34SCRIPTS=CA.sh CA.pl 34SCRIPTS=CA.sh CA.pl tsget
35 35
36EXE= $(PROGRAM)$(EXE_EXT) 36EXE= $(PROGRAM)$(EXE_EXT)
37 37
38E_EXE= verify asn1pars req dgst dh dhparam enc passwd gendh errstr \ 38E_EXE= verify asn1pars req dgst dh dhparam enc passwd gendh errstr \
39 ca crl rsa rsautl dsa dsaparam ec ecparam \ 39 ca crl rsa rsautl dsa dsaparam ec ecparam \
40 x509 genrsa gendsa s_server s_client speed \ 40 x509 genrsa gendsa genpkey s_server s_client speed \
41 s_time version pkcs7 cms crl2pkcs7 sess_id ciphers nseq pkcs12 \ 41 s_time version pkcs7 cms crl2pkcs7 sess_id ciphers nseq pkcs12 \
42 pkcs8 spkac smime rand engine ocsp prime 42 pkcs8 pkey pkeyparam pkeyutl spkac smime rand engine ocsp prime ts
43 43
44PROGS= $(PROGRAM).c 44PROGS= $(PROGRAM).c
45 45
@@ -53,18 +53,18 @@ RAND_SRC=app_rand.c
53E_OBJ= verify.o asn1pars.o req.o dgst.o dh.o dhparam.o enc.o passwd.o gendh.o errstr.o \ 53E_OBJ= verify.o asn1pars.o req.o dgst.o dh.o dhparam.o enc.o passwd.o gendh.o errstr.o \
54 ca.o pkcs7.o crl2p7.o crl.o \ 54 ca.o pkcs7.o crl2p7.o crl.o \
55 rsa.o rsautl.o dsa.o dsaparam.o ec.o ecparam.o \ 55 rsa.o rsautl.o dsa.o dsaparam.o ec.o ecparam.o \
56 x509.o genrsa.o gendsa.o s_server.o s_client.o speed.o \ 56 x509.o genrsa.o gendsa.o genpkey.o s_server.o s_client.o speed.o \
57 s_time.o $(A_OBJ) $(S_OBJ) $(RAND_OBJ) version.o sess_id.o \ 57 s_time.o $(A_OBJ) $(S_OBJ) $(RAND_OBJ) version.o sess_id.o \
58 ciphers.o nseq.o pkcs12.o pkcs8.o spkac.o smime.o rand.o engine.o \ 58 ciphers.o nseq.o pkcs12.o pkcs8.o pkey.o pkeyparam.o pkeyutl.o \
59 ocsp.o prime.o cms.o 59 spkac.o smime.o cms.o rand.o engine.o ocsp.o prime.o ts.o
60 60
61E_SRC= verify.c asn1pars.c req.c dgst.c dh.c enc.c passwd.c gendh.c errstr.c ca.c \ 61E_SRC= verify.c asn1pars.c req.c dgst.c dh.c enc.c passwd.c gendh.c errstr.c ca.c \
62 pkcs7.c crl2p7.c crl.c \ 62 pkcs7.c crl2p7.c crl.c \
63 rsa.c rsautl.c dsa.c dsaparam.c ec.c ecparam.c \ 63 rsa.c rsautl.c dsa.c dsaparam.c ec.c ecparam.c \
64 x509.c genrsa.c gendsa.c s_server.c s_client.c speed.c \ 64 x509.c genrsa.c gendsa.c genpkey.c s_server.c s_client.c speed.c \
65 s_time.c $(A_SRC) $(S_SRC) $(RAND_SRC) version.c sess_id.c \ 65 s_time.c $(A_SRC) $(S_SRC) $(RAND_SRC) version.c sess_id.c \
66 ciphers.c nseq.c pkcs12.c pkcs8.c spkac.c smime.c rand.c engine.c \ 66 ciphers.c nseq.c pkcs12.c pkcs8.c pkey.c pkeyparam.c pkeyutl.c \
67 ocsp.c prime.c cms.c 67 spkac.c smime.c cms.c rand.c engine.c ocsp.c prime.c ts.c
68 68
69SRC=$(E_SRC) 69SRC=$(E_SRC)
70 70
@@ -137,9 +137,10 @@ depend:
137dclean: 137dclean:
138 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new 138 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
139 mv -f Makefile.new $(MAKEFILE) 139 mv -f Makefile.new $(MAKEFILE)
140 rm -f CA.pl
140 141
141clean: 142clean:
142 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) 143 rm -f *.o *.obj *.dll lib tags core .pure .nfs* *.old *.bak fluff $(EXE)
143 rm -f req 144 rm -f req
144 145
145$(DLIBSSL): 146$(DLIBSSL):
@@ -152,18 +153,13 @@ $(EXE): progs.h $(E_OBJ) $(PROGRAM).o $(DLIBCRYPTO) $(DLIBSSL)
152 $(RM) $(EXE) 153 $(RM) $(EXE)
153 shlib_target=; if [ -n "$(SHARED_LIBS)" ]; then \ 154 shlib_target=; if [ -n "$(SHARED_LIBS)" ]; then \
154 shlib_target="$(SHLIB_TARGET)"; \ 155 shlib_target="$(SHLIB_TARGET)"; \
155 elif [ -n "$(FIPSCANLIB)" ]; then \
156 FIPSLD_CC=$(CC); CC=$(TOP)/fips/fipsld; export CC FIPSLD_CC; \
157 fi; \ 156 fi; \
158 LIBRARIES="$(LIBSSL) $(LIBKRB5) $(LIBCRYPTO)" ; \ 157 LIBRARIES="$(LIBSSL) $(LIBKRB5) $(LIBCRYPTO)" ; \
159 [ "x$(FIPSCANLIB)" = "xlibfips" ] && LIBRARIES="$$LIBRARIES -lfips"; \
160 $(MAKE) -f $(TOP)/Makefile.shared -e \ 158 $(MAKE) -f $(TOP)/Makefile.shared -e \
161 CC=$${CC} APPNAME=$(EXE) OBJECTS="$(PROGRAM).o $(E_OBJ)" \ 159 APPNAME=$(EXE) OBJECTS="$(PROGRAM).o $(E_OBJ)" \
162 LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \ 160 LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \
163 link_app.$${shlib_target} 161 link_app.$${shlib_target}
164 -(cd ..; \ 162 @(cd ..; $(MAKE) rehash)
165 OPENSSL="`pwd`/util/opensslwrap.sh"; export OPENSSL; \
166 $(PERL) tools/c_rehash certs)
167 163
168progs.h: progs.pl 164progs.h: progs.pl
169 $(PERL) progs.pl $(E_EXE) >progs.h 165 $(PERL) progs.pl $(E_EXE) >progs.h
@@ -176,150 +172,149 @@ app_rand.o: ../include/openssl/buffer.h ../include/openssl/conf.h
176app_rand.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 172app_rand.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
177app_rand.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 173app_rand.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
178app_rand.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 174app_rand.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
179app_rand.o: ../include/openssl/evp.h ../include/openssl/fips.h 175app_rand.o: ../include/openssl/evp.h ../include/openssl/lhash.h
180app_rand.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 176app_rand.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
181app_rand.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 177app_rand.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
182app_rand.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 178app_rand.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
183app_rand.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h 179app_rand.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
184app_rand.o: ../include/openssl/rand.h ../include/openssl/safestack.h 180app_rand.o: ../include/openssl/safestack.h ../include/openssl/sha.h
185app_rand.o: ../include/openssl/sha.h ../include/openssl/stack.h 181app_rand.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
186app_rand.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 182app_rand.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
187app_rand.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 183app_rand.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h
188app_rand.o: ../include/openssl/x509v3.h app_rand.c apps.h 184app_rand.o: app_rand.c apps.h
189apps.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 185apps.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
190apps.o: ../include/openssl/bn.h ../include/openssl/buffer.h 186apps.o: ../include/openssl/bn.h ../include/openssl/buffer.h
191apps.o: ../include/openssl/conf.h ../include/openssl/crypto.h 187apps.o: ../include/openssl/conf.h ../include/openssl/crypto.h
192apps.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 188apps.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
193apps.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 189apps.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
194apps.o: ../include/openssl/engine.h ../include/openssl/err.h 190apps.o: ../include/openssl/engine.h ../include/openssl/err.h
195apps.o: ../include/openssl/evp.h ../include/openssl/fips.h 191apps.o: ../include/openssl/evp.h ../include/openssl/lhash.h
196apps.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 192apps.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
197apps.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 193apps.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
198apps.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 194apps.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
199apps.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 195apps.o: ../include/openssl/pem.h ../include/openssl/pem2.h
200apps.o: ../include/openssl/pem2.h ../include/openssl/pkcs12.h 196apps.o: ../include/openssl/pkcs12.h ../include/openssl/pkcs7.h
201apps.o: ../include/openssl/pkcs7.h ../include/openssl/rsa.h 197apps.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
202apps.o: ../include/openssl/safestack.h ../include/openssl/sha.h 198apps.o: ../include/openssl/sha.h ../include/openssl/stack.h
203apps.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 199apps.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
204apps.o: ../include/openssl/txt_db.h ../include/openssl/ui.h 200apps.o: ../include/openssl/ui.h ../include/openssl/x509.h
205apps.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 201apps.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.c apps.h
206apps.o: ../include/openssl/x509v3.h apps.c apps.h
207asn1pars.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 202asn1pars.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
208asn1pars.o: ../include/openssl/buffer.h ../include/openssl/conf.h 203asn1pars.o: ../include/openssl/buffer.h ../include/openssl/conf.h
209asn1pars.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 204asn1pars.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
210asn1pars.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 205asn1pars.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
211asn1pars.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 206asn1pars.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
212asn1pars.o: ../include/openssl/err.h ../include/openssl/evp.h 207asn1pars.o: ../include/openssl/err.h ../include/openssl/evp.h
213asn1pars.o: ../include/openssl/fips.h ../include/openssl/lhash.h 208asn1pars.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
214asn1pars.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 209asn1pars.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
215asn1pars.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 210asn1pars.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
216asn1pars.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 211asn1pars.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
217asn1pars.o: ../include/openssl/pem.h ../include/openssl/pem2.h 212asn1pars.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
218asn1pars.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 213asn1pars.o: ../include/openssl/safestack.h ../include/openssl/sha.h
219asn1pars.o: ../include/openssl/sha.h ../include/openssl/stack.h 214asn1pars.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
220asn1pars.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 215asn1pars.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
221asn1pars.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 216asn1pars.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
222asn1pars.o: ../include/openssl/x509v3.h apps.h asn1pars.c 217asn1pars.o: asn1pars.c
223ca.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 218ca.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
224ca.o: ../include/openssl/bn.h ../include/openssl/buffer.h 219ca.o: ../include/openssl/bn.h ../include/openssl/buffer.h
225ca.o: ../include/openssl/conf.h ../include/openssl/crypto.h 220ca.o: ../include/openssl/conf.h ../include/openssl/crypto.h
226ca.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 221ca.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
227ca.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 222ca.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
228ca.o: ../include/openssl/engine.h ../include/openssl/err.h 223ca.o: ../include/openssl/engine.h ../include/openssl/err.h
229ca.o: ../include/openssl/evp.h ../include/openssl/fips.h 224ca.o: ../include/openssl/evp.h ../include/openssl/lhash.h
230ca.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 225ca.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
231ca.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 226ca.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
232ca.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 227ca.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
233ca.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 228ca.o: ../include/openssl/pem.h ../include/openssl/pem2.h
234ca.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 229ca.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
235ca.o: ../include/openssl/safestack.h ../include/openssl/sha.h 230ca.o: ../include/openssl/sha.h ../include/openssl/stack.h
236ca.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 231ca.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
237ca.o: ../include/openssl/txt_db.h ../include/openssl/x509.h 232ca.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
238ca.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h ca.c 233ca.o: ../include/openssl/x509v3.h apps.h ca.c
239ciphers.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 234ciphers.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
240ciphers.o: ../include/openssl/bn.h ../include/openssl/buffer.h 235ciphers.o: ../include/openssl/buffer.h ../include/openssl/comp.h
241ciphers.o: ../include/openssl/comp.h ../include/openssl/conf.h 236ciphers.o: ../include/openssl/conf.h ../include/openssl/crypto.h
242ciphers.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h 237ciphers.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
243ciphers.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 238ciphers.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
244ciphers.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 239ciphers.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
245ciphers.o: ../include/openssl/engine.h ../include/openssl/err.h 240ciphers.o: ../include/openssl/err.h ../include/openssl/evp.h
246ciphers.o: ../include/openssl/evp.h ../include/openssl/fips.h
247ciphers.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 241ciphers.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
248ciphers.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 242ciphers.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
249ciphers.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 243ciphers.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
250ciphers.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 244ciphers.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
251ciphers.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 245ciphers.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
252ciphers.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 246ciphers.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
253ciphers.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 247ciphers.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
254ciphers.o: ../include/openssl/safestack.h ../include/openssl/sha.h 248ciphers.o: ../include/openssl/sha.h ../include/openssl/ssl.h
255ciphers.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 249ciphers.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
256ciphers.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 250ciphers.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
257ciphers.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 251ciphers.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
258ciphers.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h 252ciphers.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
259ciphers.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 253ciphers.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
260ciphers.o: ../include/openssl/x509v3.h apps.h ciphers.c 254ciphers.o: ciphers.c
261cms.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 255cms.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
262cms.o: ../include/openssl/buffer.h ../include/openssl/conf.h 256cms.o: ../include/openssl/buffer.h ../include/openssl/cms.h
263cms.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 257cms.o: ../include/openssl/conf.h ../include/openssl/crypto.h
264cms.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 258cms.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
265cms.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 259cms.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
266cms.o: ../include/openssl/evp.h ../include/openssl/fips.h 260cms.o: ../include/openssl/engine.h ../include/openssl/err.h
267cms.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 261cms.o: ../include/openssl/evp.h ../include/openssl/lhash.h
268cms.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 262cms.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
269cms.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 263cms.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
270cms.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h 264cms.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
271cms.o: ../include/openssl/safestack.h ../include/openssl/sha.h 265cms.o: ../include/openssl/pem.h ../include/openssl/pem2.h
272cms.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 266cms.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
273cms.o: ../include/openssl/txt_db.h ../include/openssl/x509.h 267cms.o: ../include/openssl/sha.h ../include/openssl/stack.h
274cms.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h cms.c 268cms.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
269cms.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
270cms.o: ../include/openssl/x509v3.h apps.h cms.c
275crl.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 271crl.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
276crl.o: ../include/openssl/buffer.h ../include/openssl/conf.h 272crl.o: ../include/openssl/buffer.h ../include/openssl/conf.h
277crl.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 273crl.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
278crl.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 274crl.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
279crl.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 275crl.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
280crl.o: ../include/openssl/err.h ../include/openssl/evp.h 276crl.o: ../include/openssl/err.h ../include/openssl/evp.h
281crl.o: ../include/openssl/fips.h ../include/openssl/lhash.h 277crl.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
282crl.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 278crl.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
283crl.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 279crl.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
284crl.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 280crl.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
285crl.o: ../include/openssl/pem.h ../include/openssl/pem2.h 281crl.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
286crl.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 282crl.o: ../include/openssl/safestack.h ../include/openssl/sha.h
287crl.o: ../include/openssl/sha.h ../include/openssl/stack.h 283crl.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
288crl.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 284crl.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
289crl.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 285crl.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h crl.c
290crl.o: ../include/openssl/x509v3.h apps.h crl.c
291crl2p7.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 286crl2p7.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
292crl2p7.o: ../include/openssl/buffer.h ../include/openssl/conf.h 287crl2p7.o: ../include/openssl/buffer.h ../include/openssl/conf.h
293crl2p7.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 288crl2p7.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
294crl2p7.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 289crl2p7.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
295crl2p7.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 290crl2p7.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
296crl2p7.o: ../include/openssl/err.h ../include/openssl/evp.h 291crl2p7.o: ../include/openssl/err.h ../include/openssl/evp.h
297crl2p7.o: ../include/openssl/fips.h ../include/openssl/lhash.h 292crl2p7.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
298crl2p7.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 293crl2p7.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
299crl2p7.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 294crl2p7.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
300crl2p7.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 295crl2p7.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
301crl2p7.o: ../include/openssl/pem.h ../include/openssl/pem2.h 296crl2p7.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
302crl2p7.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 297crl2p7.o: ../include/openssl/safestack.h ../include/openssl/sha.h
303crl2p7.o: ../include/openssl/sha.h ../include/openssl/stack.h 298crl2p7.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
304crl2p7.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 299crl2p7.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
305crl2p7.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 300crl2p7.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
306crl2p7.o: ../include/openssl/x509v3.h apps.h crl2p7.c 301crl2p7.o: crl2p7.c
307dgst.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 302dgst.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
308dgst.o: ../include/openssl/buffer.h ../include/openssl/conf.h 303dgst.o: ../include/openssl/buffer.h ../include/openssl/conf.h
309dgst.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 304dgst.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
310dgst.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 305dgst.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
311dgst.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 306dgst.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
312dgst.o: ../include/openssl/err.h ../include/openssl/evp.h 307dgst.o: ../include/openssl/err.h ../include/openssl/evp.h
313dgst.o: ../include/openssl/fips.h ../include/openssl/hmac.h 308dgst.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
314dgst.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 309dgst.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
315dgst.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 310dgst.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
316dgst.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 311dgst.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
317dgst.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 312dgst.o: ../include/openssl/pem.h ../include/openssl/pem2.h
318dgst.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 313dgst.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
319dgst.o: ../include/openssl/safestack.h ../include/openssl/sha.h 314dgst.o: ../include/openssl/sha.h ../include/openssl/stack.h
320dgst.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 315dgst.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
321dgst.o: ../include/openssl/txt_db.h ../include/openssl/x509.h 316dgst.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
322dgst.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h dgst.c 317dgst.o: ../include/openssl/x509v3.h apps.h dgst.c
323dh.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 318dh.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
324dh.o: ../include/openssl/bn.h ../include/openssl/buffer.h 319dh.o: ../include/openssl/bn.h ../include/openssl/buffer.h
325dh.o: ../include/openssl/conf.h ../include/openssl/crypto.h 320dh.o: ../include/openssl/conf.h ../include/openssl/crypto.h
@@ -327,16 +322,15 @@ dh.o: ../include/openssl/dh.h ../include/openssl/e_os2.h
327dh.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 322dh.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
328dh.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 323dh.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
329dh.o: ../include/openssl/err.h ../include/openssl/evp.h 324dh.o: ../include/openssl/err.h ../include/openssl/evp.h
330dh.o: ../include/openssl/fips.h ../include/openssl/lhash.h 325dh.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
331dh.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 326dh.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
332dh.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 327dh.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
333dh.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 328dh.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
334dh.o: ../include/openssl/pem.h ../include/openssl/pem2.h 329dh.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
335dh.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 330dh.o: ../include/openssl/safestack.h ../include/openssl/sha.h
336dh.o: ../include/openssl/sha.h ../include/openssl/stack.h 331dh.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
337dh.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 332dh.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
338dh.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 333dh.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h dh.c
339dh.o: ../include/openssl/x509v3.h apps.h dh.c
340dsa.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 334dsa.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
341dsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h 335dsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h
342dsa.o: ../include/openssl/conf.h ../include/openssl/crypto.h 336dsa.o: ../include/openssl/conf.h ../include/openssl/crypto.h
@@ -344,16 +338,15 @@ dsa.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
344dsa.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 338dsa.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
345dsa.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 339dsa.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
346dsa.o: ../include/openssl/err.h ../include/openssl/evp.h 340dsa.o: ../include/openssl/err.h ../include/openssl/evp.h
347dsa.o: ../include/openssl/fips.h ../include/openssl/lhash.h 341dsa.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
348dsa.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 342dsa.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
349dsa.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 343dsa.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
350dsa.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 344dsa.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
351dsa.o: ../include/openssl/pem.h ../include/openssl/pem2.h 345dsa.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
352dsa.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 346dsa.o: ../include/openssl/safestack.h ../include/openssl/sha.h
353dsa.o: ../include/openssl/sha.h ../include/openssl/stack.h 347dsa.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
354dsa.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 348dsa.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
355dsa.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 349dsa.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h dsa.c
356dsa.o: ../include/openssl/x509v3.h apps.h dsa.c
357dsaparam.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 350dsaparam.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
358dsaparam.o: ../include/openssl/bn.h ../include/openssl/buffer.h 351dsaparam.o: ../include/openssl/bn.h ../include/openssl/buffer.h
359dsaparam.o: ../include/openssl/conf.h ../include/openssl/crypto.h 352dsaparam.o: ../include/openssl/conf.h ../include/openssl/crypto.h
@@ -361,15 +354,14 @@ dsaparam.o: ../include/openssl/dh.h ../include/openssl/dsa.h
361dsaparam.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 354dsaparam.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
362dsaparam.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 355dsaparam.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
363dsaparam.o: ../include/openssl/engine.h ../include/openssl/err.h 356dsaparam.o: ../include/openssl/engine.h ../include/openssl/err.h
364dsaparam.o: ../include/openssl/evp.h ../include/openssl/fips.h 357dsaparam.o: ../include/openssl/evp.h ../include/openssl/lhash.h
365dsaparam.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 358dsaparam.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
366dsaparam.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 359dsaparam.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
367dsaparam.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 360dsaparam.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
368dsaparam.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 361dsaparam.o: ../include/openssl/pem.h ../include/openssl/pem2.h
369dsaparam.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 362dsaparam.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
370dsaparam.o: ../include/openssl/rand.h ../include/openssl/rsa.h 363dsaparam.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
371dsaparam.o: ../include/openssl/safestack.h ../include/openssl/sha.h 364dsaparam.o: ../include/openssl/sha.h ../include/openssl/stack.h
372dsaparam.o: ../include/openssl/stack.h ../include/openssl/store.h
373dsaparam.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 365dsaparam.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
374dsaparam.o: ../include/openssl/ui.h ../include/openssl/x509.h 366dsaparam.o: ../include/openssl/ui.h ../include/openssl/x509.h
375dsaparam.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h 367dsaparam.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
@@ -380,40 +372,38 @@ ec.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
380ec.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 372ec.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
381ec.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 373ec.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
382ec.o: ../include/openssl/err.h ../include/openssl/evp.h 374ec.o: ../include/openssl/err.h ../include/openssl/evp.h
383ec.o: ../include/openssl/fips.h ../include/openssl/lhash.h 375ec.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
384ec.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 376ec.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
385ec.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 377ec.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
386ec.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 378ec.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
387ec.o: ../include/openssl/pem.h ../include/openssl/pem2.h 379ec.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
388ec.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 380ec.o: ../include/openssl/safestack.h ../include/openssl/sha.h
389ec.o: ../include/openssl/sha.h ../include/openssl/stack.h 381ec.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
390ec.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 382ec.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
391ec.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 383ec.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h ec.c
392ec.o: ../include/openssl/x509v3.h apps.h ec.c
393ecparam.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 384ecparam.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
394ecparam.o: ../include/openssl/bn.h ../include/openssl/buffer.h 385ecparam.o: ../include/openssl/bn.h ../include/openssl/buffer.h
395ecparam.o: ../include/openssl/conf.h ../include/openssl/crypto.h 386ecparam.o: ../include/openssl/conf.h ../include/openssl/crypto.h
396ecparam.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 387ecparam.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
397ecparam.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 388ecparam.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
398ecparam.o: ../include/openssl/engine.h ../include/openssl/err.h 389ecparam.o: ../include/openssl/engine.h ../include/openssl/err.h
399ecparam.o: ../include/openssl/evp.h ../include/openssl/fips.h 390ecparam.o: ../include/openssl/evp.h ../include/openssl/lhash.h
400ecparam.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 391ecparam.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
401ecparam.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 392ecparam.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
402ecparam.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 393ecparam.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
403ecparam.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 394ecparam.o: ../include/openssl/pem.h ../include/openssl/pem2.h
404ecparam.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 395ecparam.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
405ecparam.o: ../include/openssl/safestack.h ../include/openssl/sha.h 396ecparam.o: ../include/openssl/sha.h ../include/openssl/stack.h
406ecparam.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 397ecparam.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
407ecparam.o: ../include/openssl/txt_db.h ../include/openssl/x509.h 398ecparam.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
408ecparam.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h 399ecparam.o: ../include/openssl/x509v3.h apps.h ecparam.c
409ecparam.o: ecparam.c
410enc.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 400enc.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
411enc.o: ../include/openssl/buffer.h ../include/openssl/conf.h 401enc.o: ../include/openssl/buffer.h ../include/openssl/comp.h
412enc.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 402enc.o: ../include/openssl/conf.h ../include/openssl/crypto.h
413enc.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 403enc.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
414enc.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 404enc.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
415enc.o: ../include/openssl/err.h ../include/openssl/evp.h 405enc.o: ../include/openssl/engine.h ../include/openssl/err.h
416enc.o: ../include/openssl/fips.h ../include/openssl/lhash.h 406enc.o: ../include/openssl/evp.h ../include/openssl/lhash.h
417enc.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 407enc.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
418enc.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 408enc.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
419enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 409enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
@@ -424,49 +414,47 @@ enc.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
424enc.o: ../include/openssl/txt_db.h ../include/openssl/x509.h 414enc.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
425enc.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h enc.c 415enc.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h enc.c
426engine.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 416engine.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
427engine.o: ../include/openssl/bn.h ../include/openssl/buffer.h 417engine.o: ../include/openssl/buffer.h ../include/openssl/comp.h
428engine.o: ../include/openssl/comp.h ../include/openssl/conf.h 418engine.o: ../include/openssl/conf.h ../include/openssl/crypto.h
429engine.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h 419engine.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
430engine.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 420engine.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
431engine.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 421engine.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
432engine.o: ../include/openssl/engine.h ../include/openssl/err.h 422engine.o: ../include/openssl/err.h ../include/openssl/evp.h
433engine.o: ../include/openssl/evp.h ../include/openssl/fips.h
434engine.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 423engine.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
435engine.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 424engine.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
436engine.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 425engine.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
437engine.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 426engine.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
438engine.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 427engine.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
439engine.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 428engine.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
440engine.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 429engine.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
441engine.o: ../include/openssl/safestack.h ../include/openssl/sha.h 430engine.o: ../include/openssl/sha.h ../include/openssl/ssl.h
442engine.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 431engine.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
443engine.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 432engine.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
444engine.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 433engine.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
445engine.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h 434engine.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
446engine.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 435engine.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
447engine.o: ../include/openssl/x509v3.h apps.h engine.c 436engine.o: engine.c
448errstr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 437errstr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
449errstr.o: ../include/openssl/bn.h ../include/openssl/buffer.h 438errstr.o: ../include/openssl/buffer.h ../include/openssl/comp.h
450errstr.o: ../include/openssl/comp.h ../include/openssl/conf.h 439errstr.o: ../include/openssl/conf.h ../include/openssl/crypto.h
451errstr.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h 440errstr.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
452errstr.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 441errstr.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
453errstr.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 442errstr.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
454errstr.o: ../include/openssl/engine.h ../include/openssl/err.h 443errstr.o: ../include/openssl/err.h ../include/openssl/evp.h
455errstr.o: ../include/openssl/evp.h ../include/openssl/fips.h
456errstr.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 444errstr.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
457errstr.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 445errstr.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
458errstr.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 446errstr.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
459errstr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 447errstr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
460errstr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 448errstr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
461errstr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 449errstr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
462errstr.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 450errstr.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
463errstr.o: ../include/openssl/safestack.h ../include/openssl/sha.h 451errstr.o: ../include/openssl/sha.h ../include/openssl/ssl.h
464errstr.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 452errstr.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
465errstr.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 453errstr.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
466errstr.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 454errstr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
467errstr.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h 455errstr.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
468errstr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 456errstr.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
469errstr.o: ../include/openssl/x509v3.h apps.h errstr.c 457errstr.o: errstr.c
470gendh.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 458gendh.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
471gendh.o: ../include/openssl/bn.h ../include/openssl/buffer.h 459gendh.o: ../include/openssl/bn.h ../include/openssl/buffer.h
472gendh.o: ../include/openssl/conf.h ../include/openssl/crypto.h 460gendh.o: ../include/openssl/conf.h ../include/openssl/crypto.h
@@ -474,15 +462,14 @@ gendh.o: ../include/openssl/dh.h ../include/openssl/dsa.h
474gendh.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 462gendh.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
475gendh.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 463gendh.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
476gendh.o: ../include/openssl/engine.h ../include/openssl/err.h 464gendh.o: ../include/openssl/engine.h ../include/openssl/err.h
477gendh.o: ../include/openssl/evp.h ../include/openssl/fips.h 465gendh.o: ../include/openssl/evp.h ../include/openssl/lhash.h
478gendh.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 466gendh.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
479gendh.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 467gendh.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
480gendh.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 468gendh.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
481gendh.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 469gendh.o: ../include/openssl/pem.h ../include/openssl/pem2.h
482gendh.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 470gendh.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
483gendh.o: ../include/openssl/rand.h ../include/openssl/rsa.h 471gendh.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
484gendh.o: ../include/openssl/safestack.h ../include/openssl/sha.h 472gendh.o: ../include/openssl/sha.h ../include/openssl/stack.h
485gendh.o: ../include/openssl/stack.h ../include/openssl/store.h
486gendh.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 473gendh.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
487gendh.o: ../include/openssl/ui.h ../include/openssl/x509.h 474gendh.o: ../include/openssl/ui.h ../include/openssl/x509.h
488gendh.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h 475gendh.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
@@ -494,16 +481,32 @@ gendsa.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
494gendsa.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 481gendsa.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
495gendsa.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 482gendsa.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
496gendsa.o: ../include/openssl/err.h ../include/openssl/evp.h 483gendsa.o: ../include/openssl/err.h ../include/openssl/evp.h
497gendsa.o: ../include/openssl/fips.h ../include/openssl/lhash.h 484gendsa.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
498gendsa.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 485gendsa.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
499gendsa.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 486gendsa.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
500gendsa.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 487gendsa.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
501gendsa.o: ../include/openssl/pem.h ../include/openssl/pem2.h 488gendsa.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
502gendsa.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 489gendsa.o: ../include/openssl/safestack.h ../include/openssl/sha.h
503gendsa.o: ../include/openssl/sha.h ../include/openssl/stack.h 490gendsa.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
504gendsa.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 491gendsa.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
505gendsa.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 492gendsa.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
506gendsa.o: ../include/openssl/x509v3.h apps.h gendsa.c 493gendsa.o: gendsa.c
494genpkey.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
495genpkey.o: ../include/openssl/buffer.h ../include/openssl/conf.h
496genpkey.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
497genpkey.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
498genpkey.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
499genpkey.o: ../include/openssl/err.h ../include/openssl/evp.h
500genpkey.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
501genpkey.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
502genpkey.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
503genpkey.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
504genpkey.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
505genpkey.o: ../include/openssl/safestack.h ../include/openssl/sha.h
506genpkey.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
507genpkey.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
508genpkey.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
509genpkey.o: genpkey.c
507genrsa.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 510genrsa.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
508genrsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h 511genrsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h
509genrsa.o: ../include/openssl/conf.h ../include/openssl/crypto.h 512genrsa.o: ../include/openssl/conf.h ../include/openssl/crypto.h
@@ -511,15 +514,14 @@ genrsa.o: ../include/openssl/dh.h ../include/openssl/dsa.h
511genrsa.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 514genrsa.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
512genrsa.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 515genrsa.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
513genrsa.o: ../include/openssl/engine.h ../include/openssl/err.h 516genrsa.o: ../include/openssl/engine.h ../include/openssl/err.h
514genrsa.o: ../include/openssl/evp.h ../include/openssl/fips.h 517genrsa.o: ../include/openssl/evp.h ../include/openssl/lhash.h
515genrsa.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 518genrsa.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
516genrsa.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 519genrsa.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
517genrsa.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 520genrsa.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
518genrsa.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 521genrsa.o: ../include/openssl/pem.h ../include/openssl/pem2.h
519genrsa.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 522genrsa.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
520genrsa.o: ../include/openssl/rand.h ../include/openssl/rsa.h 523genrsa.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
521genrsa.o: ../include/openssl/safestack.h ../include/openssl/sha.h 524genrsa.o: ../include/openssl/sha.h ../include/openssl/stack.h
522genrsa.o: ../include/openssl/stack.h ../include/openssl/store.h
523genrsa.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 525genrsa.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
524genrsa.o: ../include/openssl/ui.h ../include/openssl/x509.h 526genrsa.o: ../include/openssl/ui.h ../include/openssl/x509.h
525genrsa.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h 527genrsa.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
@@ -530,16 +532,15 @@ nseq.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
530nseq.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 532nseq.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
531nseq.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 533nseq.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
532nseq.o: ../include/openssl/err.h ../include/openssl/evp.h 534nseq.o: ../include/openssl/err.h ../include/openssl/evp.h
533nseq.o: ../include/openssl/fips.h ../include/openssl/lhash.h 535nseq.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
534nseq.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 536nseq.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
535nseq.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 537nseq.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
536nseq.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 538nseq.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
537nseq.o: ../include/openssl/pem.h ../include/openssl/pem2.h 539nseq.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
538nseq.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 540nseq.o: ../include/openssl/safestack.h ../include/openssl/sha.h
539nseq.o: ../include/openssl/sha.h ../include/openssl/stack.h 541nseq.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
540nseq.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 542nseq.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
541nseq.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 543nseq.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h nseq.c
542nseq.o: ../include/openssl/x509v3.h apps.h nseq.c
543ocsp.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 544ocsp.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
544ocsp.o: ../include/openssl/bn.h ../include/openssl/buffer.h 545ocsp.o: ../include/openssl/bn.h ../include/openssl/buffer.h
545ocsp.o: ../include/openssl/comp.h ../include/openssl/conf.h 546ocsp.o: ../include/openssl/comp.h ../include/openssl/conf.h
@@ -547,14 +548,13 @@ ocsp.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
547ocsp.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 548ocsp.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
548ocsp.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 549ocsp.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
549ocsp.o: ../include/openssl/engine.h ../include/openssl/err.h 550ocsp.o: ../include/openssl/engine.h ../include/openssl/err.h
550ocsp.o: ../include/openssl/evp.h ../include/openssl/fips.h 551ocsp.o: ../include/openssl/evp.h ../include/openssl/hmac.h
551ocsp.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 552ocsp.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
552ocsp.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 553ocsp.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
553ocsp.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 554ocsp.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
554ocsp.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 555ocsp.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
555ocsp.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 556ocsp.o: ../include/openssl/pem.h ../include/openssl/pem2.h
556ocsp.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 557ocsp.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
557ocsp.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
558ocsp.o: ../include/openssl/safestack.h ../include/openssl/sha.h 558ocsp.o: ../include/openssl/safestack.h ../include/openssl/sha.h
559ocsp.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 559ocsp.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
560ocsp.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 560ocsp.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
@@ -563,27 +563,26 @@ ocsp.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
563ocsp.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 563ocsp.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
564ocsp.o: ../include/openssl/x509v3.h apps.h ocsp.c 564ocsp.o: ../include/openssl/x509v3.h apps.h ocsp.c
565openssl.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 565openssl.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
566openssl.o: ../include/openssl/bn.h ../include/openssl/buffer.h 566openssl.o: ../include/openssl/buffer.h ../include/openssl/comp.h
567openssl.o: ../include/openssl/comp.h ../include/openssl/conf.h 567openssl.o: ../include/openssl/conf.h ../include/openssl/crypto.h
568openssl.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h 568openssl.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
569openssl.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 569openssl.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
570openssl.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 570openssl.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
571openssl.o: ../include/openssl/engine.h ../include/openssl/err.h 571openssl.o: ../include/openssl/err.h ../include/openssl/evp.h
572openssl.o: ../include/openssl/evp.h ../include/openssl/fips.h
573openssl.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 572openssl.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
574openssl.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 573openssl.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
575openssl.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 574openssl.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
576openssl.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 575openssl.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
577openssl.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 576openssl.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
578openssl.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 577openssl.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
579openssl.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 578openssl.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
580openssl.o: ../include/openssl/safestack.h ../include/openssl/sha.h 579openssl.o: ../include/openssl/sha.h ../include/openssl/ssl.h
581openssl.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 580openssl.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
582openssl.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 581openssl.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
583openssl.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 582openssl.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
584openssl.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h 583openssl.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
585openssl.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 584openssl.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
586openssl.o: ../include/openssl/x509v3.h apps.h openssl.c progs.h s_apps.h 585openssl.o: openssl.c progs.h s_apps.h
587passwd.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 586passwd.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
588passwd.o: ../include/openssl/buffer.h ../include/openssl/conf.h 587passwd.o: ../include/openssl/buffer.h ../include/openssl/conf.h
589passwd.o: ../include/openssl/crypto.h ../include/openssl/des.h 588passwd.o: ../include/openssl/crypto.h ../include/openssl/des.h
@@ -591,97 +590,142 @@ passwd.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h
591passwd.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 590passwd.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
592passwd.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 591passwd.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
593passwd.o: ../include/openssl/err.h ../include/openssl/evp.h 592passwd.o: ../include/openssl/err.h ../include/openssl/evp.h
594passwd.o: ../include/openssl/fips.h ../include/openssl/lhash.h 593passwd.o: ../include/openssl/lhash.h ../include/openssl/md5.h
595passwd.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h 594passwd.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
596passwd.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 595passwd.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
597passwd.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 596passwd.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
598passwd.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h 597passwd.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
599passwd.o: ../include/openssl/rand.h ../include/openssl/safestack.h 598passwd.o: ../include/openssl/safestack.h ../include/openssl/sha.h
600passwd.o: ../include/openssl/sha.h ../include/openssl/stack.h 599passwd.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
601passwd.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 600passwd.o: ../include/openssl/txt_db.h ../include/openssl/ui.h
602passwd.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h 601passwd.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h
603passwd.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 602passwd.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
604passwd.o: ../include/openssl/x509v3.h apps.h passwd.c 603passwd.o: passwd.c
605pkcs12.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 604pkcs12.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
606pkcs12.o: ../include/openssl/buffer.h ../include/openssl/conf.h 605pkcs12.o: ../include/openssl/buffer.h ../include/openssl/conf.h
607pkcs12.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 606pkcs12.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
608pkcs12.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 607pkcs12.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
609pkcs12.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 608pkcs12.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
610pkcs12.o: ../include/openssl/err.h ../include/openssl/evp.h 609pkcs12.o: ../include/openssl/err.h ../include/openssl/evp.h
611pkcs12.o: ../include/openssl/fips.h ../include/openssl/lhash.h 610pkcs12.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
612pkcs12.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 611pkcs12.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
613pkcs12.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 612pkcs12.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
614pkcs12.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 613pkcs12.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
615pkcs12.o: ../include/openssl/pem.h ../include/openssl/pem2.h 614pkcs12.o: ../include/openssl/pem2.h ../include/openssl/pkcs12.h
616pkcs12.o: ../include/openssl/pkcs12.h ../include/openssl/pkcs7.h 615pkcs12.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
617pkcs12.o: ../include/openssl/safestack.h ../include/openssl/sha.h 616pkcs12.o: ../include/openssl/sha.h ../include/openssl/stack.h
618pkcs12.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 617pkcs12.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
619pkcs12.o: ../include/openssl/txt_db.h ../include/openssl/x509.h 618pkcs12.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
620pkcs12.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h 619pkcs12.o: ../include/openssl/x509v3.h apps.h pkcs12.c
621pkcs12.o: pkcs12.c
622pkcs7.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 620pkcs7.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
623pkcs7.o: ../include/openssl/buffer.h ../include/openssl/conf.h 621pkcs7.o: ../include/openssl/buffer.h ../include/openssl/conf.h
624pkcs7.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 622pkcs7.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
625pkcs7.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 623pkcs7.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
626pkcs7.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 624pkcs7.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
627pkcs7.o: ../include/openssl/err.h ../include/openssl/evp.h 625pkcs7.o: ../include/openssl/err.h ../include/openssl/evp.h
628pkcs7.o: ../include/openssl/fips.h ../include/openssl/lhash.h 626pkcs7.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
629pkcs7.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 627pkcs7.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
630pkcs7.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 628pkcs7.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
631pkcs7.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 629pkcs7.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
632pkcs7.o: ../include/openssl/pem.h ../include/openssl/pem2.h 630pkcs7.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
633pkcs7.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 631pkcs7.o: ../include/openssl/safestack.h ../include/openssl/sha.h
634pkcs7.o: ../include/openssl/sha.h ../include/openssl/stack.h 632pkcs7.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
635pkcs7.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 633pkcs7.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
636pkcs7.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 634pkcs7.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
637pkcs7.o: ../include/openssl/x509v3.h apps.h pkcs7.c 635pkcs7.o: pkcs7.c
638pkcs8.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 636pkcs8.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
639pkcs8.o: ../include/openssl/buffer.h ../include/openssl/conf.h 637pkcs8.o: ../include/openssl/buffer.h ../include/openssl/conf.h
640pkcs8.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 638pkcs8.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
641pkcs8.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 639pkcs8.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
642pkcs8.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 640pkcs8.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
643pkcs8.o: ../include/openssl/err.h ../include/openssl/evp.h 641pkcs8.o: ../include/openssl/err.h ../include/openssl/evp.h
644pkcs8.o: ../include/openssl/fips.h ../include/openssl/lhash.h 642pkcs8.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
645pkcs8.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 643pkcs8.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
646pkcs8.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 644pkcs8.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
647pkcs8.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 645pkcs8.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
648pkcs8.o: ../include/openssl/pem.h ../include/openssl/pem2.h 646pkcs8.o: ../include/openssl/pem2.h ../include/openssl/pkcs12.h
649pkcs8.o: ../include/openssl/pkcs12.h ../include/openssl/pkcs7.h 647pkcs8.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
650pkcs8.o: ../include/openssl/safestack.h ../include/openssl/sha.h 648pkcs8.o: ../include/openssl/sha.h ../include/openssl/stack.h
651pkcs8.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 649pkcs8.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
652pkcs8.o: ../include/openssl/txt_db.h ../include/openssl/x509.h 650pkcs8.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
653pkcs8.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h 651pkcs8.o: ../include/openssl/x509v3.h apps.h pkcs8.c
654pkcs8.o: pkcs8.c 652pkey.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
653pkey.o: ../include/openssl/buffer.h ../include/openssl/conf.h
654pkey.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
655pkey.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
656pkey.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
657pkey.o: ../include/openssl/err.h ../include/openssl/evp.h
658pkey.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
659pkey.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
660pkey.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
661pkey.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
662pkey.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
663pkey.o: ../include/openssl/safestack.h ../include/openssl/sha.h
664pkey.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
665pkey.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
666pkey.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h pkey.c
667pkeyparam.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
668pkeyparam.o: ../include/openssl/buffer.h ../include/openssl/conf.h
669pkeyparam.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
670pkeyparam.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
671pkeyparam.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
672pkeyparam.o: ../include/openssl/err.h ../include/openssl/evp.h
673pkeyparam.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
674pkeyparam.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
675pkeyparam.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
676pkeyparam.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
677pkeyparam.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
678pkeyparam.o: ../include/openssl/safestack.h ../include/openssl/sha.h
679pkeyparam.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
680pkeyparam.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
681pkeyparam.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
682pkeyparam.o: pkeyparam.c
683pkeyutl.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
684pkeyutl.o: ../include/openssl/buffer.h ../include/openssl/conf.h
685pkeyutl.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
686pkeyutl.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
687pkeyutl.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
688pkeyutl.o: ../include/openssl/err.h ../include/openssl/evp.h
689pkeyutl.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
690pkeyutl.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
691pkeyutl.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
692pkeyutl.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
693pkeyutl.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
694pkeyutl.o: ../include/openssl/safestack.h ../include/openssl/sha.h
695pkeyutl.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
696pkeyutl.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
697pkeyutl.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
698pkeyutl.o: pkeyutl.c
655prime.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 699prime.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
656prime.o: ../include/openssl/bn.h ../include/openssl/buffer.h 700prime.o: ../include/openssl/bn.h ../include/openssl/buffer.h
657prime.o: ../include/openssl/conf.h ../include/openssl/crypto.h 701prime.o: ../include/openssl/conf.h ../include/openssl/crypto.h
658prime.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 702prime.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
659prime.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 703prime.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
660prime.o: ../include/openssl/engine.h ../include/openssl/evp.h 704prime.o: ../include/openssl/engine.h ../include/openssl/evp.h
661prime.o: ../include/openssl/fips.h ../include/openssl/lhash.h 705prime.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
662prime.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 706prime.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
663prime.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 707prime.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
664prime.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 708prime.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
665prime.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 709prime.o: ../include/openssl/safestack.h ../include/openssl/sha.h
666prime.o: ../include/openssl/sha.h ../include/openssl/stack.h 710prime.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
667prime.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 711prime.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
668prime.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 712prime.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
669prime.o: ../include/openssl/x509v3.h apps.h prime.c 713prime.o: prime.c
670rand.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 714rand.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
671rand.o: ../include/openssl/buffer.h ../include/openssl/conf.h 715rand.o: ../include/openssl/buffer.h ../include/openssl/conf.h
672rand.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 716rand.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
673rand.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 717rand.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
674rand.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 718rand.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
675rand.o: ../include/openssl/err.h ../include/openssl/evp.h 719rand.o: ../include/openssl/err.h ../include/openssl/evp.h
676rand.o: ../include/openssl/fips.h ../include/openssl/lhash.h 720rand.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
677rand.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 721rand.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
678rand.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 722rand.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
679rand.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 723rand.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
680rand.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h 724rand.o: ../include/openssl/rand.h ../include/openssl/safestack.h
681rand.o: ../include/openssl/safestack.h ../include/openssl/sha.h 725rand.o: ../include/openssl/sha.h ../include/openssl/stack.h
682rand.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 726rand.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
683rand.o: ../include/openssl/txt_db.h ../include/openssl/x509.h 727rand.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
684rand.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h rand.c 728rand.o: ../include/openssl/x509v3.h apps.h rand.c
685req.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 729req.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
686req.o: ../include/openssl/bn.h ../include/openssl/buffer.h 730req.o: ../include/openssl/bn.h ../include/openssl/buffer.h
687req.o: ../include/openssl/conf.h ../include/openssl/crypto.h 731req.o: ../include/openssl/conf.h ../include/openssl/crypto.h
@@ -689,15 +733,14 @@ req.o: ../include/openssl/dh.h ../include/openssl/dsa.h
689req.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 733req.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
690req.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 734req.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
691req.o: ../include/openssl/engine.h ../include/openssl/err.h 735req.o: ../include/openssl/engine.h ../include/openssl/err.h
692req.o: ../include/openssl/evp.h ../include/openssl/fips.h 736req.o: ../include/openssl/evp.h ../include/openssl/lhash.h
693req.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 737req.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
694req.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 738req.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
695req.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 739req.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
696req.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 740req.o: ../include/openssl/pem.h ../include/openssl/pem2.h
697req.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 741req.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
698req.o: ../include/openssl/rand.h ../include/openssl/rsa.h 742req.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
699req.o: ../include/openssl/safestack.h ../include/openssl/sha.h 743req.o: ../include/openssl/sha.h ../include/openssl/stack.h
700req.o: ../include/openssl/stack.h ../include/openssl/store.h
701req.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 744req.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
702req.o: ../include/openssl/ui.h ../include/openssl/x509.h 745req.o: ../include/openssl/ui.h ../include/openssl/x509.h
703req.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h req.c 746req.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h req.c
@@ -707,49 +750,46 @@ rsa.o: ../include/openssl/conf.h ../include/openssl/crypto.h
707rsa.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 750rsa.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
708rsa.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 751rsa.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
709rsa.o: ../include/openssl/engine.h ../include/openssl/err.h 752rsa.o: ../include/openssl/engine.h ../include/openssl/err.h
710rsa.o: ../include/openssl/evp.h ../include/openssl/fips.h 753rsa.o: ../include/openssl/evp.h ../include/openssl/lhash.h
711rsa.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 754rsa.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
712rsa.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 755rsa.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
713rsa.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 756rsa.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
714rsa.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 757rsa.o: ../include/openssl/pem.h ../include/openssl/pem2.h
715rsa.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 758rsa.o: ../include/openssl/pkcs7.h ../include/openssl/rsa.h
716rsa.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 759rsa.o: ../include/openssl/safestack.h ../include/openssl/sha.h
717rsa.o: ../include/openssl/sha.h ../include/openssl/stack.h 760rsa.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
718rsa.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 761rsa.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
719rsa.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 762rsa.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h rsa.c
720rsa.o: ../include/openssl/x509v3.h apps.h rsa.c
721rsautl.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 763rsautl.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
722rsautl.o: ../include/openssl/buffer.h ../include/openssl/conf.h 764rsautl.o: ../include/openssl/buffer.h ../include/openssl/conf.h
723rsautl.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 765rsautl.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
724rsautl.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 766rsautl.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
725rsautl.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 767rsautl.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
726rsautl.o: ../include/openssl/err.h ../include/openssl/evp.h 768rsautl.o: ../include/openssl/err.h ../include/openssl/evp.h
727rsautl.o: ../include/openssl/fips.h ../include/openssl/lhash.h 769rsautl.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
728rsautl.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 770rsautl.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
729rsautl.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 771rsautl.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
730rsautl.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 772rsautl.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
731rsautl.o: ../include/openssl/pem.h ../include/openssl/pem2.h 773rsautl.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
732rsautl.o: ../include/openssl/pkcs7.h ../include/openssl/rsa.h 774rsautl.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
733rsautl.o: ../include/openssl/safestack.h ../include/openssl/sha.h 775rsautl.o: ../include/openssl/sha.h ../include/openssl/stack.h
734rsautl.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 776rsautl.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
735rsautl.o: ../include/openssl/txt_db.h ../include/openssl/x509.h 777rsautl.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
736rsautl.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h 778rsautl.o: ../include/openssl/x509v3.h apps.h rsautl.c
737rsautl.o: rsautl.c
738s_cb.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 779s_cb.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
739s_cb.o: ../include/openssl/bn.h ../include/openssl/buffer.h 780s_cb.o: ../include/openssl/buffer.h ../include/openssl/comp.h
740s_cb.o: ../include/openssl/comp.h ../include/openssl/conf.h 781s_cb.o: ../include/openssl/conf.h ../include/openssl/crypto.h
741s_cb.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h 782s_cb.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
742s_cb.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 783s_cb.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
743s_cb.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 784s_cb.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
744s_cb.o: ../include/openssl/engine.h ../include/openssl/err.h 785s_cb.o: ../include/openssl/err.h ../include/openssl/evp.h
745s_cb.o: ../include/openssl/evp.h ../include/openssl/fips.h
746s_cb.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 786s_cb.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
747s_cb.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 787s_cb.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
748s_cb.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 788s_cb.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
749s_cb.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 789s_cb.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
750s_cb.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 790s_cb.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
751s_cb.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 791s_cb.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
752s_cb.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 792s_cb.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
753s_cb.o: ../include/openssl/safestack.h ../include/openssl/sha.h 793s_cb.o: ../include/openssl/safestack.h ../include/openssl/sha.h
754s_cb.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 794s_cb.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
755s_cb.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 795s_cb.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
@@ -764,14 +804,13 @@ s_client.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
764s_client.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 804s_client.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
765s_client.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 805s_client.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
766s_client.o: ../include/openssl/engine.h ../include/openssl/err.h 806s_client.o: ../include/openssl/engine.h ../include/openssl/err.h
767s_client.o: ../include/openssl/evp.h ../include/openssl/fips.h 807s_client.o: ../include/openssl/evp.h ../include/openssl/hmac.h
768s_client.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 808s_client.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
769s_client.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 809s_client.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
770s_client.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 810s_client.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
771s_client.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 811s_client.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
772s_client.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 812s_client.o: ../include/openssl/pem.h ../include/openssl/pem2.h
773s_client.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 813s_client.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
774s_client.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
775s_client.o: ../include/openssl/rand.h ../include/openssl/safestack.h 814s_client.o: ../include/openssl/rand.h ../include/openssl/safestack.h
776s_client.o: ../include/openssl/sha.h ../include/openssl/ssl.h 815s_client.o: ../include/openssl/sha.h ../include/openssl/ssl.h
777s_client.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 816s_client.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
@@ -788,37 +827,35 @@ s_server.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h
788s_server.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 827s_server.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
789s_server.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 828s_server.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
790s_server.o: ../include/openssl/engine.h ../include/openssl/err.h 829s_server.o: ../include/openssl/engine.h ../include/openssl/err.h
791s_server.o: ../include/openssl/evp.h ../include/openssl/fips.h 830s_server.o: ../include/openssl/evp.h ../include/openssl/hmac.h
792s_server.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 831s_server.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
793s_server.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 832s_server.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
794s_server.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 833s_server.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
795s_server.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 834s_server.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
796s_server.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 835s_server.o: ../include/openssl/pem.h ../include/openssl/pem2.h
797s_server.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 836s_server.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
798s_server.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
799s_server.o: ../include/openssl/rand.h ../include/openssl/rsa.h 837s_server.o: ../include/openssl/rand.h ../include/openssl/rsa.h
800s_server.o: ../include/openssl/safestack.h ../include/openssl/sha.h 838s_server.o: ../include/openssl/safestack.h ../include/openssl/sha.h
801s_server.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 839s_server.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
802s_server.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 840s_server.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
803s_server.o: ../include/openssl/stack.h ../include/openssl/store.h 841s_server.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
804s_server.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 842s_server.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h
805s_server.o: ../include/openssl/txt_db.h ../include/openssl/ui.h 843s_server.o: ../include/openssl/ui.h ../include/openssl/x509.h
806s_server.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 844s_server.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
807s_server.o: ../include/openssl/x509v3.h apps.h s_apps.h s_server.c timeouts.h 845s_server.o: s_apps.h s_server.c timeouts.h
808s_socket.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 846s_socket.o: ../e_os.h ../e_os2.h ../include/openssl/asn1.h
809s_socket.o: ../include/openssl/bn.h ../include/openssl/buffer.h 847s_socket.o: ../include/openssl/bio.h ../include/openssl/buffer.h
810s_socket.o: ../include/openssl/comp.h ../include/openssl/conf.h 848s_socket.o: ../include/openssl/comp.h ../include/openssl/conf.h
811s_socket.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h 849s_socket.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
812s_socket.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 850s_socket.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
813s_socket.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 851s_socket.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
814s_socket.o: ../include/openssl/engine.h ../include/openssl/evp.h 852s_socket.o: ../include/openssl/engine.h ../include/openssl/evp.h
815s_socket.o: ../include/openssl/fips.h ../include/openssl/hmac.h 853s_socket.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
816s_socket.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 854s_socket.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
817s_socket.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 855s_socket.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
818s_socket.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 856s_socket.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
819s_socket.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 857s_socket.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
820s_socket.o: ../include/openssl/pem.h ../include/openssl/pem2.h 858s_socket.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
821s_socket.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h
822s_socket.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h 859s_socket.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
823s_socket.o: ../include/openssl/sha.h ../include/openssl/ssl.h 860s_socket.o: ../include/openssl/sha.h ../include/openssl/ssl.h
824s_socket.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 861s_socket.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
@@ -828,88 +865,87 @@ s_socket.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
828s_socket.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h 865s_socket.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
829s_socket.o: s_apps.h s_socket.c 866s_socket.o: s_apps.h s_socket.c
830s_time.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 867s_time.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
831s_time.o: ../include/openssl/bn.h ../include/openssl/buffer.h 868s_time.o: ../include/openssl/buffer.h ../include/openssl/comp.h
832s_time.o: ../include/openssl/comp.h ../include/openssl/conf.h 869s_time.o: ../include/openssl/conf.h ../include/openssl/crypto.h
833s_time.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h 870s_time.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
834s_time.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 871s_time.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
835s_time.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 872s_time.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
836s_time.o: ../include/openssl/engine.h ../include/openssl/err.h 873s_time.o: ../include/openssl/err.h ../include/openssl/evp.h
837s_time.o: ../include/openssl/evp.h ../include/openssl/fips.h
838s_time.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 874s_time.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
839s_time.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 875s_time.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
840s_time.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 876s_time.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
841s_time.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 877s_time.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
842s_time.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 878s_time.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
843s_time.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 879s_time.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
844s_time.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 880s_time.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
845s_time.o: ../include/openssl/safestack.h ../include/openssl/sha.h 881s_time.o: ../include/openssl/sha.h ../include/openssl/ssl.h
846s_time.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 882s_time.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
847s_time.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 883s_time.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
848s_time.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 884s_time.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
849s_time.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h 885s_time.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
850s_time.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 886s_time.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
851s_time.o: ../include/openssl/x509v3.h apps.h s_apps.h s_time.c 887s_time.o: s_apps.h s_time.c
852sess_id.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 888sess_id.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
853sess_id.o: ../include/openssl/bn.h ../include/openssl/buffer.h 889sess_id.o: ../include/openssl/buffer.h ../include/openssl/comp.h
854sess_id.o: ../include/openssl/comp.h ../include/openssl/conf.h 890sess_id.o: ../include/openssl/conf.h ../include/openssl/crypto.h
855sess_id.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h 891sess_id.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
856sess_id.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 892sess_id.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
857sess_id.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 893sess_id.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
858sess_id.o: ../include/openssl/engine.h ../include/openssl/err.h 894sess_id.o: ../include/openssl/err.h ../include/openssl/evp.h
859sess_id.o: ../include/openssl/evp.h ../include/openssl/fips.h
860sess_id.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 895sess_id.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
861sess_id.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 896sess_id.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
862sess_id.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 897sess_id.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
863sess_id.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 898sess_id.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
864sess_id.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 899sess_id.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
865sess_id.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 900sess_id.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
866sess_id.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 901sess_id.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h
867sess_id.o: ../include/openssl/safestack.h ../include/openssl/sha.h 902sess_id.o: ../include/openssl/sha.h ../include/openssl/ssl.h
868sess_id.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 903sess_id.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
869sess_id.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 904sess_id.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
870sess_id.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 905sess_id.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
871sess_id.o: ../include/openssl/tls1.h ../include/openssl/txt_db.h 906sess_id.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
872sess_id.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 907sess_id.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
873sess_id.o: ../include/openssl/x509v3.h apps.h sess_id.c 908sess_id.o: sess_id.c
874smime.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 909smime.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
875smime.o: ../include/openssl/buffer.h ../include/openssl/conf.h 910smime.o: ../include/openssl/buffer.h ../include/openssl/conf.h
876smime.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 911smime.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
877smime.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 912smime.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
878smime.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 913smime.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
879smime.o: ../include/openssl/err.h ../include/openssl/evp.h 914smime.o: ../include/openssl/err.h ../include/openssl/evp.h
880smime.o: ../include/openssl/fips.h ../include/openssl/lhash.h 915smime.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
881smime.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 916smime.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
882smime.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 917smime.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
883smime.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 918smime.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
884smime.o: ../include/openssl/pem.h ../include/openssl/pem2.h 919smime.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
885smime.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 920smime.o: ../include/openssl/safestack.h ../include/openssl/sha.h
886smime.o: ../include/openssl/sha.h ../include/openssl/stack.h 921smime.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
887smime.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 922smime.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
888smime.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 923smime.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
889smime.o: ../include/openssl/x509v3.h apps.h smime.c 924smime.o: smime.c
890speed.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h 925speed.o: ../e_os.h ../include/openssl/aes.h ../include/openssl/asn1.h
891speed.o: ../include/openssl/bio.h ../include/openssl/blowfish.h 926speed.o: ../include/openssl/bio.h ../include/openssl/blowfish.h
892speed.o: ../include/openssl/bn.h ../include/openssl/buffer.h 927speed.o: ../include/openssl/bn.h ../include/openssl/buffer.h
893speed.o: ../include/openssl/cast.h ../include/openssl/conf.h 928speed.o: ../include/openssl/camellia.h ../include/openssl/cast.h
894speed.o: ../include/openssl/crypto.h ../include/openssl/des.h 929speed.o: ../include/openssl/conf.h ../include/openssl/crypto.h
895speed.o: ../include/openssl/des_old.h ../include/openssl/dsa.h 930speed.o: ../include/openssl/des.h ../include/openssl/des_old.h
896speed.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 931speed.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
897speed.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 932speed.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
898speed.o: ../include/openssl/engine.h ../include/openssl/err.h 933speed.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
899speed.o: ../include/openssl/evp.h ../include/openssl/fips.h 934speed.o: ../include/openssl/err.h ../include/openssl/evp.h
900speed.o: ../include/openssl/hmac.h ../include/openssl/idea.h 935speed.o: ../include/openssl/hmac.h ../include/openssl/idea.h
901speed.o: ../include/openssl/lhash.h ../include/openssl/md2.h 936speed.o: ../include/openssl/lhash.h ../include/openssl/md4.h
902speed.o: ../include/openssl/md4.h ../include/openssl/md5.h 937speed.o: ../include/openssl/md5.h ../include/openssl/mdc2.h
903speed.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 938speed.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
904speed.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 939speed.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
905speed.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 940speed.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
906speed.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h 941speed.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
907speed.o: ../include/openssl/rc2.h ../include/openssl/rc4.h 942speed.o: ../include/openssl/rc2.h ../include/openssl/rc4.h
908speed.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h 943speed.o: ../include/openssl/ripemd.h ../include/openssl/rsa.h
909speed.o: ../include/openssl/safestack.h ../include/openssl/sha.h 944speed.o: ../include/openssl/safestack.h ../include/openssl/seed.h
910speed.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 945speed.o: ../include/openssl/sha.h ../include/openssl/stack.h
911speed.o: ../include/openssl/txt_db.h ../include/openssl/ui.h 946speed.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
912speed.o: ../include/openssl/ui_compat.h ../include/openssl/x509.h 947speed.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
948speed.o: ../include/openssl/whrlpool.h ../include/openssl/x509.h
913speed.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h 949speed.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
914speed.o: speed.c testdsa.h testrsa.h 950speed.o: speed.c testdsa.h testrsa.h
915spkac.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 951spkac.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
@@ -918,32 +954,50 @@ spkac.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
918spkac.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 954spkac.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
919spkac.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 955spkac.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
920spkac.o: ../include/openssl/err.h ../include/openssl/evp.h 956spkac.o: ../include/openssl/err.h ../include/openssl/evp.h
921spkac.o: ../include/openssl/fips.h ../include/openssl/lhash.h 957spkac.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
922spkac.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 958spkac.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
923spkac.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 959spkac.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
924spkac.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 960spkac.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
925spkac.o: ../include/openssl/pem.h ../include/openssl/pem2.h 961spkac.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
926spkac.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 962spkac.o: ../include/openssl/safestack.h ../include/openssl/sha.h
927spkac.o: ../include/openssl/sha.h ../include/openssl/stack.h 963spkac.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
928spkac.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 964spkac.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
929spkac.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 965spkac.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
930spkac.o: ../include/openssl/x509v3.h apps.h spkac.c 966spkac.o: spkac.c
967ts.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
968ts.o: ../include/openssl/bn.h ../include/openssl/buffer.h
969ts.o: ../include/openssl/conf.h ../include/openssl/crypto.h
970ts.o: ../include/openssl/dh.h ../include/openssl/dsa.h
971ts.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
972ts.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
973ts.o: ../include/openssl/engine.h ../include/openssl/err.h
974ts.o: ../include/openssl/evp.h ../include/openssl/lhash.h
975ts.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
976ts.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h
977ts.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
978ts.o: ../include/openssl/pem.h ../include/openssl/pem2.h
979ts.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
980ts.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
981ts.o: ../include/openssl/sha.h ../include/openssl/stack.h
982ts.o: ../include/openssl/symhacks.h ../include/openssl/ts.h
983ts.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
984ts.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h ts.c
931verify.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 985verify.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
932verify.o: ../include/openssl/buffer.h ../include/openssl/conf.h 986verify.o: ../include/openssl/buffer.h ../include/openssl/conf.h
933verify.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 987verify.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
934verify.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 988verify.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
935verify.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 989verify.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
936verify.o: ../include/openssl/err.h ../include/openssl/evp.h 990verify.o: ../include/openssl/err.h ../include/openssl/evp.h
937verify.o: ../include/openssl/fips.h ../include/openssl/lhash.h 991verify.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
938verify.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 992verify.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
939verify.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 993verify.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
940verify.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 994verify.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
941verify.o: ../include/openssl/pem.h ../include/openssl/pem2.h 995verify.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
942verify.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 996verify.o: ../include/openssl/safestack.h ../include/openssl/sha.h
943verify.o: ../include/openssl/sha.h ../include/openssl/stack.h 997verify.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
944verify.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h 998verify.o: ../include/openssl/txt_db.h ../include/openssl/x509.h
945verify.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 999verify.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h
946verify.o: ../include/openssl/x509v3.h apps.h verify.c 1000verify.o: verify.c
947version.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 1001version.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
948version.o: ../include/openssl/blowfish.h ../include/openssl/bn.h 1002version.o: ../include/openssl/blowfish.h ../include/openssl/bn.h
949version.o: ../include/openssl/buffer.h ../include/openssl/conf.h 1003version.o: ../include/openssl/buffer.h ../include/openssl/conf.h
@@ -951,9 +1005,8 @@ version.o: ../include/openssl/crypto.h ../include/openssl/des.h
951version.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h 1005version.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h
952version.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 1006version.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
953version.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 1007version.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
954version.o: ../include/openssl/evp.h ../include/openssl/fips.h 1008version.o: ../include/openssl/evp.h ../include/openssl/idea.h
955version.o: ../include/openssl/idea.h ../include/openssl/lhash.h 1009version.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
956version.o: ../include/openssl/md2.h ../include/openssl/obj_mac.h
957version.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 1010version.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
958version.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 1011version.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
959version.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h 1012version.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
@@ -970,13 +1023,13 @@ x509.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
970x509.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 1023x509.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
971x509.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 1024x509.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
972x509.o: ../include/openssl/err.h ../include/openssl/evp.h 1025x509.o: ../include/openssl/err.h ../include/openssl/evp.h
973x509.o: ../include/openssl/fips.h ../include/openssl/lhash.h 1026x509.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
974x509.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 1027x509.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
975x509.o: ../include/openssl/ocsp.h ../include/openssl/opensslconf.h 1028x509.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
976x509.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 1029x509.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
977x509.o: ../include/openssl/pem.h ../include/openssl/pem2.h 1030x509.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
978x509.o: ../include/openssl/pkcs7.h ../include/openssl/rsa.h 1031x509.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
979x509.o: ../include/openssl/safestack.h ../include/openssl/sha.h 1032x509.o: ../include/openssl/sha.h ../include/openssl/stack.h
980x509.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 1033x509.o: ../include/openssl/symhacks.h ../include/openssl/txt_db.h
981x509.o: ../include/openssl/txt_db.h ../include/openssl/x509.h 1034x509.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
982x509.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h apps.h x509.c 1035x509.o: ../include/openssl/x509v3.h apps.h x509.c
diff --git a/src/lib/libssl/src/apps/apps.c b/src/lib/libssl/src/apps/apps.c
index 498722a5a2..acc50df04e 100644
--- a/src/lib/libssl/src/apps/apps.c
+++ b/src/lib/libssl/src/apps/apps.c
@@ -109,12 +109,21 @@
109 * 109 *
110 */ 110 */
111 111
112#ifndef _POSIX_C_SOURCE
113#define _POSIX_C_SOURCE 2 /* On VMS, you need to define this to get
114 the declaration of fileno(). The value
115 2 is to make sure no function defined
116 in POSIX-2 is left undefined. */
117#endif
112#include <stdio.h> 118#include <stdio.h>
113#include <stdlib.h> 119#include <stdlib.h>
114#include <string.h> 120#include <string.h>
121#if !defined(OPENSSL_SYSNAME_WIN32) && !defined(NETWARE_CLIB)
122#include <strings.h>
123#endif
115#include <sys/types.h> 124#include <sys/types.h>
116#include <sys/stat.h>
117#include <ctype.h> 125#include <ctype.h>
126#include <errno.h>
118#include <assert.h> 127#include <assert.h>
119#include <openssl/err.h> 128#include <openssl/err.h>
120#include <openssl/x509.h> 129#include <openssl/x509.h>
@@ -138,6 +147,11 @@
138#include "apps.h" 147#include "apps.h"
139#undef NON_MAIN 148#undef NON_MAIN
140 149
150#ifdef _WIN32
151static int WIN32_rename(const char *from, const char *to);
152#define rename(from,to) WIN32_rename((from),(to))
153#endif
154
141typedef struct { 155typedef struct {
142 const char *name; 156 const char *name;
143 unsigned long flag; 157 unsigned long flag;
@@ -166,18 +180,23 @@ int args_from_file(char *file, int *argc, char **argv[])
166 static char *buf=NULL; 180 static char *buf=NULL;
167 static char **arg=NULL; 181 static char **arg=NULL;
168 char *p; 182 char *p;
169 struct stat stbuf;
170
171 if (stat(file,&stbuf) < 0) return(0);
172 183
173 fp=fopen(file,"r"); 184 fp=fopen(file,"r");
174 if (fp == NULL) 185 if (fp == NULL)
175 return(0); 186 return(0);
176 187
188 if (fseek(fp,0,SEEK_END)==0)
189 len=ftell(fp), rewind(fp);
190 else len=-1;
191 if (len<=0)
192 {
193 fclose(fp);
194 return(0);
195 }
196
177 *argc=0; 197 *argc=0;
178 *argv=NULL; 198 *argv=NULL;
179 199
180 len=(unsigned int)stbuf.st_size;
181 if (buf != NULL) OPENSSL_free(buf); 200 if (buf != NULL) OPENSSL_free(buf);
182 buf=(char *)OPENSSL_malloc(len+1); 201 buf=(char *)OPENSSL_malloc(len+1);
183 if (buf == NULL) return(0); 202 if (buf == NULL) return(0);
@@ -242,18 +261,25 @@ int str2fmt(char *s)
242 return(FORMAT_ASN1); 261 return(FORMAT_ASN1);
243 else if ((*s == 'T') || (*s == 't')) 262 else if ((*s == 'T') || (*s == 't'))
244 return(FORMAT_TEXT); 263 return(FORMAT_TEXT);
245 else if ((*s == 'P') || (*s == 'p')) 264 else if ((*s == 'N') || (*s == 'n'))
246 return(FORMAT_PEM); 265 return(FORMAT_NETSCAPE);
247 else if ((*s == 'N') || (*s == 'n')) 266 else if ((*s == 'S') || (*s == 's'))
248 return(FORMAT_NETSCAPE); 267 return(FORMAT_SMIME);
249 else if ((*s == 'S') || (*s == 's')) 268 else if ((*s == 'M') || (*s == 'm'))
250 return(FORMAT_SMIME); 269 return(FORMAT_MSBLOB);
251 else if ((*s == '1') 270 else if ((*s == '1')
252 || (strcmp(s,"PKCS12") == 0) || (strcmp(s,"pkcs12") == 0) 271 || (strcmp(s,"PKCS12") == 0) || (strcmp(s,"pkcs12") == 0)
253 || (strcmp(s,"P12") == 0) || (strcmp(s,"p12") == 0)) 272 || (strcmp(s,"P12") == 0) || (strcmp(s,"p12") == 0))
254 return(FORMAT_PKCS12); 273 return(FORMAT_PKCS12);
255 else if ((*s == 'E') || (*s == 'e')) 274 else if ((*s == 'E') || (*s == 'e'))
256 return(FORMAT_ENGINE); 275 return(FORMAT_ENGINE);
276 else if ((*s == 'P') || (*s == 'p'))
277 {
278 if (s[1] == 'V' || s[1] == 'v')
279 return FORMAT_PVK;
280 else
281 return(FORMAT_PEM);
282 }
257 else 283 else
258 return(FORMAT_UNDEF); 284 return(FORMAT_UNDEF);
259 } 285 }
@@ -639,6 +665,15 @@ static char *app_get_pass(BIO *err, char *arg, int keepbio)
639 BIO_printf(err, "Can't open file %s\n", arg + 5); 665 BIO_printf(err, "Can't open file %s\n", arg + 5);
640 return NULL; 666 return NULL;
641 } 667 }
668#if !defined(_WIN32)
669 /*
670 * Under _WIN32, which covers even Win64 and CE, file
671 * descriptors referenced by BIO_s_fd are not inherited
672 * by child process and therefore below is not an option.
673 * It could have been an option if bss_fd.c was operating
674 * on real Windows descriptors, such as those obtained
675 * with CreateFile.
676 */
642 } else if(!strncmp(arg, "fd:", 3)) { 677 } else if(!strncmp(arg, "fd:", 3)) {
643 BIO *btmp; 678 BIO *btmp;
644 i = atoi(arg + 3); 679 i = atoi(arg + 3);
@@ -650,6 +685,7 @@ static char *app_get_pass(BIO *err, char *arg, int keepbio)
650 /* Can't do BIO_gets on an fd BIO so add a buffering BIO */ 685 /* Can't do BIO_gets on an fd BIO so add a buffering BIO */
651 btmp = BIO_new(BIO_f_buffer()); 686 btmp = BIO_new(BIO_f_buffer());
652 pwdbio = BIO_push(btmp, pwdbio); 687 pwdbio = BIO_push(btmp, pwdbio);
688#endif
653 } else if(!strcmp(arg, "stdin")) { 689 } else if(!strcmp(arg, "stdin")) {
654 pwdbio = BIO_new_fp(stdin, BIO_NOCLOSE); 690 pwdbio = BIO_new_fp(stdin, BIO_NOCLOSE);
655 if(!pwdbio) { 691 if(!pwdbio) {
@@ -749,8 +785,6 @@ static int load_pkcs12(BIO *err, BIO *in, const char *desc,
749X509 *load_cert(BIO *err, const char *file, int format, 785X509 *load_cert(BIO *err, const char *file, int format,
750 const char *pass, ENGINE *e, const char *cert_descrip) 786 const char *pass, ENGINE *e, const char *cert_descrip)
751 { 787 {
752 ASN1_HEADER *ah=NULL;
753 BUF_MEM *buf=NULL;
754 X509 *x=NULL; 788 X509 *x=NULL;
755 BIO *cert; 789 BIO *cert;
756 790
@@ -762,7 +796,9 @@ X509 *load_cert(BIO *err, const char *file, int format,
762 796
763 if (file == NULL) 797 if (file == NULL)
764 { 798 {
799#ifdef _IONBF
765 setvbuf(stdin, NULL, _IONBF, 0); 800 setvbuf(stdin, NULL, _IONBF, 0);
801#endif
766 BIO_set_fp(cert,stdin,BIO_NOCLOSE); 802 BIO_set_fp(cert,stdin,BIO_NOCLOSE);
767 } 803 }
768 else 804 else
@@ -780,46 +816,21 @@ X509 *load_cert(BIO *err, const char *file, int format,
780 x=d2i_X509_bio(cert,NULL); 816 x=d2i_X509_bio(cert,NULL);
781 else if (format == FORMAT_NETSCAPE) 817 else if (format == FORMAT_NETSCAPE)
782 { 818 {
783 const unsigned char *p,*op; 819 NETSCAPE_X509 *nx;
784 int size=0,i; 820 nx=ASN1_item_d2i_bio(ASN1_ITEM_rptr(NETSCAPE_X509),cert,NULL);
785 821 if (nx == NULL)
786 /* We sort of have to do it this way because it is sort of nice
787 * to read the header first and check it, then
788 * try to read the certificate */
789 buf=BUF_MEM_new();
790 for (;;)
791 {
792 if ((buf == NULL) || (!BUF_MEM_grow(buf,size+1024*10)))
793 goto end;
794 i=BIO_read(cert,&(buf->data[size]),1024*10);
795 size+=i;
796 if (i == 0) break;
797 if (i < 0)
798 {
799 perror("reading certificate");
800 goto end; 822 goto end;
801 }
802 }
803 p=(unsigned char *)buf->data;
804 op=p;
805 823
806 /* First load the header */ 824 if ((strncmp(NETSCAPE_CERT_HDR,(char *)nx->header->data,
807 if ((ah=d2i_ASN1_HEADER(NULL,&p,(long)size)) == NULL) 825 nx->header->length) != 0))
808 goto end;
809 if ((ah->header == NULL) || (ah->header->data == NULL) ||
810 (strncmp(NETSCAPE_CERT_HDR,(char *)ah->header->data,
811 ah->header->length) != 0))
812 { 826 {
827 NETSCAPE_X509_free(nx);
813 BIO_printf(err,"Error reading header on certificate\n"); 828 BIO_printf(err,"Error reading header on certificate\n");
814 goto end; 829 goto end;
815 } 830 }
816 /* header is ok, so now read the object */ 831 x=nx->cert;
817 p=op; 832 nx->cert = NULL;
818 ah->meth=X509_asn1_meth(); 833 NETSCAPE_X509_free(nx);
819 if ((ah=d2i_ASN1_HEADER(&ah,&p,(long)size)) == NULL)
820 goto end;
821 x=(X509 *)ah->data;
822 ah->data=NULL;
823 } 834 }
824 else if (format == FORMAT_PEM) 835 else if (format == FORMAT_PEM)
825 x=PEM_read_bio_X509_AUX(cert,NULL, 836 x=PEM_read_bio_X509_AUX(cert,NULL,
@@ -841,9 +852,7 @@ end:
841 BIO_printf(err,"unable to load certificate\n"); 852 BIO_printf(err,"unable to load certificate\n");
842 ERR_print_errors(err); 853 ERR_print_errors(err);
843 } 854 }
844 if (ah != NULL) ASN1_HEADER_free(ah);
845 if (cert != NULL) BIO_free(cert); 855 if (cert != NULL) BIO_free(cert);
846 if (buf != NULL) BUF_MEM_free(buf);
847 return(x); 856 return(x);
848 } 857 }
849 858
@@ -866,10 +875,17 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
866 if (format == FORMAT_ENGINE) 875 if (format == FORMAT_ENGINE)
867 { 876 {
868 if (!e) 877 if (!e)
869 BIO_printf(bio_err,"no engine specified\n"); 878 BIO_printf(err,"no engine specified\n");
870 else 879 else
880 {
871 pkey = ENGINE_load_private_key(e, file, 881 pkey = ENGINE_load_private_key(e, file,
872 ui_method, &cb_data); 882 ui_method, &cb_data);
883 if (!pkey)
884 {
885 BIO_printf(err,"cannot load %s from engine\n",key_descrip);
886 ERR_print_errors(err);
887 }
888 }
873 goto end; 889 goto end;
874 } 890 }
875#endif 891#endif
@@ -881,7 +897,9 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
881 } 897 }
882 if (file == NULL && maybe_stdin) 898 if (file == NULL && maybe_stdin)
883 { 899 {
900#ifdef _IONBF
884 setvbuf(stdin, NULL, _IONBF, 0); 901 setvbuf(stdin, NULL, _IONBF, 0);
902#endif
885 BIO_set_fp(key,stdin,BIO_NOCLOSE); 903 BIO_set_fp(key,stdin,BIO_NOCLOSE);
886 } 904 }
887 else 905 else
@@ -912,6 +930,13 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
912 &pkey, NULL, NULL)) 930 &pkey, NULL, NULL))
913 goto end; 931 goto end;
914 } 932 }
933#if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_DSA) && !defined (OPENSSL_NO_RC4)
934 else if (format == FORMAT_MSBLOB)
935 pkey = b2i_PrivateKey_bio(key);
936 else if (format == FORMAT_PVK)
937 pkey = b2i_PVK_bio(key, (pem_password_cb *)password_callback,
938 &cb_data);
939#endif
915 else 940 else
916 { 941 {
917 BIO_printf(err,"bad input format specified for key file\n"); 942 BIO_printf(err,"bad input format specified for key file\n");
@@ -919,8 +944,11 @@ EVP_PKEY *load_key(BIO *err, const char *file, int format, int maybe_stdin,
919 } 944 }
920 end: 945 end:
921 if (key != NULL) BIO_free(key); 946 if (key != NULL) BIO_free(key);
922 if (pkey == NULL) 947 if (pkey == NULL)
948 {
923 BIO_printf(err,"unable to load %s\n", key_descrip); 949 BIO_printf(err,"unable to load %s\n", key_descrip);
950 ERR_print_errors(err);
951 }
924 return(pkey); 952 return(pkey);
925 } 953 }
926 954
@@ -958,7 +986,9 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
958 } 986 }
959 if (file == NULL && maybe_stdin) 987 if (file == NULL && maybe_stdin)
960 { 988 {
989#ifdef _IONBF
961 setvbuf(stdin, NULL, _IONBF, 0); 990 setvbuf(stdin, NULL, _IONBF, 0);
991#endif
962 BIO_set_fp(key,stdin,BIO_NOCLOSE); 992 BIO_set_fp(key,stdin,BIO_NOCLOSE);
963 } 993 }
964 else 994 else
@@ -973,6 +1003,37 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
973 { 1003 {
974 pkey=d2i_PUBKEY_bio(key, NULL); 1004 pkey=d2i_PUBKEY_bio(key, NULL);
975 } 1005 }
1006#ifndef OPENSSL_NO_RSA
1007 else if (format == FORMAT_ASN1RSA)
1008 {
1009 RSA *rsa;
1010 rsa = d2i_RSAPublicKey_bio(key, NULL);
1011 if (rsa)
1012 {
1013 pkey = EVP_PKEY_new();
1014 if (pkey)
1015 EVP_PKEY_set1_RSA(pkey, rsa);
1016 RSA_free(rsa);
1017 }
1018 else
1019 pkey = NULL;
1020 }
1021 else if (format == FORMAT_PEMRSA)
1022 {
1023 RSA *rsa;
1024 rsa = PEM_read_bio_RSAPublicKey(key, NULL,
1025 (pem_password_cb *)password_callback, &cb_data);
1026 if (rsa)
1027 {
1028 pkey = EVP_PKEY_new();
1029 if (pkey)
1030 EVP_PKEY_set1_RSA(pkey, rsa);
1031 RSA_free(rsa);
1032 }
1033 else
1034 pkey = NULL;
1035 }
1036#endif
976 else if (format == FORMAT_PEM) 1037 else if (format == FORMAT_PEM)
977 { 1038 {
978 pkey=PEM_read_bio_PUBKEY(key,NULL, 1039 pkey=PEM_read_bio_PUBKEY(key,NULL,
@@ -982,6 +1043,10 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
982 else if (format == FORMAT_NETSCAPE || format == FORMAT_IISSGC) 1043 else if (format == FORMAT_NETSCAPE || format == FORMAT_IISSGC)
983 pkey = load_netscape_key(err, key, file, key_descrip, format); 1044 pkey = load_netscape_key(err, key, file, key_descrip, format);
984#endif 1045#endif
1046#if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_DSA)
1047 else if (format == FORMAT_MSBLOB)
1048 pkey = b2i_PublicKey_bio(key);
1049#endif
985 else 1050 else
986 { 1051 {
987 BIO_printf(err,"bad input format specified for key file\n"); 1052 BIO_printf(err,"bad input format specified for key file\n");
@@ -1040,76 +1105,120 @@ error:
1040 } 1105 }
1041#endif /* ndef OPENSSL_NO_RC4 */ 1106#endif /* ndef OPENSSL_NO_RC4 */
1042 1107
1043STACK_OF(X509) *load_certs(BIO *err, const char *file, int format, 1108static int load_certs_crls(BIO *err, const char *file, int format,
1044 const char *pass, ENGINE *e, const char *cert_descrip) 1109 const char *pass, ENGINE *e, const char *desc,
1110 STACK_OF(X509) **pcerts, STACK_OF(X509_CRL) **pcrls)
1045 { 1111 {
1046 BIO *certs;
1047 int i; 1112 int i;
1048 STACK_OF(X509) *othercerts = NULL; 1113 BIO *bio;
1049 STACK_OF(X509_INFO) *allcerts = NULL; 1114 STACK_OF(X509_INFO) *xis = NULL;
1050 X509_INFO *xi; 1115 X509_INFO *xi;
1051 PW_CB_DATA cb_data; 1116 PW_CB_DATA cb_data;
1117 int rv = 0;
1052 1118
1053 cb_data.password = pass; 1119 cb_data.password = pass;
1054 cb_data.prompt_info = file; 1120 cb_data.prompt_info = file;
1055 1121
1056 if((certs = BIO_new(BIO_s_file())) == NULL) 1122 if (format != FORMAT_PEM)
1057 { 1123 {
1058 ERR_print_errors(err); 1124 BIO_printf(err,"bad input format specified for %s\n", desc);
1059 goto end; 1125 return 0;
1060 } 1126 }
1061 1127
1062 if (file == NULL) 1128 if (file == NULL)
1063 BIO_set_fp(certs,stdin,BIO_NOCLOSE); 1129 bio = BIO_new_fp(stdin,BIO_NOCLOSE);
1064 else 1130 else
1131 bio = BIO_new_file(file, "r");
1132
1133 if (bio == NULL)
1065 { 1134 {
1066 if (BIO_read_filename(certs,file) <= 0) 1135 BIO_printf(err, "Error opening %s %s\n",
1067 { 1136 desc, file ? file : "stdin");
1068 BIO_printf(err, "Error opening %s %s\n", 1137 ERR_print_errors(err);
1069 cert_descrip, file); 1138 return 0;
1070 ERR_print_errors(err); 1139 }
1140
1141 xis = PEM_X509_INFO_read_bio(bio, NULL,
1142 (pem_password_cb *)password_callback, &cb_data);
1143
1144 BIO_free(bio);
1145
1146 if (pcerts)
1147 {
1148 *pcerts = sk_X509_new_null();
1149 if (!*pcerts)
1071 goto end; 1150 goto end;
1072 }
1073 } 1151 }
1074 1152
1075 if (format == FORMAT_PEM) 1153 if (pcrls)
1076 { 1154 {
1077 othercerts = sk_X509_new_null(); 1155 *pcrls = sk_X509_CRL_new_null();
1078 if(!othercerts) 1156 if (!*pcrls)
1079 {
1080 sk_X509_free(othercerts);
1081 othercerts = NULL;
1082 goto end; 1157 goto end;
1158 }
1159
1160 for(i = 0; i < sk_X509_INFO_num(xis); i++)
1161 {
1162 xi = sk_X509_INFO_value (xis, i);
1163 if (xi->x509 && pcerts)
1164 {
1165 if (!sk_X509_push(*pcerts, xi->x509))
1166 goto end;
1167 xi->x509 = NULL;
1083 } 1168 }
1084 allcerts = PEM_X509_INFO_read_bio(certs, NULL, 1169 if (xi->crl && pcrls)
1085 (pem_password_cb *)password_callback, &cb_data);
1086 for(i = 0; i < sk_X509_INFO_num(allcerts); i++)
1087 { 1170 {
1088 xi = sk_X509_INFO_value (allcerts, i); 1171 if (!sk_X509_CRL_push(*pcrls, xi->crl))
1089 if (xi->x509) 1172 goto end;
1090 { 1173 xi->crl = NULL;
1091 sk_X509_push(othercerts, xi->x509);
1092 xi->x509 = NULL;
1093 }
1094 } 1174 }
1095 goto end;
1096 } 1175 }
1097 else { 1176
1098 BIO_printf(err,"bad input format specified for %s\n", 1177 if (pcerts && sk_X509_num(*pcerts) > 0)
1099 cert_descrip); 1178 rv = 1;
1100 goto end; 1179
1101 } 1180 if (pcrls && sk_X509_CRL_num(*pcrls) > 0)
1102end: 1181 rv = 1;
1103 if (othercerts == NULL) 1182
1183 end:
1184
1185 if (xis)
1186 sk_X509_INFO_pop_free(xis, X509_INFO_free);
1187
1188 if (rv == 0)
1104 { 1189 {
1105 BIO_printf(err,"unable to load certificates\n"); 1190 if (pcerts)
1191 {
1192 sk_X509_pop_free(*pcerts, X509_free);
1193 *pcerts = NULL;
1194 }
1195 if (pcrls)
1196 {
1197 sk_X509_CRL_pop_free(*pcrls, X509_CRL_free);
1198 *pcrls = NULL;
1199 }
1200 BIO_printf(err,"unable to load %s\n",
1201 pcerts ? "certificates" : "CRLs");
1106 ERR_print_errors(err); 1202 ERR_print_errors(err);
1107 } 1203 }
1108 if (allcerts) sk_X509_INFO_pop_free(allcerts, X509_INFO_free); 1204 return rv;
1109 if (certs != NULL) BIO_free(certs);
1110 return(othercerts);
1111 } 1205 }
1112 1206
1207STACK_OF(X509) *load_certs(BIO *err, const char *file, int format,
1208 const char *pass, ENGINE *e, const char *desc)
1209 {
1210 STACK_OF(X509) *certs;
1211 load_certs_crls(err, file, format, pass, e, desc, &certs, NULL);
1212 return certs;
1213 }
1214
1215STACK_OF(X509_CRL) *load_crls(BIO *err, const char *file, int format,
1216 const char *pass, ENGINE *e, const char *desc)
1217 {
1218 STACK_OF(X509_CRL) *crls;
1219 load_certs_crls(err, file, format, pass, e, desc, NULL, &crls);
1220 return crls;
1221 }
1113 1222
1114#define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) 1223#define X509V3_EXT_UNKNOWN_MASK (0xfL << 16)
1115/* Return error for unknown extensions */ 1224/* Return error for unknown extensions */
@@ -1396,6 +1505,10 @@ ENGINE *setup_engine(BIO *err, const char *engine, int debug)
1396 1505
1397int load_config(BIO *err, CONF *cnf) 1506int load_config(BIO *err, CONF *cnf)
1398 { 1507 {
1508 static int load_config_called = 0;
1509 if (load_config_called)
1510 return 1;
1511 load_config_called = 1;
1399 if (!cnf) 1512 if (!cnf)
1400 cnf = config; 1513 cnf = config;
1401 if (!cnf) 1514 if (!cnf)
@@ -1429,7 +1542,7 @@ char *make_config_name()
1429 return p; 1542 return p;
1430 } 1543 }
1431 1544
1432static unsigned long index_serial_hash(const char **a) 1545static unsigned long index_serial_hash(const OPENSSL_CSTRING *a)
1433 { 1546 {
1434 const char *n; 1547 const char *n;
1435 1548
@@ -1438,7 +1551,7 @@ static unsigned long index_serial_hash(const char **a)
1438 return(lh_strhash(n)); 1551 return(lh_strhash(n));
1439 } 1552 }
1440 1553
1441static int index_serial_cmp(const char **a, const char **b) 1554static int index_serial_cmp(const OPENSSL_CSTRING *a, const OPENSSL_CSTRING *b)
1442 { 1555 {
1443 const char *aa,*bb; 1556 const char *aa,*bb;
1444 1557
@@ -1450,17 +1563,16 @@ static int index_serial_cmp(const char **a, const char **b)
1450static int index_name_qual(char **a) 1563static int index_name_qual(char **a)
1451 { return(a[0][0] == 'V'); } 1564 { return(a[0][0] == 'V'); }
1452 1565
1453static unsigned long index_name_hash(const char **a) 1566static unsigned long index_name_hash(const OPENSSL_CSTRING *a)
1454 { return(lh_strhash(a[DB_name])); } 1567 { return(lh_strhash(a[DB_name])); }
1455 1568
1456int index_name_cmp(const char **a, const char **b) 1569int index_name_cmp(const OPENSSL_CSTRING *a, const OPENSSL_CSTRING *b)
1457 { return(strcmp(a[DB_name], 1570 { return(strcmp(a[DB_name], b[DB_name])); }
1458 b[DB_name])); }
1459 1571
1460static IMPLEMENT_LHASH_HASH_FN(index_serial_hash,const char **) 1572static IMPLEMENT_LHASH_HASH_FN(index_serial, OPENSSL_CSTRING)
1461static IMPLEMENT_LHASH_COMP_FN(index_serial_cmp,const char **) 1573static IMPLEMENT_LHASH_COMP_FN(index_serial, OPENSSL_CSTRING)
1462static IMPLEMENT_LHASH_HASH_FN(index_name_hash,const char **) 1574static IMPLEMENT_LHASH_HASH_FN(index_name, OPENSSL_CSTRING)
1463static IMPLEMENT_LHASH_COMP_FN(index_name_cmp,const char **) 1575static IMPLEMENT_LHASH_COMP_FN(index_name, OPENSSL_CSTRING)
1464 1576
1465#undef BSIZE 1577#undef BSIZE
1466#define BSIZE 256 1578#define BSIZE 256
@@ -1588,7 +1700,6 @@ int rotate_serial(char *serialfile, char *new_suffix, char *old_suffix)
1588 { 1700 {
1589 char buf[5][BSIZE]; 1701 char buf[5][BSIZE];
1590 int i,j; 1702 int i,j;
1591 struct stat sb;
1592 1703
1593 i = strlen(serialfile) + strlen(old_suffix); 1704 i = strlen(serialfile) + strlen(old_suffix);
1594 j = strlen(serialfile) + strlen(new_suffix); 1705 j = strlen(serialfile) + strlen(new_suffix);
@@ -1613,30 +1724,21 @@ int rotate_serial(char *serialfile, char *new_suffix, char *old_suffix)
1613 j = BIO_snprintf(buf[1], sizeof buf[1], "%s-%s", 1724 j = BIO_snprintf(buf[1], sizeof buf[1], "%s-%s",
1614 serialfile, old_suffix); 1725 serialfile, old_suffix);
1615#endif 1726#endif
1616 if (stat(serialfile,&sb) < 0) 1727#ifdef RL_DEBUG
1617 { 1728 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n",
1618 if (errno != ENOENT 1729 serialfile, buf[1]);
1730#endif
1731 if (rename(serialfile,buf[1]) < 0 && errno != ENOENT
1619#ifdef ENOTDIR 1732#ifdef ENOTDIR
1620 && errno != ENOTDIR 1733 && errno != ENOTDIR
1621#endif 1734#endif
1622 ) 1735 ) {
1623 goto err;
1624 }
1625 else
1626 {
1627#ifdef RL_DEBUG
1628 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n",
1629 serialfile, buf[1]);
1630#endif
1631 if (rename(serialfile,buf[1]) < 0)
1632 {
1633 BIO_printf(bio_err, 1736 BIO_printf(bio_err,
1634 "unable to rename %s to %s\n", 1737 "unable to rename %s to %s\n",
1635 serialfile, buf[1]); 1738 serialfile, buf[1]);
1636 perror("reason"); 1739 perror("reason");
1637 goto err; 1740 goto err;
1638 } 1741 }
1639 }
1640#ifdef RL_DEBUG 1742#ifdef RL_DEBUG
1641 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n", 1743 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n",
1642 buf[0],serialfile); 1744 buf[0],serialfile);
@@ -1703,10 +1805,7 @@ CA_DB *load_index(char *dbfile, DB_ATTR *db_attr)
1703 goto err; 1805 goto err;
1704 } 1806 }
1705 if ((tmpdb = TXT_DB_read(in,DB_NUMBER)) == NULL) 1807 if ((tmpdb = TXT_DB_read(in,DB_NUMBER)) == NULL)
1706 {
1707 if (tmpdb != NULL) TXT_DB_free(tmpdb);
1708 goto err; 1808 goto err;
1709 }
1710 1809
1711#ifndef OPENSSL_SYS_VMS 1810#ifndef OPENSSL_SYS_VMS
1712 BIO_snprintf(buf[0], sizeof buf[0], "%s.attr", dbfile); 1811 BIO_snprintf(buf[0], sizeof buf[0], "%s.attr", dbfile);
@@ -1767,8 +1866,8 @@ CA_DB *load_index(char *dbfile, DB_ATTR *db_attr)
1767int index_index(CA_DB *db) 1866int index_index(CA_DB *db)
1768 { 1867 {
1769 if (!TXT_DB_create_index(db->db, DB_serial, NULL, 1868 if (!TXT_DB_create_index(db->db, DB_serial, NULL,
1770 LHASH_HASH_FN(index_serial_hash), 1869 LHASH_HASH_FN(index_serial),
1771 LHASH_COMP_FN(index_serial_cmp))) 1870 LHASH_COMP_FN(index_serial)))
1772 { 1871 {
1773 BIO_printf(bio_err, 1872 BIO_printf(bio_err,
1774 "error creating serial number index:(%ld,%ld,%ld)\n", 1873 "error creating serial number index:(%ld,%ld,%ld)\n",
@@ -1778,8 +1877,8 @@ int index_index(CA_DB *db)
1778 1877
1779 if (db->attributes.unique_subject 1878 if (db->attributes.unique_subject
1780 && !TXT_DB_create_index(db->db, DB_name, index_name_qual, 1879 && !TXT_DB_create_index(db->db, DB_name, index_name_qual,
1781 LHASH_HASH_FN(index_name_hash), 1880 LHASH_HASH_FN(index_name),
1782 LHASH_COMP_FN(index_name_cmp))) 1881 LHASH_COMP_FN(index_name)))
1783 { 1882 {
1784 BIO_printf(bio_err,"error creating name index:(%ld,%ld,%ld)\n", 1883 BIO_printf(bio_err,"error creating name index:(%ld,%ld,%ld)\n",
1785 db->db->error,db->db->arg1,db->db->arg2); 1884 db->db->error,db->db->arg1,db->db->arg2);
@@ -1859,7 +1958,6 @@ int rotate_index(const char *dbfile, const char *new_suffix, const char *old_suf
1859 { 1958 {
1860 char buf[5][BSIZE]; 1959 char buf[5][BSIZE];
1861 int i,j; 1960 int i,j;
1862 struct stat sb;
1863 1961
1864 i = strlen(dbfile) + strlen(old_suffix); 1962 i = strlen(dbfile) + strlen(old_suffix);
1865 j = strlen(dbfile) + strlen(new_suffix); 1963 j = strlen(dbfile) + strlen(new_suffix);
@@ -1903,30 +2001,21 @@ int rotate_index(const char *dbfile, const char *new_suffix, const char *old_suf
1903 j = BIO_snprintf(buf[3], sizeof buf[3], "%s-attr-%s", 2001 j = BIO_snprintf(buf[3], sizeof buf[3], "%s-attr-%s",
1904 dbfile, old_suffix); 2002 dbfile, old_suffix);
1905#endif 2003#endif
1906 if (stat(dbfile,&sb) < 0)
1907 {
1908 if (errno != ENOENT
1909#ifdef ENOTDIR
1910 && errno != ENOTDIR
1911#endif
1912 )
1913 goto err;
1914 }
1915 else
1916 {
1917#ifdef RL_DEBUG 2004#ifdef RL_DEBUG
1918 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n", 2005 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n",
1919 dbfile, buf[1]); 2006 dbfile, buf[1]);
1920#endif 2007#endif
1921 if (rename(dbfile,buf[1]) < 0) 2008 if (rename(dbfile,buf[1]) < 0 && errno != ENOENT
1922 { 2009#ifdef ENOTDIR
2010 && errno != ENOTDIR
2011#endif
2012 ) {
1923 BIO_printf(bio_err, 2013 BIO_printf(bio_err,
1924 "unable to rename %s to %s\n", 2014 "unable to rename %s to %s\n",
1925 dbfile, buf[1]); 2015 dbfile, buf[1]);
1926 perror("reason"); 2016 perror("reason");
1927 goto err; 2017 goto err;
1928 } 2018 }
1929 }
1930#ifdef RL_DEBUG 2019#ifdef RL_DEBUG
1931 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n", 2020 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n",
1932 buf[0],dbfile); 2021 buf[0],dbfile);
@@ -1940,23 +2029,15 @@ int rotate_index(const char *dbfile, const char *new_suffix, const char *old_suf
1940 rename(buf[1],dbfile); 2029 rename(buf[1],dbfile);
1941 goto err; 2030 goto err;
1942 } 2031 }
1943 if (stat(buf[4],&sb) < 0)
1944 {
1945 if (errno != ENOENT
1946#ifdef ENOTDIR
1947 && errno != ENOTDIR
1948#endif
1949 )
1950 goto err;
1951 }
1952 else
1953 {
1954#ifdef RL_DEBUG 2032#ifdef RL_DEBUG
1955 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n", 2033 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n",
1956 buf[4],buf[3]); 2034 buf[4],buf[3]);
1957#endif 2035#endif
1958 if (rename(buf[4],buf[3]) < 0) 2036 if (rename(buf[4],buf[3]) < 0 && errno != ENOENT
1959 { 2037#ifdef ENOTDIR
2038 && errno != ENOTDIR
2039#endif
2040 ) {
1960 BIO_printf(bio_err, 2041 BIO_printf(bio_err,
1961 "unable to rename %s to %s\n", 2042 "unable to rename %s to %s\n",
1962 buf[4], buf[3]); 2043 buf[4], buf[3]);
@@ -1965,7 +2046,6 @@ int rotate_index(const char *dbfile, const char *new_suffix, const char *old_suf
1965 rename(buf[1],dbfile); 2046 rename(buf[1],dbfile);
1966 goto err; 2047 goto err;
1967 } 2048 }
1968 }
1969#ifdef RL_DEBUG 2049#ifdef RL_DEBUG
1970 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n", 2050 BIO_printf(bio_err, "DEBUG: renaming \"%s\" to \"%s\"\n",
1971 buf[2],buf[4]); 2051 buf[2],buf[4]);
@@ -2160,52 +2240,13 @@ error:
2160 return NULL; 2240 return NULL;
2161} 2241}
2162 2242
2163/* This code MUST COME AFTER anything that uses rename() */
2164#ifdef OPENSSL_SYS_WIN32
2165int WIN32_rename(const char *from, const char *to)
2166 {
2167#ifndef OPENSSL_SYS_WINCE
2168 /* Windows rename gives an error if 'to' exists, so delete it
2169 * first and ignore file not found errror
2170 */
2171 if((remove(to) != 0) && (errno != ENOENT))
2172 return -1;
2173#undef rename
2174 return rename(from, to);
2175#else
2176 /* convert strings to UNICODE */
2177 {
2178 BOOL result = FALSE;
2179 WCHAR* wfrom;
2180 WCHAR* wto;
2181 int i;
2182 wfrom = malloc((strlen(from)+1)*2);
2183 wto = malloc((strlen(to)+1)*2);
2184 if (wfrom != NULL && wto != NULL)
2185 {
2186 for (i=0; i<(int)strlen(from)+1; i++)
2187 wfrom[i] = (short)from[i];
2188 for (i=0; i<(int)strlen(to)+1; i++)
2189 wto[i] = (short)to[i];
2190 result = MoveFile(wfrom, wto);
2191 }
2192 if (wfrom != NULL)
2193 free(wfrom);
2194 if (wto != NULL)
2195 free(wto);
2196 return result;
2197 }
2198#endif
2199 }
2200#endif
2201
2202int args_verify(char ***pargs, int *pargc, 2243int args_verify(char ***pargs, int *pargc,
2203 int *badarg, BIO *err, X509_VERIFY_PARAM **pm) 2244 int *badarg, BIO *err, X509_VERIFY_PARAM **pm)
2204 { 2245 {
2205 ASN1_OBJECT *otmp = NULL; 2246 ASN1_OBJECT *otmp = NULL;
2206 unsigned long flags = 0; 2247 unsigned long flags = 0;
2207 int i; 2248 int i;
2208 int purpose = 0; 2249 int purpose = 0, depth = -1;
2209 char **oldargs = *pargs; 2250 char **oldargs = *pargs;
2210 char *arg = **pargs, *argn = (*pargs)[1]; 2251 char *arg = **pargs, *argn = (*pargs)[1];
2211 if (!strcmp(arg, "-policy")) 2252 if (!strcmp(arg, "-policy"))
@@ -2245,6 +2286,21 @@ int args_verify(char ***pargs, int *pargc,
2245 } 2286 }
2246 (*pargs)++; 2287 (*pargs)++;
2247 } 2288 }
2289 else if (strcmp(arg,"-verify_depth") == 0)
2290 {
2291 if (!argn)
2292 *badarg = 1;
2293 else
2294 {
2295 depth = atoi(argn);
2296 if(depth < 0)
2297 {
2298 BIO_printf(err, "invalid depth\n");
2299 *badarg = 1;
2300 }
2301 }
2302 (*pargs)++;
2303 }
2248 else if (!strcmp(arg, "-ignore_critical")) 2304 else if (!strcmp(arg, "-ignore_critical"))
2249 flags |= X509_V_FLAG_IGNORE_CRITICAL; 2305 flags |= X509_V_FLAG_IGNORE_CRITICAL;
2250 else if (!strcmp(arg, "-issuer_checks")) 2306 else if (!strcmp(arg, "-issuer_checks"))
@@ -2257,10 +2313,20 @@ int args_verify(char ***pargs, int *pargc,
2257 flags |= X509_V_FLAG_POLICY_CHECK; 2313 flags |= X509_V_FLAG_POLICY_CHECK;
2258 else if (!strcmp(arg, "-explicit_policy")) 2314 else if (!strcmp(arg, "-explicit_policy"))
2259 flags |= X509_V_FLAG_EXPLICIT_POLICY; 2315 flags |= X509_V_FLAG_EXPLICIT_POLICY;
2316 else if (!strcmp(arg, "-inhibit_any"))
2317 flags |= X509_V_FLAG_INHIBIT_ANY;
2318 else if (!strcmp(arg, "-inhibit_map"))
2319 flags |= X509_V_FLAG_INHIBIT_MAP;
2260 else if (!strcmp(arg, "-x509_strict")) 2320 else if (!strcmp(arg, "-x509_strict"))
2261 flags |= X509_V_FLAG_X509_STRICT; 2321 flags |= X509_V_FLAG_X509_STRICT;
2322 else if (!strcmp(arg, "-extended_crl"))
2323 flags |= X509_V_FLAG_EXTENDED_CRL_SUPPORT;
2324 else if (!strcmp(arg, "-use_deltas"))
2325 flags |= X509_V_FLAG_USE_DELTAS;
2262 else if (!strcmp(arg, "-policy_print")) 2326 else if (!strcmp(arg, "-policy_print"))
2263 flags |= X509_V_FLAG_NOTIFY_POLICY; 2327 flags |= X509_V_FLAG_NOTIFY_POLICY;
2328 else if (!strcmp(arg, "-check_ss_sig"))
2329 flags |= X509_V_FLAG_CHECK_SS_SIGNATURE;
2264 else 2330 else
2265 return 0; 2331 return 0;
2266 2332
@@ -2286,6 +2352,9 @@ int args_verify(char ***pargs, int *pargc,
2286 if (purpose) 2352 if (purpose)
2287 X509_VERIFY_PARAM_set_purpose(*pm, purpose); 2353 X509_VERIFY_PARAM_set_purpose(*pm, purpose);
2288 2354
2355 if (depth >= 0)
2356 X509_VERIFY_PARAM_set_depth(*pm, depth);
2357
2289 end: 2358 end:
2290 2359
2291 (*pargs)++; 2360 (*pargs)++;
@@ -2297,6 +2366,61 @@ int args_verify(char ***pargs, int *pargc,
2297 2366
2298 } 2367 }
2299 2368
2369/* Read whole contents of a BIO into an allocated memory buffer and
2370 * return it.
2371 */
2372
2373int bio_to_mem(unsigned char **out, int maxlen, BIO *in)
2374 {
2375 BIO *mem;
2376 int len, ret;
2377 unsigned char tbuf[1024];
2378 mem = BIO_new(BIO_s_mem());
2379 if (!mem)
2380 return -1;
2381 for(;;)
2382 {
2383 if ((maxlen != -1) && maxlen < 1024)
2384 len = maxlen;
2385 else
2386 len = 1024;
2387 len = BIO_read(in, tbuf, len);
2388 if (len <= 0)
2389 break;
2390 if (BIO_write(mem, tbuf, len) != len)
2391 {
2392 BIO_free(mem);
2393 return -1;
2394 }
2395 maxlen -= len;
2396
2397 if (maxlen == 0)
2398 break;
2399 }
2400 ret = BIO_get_mem_data(mem, (char **)out);
2401 BIO_set_flags(mem, BIO_FLAGS_MEM_RDONLY);
2402 BIO_free(mem);
2403 return ret;
2404 }
2405
2406int pkey_ctrl_string(EVP_PKEY_CTX *ctx, char *value)
2407 {
2408 int rv;
2409 char *stmp, *vtmp = NULL;
2410 stmp = BUF_strdup(value);
2411 if (!stmp)
2412 return -1;
2413 vtmp = strchr(stmp, ':');
2414 if (vtmp)
2415 {
2416 *vtmp = 0;
2417 vtmp++;
2418 }
2419 rv = EVP_PKEY_CTX_ctrl_str(ctx, stmp, vtmp);
2420 OPENSSL_free(stmp);
2421 return rv;
2422 }
2423
2300static void nodes_print(BIO *out, const char *name, 2424static void nodes_print(BIO *out, const char *name,
2301 STACK_OF(X509_POLICY_NODE) *nodes) 2425 STACK_OF(X509_POLICY_NODE) *nodes)
2302 { 2426 {
@@ -2338,7 +2462,7 @@ void policies_print(BIO *out, X509_STORE_CTX *ctx)
2338 BIO_free(out); 2462 BIO_free(out);
2339 } 2463 }
2340 2464
2341#ifndef OPENSSL_NO_JPAKE 2465#if !defined(OPENSSL_NO_JPAKE) && !defined(OPENSSL_NO_PSK)
2342 2466
2343static JPAKE_CTX *jpake_init(const char *us, const char *them, 2467static JPAKE_CTX *jpake_init(const char *us, const char *them,
2344 const char *secret) 2468 const char *secret)
@@ -2521,17 +2645,14 @@ void jpake_client_auth(BIO *out, BIO *conn, const char *secret)
2521 jpake_send_step3a(bconn, ctx); 2645 jpake_send_step3a(bconn, ctx);
2522 jpake_receive_step3b(ctx, bconn); 2646 jpake_receive_step3b(ctx, bconn);
2523 2647
2524 /* 2648 BIO_puts(out, "JPAKE authentication succeeded, setting PSK\n");
2525 * The problem is that you must use the derived key in the 2649
2526 * session key or you are subject to man-in-the-middle 2650 psk_key = BN_bn2hex(JPAKE_get_shared_key(ctx));
2527 * attacks.
2528 */
2529 BIO_puts(out, "JPAKE authentication succeeded (N.B. This version can"
2530 " be MitMed. See the version in HEAD for how to do it"
2531 " properly)\n");
2532 2651
2533 BIO_pop(bconn); 2652 BIO_pop(bconn);
2534 BIO_free(bconn); 2653 BIO_free(bconn);
2654
2655 JPAKE_CTX_free(ctx);
2535 } 2656 }
2536 2657
2537void jpake_server_auth(BIO *out, BIO *conn, const char *secret) 2658void jpake_server_auth(BIO *out, BIO *conn, const char *secret)
@@ -2553,17 +2674,340 @@ void jpake_server_auth(BIO *out, BIO *conn, const char *secret)
2553 jpake_receive_step3a(ctx, bconn); 2674 jpake_receive_step3a(ctx, bconn);
2554 jpake_send_step3b(bconn, ctx); 2675 jpake_send_step3b(bconn, ctx);
2555 2676
2556 /* 2677 BIO_puts(out, "JPAKE authentication succeeded, setting PSK\n");
2557 * The problem is that you must use the derived key in the 2678
2558 * session key or you are subject to man-in-the-middle 2679 psk_key = BN_bn2hex(JPAKE_get_shared_key(ctx));
2559 * attacks.
2560 */
2561 BIO_puts(out, "JPAKE authentication succeeded (N.B. This version can"
2562 " be MitMed. See the version in HEAD for how to do it"
2563 " properly)\n");
2564 2680
2565 BIO_pop(bconn); 2681 BIO_pop(bconn);
2566 BIO_free(bconn); 2682 BIO_free(bconn);
2683
2684 JPAKE_CTX_free(ctx);
2685 }
2686
2687#endif
2688
2689/*
2690 * Platform-specific sections
2691 */
2692#if defined(_WIN32)
2693# ifdef fileno
2694# undef fileno
2695# define fileno(a) (int)_fileno(a)
2696# endif
2697
2698# include <windows.h>
2699# include <tchar.h>
2700
2701static int WIN32_rename(const char *from, const char *to)
2702 {
2703 TCHAR *tfrom=NULL,*tto;
2704 DWORD err;
2705 int ret=0;
2706
2707 if (sizeof(TCHAR) == 1)
2708 {
2709 tfrom = (TCHAR *)from;
2710 tto = (TCHAR *)to;
2711 }
2712 else /* UNICODE path */
2713 {
2714 size_t i,flen=strlen(from)+1,tlen=strlen(to)+1;
2715 tfrom = (TCHAR *)malloc(sizeof(TCHAR)*(flen+tlen));
2716 if (tfrom==NULL) goto err;
2717 tto=tfrom+flen;
2718#if !defined(_WIN32_WCE) || _WIN32_WCE>=101
2719 if (!MultiByteToWideChar(CP_ACP,0,from,flen,(WCHAR *)tfrom,flen))
2720#endif
2721 for (i=0;i<flen;i++) tfrom[i]=(TCHAR)from[i];
2722#if !defined(_WIN32_WCE) || _WIN32_WCE>=101
2723 if (!MultiByteToWideChar(CP_ACP,0,to, tlen,(WCHAR *)tto, tlen))
2724#endif
2725 for (i=0;i<tlen;i++) tto[i] =(TCHAR)to[i];
2726 }
2727
2728 if (MoveFile(tfrom,tto)) goto ok;
2729 err=GetLastError();
2730 if (err==ERROR_ALREADY_EXISTS || err==ERROR_FILE_EXISTS)
2731 {
2732 if (DeleteFile(tto) && MoveFile(tfrom,tto))
2733 goto ok;
2734 err=GetLastError();
2735 }
2736 if (err==ERROR_FILE_NOT_FOUND || err==ERROR_PATH_NOT_FOUND)
2737 errno = ENOENT;
2738 else if (err==ERROR_ACCESS_DENIED)
2739 errno = EACCES;
2740 else
2741 errno = EINVAL; /* we could map more codes... */
2742err:
2743 ret=-1;
2744ok:
2745 if (tfrom!=NULL && tfrom!=(TCHAR *)from) free(tfrom);
2746 return ret;
2747 }
2748#endif
2749
2750/* app_tminterval section */
2751#if defined(_WIN32)
2752double app_tminterval(int stop,int usertime)
2753 {
2754 FILETIME now;
2755 double ret=0;
2756 static ULARGE_INTEGER tmstart;
2757 static int warning=1;
2758#ifdef _WIN32_WINNT
2759 static HANDLE proc=NULL;
2760
2761 if (proc==NULL)
2762 {
2763 if (GetVersion() < 0x80000000)
2764 proc = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,
2765 GetCurrentProcessId());
2766 if (proc==NULL) proc = (HANDLE)-1;
2767 }
2768
2769 if (usertime && proc!=(HANDLE)-1)
2770 {
2771 FILETIME junk;
2772 GetProcessTimes(proc,&junk,&junk,&junk,&now);
2773 }
2774 else
2775#endif
2776 {
2777 SYSTEMTIME systime;
2778
2779 if (usertime && warning)
2780 {
2781 BIO_printf(bio_err,"To get meaningful results, run "
2782 "this program on idle system.\n");
2783 warning=0;
2784 }
2785 GetSystemTime(&systime);
2786 SystemTimeToFileTime(&systime,&now);
2787 }
2788
2789 if (stop==TM_START)
2790 {
2791 tmstart.u.LowPart = now.dwLowDateTime;
2792 tmstart.u.HighPart = now.dwHighDateTime;
2793 }
2794 else {
2795 ULARGE_INTEGER tmstop;
2796
2797 tmstop.u.LowPart = now.dwLowDateTime;
2798 tmstop.u.HighPart = now.dwHighDateTime;
2799
2800 ret = (__int64)(tmstop.QuadPart - tmstart.QuadPart)*1e-7;
2801 }
2802
2803 return (ret);
2804 }
2805
2806#elif defined(OPENSSL_SYS_NETWARE)
2807#include <time.h>
2808
2809double app_tminterval(int stop,int usertime)
2810 {
2811 double ret=0;
2812 static clock_t tmstart;
2813 static int warning=1;
2814
2815 if (usertime && warning)
2816 {
2817 BIO_printf(bio_err,"To get meaningful results, run "
2818 "this program on idle system.\n");
2819 warning=0;
2820 }
2821
2822 if (stop==TM_START) tmstart = clock();
2823 else ret = (clock()-tmstart)/(double)CLOCKS_PER_SEC;
2824
2825 return (ret);
2826 }
2827
2828#elif defined(OPENSSL_SYSTEM_VXWORKS)
2829#include <time.h>
2830
2831double app_tminterval(int stop,int usertime)
2832 {
2833 double ret=0;
2834#ifdef CLOCK_REALTIME
2835 static struct timespec tmstart;
2836 struct timespec now;
2837#else
2838 static unsigned long tmstart;
2839 unsigned long now;
2840#endif
2841 static int warning=1;
2842
2843 if (usertime && warning)
2844 {
2845 BIO_printf(bio_err,"To get meaningful results, run "
2846 "this program on idle system.\n");
2847 warning=0;
2848 }
2849
2850#ifdef CLOCK_REALTIME
2851 clock_gettime(CLOCK_REALTIME,&now);
2852 if (stop==TM_START) tmstart = now;
2853 else ret = ( (now.tv_sec+now.tv_nsec*1e-9)
2854 - (tmstart.tv_sec+tmstart.tv_nsec*1e-9) );
2855#else
2856 now = tickGet();
2857 if (stop==TM_START) tmstart = now;
2858 else ret = (now - tmstart)/(double)sysClkRateGet();
2859#endif
2860 return (ret);
2861 }
2862
2863#elif defined(OPENSSL_SYSTEM_VMS)
2864#include <time.h>
2865#include <times.h>
2866
2867double app_tminterval(int stop,int usertime)
2868 {
2869 static clock_t tmstart;
2870 double ret = 0;
2871 clock_t now;
2872#ifdef __TMS
2873 struct tms rus;
2874
2875 now = times(&rus);
2876 if (usertime) now = rus.tms_utime;
2877#else
2878 if (usertime)
2879 now = clock(); /* sum of user and kernel times */
2880 else {
2881 struct timeval tv;
2882 gettimeofday(&tv,NULL);
2883 now = (clock_t)(
2884 (unsigned long long)tv.tv_sec*CLK_TCK +
2885 (unsigned long long)tv.tv_usec*(1000000/CLK_TCK)
2886 );
2887 }
2888#endif
2889 if (stop==TM_START) tmstart = now;
2890 else ret = (now - tmstart)/(double)(CLK_TCK);
2891
2892 return (ret);
2893 }
2894
2895#elif defined(_SC_CLK_TCK) /* by means of unistd.h */
2896#include <sys/times.h>
2897
2898double app_tminterval(int stop,int usertime)
2899 {
2900 double ret = 0;
2901 struct tms rus;
2902 clock_t now = times(&rus);
2903 static clock_t tmstart;
2904
2905 if (usertime) now = rus.tms_utime;
2906
2907 if (stop==TM_START) tmstart = now;
2908 else
2909 {
2910 long int tck = sysconf(_SC_CLK_TCK);
2911 ret = (now - tmstart)/(double)tck;
2912 }
2913
2914 return (ret);
2915 }
2916
2917#else
2918#include <sys/time.h>
2919#include <sys/resource.h>
2920
2921double app_tminterval(int stop,int usertime)
2922 {
2923 double ret = 0;
2924 struct rusage rus;
2925 struct timeval now;
2926 static struct timeval tmstart;
2927
2928 if (usertime) getrusage(RUSAGE_SELF,&rus), now = rus.ru_utime;
2929 else gettimeofday(&now,NULL);
2930
2931 if (stop==TM_START) tmstart = now;
2932 else ret = ( (now.tv_sec+now.tv_usec*1e-6)
2933 - (tmstart.tv_sec+tmstart.tv_usec*1e-6) );
2934
2935 return ret;
2567 } 2936 }
2937#endif
2938
2939/* app_isdir section */
2940#ifdef _WIN32
2941int app_isdir(const char *name)
2942 {
2943 HANDLE hList;
2944 WIN32_FIND_DATA FileData;
2945#if defined(UNICODE) || defined(_UNICODE)
2946 size_t i, len_0 = strlen(name)+1;
2568 2947
2948 if (len_0 > sizeof(FileData.cFileName)/sizeof(FileData.cFileName[0]))
2949 return -1;
2950
2951#if !defined(_WIN32_WCE) || _WIN32_WCE>=101
2952 if (!MultiByteToWideChar(CP_ACP,0,name,len_0,FileData.cFileName,len_0))
2953#endif
2954 for (i=0;i<len_0;i++)
2955 FileData.cFileName[i] = (WCHAR)name[i];
2956
2957 hList = FindFirstFile(FileData.cFileName,&FileData);
2958#else
2959 hList = FindFirstFile(name,&FileData);
2960#endif
2961 if (hList == INVALID_HANDLE_VALUE) return -1;
2962 FindClose(hList);
2963 return ((FileData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)!=0);
2964 }
2965#else
2966#include <sys/stat.h>
2967#ifndef S_ISDIR
2968# if defined(_S_IFMT) && defined(_S_IFDIR)
2969# define S_ISDIR(a) (((a) & _S_IFMT) == _S_IFDIR)
2970# else
2971# define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR)
2972# endif
2973#endif
2974
2975int app_isdir(const char *name)
2976 {
2977#if defined(S_ISDIR)
2978 struct stat st;
2979
2980 if (stat(name,&st)==0) return S_ISDIR(st.st_mode);
2981 else return -1;
2982#else
2983 return -1;
2984#endif
2985 }
2986#endif
2987
2988/* raw_read|write section */
2989#if defined(_WIN32) && defined(STD_INPUT_HANDLE)
2990int raw_read_stdin(void *buf,int siz)
2991 {
2992 DWORD n;
2993 if (ReadFile(GetStdHandle(STD_INPUT_HANDLE),buf,siz,&n,NULL))
2994 return (n);
2995 else return (-1);
2996 }
2997#else
2998int raw_read_stdin(void *buf,int siz)
2999 { return read(fileno(stdin),buf,siz); }
3000#endif
3001
3002#if defined(_WIN32) && defined(STD_OUTPUT_HANDLE)
3003int raw_write_stdout(const void *buf,int siz)
3004 {
3005 DWORD n;
3006 if (WriteFile(GetStdHandle(STD_OUTPUT_HANDLE),buf,siz,&n,NULL))
3007 return (n);
3008 else return (-1);
3009 }
3010#else
3011int raw_write_stdout(const void *buf,int siz)
3012 { return write(fileno(stdout),buf,siz); }
2569#endif 3013#endif
diff --git a/src/lib/libssl/src/apps/apps.h b/src/lib/libssl/src/apps/apps.h
index 88579094b1..596a39aceb 100644
--- a/src/lib/libssl/src/apps/apps.h
+++ b/src/lib/libssl/src/apps/apps.h
@@ -137,11 +137,6 @@ long app_RAND_load_files(char *file); /* `file' is a list of files to read,
137 * (see e_os.h). The string is 137 * (see e_os.h). The string is
138 * destroyed! */ 138 * destroyed! */
139 139
140#ifdef OPENSSL_SYS_WIN32
141#define rename(from,to) WIN32_rename((from),(to))
142int WIN32_rename(const char *oldname,const char *newname);
143#endif
144
145#ifndef MONOLITH 140#ifndef MONOLITH
146 141
147#define MAIN(a,v) main(a,v) 142#define MAIN(a,v) main(a,v)
@@ -149,11 +144,9 @@ int WIN32_rename(const char *oldname,const char *newname);
149#ifndef NON_MAIN 144#ifndef NON_MAIN
150CONF *config=NULL; 145CONF *config=NULL;
151BIO *bio_err=NULL; 146BIO *bio_err=NULL;
152int in_FIPS_mode=0;
153#else 147#else
154extern CONF *config; 148extern CONF *config;
155extern BIO *bio_err; 149extern BIO *bio_err;
156extern int in_FIPS_mode;
157#endif 150#endif
158 151
159#else 152#else
@@ -162,7 +155,6 @@ extern int in_FIPS_mode;
162extern CONF *config; 155extern CONF *config;
163extern char *default_config_file; 156extern char *default_config_file;
164extern BIO *bio_err; 157extern BIO *bio_err;
165extern int in_FIPS_mode;
166 158
167#endif 159#endif
168 160
@@ -176,61 +168,37 @@ extern int in_FIPS_mode;
176#define do_pipe_sig() 168#define do_pipe_sig()
177#endif 169#endif
178 170
171#ifdef OPENSSL_NO_COMP
172#define zlib_cleanup()
173#else
174#define zlib_cleanup() COMP_zlib_cleanup()
175#endif
176
179#if defined(MONOLITH) && !defined(OPENSSL_C) 177#if defined(MONOLITH) && !defined(OPENSSL_C)
180# define apps_startup() \ 178# define apps_startup() \
181 do_pipe_sig() 179 do_pipe_sig()
182# define apps_shutdown() 180# define apps_shutdown()
183#else 181#else
184# ifndef OPENSSL_NO_ENGINE 182# ifndef OPENSSL_NO_ENGINE
185# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WIN16) || \ 183# define apps_startup() \
186 defined(OPENSSL_SYS_WIN32) 184 do { do_pipe_sig(); CRYPTO_malloc_init(); \
187# ifdef _O_BINARY
188# define apps_startup() \
189 do { _fmode=_O_BINARY; do_pipe_sig(); CRYPTO_malloc_init(); \
190 ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \
191 ENGINE_load_builtin_engines(); setup_ui_method(); } while(0)
192# else
193# define apps_startup() \
194 do { _fmode=O_BINARY; do_pipe_sig(); CRYPTO_malloc_init(); \
195 ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \ 185 ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \
196 ENGINE_load_builtin_engines(); setup_ui_method(); } while(0) 186 ENGINE_load_builtin_engines(); setup_ui_method(); } while(0)
197# endif
198# else
199# define apps_startup() \
200 do { do_pipe_sig(); OpenSSL_add_all_algorithms(); \
201 ERR_load_crypto_strings(); ENGINE_load_builtin_engines(); \
202 setup_ui_method(); } while(0)
203# endif
204# define apps_shutdown() \ 187# define apps_shutdown() \
205 do { CONF_modules_unload(1); destroy_ui_method(); \ 188 do { CONF_modules_unload(1); destroy_ui_method(); \
206 EVP_cleanup(); ENGINE_cleanup(); \ 189 OBJ_cleanup(); EVP_cleanup(); ENGINE_cleanup(); \
207 CRYPTO_cleanup_all_ex_data(); ERR_remove_state(0); \ 190 CRYPTO_cleanup_all_ex_data(); ERR_remove_thread_state(NULL); \
208 ERR_free_strings(); } while(0) 191 ERR_free_strings(); zlib_cleanup();} while(0)
209# else 192# else
210# if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WIN16) || \ 193# define apps_startup() \
211 defined(OPENSSL_SYS_WIN32) 194 do { do_pipe_sig(); CRYPTO_malloc_init(); \
212# ifdef _O_BINARY
213# define apps_startup() \
214 do { _fmode=_O_BINARY; do_pipe_sig(); CRYPTO_malloc_init(); \
215 ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \ 195 ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \
216 setup_ui_method(); } while(0) 196 setup_ui_method(); } while(0)
217# else
218# define apps_startup() \
219 do { _fmode=O_BINARY; do_pipe_sig(); CRYPTO_malloc_init(); \
220 ERR_load_crypto_strings(); OpenSSL_add_all_algorithms(); \
221 setup_ui_method(); } while(0)
222# endif
223# else
224# define apps_startup() \
225 do { do_pipe_sig(); OpenSSL_add_all_algorithms(); \
226 ERR_load_crypto_strings(); \
227 setup_ui_method(); } while(0)
228# endif
229# define apps_shutdown() \ 197# define apps_shutdown() \
230 do { CONF_modules_unload(1); destroy_ui_method(); \ 198 do { CONF_modules_unload(1); destroy_ui_method(); \
231 EVP_cleanup(); \ 199 OBJ_cleanup(); EVP_cleanup(); \
232 CRYPTO_cleanup_all_ex_data(); ERR_remove_state(0); \ 200 CRYPTO_cleanup_all_ex_data(); ERR_remove_thread_state(NULL); \
233 ERR_free_strings(); } while(0) 201 ERR_free_strings(); zlib_cleanup(); } while(0)
234# endif 202# endif
235#endif 203#endif
236 204
@@ -240,6 +208,7 @@ extern int in_FIPS_mode;
240# define openssl_fdset(a,b) FD_SET(a, b) 208# define openssl_fdset(a,b) FD_SET(a, b)
241#endif 209#endif
242 210
211
243typedef struct args_st 212typedef struct args_st
244 { 213 {
245 char **data; 214 char **data;
@@ -282,6 +251,8 @@ EVP_PKEY *load_pubkey(BIO *err, const char *file, int format, int maybe_stdin,
282 const char *pass, ENGINE *e, const char *key_descrip); 251 const char *pass, ENGINE *e, const char *key_descrip);
283STACK_OF(X509) *load_certs(BIO *err, const char *file, int format, 252STACK_OF(X509) *load_certs(BIO *err, const char *file, int format,
284 const char *pass, ENGINE *e, const char *cert_descrip); 253 const char *pass, ENGINE *e, const char *cert_descrip);
254STACK_OF(X509_CRL) *load_crls(BIO *err, const char *file, int format,
255 const char *pass, ENGINE *e, const char *cert_descrip);
285X509_STORE *setup_verify(BIO *bp, char *CAfile, char *CApath); 256X509_STORE *setup_verify(BIO *bp, char *CAfile, char *CApath);
286#ifndef OPENSSL_NO_ENGINE 257#ifndef OPENSSL_NO_ENGINE
287ENGINE *setup_engine(BIO *err, const char *engine, int debug); 258ENGINE *setup_engine(BIO *err, const char *engine, int debug);
@@ -290,6 +261,7 @@ ENGINE *setup_engine(BIO *err, const char *engine, int debug);
290#ifndef OPENSSL_NO_OCSP 261#ifndef OPENSSL_NO_OCSP
291OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req, 262OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req,
292 char *host, char *path, char *port, int use_ssl, 263 char *host, char *path, char *port, int use_ssl,
264 STACK_OF(CONF_VALUE) *headers,
293 int req_timeout); 265 int req_timeout);
294#endif 266#endif
295 267
@@ -331,13 +303,23 @@ int index_index(CA_DB *db);
331int save_index(const char *dbfile, const char *suffix, CA_DB *db); 303int save_index(const char *dbfile, const char *suffix, CA_DB *db);
332int rotate_index(const char *dbfile, const char *new_suffix, const char *old_suffix); 304int rotate_index(const char *dbfile, const char *new_suffix, const char *old_suffix);
333void free_index(CA_DB *db); 305void free_index(CA_DB *db);
334int index_name_cmp(const char **a, const char **b); 306#define index_name_cmp_noconst(a, b) \
307 index_name_cmp((const OPENSSL_CSTRING *)CHECKED_PTR_OF(OPENSSL_STRING, a), \
308 (const OPENSSL_CSTRING *)CHECKED_PTR_OF(OPENSSL_STRING, b))
309int index_name_cmp(const OPENSSL_CSTRING *a, const OPENSSL_CSTRING *b);
335int parse_yesno(const char *str, int def); 310int parse_yesno(const char *str, int def);
336 311
337X509_NAME *parse_name(char *str, long chtype, int multirdn); 312X509_NAME *parse_name(char *str, long chtype, int multirdn);
338int args_verify(char ***pargs, int *pargc, 313int args_verify(char ***pargs, int *pargc,
339 int *badarg, BIO *err, X509_VERIFY_PARAM **pm); 314 int *badarg, BIO *err, X509_VERIFY_PARAM **pm);
340void policies_print(BIO *out, X509_STORE_CTX *ctx); 315void policies_print(BIO *out, X509_STORE_CTX *ctx);
316int bio_to_mem(unsigned char **out, int maxlen, BIO *in);
317int pkey_ctrl_string(EVP_PKEY_CTX *ctx, char *value);
318int init_gen_str(BIO *err, EVP_PKEY_CTX **pctx,
319 const char *algname, ENGINE *e, int do_param);
320#ifndef OPENSSL_NO_PSK
321extern char *psk_key;
322#endif
341#ifndef OPENSSL_NO_JPAKE 323#ifndef OPENSSL_NO_JPAKE
342void jpake_client_auth(BIO *out, BIO *conn, const char *secret); 324void jpake_client_auth(BIO *out, BIO *conn, const char *secret);
343void jpake_server_auth(BIO *out, BIO *conn, const char *secret); 325void jpake_server_auth(BIO *out, BIO *conn, const char *secret);
@@ -353,6 +335,10 @@ void jpake_server_auth(BIO *out, BIO *conn, const char *secret);
353#define FORMAT_ENGINE 7 335#define FORMAT_ENGINE 7
354#define FORMAT_IISSGC 8 /* XXX this stupid macro helps us to avoid 336#define FORMAT_IISSGC 8 /* XXX this stupid macro helps us to avoid
355 * adding yet another param to load_*key() */ 337 * adding yet another param to load_*key() */
338#define FORMAT_PEMRSA 9 /* PEM RSAPubicKey format */
339#define FORMAT_ASN1RSA 10 /* DER RSAPubicKey format */
340#define FORMAT_MSBLOB 11 /* MS Key blob format */
341#define FORMAT_PVK 12 /* MS PVK file format */
356 342
357#define EXT_COPY_NONE 0 343#define EXT_COPY_NONE 0
358#define EXT_COPY_ADD 1 344#define EXT_COPY_ADD 1
@@ -364,4 +350,11 @@ void jpake_server_auth(BIO *out, BIO *conn, const char *secret);
364 350
365#define SERIAL_RAND_BITS 64 351#define SERIAL_RAND_BITS 64
366 352
353int app_isdir(const char *);
354int raw_read_stdin(void *,int);
355int raw_write_stdout(const void *,int);
356
357#define TM_START 0
358#define TM_STOP 1
359double app_tminterval (int stop,int usertime);
367#endif 360#endif
diff --git a/src/lib/libssl/src/apps/asn1pars.c b/src/lib/libssl/src/apps/asn1pars.c
index bde61d02d1..b5d65e725b 100644
--- a/src/lib/libssl/src/apps/asn1pars.c
+++ b/src/lib/libssl/src/apps/asn1pars.c
@@ -96,7 +96,7 @@ int MAIN(int argc, char **argv)
96 unsigned char *tmpbuf; 96 unsigned char *tmpbuf;
97 const unsigned char *ctmpbuf; 97 const unsigned char *ctmpbuf;
98 BUF_MEM *buf=NULL; 98 BUF_MEM *buf=NULL;
99 STACK *osk=NULL; 99 STACK_OF(OPENSSL_STRING) *osk=NULL;
100 ASN1_TYPE *at=NULL; 100 ASN1_TYPE *at=NULL;
101 101
102 informat=FORMAT_PEM; 102 informat=FORMAT_PEM;
@@ -113,7 +113,7 @@ int MAIN(int argc, char **argv)
113 prog=argv[0]; 113 prog=argv[0];
114 argc--; 114 argc--;
115 argv++; 115 argv++;
116 if ((osk=sk_new_null()) == NULL) 116 if ((osk=sk_OPENSSL_STRING_new_null()) == NULL)
117 { 117 {
118 BIO_printf(bio_err,"Memory allocation failure\n"); 118 BIO_printf(bio_err,"Memory allocation failure\n");
119 goto end; 119 goto end;
@@ -169,7 +169,7 @@ int MAIN(int argc, char **argv)
169 else if (strcmp(*argv,"-strparse") == 0) 169 else if (strcmp(*argv,"-strparse") == 0)
170 { 170 {
171 if (--argc < 1) goto bad; 171 if (--argc < 1) goto bad;
172 sk_push(osk,*(++argv)); 172 sk_OPENSSL_STRING_push(osk,*(++argv));
173 } 173 }
174 else if (strcmp(*argv,"-genstr") == 0) 174 else if (strcmp(*argv,"-genstr") == 0)
175 { 175 {
@@ -302,18 +302,18 @@ bad:
302 302
303 /* If any structs to parse go through in sequence */ 303 /* If any structs to parse go through in sequence */
304 304
305 if (sk_num(osk)) 305 if (sk_OPENSSL_STRING_num(osk))
306 { 306 {
307 tmpbuf=(unsigned char *)str; 307 tmpbuf=(unsigned char *)str;
308 tmplen=num; 308 tmplen=num;
309 for (i=0; i<sk_num(osk); i++) 309 for (i=0; i<sk_OPENSSL_STRING_num(osk); i++)
310 { 310 {
311 ASN1_TYPE *atmp; 311 ASN1_TYPE *atmp;
312 int typ; 312 int typ;
313 j=atoi(sk_value(osk,i)); 313 j=atoi(sk_OPENSSL_STRING_value(osk,i));
314 if (j == 0) 314 if (j == 0)
315 { 315 {
316 BIO_printf(bio_err,"'%s' is an invalid number\n",sk_value(osk,i)); 316 BIO_printf(bio_err,"'%s' is an invalid number\n",sk_OPENSSL_STRING_value(osk,i));
317 continue; 317 continue;
318 } 318 }
319 tmpbuf+=j; 319 tmpbuf+=j;
@@ -378,7 +378,7 @@ end:
378 ERR_print_errors(bio_err); 378 ERR_print_errors(bio_err);
379 if (buf != NULL) BUF_MEM_free(buf); 379 if (buf != NULL) BUF_MEM_free(buf);
380 if (at != NULL) ASN1_TYPE_free(at); 380 if (at != NULL) ASN1_TYPE_free(at);
381 if (osk != NULL) sk_free(osk); 381 if (osk != NULL) sk_OPENSSL_STRING_free(osk);
382 OBJ_cleanup(); 382 OBJ_cleanup();
383 apps_shutdown(); 383 apps_shutdown();
384 OPENSSL_EXIT(ret); 384 OPENSSL_EXIT(ret);
diff --git a/src/lib/libssl/src/apps/ca.c b/src/lib/libssl/src/apps/ca.c
index 68516ee9bd..6b8b0ef8fd 100644
--- a/src/lib/libssl/src/apps/ca.c
+++ b/src/lib/libssl/src/apps/ca.c
@@ -63,7 +63,6 @@
63#include <string.h> 63#include <string.h>
64#include <ctype.h> 64#include <ctype.h>
65#include <sys/types.h> 65#include <sys/types.h>
66#include <sys/stat.h>
67#include <openssl/conf.h> 66#include <openssl/conf.h>
68#include <openssl/bio.h> 67#include <openssl/bio.h>
69#include <openssl/err.h> 68#include <openssl/err.h>
@@ -83,7 +82,7 @@
83# else 82# else
84# include <unixlib.h> 83# include <unixlib.h>
85# endif 84# endif
86# elif !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_NETWARE) && !defined(__TANDEM) 85# elif !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_NETWARE)
87# include <sys/file.h> 86# include <sys/file.h>
88# endif 87# endif
89#endif 88#endif
@@ -216,7 +215,6 @@ static int certify_spkac(X509 **xret, char *infile,EVP_PKEY *pkey,X509 *x509,
216 char *startdate, char *enddate, long days, char *ext_sect, 215 char *startdate, char *enddate, long days, char *ext_sect,
217 CONF *conf, int verbose, unsigned long certopt, 216 CONF *conf, int verbose, unsigned long certopt,
218 unsigned long nameopt, int default_op, int ext_copy); 217 unsigned long nameopt, int default_op, int ext_copy);
219static int fix_data(int nid, int *type);
220static void write_new_certificate(BIO *bp, X509 *x, int output_der, int notext); 218static void write_new_certificate(BIO *bp, X509 *x, int output_der, int notext);
221static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst, 219static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
222 STACK_OF(CONF_VALUE) *policy, CA_DB *db, BIGNUM *serial,char *subj,unsigned long chtype, int multirdn, 220 STACK_OF(CONF_VALUE) *policy, CA_DB *db, BIGNUM *serial,char *subj,unsigned long chtype, int multirdn,
@@ -227,7 +225,7 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
227static int do_revoke(X509 *x509, CA_DB *db, int ext, char *extval); 225static int do_revoke(X509 *x509, CA_DB *db, int ext, char *extval);
228static int get_certificate_status(const char *ser_status, CA_DB *db); 226static int get_certificate_status(const char *ser_status, CA_DB *db);
229static int do_updatedb(CA_DB *db); 227static int do_updatedb(CA_DB *db);
230static int check_time_format(char *str); 228static int check_time_format(const char *str);
231char *make_revocation_str(int rev_type, char *rev_arg); 229char *make_revocation_str(int rev_type, char *rev_arg);
232int make_revoked(X509_REVOKED *rev, const char *str); 230int make_revoked(X509_REVOKED *rev, const char *str);
233int old_entry_print(BIO *bp, ASN1_OBJECT *obj, ASN1_STRING *str); 231int old_entry_print(BIO *bp, ASN1_OBJECT *obj, ASN1_STRING *str);
@@ -259,6 +257,7 @@ int MAIN(int argc, char **argv)
259 int doupdatedb=0; 257 int doupdatedb=0;
260 long crldays=0; 258 long crldays=0;
261 long crlhours=0; 259 long crlhours=0;
260 long crlsec=0;
262 long errorline= -1; 261 long errorline= -1;
263 char *configfile=NULL; 262 char *configfile=NULL;
264 char *md=NULL; 263 char *md=NULL;
@@ -306,7 +305,8 @@ int MAIN(int argc, char **argv)
306 ASN1_TIME *tmptm; 305 ASN1_TIME *tmptm;
307 ASN1_INTEGER *tmpser; 306 ASN1_INTEGER *tmpser;
308 char *f; 307 char *f;
309 const char *p, **pp; 308 const char *p;
309 char * const *pp;
310 int i,j; 310 int i,j;
311 const EVP_MD *dgst=NULL; 311 const EVP_MD *dgst=NULL;
312 STACK_OF(CONF_VALUE) *attribs=NULL; 312 STACK_OF(CONF_VALUE) *attribs=NULL;
@@ -457,6 +457,11 @@ EF_ALIGNMENT=0;
457 if (--argc < 1) goto bad; 457 if (--argc < 1) goto bad;
458 crlhours= atol(*(++argv)); 458 crlhours= atol(*(++argv));
459 } 459 }
460 else if (strcmp(*argv,"-crlsec") == 0)
461 {
462 if (--argc < 1) goto bad;
463 crlsec = atol(*(++argv));
464 }
460 else if (strcmp(*argv,"-infiles") == 0) 465 else if (strcmp(*argv,"-infiles") == 0)
461 { 466 {
462 argc--; 467 argc--;
@@ -550,8 +555,10 @@ bad:
550 555
551 if (badops) 556 if (badops)
552 { 557 {
553 for (pp=ca_usage; (*pp != NULL); pp++) 558 const char **pp2;
554 BIO_printf(bio_err,"%s",*pp); 559
560 for (pp2=ca_usage; (*pp2 != NULL); pp2++)
561 BIO_printf(bio_err,"%s",*pp2);
555 goto err; 562 goto err;
556 } 563 }
557 564
@@ -826,7 +833,6 @@ bad:
826 /* lookup where to write new certificates */ 833 /* lookup where to write new certificates */
827 if ((outdir == NULL) && (req)) 834 if ((outdir == NULL) && (req))
828 { 835 {
829 struct stat sb;
830 836
831 if ((outdir=NCONF_get_string(conf,section,ENV_NEW_CERTS_DIR)) 837 if ((outdir=NCONF_get_string(conf,section,ENV_NEW_CERTS_DIR))
832 == NULL) 838 == NULL)
@@ -845,28 +851,24 @@ bad:
845 that to access(). However, time's too short to do that just 851 that to access(). However, time's too short to do that just
846 now. 852 now.
847 */ 853 */
854#ifndef _WIN32
848 if (access(outdir,R_OK|W_OK|X_OK) != 0) 855 if (access(outdir,R_OK|W_OK|X_OK) != 0)
856#else
857 if (_access(outdir,R_OK|W_OK|X_OK) != 0)
858#endif
849 { 859 {
850 BIO_printf(bio_err,"I am unable to access the %s directory\n",outdir); 860 BIO_printf(bio_err,"I am unable to access the %s directory\n",outdir);
851 perror(outdir); 861 perror(outdir);
852 goto err; 862 goto err;
853 } 863 }
854 864
855 if (stat(outdir,&sb) != 0) 865 if (app_isdir(outdir)<=0)
856 {
857 BIO_printf(bio_err,"unable to stat(%s)\n",outdir);
858 perror(outdir);
859 goto err;
860 }
861#ifdef S_IFDIR
862 if (!(sb.st_mode & S_IFDIR))
863 { 866 {
864 BIO_printf(bio_err,"%s need to be a directory\n",outdir); 867 BIO_printf(bio_err,"%s need to be a directory\n",outdir);
865 perror(outdir); 868 perror(outdir);
866 goto err; 869 goto err;
867 } 870 }
868#endif 871#endif
869#endif
870 } 872 }
871 873
872 /*****************************************************************/ 874 /*****************************************************************/
@@ -880,9 +882,9 @@ bad:
880 if (db == NULL) goto err; 882 if (db == NULL) goto err;
881 883
882 /* Lets check some fields */ 884 /* Lets check some fields */
883 for (i=0; i<sk_num(db->db->data); i++) 885 for (i=0; i<sk_OPENSSL_PSTRING_num(db->db->data); i++)
884 { 886 {
885 pp=(const char **)sk_value(db->db->data,i); 887 pp=sk_OPENSSL_PSTRING_value(db->db->data,i);
886 if ((pp[DB_type][0] != DB_TYPE_REV) && 888 if ((pp[DB_type][0] != DB_TYPE_REV) &&
887 (pp[DB_rev_date][0] != '\0')) 889 (pp[DB_rev_date][0] != '\0'))
888 { 890 {
@@ -935,7 +937,7 @@ bad:
935#endif 937#endif
936 TXT_DB_write(out,db->db); 938 TXT_DB_write(out,db->db);
937 BIO_printf(bio_err,"%d entries loaded from the database\n", 939 BIO_printf(bio_err,"%d entries loaded from the database\n",
938 db->db->data->num); 940 sk_OPENSSL_PSTRING_num(db->db->data));
939 BIO_printf(bio_err,"generating index\n"); 941 BIO_printf(bio_err,"generating index\n");
940 } 942 }
941 943
@@ -1026,6 +1028,17 @@ bad:
1026 goto err; 1028 goto err;
1027 } 1029 }
1028 1030
1031 if (!strcmp(md, "default"))
1032 {
1033 int def_nid;
1034 if (EVP_PKEY_get_default_digest_nid(pkey, &def_nid) <= 0)
1035 {
1036 BIO_puts(bio_err,"no default digest\n");
1037 goto err;
1038 }
1039 md = (char *)OBJ_nid2sn(def_nid);
1040 }
1041
1029 if ((dgst=EVP_get_digestbyname(md)) == NULL) 1042 if ((dgst=EVP_get_digestbyname(md)) == NULL)
1030 { 1043 {
1031 BIO_printf(bio_err,"%s is an unsupported message digest type\n",md); 1044 BIO_printf(bio_err,"%s is an unsupported message digest type\n",md);
@@ -1095,9 +1108,9 @@ bad:
1095 if (startdate == NULL) 1108 if (startdate == NULL)
1096 ERR_clear_error(); 1109 ERR_clear_error();
1097 } 1110 }
1098 if (startdate && !ASN1_UTCTIME_set_string(NULL,startdate)) 1111 if (startdate && !ASN1_TIME_set_string(NULL, startdate))
1099 { 1112 {
1100 BIO_printf(bio_err,"start date is invalid, it should be YYMMDDHHMMSSZ\n"); 1113 BIO_printf(bio_err,"start date is invalid, it should be YYMMDDHHMMSSZ or YYYYMMDDHHMMSSZ\n");
1101 goto err; 1114 goto err;
1102 } 1115 }
1103 if (startdate == NULL) startdate="today"; 1116 if (startdate == NULL) startdate="today";
@@ -1109,9 +1122,9 @@ bad:
1109 if (enddate == NULL) 1122 if (enddate == NULL)
1110 ERR_clear_error(); 1123 ERR_clear_error();
1111 } 1124 }
1112 if (enddate && !ASN1_UTCTIME_set_string(NULL,enddate)) 1125 if (enddate && !ASN1_TIME_set_string(NULL, enddate))
1113 { 1126 {
1114 BIO_printf(bio_err,"end date is invalid, it should be YYMMDDHHMMSSZ\n"); 1127 BIO_printf(bio_err,"end date is invalid, it should be YYMMDDHHMMSSZ or YYYYMMDDHHMMSSZ\n");
1115 goto err; 1128 goto err;
1116 } 1129 }
1117 1130
@@ -1249,7 +1262,12 @@ bad:
1249 BIO_printf(bio_err,"\n%d out of %d certificate requests certified, commit? [y/n]",total_done,total); 1262 BIO_printf(bio_err,"\n%d out of %d certificate requests certified, commit? [y/n]",total_done,total);
1250 (void)BIO_flush(bio_err); 1263 (void)BIO_flush(bio_err);
1251 buf[0][0]='\0'; 1264 buf[0][0]='\0';
1252 fgets(buf[0],10,stdin); 1265 if (!fgets(buf[0],10,stdin))
1266 {
1267 BIO_printf(bio_err,"CERTIFICATION CANCELED: I/O error\n");
1268 ret=0;
1269 goto err;
1270 }
1253 if ((buf[0][0] != 'y') && (buf[0][0] != 'Y')) 1271 if ((buf[0][0] != 'y') && (buf[0][0] != 'Y'))
1254 { 1272 {
1255 BIO_printf(bio_err,"CERTIFICATION CANCELED\n"); 1273 BIO_printf(bio_err,"CERTIFICATION CANCELED\n");
@@ -1366,7 +1384,7 @@ bad:
1366 goto err; 1384 goto err;
1367 } 1385 }
1368 1386
1369 if (!crldays && !crlhours) 1387 if (!crldays && !crlhours && !crlsec)
1370 { 1388 {
1371 if (!NCONF_get_number(conf,section, 1389 if (!NCONF_get_number(conf,section,
1372 ENV_DEFAULT_CRL_DAYS, &crldays)) 1390 ENV_DEFAULT_CRL_DAYS, &crldays))
@@ -1375,7 +1393,7 @@ bad:
1375 ENV_DEFAULT_CRL_HOURS, &crlhours)) 1393 ENV_DEFAULT_CRL_HOURS, &crlhours))
1376 crlhours = 0; 1394 crlhours = 0;
1377 } 1395 }
1378 if ((crldays == 0) && (crlhours == 0)) 1396 if ((crldays == 0) && (crlhours == 0) && (crlsec == 0))
1379 { 1397 {
1380 BIO_printf(bio_err,"cannot lookup how long until the next CRL is issued\n"); 1398 BIO_printf(bio_err,"cannot lookup how long until the next CRL is issued\n");
1381 goto err; 1399 goto err;
@@ -1389,14 +1407,19 @@ bad:
1389 if (!tmptm) goto err; 1407 if (!tmptm) goto err;
1390 X509_gmtime_adj(tmptm,0); 1408 X509_gmtime_adj(tmptm,0);
1391 X509_CRL_set_lastUpdate(crl, tmptm); 1409 X509_CRL_set_lastUpdate(crl, tmptm);
1392 X509_gmtime_adj(tmptm,(crldays*24+crlhours)*60*60); 1410 if (!X509_time_adj_ex(tmptm, crldays, crlhours*60*60 + crlsec,
1411 NULL))
1412 {
1413 BIO_puts(bio_err, "error setting CRL nextUpdate\n");
1414 goto err;
1415 }
1393 X509_CRL_set_nextUpdate(crl, tmptm); 1416 X509_CRL_set_nextUpdate(crl, tmptm);
1394 1417
1395 ASN1_TIME_free(tmptm); 1418 ASN1_TIME_free(tmptm);
1396 1419
1397 for (i=0; i<sk_num(db->db->data); i++) 1420 for (i=0; i<sk_OPENSSL_PSTRING_num(db->db->data); i++)
1398 { 1421 {
1399 pp=(const char **)sk_value(db->db->data,i); 1422 pp=sk_OPENSSL_PSTRING_value(db->db->data,i);
1400 if (pp[DB_type][0] == DB_TYPE_REV) 1423 if (pp[DB_type][0] == DB_TYPE_REV)
1401 { 1424 {
1402 if ((r=X509_REVOKED_new()) == NULL) goto err; 1425 if ((r=X509_REVOKED_new()) == NULL) goto err;
@@ -1422,15 +1445,6 @@ bad:
1422 1445
1423 /* we now have a CRL */ 1446 /* we now have a CRL */
1424 if (verbose) BIO_printf(bio_err,"signing CRL\n"); 1447 if (verbose) BIO_printf(bio_err,"signing CRL\n");
1425#ifndef OPENSSL_NO_DSA
1426 if (pkey->type == EVP_PKEY_DSA)
1427 dgst=EVP_dss1();
1428 else
1429#endif
1430#ifndef OPENSSL_NO_ECDSA
1431 if (pkey->type == EVP_PKEY_EC)
1432 dgst=EVP_ecdsa();
1433#endif
1434 1448
1435 /* Add any extensions asked for */ 1449 /* Add any extensions asked for */
1436 1450
@@ -1463,6 +1477,12 @@ bad:
1463 if (crlnumberfile != NULL) /* we have a CRL number that need updating */ 1477 if (crlnumberfile != NULL) /* we have a CRL number that need updating */
1464 if (!save_serial(crlnumberfile,"new",crlnumber,NULL)) goto err; 1478 if (!save_serial(crlnumberfile,"new",crlnumber,NULL)) goto err;
1465 1479
1480 if (crlnumber)
1481 {
1482 BN_free(crlnumber);
1483 crlnumber = NULL;
1484 }
1485
1466 if (!X509_CRL_sign(crl,pkey,dgst)) goto err; 1486 if (!X509_CRL_sign(crl,pkey,dgst)) goto err;
1467 1487
1468 PEM_write_bio_X509_CRL(Sout,crl); 1488 PEM_write_bio_X509_CRL(Sout,crl);
@@ -1515,6 +1535,7 @@ err:
1515 if (free_key && key) 1535 if (free_key && key)
1516 OPENSSL_free(key); 1536 OPENSSL_free(key);
1517 BN_free(serial); 1537 BN_free(serial);
1538 BN_free(crlnumber);
1518 free_index(db); 1539 free_index(db);
1519 EVP_PKEY_free(pkey); 1540 EVP_PKEY_free(pkey);
1520 if (x509) X509_free(x509); 1541 if (x509) X509_free(x509);
@@ -1673,7 +1694,9 @@ static int do_body(X509 **xret, EVP_PKEY *pkey, X509 *x509, const EVP_MD *dgst,
1673 int ok= -1,i,j,last,nid; 1694 int ok= -1,i,j,last,nid;
1674 const char *p; 1695 const char *p;
1675 CONF_VALUE *cv; 1696 CONF_VALUE *cv;
1676 char *row[DB_NUMBER],**rrow=NULL,**irow=NULL; 1697 OPENSSL_STRING row[DB_NUMBER];
1698 OPENSSL_STRING *irow=NULL;
1699 OPENSSL_STRING *rrow=NULL;
1677 char buf[25]; 1700 char buf[25];
1678 1701
1679 tmptm=ASN1_UTCTIME_new(); 1702 tmptm=ASN1_UTCTIME_new();
@@ -1915,7 +1938,9 @@ again2:
1915 1938
1916 if (db->attributes.unique_subject) 1939 if (db->attributes.unique_subject)
1917 { 1940 {
1918 rrow=TXT_DB_get_by_index(db->db,DB_name,row); 1941 OPENSSL_STRING *crow=row;
1942
1943 rrow=TXT_DB_get_by_index(db->db,DB_name,crow);
1919 if (rrow != NULL) 1944 if (rrow != NULL)
1920 { 1945 {
1921 BIO_printf(bio_err, 1946 BIO_printf(bio_err,
@@ -1991,11 +2016,11 @@ again2:
1991 2016
1992 if (strcmp(startdate,"today") == 0) 2017 if (strcmp(startdate,"today") == 0)
1993 X509_gmtime_adj(X509_get_notBefore(ret),0); 2018 X509_gmtime_adj(X509_get_notBefore(ret),0);
1994 else ASN1_UTCTIME_set_string(X509_get_notBefore(ret),startdate); 2019 else ASN1_TIME_set_string(X509_get_notBefore(ret),startdate);
1995 2020
1996 if (enddate == NULL) 2021 if (enddate == NULL)
1997 X509_gmtime_adj(X509_get_notAfter(ret),(long)60*60*24*days); 2022 X509_time_adj_ex(X509_get_notAfter(ret),days, 0, NULL);
1998 else ASN1_UTCTIME_set_string(X509_get_notAfter(ret),enddate); 2023 else ASN1_TIME_set_string(X509_get_notAfter(ret),enddate);
1999 2024
2000 if (!X509_set_subject_name(ret,subject)) goto err; 2025 if (!X509_set_subject_name(ret,subject)) goto err;
2001 2026
@@ -2091,7 +2116,7 @@ again2:
2091 } 2116 }
2092 2117
2093 BIO_printf(bio_err,"Certificate is to be certified until "); 2118 BIO_printf(bio_err,"Certificate is to be certified until ");
2094 ASN1_UTCTIME_print(bio_err,X509_get_notAfter(ret)); 2119 ASN1_TIME_print(bio_err,X509_get_notAfter(ret));
2095 if (days) BIO_printf(bio_err," (%ld days)",days); 2120 if (days) BIO_printf(bio_err," (%ld days)",days);
2096 BIO_printf(bio_err, "\n"); 2121 BIO_printf(bio_err, "\n");
2097 2122
@@ -2101,7 +2126,12 @@ again2:
2101 BIO_printf(bio_err,"Sign the certificate? [y/n]:"); 2126 BIO_printf(bio_err,"Sign the certificate? [y/n]:");
2102 (void)BIO_flush(bio_err); 2127 (void)BIO_flush(bio_err);
2103 buf[0]='\0'; 2128 buf[0]='\0';
2104 fgets(buf,sizeof(buf)-1,stdin); 2129 if (!fgets(buf,sizeof(buf)-1,stdin))
2130 {
2131 BIO_printf(bio_err,"CERTIFICATE WILL NOT BE CERTIFIED: I/O error\n");
2132 ok=0;
2133 goto err;
2134 }
2105 if (!((buf[0] == 'y') || (buf[0] == 'Y'))) 2135 if (!((buf[0] == 'y') || (buf[0] == 'Y')))
2106 { 2136 {
2107 BIO_printf(bio_err,"CERTIFICATE WILL NOT BE CERTIFIED\n"); 2137 BIO_printf(bio_err,"CERTIFICATE WILL NOT BE CERTIFIED\n");
@@ -2110,25 +2140,11 @@ again2:
2110 } 2140 }
2111 } 2141 }
2112 2142
2113
2114#ifndef OPENSSL_NO_DSA
2115 if (pkey->type == EVP_PKEY_DSA) dgst=EVP_dss1();
2116 pktmp=X509_get_pubkey(ret); 2143 pktmp=X509_get_pubkey(ret);
2117 if (EVP_PKEY_missing_parameters(pktmp) && 2144 if (EVP_PKEY_missing_parameters(pktmp) &&
2118 !EVP_PKEY_missing_parameters(pkey)) 2145 !EVP_PKEY_missing_parameters(pkey))
2119 EVP_PKEY_copy_parameters(pktmp,pkey); 2146 EVP_PKEY_copy_parameters(pktmp,pkey);
2120 EVP_PKEY_free(pktmp); 2147 EVP_PKEY_free(pktmp);
2121#endif
2122#ifndef OPENSSL_NO_ECDSA
2123 if (pkey->type == EVP_PKEY_EC)
2124 dgst = EVP_ecdsa();
2125 pktmp = X509_get_pubkey(ret);
2126 if (EVP_PKEY_missing_parameters(pktmp) &&
2127 !EVP_PKEY_missing_parameters(pkey))
2128 EVP_PKEY_copy_parameters(pktmp, pkey);
2129 EVP_PKEY_free(pktmp);
2130#endif
2131
2132 2148
2133 if (!X509_sign(ret,pkey,dgst)) 2149 if (!X509_sign(ret,pkey,dgst))
2134 goto err; 2150 goto err;
@@ -2230,7 +2246,7 @@ static int certify_spkac(X509 **xret, char *infile, EVP_PKEY *pkey, X509 *x509,
2230 unsigned long nameopt, int default_op, int ext_copy) 2246 unsigned long nameopt, int default_op, int ext_copy)
2231 { 2247 {
2232 STACK_OF(CONF_VALUE) *sk=NULL; 2248 STACK_OF(CONF_VALUE) *sk=NULL;
2233 LHASH *parms=NULL; 2249 LHASH_OF(CONF_VALUE) *parms=NULL;
2234 X509_REQ *req=NULL; 2250 X509_REQ *req=NULL;
2235 CONF_VALUE *cv=NULL; 2251 CONF_VALUE *cv=NULL;
2236 NETSCAPE_SPKI *spki = NULL; 2252 NETSCAPE_SPKI *spki = NULL;
@@ -2317,25 +2333,9 @@ static int certify_spkac(X509 **xret, char *infile, EVP_PKEY *pkey, X509 *x509,
2317 continue; 2333 continue;
2318 } 2334 }
2319 2335
2320 /* 2336 if (!X509_NAME_add_entry_by_NID(n, nid, chtype,
2321 if ((nid == NID_pkcs9_emailAddress) && (email_dn == 0)) 2337 (unsigned char *)buf, -1, -1, 0))
2322 continue;
2323 */
2324
2325 j=ASN1_PRINTABLE_type((unsigned char *)buf,-1);
2326 if (fix_data(nid, &j) == 0)
2327 {
2328 BIO_printf(bio_err,
2329 "invalid characters in string %s\n",buf);
2330 goto err;
2331 }
2332
2333 if ((ne=X509_NAME_ENTRY_create_by_NID(&ne,nid,j,
2334 (unsigned char *)buf,
2335 strlen(buf))) == NULL)
2336 goto err; 2338 goto err;
2337
2338 if (!X509_NAME_add_entry(n,ne,-1, 0)) goto err;
2339 } 2339 }
2340 if (spki == NULL) 2340 if (spki == NULL)
2341 { 2341 {
@@ -2378,29 +2378,9 @@ err:
2378 return(ok); 2378 return(ok);
2379 } 2379 }
2380 2380
2381static int fix_data(int nid, int *type) 2381static int check_time_format(const char *str)
2382 { 2382 {
2383 if (nid == NID_pkcs9_emailAddress) 2383 return ASN1_TIME_set_string(NULL, str);
2384 *type=V_ASN1_IA5STRING;
2385 if ((nid == NID_commonName) && (*type == V_ASN1_IA5STRING))
2386 *type=V_ASN1_T61STRING;
2387 if ((nid == NID_pkcs9_challengePassword) && (*type == V_ASN1_IA5STRING))
2388 *type=V_ASN1_T61STRING;
2389 if ((nid == NID_pkcs9_unstructuredName) && (*type == V_ASN1_T61STRING))
2390 return(0);
2391 if (nid == NID_pkcs9_unstructuredName)
2392 *type=V_ASN1_IA5STRING;
2393 return(1);
2394 }
2395
2396static int check_time_format(char *str)
2397 {
2398 ASN1_UTCTIME tm;
2399
2400 tm.data=(unsigned char *)str;
2401 tm.length=strlen(str);
2402 tm.type=V_ASN1_UTCTIME;
2403 return(ASN1_UTCTIME_check(&tm));
2404 } 2384 }
2405 2385
2406static int do_revoke(X509 *x509, CA_DB *db, int type, char *value) 2386static int do_revoke(X509 *x509, CA_DB *db, int type, char *value)
@@ -2415,6 +2395,8 @@ static int do_revoke(X509 *x509, CA_DB *db, int type, char *value)
2415 row[i]=NULL; 2395 row[i]=NULL;
2416 row[DB_name]=X509_NAME_oneline(X509_get_subject_name(x509),NULL,0); 2396 row[DB_name]=X509_NAME_oneline(X509_get_subject_name(x509),NULL,0);
2417 bn = ASN1_INTEGER_to_BN(X509_get_serialNumber(x509),NULL); 2397 bn = ASN1_INTEGER_to_BN(X509_get_serialNumber(x509),NULL);
2398 if (!bn)
2399 goto err;
2418 if (BN_is_zero(bn)) 2400 if (BN_is_zero(bn))
2419 row[DB_serial]=BUF_strdup("00"); 2401 row[DB_serial]=BUF_strdup("00");
2420 else 2402 else
@@ -2484,7 +2466,7 @@ static int do_revoke(X509 *x509, CA_DB *db, int type, char *value)
2484 goto err; 2466 goto err;
2485 2467
2486 } 2468 }
2487 else if (index_name_cmp((const char **)row,(const char **)rrow)) 2469 else if (index_name_cmp_noconst(row, rrow))
2488 { 2470 {
2489 BIO_printf(bio_err,"ERROR:name does not match %s\n", 2471 BIO_printf(bio_err,"ERROR:name does not match %s\n",
2490 row[DB_name]); 2472 row[DB_name]);
@@ -2633,9 +2615,9 @@ static int do_updatedb (CA_DB *db)
2633 else 2615 else
2634 a_y2k = 0; 2616 a_y2k = 0;
2635 2617
2636 for (i = 0; i < sk_num(db->db->data); i++) 2618 for (i = 0; i < sk_OPENSSL_PSTRING_num(db->db->data); i++)
2637 { 2619 {
2638 rrow = (char **) sk_value(db->db->data, i); 2620 rrow = sk_OPENSSL_PSTRING_value(db->db->data, i);
2639 2621
2640 if (rrow[DB_type][0] == 'V') 2622 if (rrow[DB_type][0] == 'V')
2641 { 2623 {
@@ -2882,22 +2864,13 @@ int old_entry_print(BIO *bp, ASN1_OBJECT *obj, ASN1_STRING *str)
2882 p=(char *)str->data; 2864 p=(char *)str->data;
2883 for (j=str->length; j>0; j--) 2865 for (j=str->length; j>0; j--)
2884 { 2866 {
2885#ifdef CHARSET_EBCDIC
2886 if ((*p >= 0x20) && (*p <= 0x7e))
2887 BIO_printf(bp,"%c",os_toebcdic[*p]);
2888#else
2889 if ((*p >= ' ') && (*p <= '~')) 2867 if ((*p >= ' ') && (*p <= '~'))
2890 BIO_printf(bp,"%c",*p); 2868 BIO_printf(bp,"%c",*p);
2891#endif
2892 else if (*p & 0x80) 2869 else if (*p & 0x80)
2893 BIO_printf(bp,"\\0x%02X",*p); 2870 BIO_printf(bp,"\\0x%02X",*p);
2894 else if ((unsigned char)*p == 0xf7) 2871 else if ((unsigned char)*p == 0xf7)
2895 BIO_printf(bp,"^?"); 2872 BIO_printf(bp,"^?");
2896#ifdef CHARSET_EBCDIC
2897 else BIO_printf(bp,"^%c",os_toebcdic[*p+0x40]);
2898#else
2899 else BIO_printf(bp,"^%c",*p+'@'); 2873 else BIO_printf(bp,"^%c",*p+'@');
2900#endif
2901 p++; 2874 p++;
2902 } 2875 }
2903 BIO_printf(bp,"'\n"); 2876 BIO_printf(bp,"'\n");
diff --git a/src/lib/libssl/src/apps/ciphers.c b/src/lib/libssl/src/apps/ciphers.c
index 43f0ac594a..3d4c60db9e 100644
--- a/src/lib/libssl/src/apps/ciphers.c
+++ b/src/lib/libssl/src/apps/ciphers.c
@@ -71,7 +71,8 @@
71 71
72static const char *ciphers_usage[]={ 72static const char *ciphers_usage[]={
73"usage: ciphers args\n", 73"usage: ciphers args\n",
74" -v - verbose mode, a textual listing of the ciphers in SSLeay\n", 74" -v - verbose mode, a textual listing of the SSL/TLS ciphers in OpenSSL\n",
75" -V - even more verbose\n",
75" -ssl2 - SSL2 mode\n", 76" -ssl2 - SSL2 mode\n",
76" -ssl3 - SSL3 mode\n", 77" -ssl3 - SSL3 mode\n",
77" -tls1 - TLS1 mode\n", 78" -tls1 - TLS1 mode\n",
@@ -83,14 +84,14 @@ int MAIN(int, char **);
83int MAIN(int argc, char **argv) 84int MAIN(int argc, char **argv)
84 { 85 {
85 int ret=1,i; 86 int ret=1,i;
86 int verbose=0; 87 int verbose=0,Verbose=0;
87 const char **pp; 88 const char **pp;
88 const char *p; 89 const char *p;
89 int badops=0; 90 int badops=0;
90 SSL_CTX *ctx=NULL; 91 SSL_CTX *ctx=NULL;
91 SSL *ssl=NULL; 92 SSL *ssl=NULL;
92 char *ciphers=NULL; 93 char *ciphers=NULL;
93 SSL_METHOD *meth=NULL; 94 const SSL_METHOD *meth=NULL;
94 STACK_OF(SSL_CIPHER) *sk; 95 STACK_OF(SSL_CIPHER) *sk;
95 char buf[512]; 96 char buf[512];
96 BIO *STDout=NULL; 97 BIO *STDout=NULL;
@@ -114,6 +115,8 @@ int MAIN(int argc, char **argv)
114 STDout = BIO_push(tmpbio, STDout); 115 STDout = BIO_push(tmpbio, STDout);
115 } 116 }
116#endif 117#endif
118 if (!load_config(bio_err, NULL))
119 goto end;
117 120
118 argc--; 121 argc--;
119 argv++; 122 argv++;
@@ -121,6 +124,8 @@ int MAIN(int argc, char **argv)
121 { 124 {
122 if (strcmp(*argv,"-v") == 0) 125 if (strcmp(*argv,"-v") == 0)
123 verbose=1; 126 verbose=1;
127 else if (strcmp(*argv,"-V") == 0)
128 verbose=Verbose=1;
124#ifndef OPENSSL_NO_SSL2 129#ifndef OPENSSL_NO_SSL2
125 else if (strcmp(*argv,"-ssl2") == 0) 130 else if (strcmp(*argv,"-ssl2") == 0)
126 meth=SSLv2_client_method(); 131 meth=SSLv2_client_method();
@@ -179,15 +184,33 @@ int MAIN(int argc, char **argv)
179 } 184 }
180 BIO_printf(STDout,"\n"); 185 BIO_printf(STDout,"\n");
181 } 186 }
182 else 187 else /* verbose */
183 { 188 {
184 sk=SSL_get_ciphers(ssl); 189 sk=SSL_get_ciphers(ssl);
185 190
186 for (i=0; i<sk_SSL_CIPHER_num(sk); i++) 191 for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
187 { 192 {
188 BIO_puts(STDout,SSL_CIPHER_description( 193 SSL_CIPHER *c;
189 sk_SSL_CIPHER_value(sk,i), 194
190 buf,sizeof buf)); 195 c = sk_SSL_CIPHER_value(sk,i);
196
197 if (Verbose)
198 {
199 unsigned long id = c->id;
200 int id0 = (int)(id >> 24);
201 int id1 = (int)((id >> 16) & 0xffL);
202 int id2 = (int)((id >> 8) & 0xffL);
203 int id3 = (int)(id & 0xffL);
204
205 if ((id & 0xff000000L) == 0x02000000L)
206 BIO_printf(STDout, " 0x%02X,0x%02X,0x%02X - ", id1, id2, id3); /* SSL2 cipher */
207 else if ((id & 0xff000000L) == 0x03000000L)
208 BIO_printf(STDout, " 0x%02X,0x%02X - ", id2, id3); /* SSL3 cipher */
209 else
210 BIO_printf(STDout, "0x%02X,0x%02X,0x%02X,0x%02X - ", id0, id1, id2, id3); /* whatever */
211 }
212
213 BIO_puts(STDout,SSL_CIPHER_description(c,buf,sizeof buf));
191 } 214 }
192 } 215 }
193 216
diff --git a/src/lib/libssl/src/apps/crl2p7.c b/src/lib/libssl/src/apps/crl2p7.c
index b2f2d121d5..bbc83774db 100644
--- a/src/lib/libssl/src/apps/crl2p7.c
+++ b/src/lib/libssl/src/apps/crl2p7.c
@@ -63,7 +63,6 @@
63#include <stdio.h> 63#include <stdio.h>
64#include <string.h> 64#include <string.h>
65#include <sys/types.h> 65#include <sys/types.h>
66#include <sys/stat.h>
67#include "apps.h" 66#include "apps.h"
68#include <openssl/err.h> 67#include <openssl/err.h>
69#include <openssl/evp.h> 68#include <openssl/evp.h>
@@ -93,7 +92,7 @@ int MAIN(int argc, char **argv)
93 PKCS7 *p7 = NULL; 92 PKCS7 *p7 = NULL;
94 PKCS7_SIGNED *p7s = NULL; 93 PKCS7_SIGNED *p7s = NULL;
95 X509_CRL *crl=NULL; 94 X509_CRL *crl=NULL;
96 STACK *certflst=NULL; 95 STACK_OF(OPENSSL_STRING) *certflst=NULL;
97 STACK_OF(X509_CRL) *crl_stack=NULL; 96 STACK_OF(X509_CRL) *crl_stack=NULL;
98 STACK_OF(X509) *cert_stack=NULL; 97 STACK_OF(X509) *cert_stack=NULL;
99 int ret=1,nocrl=0; 98 int ret=1,nocrl=0;
@@ -141,8 +140,8 @@ int MAIN(int argc, char **argv)
141 else if (strcmp(*argv,"-certfile") == 0) 140 else if (strcmp(*argv,"-certfile") == 0)
142 { 141 {
143 if (--argc < 1) goto bad; 142 if (--argc < 1) goto bad;
144 if(!certflst) certflst = sk_new_null(); 143 if(!certflst) certflst = sk_OPENSSL_STRING_new_null();
145 sk_push(certflst,*(++argv)); 144 sk_OPENSSL_STRING_push(certflst,*(++argv));
146 } 145 }
147 else 146 else
148 { 147 {
@@ -227,8 +226,8 @@ bad:
227 if ((cert_stack=sk_X509_new_null()) == NULL) goto end; 226 if ((cert_stack=sk_X509_new_null()) == NULL) goto end;
228 p7s->cert=cert_stack; 227 p7s->cert=cert_stack;
229 228
230 if(certflst) for(i = 0; i < sk_num(certflst); i++) { 229 if(certflst) for(i = 0; i < sk_OPENSSL_STRING_num(certflst); i++) {
231 certfile = sk_value(certflst, i); 230 certfile = sk_OPENSSL_STRING_value(certflst, i);
232 if (add_certs_from_file(cert_stack,certfile) < 0) 231 if (add_certs_from_file(cert_stack,certfile) < 0)
233 { 232 {
234 BIO_printf(bio_err, "error loading certificates\n"); 233 BIO_printf(bio_err, "error loading certificates\n");
@@ -237,7 +236,7 @@ bad:
237 } 236 }
238 } 237 }
239 238
240 sk_free(certflst); 239 sk_OPENSSL_STRING_free(certflst);
241 240
242 if (outfile == NULL) 241 if (outfile == NULL)
243 { 242 {
@@ -295,19 +294,12 @@ end:
295 */ 294 */
296static int add_certs_from_file(STACK_OF(X509) *stack, char *certfile) 295static int add_certs_from_file(STACK_OF(X509) *stack, char *certfile)
297 { 296 {
298 struct stat st;
299 BIO *in=NULL; 297 BIO *in=NULL;
300 int count=0; 298 int count=0;
301 int ret= -1; 299 int ret= -1;
302 STACK_OF(X509_INFO) *sk=NULL; 300 STACK_OF(X509_INFO) *sk=NULL;
303 X509_INFO *xi; 301 X509_INFO *xi;
304 302
305 if ((stat(certfile,&st) != 0))
306 {
307 BIO_printf(bio_err,"unable to load the file, %s\n",certfile);
308 goto end;
309 }
310
311 in=BIO_new(BIO_s_file()); 303 in=BIO_new(BIO_s_file());
312 if ((in == NULL) || (BIO_read_filename(in,certfile) <= 0)) 304 if ((in == NULL) || (BIO_read_filename(in,certfile) <= 0))
313 { 305 {
diff --git a/src/lib/libssl/src/apps/dgst.c b/src/lib/libssl/src/apps/dgst.c
index 9ebfc22e79..9bf38ce73b 100644
--- a/src/lib/libssl/src/apps/dgst.c
+++ b/src/lib/libssl/src/apps/dgst.c
@@ -75,8 +75,29 @@
75#define PROG dgst_main 75#define PROG dgst_main
76 76
77int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout, 77int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
78 EVP_PKEY *key, unsigned char *sigin, int siglen, const char *title, 78 EVP_PKEY *key, unsigned char *sigin, int siglen,
79 const char *file,BIO *bmd,const char *hmac_key, int non_fips_allow); 79 const char *sig_name, const char *md_name,
80 const char *file,BIO *bmd);
81
82static void list_md_fn(const EVP_MD *m,
83 const char *from, const char *to, void *arg)
84 {
85 const char *mname;
86 /* Skip aliases */
87 if (!m)
88 return;
89 mname = OBJ_nid2ln(EVP_MD_type(m));
90 /* Skip shortnames */
91 if (strcmp(from, mname))
92 return;
93 /* Skip clones */
94 if (EVP_MD_flags(m) & EVP_MD_FLAG_PKEY_DIGEST)
95 return;
96 if (strchr(mname, ' '))
97 mname= EVP_MD_name(m);
98 BIO_printf(arg, "-%-14s to use the %s message digest algorithm\n",
99 mname, mname);
100 }
80 101
81int MAIN(int, char **); 102int MAIN(int, char **);
82 103
@@ -89,7 +110,6 @@ int MAIN(int argc, char **argv)
89 BIO *in=NULL,*inp; 110 BIO *in=NULL,*inp;
90 BIO *bmd=NULL; 111 BIO *bmd=NULL;
91 BIO *out = NULL; 112 BIO *out = NULL;
92 const char *name;
93#define PROG_NAME_SIZE 39 113#define PROG_NAME_SIZE 39
94 char pname[PROG_NAME_SIZE+1]; 114 char pname[PROG_NAME_SIZE+1];
95 int separator=0; 115 int separator=0;
@@ -101,16 +121,16 @@ int MAIN(int argc, char **argv)
101 EVP_PKEY *sigkey = NULL; 121 EVP_PKEY *sigkey = NULL;
102 unsigned char *sigbuf = NULL; 122 unsigned char *sigbuf = NULL;
103 int siglen = 0; 123 int siglen = 0;
104 unsigned int sig_flags = 0;
105 char *passargin = NULL, *passin = NULL; 124 char *passargin = NULL, *passin = NULL;
106#ifndef OPENSSL_NO_ENGINE 125#ifndef OPENSSL_NO_ENGINE
107 char *engine=NULL; 126 char *engine=NULL;
108#endif 127#endif
109 char *hmac_key=NULL; 128 char *hmac_key=NULL;
110 int non_fips_allow = 0; 129 char *mac_name=NULL;
130 STACK_OF(OPENSSL_STRING) *sigopts = NULL, *macopts = NULL;
111 131
112 apps_startup(); 132 apps_startup();
113ERR_load_crypto_strings(); 133
114 if ((buf=(unsigned char *)OPENSSL_malloc(BUFSIZE)) == NULL) 134 if ((buf=(unsigned char *)OPENSSL_malloc(BUFSIZE)) == NULL)
115 { 135 {
116 BIO_printf(bio_err,"out of memory\n"); 136 BIO_printf(bio_err,"out of memory\n");
@@ -135,6 +155,8 @@ ERR_load_crypto_strings();
135 if ((*argv)[0] != '-') break; 155 if ((*argv)[0] != '-') break;
136 if (strcmp(*argv,"-c") == 0) 156 if (strcmp(*argv,"-c") == 0)
137 separator=1; 157 separator=1;
158 else if (strcmp(*argv,"-r") == 0)
159 separator=2;
138 else if (strcmp(*argv,"-rand") == 0) 160 else if (strcmp(*argv,"-rand") == 0)
139 { 161 {
140 if (--argc < 1) break; 162 if (--argc < 1) break;
@@ -169,27 +191,6 @@ ERR_load_crypto_strings();
169 keyfile=*(++argv); 191 keyfile=*(++argv);
170 do_verify = 1; 192 do_verify = 1;
171 } 193 }
172 else if (strcmp(*argv,"-x931") == 0)
173 sig_flags = EVP_MD_CTX_FLAG_PAD_X931;
174 else if (strcmp(*argv,"-pss_saltlen") == 0)
175 {
176 int saltlen;
177 if (--argc < 1) break;
178 saltlen=atoi(*(++argv));
179 if (saltlen == -1)
180 sig_flags = EVP_MD_CTX_FLAG_PSS_MREC;
181 else if (saltlen == -2)
182 sig_flags = EVP_MD_CTX_FLAG_PSS_MDLEN;
183 else if (saltlen < -2 || saltlen >= 0xFFFE)
184 {
185 BIO_printf(bio_err, "Invalid PSS salt length %d\n", saltlen);
186 goto end;
187 }
188 else
189 sig_flags = saltlen;
190 sig_flags <<= 16;
191 sig_flags |= EVP_MD_CTX_FLAG_PAD_PSS;
192 }
193 else if (strcmp(*argv,"-signature") == 0) 194 else if (strcmp(*argv,"-signature") == 0)
194 { 195 {
195 if (--argc < 1) break; 196 if (--argc < 1) break;
@@ -205,6 +206,7 @@ ERR_load_crypto_strings();
205 { 206 {
206 if (--argc < 1) break; 207 if (--argc < 1) break;
207 engine= *(++argv); 208 engine= *(++argv);
209 e = setup_engine(bio_err, engine, 0);
208 } 210 }
209#endif 211#endif
210 else if (strcmp(*argv,"-hex") == 0) 212 else if (strcmp(*argv,"-hex") == 0)
@@ -213,16 +215,36 @@ ERR_load_crypto_strings();
213 out_bin = 1; 215 out_bin = 1;
214 else if (strcmp(*argv,"-d") == 0) 216 else if (strcmp(*argv,"-d") == 0)
215 debug=1; 217 debug=1;
216 else if (strcmp(*argv,"-non-fips-allow") == 0)
217 non_fips_allow=1;
218 else if (!strcmp(*argv,"-fips-fingerprint"))
219 hmac_key = "etaonrishdlcupfm";
220 else if (!strcmp(*argv,"-hmac")) 218 else if (!strcmp(*argv,"-hmac"))
221 { 219 {
222 if (--argc < 1) 220 if (--argc < 1)
223 break; 221 break;
224 hmac_key=*++argv; 222 hmac_key=*++argv;
225 } 223 }
224 else if (!strcmp(*argv,"-mac"))
225 {
226 if (--argc < 1)
227 break;
228 mac_name=*++argv;
229 }
230 else if (strcmp(*argv,"-sigopt") == 0)
231 {
232 if (--argc < 1)
233 break;
234 if (!sigopts)
235 sigopts = sk_OPENSSL_STRING_new_null();
236 if (!sigopts || !sk_OPENSSL_STRING_push(sigopts, *(++argv)))
237 break;
238 }
239 else if (strcmp(*argv,"-macopt") == 0)
240 {
241 if (--argc < 1)
242 break;
243 if (!macopts)
244 macopts = sk_OPENSSL_STRING_new_null();
245 if (!macopts || !sk_OPENSSL_STRING_push(macopts, *(++argv)))
246 break;
247 }
226 else if ((m=EVP_get_digestbyname(&((*argv)[1]))) != NULL) 248 else if ((m=EVP_get_digestbyname(&((*argv)[1]))) != NULL)
227 md=m; 249 md=m;
228 else 250 else
@@ -231,12 +253,9 @@ ERR_load_crypto_strings();
231 argv++; 253 argv++;
232 } 254 }
233 255
234 if (md == NULL)
235 md=EVP_md5();
236 256
237 if(do_verify && !sigfile) { 257 if(do_verify && !sigfile) {
238 BIO_printf(bio_err, "No signature to verify: use the -signature option\n"); 258 BIO_printf(bio_err, "No signature to verify: use the -signature option\n");
239 err = 1;
240 goto end; 259 goto end;
241 } 260 }
242 261
@@ -245,6 +264,7 @@ ERR_load_crypto_strings();
245 BIO_printf(bio_err,"unknown option '%s'\n",*argv); 264 BIO_printf(bio_err,"unknown option '%s'\n",*argv);
246 BIO_printf(bio_err,"options are\n"); 265 BIO_printf(bio_err,"options are\n");
247 BIO_printf(bio_err,"-c to output the digest with separating colons\n"); 266 BIO_printf(bio_err,"-c to output the digest with separating colons\n");
267 BIO_printf(bio_err,"-r to output the digest in coreutils format\n");
248 BIO_printf(bio_err,"-d to output debug info\n"); 268 BIO_printf(bio_err,"-d to output debug info\n");
249 BIO_printf(bio_err,"-hex output as hex dump\n"); 269 BIO_printf(bio_err,"-hex output as hex dump\n");
250 BIO_printf(bio_err,"-binary output in binary form\n"); 270 BIO_printf(bio_err,"-binary output in binary form\n");
@@ -252,49 +272,20 @@ ERR_load_crypto_strings();
252 BIO_printf(bio_err,"-verify file verify a signature using public key in file\n"); 272 BIO_printf(bio_err,"-verify file verify a signature using public key in file\n");
253 BIO_printf(bio_err,"-prverify file verify a signature using private key in file\n"); 273 BIO_printf(bio_err,"-prverify file verify a signature using private key in file\n");
254 BIO_printf(bio_err,"-keyform arg key file format (PEM or ENGINE)\n"); 274 BIO_printf(bio_err,"-keyform arg key file format (PEM or ENGINE)\n");
275 BIO_printf(bio_err,"-out filename output to filename rather than stdout\n");
255 BIO_printf(bio_err,"-signature file signature to verify\n"); 276 BIO_printf(bio_err,"-signature file signature to verify\n");
256 BIO_printf(bio_err,"-binary output in binary form\n"); 277 BIO_printf(bio_err,"-sigopt nm:v signature parameter\n");
257 BIO_printf(bio_err,"-hmac key create hashed MAC with key\n"); 278 BIO_printf(bio_err,"-hmac key create hashed MAC with key\n");
279 BIO_printf(bio_err,"-mac algorithm create MAC (not neccessarily HMAC)\n");
280 BIO_printf(bio_err,"-macopt nm:v MAC algorithm parameters or key\n");
258#ifndef OPENSSL_NO_ENGINE 281#ifndef OPENSSL_NO_ENGINE
259 BIO_printf(bio_err,"-engine e use engine e, possibly a hardware device.\n"); 282 BIO_printf(bio_err,"-engine e use engine e, possibly a hardware device.\n");
260#endif 283#endif
261 284
262 BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm (default)\n", 285 EVP_MD_do_all_sorted(list_md_fn, bio_err);
263 LN_md5,LN_md5);
264 BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
265 LN_md4,LN_md4);
266 BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
267 LN_md2,LN_md2);
268#ifndef OPENSSL_NO_SHA
269 BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
270 LN_sha1,LN_sha1);
271 BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
272 LN_sha,LN_sha);
273#ifndef OPENSSL_NO_SHA256
274 BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
275 LN_sha224,LN_sha224);
276 BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
277 LN_sha256,LN_sha256);
278#endif
279#ifndef OPENSSL_NO_SHA512
280 BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
281 LN_sha384,LN_sha384);
282 BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
283 LN_sha512,LN_sha512);
284#endif
285#endif
286 BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
287 LN_mdc2,LN_mdc2);
288 BIO_printf(bio_err,"-%-14s to use the %s message digest algorithm\n",
289 LN_ripemd160,LN_ripemd160);
290 err=1;
291 goto end; 286 goto end;
292 } 287 }
293 288
294#ifndef OPENSSL_NO_ENGINE
295 e = setup_engine(bio_err, engine, 0);
296#endif
297
298 in=BIO_new(BIO_s_file()); 289 in=BIO_new(BIO_s_file());
299 bmd=BIO_new(BIO_f_md()); 290 bmd=BIO_new(BIO_f_md());
300 if (debug) 291 if (debug)
@@ -317,8 +308,10 @@ ERR_load_crypto_strings();
317 } 308 }
318 309
319 if(out_bin == -1) { 310 if(out_bin == -1) {
320 if(keyfile) out_bin = 1; 311 if(keyfile)
321 else out_bin = 0; 312 out_bin = 1;
313 else
314 out_bin = 0;
322 } 315 }
323 316
324 if(randfile) 317 if(randfile)
@@ -344,6 +337,11 @@ ERR_load_crypto_strings();
344 ERR_print_errors(bio_err); 337 ERR_print_errors(bio_err);
345 goto end; 338 goto end;
346 } 339 }
340 if ((!!mac_name + !!keyfile + !!hmac_key) > 1)
341 {
342 BIO_printf(bio_err, "MAC and Signing key cannot both be specified\n");
343 goto end;
344 }
347 345
348 if(keyfile) 346 if(keyfile)
349 { 347 {
@@ -361,6 +359,101 @@ ERR_load_crypto_strings();
361 } 359 }
362 } 360 }
363 361
362 if (mac_name)
363 {
364 EVP_PKEY_CTX *mac_ctx = NULL;
365 int r = 0;
366 if (!init_gen_str(bio_err, &mac_ctx, mac_name,e, 0))
367 goto mac_end;
368 if (macopts)
369 {
370 char *macopt;
371 for (i = 0; i < sk_OPENSSL_STRING_num(macopts); i++)
372 {
373 macopt = sk_OPENSSL_STRING_value(macopts, i);
374 if (pkey_ctrl_string(mac_ctx, macopt) <= 0)
375 {
376 BIO_printf(bio_err,
377 "MAC parameter error \"%s\"\n",
378 macopt);
379 ERR_print_errors(bio_err);
380 goto mac_end;
381 }
382 }
383 }
384 if (EVP_PKEY_keygen(mac_ctx, &sigkey) <= 0)
385 {
386 BIO_puts(bio_err, "Error generating key\n");
387 ERR_print_errors(bio_err);
388 goto mac_end;
389 }
390 r = 1;
391 mac_end:
392 if (mac_ctx)
393 EVP_PKEY_CTX_free(mac_ctx);
394 if (r == 0)
395 goto end;
396 }
397
398 if (hmac_key)
399 {
400 sigkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, e,
401 (unsigned char *)hmac_key, -1);
402 if (!sigkey)
403 goto end;
404 }
405
406 if (sigkey)
407 {
408 EVP_MD_CTX *mctx = NULL;
409 EVP_PKEY_CTX *pctx = NULL;
410 int r;
411 if (!BIO_get_md_ctx(bmd, &mctx))
412 {
413 BIO_printf(bio_err, "Error getting context\n");
414 ERR_print_errors(bio_err);
415 goto end;
416 }
417 if (do_verify)
418 r = EVP_DigestVerifyInit(mctx, &pctx, md, e, sigkey);
419 else
420 r = EVP_DigestSignInit(mctx, &pctx, md, e, sigkey);
421 if (!r)
422 {
423 BIO_printf(bio_err, "Error setting context\n");
424 ERR_print_errors(bio_err);
425 goto end;
426 }
427 if (sigopts)
428 {
429 char *sigopt;
430 for (i = 0; i < sk_OPENSSL_STRING_num(sigopts); i++)
431 {
432 sigopt = sk_OPENSSL_STRING_value(sigopts, i);
433 if (pkey_ctrl_string(pctx, sigopt) <= 0)
434 {
435 BIO_printf(bio_err,
436 "parameter error \"%s\"\n",
437 sigopt);
438 ERR_print_errors(bio_err);
439 goto end;
440 }
441 }
442 }
443 }
444 /* we use md as a filter, reading from 'in' */
445 else
446 {
447 if (md == NULL)
448 md = EVP_md5();
449 if (!BIO_set_md(bmd,md))
450 {
451 BIO_printf(bio_err, "Error setting digest %s\n", pname);
452 ERR_print_errors(bio_err);
453 goto end;
454 }
455 }
456
364 if(sigfile && sigkey) { 457 if(sigfile && sigkey) {
365 BIO *sigbio; 458 BIO *sigbio;
366 sigbio = BIO_new_file(sigfile, "rb"); 459 sigbio = BIO_new_file(sigfile, "rb");
@@ -381,67 +474,51 @@ ERR_load_crypto_strings();
381 goto end; 474 goto end;
382 } 475 }
383 } 476 }
477 inp=BIO_push(bmd,in);
384 478
385 if (non_fips_allow) 479 if (md == NULL)
386 {
387 EVP_MD_CTX *md_ctx;
388 BIO_get_md_ctx(bmd,&md_ctx);
389 EVP_MD_CTX_set_flags(md_ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
390 }
391
392 if (sig_flags)
393 { 480 {
394 EVP_MD_CTX *md_ctx; 481 EVP_MD_CTX *tctx;
395 BIO_get_md_ctx(bmd,&md_ctx); 482 BIO_get_md_ctx(bmd, &tctx);
396 EVP_MD_CTX_set_flags(md_ctx, sig_flags); 483 md = EVP_MD_CTX_md(tctx);
397 } 484 }
398 485
399 /* we use md as a filter, reading from 'in' */
400 if (!BIO_set_md(bmd,md))
401 {
402 BIO_printf(bio_err, "Error setting digest %s\n", pname);
403 ERR_print_errors(bio_err);
404 goto end;
405 }
406
407 inp=BIO_push(bmd,in);
408
409 if (argc == 0) 486 if (argc == 0)
410 { 487 {
411 BIO_set_fp(in,stdin,BIO_NOCLOSE); 488 BIO_set_fp(in,stdin,BIO_NOCLOSE);
412 err=do_fp(out, buf,inp,separator, out_bin, sigkey, sigbuf, 489 err=do_fp(out, buf,inp,separator, out_bin, sigkey, sigbuf,
413 siglen,"","(stdin)",bmd,hmac_key,non_fips_allow); 490 siglen,NULL,NULL,"stdin",bmd);
414 } 491 }
415 else 492 else
416 { 493 {
417 name=OBJ_nid2sn(md->type); 494 const char *md_name = NULL, *sig_name = NULL;
495 if(!out_bin)
496 {
497 if (sigkey)
498 {
499 const EVP_PKEY_ASN1_METHOD *ameth;
500 ameth = EVP_PKEY_get0_asn1(sigkey);
501 if (ameth)
502 EVP_PKEY_asn1_get0_info(NULL, NULL,
503 NULL, NULL, &sig_name, ameth);
504 }
505 md_name = EVP_MD_name(md);
506 }
418 err = 0; 507 err = 0;
419 for (i=0; i<argc; i++) 508 for (i=0; i<argc; i++)
420 { 509 {
421 char *tmp,*tofree=NULL;
422 int r; 510 int r;
423
424 if (BIO_read_filename(in,argv[i]) <= 0) 511 if (BIO_read_filename(in,argv[i]) <= 0)
425 { 512 {
426 perror(argv[i]); 513 perror(argv[i]);
427 err++; 514 err++;
428 continue; 515 continue;
429 } 516 }
430 if(!out_bin)
431 {
432 size_t len = strlen(name)+strlen(argv[i])+(hmac_key ? 5 : 0)+5;
433 tmp=tofree=OPENSSL_malloc(len);
434 BIO_snprintf(tmp,len,"%s%s(%s)= ",
435 hmac_key ? "HMAC-" : "",name,argv[i]);
436 }
437 else 517 else
438 tmp="";
439 r=do_fp(out,buf,inp,separator,out_bin,sigkey,sigbuf, 518 r=do_fp(out,buf,inp,separator,out_bin,sigkey,sigbuf,
440 siglen,tmp,argv[i],bmd,hmac_key,non_fips_allow); 519 siglen,sig_name,md_name, argv[i],bmd);
441 if(r) 520 if(r)
442 err=r; 521 err=r;
443 if(tofree)
444 OPENSSL_free(tofree);
445 (void)BIO_reset(bmd); 522 (void)BIO_reset(bmd);
446 } 523 }
447 } 524 }
@@ -456,6 +533,10 @@ end:
456 OPENSSL_free(passin); 533 OPENSSL_free(passin);
457 BIO_free_all(out); 534 BIO_free_all(out);
458 EVP_PKEY_free(sigkey); 535 EVP_PKEY_free(sigkey);
536 if (sigopts)
537 sk_OPENSSL_STRING_free(sigopts);
538 if (macopts)
539 sk_OPENSSL_STRING_free(macopts);
459 if(sigbuf) OPENSSL_free(sigbuf); 540 if(sigbuf) OPENSSL_free(sigbuf);
460 if (bmd != NULL) BIO_free(bmd); 541 if (bmd != NULL) BIO_free(bmd);
461 apps_shutdown(); 542 apps_shutdown();
@@ -463,24 +544,13 @@ end:
463 } 544 }
464 545
465int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout, 546int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
466 EVP_PKEY *key, unsigned char *sigin, int siglen, const char *title, 547 EVP_PKEY *key, unsigned char *sigin, int siglen,
467 const char *file,BIO *bmd,const char *hmac_key,int non_fips_allow) 548 const char *sig_name, const char *md_name,
549 const char *file,BIO *bmd)
468 { 550 {
469 unsigned int len; 551 size_t len;
470 int i; 552 int i;
471 EVP_MD_CTX *md_ctx;
472 HMAC_CTX hmac_ctx;
473
474 if (hmac_key)
475 {
476 EVP_MD *md;
477 553
478 BIO_get_md(bmd,&md);
479 HMAC_CTX_init(&hmac_ctx);
480 HMAC_Init_ex(&hmac_ctx,hmac_key,strlen(hmac_key),md, NULL);
481 BIO_get_md_ctx(bmd,&md_ctx);
482 BIO_set_md_ctx(bmd,&hmac_ctx.md_ctx);
483 }
484 for (;;) 554 for (;;)
485 { 555 {
486 i=BIO_read(bp,(char *)buf,BUFSIZE); 556 i=BIO_read(bp,(char *)buf,BUFSIZE);
@@ -496,7 +566,7 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
496 { 566 {
497 EVP_MD_CTX *ctx; 567 EVP_MD_CTX *ctx;
498 BIO_get_md_ctx(bp, &ctx); 568 BIO_get_md_ctx(bp, &ctx);
499 i = EVP_VerifyFinal(ctx, sigin, (unsigned int)siglen, key); 569 i = EVP_DigestVerifyFinal(ctx, sigin, (unsigned int)siglen);
500 if(i > 0) 570 if(i > 0)
501 BIO_printf(out, "Verified OK\n"); 571 BIO_printf(out, "Verified OK\n");
502 else if(i == 0) 572 else if(i == 0)
@@ -516,25 +586,39 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
516 { 586 {
517 EVP_MD_CTX *ctx; 587 EVP_MD_CTX *ctx;
518 BIO_get_md_ctx(bp, &ctx); 588 BIO_get_md_ctx(bp, &ctx);
519 if(!EVP_SignFinal(ctx, buf, (unsigned int *)&len, key)) 589 len = BUFSIZE;
590 if(!EVP_DigestSignFinal(ctx, buf, &len))
520 { 591 {
521 BIO_printf(bio_err, "Error Signing Data\n"); 592 BIO_printf(bio_err, "Error Signing Data\n");
522 ERR_print_errors(bio_err); 593 ERR_print_errors(bio_err);
523 return 1; 594 return 1;
524 } 595 }
525 } 596 }
526 else if(hmac_key)
527 {
528 HMAC_Final(&hmac_ctx,buf,&len);
529 HMAC_CTX_cleanup(&hmac_ctx);
530 }
531 else 597 else
598 {
532 len=BIO_gets(bp,(char *)buf,BUFSIZE); 599 len=BIO_gets(bp,(char *)buf,BUFSIZE);
600 if ((int)len <0)
601 {
602 ERR_print_errors(bio_err);
603 return 1;
604 }
605 }
533 606
534 if(binout) BIO_write(out, buf, len); 607 if(binout) BIO_write(out, buf, len);
608 else if (sep == 2)
609 {
610 for (i=0; i<(int)len; i++)
611 BIO_printf(out, "%02x",buf[i]);
612 BIO_printf(out, " *%s\n", file);
613 }
535 else 614 else
536 { 615 {
537 BIO_write(out,title,strlen(title)); 616 if (sig_name)
617 BIO_printf(out, "%s-%s(%s)= ", sig_name, md_name, file);
618 else if (md_name)
619 BIO_printf(out, "%s(%s)= ", md_name, file);
620 else
621 BIO_printf(out, "(%s)= ", file);
538 for (i=0; i<(int)len; i++) 622 for (i=0; i<(int)len; i++)
539 { 623 {
540 if (sep && (i != 0)) 624 if (sep && (i != 0))
@@ -543,10 +627,6 @@ int do_fp(BIO *out, unsigned char *buf, BIO *bp, int sep, int binout,
543 } 627 }
544 BIO_printf(out, "\n"); 628 BIO_printf(out, "\n");
545 } 629 }
546 if (hmac_key)
547 {
548 BIO_set_md_ctx(bmd,md_ctx);
549 }
550 return 0; 630 return 0;
551 } 631 }
552 632
diff --git a/src/lib/libssl/src/apps/dh.c b/src/lib/libssl/src/apps/dh.c
index c4d891e125..e9609d630d 100644
--- a/src/lib/libssl/src/apps/dh.c
+++ b/src/lib/libssl/src/apps/dh.c
@@ -349,4 +349,10 @@ end:
349 apps_shutdown(); 349 apps_shutdown();
350 OPENSSL_EXIT(ret); 350 OPENSSL_EXIT(ret);
351 } 351 }
352#else /* !OPENSSL_NO_DH */
353
354# if PEDANTIC
355static void *dummy=&dummy;
356# endif
357
352#endif 358#endif
diff --git a/src/lib/libssl/src/apps/dhparam.c b/src/lib/libssl/src/apps/dhparam.c
index 04bd57c6e8..5fab29eb87 100644
--- a/src/lib/libssl/src/apps/dhparam.c
+++ b/src/lib/libssl/src/apps/dhparam.c
@@ -554,4 +554,10 @@ static int MS_CALLBACK dh_cb(int p, int n, BN_GENCB *cb)
554 return 1; 554 return 1;
555 } 555 }
556 556
557#else /* !OPENSSL_NO_DH */
558
559# if PEDANTIC
560static void *dummy=&dummy;
561# endif
562
557#endif 563#endif
diff --git a/src/lib/libssl/src/apps/dsa.c b/src/lib/libssl/src/apps/dsa.c
index cbc1fe3f81..5222487ab9 100644
--- a/src/lib/libssl/src/apps/dsa.c
+++ b/src/lib/libssl/src/apps/dsa.c
@@ -112,6 +112,8 @@ int MAIN(int argc, char **argv)
112 char *passin = NULL, *passout = NULL; 112 char *passin = NULL, *passout = NULL;
113 int modulus=0; 113 int modulus=0;
114 114
115 int pvk_encr = 2;
116
115 apps_startup(); 117 apps_startup();
116 118
117 if (bio_err == NULL) 119 if (bio_err == NULL)
@@ -171,6 +173,12 @@ int MAIN(int argc, char **argv)
171 engine= *(++argv); 173 engine= *(++argv);
172 } 174 }
173#endif 175#endif
176 else if (strcmp(*argv,"-pvk-strong") == 0)
177 pvk_encr=2;
178 else if (strcmp(*argv,"-pvk-weak") == 0)
179 pvk_encr=1;
180 else if (strcmp(*argv,"-pvk-none") == 0)
181 pvk_encr=0;
174 else if (strcmp(*argv,"-noout") == 0) 182 else if (strcmp(*argv,"-noout") == 0)
175 noout=1; 183 noout=1;
176 else if (strcmp(*argv,"-text") == 0) 184 else if (strcmp(*argv,"-text") == 0)
@@ -238,16 +246,30 @@ bad:
238 goto end; 246 goto end;
239 } 247 }
240 248
249 in=BIO_new(BIO_s_file());
241 out=BIO_new(BIO_s_file()); 250 out=BIO_new(BIO_s_file());
242 if (out == NULL) 251 if ((in == NULL) || (out == NULL))
243 { 252 {
244 ERR_print_errors(bio_err); 253 ERR_print_errors(bio_err);
245 goto end; 254 goto end;
246 } 255 }
247 256
257 if (infile == NULL)
258 BIO_set_fp(in,stdin,BIO_NOCLOSE);
259 else
260 {
261 if (BIO_read_filename(in,infile) <= 0)
262 {
263 perror(infile);
264 goto end;
265 }
266 }
267
248 BIO_printf(bio_err,"read DSA key\n"); 268 BIO_printf(bio_err,"read DSA key\n");
249 { 269
270 {
250 EVP_PKEY *pkey; 271 EVP_PKEY *pkey;
272
251 if (pubin) 273 if (pubin)
252 pkey = load_pubkey(bio_err, infile, informat, 1, 274 pkey = load_pubkey(bio_err, infile, informat, 1,
253 passin, e, "Public Key"); 275 passin, e, "Public Key");
@@ -255,10 +277,12 @@ bad:
255 pkey = load_key(bio_err, infile, informat, 1, 277 pkey = load_key(bio_err, infile, informat, 1,
256 passin, e, "Private Key"); 278 passin, e, "Private Key");
257 279
258 if (pkey != NULL) 280 if (pkey)
259 dsa = pkey == NULL ? NULL : EVP_PKEY_get1_DSA(pkey); 281 {
260 EVP_PKEY_free(pkey); 282 dsa = EVP_PKEY_get1_DSA(pkey);
261 } 283 EVP_PKEY_free(pkey);
284 }
285 }
262 if (dsa == NULL) 286 if (dsa == NULL)
263 { 287 {
264 BIO_printf(bio_err,"unable to load Key\n"); 288 BIO_printf(bio_err,"unable to load Key\n");
@@ -310,11 +334,24 @@ bad:
310 i=PEM_write_bio_DSA_PUBKEY(out,dsa); 334 i=PEM_write_bio_DSA_PUBKEY(out,dsa);
311 else i=PEM_write_bio_DSAPrivateKey(out,dsa,enc, 335 else i=PEM_write_bio_DSAPrivateKey(out,dsa,enc,
312 NULL,0,NULL, passout); 336 NULL,0,NULL, passout);
337#if !defined(OPENSSL_NO_RSA) && !defined(OPENSSL_NO_RC4)
338 } else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) {
339 EVP_PKEY *pk;
340 pk = EVP_PKEY_new();
341 EVP_PKEY_set1_DSA(pk, dsa);
342 if (outformat == FORMAT_PVK)
343 i = i2b_PVK_bio(out, pk, pvk_encr, 0, passout);
344 else if (pubin || pubout)
345 i = i2b_PublicKey_bio(out, pk);
346 else
347 i = i2b_PrivateKey_bio(out, pk);
348 EVP_PKEY_free(pk);
349#endif
313 } else { 350 } else {
314 BIO_printf(bio_err,"bad output format specified for outfile\n"); 351 BIO_printf(bio_err,"bad output format specified for outfile\n");
315 goto end; 352 goto end;
316 } 353 }
317 if (!i) 354 if (i <= 0)
318 { 355 {
319 BIO_printf(bio_err,"unable to write private key\n"); 356 BIO_printf(bio_err,"unable to write private key\n");
320 ERR_print_errors(bio_err); 357 ERR_print_errors(bio_err);
@@ -330,4 +367,10 @@ end:
330 apps_shutdown(); 367 apps_shutdown();
331 OPENSSL_EXIT(ret); 368 OPENSSL_EXIT(ret);
332 } 369 }
370#else /* !OPENSSL_NO_DSA */
371
372# if PEDANTIC
373static void *dummy=&dummy;
374# endif
375
333#endif 376#endif
diff --git a/src/lib/libssl/src/apps/dsaparam.c b/src/lib/libssl/src/apps/dsaparam.c
index c301e81af1..4305a739b3 100644
--- a/src/lib/libssl/src/apps/dsaparam.c
+++ b/src/lib/libssl/src/apps/dsaparam.c
@@ -475,4 +475,10 @@ static int MS_CALLBACK dsa_cb(int p, int n, BN_GENCB *cb)
475#endif 475#endif
476 return 1; 476 return 1;
477 } 477 }
478#else /* !OPENSSL_NO_DSA */
479
480# if PEDANTIC
481static void *dummy=&dummy;
482# endif
483
478#endif 484#endif
diff --git a/src/lib/libssl/src/apps/enc.c b/src/lib/libssl/src/apps/enc.c
index f4f9a4c4a4..3c2c91e920 100644
--- a/src/lib/libssl/src/apps/enc.c
+++ b/src/lib/libssl/src/apps/enc.c
@@ -67,6 +67,7 @@
67#include <openssl/x509.h> 67#include <openssl/x509.h>
68#include <openssl/rand.h> 68#include <openssl/rand.h>
69#include <openssl/pem.h> 69#include <openssl/pem.h>
70#include <openssl/comp.h>
70#include <ctype.h> 71#include <ctype.h>
71 72
72int set_hex(char *in,unsigned char *out,int size); 73int set_hex(char *in,unsigned char *out,int size);
@@ -116,6 +117,10 @@ int MAIN(int argc, char **argv)
116 char *hkey=NULL,*hiv=NULL,*hsalt = NULL; 117 char *hkey=NULL,*hiv=NULL,*hsalt = NULL;
117 char *md=NULL; 118 char *md=NULL;
118 int enc=1,printkey=0,i,base64=0; 119 int enc=1,printkey=0,i,base64=0;
120#ifdef ZLIB
121 int do_zlib=0;
122 BIO *bzl = NULL;
123#endif
119 int debug=0,olb64=0,nosalt=0; 124 int debug=0,olb64=0,nosalt=0;
120 const EVP_CIPHER *cipher=NULL,*c; 125 const EVP_CIPHER *cipher=NULL,*c;
121 EVP_CIPHER_CTX *ctx = NULL; 126 EVP_CIPHER_CTX *ctx = NULL;
@@ -127,7 +132,6 @@ int MAIN(int argc, char **argv)
127 char *engine = NULL; 132 char *engine = NULL;
128#endif 133#endif
129 const EVP_MD *dgst=NULL; 134 const EVP_MD *dgst=NULL;
130 int non_fips_allow = 0;
131 135
132 apps_startup(); 136 apps_startup();
133 137
@@ -142,9 +146,18 @@ int MAIN(int argc, char **argv)
142 program_name(argv[0],pname,sizeof pname); 146 program_name(argv[0],pname,sizeof pname);
143 if (strcmp(pname,"base64") == 0) 147 if (strcmp(pname,"base64") == 0)
144 base64=1; 148 base64=1;
149#ifdef ZLIB
150 if (strcmp(pname,"zlib") == 0)
151 do_zlib=1;
152#endif
145 153
146 cipher=EVP_get_cipherbyname(pname); 154 cipher=EVP_get_cipherbyname(pname);
155#ifdef ZLIB
156 if (!do_zlib && !base64 && (cipher == NULL)
157 && (strcmp(pname,"enc") != 0))
158#else
147 if (!base64 && (cipher == NULL) && (strcmp(pname,"enc") != 0)) 159 if (!base64 && (cipher == NULL) && (strcmp(pname,"enc") != 0))
160#endif
148 { 161 {
149 BIO_printf(bio_err,"%s is an unknown cipher\n",pname); 162 BIO_printf(bio_err,"%s is an unknown cipher\n",pname);
150 goto bad; 163 goto bad;
@@ -200,6 +213,10 @@ int MAIN(int argc, char **argv)
200 base64=1; 213 base64=1;
201 else if (strcmp(*argv,"-base64") == 0) 214 else if (strcmp(*argv,"-base64") == 0)
202 base64=1; 215 base64=1;
216#ifdef ZLIB
217 else if (strcmp(*argv,"-z") == 0)
218 do_zlib=1;
219#endif
203 else if (strcmp(*argv,"-bufsize") == 0) 220 else if (strcmp(*argv,"-bufsize") == 0)
204 { 221 {
205 if (--argc < 1) goto bad; 222 if (--argc < 1) goto bad;
@@ -226,7 +243,12 @@ int MAIN(int argc, char **argv)
226 goto bad; 243 goto bad;
227 } 244 }
228 buf[0]='\0'; 245 buf[0]='\0';
229 fgets(buf,sizeof buf,infile); 246 if (!fgets(buf,sizeof buf,infile))
247 {
248 BIO_printf(bio_err,"unable to read key from '%s'\n",
249 file);
250 goto bad;
251 }
230 fclose(infile); 252 fclose(infile);
231 i=strlen(buf); 253 i=strlen(buf);
232 if ((i > 0) && 254 if ((i > 0) &&
@@ -262,8 +284,6 @@ int MAIN(int argc, char **argv)
262 if (--argc < 1) goto bad; 284 if (--argc < 1) goto bad;
263 md= *(++argv); 285 md= *(++argv);
264 } 286 }
265 else if (strcmp(*argv,"-non-fips-allow") == 0)
266 non_fips_allow = 1;
267 else if ((argv[0][0] == '-') && 287 else if ((argv[0][0] == '-') &&
268 ((c=EVP_get_cipherbyname(&(argv[0][1]))) != NULL)) 288 ((c=EVP_get_cipherbyname(&(argv[0][1]))) != NULL))
269 { 289 {
@@ -286,9 +306,11 @@ bad:
286 BIO_printf(bio_err,"%-14s passphrase is the first line of the file argument\n","-kfile"); 306 BIO_printf(bio_err,"%-14s passphrase is the first line of the file argument\n","-kfile");
287 BIO_printf(bio_err,"%-14s the next argument is the md to use to create a key\n","-md"); 307 BIO_printf(bio_err,"%-14s the next argument is the md to use to create a key\n","-md");
288 BIO_printf(bio_err,"%-14s from a passphrase. One of md2, md5, sha or sha1\n",""); 308 BIO_printf(bio_err,"%-14s from a passphrase. One of md2, md5, sha or sha1\n","");
309 BIO_printf(bio_err,"%-14s salt in hex is the next argument\n","-S");
289 BIO_printf(bio_err,"%-14s key/iv in hex is the next argument\n","-K/-iv"); 310 BIO_printf(bio_err,"%-14s key/iv in hex is the next argument\n","-K/-iv");
290 BIO_printf(bio_err,"%-14s print the iv/key (then exit if -P)\n","-[pP]"); 311 BIO_printf(bio_err,"%-14s print the iv/key (then exit if -P)\n","-[pP]");
291 BIO_printf(bio_err,"%-14s buffer size\n","-bufsize <n>"); 312 BIO_printf(bio_err,"%-14s buffer size\n","-bufsize <n>");
313 BIO_printf(bio_err,"%-14s disable standard block padding\n","-nopad");
292#ifndef OPENSSL_NO_ENGINE 314#ifndef OPENSSL_NO_ENGINE
293 BIO_printf(bio_err,"%-14s use engine e, possibly a hardware device.\n","-engine e"); 315 BIO_printf(bio_err,"%-14s use engine e, possibly a hardware device.\n","-engine e");
294#endif 316#endif
@@ -317,10 +339,7 @@ bad:
317 339
318 if (dgst == NULL) 340 if (dgst == NULL)
319 { 341 {
320 if (in_FIPS_mode) 342 dgst = EVP_md5();
321 dgst = EVP_sha1();
322 else
323 dgst = EVP_md5();
324 } 343 }
325 344
326 if (bufsize != NULL) 345 if (bufsize != NULL)
@@ -452,6 +471,19 @@ bad:
452 rbio=in; 471 rbio=in;
453 wbio=out; 472 wbio=out;
454 473
474#ifdef ZLIB
475
476 if (do_zlib)
477 {
478 if ((bzl=BIO_new(BIO_f_zlib())) == NULL)
479 goto end;
480 if (enc)
481 wbio=BIO_push(bzl,wbio);
482 else
483 rbio=BIO_push(bzl,rbio);
484 }
485#endif
486
455 if (base64) 487 if (base64)
456 { 488 {
457 if ((b64=BIO_new(BIO_f_base64())) == NULL) 489 if ((b64=BIO_new(BIO_f_base64())) == NULL)
@@ -556,11 +588,6 @@ bad:
556 */ 588 */
557 589
558 BIO_get_cipher_ctx(benc, &ctx); 590 BIO_get_cipher_ctx(benc, &ctx);
559
560 if (non_fips_allow)
561 EVP_CIPHER_CTX_set_flags(ctx,
562 EVP_CIPH_FLAG_NON_FIPS_ALLOW);
563
564 if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc)) 591 if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc))
565 { 592 {
566 BIO_printf(bio_err, "Error setting cipher %s\n", 593 BIO_printf(bio_err, "Error setting cipher %s\n",
@@ -651,6 +678,9 @@ end:
651 if (out != NULL) BIO_free_all(out); 678 if (out != NULL) BIO_free_all(out);
652 if (benc != NULL) BIO_free(benc); 679 if (benc != NULL) BIO_free(benc);
653 if (b64 != NULL) BIO_free(b64); 680 if (b64 != NULL) BIO_free(b64);
681#ifdef ZLIB
682 if (bzl != NULL) BIO_free(bzl);
683#endif
654 if(pass) OPENSSL_free(pass); 684 if(pass) OPENSSL_free(pass);
655 apps_shutdown(); 685 apps_shutdown();
656 OPENSSL_EXIT(ret); 686 OPENSSL_EXIT(ret);
diff --git a/src/lib/libssl/src/apps/engine.c b/src/lib/libssl/src/apps/engine.c
index 17bd81fb79..9a0294398e 100644
--- a/src/lib/libssl/src/apps/engine.c
+++ b/src/lib/libssl/src/apps/engine.c
@@ -92,7 +92,7 @@ static const char *engine_usage[]={
92NULL 92NULL
93}; 93};
94 94
95static void identity(void *ptr) 95static void identity(char *ptr)
96 { 96 {
97 return; 97 return;
98 } 98 }
@@ -148,11 +148,6 @@ static int util_flags(BIO *bio_out, unsigned int flags, const char *indent)
148 148
149 if(flags & ENGINE_CMD_FLAG_NUMERIC) 149 if(flags & ENGINE_CMD_FLAG_NUMERIC)
150 { 150 {
151 if(started)
152 {
153 BIO_printf(bio_out, "|");
154 err = 1;
155 }
156 BIO_printf(bio_out, "NUMERIC"); 151 BIO_printf(bio_out, "NUMERIC");
157 started = 1; 152 started = 1;
158 } 153 }
@@ -205,7 +200,7 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
205 char *desc = NULL; 200 char *desc = NULL;
206 int flags; 201 int flags;
207 int xpos = 0; 202 int xpos = 0;
208 STACK *cmds = NULL; 203 STACK_OF(OPENSSL_STRING) *cmds = NULL;
209 if(!ENGINE_ctrl(e, ENGINE_CTRL_HAS_CTRL_FUNCTION, 0, NULL, NULL) || 204 if(!ENGINE_ctrl(e, ENGINE_CTRL_HAS_CTRL_FUNCTION, 0, NULL, NULL) ||
210 ((num = ENGINE_ctrl(e, ENGINE_CTRL_GET_FIRST_CMD_TYPE, 205 ((num = ENGINE_ctrl(e, ENGINE_CTRL_GET_FIRST_CMD_TYPE,
211 0, NULL, NULL)) <= 0)) 206 0, NULL, NULL)) <= 0))
@@ -216,7 +211,7 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
216 return 1; 211 return 1;
217 } 212 }
218 213
219 cmds = sk_new_null(); 214 cmds = sk_OPENSSL_STRING_new_null();
220 215
221 if(!cmds) 216 if(!cmds)
222 goto err; 217 goto err;
@@ -289,15 +284,17 @@ static int util_verbose(ENGINE *e, int verbose, BIO *bio_out, const char *indent
289 BIO_printf(bio_out, "\n"); 284 BIO_printf(bio_out, "\n");
290 ret = 1; 285 ret = 1;
291err: 286err:
292 if(cmds) sk_pop_free(cmds, identity); 287 if(cmds) sk_OPENSSL_STRING_pop_free(cmds, identity);
293 if(name) OPENSSL_free(name); 288 if(name) OPENSSL_free(name);
294 if(desc) OPENSSL_free(desc); 289 if(desc) OPENSSL_free(desc);
295 return ret; 290 return ret;
296 } 291 }
297 292
298static void util_do_cmds(ENGINE *e, STACK *cmds, BIO *bio_out, const char *indent) 293static void util_do_cmds(ENGINE *e, STACK_OF(OPENSSL_STRING) *cmds,
294 BIO *bio_out, const char *indent)
299 { 295 {
300 int loop, res, num = sk_num(cmds); 296 int loop, res, num = sk_OPENSSL_STRING_num(cmds);
297
301 if(num < 0) 298 if(num < 0)
302 { 299 {
303 BIO_printf(bio_out, "[Error]: internal stack error\n"); 300 BIO_printf(bio_out, "[Error]: internal stack error\n");
@@ -307,7 +304,7 @@ static void util_do_cmds(ENGINE *e, STACK *cmds, BIO *bio_out, const char *inden
307 { 304 {
308 char buf[256]; 305 char buf[256];
309 const char *cmd, *arg; 306 const char *cmd, *arg;
310 cmd = sk_value(cmds, loop); 307 cmd = sk_OPENSSL_STRING_value(cmds, loop);
311 res = 1; /* assume success */ 308 res = 1; /* assume success */
312 /* Check if this command has no ":arg" */ 309 /* Check if this command has no ":arg" */
313 if((arg = strstr(cmd, ":")) == NULL) 310 if((arg = strstr(cmd, ":")) == NULL)
@@ -347,9 +344,9 @@ int MAIN(int argc, char **argv)
347 const char **pp; 344 const char **pp;
348 int verbose=0, list_cap=0, test_avail=0, test_avail_noise = 0; 345 int verbose=0, list_cap=0, test_avail=0, test_avail_noise = 0;
349 ENGINE *e; 346 ENGINE *e;
350 STACK *engines = sk_new_null(); 347 STACK_OF(OPENSSL_STRING) *engines = sk_OPENSSL_STRING_new_null();
351 STACK *pre_cmds = sk_new_null(); 348 STACK_OF(OPENSSL_STRING) *pre_cmds = sk_OPENSSL_STRING_new_null();
352 STACK *post_cmds = sk_new_null(); 349 STACK_OF(OPENSSL_STRING) *post_cmds = sk_OPENSSL_STRING_new_null();
353 int badops=1; 350 int badops=1;
354 BIO *bio_out=NULL; 351 BIO *bio_out=NULL;
355 const char *indent = " "; 352 const char *indent = " ";
@@ -396,20 +393,20 @@ int MAIN(int argc, char **argv)
396 argc--; argv++; 393 argc--; argv++;
397 if (argc == 0) 394 if (argc == 0)
398 goto skip_arg_loop; 395 goto skip_arg_loop;
399 sk_push(pre_cmds,*argv); 396 sk_OPENSSL_STRING_push(pre_cmds,*argv);
400 } 397 }
401 else if (strcmp(*argv,"-post") == 0) 398 else if (strcmp(*argv,"-post") == 0)
402 { 399 {
403 argc--; argv++; 400 argc--; argv++;
404 if (argc == 0) 401 if (argc == 0)
405 goto skip_arg_loop; 402 goto skip_arg_loop;
406 sk_push(post_cmds,*argv); 403 sk_OPENSSL_STRING_push(post_cmds,*argv);
407 } 404 }
408 else if ((strncmp(*argv,"-h",2) == 0) || 405 else if ((strncmp(*argv,"-h",2) == 0) ||
409 (strcmp(*argv,"-?") == 0)) 406 (strcmp(*argv,"-?") == 0))
410 goto skip_arg_loop; 407 goto skip_arg_loop;
411 else 408 else
412 sk_push(engines,*argv); 409 sk_OPENSSL_STRING_push(engines,*argv);
413 argc--; 410 argc--;
414 argv++; 411 argv++;
415 } 412 }
@@ -424,17 +421,17 @@ skip_arg_loop:
424 goto end; 421 goto end;
425 } 422 }
426 423
427 if (sk_num(engines) == 0) 424 if (sk_OPENSSL_STRING_num(engines) == 0)
428 { 425 {
429 for(e = ENGINE_get_first(); e != NULL; e = ENGINE_get_next(e)) 426 for(e = ENGINE_get_first(); e != NULL; e = ENGINE_get_next(e))
430 { 427 {
431 sk_push(engines,(char *)ENGINE_get_id(e)); 428 sk_OPENSSL_STRING_push(engines,(char *)ENGINE_get_id(e));
432 } 429 }
433 } 430 }
434 431
435 for (i=0; i<sk_num(engines); i++) 432 for (i=0; i<sk_OPENSSL_STRING_num(engines); i++)
436 { 433 {
437 const char *id = sk_value(engines,i); 434 const char *id = sk_OPENSSL_STRING_value(engines,i);
438 if ((e = ENGINE_by_id(id)) != NULL) 435 if ((e = ENGINE_by_id(id)) != NULL)
439 { 436 {
440 const char *name = ENGINE_get_name(e); 437 const char *name = ENGINE_get_name(e);
@@ -454,6 +451,7 @@ skip_arg_loop:
454 const int *nids; 451 const int *nids;
455 ENGINE_CIPHERS_PTR fn_c; 452 ENGINE_CIPHERS_PTR fn_c;
456 ENGINE_DIGESTS_PTR fn_d; 453 ENGINE_DIGESTS_PTR fn_d;
454 ENGINE_PKEY_METHS_PTR fn_pk;
457 455
458 if (ENGINE_get_RSA(e) != NULL 456 if (ENGINE_get_RSA(e) != NULL
459 && !append_buf(&cap_buf, "RSA", 457 && !append_buf(&cap_buf, "RSA",
@@ -492,6 +490,15 @@ skip_ciphers:
492 goto end; 490 goto end;
493 491
494skip_digests: 492skip_digests:
493 fn_pk = ENGINE_get_pkey_meths(e);
494 if(!fn_pk) goto skip_pmeths;
495 n = fn_pk(e, NULL, &nids, 0);
496 for(k=0 ; k < n ; ++k)
497 if(!append_buf(&cap_buf,
498 OBJ_nid2sn(nids[k]),
499 &cap_size, 256))
500 goto end;
501skip_pmeths:
495 if (cap_buf && (*cap_buf != '\0')) 502 if (cap_buf && (*cap_buf != '\0'))
496 BIO_printf(bio_out, " [%s]\n", cap_buf); 503 BIO_printf(bio_out, " [%s]\n", cap_buf);
497 504
@@ -526,9 +533,9 @@ skip_digests:
526end: 533end:
527 534
528 ERR_print_errors(bio_err); 535 ERR_print_errors(bio_err);
529 sk_pop_free(engines, identity); 536 sk_OPENSSL_STRING_pop_free(engines, identity);
530 sk_pop_free(pre_cmds, identity); 537 sk_OPENSSL_STRING_pop_free(pre_cmds, identity);
531 sk_pop_free(post_cmds, identity); 538 sk_OPENSSL_STRING_pop_free(post_cmds, identity);
532 if (bio_out != NULL) BIO_free_all(bio_out); 539 if (bio_out != NULL) BIO_free_all(bio_out);
533 apps_shutdown(); 540 apps_shutdown();
534 OPENSSL_EXIT(ret); 541 OPENSSL_EXIT(ret);
diff --git a/src/lib/libssl/src/apps/errstr.c b/src/lib/libssl/src/apps/errstr.c
index 19489b0df3..fe3b98077e 100644
--- a/src/lib/libssl/src/apps/errstr.c
+++ b/src/lib/libssl/src/apps/errstr.c
@@ -97,10 +97,12 @@ int MAIN(int argc, char **argv)
97 out = BIO_push(tmpbio, out); 97 out = BIO_push(tmpbio, out);
98 } 98 }
99#endif 99#endif
100 lh_node_stats_bio((LHASH *)ERR_get_string_table(),out); 100 lh_ERR_STRING_DATA_node_stats_bio(
101 lh_stats_bio((LHASH *)ERR_get_string_table(),out); 101 ERR_get_string_table(), out);
102 lh_node_usage_stats_bio((LHASH *) 102 lh_ERR_STRING_DATA_stats_bio(ERR_get_string_table(),
103 ERR_get_string_table(),out); 103 out);
104 lh_ERR_STRING_DATA_node_usage_stats_bio(
105 ERR_get_string_table(),out);
104 } 106 }
105 if (out != NULL) BIO_free_all(out); 107 if (out != NULL) BIO_free_all(out);
106 argc--; 108 argc--;
diff --git a/src/lib/libssl/src/apps/gendh.c b/src/lib/libssl/src/apps/gendh.c
index 47497864b0..caa7327a10 100644
--- a/src/lib/libssl/src/apps/gendh.c
+++ b/src/lib/libssl/src/apps/gendh.c
@@ -235,4 +235,10 @@ static int MS_CALLBACK dh_cb(int p, int n, BN_GENCB *cb)
235#endif 235#endif
236 return 1; 236 return 1;
237 } 237 }
238#else /* !OPENSSL_NO_DH */
239
240# if PEDANTIC
241static void *dummy=&dummy;
242# endif
243
238#endif 244#endif
diff --git a/src/lib/libssl/src/apps/gendsa.c b/src/lib/libssl/src/apps/gendsa.c
index 8a296c66e5..22c39629e5 100644
--- a/src/lib/libssl/src/apps/gendsa.c
+++ b/src/lib/libssl/src/apps/gendsa.c
@@ -279,4 +279,10 @@ end:
279 apps_shutdown(); 279 apps_shutdown();
280 OPENSSL_EXIT(ret); 280 OPENSSL_EXIT(ret);
281 } 281 }
282#else /* !OPENSSL_NO_DSA */
283
284# if PEDANTIC
285static void *dummy=&dummy;
286# endif
287
282#endif 288#endif
diff --git a/src/lib/libssl/src/apps/genrsa.c b/src/lib/libssl/src/apps/genrsa.c
index fdc0d4a07d..37e9310910 100644
--- a/src/lib/libssl/src/apps/genrsa.c
+++ b/src/lib/libssl/src/apps/genrsa.c
@@ -95,7 +95,6 @@ int MAIN(int argc, char **argv)
95 int ret=1; 95 int ret=1;
96 int i,num=DEFBITS; 96 int i,num=DEFBITS;
97 long l; 97 long l;
98 int use_x931 = 0;
99 const EVP_CIPHER *enc=NULL; 98 const EVP_CIPHER *enc=NULL;
100 unsigned long f4=RSA_F4; 99 unsigned long f4=RSA_F4;
101 char *outfile=NULL; 100 char *outfile=NULL;
@@ -106,9 +105,9 @@ int MAIN(int argc, char **argv)
106 char *inrand=NULL; 105 char *inrand=NULL;
107 BIO *out=NULL; 106 BIO *out=NULL;
108 BIGNUM *bn = BN_new(); 107 BIGNUM *bn = BN_new();
109 RSA *rsa = RSA_new(); 108 RSA *rsa = NULL;
110 109
111 if(!bn || !rsa) goto err; 110 if(!bn) goto err;
112 111
113 apps_startup(); 112 apps_startup();
114 BN_GENCB_set(&cb, genrsa_cb, bio_err); 113 BN_GENCB_set(&cb, genrsa_cb, bio_err);
@@ -139,8 +138,6 @@ int MAIN(int argc, char **argv)
139 f4=3; 138 f4=3;
140 else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0) 139 else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0)
141 f4=RSA_F4; 140 f4=RSA_F4;
142 else if (strcmp(*argv,"-x931") == 0)
143 use_x931 = 1;
144#ifndef OPENSSL_NO_ENGINE 141#ifndef OPENSSL_NO_ENGINE
145 else if (strcmp(*argv,"-engine") == 0) 142 else if (strcmp(*argv,"-engine") == 0)
146 { 143 {
@@ -268,18 +265,15 @@ bad:
268 265
269 BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n", 266 BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n",
270 num); 267 num);
268#ifdef OPENSSL_NO_ENGINE
269 rsa = RSA_new();
270#else
271 rsa = RSA_new_method(e);
272#endif
273 if (!rsa)
274 goto err;
271 275
272 if (use_x931) 276 if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb))
273 {
274 BIGNUM *pubexp;
275 pubexp = BN_new();
276 if (!BN_set_word(pubexp, f4))
277 goto err;
278 if (!RSA_X931_generate_key_ex(rsa, num, pubexp, &cb))
279 goto err;
280 BN_free(pubexp);
281 }
282 else if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb))
283 goto err; 277 goto err;
284 278
285 app_RAND_write_file(NULL, bio_err); 279 app_RAND_write_file(NULL, bio_err);
diff --git a/src/lib/libssl/src/apps/install.com b/src/lib/libssl/src/apps/install.com
index f927dc29f5..c5821b40e3 100644
--- a/src/lib/libssl/src/apps/install.com
+++ b/src/lib/libssl/src/apps/install.com
@@ -5,13 +5,23 @@ $! Time of creation: 22-MAY-1998 10:13
5$! 5$!
6$! P1 root of the directory tree 6$! P1 root of the directory tree
7$! 7$!
8$
8$ IF P1 .EQS. "" 9$ IF P1 .EQS. ""
9$ THEN 10$ THEN
10$ WRITE SYS$OUTPUT "First argument missing." 11$ WRITE SYS$OUTPUT "First argument missing."
11$ WRITE SYS$OUTPUT "Should be the directory where you want things installed." 12$ WRITE SYS$OUTPUT -
13 "Should be the directory where you want things installed."
12$ EXIT 14$ EXIT
13$ ENDIF 15$ ENDIF
14$ 16$
17$ IF (F$GETSYI("CPU").LT.128)
18$ THEN
19$ ARCH := VAX
20$ ELSE
21$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
22$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
23$ ENDIF
24$
15$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0" 25$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
16$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY") 26$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
17$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") - 27$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
@@ -19,23 +29,16 @@ $ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
19$ ROOT = ROOT_DEV + "[" + ROOT_DIR 29$ ROOT = ROOT_DEV + "[" + ROOT_DIR
20$ 30$
21$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC 31$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
22$ DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE] 32$ DEFINE/NOLOG WRK_SSLEXE WRK_SSLROOT:['ARCH'_EXE]
23$ DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE]
24$ DEFINE/NOLOG WRK_SSLLIB WRK_SSLROOT:[LIB]
25$ 33$
26$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN - 34$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
27 CREATE/DIR/LOG WRK_SSLROOT:[000000] 35 CREATE/DIR/LOG WRK_SSLROOT:[000000]
28$ IF F$PARSE("WRK_SSLVEXE:") .EQS. "" THEN - 36$ IF F$PARSE("WRK_SSLEXE:") .EQS. "" THEN -
29 CREATE/DIR/LOG WRK_SSLVEXE: 37 CREATE/DIR/LOG WRK_SSLEXE:
30$ IF F$PARSE("WRK_SSLAEXE:") .EQS. "" THEN -
31 CREATE/DIR/LOG WRK_SSLAEXE:
32$ IF F$PARSE("WRK_SSLLIB:") .EQS. "" THEN -
33 CREATE/DIR/LOG WRK_SSLLIB:
34$ 38$
35$ EXE := openssl 39$ EXE := openssl
36$ 40$
37$ VEXE_DIR := [-.VAX.EXE.APPS] 41$ EXE_DIR := [-.'ARCH'.EXE.APPS]
38$ AEXE_DIR := [-.AXP.EXE.APPS]
39$ 42$
40$ I = 0 43$ I = 0
41$ LOOP_EXE: 44$ LOOP_EXE:
@@ -43,25 +46,18 @@ $ E = F$EDIT(F$ELEMENT(I, ",", EXE),"TRIM")
43$ I = I + 1 46$ I = I + 1
44$ IF E .EQS. "," THEN GOTO LOOP_EXE_END 47$ IF E .EQS. "," THEN GOTO LOOP_EXE_END
45$ SET NOON 48$ SET NOON
46$ IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. "" 49$ IF F$SEARCH(EXE_DIR+E+".EXE") .NES. ""
47$ THEN
48$ COPY 'VEXE_DIR''E'.EXE WRK_SSLVEXE:'E'.EXE/log
49$ SET FILE/PROT=W:RE WRK_SSLVEXE:'E'.EXE
50$ ENDIF
51$ IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. ""
52$ THEN 50$ THEN
53$ COPY 'AEXE_DIR''E'.EXE WRK_SSLAEXE:'E'.EXE/log 51$ COPY 'EXE_DIR''E'.EXE WRK_SSLEXE:'E'.EXE/log
54$ SET FILE/PROT=W:RE WRK_SSLAEXE:'E'.EXE 52$ SET FILE/PROT=W:RE WRK_SSLEXE:'E'.EXE
55$ ENDIF 53$ ENDIF
56$ SET ON 54$ SET ON
57$ GOTO LOOP_EXE 55$ GOTO LOOP_EXE
58$ LOOP_EXE_END: 56$ LOOP_EXE_END:
59$ 57$
60$ SET NOON 58$ SET NOON
61$ COPY CA.COM WRK_SSLAEXE:CA.COM/LOG 59$ COPY CA.COM WRK_SSLEXE:CA.COM/LOG
62$ SET FILE/PROT=W:RE WRK_SSLAEXE:CA.COM 60$ SET FILE/PROT=W:RE WRK_SSLEXE:CA.COM
63$ COPY CA.COM WRK_SSLVEXE:CA.COM/LOG
64$ SET FILE/PROT=W:RE WRK_SSLVEXE:CA.COM
65$ COPY OPENSSL-VMS.CNF WRK_SSLROOT:[000000]OPENSSL.CNF/LOG 61$ COPY OPENSSL-VMS.CNF WRK_SSLROOT:[000000]OPENSSL.CNF/LOG
66$ SET FILE/PROT=W:R WRK_SSLROOT:[000000]OPENSSL.CNF 62$ SET FILE/PROT=W:R WRK_SSLROOT:[000000]OPENSSL.CNF
67$ SET ON 63$ SET ON
diff --git a/src/lib/libssl/src/apps/makeapps.com b/src/lib/libssl/src/apps/makeapps.com
index 0580a1f401..58f2865623 100644
--- a/src/lib/libssl/src/apps/makeapps.com
+++ b/src/lib/libssl/src/apps/makeapps.com
@@ -6,11 +6,12 @@ $! A-Com Computing, Inc.
6$! byer@mail.all-net.net 6$! byer@mail.all-net.net
7$! 7$!
8$! Changes by Richard Levitte <richard@levitte.org> 8$! Changes by Richard Levitte <richard@levitte.org>
9$! Zoltan Arpadffy <zoli@polarhome.com>
9$! 10$!
10$! This command files compiles and creates all the various different 11$! This command files compiles and creates all the various different
11$! "application" programs for the different types of encryption for OpenSSL. 12$! "application" programs for the different types of encryption for OpenSSL.
12$! The EXE's are placed in the directory [.xxx.EXE.APPS] where "xxx" denotes 13$! The EXE's are placed in the directory [.xxx.EXE.APPS] where "xxx" denotes
13$! either AXP or VAX depending on your machine architecture. 14$! ALPHA, IA64 or VAX, depending on your machine architecture.
14$! 15$!
15$! It was written so it would try to determine what "C" compiler to 16$! It was written so it would try to determine what "C" compiler to
16$! use or you can specify which "C" compiler to use. 17$! use or you can specify which "C" compiler to use.
@@ -24,7 +25,7 @@ $! VAXC For VAX C.
24$! DECC For DEC C. 25$! DECC For DEC C.
25$! GNUC For GNU C. 26$! GNUC For GNU C.
26$! 27$!
27$! If you don't speficy a compiler, it will try to determine which 28$! If you don't specify a compiler, it will try to determine which
28$! "C" compiler to use. 29$! "C" compiler to use.
29$! 30$!
30$! P3, if defined, sets a TCP/IP library to use, through one of the following 31$! P3, if defined, sets a TCP/IP library to use, through one of the following
@@ -46,20 +47,21 @@ $ TCPIP_LIB = ""
46$! 47$!
47$! Check What Architecture We Are Using. 48$! Check What Architecture We Are Using.
48$! 49$!
49$ IF (F$GETSYI("CPU").GE.128) 50$ IF (F$GETSYI("CPU").LT.128)
50$ THEN 51$ THEN
51$! 52$!
52$! The Architecture Is AXP. 53$! The Architecture Is VAX.
53$! 54$!
54$ ARCH := AXP 55$ ARCH = "VAX"
55$! 56$!
56$! Else... 57$! Else...
57$! 58$!
58$ ELSE 59$ ELSE
59$! 60$!
60$! The Architecture Is VAX. 61$! The Architecture Is Alpha, IA64 or whatever comes in the future.
61$! 62$!
62$ ARCH := VAX 63$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
64$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
63$! 65$!
64$! End The Architecture Check. 66$! End The Architecture Check.
65$! 67$!
@@ -68,22 +70,6 @@ $!
68$! Define what programs should be compiled 70$! Define what programs should be compiled
69$! 71$!
70$ PROGRAMS := OPENSSL 72$ PROGRAMS := OPENSSL
71$!$ PROGRAMS := VERIFY,ASN1PARS,REQ,DGST,DH,ENC,PASSWD,GENDH,ERRSTR,CA,CRL,-
72$! RSA,DSA,DSAPARAM,-
73$! X509,GENRSA,GENDSA,S_SERVER,S_CLIENT,SPEED,-
74$! S_TIME,VERSION,PKCS7,CRL2P7,SESS_ID,CIPHERS,NSEQ,
75$!
76$! Check To Make Sure We Have Valid Command Line Parameters.
77$!
78$ GOSUB CHECK_OPTIONS
79$!
80$! Initialise logical names and such
81$!
82$ GOSUB INITIALISE
83$!
84$! Tell The User What Kind of Machine We Run On.
85$!
86$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
87$! 73$!
88$! Define The CRYPTO Library. 74$! Define The CRYPTO Library.
89$! 75$!
@@ -97,6 +83,22 @@ $! Define The OBJ Directory.
97$! 83$!
98$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.APPS] 84$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.APPS]
99$! 85$!
86$! Define The EXE Directory.
87$!
88$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.APPS]
89$!
90$! Check To Make Sure We Have Valid Command Line Parameters.
91$!
92$ GOSUB CHECK_OPTIONS
93$!
94$! Initialise logical names and such
95$!
96$ GOSUB INITIALISE
97$!
98$! Tell The User What Kind of Machine We Run On.
99$!
100$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
101$!
100$! Check To See If The OBJ Directory Exists. 102$! Check To See If The OBJ Directory Exists.
101$! 103$!
102$ IF (F$PARSE(OBJ_DIR).EQS."") 104$ IF (F$PARSE(OBJ_DIR).EQS."")
@@ -110,10 +112,6 @@ $! End The OBJ Directory Check.
110$! 112$!
111$ ENDIF 113$ ENDIF
112$! 114$!
113$! Define The EXE Directory.
114$!
115$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.APPS]
116$!
117$! Check To See If The EXE Directory Exists. 115$! Check To See If The EXE Directory Exists.
118$! 116$!
119$ IF (F$PARSE(EXE_DIR).EQS."") 117$ IF (F$PARSE(EXE_DIR).EQS."")
@@ -136,140 +134,172 @@ $!
136$ GOSUB CHECK_OPT_FILE 134$ GOSUB CHECK_OPT_FILE
137$! 135$!
138$! Define The Application Files. 136$! Define The Application Files.
139$! 137$! NOTE: Some might think this list ugly. However, it's made this way to
140$ LIB_FILES = "VERIFY;ASN1PARS;REQ;DGST;DH;DHPARAM;ENC;PASSWD;GENDH;ERRSTR;"+- 138$! reflect the E_OBJ variable in Makefile as closely as possible, thereby
141 "CA;PKCS7;CRL2P7;CRL;"+- 139$! making it fairly easy to verify that the lists are the same.
142 "RSA;RSAUTL;DSA;DSAPARAM;EC;ECPARAM;"+- 140$!
143 "X509;GENRSA;GENDSA;S_SERVER;S_CLIENT;SPEED;"+- 141$ LIB_OPENSSL = "VERIFY,ASN1PARS,REQ,DGST,DH,DHPARAM,ENC,PASSWD,GENDH,ERRSTR,"+-
144 "S_TIME;APPS;S_CB;S_SOCKET;APP_RAND;VERSION;SESS_ID;"+- 142 "CA,PKCS7,CRL2P7,CRL,"+-
145 "CIPHERS;NSEQ;PKCS12;PKCS8;SPKAC;SMIME;RAND;ENGINE;OCSP;PRIME" 143 "RSA,RSAUTL,DSA,DSAPARAM,EC,ECPARAM,"+-
144 "X509,GENRSA,GENDSA,GENPKEY,S_SERVER,S_CLIENT,SPEED,"+-
145 "S_TIME,APPS,S_CB,S_SOCKET,APP_RAND,VERSION,SESS_ID,"+-
146 "CIPHERS,NSEQ,PKCS12,PKCS8,PKEY,PKEYPARAM,PKEYUTL,"+ -
147 "SPKAC,SMIME,CMS,RAND,ENGINE,OCSP,PRIME,TS"
146$ TCPIP_PROGRAMS = ",," 148$ TCPIP_PROGRAMS = ",,"
147$ IF COMPILER .EQS. "VAXC" THEN - 149$ IF COMPILER .EQS. "VAXC" THEN -
148 TCPIP_PROGRAMS = ",OPENSSL," 150 TCPIP_PROGRAMS = ",OPENSSL,"
149$! 151$!
150$! Setup exceptional compilations 152$! Setup exceptional compilations
151$! 153$!
152$ COMPILEWITH_CC2 = ",S_SERVER,S_CLIENT," 154$ COMPILEWITH_CC2 = ",S_SOCKET,S_SERVER,S_CLIENT,"
153$! 155$!
154$ PHASE := LIB 156$ PHASE := LIB
155$! 157$!
156$ RESTART: 158$ RESTART:
157$! 159$!
158$! Define A File Counter And Set It To "0". 160$! Define An App Counter And Set It To "0".
161$!
162$ APP_COUNTER = 0
159$! 163$!
160$ FILE_COUNTER = 0 164$! Top Of The App Loop.
161$! 165$!
162$! Top Of The File Loop. 166$ NEXT_APP:
163$! 167$!
164$ NEXT_FILE: 168$! Make The Application File Name
165$! 169$!
166$! O.K, Extract The File Name From The File List. 170$ CURRENT_APP = F$EDIT(F$ELEMENT(APP_COUNTER,",",PROGRAMS),"TRIM")
167$! 171$!
168$ FILE_NAME0 = F$EDIT(F$ELEMENT(FILE_COUNTER,";",'PHASE'_FILES),"TRIM") 172$! Create The Executable File Name.
169$ FILE_NAME = F$EDIT(F$ELEMENT(0,",",FILE_NAME0),"TRIM")
170$ EXTRA_OBJ = FILE_NAME0 - FILE_NAME
171$! 173$!
172$! Check To See If We Are At The End Of The File List. 174$ EXE_FILE = EXE_DIR + CURRENT_APP + ".EXE"
173$! 175$!
174$ IF (FILE_NAME0.EQS.";") 176$! Check To See If We Are At The End Of The File List.
177$!
178$ IF (CURRENT_APP.EQS.",")
175$ THEN 179$ THEN
176$ IF (PHASE.EQS."LIB") 180$ IF (PHASE.EQS."LIB")
177$ THEN 181$ THEN
178$ PHASE := APP 182$ PHASE := APP
179$ GOTO RESTART 183$ GOTO RESTART
180$ ELSE 184$ ELSE
181$ GOTO FILE_DONE 185$ GOTO APP_DONE
182$ ENDIF 186$ ENDIF
183$ ENDIF 187$ ENDIF
184$! 188$!
185$! Increment The Counter. 189$! Increment The Counter.
186$! 190$!
187$ FILE_COUNTER = FILE_COUNTER + 1 191$ APP_COUNTER = APP_COUNTER + 1
188$! 192$!
189$! Check to see if this program should actually be compiled 193$! Decide if we're building the object files or not.
190$! 194$!
191$ IF PHASE .EQS. "APP" .AND. - 195$ IF (PHASE.EQS."LIB")
192 ","+PROGRAMS+"," - (","+F$EDIT(FILE_NAME,"UPCASE")+",") .EQS. ","+PROGRAMS+","
193$ THEN 196$ THEN
194$ GOTO NEXT_FILE
195$ ENDIF
196$! 197$!
197$! Create The Source File Name. 198$! Define A Library File Counter And Set It To "-1".
199$! -1 Means The Application File Name Is To Be Used.
198$! 200$!
199$ SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME + ".C" 201$ LIB_COUNTER = -1
200$! 202$!
201$! Create The Object File Name. 203$! Create a .OPT file for the object files
202$! 204$!
203$ OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ" 205$ OPEN/WRITE OBJECTS 'EXE_DIR''CURRENT_APP'.OPT
204$! 206$!
205$! Create The Executable File Name. 207$! Top Of The File Loop.
206$! 208$!
207$ EXE_FILE = EXE_DIR + FILE_NAME + ".EXE" 209$ NEXT_LIB:
208$ ON WARNING THEN GOTO NEXT_FILE
209$! 210$!
210$! Check To See If The File We Want To Compile Actually Exists. 211$! O.K, Extract The File Name From The File List.
211$! 212$!
212$ IF (F$SEARCH(SOURCE_FILE).EQS."") 213$ IF LIB_COUNTER .GE. 0
213$ THEN 214$ THEN
215$ FILE_NAME = F$EDIT(F$ELEMENT(LIB_COUNTER,",",LIB_'CURRENT_APP'),"TRIM")
216$ ELSE
217$ FILE_NAME = CURRENT_APP
218$ ENDIF
214$! 219$!
215$! Tell The User That The File Dosen't Exist. 220$! Check To See If We Are At The End Of The File List.
216$! 221$!
217$ WRITE SYS$OUTPUT "" 222$ IF (FILE_NAME.EQS.",")
218$ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist." 223$ THEN
219$ WRITE SYS$OUTPUT "" 224$ CLOSE OBJECTS
225$ GOTO NEXT_APP
226$ ENDIF
220$! 227$!
221$! Exit The Build. 228$! Increment The Counter.
222$! 229$!
223$ GOTO EXIT 230$ LIB_COUNTER = LIB_COUNTER + 1
224$! 231$!
225$! End The File Exist Check. 232$! Create The Source File Name.
226$! 233$!
227$ ENDIF 234$ SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME + ".C"
228$! 235$!
229$! Tell The User What We Are Building. 236$! Create The Object File Name.
230$! 237$!
231$ IF (PHASE.EQS."LIB") 238$ OBJECT_FILE = OBJ_DIR + FILE_NAME + ".OBJ"
232$ THEN 239$ ON WARNING THEN GOTO NEXT_LIB
233$ WRITE SYS$OUTPUT "Compiling The ",FILE_NAME,".C File."
234$ ELSE
235$ WRITE SYS$OUTPUT "Building The ",FILE_NAME," Application Program."
236$ ENDIF
237$! 240$!
238$! Compile The File. 241$! Check To See If The File We Want To Compile Actually Exists.
239$! 242$!
240$ ON ERROR THEN GOTO NEXT_FILE 243$ IF (F$SEARCH(SOURCE_FILE).EQS."")
241$ IF COMPILEWITH_CC2 - FILE_NAME .NES. COMPILEWITH_CC2 244$ THEN
242$ THEN 245$!
243$ CC2/OBJECT='OBJECT_FILE' 'SOURCE_FILE' 246$! Tell The User That The File Dosen't Exist.
244$ ELSE
245$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
246$ ENDIF
247$! 247$!
248$ ON WARNING THEN GOTO NEXT_FILE 248$ WRITE SYS$OUTPUT ""
249$ WRITE SYS$OUTPUT "The File ",SOURCE_FILE," Dosen't Exist."
250$ WRITE SYS$OUTPUT ""
251$!
252$! Exit The Build.
253$!
254$ GOTO EXIT
255$!
256$! End The File Exist Check.
249$! 257$!
250$ IF (PHASE.EQS."LIB") 258$ ENDIF
251$ THEN 259$!
252$ GOTO NEXT_FILE 260$! Tell The User What We Are Building.
261$!
262$ IF (PHASE.EQS."LIB")
263$ THEN
264$ WRITE SYS$OUTPUT "Compiling The ",FILE_NAME,".C File."
265$ ELSE
266$ WRITE SYS$OUTPUT "Building The ",FILE_NAME," Application Program."
267$ ENDIF
268$!
269$! Compile The File.
270$!
271$ ON ERROR THEN GOTO NEXT_LIB
272$ IF COMPILEWITH_CC2 - FILE_NAME .NES. COMPILEWITH_CC2
273$ THEN
274$ CC2/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
275$ ELSE
276$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
277$ ENDIF
278$ WRITE OBJECTS OBJECT_FILE
279$!
280$ GOTO NEXT_LIB
253$ ENDIF 281$ ENDIF
254$! 282$!
255$! Check if this program works well without a TCPIP library 283$! Check if this program works well without a TCPIP library
256$! 284$!
257$ IF TCPIP_LIB .EQS. "" .AND. TCPIP_PROGRAMS - FILE_NAME .NES. TCPIP_PROGRAMS 285$ IF TCPIP_LIB .EQS. "" .AND. TCPIP_PROGRAMS - CURRENT_APP .NES. TCPIP_PROGRAMS
258$ THEN 286$ THEN
259$ WRITE SYS$OUTPUT FILE_NAME," needs a TCP/IP library. Can't link. Skipping..." 287$ WRITE SYS$OUTPUT CURRENT_APP," needs a TCP/IP library. Can't link. Skipping..."
260$ GOTO NEXT_FILE 288$ GOTO NEXT_APP
261$ ENDIF 289$ ENDIF
262$! 290$!
263$! Link The Program. 291$! Link The Program.
264$! Check To See If We Are To Link With A Specific TCP/IP Library. 292$! Check To See If We Are To Link With A Specific TCP/IP Library.
265$! 293$!
294$ ON WARNING THEN GOTO NEXT_APP
295$!
266$ IF (TCPIP_LIB.NES."") 296$ IF (TCPIP_LIB.NES."")
267$ THEN 297$ THEN
268$! 298$!
269$! Don't Link With The RSAREF Routines And TCP/IP Library. 299$! Don't Link With The RSAREF Routines And TCP/IP Library.
270$! 300$!
271$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' - 301$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
272 'OBJECT_FILE''EXTRA_OBJ', - 302 'EXE_DIR''CURRENT_APP'.OPT/OPTION, -
273 'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, - 303 'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
274 'TCPIP_LIB','OPT_FILE'/OPTION 304 'TCPIP_LIB','OPT_FILE'/OPTION
275$! 305$!
@@ -280,7 +310,7 @@ $!
280$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library. 310$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
281$! 311$!
282$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' - 312$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' -
283 'OBJECT_FILE''EXTRA_OBJ', - 313 'EXE_DIR''CURRENT_APP'.OPT/OPTION, -
284 'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, - 314 'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, -
285 'OPT_FILE'/OPTION 315 'OPT_FILE'/OPTION
286$! 316$!
@@ -290,11 +320,11 @@ $ ENDIF
290$! 320$!
291$! Go Back And Do It Again. 321$! Go Back And Do It Again.
292$! 322$!
293$ GOTO NEXT_FILE 323$ GOTO NEXT_APP
294$! 324$!
295$! All Done With This File. 325$! All Done With This File.
296$! 326$!
297$ FILE_DONE: 327$ APP_DONE:
298$ EXIT: 328$ EXIT:
299$! 329$!
300$! All Done, Time To Clean Up And Exit. 330$! All Done, Time To Clean Up And Exit.
@@ -395,19 +425,19 @@ $! Else...
395$! 425$!
396$ ELSE 426$ ELSE
397$! 427$!
398$! Create The AXP Linker Option File. 428$! Create The non-VAX Linker Option File.
399$! 429$!
400$ CREATE 'OPT_FILE' 430$ CREATE 'OPT_FILE'
401$DECK 431$DECK
402! 432!
403! Default System Options File For AXP To Link Agianst 433! Default System Options File For non-VAX To Link Agianst
404! The Sharable C Runtime Library. 434! The Sharable C Runtime Library.
405! 435!
406SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE 436SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
407SYS$SHARE:CMA$OPEN_RTL/SHARE 437SYS$SHARE:CMA$OPEN_RTL/SHARE
408$EOD 438$EOD
409$! 439$!
410$! End The VAX/AXP DEC C Option File Check. 440$! End The DEC C Option File Check.
411$! 441$!
412$ ENDIF 442$ ENDIF
413$! 443$!
@@ -525,7 +555,7 @@ $! Time To EXIT.
525$! 555$!
526$ EXIT 556$ EXIT
527$! 557$!
528$! End The Valid Arguement Check. 558$! End The Valid Argument Check.
529$! 559$!
530$ ENDIF 560$ ENDIF
531$! 561$!
@@ -556,7 +586,7 @@ $ ELSE
556$! 586$!
557$! Check To See If We Have VAXC Or DECC. 587$! Check To See If We Have VAXC Or DECC.
558$! 588$!
559$ IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."") 589$ IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
560$ THEN 590$ THEN
561$! 591$!
562$! Looks Like DECC, Set To Use DECC. 592$! Looks Like DECC, Set To Use DECC.
@@ -666,7 +696,7 @@ $ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
666$! 696$!
667$! Define The Linker Options File Name. 697$! Define The Linker Options File Name.
668$! 698$!
669$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT" 699$ OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
670$! 700$!
671$! End DECC Check. 701$! End DECC Check.
672$! 702$!
@@ -687,9 +717,9 @@ $!
687$! Compile Using VAXC. 717$! Compile Using VAXC.
688$! 718$!
689$ CC = "CC" 719$ CC = "CC"
690$ IF ARCH.EQS."AXP" 720$ IF ARCH.NES."VAX"
691$ THEN 721$ THEN
692$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!" 722$ WRITE SYS$OUTPUT "There is no VAX C on ''ARCH'!"
693$ EXIT 723$ EXIT
694$ ENDIF 724$ ENDIF
695$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC" 725$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
@@ -703,7 +733,7 @@ $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
703$! 733$!
704$! Define The Linker Options File Name. 734$! Define The Linker Options File Name.
705$! 735$!
706$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT" 736$ OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
707$! 737$!
708$! End VAXC Check 738$! End VAXC Check
709$! 739$!
@@ -730,7 +760,7 @@ $ CC = GCC+"/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
730$! 760$!
731$! Define The Linker Options File Name. 761$! Define The Linker Options File Name.
732$! 762$!
733$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT" 763$ OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
734$! 764$!
735$! End The GNU C Check. 765$! End The GNU C Check.
736$! 766$!
@@ -740,7 +770,7 @@ $! Set up default defines
740$! 770$!
741$ CCDEFS = """FLAT_INC=1""," + CCDEFS 771$ CCDEFS = """FLAT_INC=1""," + CCDEFS
742$! 772$!
743$! Else The User Entered An Invalid Arguement. 773$! Else The User Entered An Invalid Argument.
744$! 774$!
745$ ELSE 775$ ELSE
746$! 776$!
@@ -845,7 +875,7 @@ $! Print info
845$! 875$!
846$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB 876$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
847$! 877$!
848$! Else The User Entered An Invalid Arguement. 878$! Else The User Entered An Invalid Argument.
849$! 879$!
850$ ELSE 880$ ELSE
851$! 881$!
diff --git a/src/lib/libssl/src/apps/ocsp.c b/src/lib/libssl/src/apps/ocsp.c
index 251044d77f..01847dfad7 100644
--- a/src/lib/libssl/src/apps/ocsp.c
+++ b/src/lib/libssl/src/apps/ocsp.c
@@ -56,25 +56,53 @@
56 * 56 *
57 */ 57 */
58#ifndef OPENSSL_NO_OCSP 58#ifndef OPENSSL_NO_OCSP
59
60#ifdef OPENSSL_SYS_VMS
61#define _XOPEN_SOURCE_EXTENDED /* So fd_set and friends get properly defined
62 on OpenVMS */
63#endif
64
59#define USE_SOCKETS 65#define USE_SOCKETS
66
60#include <stdio.h> 67#include <stdio.h>
61#include <stdlib.h> 68#include <stdlib.h>
62#include <string.h> 69#include <string.h>
70#include <time.h>
63#include "apps.h" /* needs to be included before the openssl headers! */ 71#include "apps.h" /* needs to be included before the openssl headers! */
64#include <openssl/e_os2.h> 72#include <openssl/e_os2.h>
65#include <openssl/ssl.h> 73#include <openssl/crypto.h>
66#include <openssl/err.h> 74#include <openssl/err.h>
67 75#include <openssl/ssl.h>
76#include <openssl/evp.h>
77#include <openssl/bn.h>
78#include <openssl/x509v3.h>
79
80#if defined(NETWARE_CLIB)
81# ifdef NETWARE_BSDSOCK
82# include <sys/socket.h>
83# include <sys/bsdskt.h>
84# else
85# include <novsock2.h>
86# endif
87#elif defined(NETWARE_LIBC)
88# ifdef NETWARE_BSDSOCK
89# include <sys/select.h>
90# else
91# include <novsock2.h>
92# endif
93#endif
94
68/* Maximum leeway in validity period: default 5 minutes */ 95/* Maximum leeway in validity period: default 5 minutes */
69#define MAX_VALIDITY_PERIOD (5 * 60) 96#define MAX_VALIDITY_PERIOD (5 * 60)
70 97
71static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, X509 *issuer, 98static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, const EVP_MD *cert_id_md, X509 *issuer,
72 STACK_OF(OCSP_CERTID) *ids); 99 STACK_OF(OCSP_CERTID) *ids);
73static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, X509 *issuer, 100static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, const EVP_MD * cert_id_md, X509 *issuer,
74 STACK_OF(OCSP_CERTID) *ids); 101 STACK_OF(OCSP_CERTID) *ids);
75static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req, 102static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req,
76 STACK *names, STACK_OF(OCSP_CERTID) *ids, 103 STACK_OF(OPENSSL_STRING) *names,
77 long nsec, long maxage); 104 STACK_OF(OCSP_CERTID) *ids, long nsec,
105 long maxage);
78 106
79static int make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req, CA_DB *db, 107static int make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req, CA_DB *db,
80 X509 *ca, X509 *rcert, EVP_PKEY *rkey, 108 X509 *ca, X509 *rcert, EVP_PKEY *rkey,
@@ -86,6 +114,7 @@ static BIO *init_responder(char *port);
86static int do_responder(OCSP_REQUEST **preq, BIO **pcbio, BIO *acbio, char *port); 114static int do_responder(OCSP_REQUEST **preq, BIO **pcbio, BIO *acbio, char *port);
87static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp); 115static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp);
88static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path, 116static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
117 STACK_OF(CONF_VALUE) *headers,
89 OCSP_REQUEST *req, int req_timeout); 118 OCSP_REQUEST *req, int req_timeout);
90 119
91#undef PROG 120#undef PROG
@@ -104,6 +133,7 @@ int MAIN(int argc, char **argv)
104 char *rsignfile = NULL, *rkeyfile = NULL; 133 char *rsignfile = NULL, *rkeyfile = NULL;
105 char *outfile = NULL; 134 char *outfile = NULL;
106 int add_nonce = 1, noverify = 0, use_ssl = -1; 135 int add_nonce = 1, noverify = 0, use_ssl = -1;
136 STACK_OF(CONF_VALUE) *headers = NULL;
107 OCSP_REQUEST *req = NULL; 137 OCSP_REQUEST *req = NULL;
108 OCSP_RESPONSE *resp = NULL; 138 OCSP_RESPONSE *resp = NULL;
109 OCSP_BASICRESP *bs = NULL; 139 OCSP_BASICRESP *bs = NULL;
@@ -126,7 +156,7 @@ int MAIN(int argc, char **argv)
126 int badarg = 0; 156 int badarg = 0;
127 int i; 157 int i;
128 int ignore_err = 0; 158 int ignore_err = 0;
129 STACK *reqnames = NULL; 159 STACK_OF(OPENSSL_STRING) *reqnames = NULL;
130 STACK_OF(OCSP_CERTID) *ids = NULL; 160 STACK_OF(OCSP_CERTID) *ids = NULL;
131 161
132 X509 *rca_cert = NULL; 162 X509 *rca_cert = NULL;
@@ -134,6 +164,7 @@ int MAIN(int argc, char **argv)
134 char *rca_filename = NULL; 164 char *rca_filename = NULL;
135 CA_DB *rdb = NULL; 165 CA_DB *rdb = NULL;
136 int nmin = 0, ndays = -1; 166 int nmin = 0, ndays = -1;
167 const EVP_MD *cert_id_md = NULL;
137 168
138 if (bio_err == NULL) bio_err = BIO_new_fp(stderr, BIO_NOCLOSE); 169 if (bio_err == NULL) bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
139 170
@@ -142,7 +173,7 @@ int MAIN(int argc, char **argv)
142 SSL_load_error_strings(); 173 SSL_load_error_strings();
143 OpenSSL_add_ssl_algorithms(); 174 OpenSSL_add_ssl_algorithms();
144 args = argv + 1; 175 args = argv + 1;
145 reqnames = sk_new_null(); 176 reqnames = sk_OPENSSL_STRING_new_null();
146 ids = sk_OCSP_CERTID_new_null(); 177 ids = sk_OCSP_CERTID_new_null();
147 while (!badarg && *args && *args[0] == '-') 178 while (!badarg && *args && *args[0] == '-')
148 { 179 {
@@ -202,6 +233,16 @@ int MAIN(int argc, char **argv)
202 } 233 }
203 else badarg = 1; 234 else badarg = 1;
204 } 235 }
236 else if (!strcmp(*args, "-header"))
237 {
238 if (args[1] && args[2])
239 {
240 if (!X509V3_add_value(args[1], args[2], &headers))
241 goto end;
242 args += 2;
243 }
244 else badarg = 1;
245 }
205 else if (!strcmp(*args, "-ignore_err")) 246 else if (!strcmp(*args, "-ignore_err"))
206 ignore_err = 1; 247 ignore_err = 1;
207 else if (!strcmp(*args, "-noverify")) 248 else if (!strcmp(*args, "-noverify"))
@@ -401,9 +442,10 @@ int MAIN(int argc, char **argv)
401 cert = load_cert(bio_err, *args, FORMAT_PEM, 442 cert = load_cert(bio_err, *args, FORMAT_PEM,
402 NULL, e, "certificate"); 443 NULL, e, "certificate");
403 if(!cert) goto end; 444 if(!cert) goto end;
404 if(!add_ocsp_cert(&req, cert, issuer, ids)) 445 if (!cert_id_md) cert_id_md = EVP_sha1();
446 if(!add_ocsp_cert(&req, cert, cert_id_md, issuer, ids))
405 goto end; 447 goto end;
406 if(!sk_push(reqnames, *args)) 448 if(!sk_OPENSSL_STRING_push(reqnames, *args))
407 goto end; 449 goto end;
408 } 450 }
409 else badarg = 1; 451 else badarg = 1;
@@ -413,9 +455,10 @@ int MAIN(int argc, char **argv)
413 if (args[1]) 455 if (args[1])
414 { 456 {
415 args++; 457 args++;
416 if(!add_ocsp_serial(&req, *args, issuer, ids)) 458 if (!cert_id_md) cert_id_md = EVP_sha1();
459 if(!add_ocsp_serial(&req, *args, cert_id_md, issuer, ids))
417 goto end; 460 goto end;
418 if(!sk_push(reqnames, *args)) 461 if(!sk_OPENSSL_STRING_push(reqnames, *args))
419 goto end; 462 goto end;
420 } 463 }
421 else badarg = 1; 464 else badarg = 1;
@@ -515,7 +558,10 @@ int MAIN(int argc, char **argv)
515 } 558 }
516 else badarg = 1; 559 else badarg = 1;
517 } 560 }
518 else badarg = 1; 561 else if ((cert_id_md = EVP_get_digestbyname((*args)+1))==NULL)
562 {
563 badarg = 1;
564 }
519 args++; 565 args++;
520 } 566 }
521 567
@@ -571,6 +617,7 @@ int MAIN(int argc, char **argv)
571 BIO_printf (bio_err, "-ndays n number of days before next update\n"); 617 BIO_printf (bio_err, "-ndays n number of days before next update\n");
572 BIO_printf (bio_err, "-resp_key_id identify reponse by signing certificate key ID\n"); 618 BIO_printf (bio_err, "-resp_key_id identify reponse by signing certificate key ID\n");
573 BIO_printf (bio_err, "-nrequest n number of requests to accept (default unlimited)\n"); 619 BIO_printf (bio_err, "-nrequest n number of requests to accept (default unlimited)\n");
620 BIO_printf (bio_err, "-<dgst alg> use specified digest in the request");
574 goto end; 621 goto end;
575 } 622 }
576 623
@@ -677,7 +724,8 @@ int MAIN(int argc, char **argv)
677 "signer private key"); 724 "signer private key");
678 if (!key) 725 if (!key)
679 goto end; 726 goto end;
680 if (!OCSP_request_sign(req, signer, key, EVP_sha1(), sign_other, sign_flags)) 727
728 if (!OCSP_request_sign(req, signer, key, NULL, sign_other, sign_flags))
681 { 729 {
682 BIO_printf(bio_err, "Error signing OCSP request\n"); 730 BIO_printf(bio_err, "Error signing OCSP request\n");
683 goto end; 731 goto end;
@@ -721,7 +769,7 @@ int MAIN(int argc, char **argv)
721 { 769 {
722#ifndef OPENSSL_NO_SOCK 770#ifndef OPENSSL_NO_SOCK
723 resp = process_responder(bio_err, req, host, path, 771 resp = process_responder(bio_err, req, host, path,
724 port, use_ssl, req_timeout); 772 port, use_ssl, headers, req_timeout);
725 if (!resp) 773 if (!resp)
726 goto end; 774 goto end;
727#else 775#else
@@ -866,10 +914,11 @@ end:
866 OCSP_REQUEST_free(req); 914 OCSP_REQUEST_free(req);
867 OCSP_RESPONSE_free(resp); 915 OCSP_RESPONSE_free(resp);
868 OCSP_BASICRESP_free(bs); 916 OCSP_BASICRESP_free(bs);
869 sk_free(reqnames); 917 sk_OPENSSL_STRING_free(reqnames);
870 sk_OCSP_CERTID_free(ids); 918 sk_OCSP_CERTID_free(ids);
871 sk_X509_pop_free(sign_other, X509_free); 919 sk_X509_pop_free(sign_other, X509_free);
872 sk_X509_pop_free(verify_other, X509_free); 920 sk_X509_pop_free(verify_other, X509_free);
921 sk_CONF_VALUE_pop_free(headers, X509V3_conf_free);
873 922
874 if (use_ssl != -1) 923 if (use_ssl != -1)
875 { 924 {
@@ -881,7 +930,7 @@ end:
881 OPENSSL_EXIT(ret); 930 OPENSSL_EXIT(ret);
882} 931}
883 932
884static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, X509 *issuer, 933static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, const EVP_MD *cert_id_md,X509 *issuer,
885 STACK_OF(OCSP_CERTID) *ids) 934 STACK_OF(OCSP_CERTID) *ids)
886 { 935 {
887 OCSP_CERTID *id; 936 OCSP_CERTID *id;
@@ -892,7 +941,7 @@ static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, X509 *issuer,
892 } 941 }
893 if(!*req) *req = OCSP_REQUEST_new(); 942 if(!*req) *req = OCSP_REQUEST_new();
894 if(!*req) goto err; 943 if(!*req) goto err;
895 id = OCSP_cert_to_id(NULL, cert, issuer); 944 id = OCSP_cert_to_id(cert_id_md, cert, issuer);
896 if(!id || !sk_OCSP_CERTID_push(ids, id)) goto err; 945 if(!id || !sk_OCSP_CERTID_push(ids, id)) goto err;
897 if(!OCSP_request_add0_id(*req, id)) goto err; 946 if(!OCSP_request_add0_id(*req, id)) goto err;
898 return 1; 947 return 1;
@@ -902,7 +951,7 @@ static int add_ocsp_cert(OCSP_REQUEST **req, X509 *cert, X509 *issuer,
902 return 0; 951 return 0;
903 } 952 }
904 953
905static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, X509 *issuer, 954static int add_ocsp_serial(OCSP_REQUEST **req, char *serial,const EVP_MD *cert_id_md, X509 *issuer,
906 STACK_OF(OCSP_CERTID) *ids) 955 STACK_OF(OCSP_CERTID) *ids)
907 { 956 {
908 OCSP_CERTID *id; 957 OCSP_CERTID *id;
@@ -924,7 +973,7 @@ static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, X509 *issuer,
924 BIO_printf(bio_err, "Error converting serial number %s\n", serial); 973 BIO_printf(bio_err, "Error converting serial number %s\n", serial);
925 return 0; 974 return 0;
926 } 975 }
927 id = OCSP_cert_id_new(EVP_sha1(), iname, ikey, sno); 976 id = OCSP_cert_id_new(cert_id_md, iname, ikey, sno);
928 ASN1_INTEGER_free(sno); 977 ASN1_INTEGER_free(sno);
929 if(!id || !sk_OCSP_CERTID_push(ids, id)) goto err; 978 if(!id || !sk_OCSP_CERTID_push(ids, id)) goto err;
930 if(!OCSP_request_add0_id(*req, id)) goto err; 979 if(!OCSP_request_add0_id(*req, id)) goto err;
@@ -936,8 +985,9 @@ static int add_ocsp_serial(OCSP_REQUEST **req, char *serial, X509 *issuer,
936 } 985 }
937 986
938static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req, 987static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req,
939 STACK *names, STACK_OF(OCSP_CERTID) *ids, 988 STACK_OF(OPENSSL_STRING) *names,
940 long nsec, long maxage) 989 STACK_OF(OCSP_CERTID) *ids, long nsec,
990 long maxage)
941 { 991 {
942 OCSP_CERTID *id; 992 OCSP_CERTID *id;
943 char *name; 993 char *name;
@@ -947,13 +997,13 @@ static int print_ocsp_summary(BIO *out, OCSP_BASICRESP *bs, OCSP_REQUEST *req,
947 997
948 ASN1_GENERALIZEDTIME *rev, *thisupd, *nextupd; 998 ASN1_GENERALIZEDTIME *rev, *thisupd, *nextupd;
949 999
950 if (!bs || !req || !sk_num(names) || !sk_OCSP_CERTID_num(ids)) 1000 if (!bs || !req || !sk_OPENSSL_STRING_num(names) || !sk_OCSP_CERTID_num(ids))
951 return 1; 1001 return 1;
952 1002
953 for (i = 0; i < sk_OCSP_CERTID_num(ids); i++) 1003 for (i = 0; i < sk_OCSP_CERTID_num(ids); i++)
954 { 1004 {
955 id = sk_OCSP_CERTID_value(ids, i); 1005 id = sk_OCSP_CERTID_value(ids, i);
956 name = sk_value(names, i); 1006 name = sk_OPENSSL_STRING_value(names, i);
957 BIO_printf(out, "%s: ", name); 1007 BIO_printf(out, "%s: ", name);
958 1008
959 if(!OCSP_resp_find_status(bs, id, &status, &reason, 1009 if(!OCSP_resp_find_status(bs, id, &status, &reason,
@@ -1010,7 +1060,6 @@ static int make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req, CA_DB *db
1010 OCSP_BASICRESP *bs = NULL; 1060 OCSP_BASICRESP *bs = NULL;
1011 int i, id_count, ret = 1; 1061 int i, id_count, ret = 1;
1012 1062
1013
1014 id_count = OCSP_request_onereq_count(req); 1063 id_count = OCSP_request_onereq_count(req);
1015 1064
1016 if (id_count <= 0) 1065 if (id_count <= 0)
@@ -1019,7 +1068,6 @@ static int make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req, CA_DB *db
1019 goto end; 1068 goto end;
1020 } 1069 }
1021 1070
1022 ca_id = OCSP_cert_to_id(EVP_sha1(), NULL, ca);
1023 1071
1024 bs = OCSP_BASICRESP_new(); 1072 bs = OCSP_BASICRESP_new();
1025 thisupd = X509_gmtime_adj(NULL, 0); 1073 thisupd = X509_gmtime_adj(NULL, 0);
@@ -1032,8 +1080,23 @@ static int make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req, CA_DB *db
1032 OCSP_ONEREQ *one; 1080 OCSP_ONEREQ *one;
1033 ASN1_INTEGER *serial; 1081 ASN1_INTEGER *serial;
1034 char **inf; 1082 char **inf;
1083 ASN1_OBJECT *cert_id_md_oid;
1084 const EVP_MD *cert_id_md;
1035 one = OCSP_request_onereq_get0(req, i); 1085 one = OCSP_request_onereq_get0(req, i);
1036 cid = OCSP_onereq_get0_id(one); 1086 cid = OCSP_onereq_get0_id(one);
1087
1088 OCSP_id_get0_info(NULL,&cert_id_md_oid, NULL,NULL, cid);
1089
1090 cert_id_md = EVP_get_digestbyobj(cert_id_md_oid);
1091 if (! cert_id_md)
1092 {
1093 *resp = OCSP_response_create(OCSP_RESPONSE_STATUS_INTERNALERROR,
1094 NULL);
1095 goto end;
1096 }
1097 if (ca_id) OCSP_CERTID_free(ca_id);
1098 ca_id = OCSP_cert_to_id(cert_id_md, NULL, ca);
1099
1037 /* Is this request about our CA? */ 1100 /* Is this request about our CA? */
1038 if (OCSP_id_issuer_cmp(ca_id, cid)) 1101 if (OCSP_id_issuer_cmp(ca_id, cid))
1039 { 1102 {
@@ -1078,8 +1141,8 @@ static int make_ocsp_response(OCSP_RESPONSE **resp, OCSP_REQUEST *req, CA_DB *db
1078 } 1141 }
1079 1142
1080 OCSP_copy_nonce(bs, req); 1143 OCSP_copy_nonce(bs, req);
1081 1144
1082 OCSP_basic_sign(bs, rcert, rkey, EVP_sha1(), rother, flags); 1145 OCSP_basic_sign(bs, rcert, rkey, NULL, rother, flags);
1083 1146
1084 *resp = OCSP_response_create(OCSP_RESPONSE_STATUS_SUCCESSFUL, bs); 1147 *resp = OCSP_response_create(OCSP_RESPONSE_STATUS_SUCCESSFUL, bs);
1085 1148
@@ -1211,10 +1274,12 @@ static int send_ocsp_response(BIO *cbio, OCSP_RESPONSE *resp)
1211 } 1274 }
1212 1275
1213static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path, 1276static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
1277 STACK_OF(CONF_VALUE) *headers,
1214 OCSP_REQUEST *req, int req_timeout) 1278 OCSP_REQUEST *req, int req_timeout)
1215 { 1279 {
1216 int fd; 1280 int fd;
1217 int rv; 1281 int rv;
1282 int i;
1218 OCSP_REQ_CTX *ctx = NULL; 1283 OCSP_REQ_CTX *ctx = NULL;
1219 OCSP_RESPONSE *rsp = NULL; 1284 OCSP_RESPONSE *rsp = NULL;
1220 fd_set confds; 1285 fd_set confds;
@@ -1231,16 +1296,13 @@ static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
1231 return NULL; 1296 return NULL;
1232 } 1297 }
1233 1298
1234 if (req_timeout == -1)
1235 return OCSP_sendreq_bio(cbio, path, req);
1236
1237 if (BIO_get_fd(cbio, &fd) <= 0) 1299 if (BIO_get_fd(cbio, &fd) <= 0)
1238 { 1300 {
1239 BIO_puts(err, "Can't get connection fd\n"); 1301 BIO_puts(err, "Can't get connection fd\n");
1240 goto err; 1302 goto err;
1241 } 1303 }
1242 1304
1243 if (rv <= 0) 1305 if (req_timeout != -1 && rv <= 0)
1244 { 1306 {
1245 FD_ZERO(&confds); 1307 FD_ZERO(&confds);
1246 openssl_fdset(fd, &confds); 1308 openssl_fdset(fd, &confds);
@@ -1255,15 +1317,27 @@ static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
1255 } 1317 }
1256 1318
1257 1319
1258 ctx = OCSP_sendreq_new(cbio, path, req, -1); 1320 ctx = OCSP_sendreq_new(cbio, path, NULL, -1);
1259 if (!ctx) 1321 if (!ctx)
1260 return NULL; 1322 return NULL;
1323
1324 for (i = 0; i < sk_CONF_VALUE_num(headers); i++)
1325 {
1326 CONF_VALUE *hdr = sk_CONF_VALUE_value(headers, i);
1327 if (!OCSP_REQ_CTX_add1_header(ctx, hdr->name, hdr->value))
1328 goto err;
1329 }
1330
1331 if (!OCSP_REQ_CTX_set1_req(ctx, req))
1332 goto err;
1261 1333
1262 for (;;) 1334 for (;;)
1263 { 1335 {
1264 rv = OCSP_sendreq_nbio(&rsp, ctx); 1336 rv = OCSP_sendreq_nbio(&rsp, ctx);
1265 if (rv != -1) 1337 if (rv != -1)
1266 break; 1338 break;
1339 if (req_timeout == -1)
1340 continue;
1267 FD_ZERO(&confds); 1341 FD_ZERO(&confds);
1268 openssl_fdset(fd, &confds); 1342 openssl_fdset(fd, &confds);
1269 tv.tv_usec = 0; 1343 tv.tv_usec = 0;
@@ -1287,7 +1361,7 @@ static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
1287 BIO_puts(err, "Select error\n"); 1361 BIO_puts(err, "Select error\n");
1288 break; 1362 break;
1289 } 1363 }
1290 1364
1291 } 1365 }
1292 err: 1366 err:
1293 if (ctx) 1367 if (ctx)
@@ -1298,6 +1372,7 @@ static OCSP_RESPONSE *query_responder(BIO *err, BIO *cbio, char *path,
1298 1372
1299OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req, 1373OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req,
1300 char *host, char *path, char *port, int use_ssl, 1374 char *host, char *path, char *port, int use_ssl,
1375 STACK_OF(CONF_VALUE) *headers,
1301 int req_timeout) 1376 int req_timeout)
1302 { 1377 {
1303 BIO *cbio = NULL; 1378 BIO *cbio = NULL;
@@ -1332,14 +1407,14 @@ OCSP_RESPONSE *process_responder(BIO *err, OCSP_REQUEST *req,
1332 sbio = BIO_new_ssl(ctx, 1); 1407 sbio = BIO_new_ssl(ctx, 1);
1333 cbio = BIO_push(sbio, cbio); 1408 cbio = BIO_push(sbio, cbio);
1334 } 1409 }
1335 resp = query_responder(err, cbio, path, req, req_timeout); 1410 resp = query_responder(err, cbio, path, headers, req, req_timeout);
1336 if (!resp) 1411 if (!resp)
1337 BIO_printf(bio_err, "Error querying OCSP responsder\n"); 1412 BIO_printf(bio_err, "Error querying OCSP responsder\n");
1338 end: 1413 end:
1339 if (ctx)
1340 SSL_CTX_free(ctx);
1341 if (cbio) 1414 if (cbio)
1342 BIO_free_all(cbio); 1415 BIO_free_all(cbio);
1416 if (ctx)
1417 SSL_CTX_free(ctx);
1343 return resp; 1418 return resp;
1344 } 1419 }
1345 1420
diff --git a/src/lib/libssl/src/apps/openssl-vms.cnf b/src/lib/libssl/src/apps/openssl-vms.cnf
index fae82b0d53..20ed61bc3e 100644
--- a/src/lib/libssl/src/apps/openssl-vms.cnf
+++ b/src/lib/libssl/src/apps/openssl-vms.cnf
@@ -21,12 +21,17 @@ oid_section = new_oids
21 21
22[ new_oids ] 22[ new_oids ]
23 23
24# We can add new OIDs in here for use by 'ca' and 'req'. 24# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
25# Add a simple OID like this: 25# Add a simple OID like this:
26# testoid1=1.2.3.4 26# testoid1=1.2.3.4
27# Or use config file substitution like this: 27# Or use config file substitution like this:
28# testoid2=${testoid1}.5.6 28# testoid2=${testoid1}.5.6
29 29
30# Policies used by the TSA examples.
31tsa_policy1 = 1.2.3.4.1
32tsa_policy2 = 1.2.3.4.5.6
33tsa_policy3 = 1.2.3.4.5.7
34
30#################################################################### 35####################################################################
31[ ca ] 36[ ca ]
32default_ca = CA_default # The default ca section 37default_ca = CA_default # The default ca section
@@ -67,7 +72,7 @@ cert_opt = ca_default # Certificate field options
67 72
68default_days = 365 # how long to certify for 73default_days = 365 # how long to certify for
69default_crl_days= 30 # how long before next CRL 74default_crl_days= 30 # how long before next CRL
70default_md = sha1 # which md to use. 75default_md = default # use public key default MD
71preserve = no # keep passed DN ordering 76preserve = no # keep passed DN ordering
72 77
73# A few difference way of specifying how similar the request should look 78# A few difference way of specifying how similar the request should look
@@ -110,13 +115,12 @@ x509_extensions = v3_ca # The extentions to add to the self signed cert
110 115
111# This sets a mask for permitted string types. There are several options. 116# This sets a mask for permitted string types. There are several options.
112# default: PrintableString, T61String, BMPString. 117# default: PrintableString, T61String, BMPString.
113# pkix : PrintableString, BMPString. 118# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
114# utf8only: only UTF8Strings. 119# utf8only: only UTF8Strings (PKIX recommendation after 2004).
115# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). 120# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
116# MASK:XXXX a literal mask value. 121# MASK:XXXX a literal mask value.
117# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings 122# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
118# so use this option with caution! 123string_mask = utf8only
119string_mask = nombstr
120 124
121# req_extensions = v3_req # The extensions to add to a certificate request 125# req_extensions = v3_req # The extensions to add to a certificate request
122 126
@@ -207,6 +211,9 @@ authorityKeyIdentifier=keyid,issuer
207#nsCaPolicyUrl 211#nsCaPolicyUrl
208#nsSslServerName 212#nsSslServerName
209 213
214# This is required for TSA certificates.
215# extendedKeyUsage = critical,timeStamping
216
210[ v3_req ] 217[ v3_req ]
211 218
212# Extensions to add to a certificate request 219# Extensions to add to a certificate request
@@ -224,7 +231,7 @@ keyUsage = nonRepudiation, digitalSignature, keyEncipherment
224 231
225subjectKeyIdentifier=hash 232subjectKeyIdentifier=hash
226 233
227authorityKeyIdentifier=keyid:always,issuer:always 234authorityKeyIdentifier=keyid:always,issuer
228 235
229# This is what PKIX recommends but some broken software chokes on critical 236# This is what PKIX recommends but some broken software chokes on critical
230# extensions. 237# extensions.
@@ -257,7 +264,7 @@ basicConstraints = CA:true
257# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. 264# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
258 265
259# issuerAltName=issuer:copy 266# issuerAltName=issuer:copy
260authorityKeyIdentifier=keyid:always,issuer:always 267authorityKeyIdentifier=keyid:always
261 268
262[ proxy_cert_ext ] 269[ proxy_cert_ext ]
263# These extensions should be added when creating a proxy certificate 270# These extensions should be added when creating a proxy certificate
@@ -290,7 +297,7 @@ nsComment = "OpenSSL Generated Certificate"
290 297
291# PKIX recommendations harmless if included in all certificates. 298# PKIX recommendations harmless if included in all certificates.
292subjectKeyIdentifier=hash 299subjectKeyIdentifier=hash
293authorityKeyIdentifier=keyid,issuer:always 300authorityKeyIdentifier=keyid,issuer
294 301
295# This stuff is for subjectAltName and issuerAltname. 302# This stuff is for subjectAltName and issuerAltname.
296# Import the email address. 303# Import the email address.
@@ -311,3 +318,33 @@ authorityKeyIdentifier=keyid,issuer:always
311 318
312# This really needs to be in place for it to be a proxy certificate. 319# This really needs to be in place for it to be a proxy certificate.
313proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo 320proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
321
322####################################################################
323[ tsa ]
324
325default_tsa = tsa_config1 # the default TSA section
326
327[ tsa_config1 ]
328
329# These are used by the TSA reply generation only.
330dir = sys\$disk:[.demoCA # TSA root directory
331serial = $dir]tsaserial. # The current serial number (mandatory)
332crypto_device = builtin # OpenSSL engine to use for signing
333signer_cert = $dir/tsacert.pem # The TSA signing certificate
334 # (optional)
335certs = $dir.cacert.pem] # Certificate chain to include in reply
336 # (optional)
337signer_key = $dir/private/tsakey.pem # The TSA private key (optional)
338
339default_policy = tsa_policy1 # Policy if request did not specify it
340 # (optional)
341other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)
342digests = md5, sha1 # Acceptable message digests (mandatory)
343accuracy = secs:1, millisecs:500, microsecs:100 # (optional)
344clock_precision_digits = 0 # number of digits after dot. (optional)
345ordering = yes # Is ordering defined for timestamps?
346 # (optional, default: no)
347tsa_name = yes # Must the TSA name be included in the reply?
348 # (optional, default: no)
349ess_cert_id_chain = no # Must the ESS cert id chain be included?
350 # (optional, default: no)
diff --git a/src/lib/libssl/src/apps/openssl.c b/src/lib/libssl/src/apps/openssl.c
index 7d2b476cf0..851e639735 100644
--- a/src/lib/libssl/src/apps/openssl.c
+++ b/src/lib/libssl/src/apps/openssl.c
@@ -135,19 +135,17 @@
135 * type of "FUNCTION*"). This removes the necessity for macro-generated wrapper 135 * type of "FUNCTION*"). This removes the necessity for macro-generated wrapper
136 * functions. */ 136 * functions. */
137 137
138/* static unsigned long MS_CALLBACK hash(FUNCTION *a); */ 138static LHASH_OF(FUNCTION) *prog_init(void );
139static unsigned long MS_CALLBACK hash(const void *a_void); 139static int do_cmd(LHASH_OF(FUNCTION) *prog,int argc,char *argv[]);
140/* static int MS_CALLBACK cmp(FUNCTION *a,FUNCTION *b); */ 140static void list_pkey(BIO *out);
141static int MS_CALLBACK cmp(const void *a_void,const void *b_void); 141static void list_cipher(BIO *out);
142static LHASH *prog_init(void ); 142static void list_md(BIO *out);
143static int do_cmd(LHASH *prog,int argc,char *argv[]);
144char *default_config_file=NULL; 143char *default_config_file=NULL;
145 144
146/* Make sure there is only one when MONOLITH is defined */ 145/* Make sure there is only one when MONOLITH is defined */
147#ifdef MONOLITH 146#ifdef MONOLITH
148CONF *config=NULL; 147CONF *config=NULL;
149BIO *bio_err=NULL; 148BIO *bio_err=NULL;
150int in_FIPS_mode=0;
151#endif 149#endif
152 150
153 151
@@ -227,25 +225,12 @@ int main(int Argc, char *Argv[])
227 int n,i,ret=0; 225 int n,i,ret=0;
228 int argc; 226 int argc;
229 char **argv,*p; 227 char **argv,*p;
230 LHASH *prog=NULL; 228 LHASH_OF(FUNCTION) *prog=NULL;
231 long errline; 229 long errline;
232 230
233 arg.data=NULL; 231 arg.data=NULL;
234 arg.count=0; 232 arg.count=0;
235 233
236 in_FIPS_mode = 0;
237
238#ifdef OPENSSL_FIPS
239 if(getenv("OPENSSL_FIPS")) {
240 if (!FIPS_mode_set(1)) {
241 ERR_load_crypto_strings();
242 ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE));
243 EXIT(1);
244 }
245 in_FIPS_mode = 1;
246 }
247#endif
248
249 if (bio_err == NULL) 234 if (bio_err == NULL)
250 if ((bio_err=BIO_new(BIO_s_file())) != NULL) 235 if ((bio_err=BIO_new(BIO_s_file())) != NULL)
251 BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT); 236 BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);
@@ -287,9 +272,21 @@ int main(int Argc, char *Argv[])
287 i=NCONF_load(config,p,&errline); 272 i=NCONF_load(config,p,&errline);
288 if (i == 0) 273 if (i == 0)
289 { 274 {
290 NCONF_free(config); 275 if (ERR_GET_REASON(ERR_peek_last_error())
291 config = NULL; 276 == CONF_R_NO_SUCH_FILE)
292 ERR_clear_error(); 277 {
278 BIO_printf(bio_err,
279 "WARNING: can't open config file: %s\n",p);
280 ERR_clear_error();
281 NCONF_free(config);
282 config = NULL;
283 }
284 else
285 {
286 ERR_print_errors(bio_err);
287 NCONF_free(config);
288 exit(1);
289 }
293 } 290 }
294 291
295 prog=prog_init(); 292 prog=prog_init();
@@ -298,7 +295,7 @@ int main(int Argc, char *Argv[])
298 program_name(Argv[0],pname,sizeof pname); 295 program_name(Argv[0],pname,sizeof pname);
299 296
300 f.name=pname; 297 f.name=pname;
301 fp=(FUNCTION *)lh_retrieve(prog,&f); 298 fp=lh_FUNCTION_retrieve(prog,&f);
302 if (fp != NULL) 299 if (fp != NULL)
303 { 300 {
304 Argv[0]=pname; 301 Argv[0]=pname;
@@ -333,7 +330,8 @@ int main(int Argc, char *Argv[])
333 else prompt="OpenSSL> "; 330 else prompt="OpenSSL> ";
334 fputs(prompt,stdout); 331 fputs(prompt,stdout);
335 fflush(stdout); 332 fflush(stdout);
336 fgets(p,n,stdin); 333 if (!fgets(p,n,stdin))
334 goto end;
337 if (p[0] == '\0') goto end; 335 if (p[0] == '\0') goto end;
338 i=strlen(p); 336 i=strlen(p);
339 if (i <= 1) break; 337 if (i <= 1) break;
@@ -364,7 +362,7 @@ end:
364 NCONF_free(config); 362 NCONF_free(config);
365 config=NULL; 363 config=NULL;
366 } 364 }
367 if (prog != NULL) lh_free(prog); 365 if (prog != NULL) lh_FUNCTION_free(prog);
368 if (arg.data != NULL) OPENSSL_free(arg.data); 366 if (arg.data != NULL) OPENSSL_free(arg.data);
369 367
370 apps_shutdown(); 368 apps_shutdown();
@@ -380,9 +378,13 @@ end:
380 378
381#define LIST_STANDARD_COMMANDS "list-standard-commands" 379#define LIST_STANDARD_COMMANDS "list-standard-commands"
382#define LIST_MESSAGE_DIGEST_COMMANDS "list-message-digest-commands" 380#define LIST_MESSAGE_DIGEST_COMMANDS "list-message-digest-commands"
381#define LIST_MESSAGE_DIGEST_ALGORITHMS "list-message-digest-algorithms"
383#define LIST_CIPHER_COMMANDS "list-cipher-commands" 382#define LIST_CIPHER_COMMANDS "list-cipher-commands"
383#define LIST_CIPHER_ALGORITHMS "list-cipher-algorithms"
384#define LIST_PUBLIC_KEY_ALGORITHMS "list-public-key-algorithms"
385
384 386
385static int do_cmd(LHASH *prog, int argc, char *argv[]) 387static int do_cmd(LHASH_OF(FUNCTION) *prog, int argc, char *argv[])
386 { 388 {
387 FUNCTION f,*fp; 389 FUNCTION f,*fp;
388 int i,ret=1,tp,nl; 390 int i,ret=1,tp,nl;
@@ -390,7 +392,22 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
390 if ((argc <= 0) || (argv[0] == NULL)) 392 if ((argc <= 0) || (argv[0] == NULL))
391 { ret=0; goto end; } 393 { ret=0; goto end; }
392 f.name=argv[0]; 394 f.name=argv[0];
393 fp=(FUNCTION *)lh_retrieve(prog,&f); 395 fp=lh_FUNCTION_retrieve(prog,&f);
396 if (fp == NULL)
397 {
398 if (EVP_get_digestbyname(argv[0]))
399 {
400 f.type = FUNC_TYPE_MD;
401 f.func = dgst_main;
402 fp = &f;
403 }
404 else if (EVP_get_cipherbyname(argv[0]))
405 {
406 f.type = FUNC_TYPE_CIPHER;
407 f.func = enc_main;
408 fp = &f;
409 }
410 }
394 if (fp != NULL) 411 if (fp != NULL)
395 { 412 {
396 ret=fp->func(argc,argv); 413 ret=fp->func(argc,argv);
@@ -405,7 +422,7 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
405 } 422 }
406#endif 423#endif
407 f.name=argv[0]+3; 424 f.name=argv[0]+3;
408 ret = (lh_retrieve(prog,&f) != NULL); 425 ret = (lh_FUNCTION_retrieve(prog,&f) != NULL);
409 if (!ret) 426 if (!ret)
410 BIO_printf(bio_stdout, "%s\n", argv[0]); 427 BIO_printf(bio_stdout, "%s\n", argv[0]);
411 else 428 else
@@ -423,7 +440,10 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
423 } 440 }
424 else if ((strcmp(argv[0],LIST_STANDARD_COMMANDS) == 0) || 441 else if ((strcmp(argv[0],LIST_STANDARD_COMMANDS) == 0) ||
425 (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) || 442 (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) ||
426 (strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0)) 443 (strcmp(argv[0],LIST_MESSAGE_DIGEST_ALGORITHMS) == 0) ||
444 (strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0) ||
445 (strcmp(argv[0],LIST_CIPHER_ALGORITHMS) == 0) ||
446 (strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0))
427 { 447 {
428 int list_type; 448 int list_type;
429 BIO *bio_stdout; 449 BIO *bio_stdout;
@@ -432,6 +452,12 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
432 list_type = FUNC_TYPE_GENERAL; 452 list_type = FUNC_TYPE_GENERAL;
433 else if (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0) 453 else if (strcmp(argv[0],LIST_MESSAGE_DIGEST_COMMANDS) == 0)
434 list_type = FUNC_TYPE_MD; 454 list_type = FUNC_TYPE_MD;
455 else if (strcmp(argv[0],LIST_MESSAGE_DIGEST_ALGORITHMS) == 0)
456 list_type = FUNC_TYPE_MD_ALG;
457 else if (strcmp(argv[0],LIST_PUBLIC_KEY_ALGORITHMS) == 0)
458 list_type = FUNC_TYPE_PKEY;
459 else if (strcmp(argv[0],LIST_CIPHER_ALGORITHMS) == 0)
460 list_type = FUNC_TYPE_CIPHER_ALG;
435 else /* strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0 */ 461 else /* strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0 */
436 list_type = FUNC_TYPE_CIPHER; 462 list_type = FUNC_TYPE_CIPHER;
437 bio_stdout = BIO_new_fp(stdout,BIO_NOCLOSE); 463 bio_stdout = BIO_new_fp(stdout,BIO_NOCLOSE);
@@ -441,10 +467,23 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
441 bio_stdout = BIO_push(tmpbio, bio_stdout); 467 bio_stdout = BIO_push(tmpbio, bio_stdout);
442 } 468 }
443#endif 469#endif
444 470
445 for (fp=functions; fp->name != NULL; fp++) 471 if (!load_config(bio_err, NULL))
446 if (fp->type == list_type) 472 goto end;
447 BIO_printf(bio_stdout, "%s\n", fp->name); 473
474 if (list_type == FUNC_TYPE_PKEY)
475 list_pkey(bio_stdout);
476 if (list_type == FUNC_TYPE_MD_ALG)
477 list_md(bio_stdout);
478 if (list_type == FUNC_TYPE_CIPHER_ALG)
479 list_cipher(bio_stdout);
480 else
481 {
482 for (fp=functions; fp->name != NULL; fp++)
483 if (fp->type == list_type)
484 BIO_printf(bio_stdout, "%s\n",
485 fp->name);
486 }
448 BIO_free_all(bio_stdout); 487 BIO_free_all(bio_stdout);
449 ret=0; 488 ret=0;
450 goto end; 489 goto end;
@@ -507,9 +546,94 @@ static int SortFnByName(const void *_f1,const void *_f2)
507 return strcmp(f1->name,f2->name); 546 return strcmp(f1->name,f2->name);
508 } 547 }
509 548
510static LHASH *prog_init(void) 549static void list_pkey(BIO *out)
550 {
551 int i;
552 for (i = 0; i < EVP_PKEY_asn1_get_count(); i++)
553 {
554 const EVP_PKEY_ASN1_METHOD *ameth;
555 int pkey_id, pkey_base_id, pkey_flags;
556 const char *pinfo, *pem_str;
557 ameth = EVP_PKEY_asn1_get0(i);
558 EVP_PKEY_asn1_get0_info(&pkey_id, &pkey_base_id, &pkey_flags,
559 &pinfo, &pem_str, ameth);
560 if (pkey_flags & ASN1_PKEY_ALIAS)
561 {
562 BIO_printf(out, "Name: %s\n",
563 OBJ_nid2ln(pkey_id));
564 BIO_printf(out, "\tType: Alias to %s\n",
565 OBJ_nid2ln(pkey_base_id));
566 }
567 else
568 {
569 BIO_printf(out, "Name: %s\n", pinfo);
570 BIO_printf(out, "\tType: %s Algorithm\n",
571 pkey_flags & ASN1_PKEY_DYNAMIC ?
572 "External" : "Builtin");
573 BIO_printf(out, "\tOID: %s\n", OBJ_nid2ln(pkey_id));
574 if (pem_str == NULL)
575 pem_str = "(none)";
576 BIO_printf(out, "\tPEM string: %s\n", pem_str);
577 }
578
579 }
580 }
581
582static void list_cipher_fn(const EVP_CIPHER *c,
583 const char *from, const char *to, void *arg)
584 {
585 if (c)
586 BIO_printf(arg, "%s\n", EVP_CIPHER_name(c));
587 else
588 {
589 if (!from)
590 from = "<undefined>";
591 if (!to)
592 to = "<undefined>";
593 BIO_printf(arg, "%s => %s\n", from, to);
594 }
595 }
596
597static void list_cipher(BIO *out)
598 {
599 EVP_CIPHER_do_all_sorted(list_cipher_fn, out);
600 }
601
602static void list_md_fn(const EVP_MD *m,
603 const char *from, const char *to, void *arg)
604 {
605 if (m)
606 BIO_printf(arg, "%s\n", EVP_MD_name(m));
607 else
608 {
609 if (!from)
610 from = "<undefined>";
611 if (!to)
612 to = "<undefined>";
613 BIO_printf(arg, "%s => %s\n", from, to);
614 }
615 }
616
617static void list_md(BIO *out)
618 {
619 EVP_MD_do_all_sorted(list_md_fn, out);
620 }
621
622static int MS_CALLBACK function_cmp(const FUNCTION *a, const FUNCTION *b)
623 {
624 return strncmp(a->name,b->name,8);
625 }
626static IMPLEMENT_LHASH_COMP_FN(function, FUNCTION)
627
628static unsigned long MS_CALLBACK function_hash(const FUNCTION *a)
629 {
630 return lh_strhash(a->name);
631 }
632static IMPLEMENT_LHASH_HASH_FN(function, FUNCTION)
633
634static LHASH_OF(FUNCTION) *prog_init(void)
511 { 635 {
512 LHASH *ret; 636 LHASH_OF(FUNCTION) *ret;
513 FUNCTION *f; 637 FUNCTION *f;
514 size_t i; 638 size_t i;
515 639
@@ -518,23 +642,11 @@ static LHASH *prog_init(void)
518 ; 642 ;
519 qsort(functions,i,sizeof *functions,SortFnByName); 643 qsort(functions,i,sizeof *functions,SortFnByName);
520 644
521 if ((ret=lh_new(hash, cmp)) == NULL) 645 if ((ret=lh_FUNCTION_new()) == NULL)
522 return(NULL); 646 return(NULL);
523 647
524 for (f=functions; f->name != NULL; f++) 648 for (f=functions; f->name != NULL; f++)
525 lh_insert(ret,f); 649 (void)lh_FUNCTION_insert(ret,f);
526 return(ret); 650 return(ret);
527 } 651 }
528 652
529/* static int MS_CALLBACK cmp(FUNCTION *a, FUNCTION *b) */
530static int MS_CALLBACK cmp(const void *a_void, const void *b_void)
531 {
532 return(strncmp(((const FUNCTION *)a_void)->name,
533 ((const FUNCTION *)b_void)->name,8));
534 }
535
536/* static unsigned long MS_CALLBACK hash(FUNCTION *a) */
537static unsigned long MS_CALLBACK hash(const void *a_void)
538 {
539 return(lh_strhash(((const FUNCTION *)a_void)->name));
540 }
diff --git a/src/lib/libssl/src/apps/openssl.cnf b/src/lib/libssl/src/apps/openssl.cnf
index 9e59020c17..9d2cd5bfa5 100644
--- a/src/lib/libssl/src/apps/openssl.cnf
+++ b/src/lib/libssl/src/apps/openssl.cnf
@@ -21,12 +21,17 @@ oid_section = new_oids
21 21
22[ new_oids ] 22[ new_oids ]
23 23
24# We can add new OIDs in here for use by 'ca' and 'req'. 24# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
25# Add a simple OID like this: 25# Add a simple OID like this:
26# testoid1=1.2.3.4 26# testoid1=1.2.3.4
27# Or use config file substitution like this: 27# Or use config file substitution like this:
28# testoid2=${testoid1}.5.6 28# testoid2=${testoid1}.5.6
29 29
30# Policies used by the TSA examples.
31tsa_policy1 = 1.2.3.4.1
32tsa_policy2 = 1.2.3.4.5.6
33tsa_policy3 = 1.2.3.4.5.7
34
30#################################################################### 35####################################################################
31[ ca ] 36[ ca ]
32default_ca = CA_default # The default ca section 37default_ca = CA_default # The default ca section
@@ -67,7 +72,7 @@ cert_opt = ca_default # Certificate field options
67 72
68default_days = 365 # how long to certify for 73default_days = 365 # how long to certify for
69default_crl_days= 30 # how long before next CRL 74default_crl_days= 30 # how long before next CRL
70default_md = sha1 # which md to use. 75default_md = default # use public key default MD
71preserve = no # keep passed DN ordering 76preserve = no # keep passed DN ordering
72 77
73# A few difference way of specifying how similar the request should look 78# A few difference way of specifying how similar the request should look
@@ -110,13 +115,12 @@ x509_extensions = v3_ca # The extentions to add to the self signed cert
110 115
111# This sets a mask for permitted string types. There are several options. 116# This sets a mask for permitted string types. There are several options.
112# default: PrintableString, T61String, BMPString. 117# default: PrintableString, T61String, BMPString.
113# pkix : PrintableString, BMPString. 118# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
114# utf8only: only UTF8Strings. 119# utf8only: only UTF8Strings (PKIX recommendation after 2004).
115# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). 120# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
116# MASK:XXXX a literal mask value. 121# MASK:XXXX a literal mask value.
117# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings 122# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
118# so use this option with caution! 123string_mask = utf8only
119string_mask = nombstr
120 124
121# req_extensions = v3_req # The extensions to add to a certificate request 125# req_extensions = v3_req # The extensions to add to a certificate request
122 126
@@ -207,6 +211,9 @@ authorityKeyIdentifier=keyid,issuer
207#nsCaPolicyUrl 211#nsCaPolicyUrl
208#nsSslServerName 212#nsSslServerName
209 213
214# This is required for TSA certificates.
215# extendedKeyUsage = critical,timeStamping
216
210[ v3_req ] 217[ v3_req ]
211 218
212# Extensions to add to a certificate request 219# Extensions to add to a certificate request
@@ -224,7 +231,7 @@ keyUsage = nonRepudiation, digitalSignature, keyEncipherment
224 231
225subjectKeyIdentifier=hash 232subjectKeyIdentifier=hash
226 233
227authorityKeyIdentifier=keyid:always,issuer:always 234authorityKeyIdentifier=keyid:always,issuer
228 235
229# This is what PKIX recommends but some broken software chokes on critical 236# This is what PKIX recommends but some broken software chokes on critical
230# extensions. 237# extensions.
@@ -257,7 +264,7 @@ basicConstraints = CA:true
257# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. 264# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
258 265
259# issuerAltName=issuer:copy 266# issuerAltName=issuer:copy
260authorityKeyIdentifier=keyid:always,issuer:always 267authorityKeyIdentifier=keyid:always
261 268
262[ proxy_cert_ext ] 269[ proxy_cert_ext ]
263# These extensions should be added when creating a proxy certificate 270# These extensions should be added when creating a proxy certificate
@@ -290,7 +297,7 @@ nsComment = "OpenSSL Generated Certificate"
290 297
291# PKIX recommendations harmless if included in all certificates. 298# PKIX recommendations harmless if included in all certificates.
292subjectKeyIdentifier=hash 299subjectKeyIdentifier=hash
293authorityKeyIdentifier=keyid,issuer:always 300authorityKeyIdentifier=keyid,issuer
294 301
295# This stuff is for subjectAltName and issuerAltname. 302# This stuff is for subjectAltName and issuerAltname.
296# Import the email address. 303# Import the email address.
@@ -311,3 +318,33 @@ authorityKeyIdentifier=keyid,issuer:always
311 318
312# This really needs to be in place for it to be a proxy certificate. 319# This really needs to be in place for it to be a proxy certificate.
313proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo 320proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
321
322####################################################################
323[ tsa ]
324
325default_tsa = tsa_config1 # the default TSA section
326
327[ tsa_config1 ]
328
329# These are used by the TSA reply generation only.
330dir = ./demoCA # TSA root directory
331serial = $dir/tsaserial # The current serial number (mandatory)
332crypto_device = builtin # OpenSSL engine to use for signing
333signer_cert = $dir/tsacert.pem # The TSA signing certificate
334 # (optional)
335certs = $dir/cacert.pem # Certificate chain to include in reply
336 # (optional)
337signer_key = $dir/private/tsakey.pem # The TSA private key (optional)
338
339default_policy = tsa_policy1 # Policy if request did not specify it
340 # (optional)
341other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)
342digests = md5, sha1 # Acceptable message digests (mandatory)
343accuracy = secs:1, millisecs:500, microsecs:100 # (optional)
344clock_precision_digits = 0 # number of digits after dot. (optional)
345ordering = yes # Is ordering defined for timestamps?
346 # (optional, default: no)
347tsa_name = yes # Must the TSA name be included in the reply?
348 # (optional, default: no)
349ess_cert_id_chain = no # Must the ESS cert id chain be included?
350 # (optional, default: no)
diff --git a/src/lib/libssl/src/apps/pkcs12.c b/src/lib/libssl/src/apps/pkcs12.c
index 248bc1154d..514a02e0f1 100644
--- a/src/lib/libssl/src/apps/pkcs12.c
+++ b/src/lib/libssl/src/apps/pkcs12.c
@@ -88,6 +88,7 @@ int print_attribs(BIO *out, STACK_OF(X509_ATTRIBUTE) *attrlst,const char *name);
88void hex_prin(BIO *out, unsigned char *buf, int len); 88void hex_prin(BIO *out, unsigned char *buf, int len);
89int alg_print(BIO *x, X509_ALGOR *alg); 89int alg_print(BIO *x, X509_ALGOR *alg);
90int cert_load(BIO *in, STACK_OF(X509) *sk); 90int cert_load(BIO *in, STACK_OF(X509) *sk);
91static int set_pbe(BIO *err, int *ppbe, const char *str);
91 92
92int MAIN(int, char **); 93int MAIN(int, char **);
93 94
@@ -111,16 +112,17 @@ int MAIN(int argc, char **argv)
111 int maciter = PKCS12_DEFAULT_ITER; 112 int maciter = PKCS12_DEFAULT_ITER;
112 int twopass = 0; 113 int twopass = 0;
113 int keytype = 0; 114 int keytype = 0;
114 int cert_pbe; 115 int cert_pbe = NID_pbe_WithSHA1And40BitRC2_CBC;
115 int key_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; 116 int key_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
116 int ret = 1; 117 int ret = 1;
117 int macver = 1; 118 int macver = 1;
118 int noprompt = 0; 119 int noprompt = 0;
119 STACK *canames = NULL; 120 STACK_OF(OPENSSL_STRING) *canames = NULL;
120 char *cpass = NULL, *mpass = NULL; 121 char *cpass = NULL, *mpass = NULL;
121 char *passargin = NULL, *passargout = NULL, *passarg = NULL; 122 char *passargin = NULL, *passargout = NULL, *passarg = NULL;
122 char *passin = NULL, *passout = NULL; 123 char *passin = NULL, *passout = NULL;
123 char *inrand = NULL; 124 char *inrand = NULL;
125 char *macalg = NULL;
124 char *CApath = NULL, *CAfile = NULL; 126 char *CApath = NULL, *CAfile = NULL;
125#ifndef OPENSSL_NO_ENGINE 127#ifndef OPENSSL_NO_ENGINE
126 char *engine=NULL; 128 char *engine=NULL;
@@ -128,13 +130,6 @@ int MAIN(int argc, char **argv)
128 130
129 apps_startup(); 131 apps_startup();
130 132
131#ifdef OPENSSL_FIPS
132 if (FIPS_mode())
133 cert_pbe = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
134 else
135#endif
136 cert_pbe = NID_pbe_WithSHA1And40BitRC2_CBC;
137
138 enc = EVP_des_ede3_cbc(); 133 enc = EVP_des_ede3_cbc();
139 if (bio_err == NULL ) bio_err = BIO_new_fp (stderr, BIO_NOCLOSE); 134 if (bio_err == NULL ) bio_err = BIO_new_fp (stderr, BIO_NOCLOSE);
140 135
@@ -185,33 +180,18 @@ int MAIN(int argc, char **argv)
185 maciter = 1; 180 maciter = 1;
186 else if (!strcmp (*args, "-nomac")) 181 else if (!strcmp (*args, "-nomac"))
187 maciter = -1; 182 maciter = -1;
183 else if (!strcmp (*args, "-macalg"))
184 if (args[1]) {
185 args++;
186 macalg = *args;
187 } else badarg = 1;
188 else if (!strcmp (*args, "-nodes")) enc=NULL; 188 else if (!strcmp (*args, "-nodes")) enc=NULL;
189 else if (!strcmp (*args, "-certpbe")) { 189 else if (!strcmp (*args, "-certpbe")) {
190 if (args[1]) { 190 if (!set_pbe(bio_err, &cert_pbe, *++args))
191 args++; 191 badarg = 1;
192 if (!strcmp(*args, "NONE"))
193 cert_pbe = -1;
194 else
195 cert_pbe=OBJ_txt2nid(*args);
196 if(cert_pbe == NID_undef) {
197 BIO_printf(bio_err,
198 "Unknown PBE algorithm %s\n", *args);
199 badarg = 1;
200 }
201 } else badarg = 1;
202 } else if (!strcmp (*args, "-keypbe")) { 192 } else if (!strcmp (*args, "-keypbe")) {
203 if (args[1]) { 193 if (!set_pbe(bio_err, &key_pbe, *++args))
204 args++; 194 badarg = 1;
205 if (!strcmp(*args, "NONE"))
206 key_pbe = -1;
207 else
208 key_pbe=OBJ_txt2nid(*args);
209 if(key_pbe == NID_undef) {
210 BIO_printf(bio_err,
211 "Unknown PBE algorithm %s\n", *args);
212 badarg = 1;
213 }
214 } else badarg = 1;
215 } else if (!strcmp (*args, "-rand")) { 195 } else if (!strcmp (*args, "-rand")) {
216 if (args[1]) { 196 if (args[1]) {
217 args++; 197 args++;
@@ -242,8 +222,8 @@ int MAIN(int argc, char **argv)
242 } else if (!strcmp (*args, "-caname")) { 222 } else if (!strcmp (*args, "-caname")) {
243 if (args[1]) { 223 if (args[1]) {
244 args++; 224 args++;
245 if (!canames) canames = sk_new_null(); 225 if (!canames) canames = sk_OPENSSL_STRING_new_null();
246 sk_push(canames, *args); 226 sk_OPENSSL_STRING_push(canames, *args);
247 } else badarg = 1; 227 } else badarg = 1;
248 } else if (!strcmp (*args, "-in")) { 228 } else if (!strcmp (*args, "-in")) {
249 if (args[1]) { 229 if (args[1]) {
@@ -332,11 +312,14 @@ int MAIN(int argc, char **argv)
332#endif 312#endif
333 BIO_printf (bio_err, "-nodes don't encrypt private keys\n"); 313 BIO_printf (bio_err, "-nodes don't encrypt private keys\n");
334 BIO_printf (bio_err, "-noiter don't use encryption iteration\n"); 314 BIO_printf (bio_err, "-noiter don't use encryption iteration\n");
315 BIO_printf (bio_err, "-nomaciter don't use MAC iteration\n");
335 BIO_printf (bio_err, "-maciter use MAC iteration\n"); 316 BIO_printf (bio_err, "-maciter use MAC iteration\n");
317 BIO_printf (bio_err, "-nomac don't generate MAC\n");
336 BIO_printf (bio_err, "-twopass separate MAC, encryption passwords\n"); 318 BIO_printf (bio_err, "-twopass separate MAC, encryption passwords\n");
337 BIO_printf (bio_err, "-descert encrypt PKCS#12 certificates with triple DES (default RC2-40)\n"); 319 BIO_printf (bio_err, "-descert encrypt PKCS#12 certificates with triple DES (default RC2-40)\n");
338 BIO_printf (bio_err, "-certpbe alg specify certificate PBE algorithm (default RC2-40)\n"); 320 BIO_printf (bio_err, "-certpbe alg specify certificate PBE algorithm (default RC2-40)\n");
339 BIO_printf (bio_err, "-keypbe alg specify private key PBE algorithm (default 3DES)\n"); 321 BIO_printf (bio_err, "-keypbe alg specify private key PBE algorithm (default 3DES)\n");
322 BIO_printf (bio_err, "-macalg alg digest algorithm used in MAC (default SHA1)\n");
340 BIO_printf (bio_err, "-keyex set MS key exchange type\n"); 323 BIO_printf (bio_err, "-keyex set MS key exchange type\n");
341 BIO_printf (bio_err, "-keysig set MS key signature type\n"); 324 BIO_printf (bio_err, "-keysig set MS key signature type\n");
342 BIO_printf (bio_err, "-password p set import/export password source\n"); 325 BIO_printf (bio_err, "-password p set import/export password source\n");
@@ -348,8 +331,8 @@ int MAIN(int argc, char **argv)
348 BIO_printf(bio_err, "-rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR); 331 BIO_printf(bio_err, "-rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
349 BIO_printf(bio_err, " load the file (or the files in the directory) into\n"); 332 BIO_printf(bio_err, " load the file (or the files in the directory) into\n");
350 BIO_printf(bio_err, " the random number generator\n"); 333 BIO_printf(bio_err, " the random number generator\n");
351 BIO_printf(bio_err, "-CSP name Microsoft CSP name\n"); 334 BIO_printf(bio_err, "-CSP name Microsoft CSP name\n");
352 BIO_printf(bio_err, "-LMK Add local machine keyset attribute to private key\n"); 335 BIO_printf(bio_err, "-LMK Add local machine keyset attribute to private key\n");
353 goto end; 336 goto end;
354 } 337 }
355 338
@@ -439,6 +422,7 @@ int MAIN(int argc, char **argv)
439 EVP_PKEY *key = NULL; 422 EVP_PKEY *key = NULL;
440 X509 *ucert = NULL, *x = NULL; 423 X509 *ucert = NULL, *x = NULL;
441 STACK_OF(X509) *certs=NULL; 424 STACK_OF(X509) *certs=NULL;
425 const EVP_MD *macmd = NULL;
442 unsigned char *catmp = NULL; 426 unsigned char *catmp = NULL;
443 int i; 427 int i;
444 428
@@ -565,9 +549,9 @@ int MAIN(int argc, char **argv)
565 549
566 /* Add any CA names */ 550 /* Add any CA names */
567 551
568 for (i = 0; i < sk_num(canames); i++) 552 for (i = 0; i < sk_OPENSSL_STRING_num(canames); i++)
569 { 553 {
570 catmp = (unsigned char *)sk_value(canames, i); 554 catmp = (unsigned char *)sk_OPENSSL_STRING_value(canames, i);
571 X509_alias_set1(sk_X509_value(certs, i), catmp, -1); 555 X509_alias_set1(sk_X509_value(certs, i), catmp, -1);
572 } 556 }
573 557
@@ -605,8 +589,18 @@ int MAIN(int argc, char **argv)
605 goto export_end; 589 goto export_end;
606 } 590 }
607 591
592 if (macalg)
593 {
594 macmd = EVP_get_digestbyname(macalg);
595 if (!macmd)
596 {
597 BIO_printf(bio_err, "Unknown digest algorithm %s\n",
598 macalg);
599 }
600 }
601
608 if (maciter != -1) 602 if (maciter != -1)
609 PKCS12_set_mac(p12, mpass, -1, NULL, 0, maciter, NULL); 603 PKCS12_set_mac(p12, mpass, -1, NULL, 0, maciter, macmd);
610 604
611#ifdef CRYPTO_MDEBUG 605#ifdef CRYPTO_MDEBUG
612 CRYPTO_pop_info(); 606 CRYPTO_pop_info();
@@ -693,7 +687,7 @@ int MAIN(int argc, char **argv)
693#endif 687#endif
694 BIO_free(in); 688 BIO_free(in);
695 BIO_free_all(out); 689 BIO_free_all(out);
696 if (canames) sk_free(canames); 690 if (canames) sk_OPENSSL_STRING_free(canames);
697 if(passin) OPENSSL_free(passin); 691 if(passin) OPENSSL_free(passin);
698 if(passout) OPENSSL_free(passout); 692 if(passout) OPENSSL_free(passout);
699 apps_shutdown(); 693 apps_shutdown();
@@ -929,7 +923,7 @@ int print_attribs (BIO *out, STACK_OF(X509_ATTRIBUTE) *attrlst,const char *name)
929 av = sk_ASN1_TYPE_value(attr->value.set, 0); 923 av = sk_ASN1_TYPE_value(attr->value.set, 0);
930 switch(av->type) { 924 switch(av->type) {
931 case V_ASN1_BMPSTRING: 925 case V_ASN1_BMPSTRING:
932 value = uni2asc(av->value.bmpstring->data, 926 value = OPENSSL_uni2asc(av->value.bmpstring->data,
933 av->value.bmpstring->length); 927 av->value.bmpstring->length);
934 BIO_printf(out, "%s\n", value); 928 BIO_printf(out, "%s\n", value);
935 OPENSSL_free(value); 929 OPENSSL_free(value);
@@ -962,4 +956,22 @@ void hex_prin(BIO *out, unsigned char *buf, int len)
962 for (i = 0; i < len; i++) BIO_printf (out, "%02X ", buf[i]); 956 for (i = 0; i < len; i++) BIO_printf (out, "%02X ", buf[i]);
963} 957}
964 958
959static int set_pbe(BIO *err, int *ppbe, const char *str)
960 {
961 if (!str)
962 return 0;
963 if (!strcmp(str, "NONE"))
964 {
965 *ppbe = -1;
966 return 1;
967 }
968 *ppbe=OBJ_txt2nid(str);
969 if (*ppbe == NID_undef)
970 {
971 BIO_printf(bio_err, "Unknown PBE algorithm %s\n", str);
972 return 0;
973 }
974 return 1;
975 }
976
965#endif 977#endif
diff --git a/src/lib/libssl/src/apps/pkcs7.c b/src/lib/libssl/src/apps/pkcs7.c
index da4dbe7a07..86d31b99a7 100644
--- a/src/lib/libssl/src/apps/pkcs7.c
+++ b/src/lib/libssl/src/apps/pkcs7.c
@@ -90,7 +90,7 @@ int MAIN(int argc, char **argv)
90 BIO *in=NULL,*out=NULL; 90 BIO *in=NULL,*out=NULL;
91 int informat,outformat; 91 int informat,outformat;
92 char *infile,*outfile,*prog; 92 char *infile,*outfile,*prog;
93 int print_certs=0,text=0,noout=0; 93 int print_certs=0,text=0,noout=0,p7_print=0;
94 int ret=1; 94 int ret=1;
95#ifndef OPENSSL_NO_ENGINE 95#ifndef OPENSSL_NO_ENGINE
96 char *engine=NULL; 96 char *engine=NULL;
@@ -139,6 +139,8 @@ int MAIN(int argc, char **argv)
139 noout=1; 139 noout=1;
140 else if (strcmp(*argv,"-text") == 0) 140 else if (strcmp(*argv,"-text") == 0)
141 text=1; 141 text=1;
142 else if (strcmp(*argv,"-print") == 0)
143 p7_print=1;
142 else if (strcmp(*argv,"-print_certs") == 0) 144 else if (strcmp(*argv,"-print_certs") == 0)
143 print_certs=1; 145 print_certs=1;
144#ifndef OPENSSL_NO_ENGINE 146#ifndef OPENSSL_NO_ENGINE
@@ -238,6 +240,9 @@ bad:
238 } 240 }
239 } 241 }
240 242
243 if (p7_print)
244 PKCS7_print_ctx(out, p7, 0, NULL);
245
241 if (print_certs) 246 if (print_certs)
242 { 247 {
243 STACK_OF(X509) *certs=NULL; 248 STACK_OF(X509) *certs=NULL;
diff --git a/src/lib/libssl/src/apps/pkcs8.c b/src/lib/libssl/src/apps/pkcs8.c
index 9633a149bc..7edeb179dd 100644
--- a/src/lib/libssl/src/apps/pkcs8.c
+++ b/src/lib/libssl/src/apps/pkcs8.c
@@ -80,11 +80,12 @@ int MAIN(int argc, char **argv)
80 int informat, outformat; 80 int informat, outformat;
81 int p8_broken = PKCS8_OK; 81 int p8_broken = PKCS8_OK;
82 int nocrypt = 0; 82 int nocrypt = 0;
83 X509_SIG *p8; 83 X509_SIG *p8 = NULL;
84 PKCS8_PRIV_KEY_INFO *p8inf; 84 PKCS8_PRIV_KEY_INFO *p8inf = NULL;
85 EVP_PKEY *pkey=NULL; 85 EVP_PKEY *pkey=NULL;
86 char pass[50], *passin = NULL, *passout = NULL, *p8pass = NULL; 86 char pass[50], *passin = NULL, *passout = NULL, *p8pass = NULL;
87 int badarg = 0; 87 int badarg = 0;
88 int ret = 1;
88#ifndef OPENSSL_NO_ENGINE 89#ifndef OPENSSL_NO_ENGINE
89 char *engine=NULL; 90 char *engine=NULL;
90#endif 91#endif
@@ -225,7 +226,7 @@ int MAIN(int argc, char **argv)
225#ifndef OPENSSL_NO_ENGINE 226#ifndef OPENSSL_NO_ENGINE
226 BIO_printf(bio_err," -engine e use engine e, possibly a hardware device.\n"); 227 BIO_printf(bio_err," -engine e use engine e, possibly a hardware device.\n");
227#endif 228#endif
228 return 1; 229 goto end;
229 } 230 }
230 231
231#ifndef OPENSSL_NO_ENGINE 232#ifndef OPENSSL_NO_ENGINE
@@ -235,7 +236,7 @@ int MAIN(int argc, char **argv)
235 if (!app_passwd(bio_err, passargin, passargout, &passin, &passout)) 236 if (!app_passwd(bio_err, passargin, passargout, &passin, &passout))
236 { 237 {
237 BIO_printf(bio_err, "Error getting passwords\n"); 238 BIO_printf(bio_err, "Error getting passwords\n");
238 return 1; 239 goto end;
239 } 240 }
240 241
241 if ((pbe_nid == -1) && !cipher) 242 if ((pbe_nid == -1) && !cipher)
@@ -247,7 +248,7 @@ int MAIN(int argc, char **argv)
247 { 248 {
248 BIO_printf(bio_err, 249 BIO_printf(bio_err,
249 "Can't open input file %s\n", infile); 250 "Can't open input file %s\n", infile);
250 return (1); 251 goto end;
251 } 252 }
252 } 253 }
253 else 254 else
@@ -259,7 +260,7 @@ int MAIN(int argc, char **argv)
259 { 260 {
260 BIO_printf(bio_err, 261 BIO_printf(bio_err,
261 "Can't open output file %s\n", outfile); 262 "Can't open output file %s\n", outfile);
262 return (1); 263 goto end;
263 } 264 }
264 } 265 }
265 else 266 else
@@ -274,21 +275,15 @@ int MAIN(int argc, char **argv)
274 } 275 }
275 if (topk8) 276 if (topk8)
276 { 277 {
277 BIO_free(in); /* Not needed in this section */
278 pkey = load_key(bio_err, infile, informat, 1, 278 pkey = load_key(bio_err, infile, informat, 1,
279 passin, e, "key"); 279 passin, e, "key");
280 if (!pkey) 280 if (!pkey)
281 { 281 goto end;
282 BIO_free_all(out);
283 return 1;
284 }
285 if (!(p8inf = EVP_PKEY2PKCS8_broken(pkey, p8_broken))) 282 if (!(p8inf = EVP_PKEY2PKCS8_broken(pkey, p8_broken)))
286 { 283 {
287 BIO_printf(bio_err, "Error converting key\n"); 284 BIO_printf(bio_err, "Error converting key\n");
288 ERR_print_errors(bio_err); 285 ERR_print_errors(bio_err);
289 EVP_PKEY_free(pkey); 286 goto end;
290 BIO_free_all(out);
291 return 1;
292 } 287 }
293 if (nocrypt) 288 if (nocrypt)
294 { 289 {
@@ -299,10 +294,7 @@ int MAIN(int argc, char **argv)
299 else 294 else
300 { 295 {
301 BIO_printf(bio_err, "Bad format specified for key\n"); 296 BIO_printf(bio_err, "Bad format specified for key\n");
302 PKCS8_PRIV_KEY_INFO_free(p8inf); 297 goto end;
303 EVP_PKEY_free(pkey);
304 BIO_free_all(out);
305 return (1);
306 } 298 }
307 } 299 }
308 else 300 else
@@ -313,12 +305,7 @@ int MAIN(int argc, char **argv)
313 { 305 {
314 p8pass = pass; 306 p8pass = pass;
315 if (EVP_read_pw_string(pass, sizeof pass, "Enter Encryption Password:", 1)) 307 if (EVP_read_pw_string(pass, sizeof pass, "Enter Encryption Password:", 1))
316 { 308 goto end;
317 PKCS8_PRIV_KEY_INFO_free(p8inf);
318 EVP_PKEY_free(pkey);
319 BIO_free_all(out);
320 return (1);
321 }
322 } 309 }
323 app_RAND_load_file(NULL, bio_err, 0); 310 app_RAND_load_file(NULL, bio_err, 0);
324 if (!(p8 = PKCS8_encrypt(pbe_nid, cipher, 311 if (!(p8 = PKCS8_encrypt(pbe_nid, cipher,
@@ -327,10 +314,7 @@ int MAIN(int argc, char **argv)
327 { 314 {
328 BIO_printf(bio_err, "Error encrypting key\n"); 315 BIO_printf(bio_err, "Error encrypting key\n");
329 ERR_print_errors(bio_err); 316 ERR_print_errors(bio_err);
330 PKCS8_PRIV_KEY_INFO_free(p8inf); 317 goto end;
331 EVP_PKEY_free(pkey);
332 BIO_free_all(out);
333 return (1);
334 } 318 }
335 app_RAND_write_file(NULL, bio_err); 319 app_RAND_write_file(NULL, bio_err);
336 if (outformat == FORMAT_PEM) 320 if (outformat == FORMAT_PEM)
@@ -340,22 +324,12 @@ int MAIN(int argc, char **argv)
340 else 324 else
341 { 325 {
342 BIO_printf(bio_err, "Bad format specified for key\n"); 326 BIO_printf(bio_err, "Bad format specified for key\n");
343 PKCS8_PRIV_KEY_INFO_free(p8inf); 327 goto end;
344 EVP_PKEY_free(pkey);
345 BIO_free_all(out);
346 return (1);
347 } 328 }
348 X509_SIG_free(p8);
349 } 329 }
350 330
351 PKCS8_PRIV_KEY_INFO_free (p8inf); 331 ret = 0;
352 EVP_PKEY_free(pkey); 332 goto end;
353 BIO_free_all(out);
354 if (passin)
355 OPENSSL_free(passin);
356 if (passout)
357 OPENSSL_free(passout);
358 return (0);
359 } 333 }
360 334
361 if (nocrypt) 335 if (nocrypt)
@@ -367,7 +341,7 @@ int MAIN(int argc, char **argv)
367 else 341 else
368 { 342 {
369 BIO_printf(bio_err, "Bad format specified for key\n"); 343 BIO_printf(bio_err, "Bad format specified for key\n");
370 return (1); 344 goto end;
371 } 345 }
372 } 346 }
373 else 347 else
@@ -379,14 +353,14 @@ int MAIN(int argc, char **argv)
379 else 353 else
380 { 354 {
381 BIO_printf(bio_err, "Bad format specified for key\n"); 355 BIO_printf(bio_err, "Bad format specified for key\n");
382 return (1); 356 goto end;
383 } 357 }
384 358
385 if (!p8) 359 if (!p8)
386 { 360 {
387 BIO_printf (bio_err, "Error reading key\n"); 361 BIO_printf (bio_err, "Error reading key\n");
388 ERR_print_errors(bio_err); 362 ERR_print_errors(bio_err);
389 return (1); 363 goto end;
390 } 364 }
391 if (passin) 365 if (passin)
392 p8pass = passin; 366 p8pass = passin;
@@ -396,21 +370,20 @@ int MAIN(int argc, char **argv)
396 EVP_read_pw_string(pass, sizeof pass, "Enter Password:", 0); 370 EVP_read_pw_string(pass, sizeof pass, "Enter Password:", 0);
397 } 371 }
398 p8inf = PKCS8_decrypt(p8, p8pass, strlen(p8pass)); 372 p8inf = PKCS8_decrypt(p8, p8pass, strlen(p8pass));
399 X509_SIG_free(p8);
400 } 373 }
401 374
402 if (!p8inf) 375 if (!p8inf)
403 { 376 {
404 BIO_printf(bio_err, "Error decrypting key\n"); 377 BIO_printf(bio_err, "Error decrypting key\n");
405 ERR_print_errors(bio_err); 378 ERR_print_errors(bio_err);
406 return (1); 379 goto end;
407 } 380 }
408 381
409 if (!(pkey = EVP_PKCS82PKEY(p8inf))) 382 if (!(pkey = EVP_PKCS82PKEY(p8inf)))
410 { 383 {
411 BIO_printf(bio_err, "Error converting key\n"); 384 BIO_printf(bio_err, "Error converting key\n");
412 ERR_print_errors(bio_err); 385 ERR_print_errors(bio_err);
413 return (1); 386 goto end;
414 } 387 }
415 388
416 if (p8inf->broken) 389 if (p8inf->broken)
@@ -430,13 +403,16 @@ int MAIN(int argc, char **argv)
430 BIO_printf(bio_err, "DSA public key include in PrivateKey\n"); 403 BIO_printf(bio_err, "DSA public key include in PrivateKey\n");
431 break; 404 break;
432 405
406 case PKCS8_NEG_PRIVKEY:
407 BIO_printf(bio_err, "DSA private key value is negative\n");
408 break;
409
433 default: 410 default:
434 BIO_printf(bio_err, "Unknown broken type\n"); 411 BIO_printf(bio_err, "Unknown broken type\n");
435 break; 412 break;
436 } 413 }
437 } 414 }
438 415
439 PKCS8_PRIV_KEY_INFO_free(p8inf);
440 if (outformat == FORMAT_PEM) 416 if (outformat == FORMAT_PEM)
441 PEM_write_bio_PrivateKey(out, pkey, NULL, NULL, 0, NULL, passout); 417 PEM_write_bio_PrivateKey(out, pkey, NULL, NULL, 0, NULL, passout);
442 else if (outformat == FORMAT_ASN1) 418 else if (outformat == FORMAT_ASN1)
@@ -444,10 +420,13 @@ int MAIN(int argc, char **argv)
444 else 420 else
445 { 421 {
446 BIO_printf(bio_err, "Bad format specified for key\n"); 422 BIO_printf(bio_err, "Bad format specified for key\n");
447 return (1); 423 goto end;
448 } 424 }
425 ret = 0;
449 426
450 end: 427 end:
428 X509_SIG_free(p8);
429 PKCS8_PRIV_KEY_INFO_free(p8inf);
451 EVP_PKEY_free(pkey); 430 EVP_PKEY_free(pkey);
452 BIO_free_all(out); 431 BIO_free_all(out);
453 BIO_free(in); 432 BIO_free(in);
@@ -456,5 +435,5 @@ int MAIN(int argc, char **argv)
456 if (passout) 435 if (passout)
457 OPENSSL_free(passout); 436 OPENSSL_free(passout);
458 437
459 return (0); 438 return ret;
460 } 439 }
diff --git a/src/lib/libssl/src/apps/prime.c b/src/lib/libssl/src/apps/prime.c
index af2fed15af..f1aaef8725 100644
--- a/src/lib/libssl/src/apps/prime.c
+++ b/src/lib/libssl/src/apps/prime.c
@@ -62,6 +62,9 @@ int MAIN(int argc, char **argv)
62 { 62 {
63 int hex=0; 63 int hex=0;
64 int checks=20; 64 int checks=20;
65 int generate=0;
66 int bits=0;
67 int safe=0;
65 BIGNUM *bn=NULL; 68 BIGNUM *bn=NULL;
66 BIO *bio_out; 69 BIO *bio_out;
67 70
@@ -77,6 +80,15 @@ int MAIN(int argc, char **argv)
77 { 80 {
78 if(!strcmp(*argv,"-hex")) 81 if(!strcmp(*argv,"-hex"))
79 hex=1; 82 hex=1;
83 else if(!strcmp(*argv,"-generate"))
84 generate=1;
85 else if(!strcmp(*argv,"-bits"))
86 if(--argc < 1)
87 goto bad;
88 else
89 bits=atoi(*++argv);
90 else if(!strcmp(*argv,"-safe"))
91 safe=1;
80 else if(!strcmp(*argv,"-checks")) 92 else if(!strcmp(*argv,"-checks"))
81 if(--argc < 1) 93 if(--argc < 1)
82 goto bad; 94 goto bad;
@@ -91,13 +103,13 @@ int MAIN(int argc, char **argv)
91 ++argv; 103 ++argv;
92 } 104 }
93 105
94 if (argv[0] == NULL) 106 if (argv[0] == NULL && !generate)
95 { 107 {
96 BIO_printf(bio_err,"No prime specified\n"); 108 BIO_printf(bio_err,"No prime specified\n");
97 goto bad; 109 goto bad;
98 } 110 }
99 111
100 if ((bio_out=BIO_new(BIO_s_file())) != NULL) 112 if ((bio_out=BIO_new(BIO_s_file())) != NULL)
101 { 113 {
102 BIO_set_fp(bio_out,stdout,BIO_NOCLOSE); 114 BIO_set_fp(bio_out,stdout,BIO_NOCLOSE);
103#ifdef OPENSSL_SYS_VMS 115#ifdef OPENSSL_SYS_VMS
@@ -108,14 +120,32 @@ int MAIN(int argc, char **argv)
108#endif 120#endif
109 } 121 }
110 122
111 if(hex) 123 if(generate)
112 BN_hex2bn(&bn,argv[0]); 124 {
125 char *s;
126
127 if(!bits)
128 {
129 BIO_printf(bio_err,"Specifiy the number of bits.\n");
130 return 1;
131 }
132 bn=BN_new();
133 BN_generate_prime_ex(bn,bits,safe,NULL,NULL,NULL);
134 s=hex ? BN_bn2hex(bn) : BN_bn2dec(bn);
135 BIO_printf(bio_out,"%s\n",s);
136 OPENSSL_free(s);
137 }
113 else 138 else
114 BN_dec2bn(&bn,argv[0]); 139 {
140 if(hex)
141 BN_hex2bn(&bn,argv[0]);
142 else
143 BN_dec2bn(&bn,argv[0]);
115 144
116 BN_print(bio_out,bn); 145 BN_print(bio_out,bn);
117 BIO_printf(bio_out," is %sprime\n", 146 BIO_printf(bio_out," is %sprime\n",
118 BN_is_prime_ex(bn,checks,NULL,NULL) ? "" : "not "); 147 BN_is_prime_ex(bn,checks,NULL,NULL) ? "" : "not ");
148 }
119 149
120 BN_free(bn); 150 BN_free(bn);
121 BIO_free_all(bio_out); 151 BIO_free_all(bio_out);
diff --git a/src/lib/libssl/src/apps/progs.h b/src/lib/libssl/src/apps/progs.h
index aafd800bdf..79e479a337 100644
--- a/src/lib/libssl/src/apps/progs.h
+++ b/src/lib/libssl/src/apps/progs.h
@@ -22,6 +22,7 @@ extern int ecparam_main(int argc,char *argv[]);
22extern int x509_main(int argc,char *argv[]); 22extern int x509_main(int argc,char *argv[]);
23extern int genrsa_main(int argc,char *argv[]); 23extern int genrsa_main(int argc,char *argv[]);
24extern int gendsa_main(int argc,char *argv[]); 24extern int gendsa_main(int argc,char *argv[]);
25extern int genpkey_main(int argc,char *argv[]);
25extern int s_server_main(int argc,char *argv[]); 26extern int s_server_main(int argc,char *argv[]);
26extern int s_client_main(int argc,char *argv[]); 27extern int s_client_main(int argc,char *argv[]);
27extern int speed_main(int argc,char *argv[]); 28extern int speed_main(int argc,char *argv[]);
@@ -35,22 +36,30 @@ extern int ciphers_main(int argc,char *argv[]);
35extern int nseq_main(int argc,char *argv[]); 36extern int nseq_main(int argc,char *argv[]);
36extern int pkcs12_main(int argc,char *argv[]); 37extern int pkcs12_main(int argc,char *argv[]);
37extern int pkcs8_main(int argc,char *argv[]); 38extern int pkcs8_main(int argc,char *argv[]);
39extern int pkey_main(int argc,char *argv[]);
40extern int pkeyparam_main(int argc,char *argv[]);
41extern int pkeyutl_main(int argc,char *argv[]);
38extern int spkac_main(int argc,char *argv[]); 42extern int spkac_main(int argc,char *argv[]);
39extern int smime_main(int argc,char *argv[]); 43extern int smime_main(int argc,char *argv[]);
40extern int rand_main(int argc,char *argv[]); 44extern int rand_main(int argc,char *argv[]);
41extern int engine_main(int argc,char *argv[]); 45extern int engine_main(int argc,char *argv[]);
42extern int ocsp_main(int argc,char *argv[]); 46extern int ocsp_main(int argc,char *argv[]);
43extern int prime_main(int argc,char *argv[]); 47extern int prime_main(int argc,char *argv[]);
48extern int ts_main(int argc,char *argv[]);
44 49
45#define FUNC_TYPE_GENERAL 1 50#define FUNC_TYPE_GENERAL 1
46#define FUNC_TYPE_MD 2 51#define FUNC_TYPE_MD 2
47#define FUNC_TYPE_CIPHER 3 52#define FUNC_TYPE_CIPHER 3
53#define FUNC_TYPE_PKEY 4
54#define FUNC_TYPE_MD_ALG 5
55#define FUNC_TYPE_CIPHER_ALG 6
48 56
49typedef struct { 57typedef struct {
50 int type; 58 int type;
51 const char *name; 59 const char *name;
52 int (*func)(int argc,char *argv[]); 60 int (*func)(int argc,char *argv[]);
53 } FUNCTION; 61 } FUNCTION;
62DECLARE_LHASH_OF(FUNCTION);
54 63
55FUNCTION functions[] = { 64FUNCTION functions[] = {
56 {FUNC_TYPE_GENERAL,"verify",verify_main}, 65 {FUNC_TYPE_GENERAL,"verify",verify_main},
@@ -96,6 +105,7 @@ FUNCTION functions[] = {
96#ifndef OPENSSL_NO_DSA 105#ifndef OPENSSL_NO_DSA
97 {FUNC_TYPE_GENERAL,"gendsa",gendsa_main}, 106 {FUNC_TYPE_GENERAL,"gendsa",gendsa_main},
98#endif 107#endif
108 {FUNC_TYPE_GENERAL,"genpkey",genpkey_main},
99#if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3)) 109#if !defined(OPENSSL_NO_SOCK) && !(defined(OPENSSL_NO_SSL2) && defined(OPENSSL_NO_SSL3))
100 {FUNC_TYPE_GENERAL,"s_server",s_server_main}, 110 {FUNC_TYPE_GENERAL,"s_server",s_server_main},
101#endif 111#endif
@@ -123,14 +133,20 @@ FUNCTION functions[] = {
123 {FUNC_TYPE_GENERAL,"pkcs12",pkcs12_main}, 133 {FUNC_TYPE_GENERAL,"pkcs12",pkcs12_main},
124#endif 134#endif
125 {FUNC_TYPE_GENERAL,"pkcs8",pkcs8_main}, 135 {FUNC_TYPE_GENERAL,"pkcs8",pkcs8_main},
136 {FUNC_TYPE_GENERAL,"pkey",pkey_main},
137 {FUNC_TYPE_GENERAL,"pkeyparam",pkeyparam_main},
138 {FUNC_TYPE_GENERAL,"pkeyutl",pkeyutl_main},
126 {FUNC_TYPE_GENERAL,"spkac",spkac_main}, 139 {FUNC_TYPE_GENERAL,"spkac",spkac_main},
127 {FUNC_TYPE_GENERAL,"smime",smime_main}, 140 {FUNC_TYPE_GENERAL,"smime",smime_main},
128 {FUNC_TYPE_GENERAL,"rand",rand_main}, 141 {FUNC_TYPE_GENERAL,"rand",rand_main},
129#ifndef OPENSSL_NO_ENGINE 142#ifndef OPENSSL_NO_ENGINE
130 {FUNC_TYPE_GENERAL,"engine",engine_main}, 143 {FUNC_TYPE_GENERAL,"engine",engine_main},
131#endif 144#endif
145#ifndef OPENSSL_NO_OCSP
132 {FUNC_TYPE_GENERAL,"ocsp",ocsp_main}, 146 {FUNC_TYPE_GENERAL,"ocsp",ocsp_main},
147#endif
133 {FUNC_TYPE_GENERAL,"prime",prime_main}, 148 {FUNC_TYPE_GENERAL,"prime",prime_main},
149 {FUNC_TYPE_GENERAL,"ts",ts_main},
134#ifndef OPENSSL_NO_MD2 150#ifndef OPENSSL_NO_MD2
135 {FUNC_TYPE_MD,"md2",dgst_main}, 151 {FUNC_TYPE_MD,"md2",dgst_main},
136#endif 152#endif
@@ -189,6 +205,9 @@ FUNCTION functions[] = {
189 {FUNC_TYPE_CIPHER,"camellia-256-ecb",enc_main}, 205 {FUNC_TYPE_CIPHER,"camellia-256-ecb",enc_main},
190#endif 206#endif
191 {FUNC_TYPE_CIPHER,"base64",enc_main}, 207 {FUNC_TYPE_CIPHER,"base64",enc_main},
208#ifdef ZLIB
209 {FUNC_TYPE_CIPHER,"zlib",enc_main},
210#endif
192#ifndef OPENSSL_NO_DES 211#ifndef OPENSSL_NO_DES
193 {FUNC_TYPE_CIPHER,"des",enc_main}, 212 {FUNC_TYPE_CIPHER,"des",enc_main},
194#endif 213#endif
diff --git a/src/lib/libssl/src/apps/progs.pl b/src/lib/libssl/src/apps/progs.pl
index 645432cfcc..de6fdeabbd 100644
--- a/src/lib/libssl/src/apps/progs.pl
+++ b/src/lib/libssl/src/apps/progs.pl
@@ -13,12 +13,16 @@ print <<'EOF';
13#define FUNC_TYPE_GENERAL 1 13#define FUNC_TYPE_GENERAL 1
14#define FUNC_TYPE_MD 2 14#define FUNC_TYPE_MD 2
15#define FUNC_TYPE_CIPHER 3 15#define FUNC_TYPE_CIPHER 3
16#define FUNC_TYPE_PKEY 4
17#define FUNC_TYPE_MD_ALG 5
18#define FUNC_TYPE_CIPHER_ALG 6
16 19
17typedef struct { 20typedef struct {
18 int type; 21 int type;
19 const char *name; 22 const char *name;
20 int (*func)(int argc,char *argv[]); 23 int (*func)(int argc,char *argv[]);
21 } FUNCTION; 24 } FUNCTION;
25DECLARE_LHASH_OF(FUNCTION);
22 26
23FUNCTION functions[] = { 27FUNCTION functions[] = {
24EOF 28EOF
@@ -45,6 +49,8 @@ foreach (@ARGV)
45 { print "#if !defined(OPENSSL_NO_DES) && !defined(OPENSSL_NO_SHA1)\n${str}#endif\n"; } 49 { print "#if !defined(OPENSSL_NO_DES) && !defined(OPENSSL_NO_SHA1)\n${str}#endif\n"; }
46 elsif ( ($_ =~ /^cms$/)) 50 elsif ( ($_ =~ /^cms$/))
47 { print "#ifndef OPENSSL_NO_CMS\n${str}#endif\n"; } 51 { print "#ifndef OPENSSL_NO_CMS\n${str}#endif\n"; }
52 elsif ( ($_ =~ /^ocsp$/))
53 { print "#ifndef OPENSSL_NO_OCSP\n${str}#endif\n"; }
48 else 54 else
49 { print $str; } 55 { print $str; }
50 } 56 }
@@ -62,7 +68,7 @@ foreach (
62 "camellia-128-cbc", "camellia-128-ecb", 68 "camellia-128-cbc", "camellia-128-ecb",
63 "camellia-192-cbc", "camellia-192-ecb", 69 "camellia-192-cbc", "camellia-192-ecb",
64 "camellia-256-cbc", "camellia-256-ecb", 70 "camellia-256-cbc", "camellia-256-ecb",
65 "base64", 71 "base64", "zlib",
66 "des", "des3", "desx", "idea", "seed", "rc4", "rc4-40", 72 "des", "des3", "desx", "idea", "seed", "rc4", "rc4-40",
67 "rc2", "bf", "cast", "rc5", 73 "rc2", "bf", "cast", "rc5",
68 "des-ecb", "des-ede", "des-ede3", 74 "des-ecb", "des-ede", "des-ede3",
@@ -89,6 +95,7 @@ foreach (
89 elsif ($_ =~ /bf/) { $t="#ifndef OPENSSL_NO_BF\n${t}#endif\n"; } 95 elsif ($_ =~ /bf/) { $t="#ifndef OPENSSL_NO_BF\n${t}#endif\n"; }
90 elsif ($_ =~ /cast/) { $t="#ifndef OPENSSL_NO_CAST\n${t}#endif\n"; } 96 elsif ($_ =~ /cast/) { $t="#ifndef OPENSSL_NO_CAST\n${t}#endif\n"; }
91 elsif ($_ =~ /rc5/) { $t="#ifndef OPENSSL_NO_RC5\n${t}#endif\n"; } 97 elsif ($_ =~ /rc5/) { $t="#ifndef OPENSSL_NO_RC5\n${t}#endif\n"; }
98 elsif ($_ =~ /zlib/) { $t="#ifdef ZLIB\n${t}#endif\n"; }
92 print $t; 99 print $t;
93 } 100 }
94 101
diff --git a/src/lib/libssl/src/apps/req.c b/src/lib/libssl/src/apps/req.c
index 5ed08960c1..820cd18fc7 100644
--- a/src/lib/libssl/src/apps/req.c
+++ b/src/lib/libssl/src/apps/req.c
@@ -141,39 +141,33 @@ static int add_attribute_object(X509_REQ *req, char *text, const char *def,
141 int n_max, unsigned long chtype); 141 int n_max, unsigned long chtype);
142static int add_DN_object(X509_NAME *n, char *text, const char *def, char *value, 142static int add_DN_object(X509_NAME *n, char *text, const char *def, char *value,
143 int nid,int n_min,int n_max, unsigned long chtype, int mval); 143 int nid,int n_min,int n_max, unsigned long chtype, int mval);
144#ifndef OPENSSL_NO_RSA 144static int genpkey_cb(EVP_PKEY_CTX *ctx);
145static int MS_CALLBACK req_cb(int p, int n, BN_GENCB *cb);
146#endif
147static int req_check_len(int len,int n_min,int n_max); 145static int req_check_len(int len,int n_min,int n_max);
148static int check_end(const char *str, const char *end); 146static int check_end(const char *str, const char *end);
147static EVP_PKEY_CTX *set_keygen_ctx(BIO *err, const char *gstr, int *pkey_type,
148 long *pkeylen, char **palgnam,
149 ENGINE *keygen_engine);
149#ifndef MONOLITH 150#ifndef MONOLITH
150static char *default_config_file=NULL; 151static char *default_config_file=NULL;
151#endif 152#endif
152static CONF *req_conf=NULL; 153static CONF *req_conf=NULL;
153static int batch=0; 154static int batch=0;
154 155
155#define TYPE_RSA 1
156#define TYPE_DSA 2
157#define TYPE_DH 3
158#define TYPE_EC 4
159
160int MAIN(int, char **); 156int MAIN(int, char **);
161 157
162int MAIN(int argc, char **argv) 158int MAIN(int argc, char **argv)
163 { 159 {
164 ENGINE *e = NULL; 160 ENGINE *e = NULL, *gen_eng = NULL;
165#ifndef OPENSSL_NO_DSA
166 DSA *dsa_params=NULL;
167#endif
168#ifndef OPENSSL_NO_ECDSA
169 EC_KEY *ec_params = NULL;
170#endif
171 unsigned long nmflag = 0, reqflag = 0; 161 unsigned long nmflag = 0, reqflag = 0;
172 int ex=1,x509=0,days=30; 162 int ex=1,x509=0,days=30;
173 X509 *x509ss=NULL; 163 X509 *x509ss=NULL;
174 X509_REQ *req=NULL; 164 X509_REQ *req=NULL;
165 EVP_PKEY_CTX *genctx = NULL;
166 const char *keyalg = NULL;
167 char *keyalgstr = NULL;
168 STACK_OF(OPENSSL_STRING) *pkeyopts = NULL;
175 EVP_PKEY *pkey=NULL; 169 EVP_PKEY *pkey=NULL;
176 int i=0,badops=0,newreq=0,verbose=0,pkey_type=TYPE_RSA; 170 int i=0,badops=0,newreq=0,verbose=0,pkey_type=-1;
177 long newkey = -1; 171 long newkey = -1;
178 BIO *in=NULL,*out=NULL; 172 BIO *in=NULL,*out=NULL;
179 int informat,outformat,verify=0,noout=0,text=0,keyform=FORMAT_PEM; 173 int informat,outformat,verify=0,noout=0,text=0,keyform=FORMAT_PEM;
@@ -193,7 +187,7 @@ int MAIN(int argc, char **argv)
193 char *p; 187 char *p;
194 char *subj = NULL; 188 char *subj = NULL;
195 int multirdn = 0; 189 int multirdn = 0;
196 const EVP_MD *md_alg=NULL,*digest=EVP_sha1(); 190 const EVP_MD *md_alg=NULL,*digest=NULL;
197 unsigned long chtype = MBSTRING_ASC; 191 unsigned long chtype = MBSTRING_ASC;
198#ifndef MONOLITH 192#ifndef MONOLITH
199 char *to_free; 193 char *to_free;
@@ -236,6 +230,16 @@ int MAIN(int argc, char **argv)
236 if (--argc < 1) goto bad; 230 if (--argc < 1) goto bad;
237 engine= *(++argv); 231 engine= *(++argv);
238 } 232 }
233 else if (strcmp(*argv,"-keygen_engine") == 0)
234 {
235 if (--argc < 1) goto bad;
236 gen_eng = ENGINE_by_id(*(++argv));
237 if (gen_eng == NULL)
238 {
239 BIO_printf(bio_err, "Can't find keygen engine %s\n", *argv);
240 goto end;
241 }
242 }
239#endif 243#endif
240 else if (strcmp(*argv,"-key") == 0) 244 else if (strcmp(*argv,"-key") == 0)
241 { 245 {
@@ -292,126 +296,20 @@ int MAIN(int argc, char **argv)
292 } 296 }
293 else if (strcmp(*argv,"-newkey") == 0) 297 else if (strcmp(*argv,"-newkey") == 0)
294 { 298 {
295 int is_numeric; 299 if (--argc < 1)
296
297 if (--argc < 1) goto bad;
298 p= *(++argv);
299 is_numeric = p[0] >= '0' && p[0] <= '9';
300 if (strncmp("rsa:",p,4) == 0 || is_numeric)
301 {
302 pkey_type=TYPE_RSA;
303 if(!is_numeric)
304 p+=4;
305 newkey= atoi(p);
306 }
307 else
308#ifndef OPENSSL_NO_DSA
309 if (strncmp("dsa:",p,4) == 0)
310 {
311 X509 *xtmp=NULL;
312 EVP_PKEY *dtmp;
313
314 pkey_type=TYPE_DSA;
315 p+=4;
316 if ((in=BIO_new_file(p,"r")) == NULL)
317 {
318 perror(p);
319 goto end;
320 }
321 if ((dsa_params=PEM_read_bio_DSAparams(in,NULL,NULL,NULL)) == NULL)
322 {
323 ERR_clear_error();
324 (void)BIO_reset(in);
325 if ((xtmp=PEM_read_bio_X509(in,NULL,NULL,NULL)) == NULL)
326 {
327 BIO_printf(bio_err,"unable to load DSA parameters from file\n");
328 goto end;
329 }
330
331 if ((dtmp=X509_get_pubkey(xtmp)) == NULL) goto end;
332 if (dtmp->type == EVP_PKEY_DSA)
333 dsa_params=DSAparams_dup(dtmp->pkey.dsa);
334 EVP_PKEY_free(dtmp);
335 X509_free(xtmp);
336 if (dsa_params == NULL)
337 {
338 BIO_printf(bio_err,"Certificate does not contain DSA parameters\n");
339 goto end;
340 }
341 }
342 BIO_free(in);
343 in=NULL;
344 newkey=BN_num_bits(dsa_params->p);
345 }
346 else
347#endif
348#ifndef OPENSSL_NO_ECDSA
349 if (strncmp("ec:",p,3) == 0)
350 {
351 X509 *xtmp=NULL;
352 EVP_PKEY *dtmp;
353 EC_GROUP *group;
354
355 pkey_type=TYPE_EC;
356 p+=3;
357 if ((in=BIO_new_file(p,"r")) == NULL)
358 {
359 perror(p);
360 goto end;
361 }
362 if ((ec_params = EC_KEY_new()) == NULL)
363 goto end;
364 group = PEM_read_bio_ECPKParameters(in, NULL, NULL, NULL);
365 if (group == NULL)
366 {
367 EC_KEY_free(ec_params);
368 ERR_clear_error();
369 (void)BIO_reset(in);
370 if ((xtmp=PEM_read_bio_X509(in,NULL,NULL,NULL)) == NULL)
371 {
372 BIO_printf(bio_err,"unable to load EC parameters from file\n");
373 goto end;
374 }
375
376 if ((dtmp=X509_get_pubkey(xtmp))==NULL)
377 goto end;
378 if (dtmp->type == EVP_PKEY_EC)
379 ec_params = EC_KEY_dup(dtmp->pkey.ec);
380 EVP_PKEY_free(dtmp);
381 X509_free(xtmp);
382 if (ec_params == NULL)
383 {
384 BIO_printf(bio_err,"Certificate does not contain EC parameters\n");
385 goto end;
386 }
387 }
388 else
389 {
390 if (EC_KEY_set_group(ec_params, group) == 0)
391 goto end;
392 EC_GROUP_free(group);
393 }
394
395 BIO_free(in);
396 in=NULL;
397 newkey = EC_GROUP_get_degree(EC_KEY_get0_group(ec_params));
398 }
399 else
400#endif
401#ifndef OPENSSL_NO_DH
402 if (strncmp("dh:",p,4) == 0)
403 {
404 pkey_type=TYPE_DH;
405 p+=3;
406 }
407 else
408#endif
409 {
410 goto bad; 300 goto bad;
411 } 301 keyalg = *(++argv);
412
413 newreq=1; 302 newreq=1;
414 } 303 }
304 else if (strcmp(*argv,"-pkeyopt") == 0)
305 {
306 if (--argc < 1)
307 goto bad;
308 if (!pkeyopts)
309 pkeyopts = sk_OPENSSL_STRING_new_null();
310 if (!pkeyopts || !sk_OPENSSL_STRING_push(pkeyopts, *(++argv)))
311 goto bad;
312 }
415 else if (strcmp(*argv,"-batch") == 0) 313 else if (strcmp(*argv,"-batch") == 0)
416 batch=1; 314 batch=1;
417 else if (strcmp(*argv,"-newhdr") == 0) 315 else if (strcmp(*argv,"-newhdr") == 0)
@@ -467,11 +365,6 @@ int MAIN(int argc, char **argv)
467 serial = s2i_ASN1_INTEGER(NULL, *(++argv)); 365 serial = s2i_ASN1_INTEGER(NULL, *(++argv));
468 if (!serial) goto bad; 366 if (!serial) goto bad;
469 } 367 }
470 else if ((md_alg=EVP_get_digestbyname(&((*argv)[1]))) != NULL)
471 {
472 /* ok */
473 digest=md_alg;
474 }
475 else if (strcmp(*argv,"-extensions") == 0) 368 else if (strcmp(*argv,"-extensions") == 0)
476 { 369 {
477 if (--argc < 1) goto bad; 370 if (--argc < 1) goto bad;
@@ -482,6 +375,11 @@ int MAIN(int argc, char **argv)
482 if (--argc < 1) goto bad; 375 if (--argc < 1) goto bad;
483 req_exts = *(++argv); 376 req_exts = *(++argv);
484 } 377 }
378 else if ((md_alg=EVP_get_digestbyname(&((*argv)[1]))) != NULL)
379 {
380 /* ok */
381 digest=md_alg;
382 }
485 else 383 else
486 { 384 {
487 BIO_printf(bio_err,"unknown option %s\n",*argv); 385 BIO_printf(bio_err,"unknown option %s\n",*argv);
@@ -730,15 +628,20 @@ bad:
730 628
731 if (newreq && (pkey == NULL)) 629 if (newreq && (pkey == NULL))
732 { 630 {
733#ifndef OPENSSL_NO_RSA
734 BN_GENCB cb;
735#endif
736 char *randfile = NCONF_get_string(req_conf,SECTION,"RANDFILE"); 631 char *randfile = NCONF_get_string(req_conf,SECTION,"RANDFILE");
737 if (randfile == NULL) 632 if (randfile == NULL)
738 ERR_clear_error(); 633 ERR_clear_error();
739 app_RAND_load_file(randfile, bio_err, 0); 634 app_RAND_load_file(randfile, bio_err, 0);
740 if (inrand) 635 if (inrand)
741 app_RAND_load_files(inrand); 636 app_RAND_load_files(inrand);
637
638 if (keyalg)
639 {
640 genctx = set_keygen_ctx(bio_err, keyalg, &pkey_type, &newkey,
641 &keyalgstr, gen_eng);
642 if (!genctx)
643 goto end;
644 }
742 645
743 if (newkey <= 0) 646 if (newkey <= 0)
744 { 647 {
@@ -746,57 +649,54 @@ bad:
746 newkey=DEFAULT_KEY_LENGTH; 649 newkey=DEFAULT_KEY_LENGTH;
747 } 650 }
748 651
749 if (newkey < MIN_KEY_LENGTH && (pkey_type == TYPE_RSA || pkey_type == TYPE_DSA)) 652 if (newkey < MIN_KEY_LENGTH && (pkey_type == EVP_PKEY_RSA || pkey_type == EVP_PKEY_DSA))
750 { 653 {
751 BIO_printf(bio_err,"private key length is too short,\n"); 654 BIO_printf(bio_err,"private key length is too short,\n");
752 BIO_printf(bio_err,"it needs to be at least %d bits, not %ld\n",MIN_KEY_LENGTH,newkey); 655 BIO_printf(bio_err,"it needs to be at least %d bits, not %ld\n",MIN_KEY_LENGTH,newkey);
753 goto end; 656 goto end;
754 } 657 }
755 BIO_printf(bio_err,"Generating a %ld bit %s private key\n",
756 newkey,(pkey_type == TYPE_RSA)?"RSA":
757 (pkey_type == TYPE_DSA)?"DSA":"EC");
758
759 if ((pkey=EVP_PKEY_new()) == NULL) goto end;
760 658
761#ifndef OPENSSL_NO_RSA 659 if (!genctx)
762 BN_GENCB_set(&cb, req_cb, bio_err); 660 {
763 if (pkey_type == TYPE_RSA) 661 genctx = set_keygen_ctx(bio_err, NULL, &pkey_type, &newkey,
764 { 662 &keyalgstr, gen_eng);
765 RSA *rsa = RSA_new(); 663 if (!genctx)
766 BIGNUM *bn = BN_new();
767 if(!bn || !rsa || !BN_set_word(bn, 0x10001) ||
768 !RSA_generate_key_ex(rsa, newkey, bn, &cb) ||
769 !EVP_PKEY_assign_RSA(pkey, rsa))
770 {
771 if(bn) BN_free(bn);
772 if(rsa) RSA_free(rsa);
773 goto end; 664 goto end;
774 }
775 BN_free(bn);
776 } 665 }
777 else 666
778#endif 667 if (pkeyopts)
779#ifndef OPENSSL_NO_DSA
780 if (pkey_type == TYPE_DSA)
781 { 668 {
782 if (!DSA_generate_key(dsa_params)) goto end; 669 char *genopt;
783 if (!EVP_PKEY_assign_DSA(pkey,dsa_params)) goto end; 670 for (i = 0; i < sk_OPENSSL_STRING_num(pkeyopts); i++)
784 dsa_params=NULL; 671 {
672 genopt = sk_OPENSSL_STRING_value(pkeyopts, i);
673 if (pkey_ctrl_string(genctx, genopt) <= 0)
674 {
675 BIO_printf(bio_err,
676 "parameter error \"%s\"\n",
677 genopt);
678 ERR_print_errors(bio_err);
679 goto end;
680 }
681 }
785 } 682 }
786#endif 683
787#ifndef OPENSSL_NO_ECDSA 684 BIO_printf(bio_err,"Generating a %ld bit %s private key\n",
788 if (pkey_type == TYPE_EC) 685 newkey, keyalgstr);
686
687 EVP_PKEY_CTX_set_cb(genctx, genpkey_cb);
688 EVP_PKEY_CTX_set_app_data(genctx, bio_err);
689
690 if (EVP_PKEY_keygen(genctx, &pkey) <= 0)
789 { 691 {
790 if (!EC_KEY_generate_key(ec_params)) goto end; 692 BIO_puts(bio_err, "Error Generating Key\n");
791 if (!EVP_PKEY_assign_EC_KEY(pkey, ec_params)) 693 goto end;
792 goto end;
793 ec_params = NULL;
794 } 694 }
795#endif
796 695
797 app_RAND_write_file(randfile, bio_err); 696 EVP_PKEY_CTX_free(genctx);
697 genctx = NULL;
798 698
799 if (pkey == NULL) goto end; 699 app_RAND_write_file(randfile, bio_err);
800 700
801 if (keyout == NULL) 701 if (keyout == NULL)
802 { 702 {
@@ -895,14 +795,7 @@ loop:
895 BIO_printf(bio_err,"you need to specify a private key\n"); 795 BIO_printf(bio_err,"you need to specify a private key\n");
896 goto end; 796 goto end;
897 } 797 }
898#ifndef OPENSSL_NO_DSA 798
899 if (pkey->type == EVP_PKEY_DSA)
900 digest=EVP_dss1();
901#endif
902#ifndef OPENSSL_NO_ECDSA
903 if (pkey->type == EVP_PKEY_EC)
904 digest=EVP_ecdsa();
905#endif
906 if (req == NULL) 799 if (req == NULL)
907 { 800 {
908 req=X509_REQ_new(); 801 req=X509_REQ_new();
@@ -945,7 +838,7 @@ loop:
945 838
946 if (!X509_set_issuer_name(x509ss, X509_REQ_get_subject_name(req))) goto end; 839 if (!X509_set_issuer_name(x509ss, X509_REQ_get_subject_name(req))) goto end;
947 if (!X509_gmtime_adj(X509_get_notBefore(x509ss),0)) goto end; 840 if (!X509_gmtime_adj(X509_get_notBefore(x509ss),0)) goto end;
948 if (!X509_gmtime_adj(X509_get_notAfter(x509ss), (long)60*60*24*days)) goto end; 841 if (!X509_time_adj_ex(X509_get_notAfter(x509ss), days, 0, NULL)) goto end;
949 if (!X509_set_subject_name(x509ss, X509_REQ_get_subject_name(req))) goto end; 842 if (!X509_set_subject_name(x509ss, X509_REQ_get_subject_name(req))) goto end;
950 tmppkey = X509_REQ_get_pubkey(req); 843 tmppkey = X509_REQ_get_pubkey(req);
951 if (!tmppkey || !X509_set_pubkey(x509ss,tmppkey)) goto end; 844 if (!tmppkey || !X509_set_pubkey(x509ss,tmppkey)) goto end;
@@ -967,7 +860,10 @@ loop:
967 } 860 }
968 861
969 if (!(i=X509_sign(x509ss,pkey,digest))) 862 if (!(i=X509_sign(x509ss,pkey,digest)))
863 {
864 ERR_print_errors(bio_err);
970 goto end; 865 goto end;
866 }
971 } 867 }
972 else 868 else
973 { 869 {
@@ -988,7 +884,10 @@ loop:
988 goto end; 884 goto end;
989 } 885 }
990 if (!(i=X509_REQ_sign(req,pkey,digest))) 886 if (!(i=X509_REQ_sign(req,pkey,digest)))
887 {
888 ERR_print_errors(bio_err);
991 goto end; 889 goto end;
890 }
992 } 891 }
993 } 892 }
994 893
@@ -1125,7 +1024,7 @@ loop:
1125 } 1024 }
1126 fprintf(stdout,"Modulus="); 1025 fprintf(stdout,"Modulus=");
1127#ifndef OPENSSL_NO_RSA 1026#ifndef OPENSSL_NO_RSA
1128 if (tpubkey->type == EVP_PKEY_RSA) 1027 if (EVP_PKEY_base_id(tpubkey) == EVP_PKEY_RSA)
1129 BN_print(out,tpubkey->pkey.rsa->n); 1028 BN_print(out,tpubkey->pkey.rsa->n);
1130 else 1029 else
1131#endif 1030#endif
@@ -1181,18 +1080,22 @@ end:
1181 BIO_free(in); 1080 BIO_free(in);
1182 BIO_free_all(out); 1081 BIO_free_all(out);
1183 EVP_PKEY_free(pkey); 1082 EVP_PKEY_free(pkey);
1083 if (genctx)
1084 EVP_PKEY_CTX_free(genctx);
1085 if (pkeyopts)
1086 sk_OPENSSL_STRING_free(pkeyopts);
1087#ifndef OPENSSL_NO_ENGINE
1088 if (gen_eng)
1089 ENGINE_free(gen_eng);
1090#endif
1091 if (keyalgstr)
1092 OPENSSL_free(keyalgstr);
1184 X509_REQ_free(req); 1093 X509_REQ_free(req);
1185 X509_free(x509ss); 1094 X509_free(x509ss);
1186 ASN1_INTEGER_free(serial); 1095 ASN1_INTEGER_free(serial);
1187 if(passargin && passin) OPENSSL_free(passin); 1096 if(passargin && passin) OPENSSL_free(passin);
1188 if(passargout && passout) OPENSSL_free(passout); 1097 if(passargout && passout) OPENSSL_free(passout);
1189 OBJ_cleanup(); 1098 OBJ_cleanup();
1190#ifndef OPENSSL_NO_DSA
1191 if (dsa_params != NULL) DSA_free(dsa_params);
1192#endif
1193#ifndef OPENSSL_NO_ECDSA
1194 if (ec_params != NULL) EC_KEY_free(ec_params);
1195#endif
1196 apps_shutdown(); 1099 apps_shutdown();
1197 OPENSSL_EXIT(ex); 1100 OPENSSL_EXIT(ex);
1198 } 1101 }
@@ -1433,11 +1336,17 @@ start2: for (;;)
1433 1336
1434 BIO_snprintf(buf,sizeof buf,"%s_min",type); 1337 BIO_snprintf(buf,sizeof buf,"%s_min",type);
1435 if (!NCONF_get_number(req_conf,attr_sect,buf, &n_min)) 1338 if (!NCONF_get_number(req_conf,attr_sect,buf, &n_min))
1339 {
1340 ERR_clear_error();
1436 n_min = -1; 1341 n_min = -1;
1342 }
1437 1343
1438 BIO_snprintf(buf,sizeof buf,"%s_max",type); 1344 BIO_snprintf(buf,sizeof buf,"%s_max",type);
1439 if (!NCONF_get_number(req_conf,attr_sect,buf, &n_max)) 1345 if (!NCONF_get_number(req_conf,attr_sect,buf, &n_max))
1346 {
1347 ERR_clear_error();
1440 n_max = -1; 1348 n_max = -1;
1349 }
1441 1350
1442 if (!add_attribute_object(req, 1351 if (!add_attribute_object(req,
1443 v->value,def,value,nid,n_min,n_max, chtype)) 1352 v->value,def,value,nid,n_min,n_max, chtype))
@@ -1538,7 +1447,8 @@ start:
1538 buf[0]='\0'; 1447 buf[0]='\0';
1539 if (!batch) 1448 if (!batch)
1540 { 1449 {
1541 fgets(buf,sizeof buf,stdin); 1450 if (!fgets(buf,sizeof buf,stdin))
1451 return 0;
1542 } 1452 }
1543 else 1453 else
1544 { 1454 {
@@ -1596,7 +1506,8 @@ start:
1596 buf[0]='\0'; 1506 buf[0]='\0';
1597 if (!batch) 1507 if (!batch)
1598 { 1508 {
1599 fgets(buf,sizeof buf,stdin); 1509 if (!fgets(buf,sizeof buf,stdin))
1510 return 0;
1600 } 1511 }
1601 else 1512 else
1602 { 1513 {
@@ -1639,24 +1550,6 @@ err:
1639 return(0); 1550 return(0);
1640 } 1551 }
1641 1552
1642#ifndef OPENSSL_NO_RSA
1643static int MS_CALLBACK req_cb(int p, int n, BN_GENCB *cb)
1644 {
1645 char c='*';
1646
1647 if (p == 0) c='.';
1648 if (p == 1) c='+';
1649 if (p == 2) c='*';
1650 if (p == 3) c='\n';
1651 BIO_write(cb->arg,&c,1);
1652 (void)BIO_flush(cb->arg);
1653#ifdef LINT
1654 p=n;
1655#endif
1656 return 1;
1657 }
1658#endif
1659
1660static int req_check_len(int len, int n_min, int n_max) 1553static int req_check_len(int len, int n_min, int n_max)
1661 { 1554 {
1662 if ((n_min > 0) && (len < n_min)) 1555 if ((n_min > 0) && (len < n_min))
@@ -1683,3 +1576,183 @@ static int check_end(const char *str, const char *end)
1683 tmp = str + slen - elen; 1576 tmp = str + slen - elen;
1684 return strcmp(tmp, end); 1577 return strcmp(tmp, end);
1685} 1578}
1579
1580static EVP_PKEY_CTX *set_keygen_ctx(BIO *err, const char *gstr, int *pkey_type,
1581 long *pkeylen, char **palgnam,
1582 ENGINE *keygen_engine)
1583 {
1584 EVP_PKEY_CTX *gctx = NULL;
1585 EVP_PKEY *param = NULL;
1586 long keylen = -1;
1587 BIO *pbio = NULL;
1588 const char *paramfile = NULL;
1589
1590 if (gstr == NULL)
1591 {
1592 *pkey_type = EVP_PKEY_RSA;
1593 keylen = *pkeylen;
1594 }
1595 else if (gstr[0] >= '0' && gstr[0] <= '9')
1596 {
1597 *pkey_type = EVP_PKEY_RSA;
1598 keylen = atol(gstr);
1599 *pkeylen = keylen;
1600 }
1601 else if (!strncmp(gstr, "param:", 6))
1602 paramfile = gstr + 6;
1603 else
1604 {
1605 const char *p = strchr(gstr, ':');
1606 int len;
1607 ENGINE *tmpeng;
1608 const EVP_PKEY_ASN1_METHOD *ameth;
1609
1610 if (p)
1611 len = p - gstr;
1612 else
1613 len = strlen(gstr);
1614 /* The lookup of a the string will cover all engines so
1615 * keep a note of the implementation.
1616 */
1617
1618 ameth = EVP_PKEY_asn1_find_str(&tmpeng, gstr, len);
1619
1620 if (!ameth)
1621 {
1622 BIO_printf(err, "Unknown algorithm %.*s\n", len, gstr);
1623 return NULL;
1624 }
1625
1626 EVP_PKEY_asn1_get0_info(NULL, pkey_type, NULL, NULL, NULL,
1627 ameth);
1628#ifndef OPENSSL_NO_ENGINE
1629 if (tmpeng)
1630 ENGINE_finish(tmpeng);
1631#endif
1632 if (*pkey_type == EVP_PKEY_RSA)
1633 {
1634 if (p)
1635 {
1636 keylen = atol(p + 1);
1637 *pkeylen = keylen;
1638 }
1639 }
1640 else if (p)
1641 paramfile = p + 1;
1642 }
1643
1644 if (paramfile)
1645 {
1646 pbio = BIO_new_file(paramfile, "r");
1647 if (!pbio)
1648 {
1649 BIO_printf(err, "Can't open parameter file %s\n",
1650 paramfile);
1651 return NULL;
1652 }
1653 param = PEM_read_bio_Parameters(pbio, NULL);
1654
1655 if (!param)
1656 {
1657 X509 *x;
1658 (void)BIO_reset(pbio);
1659 x = PEM_read_bio_X509(pbio, NULL, NULL, NULL);
1660 if (x)
1661 {
1662 param = X509_get_pubkey(x);
1663 X509_free(x);
1664 }
1665 }
1666
1667 BIO_free(pbio);
1668
1669 if (!param)
1670 {
1671 BIO_printf(err, "Error reading parameter file %s\n",
1672 paramfile);
1673 return NULL;
1674 }
1675 if (*pkey_type == -1)
1676 *pkey_type = EVP_PKEY_id(param);
1677 else if (*pkey_type != EVP_PKEY_base_id(param))
1678 {
1679 BIO_printf(err, "Key Type does not match parameters\n");
1680 EVP_PKEY_free(param);
1681 return NULL;
1682 }
1683 }
1684
1685 if (palgnam)
1686 {
1687 const EVP_PKEY_ASN1_METHOD *ameth;
1688 ENGINE *tmpeng;
1689 const char *anam;
1690 ameth = EVP_PKEY_asn1_find(&tmpeng, *pkey_type);
1691 if (!ameth)
1692 {
1693 BIO_puts(err, "Internal error: can't find key algorithm\n");
1694 return NULL;
1695 }
1696 EVP_PKEY_asn1_get0_info(NULL, NULL, NULL, NULL, &anam, ameth);
1697 *palgnam = BUF_strdup(anam);
1698#ifndef OPENSSL_NO_ENGINE
1699 if (tmpeng)
1700 ENGINE_finish(tmpeng);
1701#endif
1702 }
1703
1704 if (param)
1705 {
1706 gctx = EVP_PKEY_CTX_new(param, keygen_engine);
1707 *pkeylen = EVP_PKEY_bits(param);
1708 EVP_PKEY_free(param);
1709 }
1710 else
1711 gctx = EVP_PKEY_CTX_new_id(*pkey_type, keygen_engine);
1712
1713 if (!gctx)
1714 {
1715 BIO_puts(err, "Error allocating keygen context\n");
1716 ERR_print_errors(err);
1717 return NULL;
1718 }
1719
1720 if (EVP_PKEY_keygen_init(gctx) <= 0)
1721 {
1722 BIO_puts(err, "Error initializing keygen context\n");
1723 ERR_print_errors(err);
1724 return NULL;
1725 }
1726#ifndef OPENSSL_NO_RSA
1727 if ((*pkey_type == EVP_PKEY_RSA) && (keylen != -1))
1728 {
1729 if (EVP_PKEY_CTX_set_rsa_keygen_bits(gctx, keylen) <= 0)
1730 {
1731 BIO_puts(err, "Error setting RSA keysize\n");
1732 ERR_print_errors(err);
1733 EVP_PKEY_CTX_free(gctx);
1734 return NULL;
1735 }
1736 }
1737#endif
1738
1739 return gctx;
1740 }
1741
1742static int genpkey_cb(EVP_PKEY_CTX *ctx)
1743 {
1744 char c='*';
1745 BIO *b = EVP_PKEY_CTX_get_app_data(ctx);
1746 int p;
1747 p = EVP_PKEY_CTX_get_keygen_info(ctx, 0);
1748 if (p == 0) c='.';
1749 if (p == 1) c='+';
1750 if (p == 2) c='*';
1751 if (p == 3) c='\n';
1752 BIO_write(b,&c,1);
1753 (void)BIO_flush(b);
1754#ifdef LINT
1755 p=n;
1756#endif
1757 return 1;
1758 }
diff --git a/src/lib/libssl/src/apps/rsa.c b/src/lib/libssl/src/apps/rsa.c
index 930f1f038a..a17708fe9c 100644
--- a/src/lib/libssl/src/apps/rsa.c
+++ b/src/lib/libssl/src/apps/rsa.c
@@ -115,6 +115,8 @@ int MAIN(int argc, char **argv)
115#endif 115#endif
116 int modulus=0; 116 int modulus=0;
117 117
118 int pvk_encr = 2;
119
118 apps_startup(); 120 apps_startup();
119 121
120 if (bio_err == NULL) 122 if (bio_err == NULL)
@@ -177,6 +179,16 @@ int MAIN(int argc, char **argv)
177 pubin=1; 179 pubin=1;
178 else if (strcmp(*argv,"-pubout") == 0) 180 else if (strcmp(*argv,"-pubout") == 0)
179 pubout=1; 181 pubout=1;
182 else if (strcmp(*argv,"-RSAPublicKey_in") == 0)
183 pubin = 2;
184 else if (strcmp(*argv,"-RSAPublicKey_out") == 0)
185 pubout = 2;
186 else if (strcmp(*argv,"-pvk-strong") == 0)
187 pvk_encr=2;
188 else if (strcmp(*argv,"-pvk-weak") == 0)
189 pvk_encr=1;
190 else if (strcmp(*argv,"-pvk-none") == 0)
191 pvk_encr=0;
180 else if (strcmp(*argv,"-noout") == 0) 192 else if (strcmp(*argv,"-noout") == 0)
181 noout=1; 193 noout=1;
182 else if (strcmp(*argv,"-text") == 0) 194 else if (strcmp(*argv,"-text") == 0)
@@ -257,10 +269,23 @@ bad:
257 EVP_PKEY *pkey; 269 EVP_PKEY *pkey;
258 270
259 if (pubin) 271 if (pubin)
260 pkey = load_pubkey(bio_err, infile, 272 {
261 (informat == FORMAT_NETSCAPE && sgckey ? 273 int tmpformat=-1;
262 FORMAT_IISSGC : informat), 1, 274 if (pubin == 2)
275 {
276 if (informat == FORMAT_PEM)
277 tmpformat = FORMAT_PEMRSA;
278 else if (informat == FORMAT_ASN1)
279 tmpformat = FORMAT_ASN1RSA;
280 }
281 else if (informat == FORMAT_NETSCAPE && sgckey)
282 tmpformat = FORMAT_IISSGC;
283 else
284 tmpformat = informat;
285
286 pkey = load_pubkey(bio_err, infile, tmpformat, 1,
263 passin, e, "Public Key"); 287 passin, e, "Public Key");
288 }
264 else 289 else
265 pkey = load_key(bio_err, infile, 290 pkey = load_key(bio_err, infile,
266 (informat == FORMAT_NETSCAPE && sgckey ? 291 (informat == FORMAT_NETSCAPE && sgckey ?
@@ -268,7 +293,7 @@ bad:
268 passin, e, "Private Key"); 293 passin, e, "Private Key");
269 294
270 if (pkey != NULL) 295 if (pkey != NULL)
271 rsa = pkey == NULL ? NULL : EVP_PKEY_get1_RSA(pkey); 296 rsa = EVP_PKEY_get1_RSA(pkey);
272 EVP_PKEY_free(pkey); 297 EVP_PKEY_free(pkey);
273 } 298 }
274 299
@@ -346,7 +371,13 @@ bad:
346 } 371 }
347 BIO_printf(bio_err,"writing RSA key\n"); 372 BIO_printf(bio_err,"writing RSA key\n");
348 if (outformat == FORMAT_ASN1) { 373 if (outformat == FORMAT_ASN1) {
349 if(pubout || pubin) i=i2d_RSA_PUBKEY_bio(out,rsa); 374 if(pubout || pubin)
375 {
376 if (pubout == 2)
377 i=i2d_RSAPublicKey_bio(out,rsa);
378 else
379 i=i2d_RSA_PUBKEY_bio(out,rsa);
380 }
350 else i=i2d_RSAPrivateKey_bio(out,rsa); 381 else i=i2d_RSAPrivateKey_bio(out,rsa);
351 } 382 }
352#ifndef OPENSSL_NO_RC4 383#ifndef OPENSSL_NO_RC4
@@ -370,14 +401,32 @@ bad:
370#endif 401#endif
371 else if (outformat == FORMAT_PEM) { 402 else if (outformat == FORMAT_PEM) {
372 if(pubout || pubin) 403 if(pubout || pubin)
373 i=PEM_write_bio_RSA_PUBKEY(out,rsa); 404 {
405 if (pubout == 2)
406 i=PEM_write_bio_RSAPublicKey(out,rsa);
407 else
408 i=PEM_write_bio_RSA_PUBKEY(out,rsa);
409 }
374 else i=PEM_write_bio_RSAPrivateKey(out,rsa, 410 else i=PEM_write_bio_RSAPrivateKey(out,rsa,
375 enc,NULL,0,NULL,passout); 411 enc,NULL,0,NULL,passout);
412#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_RC4)
413 } else if (outformat == FORMAT_MSBLOB || outformat == FORMAT_PVK) {
414 EVP_PKEY *pk;
415 pk = EVP_PKEY_new();
416 EVP_PKEY_set1_RSA(pk, rsa);
417 if (outformat == FORMAT_PVK)
418 i = i2b_PVK_bio(out, pk, pvk_encr, 0, passout);
419 else if (pubin || pubout)
420 i = i2b_PublicKey_bio(out, pk);
421 else
422 i = i2b_PrivateKey_bio(out, pk);
423 EVP_PKEY_free(pk);
424#endif
376 } else { 425 } else {
377 BIO_printf(bio_err,"bad output format specified for outfile\n"); 426 BIO_printf(bio_err,"bad output format specified for outfile\n");
378 goto end; 427 goto end;
379 } 428 }
380 if (!i) 429 if (i <= 0)
381 { 430 {
382 BIO_printf(bio_err,"unable to write key\n"); 431 BIO_printf(bio_err,"unable to write key\n");
383 ERR_print_errors(bio_err); 432 ERR_print_errors(bio_err);
diff --git a/src/lib/libssl/src/apps/rsautl.c b/src/lib/libssl/src/apps/rsautl.c
index 923e2b682f..b01f004eb3 100644
--- a/src/lib/libssl/src/apps/rsautl.c
+++ b/src/lib/libssl/src/apps/rsautl.c
@@ -342,4 +342,10 @@ static void usage()
342 342
343} 343}
344 344
345#else /* !OPENSSL_NO_RSA */
346
347# if PEDANTIC
348static void *dummy=&dummy;
349# endif
350
345#endif 351#endif
diff --git a/src/lib/libssl/src/apps/s_apps.h b/src/lib/libssl/src/apps/s_apps.h
index 08fbbc2229..820e5c5815 100644
--- a/src/lib/libssl/src/apps/s_apps.h
+++ b/src/lib/libssl/src/apps/s_apps.h
@@ -117,7 +117,7 @@
117#include <conio.h> 117#include <conio.h>
118#endif 118#endif
119 119
120#ifdef OPENSSL_SYS_MSDOS 120#if defined(OPENSSL_SYS_MSDOS) && !defined(_WIN32)
121#define _kbhit kbhit 121#define _kbhit kbhit
122#endif 122#endif
123 123
@@ -162,7 +162,7 @@ int extract_port(char *str, short *port_ptr);
162int extract_host_port(char *str,char **host_ptr,unsigned char *ip,short *p); 162int extract_host_port(char *str,char **host_ptr,unsigned char *ip,short *p);
163 163
164long MS_CALLBACK bio_dump_callback(BIO *bio, int cmd, const char *argp, 164long MS_CALLBACK bio_dump_callback(BIO *bio, int cmd, const char *argp,
165 int argi, long argl, long ret); 165 int argi, long argl, long ret);
166 166
167#ifdef HEADER_SSL_H 167#ifdef HEADER_SSL_H
168void MS_CALLBACK apps_ssl_info_callback(const SSL *s, int where, int ret); 168void MS_CALLBACK apps_ssl_info_callback(const SSL *s, int where, int ret);
@@ -171,3 +171,6 @@ void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
171 unsigned char *data, int len, 171 unsigned char *data, int len,
172 void *arg); 172 void *arg);
173#endif 173#endif
174
175int MS_CALLBACK generate_cookie_callback(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len);
176int MS_CALLBACK verify_cookie_callback(SSL *ssl, unsigned char *cookie, unsigned int cookie_len);
diff --git a/src/lib/libssl/src/apps/s_cb.c b/src/lib/libssl/src/apps/s_cb.c
index a512589e8c..c4f5512247 100644
--- a/src/lib/libssl/src/apps/s_cb.c
+++ b/src/lib/libssl/src/apps/s_cb.c
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -117,16 +117,21 @@
117#undef NON_MAIN 117#undef NON_MAIN
118#undef USE_SOCKETS 118#undef USE_SOCKETS
119#include <openssl/err.h> 119#include <openssl/err.h>
120#include <openssl/rand.h>
120#include <openssl/x509.h> 121#include <openssl/x509.h>
121#include <openssl/ssl.h> 122#include <openssl/ssl.h>
122#include "s_apps.h" 123#include "s_apps.h"
123 124
125#define COOKIE_SECRET_LENGTH 16
126
124int verify_depth=0; 127int verify_depth=0;
125int verify_error=X509_V_OK; 128int verify_error=X509_V_OK;
129int verify_return_error=0;
130unsigned char cookie_secret[COOKIE_SECRET_LENGTH];
131int cookie_initialized=0;
126 132
127int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx) 133int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
128 { 134 {
129 char buf[256];
130 X509 *err_cert; 135 X509 *err_cert;
131 int err,depth; 136 int err,depth;
132 137
@@ -134,15 +139,23 @@ int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
134 err= X509_STORE_CTX_get_error(ctx); 139 err= X509_STORE_CTX_get_error(ctx);
135 depth= X509_STORE_CTX_get_error_depth(ctx); 140 depth= X509_STORE_CTX_get_error_depth(ctx);
136 141
137 X509_NAME_oneline(X509_get_subject_name(err_cert),buf,sizeof buf); 142 BIO_printf(bio_err,"depth=%d ",depth);
138 BIO_printf(bio_err,"depth=%d %s\n",depth,buf); 143 if (err_cert)
144 {
145 X509_NAME_print_ex(bio_err, X509_get_subject_name(err_cert),
146 0, XN_FLAG_ONELINE);
147 BIO_puts(bio_err, "\n");
148 }
149 else
150 BIO_puts(bio_err, "<no cert>\n");
139 if (!ok) 151 if (!ok)
140 { 152 {
141 BIO_printf(bio_err,"verify error:num=%d:%s\n",err, 153 BIO_printf(bio_err,"verify error:num=%d:%s\n",err,
142 X509_verify_cert_error_string(err)); 154 X509_verify_cert_error_string(err));
143 if (verify_depth >= depth) 155 if (verify_depth >= depth)
144 { 156 {
145 ok=1; 157 if (!verify_return_error)
158 ok=1;
146 verify_error=X509_V_OK; 159 verify_error=X509_V_OK;
147 } 160 }
148 else 161 else
@@ -151,25 +164,33 @@ int MS_CALLBACK verify_callback(int ok, X509_STORE_CTX *ctx)
151 verify_error=X509_V_ERR_CERT_CHAIN_TOO_LONG; 164 verify_error=X509_V_ERR_CERT_CHAIN_TOO_LONG;
152 } 165 }
153 } 166 }
154 switch (ctx->error) 167 switch (err)
155 { 168 {
156 case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: 169 case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT:
157 X509_NAME_oneline(X509_get_issuer_name(ctx->current_cert),buf,sizeof buf); 170 BIO_puts(bio_err,"issuer= ");
158 BIO_printf(bio_err,"issuer= %s\n",buf); 171 X509_NAME_print_ex(bio_err, X509_get_issuer_name(err_cert),
172 0, XN_FLAG_ONELINE);
173 BIO_puts(bio_err, "\n");
159 break; 174 break;
160 case X509_V_ERR_CERT_NOT_YET_VALID: 175 case X509_V_ERR_CERT_NOT_YET_VALID:
161 case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD: 176 case X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD:
162 BIO_printf(bio_err,"notBefore="); 177 BIO_printf(bio_err,"notBefore=");
163 ASN1_TIME_print(bio_err,X509_get_notBefore(ctx->current_cert)); 178 ASN1_TIME_print(bio_err,X509_get_notBefore(err_cert));
164 BIO_printf(bio_err,"\n"); 179 BIO_printf(bio_err,"\n");
165 break; 180 break;
166 case X509_V_ERR_CERT_HAS_EXPIRED: 181 case X509_V_ERR_CERT_HAS_EXPIRED:
167 case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD: 182 case X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD:
168 BIO_printf(bio_err,"notAfter="); 183 BIO_printf(bio_err,"notAfter=");
169 ASN1_TIME_print(bio_err,X509_get_notAfter(ctx->current_cert)); 184 ASN1_TIME_print(bio_err,X509_get_notAfter(err_cert));
170 BIO_printf(bio_err,"\n"); 185 BIO_printf(bio_err,"\n");
171 break; 186 break;
187 case X509_V_ERR_NO_EXPLICIT_POLICY:
188 policies_print(bio_err, ctx);
189 break;
172 } 190 }
191 if (err == X509_V_OK && ok == 2)
192 policies_print(bio_err, ctx);
193
173 BIO_printf(bio_err,"verify return:%d\n",ok); 194 BIO_printf(bio_err,"verify return:%d\n",ok);
174 return(ok); 195 return(ok);
175 } 196 }
@@ -258,7 +279,7 @@ int set_cert_key_stuff(SSL_CTX *ctx, X509 *cert, EVP_PKEY *key)
258 } 279 }
259 280
260long MS_CALLBACK bio_dump_callback(BIO *bio, int cmd, const char *argp, 281long MS_CALLBACK bio_dump_callback(BIO *bio, int cmd, const char *argp,
261 int argi, long argl, long ret) 282 int argi, long argl, long ret)
262 { 283 {
263 BIO *out; 284 BIO *out;
264 285
@@ -267,15 +288,15 @@ long MS_CALLBACK bio_dump_callback(BIO *bio, int cmd, const char *argp,
267 288
268 if (cmd == (BIO_CB_READ|BIO_CB_RETURN)) 289 if (cmd == (BIO_CB_READ|BIO_CB_RETURN))
269 { 290 {
270 BIO_printf(out,"read from %p [%p] (%d bytes => %ld (0x%lX))\n", 291 BIO_printf(out,"read from %p [%p] (%lu bytes => %ld (0x%lX))\n",
271 (void *)bio,argp,argi,ret,ret); 292 (void *)bio,argp,(unsigned long)argi,ret,ret);
272 BIO_dump(out,argp,(int)ret); 293 BIO_dump(out,argp,(int)ret);
273 return(ret); 294 return(ret);
274 } 295 }
275 else if (cmd == (BIO_CB_WRITE|BIO_CB_RETURN)) 296 else if (cmd == (BIO_CB_WRITE|BIO_CB_RETURN))
276 { 297 {
277 BIO_printf(out,"write to %p [%p] (%d bytes => %ld (0x%lX))\n", 298 BIO_printf(out,"write to %p [%p] (%lu bytes => %ld (0x%lX))\n",
278 (void *)bio,argp,argi,ret,ret); 299 (void *)bio,argp,(unsigned long)argi,ret,ret);
279 BIO_dump(out,argp,(int)ret); 300 BIO_dump(out,argp,(int)ret);
280 } 301 }
281 return(ret); 302 return(ret);
@@ -336,6 +357,12 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
336 case TLS1_VERSION: 357 case TLS1_VERSION:
337 str_version = "TLS 1.0 "; 358 str_version = "TLS 1.0 ";
338 break; 359 break;
360 case DTLS1_VERSION:
361 str_version = "DTLS 1.0 ";
362 break;
363 case DTLS1_BAD_VER:
364 str_version = "DTLS 1.0 (bad) ";
365 break;
339 default: 366 default:
340 str_version = "???"; 367 str_version = "???";
341 } 368 }
@@ -401,7 +428,10 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
401 } 428 }
402 } 429 }
403 430
404 if (version == SSL3_VERSION || version == TLS1_VERSION) 431 if (version == SSL3_VERSION ||
432 version == TLS1_VERSION ||
433 version == DTLS1_VERSION ||
434 version == DTLS1_BAD_VER)
405 { 435 {
406 switch (content_type) 436 switch (content_type)
407 { 437 {
@@ -504,6 +534,21 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
504 case 100: 534 case 100:
505 str_details2 = " no_renegotiation"; 535 str_details2 = " no_renegotiation";
506 break; 536 break;
537 case 110:
538 str_details2 = " unsupported_extension";
539 break;
540 case 111:
541 str_details2 = " certificate_unobtainable";
542 break;
543 case 112:
544 str_details2 = " unrecognized_name";
545 break;
546 case 113:
547 str_details2 = " bad_certificate_status_response";
548 break;
549 case 114:
550 str_details2 = " bad_certificate_hash_value";
551 break;
507 } 552 }
508 } 553 }
509 } 554 }
@@ -525,6 +570,9 @@ void MS_CALLBACK msg_cb(int write_p, int version, int content_type, const void *
525 case 2: 570 case 2:
526 str_details1 = ", ServerHello"; 571 str_details1 = ", ServerHello";
527 break; 572 break;
573 case 3:
574 str_details1 = ", HelloVerifyRequest";
575 break;
528 case 11: 576 case 11:
529 str_details1 = ", Certificate"; 577 str_details1 = ", Certificate";
530 break; 578 break;
@@ -621,6 +669,15 @@ void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
621 extname = "server ticket"; 669 extname = "server ticket";
622 break; 670 break;
623 671
672 case TLSEXT_TYPE_renegotiate:
673 extname = "renegotiate";
674 break;
675
676#ifdef TLSEXT_TYPE_opaque_prf_input
677 case TLSEXT_TYPE_opaque_prf_input:
678 extname = "opaque PRF input";
679 break;
680#endif
624 681
625 default: 682 default:
626 extname = "unknown"; 683 extname = "unknown";
@@ -634,3 +691,172 @@ void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
634 BIO_dump(bio, (char *)data, len); 691 BIO_dump(bio, (char *)data, len);
635 (void)BIO_flush(bio); 692 (void)BIO_flush(bio);
636 } 693 }
694
695int MS_CALLBACK generate_cookie_callback(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)
696 {
697 unsigned char *buffer, result[EVP_MAX_MD_SIZE];
698 unsigned int length, resultlength;
699 union {
700 struct sockaddr sa;
701 struct sockaddr_in s4;
702#if OPENSSL_USE_IPV6
703 struct sockaddr_in6 s6;
704#endif
705 } peer;
706
707 /* Initialize a random secret */
708 if (!cookie_initialized)
709 {
710 if (!RAND_bytes(cookie_secret, COOKIE_SECRET_LENGTH))
711 {
712 BIO_printf(bio_err,"error setting random cookie secret\n");
713 return 0;
714 }
715 cookie_initialized = 1;
716 }
717
718 /* Read peer information */
719 (void)BIO_dgram_get_peer(SSL_get_rbio(ssl), &peer);
720
721 /* Create buffer with peer's address and port */
722 length = 0;
723 switch (peer.sa.sa_family)
724 {
725 case AF_INET:
726 length += sizeof(struct in_addr);
727 length += sizeof(peer.s4.sin_port);
728 break;
729#if OPENSSL_USE_IPV6
730 case AF_INET6:
731 length += sizeof(struct in6_addr);
732 length += sizeof(peer.s6.sin6_port);
733 break;
734#endif
735 default:
736 OPENSSL_assert(0);
737 break;
738 }
739 buffer = OPENSSL_malloc(length);
740
741 if (buffer == NULL)
742 {
743 BIO_printf(bio_err,"out of memory\n");
744 return 0;
745 }
746
747 switch (peer.sa.sa_family)
748 {
749 case AF_INET:
750 memcpy(buffer,
751 &peer.s4.sin_port,
752 sizeof(peer.s4.sin_port));
753 memcpy(buffer + sizeof(peer.s4.sin_port),
754 &peer.s4.sin_addr,
755 sizeof(struct in_addr));
756 break;
757#if OPENSSL_USE_IPV6
758 case AF_INET6:
759 memcpy(buffer,
760 &peer.s6.sin6_port,
761 sizeof(peer.s6.sin6_port));
762 memcpy(buffer + sizeof(peer.s6.sin6_port),
763 &peer.s6.sin6_addr,
764 sizeof(struct in6_addr));
765 break;
766#endif
767 default:
768 OPENSSL_assert(0);
769 break;
770 }
771
772 /* Calculate HMAC of buffer using the secret */
773 HMAC(EVP_sha1(), cookie_secret, COOKIE_SECRET_LENGTH,
774 buffer, length, result, &resultlength);
775 OPENSSL_free(buffer);
776
777 memcpy(cookie, result, resultlength);
778 *cookie_len = resultlength;
779
780 return 1;
781 }
782
783int MS_CALLBACK verify_cookie_callback(SSL *ssl, unsigned char *cookie, unsigned int cookie_len)
784 {
785 unsigned char *buffer, result[EVP_MAX_MD_SIZE];
786 unsigned int length, resultlength;
787 union {
788 struct sockaddr sa;
789 struct sockaddr_in s4;
790#if OPENSSL_USE_IPV6
791 struct sockaddr_in6 s6;
792#endif
793 } peer;
794
795 /* If secret isn't initialized yet, the cookie can't be valid */
796 if (!cookie_initialized)
797 return 0;
798
799 /* Read peer information */
800 (void)BIO_dgram_get_peer(SSL_get_rbio(ssl), &peer);
801
802 /* Create buffer with peer's address and port */
803 length = 0;
804 switch (peer.sa.sa_family)
805 {
806 case AF_INET:
807 length += sizeof(struct in_addr);
808 length += sizeof(peer.s4.sin_port);
809 break;
810#if OPENSSL_USE_IPV6
811 case AF_INET6:
812 length += sizeof(struct in6_addr);
813 length += sizeof(peer.s6.sin6_port);
814 break;
815#endif
816 default:
817 OPENSSL_assert(0);
818 break;
819 }
820 buffer = OPENSSL_malloc(length);
821
822 if (buffer == NULL)
823 {
824 BIO_printf(bio_err,"out of memory\n");
825 return 0;
826 }
827
828 switch (peer.sa.sa_family)
829 {
830 case AF_INET:
831 memcpy(buffer,
832 &peer.s4.sin_port,
833 sizeof(peer.s4.sin_port));
834 memcpy(buffer + sizeof(peer.s4.sin_port),
835 &peer.s4.sin_addr,
836 sizeof(struct in_addr));
837 break;
838#if OPENSSL_USE_IPV6
839 case AF_INET6:
840 memcpy(buffer,
841 &peer.s6.sin6_port,
842 sizeof(peer.s6.sin6_port));
843 memcpy(buffer + sizeof(peer.s6.sin6_port),
844 &peer.s6.sin6_addr,
845 sizeof(struct in6_addr));
846 break;
847#endif
848 default:
849 OPENSSL_assert(0);
850 break;
851 }
852
853 /* Calculate HMAC of buffer using the secret */
854 HMAC(EVP_sha1(), cookie_secret, COOKIE_SECRET_LENGTH,
855 buffer, length, result, &resultlength);
856 OPENSSL_free(buffer);
857
858 if (cookie_len == resultlength && memcmp(result, cookie, resultlength) == 0)
859 return 1;
860
861 return 0;
862 }
diff --git a/src/lib/libssl/src/apps/s_client.c b/src/lib/libssl/src/apps/s_client.c
index 4974f5fc93..34ad2cec78 100644
--- a/src/lib/libssl/src/apps/s_client.c
+++ b/src/lib/libssl/src/apps/s_client.c
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -108,8 +108,35 @@
108 * Hudson (tjh@cryptsoft.com). 108 * Hudson (tjh@cryptsoft.com).
109 * 109 *
110 */ 110 */
111/* ====================================================================
112 * Copyright 2005 Nokia. All rights reserved.
113 *
114 * The portions of the attached software ("Contribution") is developed by
115 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
116 * license.
117 *
118 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
119 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
120 * support (see RFC 4279) to OpenSSL.
121 *
122 * No patent licenses or other rights except those expressly stated in
123 * the OpenSSL open source license shall be deemed granted or received
124 * expressly, by implication, estoppel, or otherwise.
125 *
126 * No assurances are provided by Nokia that the Contribution does not
127 * infringe the patent or other intellectual property rights of any third
128 * party or that the license provides you with all the necessary rights
129 * to make use of the Contribution.
130 *
131 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
132 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
133 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
134 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
135 * OTHERWISE.
136 */
111 137
112#include <assert.h> 138#include <assert.h>
139#include <ctype.h>
113#include <stdio.h> 140#include <stdio.h>
114#include <stdlib.h> 141#include <stdlib.h>
115#include <string.h> 142#include <string.h>
@@ -135,23 +162,19 @@ typedef unsigned int u_int;
135#include <openssl/pem.h> 162#include <openssl/pem.h>
136#include <openssl/rand.h> 163#include <openssl/rand.h>
137#include <openssl/ocsp.h> 164#include <openssl/ocsp.h>
165#include <openssl/bn.h>
138#include "s_apps.h" 166#include "s_apps.h"
139#include "timeouts.h" 167#include "timeouts.h"
140 168
141#ifdef OPENSSL_SYS_WINCE
142/* Windows CE incorrectly defines fileno as returning void*, so to avoid problems below... */
143#ifdef fileno
144#undef fileno
145#endif
146#define fileno(a) (int)_fileno(a)
147#endif
148
149
150#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000) 169#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000)
151/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */ 170/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */
152#undef FIONBIO 171#undef FIONBIO
153#endif 172#endif
154 173
174#if defined(OPENSSL_SYS_BEOS_R5)
175#include <fcntl.h>
176#endif
177
155#undef PROG 178#undef PROG
156#define PROG s_client_main 179#define PROG s_client_main
157 180
@@ -166,6 +189,7 @@ typedef unsigned int u_int;
166 189
167extern int verify_depth; 190extern int verify_depth;
168extern int verify_error; 191extern int verify_error;
192extern int verify_return_error;
169 193
170#ifdef FIONBIO 194#ifdef FIONBIO
171static int c_nbio=0; 195static int c_nbio=0;
@@ -188,6 +212,69 @@ static BIO *bio_c_out=NULL;
188static int c_quiet=0; 212static int c_quiet=0;
189static int c_ign_eof=0; 213static int c_ign_eof=0;
190 214
215#ifndef OPENSSL_NO_PSK
216/* Default PSK identity and key */
217static char *psk_identity="Client_identity";
218/*char *psk_key=NULL; by default PSK is not used */
219
220static unsigned int psk_client_cb(SSL *ssl, const char *hint, char *identity,
221 unsigned int max_identity_len, unsigned char *psk,
222 unsigned int max_psk_len)
223 {
224 unsigned int psk_len = 0;
225 int ret;
226 BIGNUM *bn=NULL;
227
228 if (c_debug)
229 BIO_printf(bio_c_out, "psk_client_cb\n");
230 if (!hint)
231 {
232 /* no ServerKeyExchange message*/
233 if (c_debug)
234 BIO_printf(bio_c_out,"NULL received PSK identity hint, continuing anyway\n");
235 }
236 else if (c_debug)
237 BIO_printf(bio_c_out, "Received PSK identity hint '%s'\n", hint);
238
239 /* lookup PSK identity and PSK key based on the given identity hint here */
240 ret = BIO_snprintf(identity, max_identity_len, "%s", psk_identity);
241 if (ret < 0 || (unsigned int)ret > max_identity_len)
242 goto out_err;
243 if (c_debug)
244 BIO_printf(bio_c_out, "created identity '%s' len=%d\n", identity, ret);
245 ret=BN_hex2bn(&bn, psk_key);
246 if (!ret)
247 {
248 BIO_printf(bio_err,"Could not convert PSK key '%s' to BIGNUM\n", psk_key);
249 if (bn)
250 BN_free(bn);
251 return 0;
252 }
253
254 if ((unsigned int)BN_num_bytes(bn) > max_psk_len)
255 {
256 BIO_printf(bio_err,"psk buffer of callback is too small (%d) for key (%d)\n",
257 max_psk_len, BN_num_bytes(bn));
258 BN_free(bn);
259 return 0;
260 }
261
262 psk_len=BN_bn2bin(bn, psk);
263 BN_free(bn);
264 if (psk_len == 0)
265 goto out_err;
266
267 if (c_debug)
268 BIO_printf(bio_c_out, "created PSK len=%d\n", psk_len);
269
270 return psk_len;
271 out_err:
272 if (c_debug)
273 BIO_printf(bio_err, "Error in PSK client callback\n");
274 return 0;
275 }
276#endif
277
191static void sc_usage(void) 278static void sc_usage(void)
192 { 279 {
193 BIO_printf(bio_err,"usage: s_client args\n"); 280 BIO_printf(bio_err,"usage: s_client args\n");
@@ -196,7 +283,7 @@ static void sc_usage(void)
196 BIO_printf(bio_err," -port port - use -connect instead\n"); 283 BIO_printf(bio_err," -port port - use -connect instead\n");
197 BIO_printf(bio_err," -connect host:port - who to connect to (default is %s:%s)\n",SSL_HOST_NAME,PORT_STR); 284 BIO_printf(bio_err," -connect host:port - who to connect to (default is %s:%s)\n",SSL_HOST_NAME,PORT_STR);
198 285
199 BIO_printf(bio_err," -verify depth - turn on peer certificate verification\n"); 286 BIO_printf(bio_err," -verify arg - turn on peer certificate verification\n");
200 BIO_printf(bio_err," -cert arg - certificate file to use, PEM format assumed\n"); 287 BIO_printf(bio_err," -cert arg - certificate file to use, PEM format assumed\n");
201 BIO_printf(bio_err," -certform arg - certificate format (PEM or DER) PEM default\n"); 288 BIO_printf(bio_err," -certform arg - certificate format (PEM or DER) PEM default\n");
202 BIO_printf(bio_err," -key arg - Private key file to use, in cert file if\n"); 289 BIO_printf(bio_err," -key arg - Private key file to use, in cert file if\n");
@@ -222,11 +309,18 @@ static void sc_usage(void)
222 BIO_printf(bio_err," -quiet - no s_client output\n"); 309 BIO_printf(bio_err," -quiet - no s_client output\n");
223 BIO_printf(bio_err," -ign_eof - ignore input eof (default when -quiet)\n"); 310 BIO_printf(bio_err," -ign_eof - ignore input eof (default when -quiet)\n");
224 BIO_printf(bio_err," -no_ign_eof - don't ignore input eof\n"); 311 BIO_printf(bio_err," -no_ign_eof - don't ignore input eof\n");
312#ifndef OPENSSL_NO_PSK
313 BIO_printf(bio_err," -psk_identity arg - PSK identity\n");
314 BIO_printf(bio_err," -psk arg - PSK in hex (without 0x)\n");
315# ifndef OPENSSL_NO_JPAKE
316 BIO_printf(bio_err," -jpake arg - JPAKE secret to use\n");
317# endif
318#endif
225 BIO_printf(bio_err," -ssl2 - just use SSLv2\n"); 319 BIO_printf(bio_err," -ssl2 - just use SSLv2\n");
226 BIO_printf(bio_err," -ssl3 - just use SSLv3\n"); 320 BIO_printf(bio_err," -ssl3 - just use SSLv3\n");
227 BIO_printf(bio_err," -tls1 - just use TLSv1\n"); 321 BIO_printf(bio_err," -tls1 - just use TLSv1\n");
228 BIO_printf(bio_err," -dtls1 - just use DTLSv1\n"); 322 BIO_printf(bio_err," -dtls1 - just use DTLSv1\n");
229 BIO_printf(bio_err," -mtu - set the MTU\n"); 323 BIO_printf(bio_err," -mtu - set the link layer MTU\n");
230 BIO_printf(bio_err," -no_tls1/-no_ssl3/-no_ssl2 - turn off that protocol\n"); 324 BIO_printf(bio_err," -no_tls1/-no_ssl3/-no_ssl2 - turn off that protocol\n");
231 BIO_printf(bio_err," -bugs - Switch on all SSL implementation bug workarounds\n"); 325 BIO_printf(bio_err," -bugs - Switch on all SSL implementation bug workarounds\n");
232 BIO_printf(bio_err," -serverpref - Use server's cipher preferences (only SSLv2)\n"); 326 BIO_printf(bio_err," -serverpref - Use server's cipher preferences (only SSLv2)\n");
@@ -249,6 +343,7 @@ static void sc_usage(void)
249 BIO_printf(bio_err," -status - request certificate status from server\n"); 343 BIO_printf(bio_err," -status - request certificate status from server\n");
250 BIO_printf(bio_err," -no_ticket - disable use of RFC4507bis session tickets\n"); 344 BIO_printf(bio_err," -no_ticket - disable use of RFC4507bis session tickets\n");
251#endif 345#endif
346 BIO_printf(bio_err," -legacy_renegotiation - enable use of legacy renegotiation (dangerous)\n");
252 } 347 }
253 348
254#ifndef OPENSSL_NO_TLSEXT 349#ifndef OPENSSL_NO_TLSEXT
@@ -272,6 +367,7 @@ static int MS_CALLBACK ssl_servername_cb(SSL *s, int *ad, void *arg)
272 return SSL_TLSEXT_ERR_OK; 367 return SSL_TLSEXT_ERR_OK;
273 } 368 }
274#endif 369#endif
370
275enum 371enum
276{ 372{
277 PROTO_OFF = 0, 373 PROTO_OFF = 0,
@@ -286,9 +382,8 @@ int MAIN(int, char **);
286 382
287int MAIN(int argc, char **argv) 383int MAIN(int argc, char **argv)
288 { 384 {
289 int off=0; 385 unsigned int off=0, clr=0;
290 SSL *con=NULL,*con2=NULL; 386 SSL *con=NULL;
291 X509_STORE *store = NULL;
292 int s,k,width,state=0; 387 int s,k,width,state=0;
293 char *cbuf=NULL,*sbuf=NULL,*mbuf=NULL; 388 char *cbuf=NULL,*sbuf=NULL,*mbuf=NULL;
294 int cbuf_len,cbuf_off; 389 int cbuf_len,cbuf_off;
@@ -309,25 +404,27 @@ int MAIN(int argc, char **argv)
309 SSL_CTX *ctx=NULL; 404 SSL_CTX *ctx=NULL;
310 int ret=1,in_init=1,i,nbio_test=0; 405 int ret=1,in_init=1,i,nbio_test=0;
311 int starttls_proto = PROTO_OFF; 406 int starttls_proto = PROTO_OFF;
312 int prexit = 0, vflags = 0; 407 int prexit = 0;
313 SSL_METHOD *meth=NULL; 408 X509_VERIFY_PARAM *vpm = NULL;
314#ifdef sock_type 409 int badarg = 0;
315#undef sock_type 410 const SSL_METHOD *meth=NULL;
316#endif 411 int socket_type=SOCK_STREAM;
317 int sock_type=SOCK_STREAM;
318 BIO *sbio; 412 BIO *sbio;
319 char *inrand=NULL; 413 char *inrand=NULL;
320 int mbuf_len=0; 414 int mbuf_len=0;
415 struct timeval timeout, *timeoutp;
321#ifndef OPENSSL_NO_ENGINE 416#ifndef OPENSSL_NO_ENGINE
322 char *engine_id=NULL; 417 char *engine_id=NULL;
323 char *ssl_client_engine_id=NULL; 418 char *ssl_client_engine_id=NULL;
324 ENGINE *ssl_client_engine=NULL; 419 ENGINE *ssl_client_engine=NULL;
325#endif 420#endif
326 ENGINE *e=NULL; 421 ENGINE *e=NULL;
327#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) 422#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS_R5)
328 struct timeval tv; 423 struct timeval tv;
424#if defined(OPENSSL_SYS_BEOS_R5)
425 int stdin_set = 0;
426#endif
329#endif 427#endif
330
331#ifndef OPENSSL_NO_TLSEXT 428#ifndef OPENSSL_NO_TLSEXT
332 char *servername = NULL; 429 char *servername = NULL;
333 tlsextctx tlsextcbp = 430 tlsextctx tlsextcbp =
@@ -338,7 +435,7 @@ int MAIN(int argc, char **argv)
338 struct sockaddr peer; 435 struct sockaddr peer;
339 int peerlen = sizeof(peer); 436 int peerlen = sizeof(peer);
340 int enable_timeouts = 0 ; 437 int enable_timeouts = 0 ;
341 long mtu = 0; 438 long socket_mtu = 0;
342#ifndef OPENSSL_NO_JPAKE 439#ifndef OPENSSL_NO_JPAKE
343 char *jpake_secret = NULL; 440 char *jpake_secret = NULL;
344#endif 441#endif
@@ -427,10 +524,14 @@ int MAIN(int argc, char **argv)
427 if (--argc < 1) goto bad; 524 if (--argc < 1) goto bad;
428 cert_format = str2fmt(*(++argv)); 525 cert_format = str2fmt(*(++argv));
429 } 526 }
430 else if (strcmp(*argv,"-crl_check") == 0) 527 else if (args_verify(&argv, &argc, &badarg, bio_err, &vpm))
431 vflags |= X509_V_FLAG_CRL_CHECK; 528 {
432 else if (strcmp(*argv,"-crl_check_all") == 0) 529 if (badarg)
433 vflags |= X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL; 530 goto bad;
531 continue;
532 }
533 else if (strcmp(*argv,"-verify_return_error") == 0)
534 verify_return_error = 1;
434 else if (strcmp(*argv,"-prexit") == 0) 535 else if (strcmp(*argv,"-prexit") == 0)
435 prexit=1; 536 prexit=1;
436 else if (strcmp(*argv,"-crlf") == 0) 537 else if (strcmp(*argv,"-crlf") == 0)
@@ -466,6 +567,27 @@ int MAIN(int argc, char **argv)
466 nbio_test=1; 567 nbio_test=1;
467 else if (strcmp(*argv,"-state") == 0) 568 else if (strcmp(*argv,"-state") == 0)
468 state=1; 569 state=1;
570#ifndef OPENSSL_NO_PSK
571 else if (strcmp(*argv,"-psk_identity") == 0)
572 {
573 if (--argc < 1) goto bad;
574 psk_identity=*(++argv);
575 }
576 else if (strcmp(*argv,"-psk") == 0)
577 {
578 size_t j;
579
580 if (--argc < 1) goto bad;
581 psk_key=*(++argv);
582 for (j = 0; j < strlen(psk_key); j++)
583 {
584 if (isxdigit((int)psk_key[j]))
585 continue;
586 BIO_printf(bio_err,"Not a hex number '%s'\n",*argv);
587 goto bad;
588 }
589 }
590#endif
469#ifndef OPENSSL_NO_SSL2 591#ifndef OPENSSL_NO_SSL2
470 else if (strcmp(*argv,"-ssl2") == 0) 592 else if (strcmp(*argv,"-ssl2") == 0)
471 meth=SSLv2_client_method(); 593 meth=SSLv2_client_method();
@@ -482,14 +604,14 @@ int MAIN(int argc, char **argv)
482 else if (strcmp(*argv,"-dtls1") == 0) 604 else if (strcmp(*argv,"-dtls1") == 0)
483 { 605 {
484 meth=DTLSv1_client_method(); 606 meth=DTLSv1_client_method();
485 sock_type=SOCK_DGRAM; 607 socket_type=SOCK_DGRAM;
486 } 608 }
487 else if (strcmp(*argv,"-timeout") == 0) 609 else if (strcmp(*argv,"-timeout") == 0)
488 enable_timeouts=1; 610 enable_timeouts=1;
489 else if (strcmp(*argv,"-mtu") == 0) 611 else if (strcmp(*argv,"-mtu") == 0)
490 { 612 {
491 if (--argc < 1) goto bad; 613 if (--argc < 1) goto bad;
492 mtu = atol(*(++argv)); 614 socket_mtu = atol(*(++argv));
493 } 615 }
494#endif 616#endif
495 else if (strcmp(*argv,"-bugs") == 0) 617 else if (strcmp(*argv,"-bugs") == 0)
@@ -529,12 +651,20 @@ int MAIN(int argc, char **argv)
529 off|=SSL_OP_NO_SSLv3; 651 off|=SSL_OP_NO_SSLv3;
530 else if (strcmp(*argv,"-no_ssl2") == 0) 652 else if (strcmp(*argv,"-no_ssl2") == 0)
531 off|=SSL_OP_NO_SSLv2; 653 off|=SSL_OP_NO_SSLv2;
654 else if (strcmp(*argv,"-no_comp") == 0)
655 { off|=SSL_OP_NO_COMPRESSION; }
532#ifndef OPENSSL_NO_TLSEXT 656#ifndef OPENSSL_NO_TLSEXT
533 else if (strcmp(*argv,"-no_ticket") == 0) 657 else if (strcmp(*argv,"-no_ticket") == 0)
534 { off|=SSL_OP_NO_TICKET; } 658 { off|=SSL_OP_NO_TICKET; }
535#endif 659#endif
536 else if (strcmp(*argv,"-serverpref") == 0) 660 else if (strcmp(*argv,"-serverpref") == 0)
537 off|=SSL_OP_CIPHER_SERVER_PREFERENCE; 661 off|=SSL_OP_CIPHER_SERVER_PREFERENCE;
662 else if (strcmp(*argv,"-legacy_renegotiation") == 0)
663 off|=SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
664 else if (strcmp(*argv,"-legacy_server_connect") == 0)
665 { off|=SSL_OP_LEGACY_SERVER_CONNECT; }
666 else if (strcmp(*argv,"-no_legacy_server_connect") == 0)
667 { clr|=SSL_OP_LEGACY_SERVER_CONNECT; }
538 else if (strcmp(*argv,"-cipher") == 0) 668 else if (strcmp(*argv,"-cipher") == 0)
539 { 669 {
540 if (--argc < 1) goto bad; 670 if (--argc < 1) goto bad;
@@ -609,6 +739,26 @@ bad:
609 goto end; 739 goto end;
610 } 740 }
611 741
742#if !defined(OPENSSL_NO_JPAKE) && !defined(OPENSSL_NO_PSK)
743 if (jpake_secret)
744 {
745 if (psk_key)
746 {
747 BIO_printf(bio_err,
748 "Can't use JPAKE and PSK together\n");
749 goto end;
750 }
751 psk_identity = "JPAKE";
752 }
753
754 if (cipher)
755 {
756 BIO_printf(bio_err, "JPAKE sets cipher to PSK\n");
757 goto end;
758 }
759 cipher = "PSK";
760#endif
761
612 OpenSSL_add_ssl_algorithms(); 762 OpenSSL_add_ssl_algorithms();
613 SSL_load_error_strings(); 763 SSL_load_error_strings();
614 764
@@ -624,6 +774,7 @@ bad:
624 goto end; 774 goto end;
625 } 775 }
626 } 776 }
777
627#endif 778#endif
628 if (!app_passwd(bio_err, passarg, NULL, &pass, NULL)) 779 if (!app_passwd(bio_err, passarg, NULL, &pass, NULL))
629 { 780 {
@@ -691,6 +842,9 @@ bad:
691 goto end; 842 goto end;
692 } 843 }
693 844
845 if (vpm)
846 SSL_CTX_set1_param(ctx, vpm);
847
694#ifndef OPENSSL_NO_ENGINE 848#ifndef OPENSSL_NO_ENGINE
695 if (ssl_client_engine) 849 if (ssl_client_engine)
696 { 850 {
@@ -705,14 +859,29 @@ bad:
705 } 859 }
706#endif 860#endif
707 861
862#ifndef OPENSSL_NO_PSK
863#ifdef OPENSSL_NO_JPAKE
864 if (psk_key != NULL)
865#else
866 if (psk_key != NULL || jpake_secret)
867#endif
868 {
869 if (c_debug)
870 BIO_printf(bio_c_out, "PSK key given or JPAKE in use, setting client callback\n");
871 SSL_CTX_set_psk_client_callback(ctx, psk_client_cb);
872 }
873#endif
708 if (bugs) 874 if (bugs)
709 SSL_CTX_set_options(ctx,SSL_OP_ALL|off); 875 SSL_CTX_set_options(ctx,SSL_OP_ALL|off);
710 else 876 else
711 SSL_CTX_set_options(ctx,off); 877 SSL_CTX_set_options(ctx,off);
878
879 if (clr)
880 SSL_CTX_clear_options(ctx, clr);
712 /* DTLS: partial reads end up discarding unread UDP bytes :-( 881 /* DTLS: partial reads end up discarding unread UDP bytes :-(
713 * Setting read ahead solves this problem. 882 * Setting read ahead solves this problem.
714 */ 883 */
715 if (sock_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx, 1); 884 if (socket_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx, 1);
716 885
717 if (state) SSL_CTX_set_info_callback(ctx,apps_ssl_info_callback); 886 if (state) SSL_CTX_set_info_callback(ctx,apps_ssl_info_callback);
718 if (cipher != NULL) 887 if (cipher != NULL)
@@ -738,8 +907,6 @@ bad:
738 /* goto end; */ 907 /* goto end; */
739 } 908 }
740 909
741 store = SSL_CTX_get_cert_store(ctx);
742 X509_STORE_set_flags(store, vflags);
743#ifndef OPENSSL_NO_TLSEXT 910#ifndef OPENSSL_NO_TLSEXT
744 if (servername != NULL) 911 if (servername != NULL)
745 { 912 {
@@ -784,7 +951,6 @@ bad:
784 } 951 }
785 } 952 }
786#endif 953#endif
787
788#ifndef OPENSSL_NO_KRB5 954#ifndef OPENSSL_NO_KRB5
789 if (con && (con->kssl_ctx = kssl_ctx_new()) != NULL) 955 if (con && (con->kssl_ctx = kssl_ctx_new()) != NULL)
790 { 956 {
@@ -792,10 +958,15 @@ bad:
792 } 958 }
793#endif /* OPENSSL_NO_KRB5 */ 959#endif /* OPENSSL_NO_KRB5 */
794/* SSL_set_cipher_list(con,"RC4-MD5"); */ 960/* SSL_set_cipher_list(con,"RC4-MD5"); */
961#if 0
962#ifdef TLSEXT_TYPE_opaque_prf_input
963 SSL_set_tlsext_opaque_prf_input(con, "Test client", 11);
964#endif
965#endif
795 966
796re_start: 967re_start:
797 968
798 if (init_client(&s,host,port,sock_type) == 0) 969 if (init_client(&s,host,port,socket_type) == 0)
799 { 970 {
800 BIO_printf(bio_err,"connect:errno=%d\n",get_last_socket_error()); 971 BIO_printf(bio_err,"connect:errno=%d\n",get_last_socket_error());
801 SHUTDOWN(s); 972 SHUTDOWN(s);
@@ -819,7 +990,6 @@ re_start:
819 990
820 if ( SSL_version(con) == DTLS1_VERSION) 991 if ( SSL_version(con) == DTLS1_VERSION)
821 { 992 {
822 struct timeval timeout;
823 993
824 sbio=BIO_new_dgram(s,BIO_NOCLOSE); 994 sbio=BIO_new_dgram(s,BIO_NOCLOSE);
825 if (getsockname(s, &peer, (void *)&peerlen) < 0) 995 if (getsockname(s, &peer, (void *)&peerlen) < 0)
@@ -832,7 +1002,7 @@ re_start:
832 1002
833 (void)BIO_ctrl_set_connected(sbio, 1, &peer); 1003 (void)BIO_ctrl_set_connected(sbio, 1, &peer);
834 1004
835 if ( enable_timeouts) 1005 if (enable_timeouts)
836 { 1006 {
837 timeout.tv_sec = 0; 1007 timeout.tv_sec = 0;
838 timeout.tv_usec = DGRAM_RCV_TIMEOUT; 1008 timeout.tv_usec = DGRAM_RCV_TIMEOUT;
@@ -843,10 +1013,10 @@ re_start:
843 BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout); 1013 BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
844 } 1014 }
845 1015
846 if ( mtu > 0) 1016 if (socket_mtu > 28)
847 { 1017 {
848 SSL_set_options(con, SSL_OP_NO_QUERY_MTU); 1018 SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
849 SSL_set_mtu(con, mtu); 1019 SSL_set_mtu(con, socket_mtu - 28);
850 } 1020 }
851 else 1021 else
852 /* want to do MTU discovery */ 1022 /* want to do MTU discovery */
@@ -1036,6 +1206,12 @@ SSL_set_tlsext_status_ids(con, ids);
1036 FD_ZERO(&readfds); 1206 FD_ZERO(&readfds);
1037 FD_ZERO(&writefds); 1207 FD_ZERO(&writefds);
1038 1208
1209 if ((SSL_version(con) == DTLS1_VERSION) &&
1210 DTLSv1_get_timeout(con, &timeout))
1211 timeoutp = &timeout;
1212 else
1213 timeoutp = NULL;
1214
1039 if (SSL_in_init(con) && !SSL_total_renegotiations(con)) 1215 if (SSL_in_init(con) && !SSL_total_renegotiations(con))
1040 { 1216 {
1041 in_init=1; 1217 in_init=1;
@@ -1047,6 +1223,14 @@ SSL_set_tlsext_status_ids(con, ids);
1047 if (in_init) 1223 if (in_init)
1048 { 1224 {
1049 in_init=0; 1225 in_init=0;
1226#if 0 /* This test doesn't really work as intended (needs to be fixed) */
1227#ifndef OPENSSL_NO_TLSEXT
1228 if (servername != NULL && !SSL_session_reused(con))
1229 {
1230 BIO_printf(bio_c_out,"Server did %sacknowledge servername extension.\n",tlsextcbp.ack?"":"not ");
1231 }
1232#endif
1233#endif
1050 if (sess_out) 1234 if (sess_out)
1051 { 1235 {
1052 BIO *stmp = BIO_new_file(sess_out, "w"); 1236 BIO *stmp = BIO_new_file(sess_out, "w");
@@ -1084,22 +1268,22 @@ SSL_set_tlsext_status_ids(con, ids);
1084 1268
1085 if (!ssl_pending) 1269 if (!ssl_pending)
1086 { 1270 {
1087#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE) 1271#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE) && !defined (OPENSSL_SYS_BEOS_R5)
1088 if (tty_on) 1272 if (tty_on)
1089 { 1273 {
1090 if (read_tty) FD_SET(fileno(stdin),&readfds); 1274 if (read_tty) openssl_fdset(fileno(stdin),&readfds);
1091 if (write_tty) FD_SET(fileno(stdout),&writefds); 1275 if (write_tty) openssl_fdset(fileno(stdout),&writefds);
1092 } 1276 }
1093 if (read_ssl) 1277 if (read_ssl)
1094 FD_SET(SSL_get_fd(con),&readfds); 1278 openssl_fdset(SSL_get_fd(con),&readfds);
1095 if (write_ssl) 1279 if (write_ssl)
1096 FD_SET(SSL_get_fd(con),&writefds); 1280 openssl_fdset(SSL_get_fd(con),&writefds);
1097#else 1281#else
1098 if(!tty_on || !write_tty) { 1282 if(!tty_on || !write_tty) {
1099 if (read_ssl) 1283 if (read_ssl)
1100 FD_SET(SSL_get_fd(con),&readfds); 1284 openssl_fdset(SSL_get_fd(con),&readfds);
1101 if (write_ssl) 1285 if (write_ssl)
1102 FD_SET(SSL_get_fd(con),&writefds); 1286 openssl_fdset(SSL_get_fd(con),&writefds);
1103 } 1287 }
1104#endif 1288#endif
1105/* printf("mode tty(%d %d%d) ssl(%d%d)\n", 1289/* printf("mode tty(%d %d%d) ssl(%d%d)\n",
@@ -1132,7 +1316,7 @@ SSL_set_tlsext_status_ids(con, ids);
1132 if(!i && (!((_kbhit()) || (WAIT_OBJECT_0 == WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), 0))) || !read_tty) ) continue; 1316 if(!i && (!((_kbhit()) || (WAIT_OBJECT_0 == WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), 0))) || !read_tty) ) continue;
1133#endif 1317#endif
1134 } else i=select(width,(void *)&readfds,(void *)&writefds, 1318 } else i=select(width,(void *)&readfds,(void *)&writefds,
1135 NULL,NULL); 1319 NULL,timeoutp);
1136 } 1320 }
1137#elif defined(OPENSSL_SYS_NETWARE) 1321#elif defined(OPENSSL_SYS_NETWARE)
1138 if(!write_tty) { 1322 if(!write_tty) {
@@ -1142,11 +1326,30 @@ SSL_set_tlsext_status_ids(con, ids);
1142 i=select(width,(void *)&readfds,(void *)&writefds, 1326 i=select(width,(void *)&readfds,(void *)&writefds,
1143 NULL,&tv); 1327 NULL,&tv);
1144 } else i=select(width,(void *)&readfds,(void *)&writefds, 1328 } else i=select(width,(void *)&readfds,(void *)&writefds,
1145 NULL,NULL); 1329 NULL,timeoutp);
1330 }
1331#elif defined(OPENSSL_SYS_BEOS_R5)
1332 /* Under BeOS-R5 the situation is similar to DOS */
1333 i=0;
1334 stdin_set = 0;
1335 (void)fcntl(fileno(stdin), F_SETFL, O_NONBLOCK);
1336 if(!write_tty) {
1337 if(read_tty) {
1338 tv.tv_sec = 1;
1339 tv.tv_usec = 0;
1340 i=select(width,(void *)&readfds,(void *)&writefds,
1341 NULL,&tv);
1342 if (read(fileno(stdin), sbuf, 0) >= 0)
1343 stdin_set = 1;
1344 if (!i && (stdin_set != 1 || !read_tty))
1345 continue;
1346 } else i=select(width,(void *)&readfds,(void *)&writefds,
1347 NULL,timeoutp);
1146 } 1348 }
1349 (void)fcntl(fileno(stdin), F_SETFL, 0);
1147#else 1350#else
1148 i=select(width,(void *)&readfds,(void *)&writefds, 1351 i=select(width,(void *)&readfds,(void *)&writefds,
1149 NULL,NULL); 1352 NULL,timeoutp);
1150#endif 1353#endif
1151 if ( i < 0) 1354 if ( i < 0)
1152 { 1355 {
@@ -1157,6 +1360,11 @@ SSL_set_tlsext_status_ids(con, ids);
1157 } 1360 }
1158 } 1361 }
1159 1362
1363 if ((SSL_version(con) == DTLS1_VERSION) && DTLSv1_handle_timeout(con) > 0)
1364 {
1365 BIO_printf(bio_err,"TIMEOUT occured\n");
1366 }
1367
1160 if (!ssl_pending && FD_ISSET(SSL_get_fd(con),&writefds)) 1368 if (!ssl_pending && FD_ISSET(SSL_get_fd(con),&writefds))
1161 { 1369 {
1162 k=SSL_write(con,&(cbuf[cbuf_off]), 1370 k=SSL_write(con,&(cbuf[cbuf_off]),
@@ -1197,6 +1405,7 @@ SSL_set_tlsext_status_ids(con, ids);
1197 if (cbuf_len != 0) 1405 if (cbuf_len != 0)
1198 { 1406 {
1199 BIO_printf(bio_c_out,"shutdown\n"); 1407 BIO_printf(bio_c_out,"shutdown\n");
1408 ret = 0;
1200 goto shut; 1409 goto shut;
1201 } 1410 }
1202 else 1411 else
@@ -1224,8 +1433,8 @@ SSL_set_tlsext_status_ids(con, ids);
1224 goto shut; 1433 goto shut;
1225 } 1434 }
1226 } 1435 }
1227#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) 1436#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS_R5)
1228 /* Assume Windows/DOS can always write */ 1437 /* Assume Windows/DOS/BeOS can always write */
1229 else if (!ssl_pending && write_tty) 1438 else if (!ssl_pending && write_tty)
1230#else 1439#else
1231 else if (!ssl_pending && FD_ISSET(fileno(stdout),&writefds)) 1440 else if (!ssl_pending && FD_ISSET(fileno(stdout),&writefds))
@@ -1234,11 +1443,12 @@ SSL_set_tlsext_status_ids(con, ids);
1234#ifdef CHARSET_EBCDIC 1443#ifdef CHARSET_EBCDIC
1235 ascii2ebcdic(&(sbuf[sbuf_off]),&(sbuf[sbuf_off]),sbuf_len); 1444 ascii2ebcdic(&(sbuf[sbuf_off]),&(sbuf[sbuf_off]),sbuf_len);
1236#endif 1445#endif
1237 i=write(fileno(stdout),&(sbuf[sbuf_off]),sbuf_len); 1446 i=raw_write_stdout(&(sbuf[sbuf_off]),sbuf_len);
1238 1447
1239 if (i <= 0) 1448 if (i <= 0)
1240 { 1449 {
1241 BIO_printf(bio_c_out,"DONE\n"); 1450 BIO_printf(bio_c_out,"DONE\n");
1451 ret = 0;
1242 goto shut; 1452 goto shut;
1243 /* goto end; */ 1453 /* goto end; */
1244 } 1454 }
@@ -1293,10 +1503,12 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
1293 BIO_printf(bio_c_out,"read X BLOCK\n"); 1503 BIO_printf(bio_c_out,"read X BLOCK\n");
1294 break; 1504 break;
1295 case SSL_ERROR_SYSCALL: 1505 case SSL_ERROR_SYSCALL:
1296 BIO_printf(bio_err,"read:errno=%d\n",get_last_socket_error()); 1506 ret=get_last_socket_error();
1507 BIO_printf(bio_err,"read:errno=%d\n",ret);
1297 goto shut; 1508 goto shut;
1298 case SSL_ERROR_ZERO_RETURN: 1509 case SSL_ERROR_ZERO_RETURN:
1299 BIO_printf(bio_c_out,"closed\n"); 1510 BIO_printf(bio_c_out,"closed\n");
1511 ret=0;
1300 goto shut; 1512 goto shut;
1301 case SSL_ERROR_SSL: 1513 case SSL_ERROR_SSL:
1302 ERR_print_errors(bio_err); 1514 ERR_print_errors(bio_err);
@@ -1312,7 +1524,9 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
1312 else if ((_kbhit()) || (WAIT_OBJECT_0 == WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), 0))) 1524 else if ((_kbhit()) || (WAIT_OBJECT_0 == WaitForSingleObject(GetStdHandle(STD_INPUT_HANDLE), 0)))
1313#endif 1525#endif
1314#elif defined (OPENSSL_SYS_NETWARE) 1526#elif defined (OPENSSL_SYS_NETWARE)
1315 else if (_kbhit()) 1527 else if (_kbhit())
1528#elif defined(OPENSSL_SYS_BEOS_R5)
1529 else if (stdin_set)
1316#else 1530#else
1317 else if (FD_ISSET(fileno(stdin),&readfds)) 1531 else if (FD_ISSET(fileno(stdin),&readfds))
1318#endif 1532#endif
@@ -1321,7 +1535,7 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
1321 { 1535 {
1322 int j, lf_num; 1536 int j, lf_num;
1323 1537
1324 i=read(fileno(stdin),cbuf,BUFSIZZ/2); 1538 i=raw_read_stdin(cbuf,BUFSIZZ/2);
1325 lf_num = 0; 1539 lf_num = 0;
1326 /* both loops are skipped when i <= 0 */ 1540 /* both loops are skipped when i <= 0 */
1327 for (j = 0; j < i; j++) 1541 for (j = 0; j < i; j++)
@@ -1340,11 +1554,12 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
1340 assert(lf_num == 0); 1554 assert(lf_num == 0);
1341 } 1555 }
1342 else 1556 else
1343 i=read(fileno(stdin),cbuf,BUFSIZZ); 1557 i=raw_read_stdin(cbuf,BUFSIZZ);
1344 1558
1345 if ((!c_ign_eof) && ((i <= 0) || (cbuf[0] == 'Q'))) 1559 if ((!c_ign_eof) && ((i <= 0) || (cbuf[0] == 'Q')))
1346 { 1560 {
1347 BIO_printf(bio_err,"DONE\n"); 1561 BIO_printf(bio_err,"DONE\n");
1562 ret=0;
1348 goto shut; 1563 goto shut;
1349 } 1564 }
1350 1565
@@ -1367,14 +1582,20 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
1367 read_tty=0; 1582 read_tty=0;
1368 } 1583 }
1369 } 1584 }
1585
1586 ret=0;
1370shut: 1587shut:
1588 if (in_init)
1589 print_stuff(bio_c_out,con,full_log);
1371 SSL_shutdown(con); 1590 SSL_shutdown(con);
1372 SHUTDOWN(SSL_get_fd(con)); 1591 SHUTDOWN(SSL_get_fd(con));
1373 ret=0;
1374end: 1592end:
1375 if(prexit) print_stuff(bio_c_out,con,1); 1593 if (con != NULL)
1376 if (con != NULL) SSL_free(con); 1594 {
1377 if (con2 != NULL) SSL_free(con2); 1595 if (prexit != 0)
1596 print_stuff(bio_c_out,con,1);
1597 SSL_free(con);
1598 }
1378 if (ctx != NULL) SSL_CTX_free(ctx); 1599 if (ctx != NULL) SSL_CTX_free(ctx);
1379 if (cert) 1600 if (cert)
1380 X509_free(cert); 1601 X509_free(cert);
@@ -1403,7 +1624,7 @@ static void print_stuff(BIO *bio, SSL *s, int full)
1403 char buf[BUFSIZ]; 1624 char buf[BUFSIZ];
1404 STACK_OF(X509) *sk; 1625 STACK_OF(X509) *sk;
1405 STACK_OF(X509_NAME) *sk2; 1626 STACK_OF(X509_NAME) *sk2;
1406 SSL_CIPHER *c; 1627 const SSL_CIPHER *c;
1407 X509_NAME *xn; 1628 X509_NAME *xn;
1408 int j,i; 1629 int j,i;
1409#ifndef OPENSSL_NO_COMP 1630#ifndef OPENSSL_NO_COMP
@@ -1511,6 +1732,8 @@ static void print_stuff(BIO *bio, SSL *s, int full)
1511 EVP_PKEY_bits(pktmp)); 1732 EVP_PKEY_bits(pktmp));
1512 EVP_PKEY_free(pktmp); 1733 EVP_PKEY_free(pktmp);
1513 } 1734 }
1735 BIO_printf(bio, "Secure Renegotiation IS%s supported\n",
1736 SSL_get_secure_renegotiation_support(s) ? "" : " NOT");
1514#ifndef OPENSSL_NO_COMP 1737#ifndef OPENSSL_NO_COMP
1515 comp=SSL_get_current_compression(s); 1738 comp=SSL_get_current_compression(s);
1516 expansion=SSL_get_current_expansion(s); 1739 expansion=SSL_get_current_expansion(s);
@@ -1554,4 +1777,5 @@ static int ocsp_resp_cb(SSL *s, void *arg)
1554 OCSP_RESPONSE_free(rsp); 1777 OCSP_RESPONSE_free(rsp);
1555 return 1; 1778 return 1;
1556 } 1779 }
1557#endif /* ndef OPENSSL_NO_TLSEXT */ 1780
1781#endif
diff --git a/src/lib/libssl/src/apps/s_server.c b/src/lib/libssl/src/apps/s_server.c
index 84b1b28461..1a06d19bb1 100644
--- a/src/lib/libssl/src/apps/s_server.c
+++ b/src/lib/libssl/src/apps/s_server.c
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -113,6 +113,32 @@
113 * ECC cipher suite support in OpenSSL originally developed by 113 * ECC cipher suite support in OpenSSL originally developed by
114 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. 114 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
115 */ 115 */
116/* ====================================================================
117 * Copyright 2005 Nokia. All rights reserved.
118 *
119 * The portions of the attached software ("Contribution") is developed by
120 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
121 * license.
122 *
123 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
124 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
125 * support (see RFC 4279) to OpenSSL.
126 *
127 * No patent licenses or other rights except those expressly stated in
128 * the OpenSSL open source license shall be deemed granted or received
129 * expressly, by implication, estoppel, or otherwise.
130 *
131 * No assurances are provided by Nokia that the Contribution does not
132 * infringe the patent or other intellectual property rights of any third
133 * party or that the license provides you with all the necessary rights
134 * to make use of the Contribution.
135 *
136 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
137 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
138 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
139 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
140 * OTHERWISE.
141 */
116 142
117/* Until the key-gen callbacks are modified to use newer prototypes, we allow 143/* Until the key-gen callbacks are modified to use newer prototypes, we allow
118 * deprecated functions for openssl-internal code */ 144 * deprecated functions for openssl-internal code */
@@ -121,11 +147,11 @@
121#endif 147#endif
122 148
123#include <assert.h> 149#include <assert.h>
150#include <ctype.h>
124#include <stdio.h> 151#include <stdio.h>
125#include <stdlib.h> 152#include <stdlib.h>
126#include <string.h> 153#include <string.h>
127 154
128#include <sys/stat.h>
129#include <openssl/e_os2.h> 155#include <openssl/e_os2.h>
130#ifdef OPENSSL_NO_STDIO 156#ifdef OPENSSL_NO_STDIO
131#define APPS_WIN16 157#define APPS_WIN16
@@ -163,19 +189,15 @@ typedef unsigned int u_int;
163#include "s_apps.h" 189#include "s_apps.h"
164#include "timeouts.h" 190#include "timeouts.h"
165 191
166#ifdef OPENSSL_SYS_WINCE
167/* Windows CE incorrectly defines fileno as returning void*, so to avoid problems below... */
168#ifdef fileno
169#undef fileno
170#endif
171#define fileno(a) (int)_fileno(a)
172#endif
173
174#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000) 192#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000)
175/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */ 193/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */
176#undef FIONBIO 194#undef FIONBIO
177#endif 195#endif
178 196
197#if defined(OPENSSL_SYS_BEOS_R5)
198#include <fcntl.h>
199#endif
200
179#ifndef OPENSSL_NO_RSA 201#ifndef OPENSSL_NO_RSA
180static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int is_export, int keylength); 202static RSA MS_CALLBACK *tmp_rsa_cb(SSL *s, int is_export, int keylength);
181#endif 203#endif
@@ -196,14 +218,6 @@ static DH *get_dh512(void);
196static void s_server_init(void); 218static void s_server_init(void);
197#endif 219#endif
198 220
199#ifndef S_ISDIR
200# if defined(_S_IFMT) && defined(_S_IFDIR)
201# define S_ISDIR(a) (((a) & _S_IFMT) == _S_IFDIR)
202# else
203# define S_ISDIR(a) (((a) & S_IFMT) == S_IFDIR)
204# endif
205#endif
206
207#ifndef OPENSSL_NO_DH 221#ifndef OPENSSL_NO_DH
208static unsigned char dh512_p[]={ 222static unsigned char dh512_p[]={
209 0xDA,0x58,0x3C,0x16,0xD9,0x85,0x22,0x89,0xD0,0xE4,0xAF,0x75, 223 0xDA,0x58,0x3C,0x16,0xD9,0x85,0x22,0x89,0xD0,0xE4,0xAF,0x75,
@@ -245,7 +259,7 @@ static int accept_socket= -1;
245#undef PROG 259#undef PROG
246#define PROG s_server_main 260#define PROG s_server_main
247 261
248extern int verify_depth; 262extern int verify_depth, verify_return_error;
249 263
250static char *cipher=NULL; 264static char *cipher=NULL;
251static int s_server_verify=SSL_VERIFY_NONE; 265static int s_server_verify=SSL_VERIFY_NONE;
@@ -283,12 +297,77 @@ static char *engine_id=NULL;
283static const char *session_id_prefix=NULL; 297static const char *session_id_prefix=NULL;
284 298
285static int enable_timeouts = 0; 299static int enable_timeouts = 0;
286#ifdef mtu 300static long socket_mtu;
287#undef mtu 301#ifndef OPENSSL_NO_DTLS1
288#endif
289static long mtu;
290static int cert_chain = 0; 302static int cert_chain = 0;
303#endif
304
305#ifndef OPENSSL_NO_PSK
306static char *psk_identity="Client_identity";
307char *psk_key=NULL; /* by default PSK is not used */
308
309static unsigned int psk_server_cb(SSL *ssl, const char *identity,
310 unsigned char *psk, unsigned int max_psk_len)
311 {
312 unsigned int psk_len = 0;
313 int ret;
314 BIGNUM *bn = NULL;
291 315
316 if (s_debug)
317 BIO_printf(bio_s_out,"psk_server_cb\n");
318 if (!identity)
319 {
320 BIO_printf(bio_err,"Error: client did not send PSK identity\n");
321 goto out_err;
322 }
323 if (s_debug)
324 BIO_printf(bio_s_out,"identity_len=%d identity=%s\n",
325 identity ? (int)strlen(identity) : 0, identity);
326
327 /* here we could lookup the given identity e.g. from a database */
328 if (strcmp(identity, psk_identity) != 0)
329 {
330 BIO_printf(bio_s_out, "PSK error: client identity not found"
331 " (got '%s' expected '%s')\n", identity,
332 psk_identity);
333 goto out_err;
334 }
335 if (s_debug)
336 BIO_printf(bio_s_out, "PSK client identity found\n");
337
338 /* convert the PSK key to binary */
339 ret = BN_hex2bn(&bn, psk_key);
340 if (!ret)
341 {
342 BIO_printf(bio_err,"Could not convert PSK key '%s' to BIGNUM\n", psk_key);
343 if (bn)
344 BN_free(bn);
345 return 0;
346 }
347 if (BN_num_bytes(bn) > (int)max_psk_len)
348 {
349 BIO_printf(bio_err,"psk buffer of callback is too small (%d) for key (%d)\n",
350 max_psk_len, BN_num_bytes(bn));
351 BN_free(bn);
352 return 0;
353 }
354
355 ret = BN_bn2bin(bn, psk);
356 BN_free(bn);
357
358 if (ret < 0)
359 goto out_err;
360 psk_len = (unsigned int)ret;
361
362 if (s_debug)
363 BIO_printf(bio_s_out, "fetched PSK len=%d\n", psk_len);
364 return psk_len;
365 out_err:
366 if (s_debug)
367 BIO_printf(bio_err, "Error in PSK server callback\n");
368 return 0;
369 }
370#endif
292 371
293#ifdef MONOLITH 372#ifdef MONOLITH
294static void s_server_init(void) 373static void s_server_init(void)
@@ -353,7 +432,7 @@ static void sv_usage(void)
353#ifndef OPENSSL_NO_ECDH 432#ifndef OPENSSL_NO_ECDH
354 BIO_printf(bio_err," -named_curve arg - Elliptic curve name to use for ephemeral ECDH keys.\n" \ 433 BIO_printf(bio_err," -named_curve arg - Elliptic curve name to use for ephemeral ECDH keys.\n" \
355 " Use \"openssl ecparam -list_curves\" for all names\n" \ 434 " Use \"openssl ecparam -list_curves\" for all names\n" \
356 " (default is sect163r2).\n"); 435 " (default is nistp256).\n");
357#endif 436#endif
358#ifdef FIONBIO 437#ifdef FIONBIO
359 BIO_printf(bio_err," -nbio - Run with non-blocking IO\n"); 438 BIO_printf(bio_err," -nbio - Run with non-blocking IO\n");
@@ -370,12 +449,19 @@ static void sv_usage(void)
370 BIO_printf(bio_err," -serverpref - Use server's cipher preferences\n"); 449 BIO_printf(bio_err," -serverpref - Use server's cipher preferences\n");
371 BIO_printf(bio_err," -quiet - No server output\n"); 450 BIO_printf(bio_err," -quiet - No server output\n");
372 BIO_printf(bio_err," -no_tmp_rsa - Do not generate a tmp RSA key\n"); 451 BIO_printf(bio_err," -no_tmp_rsa - Do not generate a tmp RSA key\n");
452#ifndef OPENSSL_NO_PSK
453 BIO_printf(bio_err," -psk_hint arg - PSK identity hint to use\n");
454 BIO_printf(bio_err," -psk arg - PSK in hex (without 0x)\n");
455# ifndef OPENSSL_NO_JPAKE
456 BIO_printf(bio_err," -jpake arg - JPAKE secret to use\n");
457# endif
458#endif
373 BIO_printf(bio_err," -ssl2 - Just talk SSLv2\n"); 459 BIO_printf(bio_err," -ssl2 - Just talk SSLv2\n");
374 BIO_printf(bio_err," -ssl3 - Just talk SSLv3\n"); 460 BIO_printf(bio_err," -ssl3 - Just talk SSLv3\n");
375 BIO_printf(bio_err," -tls1 - Just talk TLSv1\n"); 461 BIO_printf(bio_err," -tls1 - Just talk TLSv1\n");
376 BIO_printf(bio_err," -dtls1 - Just talk DTLSv1\n"); 462 BIO_printf(bio_err," -dtls1 - Just talk DTLSv1\n");
377 BIO_printf(bio_err," -timeout - Enable timeouts\n"); 463 BIO_printf(bio_err," -timeout - Enable timeouts\n");
378 BIO_printf(bio_err," -mtu - Set MTU\n"); 464 BIO_printf(bio_err," -mtu - Set link layer MTU\n");
379 BIO_printf(bio_err," -chain - Read a certificate chain\n"); 465 BIO_printf(bio_err," -chain - Read a certificate chain\n");
380 BIO_printf(bio_err," -no_ssl2 - Just disable SSLv2\n"); 466 BIO_printf(bio_err," -no_ssl2 - Just disable SSLv2\n");
381 BIO_printf(bio_err," -no_ssl3 - Just disable SSLv3\n"); 467 BIO_printf(bio_err," -no_ssl3 - Just disable SSLv3\n");
@@ -405,6 +491,7 @@ static void sv_usage(void)
405 BIO_printf(bio_err," not specified (default is %s)\n",TEST_CERT2); 491 BIO_printf(bio_err," not specified (default is %s)\n",TEST_CERT2);
406 BIO_printf(bio_err," -tlsextdebug - hex dump of all TLS extensions received\n"); 492 BIO_printf(bio_err," -tlsextdebug - hex dump of all TLS extensions received\n");
407 BIO_printf(bio_err," -no_ticket - disable use of RFC4507bis session tickets\n"); 493 BIO_printf(bio_err," -no_ticket - disable use of RFC4507bis session tickets\n");
494 BIO_printf(bio_err," -legacy_renegotiation - enable use of legacy renegotiation (dangerous)\n");
408#endif 495#endif
409 } 496 }
410 497
@@ -587,7 +674,7 @@ static int MS_CALLBACK ssl_servername_cb(SSL *s, int *ad, void *arg)
587 return p->extension_error; 674 return p->extension_error;
588 if (ctx2) 675 if (ctx2)
589 { 676 {
590 BIO_printf(p->biodebug,"Swiching server context.\n"); 677 BIO_printf(p->biodebug,"Switching server context.\n");
591 SSL_set_SSL_CTX(s,ctx2); 678 SSL_set_SSL_CTX(s,ctx2);
592 } 679 }
593 } 680 }
@@ -626,7 +713,7 @@ static int cert_status_cb(SSL *s, void *arg)
626 int use_ssl; 713 int use_ssl;
627 unsigned char *rspder = NULL; 714 unsigned char *rspder = NULL;
628 int rspderlen; 715 int rspderlen;
629 STACK *aia = NULL; 716 STACK_OF(OPENSSL_STRING) *aia = NULL;
630 X509 *x = NULL; 717 X509 *x = NULL;
631 X509_STORE_CTX inctx; 718 X509_STORE_CTX inctx;
632 X509_OBJECT obj; 719 X509_OBJECT obj;
@@ -648,7 +735,7 @@ BIO_printf(err, "cert_status: received %d ids\n", sk_OCSP_RESPID_num(ids));
648 aia = X509_get1_ocsp(x); 735 aia = X509_get1_ocsp(x);
649 if (aia) 736 if (aia)
650 { 737 {
651 if (!OCSP_parse_url(sk_value(aia, 0), 738 if (!OCSP_parse_url(sk_OPENSSL_STRING_value(aia, 0),
652 &host, &port, &path, &use_ssl)) 739 &host, &port, &path, &use_ssl))
653 { 740 {
654 BIO_puts(err, "cert_status: can't parse AIA URL\n"); 741 BIO_puts(err, "cert_status: can't parse AIA URL\n");
@@ -656,7 +743,7 @@ BIO_printf(err, "cert_status: received %d ids\n", sk_OCSP_RESPID_num(ids));
656 } 743 }
657 if (srctx->verbose) 744 if (srctx->verbose)
658 BIO_printf(err, "cert_status: AIA URL: %s\n", 745 BIO_printf(err, "cert_status: AIA URL: %s\n",
659 sk_value(aia, 0)); 746 sk_OPENSSL_STRING_value(aia, 0));
660 } 747 }
661 else 748 else
662 { 749 {
@@ -701,7 +788,7 @@ BIO_printf(err, "cert_status: received %d ids\n", sk_OCSP_RESPID_num(ids));
701 if (!OCSP_REQUEST_add_ext(req, ext, -1)) 788 if (!OCSP_REQUEST_add_ext(req, ext, -1))
702 goto err; 789 goto err;
703 } 790 }
704 resp = process_responder(err, req, host, path, port, use_ssl, 791 resp = process_responder(err, req, host, path, port, use_ssl, NULL,
705 srctx->timeout); 792 srctx->timeout);
706 if (!resp) 793 if (!resp)
707 { 794 {
@@ -740,6 +827,7 @@ BIO_printf(err, "cert_status: received %d ids\n", sk_OCSP_RESPID_num(ids));
740 goto done; 827 goto done;
741 } 828 }
742#endif 829#endif
830
743int MAIN(int, char **); 831int MAIN(int, char **);
744 832
745#ifndef OPENSSL_NO_JPAKE 833#ifndef OPENSSL_NO_JPAKE
@@ -748,8 +836,8 @@ static char *jpake_secret = NULL;
748 836
749int MAIN(int argc, char *argv[]) 837int MAIN(int argc, char *argv[])
750 { 838 {
751 X509_STORE *store = NULL; 839 X509_VERIFY_PARAM *vpm = NULL;
752 int vflags = 0; 840 int badarg = 0;
753 short port=PORT; 841 short port=PORT;
754 char *CApath=NULL,*CAfile=NULL; 842 char *CApath=NULL,*CAfile=NULL;
755 unsigned char *context = NULL; 843 unsigned char *context = NULL;
@@ -762,8 +850,8 @@ int MAIN(int argc, char *argv[])
762 int off=0; 850 int off=0;
763 int no_tmp_rsa=0,no_dhe=0,no_ecdhe=0,nocert=0; 851 int no_tmp_rsa=0,no_dhe=0,no_ecdhe=0,nocert=0;
764 int state=0; 852 int state=0;
765 SSL_METHOD *meth=NULL; 853 const SSL_METHOD *meth=NULL;
766 int socket_type=SOCK_STREAM; 854 int socket_type=SOCK_STREAM;
767 ENGINE *e=NULL; 855 ENGINE *e=NULL;
768 char *inrand=NULL; 856 char *inrand=NULL;
769 int s_cert_format = FORMAT_PEM, s_key_format = FORMAT_PEM; 857 int s_cert_format = FORMAT_PEM, s_key_format = FORMAT_PEM;
@@ -772,6 +860,7 @@ int MAIN(int argc, char *argv[])
772 int s_dcert_format = FORMAT_PEM, s_dkey_format = FORMAT_PEM; 860 int s_dcert_format = FORMAT_PEM, s_dkey_format = FORMAT_PEM;
773 X509 *s_cert = NULL, *s_dcert = NULL; 861 X509 *s_cert = NULL, *s_dcert = NULL;
774 EVP_PKEY *s_key = NULL, *s_dkey = NULL; 862 EVP_PKEY *s_key = NULL, *s_dkey = NULL;
863 int no_cache = 0;
775#ifndef OPENSSL_NO_TLSEXT 864#ifndef OPENSSL_NO_TLSEXT
776 EVP_PKEY *s_key2 = NULL; 865 EVP_PKEY *s_key2 = NULL;
777 X509 *s_cert2 = NULL; 866 X509 *s_cert2 = NULL;
@@ -779,7 +868,10 @@ int MAIN(int argc, char *argv[])
779#ifndef OPENSSL_NO_TLSEXT 868#ifndef OPENSSL_NO_TLSEXT
780 tlsextctx tlsextcbp = {NULL, NULL, SSL_TLSEXT_ERR_ALERT_WARNING}; 869 tlsextctx tlsextcbp = {NULL, NULL, SSL_TLSEXT_ERR_ALERT_WARNING};
781#endif 870#endif
782 871#ifndef OPENSSL_NO_PSK
872 /* by default do not send a PSK identity hint */
873 static char *psk_identity_hint=NULL;
874#endif
783#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3) 875#if !defined(OPENSSL_NO_SSL2) && !defined(OPENSSL_NO_SSL3)
784 meth=SSLv23_server_method(); 876 meth=SSLv23_server_method();
785#elif !defined(OPENSSL_NO_SSL3) 877#elif !defined(OPENSSL_NO_SSL3)
@@ -911,16 +1003,20 @@ int MAIN(int argc, char *argv[])
911 if (--argc < 1) goto bad; 1003 if (--argc < 1) goto bad;
912 CApath= *(++argv); 1004 CApath= *(++argv);
913 } 1005 }
914 else if (strcmp(*argv,"-crl_check") == 0) 1006 else if (strcmp(*argv,"-no_cache") == 0)
915 { 1007 no_cache = 1;
916 vflags |= X509_V_FLAG_CRL_CHECK; 1008 else if (args_verify(&argv, &argc, &badarg, bio_err, &vpm))
917 }
918 else if (strcmp(*argv,"-crl_check_all") == 0)
919 { 1009 {
920 vflags |= X509_V_FLAG_CRL_CHECK|X509_V_FLAG_CRL_CHECK_ALL; 1010 if (badarg)
1011 goto bad;
1012 continue;
921 } 1013 }
1014 else if (strcmp(*argv,"-verify_return_error") == 0)
1015 verify_return_error = 1;
922 else if (strcmp(*argv,"-serverpref") == 0) 1016 else if (strcmp(*argv,"-serverpref") == 0)
923 { off|=SSL_OP_CIPHER_SERVER_PREFERENCE; } 1017 { off|=SSL_OP_CIPHER_SERVER_PREFERENCE; }
1018 else if (strcmp(*argv,"-legacy_renegotiation") == 0)
1019 off|=SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
924 else if (strcmp(*argv,"-cipher") == 0) 1020 else if (strcmp(*argv,"-cipher") == 0)
925 { 1021 {
926 if (--argc < 1) goto bad; 1022 if (--argc < 1) goto bad;
@@ -993,6 +1089,27 @@ int MAIN(int argc, char *argv[])
993 { no_dhe=1; } 1089 { no_dhe=1; }
994 else if (strcmp(*argv,"-no_ecdhe") == 0) 1090 else if (strcmp(*argv,"-no_ecdhe") == 0)
995 { no_ecdhe=1; } 1091 { no_ecdhe=1; }
1092#ifndef OPENSSL_NO_PSK
1093 else if (strcmp(*argv,"-psk_hint") == 0)
1094 {
1095 if (--argc < 1) goto bad;
1096 psk_identity_hint= *(++argv);
1097 }
1098 else if (strcmp(*argv,"-psk") == 0)
1099 {
1100 size_t i;
1101
1102 if (--argc < 1) goto bad;
1103 psk_key=*(++argv);
1104 for (i=0; i<strlen(psk_key); i++)
1105 {
1106 if (isxdigit((int)psk_key[i]))
1107 continue;
1108 BIO_printf(bio_err,"Not a hex number '%s'\n",*argv);
1109 goto bad;
1110 }
1111 }
1112#endif
996 else if (strcmp(*argv,"-www") == 0) 1113 else if (strcmp(*argv,"-www") == 0)
997 { www=1; } 1114 { www=1; }
998 else if (strcmp(*argv,"-WWW") == 0) 1115 else if (strcmp(*argv,"-WWW") == 0)
@@ -1005,6 +1122,8 @@ int MAIN(int argc, char *argv[])
1005 { off|=SSL_OP_NO_SSLv3; } 1122 { off|=SSL_OP_NO_SSLv3; }
1006 else if (strcmp(*argv,"-no_tls1") == 0) 1123 else if (strcmp(*argv,"-no_tls1") == 0)
1007 { off|=SSL_OP_NO_TLSv1; } 1124 { off|=SSL_OP_NO_TLSv1; }
1125 else if (strcmp(*argv,"-no_comp") == 0)
1126 { off|=SSL_OP_NO_COMPRESSION; }
1008#ifndef OPENSSL_NO_TLSEXT 1127#ifndef OPENSSL_NO_TLSEXT
1009 else if (strcmp(*argv,"-no_ticket") == 0) 1128 else if (strcmp(*argv,"-no_ticket") == 0)
1010 { off|=SSL_OP_NO_TICKET; } 1129 { off|=SSL_OP_NO_TICKET; }
@@ -1032,7 +1151,7 @@ int MAIN(int argc, char *argv[])
1032 else if (strcmp(*argv,"-mtu") == 0) 1151 else if (strcmp(*argv,"-mtu") == 0)
1033 { 1152 {
1034 if (--argc < 1) goto bad; 1153 if (--argc < 1) goto bad;
1035 mtu = atol(*(++argv)); 1154 socket_mtu = atol(*(++argv));
1036 } 1155 }
1037 else if (strcmp(*argv, "-chain") == 0) 1156 else if (strcmp(*argv, "-chain") == 0)
1038 cert_chain = 1; 1157 cert_chain = 1;
@@ -1074,7 +1193,7 @@ int MAIN(int argc, char *argv[])
1074 } 1193 }
1075 1194
1076#endif 1195#endif
1077#ifndef OPENSSL_NO_JPAKE 1196#if !defined(OPENSSL_NO_JPAKE) && !defined(OPENSSL_NO_PSK)
1078 else if (strcmp(*argv,"-jpake") == 0) 1197 else if (strcmp(*argv,"-jpake") == 0)
1079 { 1198 {
1080 if (--argc < 1) goto bad; 1199 if (--argc < 1) goto bad;
@@ -1097,6 +1216,26 @@ bad:
1097 goto end; 1216 goto end;
1098 } 1217 }
1099 1218
1219#if !defined(OPENSSL_NO_JPAKE) && !defined(OPENSSL_NO_PSK)
1220 if (jpake_secret)
1221 {
1222 if (psk_key)
1223 {
1224 BIO_printf(bio_err,
1225 "Can't use JPAKE and PSK together\n");
1226 goto end;
1227 }
1228 psk_identity = "JPAKE";
1229 if (cipher)
1230 {
1231 BIO_printf(bio_err, "JPAKE sets cipher to PSK\n");
1232 goto end;
1233 }
1234 cipher = "PSK";
1235 }
1236
1237#endif
1238
1100 SSL_load_error_strings(); 1239 SSL_load_error_strings();
1101 OpenSSL_add_ssl_algorithms(); 1240 OpenSSL_add_ssl_algorithms();
1102 1241
@@ -1159,6 +1298,8 @@ bad:
1159 } 1298 }
1160#endif 1299#endif
1161 } 1300 }
1301
1302
1162 if (s_dcert_file) 1303 if (s_dcert_file)
1163 { 1304 {
1164 1305
@@ -1253,8 +1394,10 @@ bad:
1253 if (socket_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx, 1); 1394 if (socket_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx, 1);
1254 1395
1255 if (state) SSL_CTX_set_info_callback(ctx,apps_ssl_info_callback); 1396 if (state) SSL_CTX_set_info_callback(ctx,apps_ssl_info_callback);
1256 1397 if (no_cache)
1257 SSL_CTX_sess_set_cache_size(ctx,128); 1398 SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_OFF);
1399 else
1400 SSL_CTX_sess_set_cache_size(ctx,128);
1258 1401
1259#if 0 1402#if 0
1260 if (cipher == NULL) cipher=getenv("SSL_CIPHER"); 1403 if (cipher == NULL) cipher=getenv("SSL_CIPHER");
@@ -1275,8 +1418,9 @@ bad:
1275 ERR_print_errors(bio_err); 1418 ERR_print_errors(bio_err);
1276 /* goto end; */ 1419 /* goto end; */
1277 } 1420 }
1278 store = SSL_CTX_get_cert_store(ctx); 1421 if (vpm)
1279 X509_STORE_set_flags(store, vflags); 1422 SSL_CTX_set1_param(ctx, vpm);
1423
1280#ifndef OPENSSL_NO_TLSEXT 1424#ifndef OPENSSL_NO_TLSEXT
1281 if (s_cert2) 1425 if (s_cert2)
1282 { 1426 {
@@ -1312,28 +1456,28 @@ bad:
1312 if (bugs) SSL_CTX_set_options(ctx2,SSL_OP_ALL); 1456 if (bugs) SSL_CTX_set_options(ctx2,SSL_OP_ALL);
1313 if (hack) SSL_CTX_set_options(ctx2,SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG); 1457 if (hack) SSL_CTX_set_options(ctx2,SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG);
1314 SSL_CTX_set_options(ctx2,off); 1458 SSL_CTX_set_options(ctx2,off);
1315
1316 /* DTLS: partial reads end up discarding unread UDP bytes :-( 1459 /* DTLS: partial reads end up discarding unread UDP bytes :-(
1317 * Setting read ahead solves this problem. 1460 * Setting read ahead solves this problem.
1318 */ 1461 */
1319 if (socket_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx2, 1); 1462 if (socket_type == SOCK_DGRAM) SSL_CTX_set_read_ahead(ctx2, 1);
1320 1463
1321
1322 if (state) SSL_CTX_set_info_callback(ctx2,apps_ssl_info_callback); 1464 if (state) SSL_CTX_set_info_callback(ctx2,apps_ssl_info_callback);
1323 1465
1324 SSL_CTX_sess_set_cache_size(ctx2,128); 1466 if (no_cache)
1467 SSL_CTX_set_session_cache_mode(ctx2,SSL_SESS_CACHE_OFF);
1468 else
1469 SSL_CTX_sess_set_cache_size(ctx2,128);
1325 1470
1326 if ((!SSL_CTX_load_verify_locations(ctx2,CAfile,CApath)) || 1471 if ((!SSL_CTX_load_verify_locations(ctx2,CAfile,CApath)) ||
1327 (!SSL_CTX_set_default_verify_paths(ctx2))) 1472 (!SSL_CTX_set_default_verify_paths(ctx2)))
1328 { 1473 {
1329 ERR_print_errors(bio_err); 1474 ERR_print_errors(bio_err);
1330 } 1475 }
1331 store = SSL_CTX_get_cert_store(ctx2); 1476 if (vpm)
1332 X509_STORE_set_flags(store, vflags); 1477 SSL_CTX_set1_param(ctx2, vpm);
1333 } 1478 }
1334#endif 1479#endif
1335 1480
1336
1337#ifndef OPENSSL_NO_DH 1481#ifndef OPENSSL_NO_DH
1338 if (!no_dhe) 1482 if (!no_dhe)
1339 { 1483 {
@@ -1409,10 +1553,10 @@ bad:
1409 else 1553 else
1410 { 1554 {
1411 BIO_printf(bio_s_out,"Using default temp ECDH parameters\n"); 1555 BIO_printf(bio_s_out,"Using default temp ECDH parameters\n");
1412 ecdh = EC_KEY_new_by_curve_name(NID_sect163r2); 1556 ecdh = EC_KEY_new_by_curve_name(NID_X9_62_prime256v1);
1413 if (ecdh == NULL) 1557 if (ecdh == NULL)
1414 { 1558 {
1415 BIO_printf(bio_err, "unable to create curve (sect163r2)\n"); 1559 BIO_printf(bio_err, "unable to create curve (nistp256)\n");
1416 goto end; 1560 goto end;
1417 } 1561 }
1418 } 1562 }
@@ -1447,7 +1591,7 @@ bad:
1447#ifndef OPENSSL_NO_TLSEXT 1591#ifndef OPENSSL_NO_TLSEXT
1448 if (ctx2) 1592 if (ctx2)
1449 SSL_CTX_set_tmp_rsa_callback(ctx2,tmp_rsa_cb); 1593 SSL_CTX_set_tmp_rsa_callback(ctx2,tmp_rsa_cb);
1450#endif 1594#endif
1451 } 1595 }
1452#else 1596#else
1453 if (!no_tmp_rsa && SSL_CTX_need_tmp_RSA(ctx)) 1597 if (!no_tmp_rsa && SSL_CTX_need_tmp_RSA(ctx))
@@ -1480,11 +1624,34 @@ bad:
1480#endif 1624#endif
1481#endif 1625#endif
1482 1626
1483 if (cipher != NULL) 1627#ifndef OPENSSL_NO_PSK
1484 if(!SSL_CTX_set_cipher_list(ctx,cipher)) { 1628#ifdef OPENSSL_NO_JPAKE
1485 BIO_printf(bio_err,"error setting cipher list\n"); 1629 if (psk_key != NULL)
1630#else
1631 if (psk_key != NULL || jpake_secret)
1632#endif
1633 {
1634 if (s_debug)
1635 BIO_printf(bio_s_out, "PSK key given or JPAKE in use, setting server callback\n");
1636 SSL_CTX_set_psk_server_callback(ctx, psk_server_cb);
1637 }
1638
1639 if (!SSL_CTX_use_psk_identity_hint(ctx, psk_identity_hint))
1640 {
1641 BIO_printf(bio_err,"error setting PSK identity hint to context\n");
1486 ERR_print_errors(bio_err); 1642 ERR_print_errors(bio_err);
1487 goto end; 1643 goto end;
1644 }
1645#endif
1646
1647 if (cipher != NULL)
1648 {
1649 if(!SSL_CTX_set_cipher_list(ctx,cipher))
1650 {
1651 BIO_printf(bio_err,"error setting cipher list\n");
1652 ERR_print_errors(bio_err);
1653 goto end;
1654 }
1488#ifndef OPENSSL_NO_TLSEXT 1655#ifndef OPENSSL_NO_TLSEXT
1489 if (ctx2 && !SSL_CTX_set_cipher_list(ctx2,cipher)) 1656 if (ctx2 && !SSL_CTX_set_cipher_list(ctx2,cipher))
1490 { 1657 {
@@ -1493,11 +1660,15 @@ bad:
1493 goto end; 1660 goto end;
1494 } 1661 }
1495#endif 1662#endif
1496 } 1663 }
1497 SSL_CTX_set_verify(ctx,s_server_verify,verify_callback); 1664 SSL_CTX_set_verify(ctx,s_server_verify,verify_callback);
1498 SSL_CTX_set_session_id_context(ctx,(void*)&s_server_session_id_context, 1665 SSL_CTX_set_session_id_context(ctx,(void*)&s_server_session_id_context,
1499 sizeof s_server_session_id_context); 1666 sizeof s_server_session_id_context);
1500 1667
1668 /* Set DTLS cookie generation and verification callbacks */
1669 SSL_CTX_set_cookie_generate_cb(ctx, generate_cookie_callback);
1670 SSL_CTX_set_cookie_verify_cb(ctx, verify_cookie_callback);
1671
1501#ifndef OPENSSL_NO_TLSEXT 1672#ifndef OPENSSL_NO_TLSEXT
1502 if (ctx2) 1673 if (ctx2)
1503 { 1674 {
@@ -1512,6 +1683,7 @@ bad:
1512 SSL_CTX_set_tlsext_servername_arg(ctx, &tlsextcbp); 1683 SSL_CTX_set_tlsext_servername_arg(ctx, &tlsextcbp);
1513 } 1684 }
1514#endif 1685#endif
1686
1515 if (CAfile != NULL) 1687 if (CAfile != NULL)
1516 { 1688 {
1517 SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(CAfile)); 1689 SSL_CTX_set_client_CA_list(ctx,SSL_load_client_CA_file(CAfile));
@@ -1520,7 +1692,9 @@ bad:
1520 SSL_CTX_set_client_CA_list(ctx2,SSL_load_client_CA_file(CAfile)); 1692 SSL_CTX_set_client_CA_list(ctx2,SSL_load_client_CA_file(CAfile));
1521#endif 1693#endif
1522 } 1694 }
1695
1523 BIO_printf(bio_s_out,"ACCEPT\n"); 1696 BIO_printf(bio_s_out,"ACCEPT\n");
1697 (void)BIO_flush(bio_s_out);
1524 if (www) 1698 if (www)
1525 do_server(port,socket_type,&accept_socket,www_body, context); 1699 do_server(port,socket_type,&accept_socket,www_body, context);
1526 else 1700 else
@@ -1591,8 +1765,11 @@ static int sv_body(char *hostname, int s, unsigned char *context)
1591 unsigned long l; 1765 unsigned long l;
1592 SSL *con=NULL; 1766 SSL *con=NULL;
1593 BIO *sbio; 1767 BIO *sbio;
1594#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) 1768 struct timeval timeout;
1769#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS_R5)
1595 struct timeval tv; 1770 struct timeval tv;
1771#else
1772 struct timeval *timeoutp;
1596#endif 1773#endif
1597 1774
1598 if ((buf=OPENSSL_malloc(bufsize)) == NULL) 1775 if ((buf=OPENSSL_malloc(bufsize)) == NULL)
@@ -1641,14 +1818,18 @@ static int sv_body(char *hostname, int s, unsigned char *context)
1641 strlen((char *)context)); 1818 strlen((char *)context));
1642 } 1819 }
1643 SSL_clear(con); 1820 SSL_clear(con);
1821#if 0
1822#ifdef TLSEXT_TYPE_opaque_prf_input
1823 SSL_set_tlsext_opaque_prf_input(con, "Test server", 11);
1824#endif
1825#endif
1644 1826
1645 if (SSL_version(con) == DTLS1_VERSION) 1827 if (SSL_version(con) == DTLS1_VERSION)
1646 { 1828 {
1647 struct timeval timeout;
1648 1829
1649 sbio=BIO_new_dgram(s,BIO_NOCLOSE); 1830 sbio=BIO_new_dgram(s,BIO_NOCLOSE);
1650 1831
1651 if ( enable_timeouts) 1832 if (enable_timeouts)
1652 { 1833 {
1653 timeout.tv_sec = 0; 1834 timeout.tv_sec = 0;
1654 timeout.tv_usec = DGRAM_RCV_TIMEOUT; 1835 timeout.tv_usec = DGRAM_RCV_TIMEOUT;
@@ -1659,11 +1840,10 @@ static int sv_body(char *hostname, int s, unsigned char *context)
1659 BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout); 1840 BIO_ctrl(sbio, BIO_CTRL_DGRAM_SET_SEND_TIMEOUT, 0, &timeout);
1660 } 1841 }
1661 1842
1662 1843 if (socket_mtu > 28)
1663 if ( mtu > 0)
1664 { 1844 {
1665 SSL_set_options(con, SSL_OP_NO_QUERY_MTU); 1845 SSL_set_options(con, SSL_OP_NO_QUERY_MTU);
1666 SSL_set_mtu(con, mtu); 1846 SSL_set_mtu(con, socket_mtu - 28);
1667 } 1847 }
1668 else 1848 else
1669 /* want to do MTU discovery */ 1849 /* want to do MTU discovery */
@@ -1722,10 +1902,10 @@ static int sv_body(char *hostname, int s, unsigned char *context)
1722 if (!read_from_sslcon) 1902 if (!read_from_sslcon)
1723 { 1903 {
1724 FD_ZERO(&readfds); 1904 FD_ZERO(&readfds);
1725#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE) 1905#if !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_BEOS_R5)
1726 FD_SET(fileno(stdin),&readfds); 1906 openssl_fdset(fileno(stdin),&readfds);
1727#endif 1907#endif
1728 FD_SET(s,&readfds); 1908 openssl_fdset(s,&readfds);
1729 /* Note: under VMS with SOCKETSHR the second parameter is 1909 /* Note: under VMS with SOCKETSHR the second parameter is
1730 * currently of type (int *) whereas under other systems 1910 * currently of type (int *) whereas under other systems
1731 * it is (void *) if you don't have a cast it will choke 1911 * it is (void *) if you don't have a cast it will choke
@@ -1744,8 +1924,31 @@ static int sv_body(char *hostname, int s, unsigned char *context)
1744 if((i < 0) || (!i && !_kbhit() ) )continue; 1924 if((i < 0) || (!i && !_kbhit() ) )continue;
1745 if(_kbhit()) 1925 if(_kbhit())
1746 read_from_terminal = 1; 1926 read_from_terminal = 1;
1927#elif defined(OPENSSL_SYS_BEOS_R5)
1928 /* Under BeOS-R5 the situation is similar to DOS */
1929 tv.tv_sec = 1;
1930 tv.tv_usec = 0;
1931 (void)fcntl(fileno(stdin), F_SETFL, O_NONBLOCK);
1932 i=select(width,(void *)&readfds,NULL,NULL,&tv);
1933 if ((i < 0) || (!i && read(fileno(stdin), buf, 0) < 0))
1934 continue;
1935 if (read(fileno(stdin), buf, 0) >= 0)
1936 read_from_terminal = 1;
1937 (void)fcntl(fileno(stdin), F_SETFL, 0);
1747#else 1938#else
1748 i=select(width,(void *)&readfds,NULL,NULL,NULL); 1939 if ((SSL_version(con) == DTLS1_VERSION) &&
1940 DTLSv1_get_timeout(con, &timeout))
1941 timeoutp = &timeout;
1942 else
1943 timeoutp = NULL;
1944
1945 i=select(width,(void *)&readfds,NULL,NULL,timeoutp);
1946
1947 if ((SSL_version(con) == DTLS1_VERSION) && DTLSv1_handle_timeout(con) > 0)
1948 {
1949 BIO_printf(bio_err,"TIMEOUT occured\n");
1950 }
1951
1749 if (i <= 0) continue; 1952 if (i <= 0) continue;
1750 if (FD_ISSET(fileno(stdin),&readfds)) 1953 if (FD_ISSET(fileno(stdin),&readfds))
1751 read_from_terminal = 1; 1954 read_from_terminal = 1;
@@ -1759,7 +1962,7 @@ static int sv_body(char *hostname, int s, unsigned char *context)
1759 { 1962 {
1760 int j, lf_num; 1963 int j, lf_num;
1761 1964
1762 i=read(fileno(stdin), buf, bufsize/2); 1965 i=raw_read_stdin(buf, bufsize/2);
1763 lf_num = 0; 1966 lf_num = 0;
1764 /* both loops are skipped when i <= 0 */ 1967 /* both loops are skipped when i <= 0 */
1765 for (j = 0; j < i; j++) 1968 for (j = 0; j < i; j++)
@@ -1778,7 +1981,7 @@ static int sv_body(char *hostname, int s, unsigned char *context)
1778 assert(lf_num == 0); 1981 assert(lf_num == 0);
1779 } 1982 }
1780 else 1983 else
1781 i=read(fileno(stdin),buf,bufsize); 1984 i=raw_read_stdin(buf,bufsize);
1782 if (!s_quiet) 1985 if (!s_quiet)
1783 { 1986 {
1784 if ((i <= 0) || (buf[0] == 'Q')) 1987 if ((i <= 0) || (buf[0] == 'Q'))
@@ -1798,6 +2001,7 @@ static int sv_body(char *hostname, int s, unsigned char *context)
1798 ret= -11;*/ 2001 ret= -11;*/
1799 goto err; 2002 goto err;
1800 } 2003 }
2004
1801 if ((buf[0] == 'r') && 2005 if ((buf[0] == 'r') &&
1802 ((buf[1] == '\n') || (buf[1] == '\r'))) 2006 ((buf[1] == '\n') || (buf[1] == '\r')))
1803 { 2007 {
@@ -1894,7 +2098,7 @@ again:
1894#ifdef CHARSET_EBCDIC 2098#ifdef CHARSET_EBCDIC
1895 ascii2ebcdic(buf,buf,i); 2099 ascii2ebcdic(buf,buf,i);
1896#endif 2100#endif
1897 write(fileno(stdout),buf, 2101 raw_write_stdout(buf,
1898 (unsigned int)i); 2102 (unsigned int)i);
1899 if (SSL_pending(con)) goto again; 2103 if (SSL_pending(con)) goto again;
1900 break; 2104 break;
@@ -1918,13 +2122,16 @@ again:
1918 } 2122 }
1919 } 2123 }
1920err: 2124err:
1921 BIO_printf(bio_s_out,"shutting down SSL\n"); 2125 if (con != NULL)
2126 {
2127 BIO_printf(bio_s_out,"shutting down SSL\n");
1922#if 1 2128#if 1
1923 SSL_set_shutdown(con,SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN); 2129 SSL_set_shutdown(con,SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN);
1924#else 2130#else
1925 SSL_shutdown(con); 2131 SSL_shutdown(con);
1926#endif 2132#endif
1927 if (con != NULL) SSL_free(con); 2133 SSL_free(con);
2134 }
1928 BIO_printf(bio_s_out,"CONNECTION CLOSED\n"); 2135 BIO_printf(bio_s_out,"CONNECTION CLOSED\n");
1929 if (buf != NULL) 2136 if (buf != NULL)
1930 { 2137 {
@@ -2002,6 +2209,8 @@ static int init_ssl_connection(SSL *con)
2002 con->kssl_ctx->client_princ); 2209 con->kssl_ctx->client_princ);
2003 } 2210 }
2004#endif /* OPENSSL_NO_KRB5 */ 2211#endif /* OPENSSL_NO_KRB5 */
2212 BIO_printf(bio_s_out, "Secure Renegotiation IS%s supported\n",
2213 SSL_get_secure_renegotiation_support(con) ? "" : " NOT");
2005 return(1); 2214 return(1);
2006 } 2215 }
2007 2216
@@ -2046,9 +2255,8 @@ static int www_body(char *hostname, int s, unsigned char *context)
2046 char *buf=NULL; 2255 char *buf=NULL;
2047 int ret=1; 2256 int ret=1;
2048 int i,j,k,blank,dot; 2257 int i,j,k,blank,dot;
2049 struct stat st_buf;
2050 SSL *con; 2258 SSL *con;
2051 SSL_CIPHER *c; 2259 const SSL_CIPHER *c;
2052 BIO *io,*ssl_bio,*sbio; 2260 BIO *io,*ssl_bio,*sbio;
2053 long total_bytes; 2261 long total_bytes;
2054 2262
@@ -2318,14 +2526,7 @@ static int www_body(char *hostname, int s, unsigned char *context)
2318#endif 2526#endif
2319 2527
2320 /* if a directory, do the index thang */ 2528 /* if a directory, do the index thang */
2321 if (stat(p,&st_buf) < 0) 2529 if (app_isdir(p)>0)
2322 {
2323 BIO_puts(io,text);
2324 BIO_printf(io,"Error accessing '%s'\r\n",p);
2325 ERR_print_errors(io);
2326 break;
2327 }
2328 if (S_ISDIR(st_buf.st_mode))
2329 { 2530 {
2330#if 0 /* must check buffer size */ 2531#if 0 /* must check buffer size */
2331 strcat(p,"/index.html"); 2532 strcat(p,"/index.html");
diff --git a/src/lib/libssl/src/apps/s_socket.c b/src/lib/libssl/src/apps/s_socket.c
index 4a922e16a0..6b8713de60 100644
--- a/src/lib/libssl/src/apps/s_socket.c
+++ b/src/lib/libssl/src/apps/s_socket.c
@@ -62,6 +62,12 @@
62#include <errno.h> 62#include <errno.h>
63#include <signal.h> 63#include <signal.h>
64 64
65#ifdef FLAT_INC
66#include "e_os2.h"
67#else
68#include "../e_os2.h"
69#endif
70
65/* With IPv6, it looks like Digital has mixed up the proper order of 71/* With IPv6, it looks like Digital has mixed up the proper order of
66 recursive header file inclusion, resulting in the compiler complaining 72 recursive header file inclusion, resulting in the compiler complaining
67 that u_int isn't defined, but only if _POSIX_C_SOURCE is defined, which 73 that u_int isn't defined, but only if _POSIX_C_SOURCE is defined, which
@@ -231,13 +237,11 @@ static int ssl_sock_init(void)
231int init_client(int *sock, char *host, int port, int type) 237int init_client(int *sock, char *host, int port, int type)
232 { 238 {
233 unsigned char ip[4]; 239 unsigned char ip[4];
234 short p=0;
235 240
236 if (!host_ip(host,&(ip[0]))) 241 if (!host_ip(host,&(ip[0])))
237 { 242 {
238 return(0); 243 return(0);
239 } 244 }
240 if (p != 0) port=p;
241 return(init_client_ip(sock,ip,port,type)); 245 return(init_client_ip(sock,ip,port,type));
242 } 246 }
243 247
@@ -266,7 +270,7 @@ static int init_client_ip(int *sock, unsigned char ip[4], int port, int type)
266 270
267 if (s == INVALID_SOCKET) { perror("socket"); return(0); } 271 if (s == INVALID_SOCKET) { perror("socket"); return(0); }
268 272
269#ifndef OPENSSL_SYS_MPE 273#if defined(SO_KEEPALIVE) && !defined(OPENSSL_SYS_MPE)
270 if (type == SOCK_STREAM) 274 if (type == SOCK_STREAM)
271 { 275 {
272 i=0; 276 i=0;
@@ -276,7 +280,7 @@ static int init_client_ip(int *sock, unsigned char ip[4], int port, int type)
276#endif 280#endif
277 281
278 if (connect(s,(struct sockaddr *)&them,sizeof(them)) == -1) 282 if (connect(s,(struct sockaddr *)&them,sizeof(them)) == -1)
279 { close(s); perror("connect"); return(0); } 283 { closesocket(s); perror("connect"); return(0); }
280 *sock=s; 284 *sock=s;
281 return(1); 285 return(1);
282 } 286 }
@@ -285,7 +289,7 @@ int do_server(int port, int type, int *ret, int (*cb)(char *hostname, int s, uns
285 { 289 {
286 int sock; 290 int sock;
287 char *name = NULL; 291 char *name = NULL;
288 int accept_socket; 292 int accept_socket = 0;
289 int i; 293 int i;
290 294
291 if (!init_server(&accept_socket,port,type)) return(0); 295 if (!init_server(&accept_socket,port,type)) return(0);
diff --git a/src/lib/libssl/src/apps/s_time.c b/src/lib/libssl/src/apps/s_time.c
index 904945e1a8..b823c33c58 100644
--- a/src/lib/libssl/src/apps/s_time.c
+++ b/src/lib/libssl/src/apps/s_time.c
@@ -85,54 +85,6 @@
85#include OPENSSL_UNISTD 85#include OPENSSL_UNISTD
86#endif 86#endif
87 87
88#if !defined(OPENSSL_SYS_NETWARE) && !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC))
89#define TIMES
90#endif
91
92#ifndef _IRIX
93#include <time.h>
94#endif
95#ifdef TIMES
96#include <sys/types.h>
97#include <sys/times.h>
98#endif
99
100/* Depending on the VMS version, the tms structure is perhaps defined.
101 The __TMS macro will show if it was. If it wasn't defined, we should
102 undefine TIMES, since that tells the rest of the program how things
103 should be handled. -- Richard Levitte */
104#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
105#undef TIMES
106#endif
107
108#if !defined(TIMES) && !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE)
109#include <sys/timeb.h>
110#endif
111
112#if defined(sun) || defined(__ultrix)
113#define _POSIX_SOURCE
114#include <limits.h>
115#include <sys/param.h>
116#endif
117
118/* The following if from times(3) man page. It may need to be changed
119*/
120#ifndef HZ
121# ifdef _SC_CLK_TCK
122# define HZ ((double)sysconf(_SC_CLK_TCK))
123# else
124# ifndef CLK_TCK
125# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */
126# define HZ 100.0
127# else /* _BSD_CLK_TCK_ */
128# define HZ ((double)_BSD_CLK_TCK_)
129# endif
130# else /* CLK_TCK */
131# define HZ ((double)CLK_TCK)
132# endif
133# endif
134#endif
135
136#undef PROG 88#undef PROG
137#define PROG s_time_main 89#define PROG s_time_main
138 90
@@ -177,7 +129,7 @@ static char *tm_cipher=NULL;
177static int tm_verify = SSL_VERIFY_NONE; 129static int tm_verify = SSL_VERIFY_NONE;
178static int maxTime = SECONDS; 130static int maxTime = SECONDS;
179static SSL_CTX *tm_ctx=NULL; 131static SSL_CTX *tm_ctx=NULL;
180static SSL_METHOD *s_time_meth=NULL; 132static const SSL_METHOD *s_time_meth=NULL;
181static char *s_www_path=NULL; 133static char *s_www_path=NULL;
182static long bytes_read=0; 134static long bytes_read=0;
183static int st_bugs=0; 135static int st_bugs=0;
@@ -372,63 +324,8 @@ bad:
372 324
373static double tm_Time_F(int s) 325static double tm_Time_F(int s)
374 { 326 {
375 static double ret; 327 return app_tminterval(s,1);
376#ifdef TIMES
377 static struct tms tstart,tend;
378
379 if(s == START) {
380 times(&tstart);
381 return(0);
382 } else {
383 times(&tend);
384 ret=((double)(tend.tms_utime-tstart.tms_utime))/HZ;
385 return((ret == 0.0)?1e-6:ret);
386 } 328 }
387#elif defined(OPENSSL_SYS_NETWARE)
388 static clock_t tstart,tend;
389
390 if (s == START)
391 {
392 tstart=clock();
393 return(0);
394 }
395 else
396 {
397 tend=clock();
398 ret=(double)((double)(tend)-(double)(tstart));
399 return((ret < 0.001)?0.001:ret);
400 }
401#elif defined(OPENSSL_SYS_VXWORKS)
402 {
403 static unsigned long tick_start, tick_end;
404
405 if( s == START )
406 {
407 tick_start = tickGet();
408 return 0;
409 }
410 else
411 {
412 tick_end = tickGet();
413 ret = (double)(tick_end - tick_start) / (double)sysClkRateGet();
414 return((ret == 0.0)?1e-6:ret);
415 }
416 }
417#else /* !times() */
418 static struct timeb tstart,tend;
419 long i;
420
421 if(s == START) {
422 ftime(&tstart);
423 return(0);
424 } else {
425 ftime(&tend);
426 i=(long)tend.millitm-(long)tstart.millitm;
427 ret=((double)(tend.time-tstart.time))+((double)i)/1000.0;
428 return((ret == 0.0)?1e-6:ret);
429 }
430#endif
431}
432 329
433/*********************************************************************** 330/***********************************************************************
434 * MAIN - main processing area for client 331 * MAIN - main processing area for client
@@ -704,7 +601,7 @@ static SSL *doConnection(SSL *scon)
704 i=SSL_get_fd(serverCon); 601 i=SSL_get_fd(serverCon);
705 width=i+1; 602 width=i+1;
706 FD_ZERO(&readfds); 603 FD_ZERO(&readfds);
707 FD_SET(i,&readfds); 604 openssl_fdset(i,&readfds);
708 /* Note: under VMS with SOCKETSHR the 2nd parameter 605 /* Note: under VMS with SOCKETSHR the 2nd parameter
709 * is currently of type (int *) whereas under other 606 * is currently of type (int *) whereas under other
710 * systems it is (void *) if you don't have a cast it 607 * systems it is (void *) if you don't have a cast it
diff --git a/src/lib/libssl/src/apps/smime.c b/src/lib/libssl/src/apps/smime.c
index 75804b8d7b..c583f8a0e1 100644
--- a/src/lib/libssl/src/apps/smime.c
+++ b/src/lib/libssl/src/apps/smime.c
@@ -73,11 +73,14 @@ static int save_certs(char *signerfile, STACK_OF(X509) *signers);
73static int smime_cb(int ok, X509_STORE_CTX *ctx); 73static int smime_cb(int ok, X509_STORE_CTX *ctx);
74 74
75#define SMIME_OP 0x10 75#define SMIME_OP 0x10
76#define SMIME_IP 0x20
77#define SMIME_SIGNERS 0x40
76#define SMIME_ENCRYPT (1 | SMIME_OP) 78#define SMIME_ENCRYPT (1 | SMIME_OP)
77#define SMIME_DECRYPT 2 79#define SMIME_DECRYPT (2 | SMIME_IP)
78#define SMIME_SIGN (3 | SMIME_OP) 80#define SMIME_SIGN (3 | SMIME_OP | SMIME_SIGNERS)
79#define SMIME_VERIFY 4 81#define SMIME_VERIFY (4 | SMIME_IP)
80#define SMIME_PK7OUT 5 82#define SMIME_PK7OUT (5 | SMIME_IP | SMIME_OP)
83#define SMIME_RESIGN (6 | SMIME_IP | SMIME_OP | SMIME_SIGNERS)
81 84
82int MAIN(int, char **); 85int MAIN(int, char **);
83 86
@@ -90,6 +93,7 @@ int MAIN(int argc, char **argv)
90 const char *inmode = "r", *outmode = "w"; 93 const char *inmode = "r", *outmode = "w";
91 char *infile = NULL, *outfile = NULL; 94 char *infile = NULL, *outfile = NULL;
92 char *signerfile = NULL, *recipfile = NULL; 95 char *signerfile = NULL, *recipfile = NULL;
96 STACK_OF(OPENSSL_STRING) *sksigners = NULL, *skkeys = NULL;
93 char *certfile = NULL, *keyfile = NULL, *contfile=NULL; 97 char *certfile = NULL, *keyfile = NULL, *contfile=NULL;
94 const EVP_CIPHER *cipher = NULL; 98 const EVP_CIPHER *cipher = NULL;
95 PKCS7 *p7 = NULL; 99 PKCS7 *p7 = NULL;
@@ -105,6 +109,8 @@ int MAIN(int argc, char **argv)
105 char *passargin = NULL, *passin = NULL; 109 char *passargin = NULL, *passin = NULL;
106 char *inrand = NULL; 110 char *inrand = NULL;
107 int need_rand = 0; 111 int need_rand = 0;
112 int indef = 0;
113 const EVP_MD *sign_md = NULL;
108 int informat = FORMAT_SMIME, outformat = FORMAT_SMIME; 114 int informat = FORMAT_SMIME, outformat = FORMAT_SMIME;
109 int keyform = FORMAT_PEM; 115 int keyform = FORMAT_PEM;
110#ifndef OPENSSL_NO_ENGINE 116#ifndef OPENSSL_NO_ENGINE
@@ -135,6 +141,8 @@ int MAIN(int argc, char **argv)
135 operation = SMIME_DECRYPT; 141 operation = SMIME_DECRYPT;
136 else if (!strcmp (*args, "-sign")) 142 else if (!strcmp (*args, "-sign"))
137 operation = SMIME_SIGN; 143 operation = SMIME_SIGN;
144 else if (!strcmp (*args, "-resign"))
145 operation = SMIME_RESIGN;
138 else if (!strcmp (*args, "-verify")) 146 else if (!strcmp (*args, "-verify"))
139 operation = SMIME_VERIFY; 147 operation = SMIME_VERIFY;
140 else if (!strcmp (*args, "-pk7out")) 148 else if (!strcmp (*args, "-pk7out"))
@@ -193,205 +201,209 @@ int MAIN(int argc, char **argv)
193 flags |= PKCS7_BINARY; 201 flags |= PKCS7_BINARY;
194 else if (!strcmp (*args, "-nosigs")) 202 else if (!strcmp (*args, "-nosigs"))
195 flags |= PKCS7_NOSIGS; 203 flags |= PKCS7_NOSIGS;
204 else if (!strcmp (*args, "-stream"))
205 indef = 1;
206 else if (!strcmp (*args, "-indef"))
207 indef = 1;
208 else if (!strcmp (*args, "-noindef"))
209 indef = 0;
196 else if (!strcmp (*args, "-nooldmime")) 210 else if (!strcmp (*args, "-nooldmime"))
197 flags |= PKCS7_NOOLDMIMETYPE; 211 flags |= PKCS7_NOOLDMIMETYPE;
198 else if (!strcmp (*args, "-crlfeol")) 212 else if (!strcmp (*args, "-crlfeol"))
199 flags |= PKCS7_CRLFEOL; 213 flags |= PKCS7_CRLFEOL;
200 else if (!strcmp(*args,"-rand")) 214 else if (!strcmp(*args,"-rand"))
201 { 215 {
202 if (args[1]) 216 if (!args[1])
203 { 217 goto argerr;
204 args++; 218 args++;
205 inrand = *args; 219 inrand = *args;
206 }
207 else
208 badarg = 1;
209 need_rand = 1; 220 need_rand = 1;
210 } 221 }
211#ifndef OPENSSL_NO_ENGINE 222#ifndef OPENSSL_NO_ENGINE
212 else if (!strcmp(*args,"-engine")) 223 else if (!strcmp(*args,"-engine"))
213 { 224 {
214 if (args[1]) 225 if (!args[1])
215 { 226 goto argerr;
216 args++; 227 engine = *++args;
217 engine = *args;
218 }
219 else badarg = 1;
220 } 228 }
221#endif 229#endif
222 else if (!strcmp(*args,"-passin")) 230 else if (!strcmp(*args,"-passin"))
223 { 231 {
224 if (args[1]) 232 if (!args[1])
225 { 233 goto argerr;
226 args++; 234 passargin = *++args;
227 passargin = *args;
228 }
229 else
230 badarg = 1;
231 } 235 }
232 else if (!strcmp (*args, "-to")) 236 else if (!strcmp (*args, "-to"))
233 { 237 {
234 if (args[1]) 238 if (!args[1])
235 { 239 goto argerr;
236 args++; 240 to = *++args;
237 to = *args;
238 }
239 else
240 badarg = 1;
241 } 241 }
242 else if (!strcmp (*args, "-from")) 242 else if (!strcmp (*args, "-from"))
243 { 243 {
244 if (args[1]) 244 if (!args[1])
245 { 245 goto argerr;
246 args++; 246 from = *++args;
247 from = *args;
248 }
249 else badarg = 1;
250 } 247 }
251 else if (!strcmp (*args, "-subject")) 248 else if (!strcmp (*args, "-subject"))
252 { 249 {
253 if (args[1]) 250 if (!args[1])
254 { 251 goto argerr;
255 args++; 252 subject = *++args;
256 subject = *args;
257 }
258 else
259 badarg = 1;
260 } 253 }
261 else if (!strcmp (*args, "-signer")) 254 else if (!strcmp (*args, "-signer"))
262 { 255 {
263 if (args[1]) 256 if (!args[1])
257 goto argerr;
258 /* If previous -signer argument add signer to list */
259
260 if (signerfile)
264 { 261 {
265 args++; 262 if (!sksigners)
266 signerfile = *args; 263 sksigners = sk_OPENSSL_STRING_new_null();
264 sk_OPENSSL_STRING_push(sksigners, signerfile);
265 if (!keyfile)
266 keyfile = signerfile;
267 if (!skkeys)
268 skkeys = sk_OPENSSL_STRING_new_null();
269 sk_OPENSSL_STRING_push(skkeys, keyfile);
270 keyfile = NULL;
267 } 271 }
268 else 272 signerfile = *++args;
269 badarg = 1;
270 } 273 }
271 else if (!strcmp (*args, "-recip")) 274 else if (!strcmp (*args, "-recip"))
272 { 275 {
273 if (args[1]) 276 if (!args[1])
277 goto argerr;
278 recipfile = *++args;
279 }
280 else if (!strcmp (*args, "-md"))
281 {
282 if (!args[1])
283 goto argerr;
284 sign_md = EVP_get_digestbyname(*++args);
285 if (sign_md == NULL)
274 { 286 {
275 args++; 287 BIO_printf(bio_err, "Unknown digest %s\n",
276 recipfile = *args; 288 *args);
289 goto argerr;
277 } 290 }
278 else badarg = 1;
279 } 291 }
280 else if (!strcmp (*args, "-inkey")) 292 else if (!strcmp (*args, "-inkey"))
281 { 293 {
282 if (args[1]) 294 if (!args[1])
295 goto argerr;
296 /* If previous -inkey arument add signer to list */
297 if (keyfile)
283 { 298 {
284 args++; 299 if (!signerfile)
285 keyfile = *args; 300 {
301 BIO_puts(bio_err, "Illegal -inkey without -signer\n");
302 goto argerr;
303 }
304 if (!sksigners)
305 sksigners = sk_OPENSSL_STRING_new_null();
306 sk_OPENSSL_STRING_push(sksigners, signerfile);
307 signerfile = NULL;
308 if (!skkeys)
309 skkeys = sk_OPENSSL_STRING_new_null();
310 sk_OPENSSL_STRING_push(skkeys, keyfile);
286 } 311 }
287 else 312 keyfile = *++args;
288 badarg = 1; 313 }
289 }
290 else if (!strcmp (*args, "-keyform")) 314 else if (!strcmp (*args, "-keyform"))
291 { 315 {
292 if (args[1]) 316 if (!args[1])
293 { 317 goto argerr;
294 args++; 318 keyform = str2fmt(*++args);
295 keyform = str2fmt(*args);
296 }
297 else
298 badarg = 1;
299 } 319 }
300 else if (!strcmp (*args, "-certfile")) 320 else if (!strcmp (*args, "-certfile"))
301 { 321 {
302 if (args[1]) 322 if (!args[1])
303 { 323 goto argerr;
304 args++; 324 certfile = *++args;
305 certfile = *args;
306 }
307 else
308 badarg = 1;
309 } 325 }
310 else if (!strcmp (*args, "-CAfile")) 326 else if (!strcmp (*args, "-CAfile"))
311 { 327 {
312 if (args[1]) 328 if (!args[1])
313 { 329 goto argerr;
314 args++; 330 CAfile = *++args;
315 CAfile = *args;
316 }
317 else
318 badarg = 1;
319 } 331 }
320 else if (!strcmp (*args, "-CApath")) 332 else if (!strcmp (*args, "-CApath"))
321 { 333 {
322 if (args[1]) 334 if (!args[1])
323 { 335 goto argerr;
324 args++; 336 CApath = *++args;
325 CApath = *args;
326 }
327 else
328 badarg = 1;
329 } 337 }
330 else if (!strcmp (*args, "-in")) 338 else if (!strcmp (*args, "-in"))
331 { 339 {
332 if (args[1]) 340 if (!args[1])
333 { 341 goto argerr;
334 args++; 342 infile = *++args;
335 infile = *args;
336 }
337 else
338 badarg = 1;
339 } 343 }
340 else if (!strcmp (*args, "-inform")) 344 else if (!strcmp (*args, "-inform"))
341 { 345 {
342 if (args[1]) 346 if (!args[1])
343 { 347 goto argerr;
344 args++; 348 informat = str2fmt(*++args);
345 informat = str2fmt(*args);
346 }
347 else
348 badarg = 1;
349 } 349 }
350 else if (!strcmp (*args, "-outform")) 350 else if (!strcmp (*args, "-outform"))
351 { 351 {
352 if (args[1]) 352 if (!args[1])
353 { 353 goto argerr;
354 args++; 354 outformat = str2fmt(*++args);
355 outformat = str2fmt(*args);
356 }
357 else
358 badarg = 1;
359 } 355 }
360 else if (!strcmp (*args, "-out")) 356 else if (!strcmp (*args, "-out"))
361 { 357 {
362 if (args[1]) 358 if (!args[1])
363 { 359 goto argerr;
364 args++; 360 outfile = *++args;
365 outfile = *args;
366 }
367 else
368 badarg = 1;
369 } 361 }
370 else if (!strcmp (*args, "-content")) 362 else if (!strcmp (*args, "-content"))
371 { 363 {
372 if (args[1]) 364 if (!args[1])
373 { 365 goto argerr;
374 args++; 366 contfile = *++args;
375 contfile = *args;
376 }
377 else
378 badarg = 1;
379 } 367 }
380 else if (args_verify(&args, NULL, &badarg, bio_err, &vpm)) 368 else if (args_verify(&args, NULL, &badarg, bio_err, &vpm))
381 continue; 369 continue;
382 else 370 else if ((cipher = EVP_get_cipherbyname(*args + 1)) == NULL)
383 badarg = 1; 371 badarg = 1;
384 args++; 372 args++;
385 } 373 }
386 374
375 if (!(operation & SMIME_SIGNERS) && (skkeys || sksigners))
376 {
377 BIO_puts(bio_err, "Multiple signers or keys not allowed\n");
378 goto argerr;
379 }
387 380
388 if (operation == SMIME_SIGN) 381 if (operation & SMIME_SIGNERS)
389 { 382 {
390 if (!signerfile) 383 /* Check to see if any final signer needs to be appended */
384 if (keyfile && !signerfile)
385 {
386 BIO_puts(bio_err, "Illegal -inkey without -signer\n");
387 goto argerr;
388 }
389 if (signerfile)
390 {
391 if (!sksigners)
392 sksigners = sk_OPENSSL_STRING_new_null();
393 sk_OPENSSL_STRING_push(sksigners, signerfile);
394 if (!skkeys)
395 skkeys = sk_OPENSSL_STRING_new_null();
396 if (!keyfile)
397 keyfile = signerfile;
398 sk_OPENSSL_STRING_push(skkeys, keyfile);
399 }
400 if (!sksigners)
391 { 401 {
392 BIO_printf(bio_err, "No signer certificate specified\n"); 402 BIO_printf(bio_err, "No signer certificate specified\n");
393 badarg = 1; 403 badarg = 1;
394 } 404 }
405 signerfile = NULL;
406 keyfile = NULL;
395 need_rand = 1; 407 need_rand = 1;
396 } 408 }
397 else if (operation == SMIME_DECRYPT) 409 else if (operation == SMIME_DECRYPT)
@@ -416,6 +428,7 @@ int MAIN(int argc, char **argv)
416 428
417 if (badarg) 429 if (badarg)
418 { 430 {
431 argerr:
419 BIO_printf (bio_err, "Usage smime [options] cert.pem ...\n"); 432 BIO_printf (bio_err, "Usage smime [options] cert.pem ...\n");
420 BIO_printf (bio_err, "where options are\n"); 433 BIO_printf (bio_err, "where options are\n");
421 BIO_printf (bio_err, "-encrypt encrypt message\n"); 434 BIO_printf (bio_err, "-encrypt encrypt message\n");
@@ -499,13 +512,11 @@ int MAIN(int argc, char **argv)
499 512
500 ret = 2; 513 ret = 2;
501 514
502 if (operation != SMIME_SIGN) 515 if (!(operation & SMIME_SIGNERS))
503 flags &= ~PKCS7_DETACHED; 516 flags &= ~PKCS7_DETACHED;
504 517
505 if (operation & SMIME_OP) 518 if (operation & SMIME_OP)
506 { 519 {
507 if (flags & PKCS7_BINARY)
508 inmode = "rb";
509 if (outformat == FORMAT_ASN1) 520 if (outformat == FORMAT_ASN1)
510 outmode = "wb"; 521 outmode = "wb";
511 } 522 }
@@ -513,9 +524,18 @@ int MAIN(int argc, char **argv)
513 { 524 {
514 if (flags & PKCS7_BINARY) 525 if (flags & PKCS7_BINARY)
515 outmode = "wb"; 526 outmode = "wb";
527 }
528
529 if (operation & SMIME_IP)
530 {
516 if (informat == FORMAT_ASN1) 531 if (informat == FORMAT_ASN1)
517 inmode = "rb"; 532 inmode = "rb";
518 } 533 }
534 else
535 {
536 if (flags & PKCS7_BINARY)
537 inmode = "rb";
538 }
519 539
520 if (operation == SMIME_ENCRYPT) 540 if (operation == SMIME_ENCRYPT)
521 { 541 {
@@ -545,26 +565,11 @@ int MAIN(int argc, char **argv)
545 } 565 }
546 } 566 }
547 567
548 if (signerfile && (operation == SMIME_SIGN))
549 {
550 if (!(signer = load_cert(bio_err,signerfile,FORMAT_PEM, NULL,
551 e, "signer certificate")))
552 {
553#if 0 /* An appropri message has already been printed */
554 BIO_printf(bio_err, "Can't read signer certificate file %s\n", signerfile);
555#endif
556 goto end;
557 }
558 }
559
560 if (certfile) 568 if (certfile)
561 { 569 {
562 if (!(other = load_certs(bio_err,certfile,FORMAT_PEM, NULL, 570 if (!(other = load_certs(bio_err,certfile,FORMAT_PEM, NULL,
563 e, "certificate file"))) 571 e, "certificate file")))
564 { 572 {
565#if 0 /* An appropriate message has already been printed */
566 BIO_printf(bio_err, "Can't read certificate file %s\n", certfile);
567#endif
568 ERR_print_errors(bio_err); 573 ERR_print_errors(bio_err);
569 goto end; 574 goto end;
570 } 575 }
@@ -575,9 +580,6 @@ int MAIN(int argc, char **argv)
575 if (!(recip = load_cert(bio_err,recipfile,FORMAT_PEM,NULL, 580 if (!(recip = load_cert(bio_err,recipfile,FORMAT_PEM,NULL,
576 e, "recipient certificate file"))) 581 e, "recipient certificate file")))
577 { 582 {
578#if 0 /* An appropriate message has alrady been printed */
579 BIO_printf(bio_err, "Can't read recipient certificate file %s\n", recipfile);
580#endif
581 ERR_print_errors(bio_err); 583 ERR_print_errors(bio_err);
582 goto end; 584 goto end;
583 } 585 }
@@ -615,6 +617,36 @@ int MAIN(int argc, char **argv)
615 else 617 else
616 in = BIO_new_fp(stdin, BIO_NOCLOSE); 618 in = BIO_new_fp(stdin, BIO_NOCLOSE);
617 619
620 if (operation & SMIME_IP)
621 {
622 if (informat == FORMAT_SMIME)
623 p7 = SMIME_read_PKCS7(in, &indata);
624 else if (informat == FORMAT_PEM)
625 p7 = PEM_read_bio_PKCS7(in, NULL, NULL, NULL);
626 else if (informat == FORMAT_ASN1)
627 p7 = d2i_PKCS7_bio(in, NULL);
628 else
629 {
630 BIO_printf(bio_err, "Bad input format for PKCS#7 file\n");
631 goto end;
632 }
633
634 if (!p7)
635 {
636 BIO_printf(bio_err, "Error reading S/MIME message\n");
637 goto end;
638 }
639 if (contfile)
640 {
641 BIO_free(indata);
642 if (!(indata = BIO_new_file(contfile, "rb")))
643 {
644 BIO_printf(bio_err, "Can't read content file %s\n", contfile);
645 goto end;
646 }
647 }
648 }
649
618 if (outfile) 650 if (outfile)
619 { 651 {
620 if (!(out = BIO_new_file(outfile, outmode))) 652 if (!(out = BIO_new_file(outfile, outmode)))
@@ -639,7 +671,7 @@ int MAIN(int argc, char **argv)
639 { 671 {
640 if (!(store = setup_verify(bio_err, CAfile, CApath))) 672 if (!(store = setup_verify(bio_err, CAfile, CApath)))
641 goto end; 673 goto end;
642 X509_STORE_set_verify_cb_func(store, smime_cb); 674 X509_STORE_set_verify_cb(store, smime_cb);
643 if (vpm) 675 if (vpm)
644 X509_STORE_set1_param(store, vpm); 676 X509_STORE_set1_param(store, vpm);
645 } 677 }
@@ -648,43 +680,58 @@ int MAIN(int argc, char **argv)
648 ret = 3; 680 ret = 3;
649 681
650 if (operation == SMIME_ENCRYPT) 682 if (operation == SMIME_ENCRYPT)
651 p7 = PKCS7_encrypt(encerts, in, cipher, flags);
652 else if (operation == SMIME_SIGN)
653 { 683 {
654 /* If detached data and SMIME output enable partial 684 if (indef)
655 * signing.
656 */
657 if ((flags & PKCS7_DETACHED) && (outformat == FORMAT_SMIME))
658 flags |= PKCS7_STREAM; 685 flags |= PKCS7_STREAM;
659 p7 = PKCS7_sign(signer, key, other, in, flags); 686 p7 = PKCS7_encrypt(encerts, in, cipher, flags);
660 } 687 }
661 else 688 else if (operation & SMIME_SIGNERS)
662 { 689 {
663 if (informat == FORMAT_SMIME) 690 int i;
664 p7 = SMIME_read_PKCS7(in, &indata); 691 /* If detached data content we only enable streaming if
665 else if (informat == FORMAT_PEM) 692 * S/MIME output format.
666 p7 = PEM_read_bio_PKCS7(in, NULL, NULL, NULL); 693 */
667 else if (informat == FORMAT_ASN1) 694 if (operation == SMIME_SIGN)
668 p7 = d2i_PKCS7_bio(in, NULL);
669 else
670 { 695 {
671 BIO_printf(bio_err, "Bad input format for PKCS#7 file\n"); 696 if (flags & PKCS7_DETACHED)
672 goto end; 697 {
698 if (outformat == FORMAT_SMIME)
699 flags |= PKCS7_STREAM;
700 }
701 else if (indef)
702 flags |= PKCS7_STREAM;
703 flags |= PKCS7_PARTIAL;
704 p7 = PKCS7_sign(NULL, NULL, other, in, flags);
705 if (!p7)
706 goto end;
673 } 707 }
674 708 else
675 if (!p7) 709 flags |= PKCS7_REUSE_DIGEST;
676 { 710 for (i = 0; i < sk_OPENSSL_STRING_num(sksigners); i++)
677 BIO_printf(bio_err, "Error reading S/MIME message\n"); 711 {
678 goto end; 712 signerfile = sk_OPENSSL_STRING_value(sksigners, i);
713 keyfile = sk_OPENSSL_STRING_value(skkeys, i);
714 signer = load_cert(bio_err, signerfile,FORMAT_PEM, NULL,
715 e, "signer certificate");
716 if (!signer)
717 goto end;
718 key = load_key(bio_err, keyfile, keyform, 0, passin, e,
719 "signing key file");
720 if (!key)
721 goto end;
722 if (!PKCS7_sign_add_signer(p7, signer, key,
723 sign_md, flags))
724 goto end;
725 X509_free(signer);
726 signer = NULL;
727 EVP_PKEY_free(key);
728 key = NULL;
679 } 729 }
680 if (contfile) 730 /* If not streaming or resigning finalize structure */
731 if ((operation == SMIME_SIGN) && !(flags & PKCS7_STREAM))
681 { 732 {
682 BIO_free(indata); 733 if (!PKCS7_final(p7, in, flags))
683 if (!(indata = BIO_new_file(contfile, "rb")))
684 {
685 BIO_printf(bio_err, "Can't read content file %s\n", contfile);
686 goto end; 734 goto end;
687 }
688 } 735 }
689 } 736 }
690 737
@@ -734,11 +781,16 @@ int MAIN(int argc, char **argv)
734 if (subject) 781 if (subject)
735 BIO_printf(out, "Subject: %s\n", subject); 782 BIO_printf(out, "Subject: %s\n", subject);
736 if (outformat == FORMAT_SMIME) 783 if (outformat == FORMAT_SMIME)
737 SMIME_write_PKCS7(out, p7, in, flags); 784 {
785 if (operation == SMIME_RESIGN)
786 SMIME_write_PKCS7(out, p7, indata, flags);
787 else
788 SMIME_write_PKCS7(out, p7, in, flags);
789 }
738 else if (outformat == FORMAT_PEM) 790 else if (outformat == FORMAT_PEM)
739 PEM_write_bio_PKCS7(out,p7); 791 PEM_write_bio_PKCS7_stream(out, p7, in, flags);
740 else if (outformat == FORMAT_ASN1) 792 else if (outformat == FORMAT_ASN1)
741 i2d_PKCS7_bio(out,p7); 793 i2d_PKCS7_bio_stream(out,p7, in, flags);
742 else 794 else
743 { 795 {
744 BIO_printf(bio_err, "Bad output format for PKCS#7 file\n"); 796 BIO_printf(bio_err, "Bad output format for PKCS#7 file\n");
@@ -754,6 +806,10 @@ end:
754 sk_X509_pop_free(other, X509_free); 806 sk_X509_pop_free(other, X509_free);
755 if (vpm) 807 if (vpm)
756 X509_VERIFY_PARAM_free(vpm); 808 X509_VERIFY_PARAM_free(vpm);
809 if (sksigners)
810 sk_OPENSSL_STRING_free(sksigners);
811 if (skkeys)
812 sk_OPENSSL_STRING_free(skkeys);
757 X509_STORE_free(store); 813 X509_STORE_free(store);
758 X509_free(cert); 814 X509_free(cert);
759 X509_free(recip); 815 X509_free(recip);
diff --git a/src/lib/libssl/src/apps/speed.c b/src/lib/libssl/src/apps/speed.c
index af077b54a8..539bfff220 100644
--- a/src/lib/libssl/src/apps/speed.c
+++ b/src/lib/libssl/src/apps/speed.c
@@ -108,53 +108,8 @@
108#include <signal.h> 108#include <signal.h>
109#endif 109#endif
110 110
111#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENSSL_SYS_MACOSX) 111#ifdef _WIN32
112# define USE_TOD 112#include <windows.h>
113#elif !defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_VXWORKS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC))
114# define TIMES
115#endif
116#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(OPENSSL_SYS_MPE) && !defined(__NetBSD__) && !defined(OPENSSL_SYS_VXWORKS) /* FIXME */
117# define TIMEB
118#endif
119
120#if defined(OPENSSL_SYS_NETWARE)
121#undef TIMES
122#undef TIMEB
123#include <time.h>
124#endif
125
126#ifndef _IRIX
127# include <time.h>
128#endif
129#ifdef TIMES
130# include <sys/types.h>
131# include <sys/times.h>
132#endif
133#ifdef USE_TOD
134# include <sys/time.h>
135# include <sys/resource.h>
136#endif
137
138/* Depending on the VMS version, the tms structure is perhaps defined.
139 The __TMS macro will show if it was. If it wasn't defined, we should
140 undefine TIMES, since that tells the rest of the program how things
141 should be handled. -- Richard Levitte */
142#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
143#undef TIMES
144#endif
145
146#ifdef TIMEB
147#include <sys/timeb.h>
148#endif
149
150#if !defined(TIMES) && !defined(TIMEB) && !defined(USE_TOD) && !defined(OPENSSL_SYS_VXWORKS) && !defined(OPENSSL_SYS_NETWARE)
151#error "It seems neither struct tms nor struct timeb is supported in this platform!"
152#endif
153
154#if defined(sun) || defined(__ultrix)
155#define _POSIX_SOURCE
156#include <limits.h>
157#include <sys/param.h>
158#endif 113#endif
159 114
160#include <openssl/bn.h> 115#include <openssl/bn.h>
@@ -189,6 +144,9 @@
189#ifndef OPENSSL_NO_RIPEMD 144#ifndef OPENSSL_NO_RIPEMD
190#include <openssl/ripemd.h> 145#include <openssl/ripemd.h>
191#endif 146#endif
147#ifndef OPENSSL_NO_WHIRLPOOL
148#include <openssl/whrlpool.h>
149#endif
192#ifndef OPENSSL_NO_RC4 150#ifndef OPENSSL_NO_RC4
193#include <openssl/rc4.h> 151#include <openssl/rc4.h>
194#endif 152#endif
@@ -226,43 +184,24 @@
226#include <openssl/ecdh.h> 184#include <openssl/ecdh.h>
227#endif 185#endif
228 186
229/* 187#ifndef HAVE_FORK
230 * The following "HZ" timing stuff should be sync'd up with the code in 188# if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_NETWARE)
231 * crypto/tmdiff.[ch]. That appears to try to do the same job, though I think 189# define HAVE_FORK 0
232 * this code is more up to date than libcrypto's so there may be features to
233 * migrate over first. This is used in two places further down AFAICS.
234 * The point is that nothing in openssl actually *uses* that tmdiff stuff, so
235 * either speed.c should be using it or it should go because it's obviously not
236 * useful enough. Anyone want to do a janitorial job on this?
237 */
238
239/* The following if from times(3) man page. It may need to be changed */
240#ifndef HZ
241# if defined(_SC_CLK_TCK) \
242 && (!defined(OPENSSL_SYS_VMS) || __CTRL_VER >= 70000000)
243# define HZ sysconf(_SC_CLK_TCK)
244# else 190# else
245# ifndef CLK_TCK 191# define HAVE_FORK 1
246# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */
247# define HZ 100.0
248# else /* _BSD_CLK_TCK_ */
249# define HZ ((double)_BSD_CLK_TCK_)
250# endif
251# else /* CLK_TCK */
252# define HZ ((double)CLK_TCK)
253# endif
254# endif 192# endif
255#endif 193#endif
256 194
257#if !defined(OPENSSL_SYS_VMS) && !defined(OPENSSL_SYS_WINDOWS) && !defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && !defined(OPENSSL_SYS_OS2) && !defined(OPENSSL_SYS_NETWARE) 195#if HAVE_FORK
258# define HAVE_FORK 1 196#undef NO_FORK
197#else
198#define NO_FORK
259#endif 199#endif
260 200
261#undef BUFSIZE 201#undef BUFSIZE
262#define BUFSIZE ((long)1024*8+1) 202#define BUFSIZE ((long)1024*8+1)
263int run=0; 203int run=0;
264 204
265static char ftime_used = 0, times_used = 0, gettimeofday_used = 0, getrusage_used = 0;
266static int mr=0; 205static int mr=0;
267static int usertime=1; 206static int usertime=1;
268 207
@@ -271,11 +210,11 @@ static void print_message(const char *s,long num,int length);
271static void pkey_print_message(const char *str, const char *str2, 210static void pkey_print_message(const char *str, const char *str2,
272 long num, int bits, int sec); 211 long num, int bits, int sec);
273static void print_result(int alg,int run_no,int count,double time_used); 212static void print_result(int alg,int run_no,int count,double time_used);
274#ifdef HAVE_FORK 213#ifndef NO_FORK
275static int do_multi(int multi); 214static int do_multi(int multi);
276#endif 215#endif
277 216
278#define ALGOR_NUM 28 217#define ALGOR_NUM 29
279#define SIZE_NUM 5 218#define SIZE_NUM 5
280#define RSA_NUM 4 219#define RSA_NUM 4
281#define DSA_NUM 3 220#define DSA_NUM 3
@@ -289,12 +228,16 @@ static const char *names[ALGOR_NUM]={
289 "rc2 cbc","rc5-32/12 cbc","blowfish cbc","cast cbc", 228 "rc2 cbc","rc5-32/12 cbc","blowfish cbc","cast cbc",
290 "aes-128 cbc","aes-192 cbc","aes-256 cbc", 229 "aes-128 cbc","aes-192 cbc","aes-256 cbc",
291 "camellia-128 cbc","camellia-192 cbc","camellia-256 cbc", 230 "camellia-128 cbc","camellia-192 cbc","camellia-256 cbc",
292 "evp","sha256","sha512", 231 "evp","sha256","sha512","whirlpool",
293 "aes-128 ige","aes-192 ige","aes-256 ige"}; 232 "aes-128 ige","aes-192 ige","aes-256 ige"};
294static double results[ALGOR_NUM][SIZE_NUM]; 233static double results[ALGOR_NUM][SIZE_NUM];
295static int lengths[SIZE_NUM]={16,64,256,1024,8*1024}; 234static int lengths[SIZE_NUM]={16,64,256,1024,8*1024};
235#ifndef OPENSSL_NO_RSA
296static double rsa_results[RSA_NUM][2]; 236static double rsa_results[RSA_NUM][2];
237#endif
238#ifndef OPENSSL_NO_DSA
297static double dsa_results[DSA_NUM][2]; 239static double dsa_results[DSA_NUM][2];
240#endif
298#ifndef OPENSSL_NO_ECDSA 241#ifndef OPENSSL_NO_ECDSA
299static double ecdsa_results[EC_NUM][2]; 242static double ecdsa_results[EC_NUM][2];
300#endif 243#endif
@@ -328,141 +271,46 @@ static SIGRETTYPE sig_done(int sig)
328#define START 0 271#define START 0
329#define STOP 1 272#define STOP 1
330 273
331#if defined(OPENSSL_SYS_NETWARE) 274#if defined(_WIN32)
332 275
333 /* for NetWare the best we can do is use clock() which returns the 276#define SIGALRM
334 * time, in hundredths of a second, since the NLM began executing 277static unsigned int lapse,schlock;
335 */ 278static void alarm(unsigned int secs) { lapse = secs*1000; }
336static double Time_F(int s)
337 {
338 double ret;
339
340 static clock_t tstart,tend;
341
342 if (s == START)
343 {
344 tstart=clock();
345 return(0);
346 }
347 else
348 {
349 tend=clock();
350 ret=(double)((double)(tend)-(double)(tstart));
351 return((ret < 0.001)?0.001:ret);
352 }
353 }
354 279
355#else 280static DWORD WINAPI sleepy(VOID *arg)
281 {
282 schlock = 1;
283 Sleep(lapse);
284 run = 0;
285 return 0;
286 }
356 287
357static double Time_F(int s) 288static double Time_F(int s)
358 { 289 {
359 double ret; 290 if (s == START)
360
361#ifdef USE_TOD
362 if(usertime)
363 {
364 static struct rusage tstart,tend;
365
366 getrusage_used = 1;
367 if (s == START)
368 {
369 getrusage(RUSAGE_SELF,&tstart);
370 return(0);
371 }
372 else
373 {
374 long i;
375
376 getrusage(RUSAGE_SELF,&tend);
377 i=(long)tend.ru_utime.tv_usec-(long)tstart.ru_utime.tv_usec;
378 ret=((double)(tend.ru_utime.tv_sec-tstart.ru_utime.tv_sec))
379 +((double)i)/1000000.0;
380 return((ret < 0.001)?0.001:ret);
381 }
382 }
383 else
384 { 291 {
385 static struct timeval tstart,tend; 292 HANDLE thr;
386 long i; 293 schlock = 0;
387 294 thr = CreateThread(NULL,4096,sleepy,NULL,0,NULL);
388 gettimeofday_used = 1; 295 if (thr==NULL)
389 if (s == START)
390 {
391 gettimeofday(&tstart,NULL);
392 return(0);
393 }
394 else
395 { 296 {
396 gettimeofday(&tend,NULL); 297 DWORD ret=GetLastError();
397 i=(long)tend.tv_usec-(long)tstart.tv_usec; 298 BIO_printf(bio_err,"unable to CreateThread (%d)",ret);
398 ret=((double)(tend.tv_sec-tstart.tv_sec))+((double)i)/1000000.0; 299 ExitProcess(ret);
399 return((ret < 0.001)?0.001:ret);
400 } 300 }
301 CloseHandle(thr); /* detach the thread */
302 while (!schlock) Sleep(0); /* scheduler spinlock */
401 } 303 }
402#else /* ndef USE_TOD */
403
404# ifdef TIMES
405 if (usertime)
406 {
407 static struct tms tstart,tend;
408 304
409 times_used = 1; 305 return app_tminterval(s,usertime);
410 if (s == START) 306 }
411 { 307#else
412 times(&tstart);
413 return(0);
414 }
415 else
416 {
417 times(&tend);
418 ret = HZ;
419 ret=(double)(tend.tms_utime-tstart.tms_utime) / ret;
420 return((ret < 1e-3)?1e-3:ret);
421 }
422 }
423# endif /* times() */
424# if defined(TIMES) && defined(TIMEB)
425 else
426# endif
427# ifdef OPENSSL_SYS_VXWORKS
428 {
429 static unsigned long tick_start, tick_end;
430
431 if( s == START )
432 {
433 tick_start = tickGet();
434 return 0;
435 }
436 else
437 {
438 tick_end = tickGet();
439 ret = (double)(tick_end - tick_start) / (double)sysClkRateGet();
440 return((ret < 0.001)?0.001:ret);
441 }
442 }
443# elif defined(TIMEB)
444 {
445 static struct timeb tstart,tend;
446 long i;
447 308
448 ftime_used = 1; 309static double Time_F(int s)
449 if (s == START) 310 {
450 { 311 return app_tminterval(s,usertime);
451 ftime(&tstart);
452 return(0);
453 }
454 else
455 {
456 ftime(&tend);
457 i=(long)tend.millitm-(long)tstart.millitm;
458 ret=((double)(tend.time-tstart.time))+((double)i)/1000.0;
459 return((ret < 0.001)?0.001:ret);
460 }
461 }
462# endif
463#endif
464 } 312 }
465#endif /* if defined(OPENSSL_SYS_NETWARE) */ 313#endif
466 314
467 315
468#ifndef OPENSSL_NO_ECDH 316#ifndef OPENSSL_NO_ECDH
@@ -522,6 +370,9 @@ int MAIN(int argc, char **argv)
522 unsigned char sha512[SHA512_DIGEST_LENGTH]; 370 unsigned char sha512[SHA512_DIGEST_LENGTH];
523#endif 371#endif
524#endif 372#endif
373#ifndef OPENSSL_NO_WHIRLPOOL
374 unsigned char whirlpool[WHIRLPOOL_DIGEST_LENGTH];
375#endif
525#ifndef OPENSSL_NO_RIPEMD 376#ifndef OPENSSL_NO_RIPEMD
526 unsigned char rmd160[RIPEMD160_DIGEST_LENGTH]; 377 unsigned char rmd160[RIPEMD160_DIGEST_LENGTH];
527#endif 378#endif
@@ -618,9 +469,10 @@ int MAIN(int argc, char **argv)
618#define D_EVP 22 469#define D_EVP 22
619#define D_SHA256 23 470#define D_SHA256 23
620#define D_SHA512 24 471#define D_SHA512 24
621#define D_IGE_128_AES 25 472#define D_WHIRLPOOL 25
622#define D_IGE_192_AES 26 473#define D_IGE_128_AES 26
623#define D_IGE_256_AES 27 474#define D_IGE_192_AES 27
475#define D_IGE_256_AES 28
624 double d=0.0; 476 double d=0.0;
625 long c[ALGOR_NUM][SIZE_NUM]; 477 long c[ALGOR_NUM][SIZE_NUM];
626#define R_DSA_512 0 478#define R_DSA_512 0
@@ -749,7 +601,7 @@ int MAIN(int argc, char **argv)
749 const EVP_CIPHER *evp_cipher=NULL; 601 const EVP_CIPHER *evp_cipher=NULL;
750 const EVP_MD *evp_md=NULL; 602 const EVP_MD *evp_md=NULL;
751 int decrypt=0; 603 int decrypt=0;
752#ifdef HAVE_FORK 604#ifndef NO_FORK
753 int multi=0; 605 int multi=0;
754#endif 606#endif
755 607
@@ -877,7 +729,7 @@ int MAIN(int argc, char **argv)
877 j--; 729 j--;
878 } 730 }
879#endif 731#endif
880#ifdef HAVE_FORK 732#ifndef NO_FORK
881 else if ((argc > 0) && (strcmp(*argv,"-multi") == 0)) 733 else if ((argc > 0) && (strcmp(*argv,"-multi") == 0))
882 { 734 {
883 argc--; 735 argc--;
@@ -940,6 +792,10 @@ int MAIN(int argc, char **argv)
940 else 792 else
941#endif 793#endif
942#endif 794#endif
795#ifndef OPENSSL_NO_WHIRLPOOL
796 if (strcmp(*argv,"whirlpool") == 0) doit[D_WHIRLPOOL]=1;
797 else
798#endif
943#ifndef OPENSSL_NO_RIPEMD 799#ifndef OPENSSL_NO_RIPEMD
944 if (strcmp(*argv,"ripemd") == 0) doit[D_RMD160]=1; 800 if (strcmp(*argv,"ripemd") == 0) doit[D_RMD160]=1;
945 else 801 else
@@ -1151,12 +1007,16 @@ int MAIN(int argc, char **argv)
1151#ifndef OPENSSL_NO_SHA512 1007#ifndef OPENSSL_NO_SHA512
1152 BIO_printf(bio_err,"sha512 "); 1008 BIO_printf(bio_err,"sha512 ");
1153#endif 1009#endif
1010#ifndef OPENSSL_NO_WHIRLPOOL
1011 BIO_printf(bio_err,"whirlpool");
1012#endif
1154#ifndef OPENSSL_NO_RIPEMD160 1013#ifndef OPENSSL_NO_RIPEMD160
1155 BIO_printf(bio_err,"rmd160"); 1014 BIO_printf(bio_err,"rmd160");
1156#endif 1015#endif
1157#if !defined(OPENSSL_NO_MD2) || !defined(OPENSSL_NO_MDC2) || \ 1016#if !defined(OPENSSL_NO_MD2) || !defined(OPENSSL_NO_MDC2) || \
1158 !defined(OPENSSL_NO_MD4) || !defined(OPENSSL_NO_MD5) || \ 1017 !defined(OPENSSL_NO_MD4) || !defined(OPENSSL_NO_MD5) || \
1159 !defined(OPENSSL_NO_SHA1) || !defined(OPENSSL_NO_RIPEMD160) 1018 !defined(OPENSSL_NO_SHA1) || !defined(OPENSSL_NO_RIPEMD160) || \
1019 !defined(OPENSSL_NO_WHIRLPOOL)
1160 BIO_printf(bio_err,"\n"); 1020 BIO_printf(bio_err,"\n");
1161#endif 1021#endif
1162 1022
@@ -1257,7 +1117,7 @@ int MAIN(int argc, char **argv)
1257 BIO_printf(bio_err,"-evp e use EVP e.\n"); 1117 BIO_printf(bio_err,"-evp e use EVP e.\n");
1258 BIO_printf(bio_err,"-decrypt time decryption instead of encryption (only EVP).\n"); 1118 BIO_printf(bio_err,"-decrypt time decryption instead of encryption (only EVP).\n");
1259 BIO_printf(bio_err,"-mr produce machine readable output.\n"); 1119 BIO_printf(bio_err,"-mr produce machine readable output.\n");
1260#ifdef HAVE_FORK 1120#ifndef NO_FORK
1261 BIO_printf(bio_err,"-multi n run n benchmarks in parallel.\n"); 1121 BIO_printf(bio_err,"-multi n run n benchmarks in parallel.\n");
1262#endif 1122#endif
1263 goto end; 1123 goto end;
@@ -1267,7 +1127,7 @@ int MAIN(int argc, char **argv)
1267 j++; 1127 j++;
1268 } 1128 }
1269 1129
1270#ifdef HAVE_FORK 1130#ifndef NO_FORK
1271 if(multi && do_multi(multi)) 1131 if(multi && do_multi(multi))
1272 goto show_res; 1132 goto show_res;
1273#endif 1133#endif
@@ -1283,17 +1143,20 @@ int MAIN(int argc, char **argv)
1283 rsa_doit[i]=1; 1143 rsa_doit[i]=1;
1284 for (i=0; i<DSA_NUM; i++) 1144 for (i=0; i<DSA_NUM; i++)
1285 dsa_doit[i]=1; 1145 dsa_doit[i]=1;
1146#ifndef OPENSSL_NO_ECDSA
1147 for (i=0; i<EC_NUM; i++)
1148 ecdsa_doit[i]=1;
1149#endif
1150#ifndef OPENSSL_NO_ECDH
1151 for (i=0; i<EC_NUM; i++)
1152 ecdh_doit[i]=1;
1153#endif
1286 } 1154 }
1287 for (i=0; i<ALGOR_NUM; i++) 1155 for (i=0; i<ALGOR_NUM; i++)
1288 if (doit[i]) pr_header++; 1156 if (doit[i]) pr_header++;
1289 1157
1290 if (usertime == 0 && !mr) 1158 if (usertime == 0 && !mr)
1291 BIO_printf(bio_err,"You have chosen to measure elapsed time instead of user CPU time.\n"); 1159 BIO_printf(bio_err,"You have chosen to measure elapsed time instead of user CPU time.\n");
1292 if (usertime <= 0 && !mr)
1293 {
1294 BIO_printf(bio_err,"To get the most accurate results, try to run this\n");
1295 BIO_printf(bio_err,"program when this computer is idle.\n");
1296 }
1297 1160
1298#ifndef OPENSSL_NO_RSA 1161#ifndef OPENSSL_NO_RSA
1299 for (i=0; i<RSA_NUM; i++) 1162 for (i=0; i<RSA_NUM; i++)
@@ -1403,6 +1266,7 @@ int MAIN(int argc, char **argv)
1403 c[D_CBC_256_CML][0]=count; 1266 c[D_CBC_256_CML][0]=count;
1404 c[D_SHA256][0]=count; 1267 c[D_SHA256][0]=count;
1405 c[D_SHA512][0]=count; 1268 c[D_SHA512][0]=count;
1269 c[D_WHIRLPOOL][0]=count;
1406 c[D_IGE_128_AES][0]=count; 1270 c[D_IGE_128_AES][0]=count;
1407 c[D_IGE_192_AES][0]=count; 1271 c[D_IGE_192_AES][0]=count;
1408 c[D_IGE_256_AES][0]=count; 1272 c[D_IGE_256_AES][0]=count;
@@ -1418,6 +1282,7 @@ int MAIN(int argc, char **argv)
1418 c[D_RMD160][i]=c[D_RMD160][0]*4*lengths[0]/lengths[i]; 1282 c[D_RMD160][i]=c[D_RMD160][0]*4*lengths[0]/lengths[i];
1419 c[D_SHA256][i]=c[D_SHA256][0]*4*lengths[0]/lengths[i]; 1283 c[D_SHA256][i]=c[D_SHA256][0]*4*lengths[0]/lengths[i];
1420 c[D_SHA512][i]=c[D_SHA512][0]*4*lengths[0]/lengths[i]; 1284 c[D_SHA512][i]=c[D_SHA512][0]*4*lengths[0]/lengths[i];
1285 c[D_WHIRLPOOL][i]=c[D_WHIRLPOOL][0]*4*lengths[0]/lengths[i];
1421 } 1286 }
1422 for (i=1; i<SIZE_NUM; i++) 1287 for (i=1; i<SIZE_NUM; i++)
1423 { 1288 {
@@ -1601,7 +1466,9 @@ int MAIN(int argc, char **argv)
1601#else 1466#else
1602#define COND(c) (run) 1467#define COND(c) (run)
1603#define COUNT(d) (count) 1468#define COUNT(d) (count)
1469#ifndef _WIN32
1604 signal(SIGALRM,sig_done); 1470 signal(SIGALRM,sig_done);
1471#endif
1605#endif /* SIGALRM */ 1472#endif /* SIGALRM */
1606 1473
1607#ifndef OPENSSL_NO_MD2 1474#ifndef OPENSSL_NO_MD2
@@ -1731,8 +1598,23 @@ int MAIN(int argc, char **argv)
1731 } 1598 }
1732 } 1599 }
1733#endif 1600#endif
1601#endif
1734 1602
1603#ifndef OPENSSL_NO_WHIRLPOOL
1604 if (doit[D_WHIRLPOOL])
1605 {
1606 for (j=0; j<SIZE_NUM; j++)
1607 {
1608 print_message(names[D_WHIRLPOOL],c[D_WHIRLPOOL][j],lengths[j]);
1609 Time_F(START);
1610 for (count=0,run=1; COND(c[D_WHIRLPOOL][j]); count++)
1611 WHIRLPOOL(buf,lengths[j],whirlpool);
1612 d=Time_F(STOP);
1613 print_result(D_WHIRLPOOL,j,count,d);
1614 }
1615 }
1735#endif 1616#endif
1617
1736#ifndef OPENSSL_NO_RIPEMD 1618#ifndef OPENSSL_NO_RIPEMD
1737 if (doit[D_RMD160]) 1619 if (doit[D_RMD160])
1738 { 1620 {
@@ -1878,6 +1760,8 @@ int MAIN(int argc, char **argv)
1878 print_result(D_IGE_256_AES,j,count,d); 1760 print_result(D_IGE_256_AES,j,count,d);
1879 } 1761 }
1880 } 1762 }
1763
1764
1881#endif 1765#endif
1882#ifndef OPENSSL_NO_CAMELLIA 1766#ifndef OPENSSL_NO_CAMELLIA
1883 if (doit[D_CBC_128_CML]) 1767 if (doit[D_CBC_128_CML])
@@ -2462,7 +2346,7 @@ int MAIN(int argc, char **argv)
2462 } 2346 }
2463 if (rnd_fake) RAND_cleanup(); 2347 if (rnd_fake) RAND_cleanup();
2464#endif 2348#endif
2465#ifdef HAVE_FORK 2349#ifndef NO_FORK
2466show_res: 2350show_res:
2467#endif 2351#endif
2468 if(!mr) 2352 if(!mr)
@@ -2490,35 +2374,6 @@ show_res:
2490 printf("%s ",BF_options()); 2374 printf("%s ",BF_options());
2491#endif 2375#endif
2492 fprintf(stdout,"\n%s\n",SSLeay_version(SSLEAY_CFLAGS)); 2376 fprintf(stdout,"\n%s\n",SSLeay_version(SSLEAY_CFLAGS));
2493 printf("available timing options: ");
2494#ifdef TIMES
2495 printf("TIMES ");
2496#endif
2497#ifdef TIMEB
2498 printf("TIMEB ");
2499#endif
2500#ifdef USE_TOD
2501 printf("USE_TOD ");
2502#endif
2503#ifdef HZ
2504#define as_string(s) (#s)
2505 {
2506 double dbl = HZ;
2507 printf("HZ=%g", dbl);
2508 }
2509# ifdef _SC_CLK_TCK
2510 printf(" [sysconf value]");
2511# endif
2512#endif
2513 printf("\n");
2514 printf("timing function used: %s%s%s%s%s%s%s\n",
2515 (ftime_used ? "ftime" : ""),
2516 (ftime_used + times_used > 1 ? "," : ""),
2517 (times_used ? "times" : ""),
2518 (ftime_used + times_used + gettimeofday_used > 1 ? "," : ""),
2519 (gettimeofday_used ? "gettimeofday" : ""),
2520 (ftime_used + times_used + gettimeofday_used + getrusage_used > 1 ? "," : ""),
2521 (getrusage_used ? "getrusage" : ""));
2522 } 2377 }
2523 2378
2524 if (pr_header) 2379 if (pr_header)
@@ -2717,7 +2572,7 @@ static void print_result(int alg,int run_no,int count,double time_used)
2717 results[alg][run_no]=((double)count)/time_used*lengths[run_no]; 2572 results[alg][run_no]=((double)count)/time_used*lengths[run_no];
2718 } 2573 }
2719 2574
2720#ifdef HAVE_FORK 2575#ifndef NO_FORK
2721static char *sstrsep(char **string, const char *delim) 2576static char *sstrsep(char **string, const char *delim)
2722 { 2577 {
2723 char isdelim[256]; 2578 char isdelim[256];
@@ -2775,6 +2630,7 @@ static int do_multi(int multi)
2775 close(fd[1]); 2630 close(fd[1]);
2776 mr=1; 2631 mr=1;
2777 usertime=0; 2632 usertime=0;
2633 free(fds);
2778 return 0; 2634 return 0;
2779 } 2635 }
2780 printf("Forked child %d\n",n); 2636 printf("Forked child %d\n",n);
@@ -2923,7 +2779,10 @@ static int do_multi(int multi)
2923 else 2779 else
2924 fprintf(stderr,"Unknown type '%s' from child %d\n",buf,n); 2780 fprintf(stderr,"Unknown type '%s' from child %d\n",buf,n);
2925 } 2781 }
2782
2783 fclose(f);
2926 } 2784 }
2785 free(fds);
2927 return 1; 2786 return 1;
2928 } 2787 }
2929#endif 2788#endif
diff --git a/src/lib/libssl/src/apps/verify.c b/src/lib/libssl/src/apps/verify.c
index 20cc9e354c..9163997e93 100644
--- a/src/lib/libssl/src/apps/verify.c
+++ b/src/lib/libssl/src/apps/verify.c
@@ -70,8 +70,9 @@
70#define PROG verify_main 70#define PROG verify_main
71 71
72static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx); 72static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx);
73static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X509) *tchain, int purpose, ENGINE *e); 73static int check(X509_STORE *ctx, char *file,
74static STACK_OF(X509) *load_untrusted(char *file); 74 STACK_OF(X509) *uchain, STACK_OF(X509) *tchain,
75 STACK_OF(X509_CRL) *crls, ENGINE *e);
75static int v_verbose=0, vflags = 0; 76static int v_verbose=0, vflags = 0;
76 77
77int MAIN(int, char **); 78int MAIN(int, char **);
@@ -80,10 +81,10 @@ int MAIN(int argc, char **argv)
80 { 81 {
81 ENGINE *e = NULL; 82 ENGINE *e = NULL;
82 int i,ret=1, badarg = 0; 83 int i,ret=1, badarg = 0;
83 int purpose = -1;
84 char *CApath=NULL,*CAfile=NULL; 84 char *CApath=NULL,*CAfile=NULL;
85 char *untfile = NULL, *trustfile = NULL; 85 char *untfile = NULL, *trustfile = NULL, *crlfile = NULL;
86 STACK_OF(X509) *untrusted = NULL, *trusted = NULL; 86 STACK_OF(X509) *untrusted = NULL, *trusted = NULL;
87 STACK_OF(X509_CRL) *crls = NULL;
87 X509_STORE *cert_ctx=NULL; 88 X509_STORE *cert_ctx=NULL;
88 X509_LOOKUP *lookup=NULL; 89 X509_LOOKUP *lookup=NULL;
89 X509_VERIFY_PARAM *vpm = NULL; 90 X509_VERIFY_PARAM *vpm = NULL;
@@ -93,7 +94,7 @@ int MAIN(int argc, char **argv)
93 94
94 cert_ctx=X509_STORE_new(); 95 cert_ctx=X509_STORE_new();
95 if (cert_ctx == NULL) goto end; 96 if (cert_ctx == NULL) goto end;
96 X509_STORE_set_verify_cb_func(cert_ctx,cb); 97 X509_STORE_set_verify_cb(cert_ctx,cb);
97 98
98 ERR_load_crypto_strings(); 99 ERR_load_crypto_strings();
99 100
@@ -139,6 +140,11 @@ int MAIN(int argc, char **argv)
139 if (argc-- < 1) goto end; 140 if (argc-- < 1) goto end;
140 trustfile= *(++argv); 141 trustfile= *(++argv);
141 } 142 }
143 else if (strcmp(*argv,"-CRLfile") == 0)
144 {
145 if (argc-- < 1) goto end;
146 crlfile= *(++argv);
147 }
142#ifndef OPENSSL_NO_ENGINE 148#ifndef OPENSSL_NO_ENGINE
143 else if (strcmp(*argv,"-engine") == 0) 149 else if (strcmp(*argv,"-engine") == 0)
144 { 150 {
@@ -192,26 +198,34 @@ int MAIN(int argc, char **argv)
192 198
193 ERR_clear_error(); 199 ERR_clear_error();
194 200
195 if(untfile) { 201 if(untfile)
196 if(!(untrusted = load_untrusted(untfile))) { 202 {
197 BIO_printf(bio_err, "Error loading untrusted file %s\n", untfile); 203 untrusted = load_certs(bio_err, untfile, FORMAT_PEM,
198 ERR_print_errors(bio_err); 204 NULL, e, "untrusted certificates");
205 if(!untrusted)
199 goto end; 206 goto end;
200 } 207 }
201 }
202 208
203 if(trustfile) { 209 if(trustfile)
204 if(!(trusted = load_untrusted(trustfile))) { 210 {
205 BIO_printf(bio_err, "Error loading untrusted file %s\n", trustfile); 211 trusted = load_certs(bio_err, trustfile, FORMAT_PEM,
206 ERR_print_errors(bio_err); 212 NULL, e, "trusted certificates");
213 if(!trusted)
207 goto end; 214 goto end;
208 } 215 }
209 }
210 216
211 if (argc < 1) check(cert_ctx, NULL, untrusted, trusted, purpose, e); 217 if(crlfile)
218 {
219 crls = load_crls(bio_err, crlfile, FORMAT_PEM,
220 NULL, e, "other CRLs");
221 if(!crls)
222 goto end;
223 }
224
225 if (argc < 1) check(cert_ctx, NULL, untrusted, trusted, crls, e);
212 else 226 else
213 for (i=0; i<argc; i++) 227 for (i=0; i<argc; i++)
214 check(cert_ctx,argv[i], untrusted, trusted, purpose, e); 228 check(cert_ctx,argv[i], untrusted, trusted, crls, e);
215 ret=0; 229 ret=0;
216end: 230end:
217 if (ret == 1) { 231 if (ret == 1) {
@@ -232,11 +246,14 @@ end:
232 if (cert_ctx != NULL) X509_STORE_free(cert_ctx); 246 if (cert_ctx != NULL) X509_STORE_free(cert_ctx);
233 sk_X509_pop_free(untrusted, X509_free); 247 sk_X509_pop_free(untrusted, X509_free);
234 sk_X509_pop_free(trusted, X509_free); 248 sk_X509_pop_free(trusted, X509_free);
249 sk_X509_CRL_pop_free(crls, X509_CRL_free);
235 apps_shutdown(); 250 apps_shutdown();
236 OPENSSL_EXIT(ret); 251 OPENSSL_EXIT(ret);
237 } 252 }
238 253
239static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X509) *tchain, int purpose, ENGINE *e) 254static int check(X509_STORE *ctx, char *file,
255 STACK_OF(X509) *uchain, STACK_OF(X509) *tchain,
256 STACK_OF(X509_CRL) *crls, ENGINE *e)
240 { 257 {
241 X509 *x=NULL; 258 X509 *x=NULL;
242 int i=0,ret=0; 259 int i=0,ret=0;
@@ -260,7 +277,8 @@ static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X
260 goto end; 277 goto end;
261 } 278 }
262 if(tchain) X509_STORE_CTX_trusted_stack(csc, tchain); 279 if(tchain) X509_STORE_CTX_trusted_stack(csc, tchain);
263 if(purpose >= 0) X509_STORE_CTX_set_purpose(csc, purpose); 280 if (crls)
281 X509_STORE_CTX_set0_crls(csc, crls);
264 i=X509_verify_cert(csc); 282 i=X509_verify_cert(csc);
265 X509_STORE_CTX_free(csc); 283 X509_STORE_CTX_free(csc);
266 284
@@ -278,90 +296,53 @@ end:
278 return(ret); 296 return(ret);
279 } 297 }
280 298
281static STACK_OF(X509) *load_untrusted(char *certfile)
282{
283 STACK_OF(X509_INFO) *sk=NULL;
284 STACK_OF(X509) *stack=NULL, *ret=NULL;
285 BIO *in=NULL;
286 X509_INFO *xi;
287
288 if(!(stack = sk_X509_new_null())) {
289 BIO_printf(bio_err,"memory allocation failure\n");
290 goto end;
291 }
292
293 if(!(in=BIO_new_file(certfile, "r"))) {
294 BIO_printf(bio_err,"error opening the file, %s\n",certfile);
295 goto end;
296 }
297
298 /* This loads from a file, a stack of x509/crl/pkey sets */
299 if(!(sk=PEM_X509_INFO_read_bio(in,NULL,NULL,NULL))) {
300 BIO_printf(bio_err,"error reading the file, %s\n",certfile);
301 goto end;
302 }
303
304 /* scan over it and pull out the certs */
305 while (sk_X509_INFO_num(sk))
306 {
307 xi=sk_X509_INFO_shift(sk);
308 if (xi->x509 != NULL)
309 {
310 sk_X509_push(stack,xi->x509);
311 xi->x509=NULL;
312 }
313 X509_INFO_free(xi);
314 }
315 if(!sk_X509_num(stack)) {
316 BIO_printf(bio_err,"no certificates in file, %s\n",certfile);
317 sk_X509_free(stack);
318 goto end;
319 }
320 ret=stack;
321end:
322 BIO_free(in);
323 sk_X509_INFO_free(sk);
324 return(ret);
325 }
326
327static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx) 299static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx)
328 { 300 {
329 char buf[256]; 301 int cert_error = X509_STORE_CTX_get_error(ctx);
302 X509 *current_cert = X509_STORE_CTX_get_current_cert(ctx);
330 303
331 if (!ok) 304 if (!ok)
332 { 305 {
333 if (ctx->current_cert) 306 if (current_cert)
307 {
308 X509_NAME_print_ex_fp(stdout,
309 X509_get_subject_name(current_cert),
310 0, XN_FLAG_ONELINE);
311 printf("\n");
312 }
313 printf("%serror %d at %d depth lookup:%s\n",
314 X509_STORE_CTX_get0_parent_ctx(ctx) ? "[CRL path]" : "",
315 cert_error,
316 X509_STORE_CTX_get_error_depth(ctx),
317 X509_verify_cert_error_string(cert_error));
318 switch(cert_error)
334 { 319 {
335 X509_NAME_oneline( 320 case X509_V_ERR_NO_EXPLICIT_POLICY:
336 X509_get_subject_name(ctx->current_cert),buf, 321 policies_print(NULL, ctx);
337 sizeof buf); 322 case X509_V_ERR_CERT_HAS_EXPIRED:
338 printf("%s\n",buf); 323
324 /* since we are just checking the certificates, it is
325 * ok if they are self signed. But we should still warn
326 * the user.
327 */
328
329 case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
330 /* Continue after extension errors too */
331 case X509_V_ERR_INVALID_CA:
332 case X509_V_ERR_INVALID_NON_CA:
333 case X509_V_ERR_PATH_LENGTH_EXCEEDED:
334 case X509_V_ERR_INVALID_PURPOSE:
335 case X509_V_ERR_CRL_HAS_EXPIRED:
336 case X509_V_ERR_CRL_NOT_YET_VALID:
337 case X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION:
338 ok = 1;
339
339 } 340 }
340 printf("error %d at %d depth lookup:%s\n",ctx->error,
341 ctx->error_depth,
342 X509_verify_cert_error_string(ctx->error));
343 if (ctx->error == X509_V_ERR_CERT_HAS_EXPIRED) ok=1;
344 /* since we are just checking the certificates, it is
345 * ok if they are self signed. But we should still warn
346 * the user.
347 */
348 if (ctx->error == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT) ok=1;
349 /* Continue after extension errors too */
350 if (ctx->error == X509_V_ERR_INVALID_CA) ok=1;
351 if (ctx->error == X509_V_ERR_INVALID_NON_CA) ok=1;
352 if (ctx->error == X509_V_ERR_PATH_LENGTH_EXCEEDED) ok=1;
353 if (ctx->error == X509_V_ERR_INVALID_PURPOSE) ok=1;
354 if (ctx->error == X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT) ok=1;
355 if (ctx->error == X509_V_ERR_CRL_HAS_EXPIRED) ok=1;
356 if (ctx->error == X509_V_ERR_CRL_NOT_YET_VALID) ok=1;
357 if (ctx->error == X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION) ok=1;
358 341
359 if (ctx->error == X509_V_ERR_NO_EXPLICIT_POLICY)
360 policies_print(NULL, ctx);
361 return ok; 342 return ok;
362 343
363 } 344 }
364 if ((ctx->error == X509_V_OK) && (ok == 2)) 345 if (cert_error == X509_V_OK && ok == 2)
365 policies_print(NULL, ctx); 346 policies_print(NULL, ctx);
366 if (!v_verbose) 347 if (!v_verbose)
367 ERR_clear_error(); 348 ERR_clear_error();
diff --git a/src/lib/libssl/src/apps/x509.c b/src/lib/libssl/src/apps/x509.c
index 6debce4419..e7e46d7b63 100644
--- a/src/lib/libssl/src/apps/x509.c
+++ b/src/lib/libssl/src/apps/x509.c
@@ -99,7 +99,13 @@ static const char *x509_usage[]={
99" -passin arg - private key password source\n", 99" -passin arg - private key password source\n",
100" -serial - print serial number value\n", 100" -serial - print serial number value\n",
101" -subject_hash - print subject hash value\n", 101" -subject_hash - print subject hash value\n",
102#ifndef OPENSSL_NO_MD5
103" -subject_hash_old - print old-style (MD5) subject hash value\n",
104#endif
102" -issuer_hash - print issuer hash value\n", 105" -issuer_hash - print issuer hash value\n",
106#ifndef OPENSSL_NO_MD5
107" -issuer_hash_old - print old-style (MD5) issuer hash value\n",
108#endif
103" -hash - synonym for -subject_hash\n", 109" -hash - synonym for -subject_hash\n",
104" -subject - print subject DN\n", 110" -subject - print subject DN\n",
105" -issuer - print issuer DN\n", 111" -issuer - print issuer DN\n",
@@ -179,6 +185,9 @@ int MAIN(int argc, char **argv)
179 int text=0,serial=0,subject=0,issuer=0,startdate=0,enddate=0; 185 int text=0,serial=0,subject=0,issuer=0,startdate=0,enddate=0;
180 int next_serial=0; 186 int next_serial=0;
181 int subject_hash=0,issuer_hash=0,ocspid=0; 187 int subject_hash=0,issuer_hash=0,ocspid=0;
188#ifndef OPENSSL_NO_MD5
189 int subject_hash_old=0,issuer_hash_old=0;
190#endif
182 int noout=0,sign_flag=0,CA_flag=0,CA_createserial=0,email=0; 191 int noout=0,sign_flag=0,CA_flag=0,CA_createserial=0,email=0;
183 int ocsp_uri=0; 192 int ocsp_uri=0;
184 int trustout=0,clrtrust=0,clrreject=0,aliasout=0,clrext=0; 193 int trustout=0,clrtrust=0,clrreject=0,aliasout=0,clrext=0;
@@ -190,7 +199,7 @@ int MAIN(int argc, char **argv)
190 X509_REQ *rq=NULL; 199 X509_REQ *rq=NULL;
191 int fingerprint=0; 200 int fingerprint=0;
192 char buf[256]; 201 char buf[256];
193 const EVP_MD *md_alg,*digest=EVP_sha1(); 202 const EVP_MD *md_alg,*digest=NULL;
194 CONF *extconf = NULL; 203 CONF *extconf = NULL;
195 char *extsect = NULL, *extfile = NULL, *passin = NULL, *passargin = NULL; 204 char *extsect = NULL, *extfile = NULL, *passin = NULL, *passargin = NULL;
196 int need_rand = 0; 205 int need_rand = 0;
@@ -225,7 +234,7 @@ int MAIN(int argc, char **argv)
225 234
226 ctx=X509_STORE_new(); 235 ctx=X509_STORE_new();
227 if (ctx == NULL) goto end; 236 if (ctx == NULL) goto end;
228 X509_STORE_set_verify_cb_func(ctx,callb); 237 X509_STORE_set_verify_cb(ctx,callb);
229 238
230 argc--; 239 argc--;
231 argv++; 240 argv++;
@@ -397,8 +406,16 @@ int MAIN(int argc, char **argv)
397 else if (strcmp(*argv,"-hash") == 0 406 else if (strcmp(*argv,"-hash") == 0
398 || strcmp(*argv,"-subject_hash") == 0) 407 || strcmp(*argv,"-subject_hash") == 0)
399 subject_hash= ++num; 408 subject_hash= ++num;
409#ifndef OPENSSL_NO_MD5
410 else if (strcmp(*argv,"-subject_hash_old") == 0)
411 subject_hash_old= ++num;
412#endif
400 else if (strcmp(*argv,"-issuer_hash") == 0) 413 else if (strcmp(*argv,"-issuer_hash") == 0)
401 issuer_hash= ++num; 414 issuer_hash= ++num;
415#ifndef OPENSSL_NO_MD5
416 else if (strcmp(*argv,"-issuer_hash_old") == 0)
417 issuer_hash_old= ++num;
418#endif
402 else if (strcmp(*argv,"-subject") == 0) 419 else if (strcmp(*argv,"-subject") == 0)
403 subject= ++num; 420 subject= ++num;
404 else if (strcmp(*argv,"-issuer") == 0) 421 else if (strcmp(*argv,"-issuer") == 0)
@@ -626,7 +643,7 @@ bad:
626 if (!X509_set_subject_name(x,req->req_info->subject)) goto end; 643 if (!X509_set_subject_name(x,req->req_info->subject)) goto end;
627 644
628 X509_gmtime_adj(X509_get_notBefore(x),0); 645 X509_gmtime_adj(X509_get_notBefore(x),0);
629 X509_gmtime_adj(X509_get_notAfter(x),(long)60*60*24*days); 646 X509_time_adj_ex(X509_get_notAfter(x),days, 0, NULL);
630 647
631 pkey = X509_REQ_get_pubkey(req); 648 pkey = X509_REQ_get_pubkey(req);
632 X509_set_pubkey(x,pkey); 649 X509_set_pubkey(x,pkey);
@@ -738,13 +755,14 @@ bad:
738 else if ((email == i) || (ocsp_uri == i)) 755 else if ((email == i) || (ocsp_uri == i))
739 { 756 {
740 int j; 757 int j;
741 STACK *emlst; 758 STACK_OF(OPENSSL_STRING) *emlst;
742 if (email == i) 759 if (email == i)
743 emlst = X509_get1_email(x); 760 emlst = X509_get1_email(x);
744 else 761 else
745 emlst = X509_get1_ocsp(x); 762 emlst = X509_get1_ocsp(x);
746 for (j = 0; j < sk_num(emlst); j++) 763 for (j = 0; j < sk_OPENSSL_STRING_num(emlst); j++)
747 BIO_printf(STDout, "%s\n", sk_value(emlst, j)); 764 BIO_printf(STDout, "%s\n",
765 sk_OPENSSL_STRING_value(emlst, j));
748 X509_email_free(emlst); 766 X509_email_free(emlst);
749 } 767 }
750 else if (aliasout == i) 768 else if (aliasout == i)
@@ -758,10 +776,22 @@ bad:
758 { 776 {
759 BIO_printf(STDout,"%08lx\n",X509_subject_name_hash(x)); 777 BIO_printf(STDout,"%08lx\n",X509_subject_name_hash(x));
760 } 778 }
779#ifndef OPENSSL_NO_MD5
780 else if (subject_hash_old == i)
781 {
782 BIO_printf(STDout,"%08lx\n",X509_subject_name_hash_old(x));
783 }
784#endif
761 else if (issuer_hash == i) 785 else if (issuer_hash == i)
762 { 786 {
763 BIO_printf(STDout,"%08lx\n",X509_issuer_name_hash(x)); 787 BIO_printf(STDout,"%08lx\n",X509_issuer_name_hash(x));
764 } 788 }
789#ifndef OPENSSL_NO_MD5
790 else if (issuer_hash_old == i)
791 {
792 BIO_printf(STDout,"%08lx\n",X509_issuer_name_hash_old(x));
793 }
794#endif
765 else if (pprint == i) 795 else if (pprint == i)
766 { 796 {
767 X509_PURPOSE *ptmp; 797 X509_PURPOSE *ptmp;
@@ -892,14 +922,18 @@ bad:
892 int j; 922 int j;
893 unsigned int n; 923 unsigned int n;
894 unsigned char md[EVP_MAX_MD_SIZE]; 924 unsigned char md[EVP_MAX_MD_SIZE];
925 const EVP_MD *fdig = digest;
926
927 if (!fdig)
928 fdig = EVP_sha1();
895 929
896 if (!X509_digest(x,digest,md,&n)) 930 if (!X509_digest(x,fdig,md,&n))
897 { 931 {
898 BIO_printf(bio_err,"out of memory\n"); 932 BIO_printf(bio_err,"out of memory\n");
899 goto end; 933 goto end;
900 } 934 }
901 BIO_printf(STDout,"%s Fingerprint=", 935 BIO_printf(STDout,"%s Fingerprint=",
902 OBJ_nid2sn(EVP_MD_type(digest))); 936 OBJ_nid2sn(EVP_MD_type(fdig)));
903 for (j=0; j<(int)n; j++) 937 for (j=0; j<(int)n; j++)
904 { 938 {
905 BIO_printf(STDout,"%02X%c",md[j], 939 BIO_printf(STDout,"%02X%c",md[j],
@@ -919,14 +953,6 @@ bad:
919 passin, e, "Private key"); 953 passin, e, "Private key");
920 if (Upkey == NULL) goto end; 954 if (Upkey == NULL) goto end;
921 } 955 }
922#ifndef OPENSSL_NO_DSA
923 if (Upkey->type == EVP_PKEY_DSA)
924 digest=EVP_dss1();
925#endif
926#ifndef OPENSSL_NO_ECDSA
927 if (Upkey->type == EVP_PKEY_EC)
928 digest=EVP_ecdsa();
929#endif
930 956
931 assert(need_rand); 957 assert(need_rand);
932 if (!sign(x,Upkey,days,clrext,digest, 958 if (!sign(x,Upkey,days,clrext,digest,
@@ -943,14 +969,6 @@ bad:
943 "CA Private Key"); 969 "CA Private Key");
944 if (CApkey == NULL) goto end; 970 if (CApkey == NULL) goto end;
945 } 971 }
946#ifndef OPENSSL_NO_DSA
947 if (CApkey->type == EVP_PKEY_DSA)
948 digest=EVP_dss1();
949#endif
950#ifndef OPENSSL_NO_ECDSA
951 if (CApkey->type == EVP_PKEY_EC)
952 digest = EVP_ecdsa();
953#endif
954 972
955 assert(need_rand); 973 assert(need_rand);
956 if (!x509_certify(ctx,CAfile,digest,x,xca, 974 if (!x509_certify(ctx,CAfile,digest,x,xca,
@@ -978,15 +996,6 @@ bad:
978 996
979 BIO_printf(bio_err,"Generating certificate request\n"); 997 BIO_printf(bio_err,"Generating certificate request\n");
980 998
981#ifndef OPENSSL_NO_DSA
982 if (pk->type == EVP_PKEY_DSA)
983 digest=EVP_dss1();
984#endif
985#ifndef OPENSSL_NO_ECDSA
986 if (pk->type == EVP_PKEY_EC)
987 digest=EVP_ecdsa();
988#endif
989
990 rq=X509_to_X509_REQ(x,pk,digest); 999 rq=X509_to_X509_REQ(x,pk,digest);
991 EVP_PKEY_free(pk); 1000 EVP_PKEY_free(pk);
992 if (rq == NULL) 1001 if (rq == NULL)
@@ -1040,16 +1049,15 @@ bad:
1040 } 1049 }
1041 else if (outformat == FORMAT_NETSCAPE) 1050 else if (outformat == FORMAT_NETSCAPE)
1042 { 1051 {
1043 ASN1_HEADER ah; 1052 NETSCAPE_X509 nx;
1044 ASN1_OCTET_STRING os; 1053 ASN1_OCTET_STRING hdr;
1045 1054
1046 os.data=(unsigned char *)NETSCAPE_CERT_HDR; 1055 hdr.data=(unsigned char *)NETSCAPE_CERT_HDR;
1047 os.length=strlen(NETSCAPE_CERT_HDR); 1056 hdr.length=strlen(NETSCAPE_CERT_HDR);
1048 ah.header= &os; 1057 nx.header= &hdr;
1049 ah.data=(char *)x; 1058 nx.cert=x;
1050 ah.meth=X509_asn1_meth();
1051 1059
1052 i=ASN1_i2d_bio_of(ASN1_HEADER,i2d_ASN1_HEADER,out,&ah); 1060 i=ASN1_item_i2d_bio(ASN1_ITEM_rptr(NETSCAPE_X509),out,&nx);
1053 } 1061 }
1054 else { 1062 else {
1055 BIO_printf(bio_err,"bad output format specified for outfile\n"); 1063 BIO_printf(bio_err,"bad output format specified for outfile\n");
@@ -1151,6 +1159,7 @@ static int x509_certify(X509_STORE *ctx, char *CAfile, const EVP_MD *digest,
1151 /* NOTE: this certificate can/should be self signed, unless it was 1159 /* NOTE: this certificate can/should be self signed, unless it was
1152 * a certificate request in which case it is not. */ 1160 * a certificate request in which case it is not. */
1153 X509_STORE_CTX_set_cert(&xsc,x); 1161 X509_STORE_CTX_set_cert(&xsc,x);
1162 X509_STORE_CTX_set_flags(&xsc, X509_V_FLAG_CHECK_SS_SIGNATURE);
1154 if (!reqfile && X509_verify_cert(&xsc) <= 0) 1163 if (!reqfile && X509_verify_cert(&xsc) <= 0)
1155 goto end; 1164 goto end;
1156 1165
@@ -1167,7 +1176,7 @@ static int x509_certify(X509_STORE *ctx, char *CAfile, const EVP_MD *digest,
1167 goto end; 1176 goto end;
1168 1177
1169 /* hardwired expired */ 1178 /* hardwired expired */
1170 if (X509_gmtime_adj(X509_get_notAfter(x),(long)60*60*24*days) == NULL) 1179 if (X509_time_adj_ex(X509_get_notAfter(x),days, 0, NULL) == NULL)
1171 goto end; 1180 goto end;
1172 1181
1173 if (clrext) 1182 if (clrext)
diff --git a/src/lib/libssl/src/config b/src/lib/libssl/src/config
index 68e7ea1737..965884a627 100644
--- a/src/lib/libssl/src/config
+++ b/src/lib/libssl/src/config
@@ -29,7 +29,7 @@ EXE=""
29for i 29for i
30do 30do
31case "$i" in 31case "$i" in
32-d) PREFIX="debug-";; 32-d*) PREFIX="debug-";;
33-t*) TEST="true";; 33-t*) TEST="true";;
34-h*) TEST="true"; cat <<EOF 34-h*) TEST="true"; cat <<EOF
35Usage: config [options] 35Usage: config [options]
@@ -48,10 +48,10 @@ done
48 48
49# First get uname entries that we use below 49# First get uname entries that we use below
50 50
51MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown" 51[ "$MACHINE" ] || MACHINE=`(uname -m) 2>/dev/null` || MACHINE="unknown"
52RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown" 52[ "$RELEASE" ] || RELEASE=`(uname -r) 2>/dev/null` || RELEASE="unknown"
53SYSTEM=`(uname -s) 2>/dev/null` || SYSTEM="unknown" 53[ "$SYSTEM" ] || SYSTEM=`(uname -s) 2>/dev/null` || SYSTEM="unknown"
54VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown" 54[ "$BUILD" ] || VERSION=`(uname -v) 2>/dev/null` || VERSION="unknown"
55 55
56 56
57# Now test for ISC and SCO, since it is has a braindamaged uname. 57# Now test for ISC and SCO, since it is has a braindamaged uname.
@@ -122,6 +122,14 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
122 echo "${MACHINE}-ibm-aix3"; exit 0 122 echo "${MACHINE}-ibm-aix3"; exit 0
123 ;; 123 ;;
124 124
125 BeOS:*:BePC)
126 if [ -e /boot/develop/headers/be/bone ]; then
127 echo "beos-x86-bone"; exit 0
128 else
129 echo "beos-x86-r5"; exit 0
130 fi
131 ;;
132
125 dgux:*) 133 dgux:*)
126 echo "${MACHINE}-dg-dgux"; exit 0 134 echo "${MACHINE}-dg-dgux"; exit 0
127 ;; 135 ;;
@@ -270,7 +278,7 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
270 echo "ppc-apple-darwin${VERSION}" 278 echo "ppc-apple-darwin${VERSION}"
271 ;; 279 ;;
272 *) 280 *)
273 echo "i386-apple-darwin${VERSION}" 281 echo "i686-apple-darwin${VERSION}"
274 ;; 282 ;;
275 esac 283 esac
276 exit 0 284 exit 0
@@ -488,6 +496,12 @@ echo Operating system: $GUESSOS
488# script above so we end up with values in vars but that would take 496# script above so we end up with values in vars but that would take
489# more time that I want to waste at the moment 497# more time that I want to waste at the moment
490case "$GUESSOS" in 498case "$GUESSOS" in
499 uClinux*64*)
500 OUT=uClinux-dist64
501 ;;
502 uClinux*)
503 OUT=uClinux-dist
504 ;;
491 mips2-sgi-irix) 505 mips2-sgi-irix)
492 CPU=`(hinv -t cpu) 2>/dev/null | head -1 | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'` 506 CPU=`(hinv -t cpu) 2>/dev/null | head -1 | sed 's/^CPU:[^R]*R\([0-9]*\).*/\1/'`
493 CPU=${CPU:-0} 507 CPU=${CPU:-0}
@@ -523,8 +537,28 @@ case "$GUESSOS" in
523 OUT="irix-mips3-$CC" 537 OUT="irix-mips3-$CC"
524 ;; 538 ;;
525 ppc-apple-rhapsody) OUT="rhapsody-ppc-cc" ;; 539 ppc-apple-rhapsody) OUT="rhapsody-ppc-cc" ;;
526 ppc-apple-darwin*) OUT="darwin-ppc-cc" ;; 540 ppc-apple-darwin*)
527 i386-apple-darwin*) OUT="darwin-i386-cc" ;; 541 ISA64=`(sysctl -n hw.optional.64bitops) 2>/dev/null`
542 if [ "$ISA64" = "1" ]; then
543 echo "WARNING! If you wish to build 64-bit library, then you have to"
544 echo " invoke './Configure darwin64-ppc-cc' *manually*."
545 if [ "$TEST" = "false" -a -t 1 ]; then
546 echo " You have about 5 seconds to press Ctrl-C to abort."
547 (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
548 fi
549 fi
550 OUT="darwin-ppc-cc" ;;
551 i?86-apple-darwin*)
552 ISA64=`(sysctl -n hw.optional.x86_64) 2>/dev/null`
553 if [ "$ISA64" = "1" ]; then
554 echo "WARNING! If you wish to build 64-bit library, then you have to"
555 echo " invoke './Configure darwin64-x86_64-cc' *manually*."
556 if [ "$TEST" = "false" -a -t 1 ]; then
557 echo " You have about 5 seconds to press Ctrl-C to abort."
558 (trap "stty `stty -g`" 2 0; stty -icanon min 0 time 50; read waste) <&1
559 fi
560 fi
561 OUT="darwin-i386-cc" ;;
528 alpha-*-linux2) 562 alpha-*-linux2)
529 ISA=`awk '/cpu model/{print$4;exit(0);}' /proc/cpuinfo` 563 ISA=`awk '/cpu model/{print$4;exit(0);}' /proc/cpuinfo`
530 case ${ISA:-generic} in 564 case ${ISA:-generic} in
@@ -589,13 +623,13 @@ case "$GUESSOS" in
589 623
590 options="$options -DB_ENDIAN -mschedule=$CPUSCHEDULE -march=$CPUARCH" 624 options="$options -DB_ENDIAN -mschedule=$CPUSCHEDULE -march=$CPUARCH"
591 OUT="linux-generic32" ;; 625 OUT="linux-generic32" ;;
592 arm*b-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;; 626 armv[1-3]*-*-linux2) OUT="linux-generic32" ;;
593 arm*l-*-linux2) OUT="linux-generic32"; options="$options -DL_ENDIAN" ;; 627 arm*-*-linux2) OUT="linux-armv4" ;;
594 sh*b-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;; 628 sh*b-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
595 sh*-*-linux2) OUT="linux-generic32"; options="$options -DL_ENDIAN" ;; 629 sh*-*-linux2) OUT="linux-generic32"; options="$options -DL_ENDIAN" ;;
596 m68k*-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;; 630 m68k*-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
597 s390-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN -DNO_ASM" ;; 631 s390-*-linux2) OUT="linux-generic32"; options="$options -DB_ENDIAN" ;;
598 s390x-*-linux2) OUT="linux-generic64"; options="$options -DB_ENDIAN" ;; 632 s390x-*-linux2) OUT="linux-s390x" ;;
599 x86_64-*-linux?) OUT="linux-x86_64" ;; 633 x86_64-*-linux?) OUT="linux-x86_64" ;;
600 *86-*-linux2) OUT="linux-elf" 634 *86-*-linux2) OUT="linux-elf"
601 if [ "$GCCVER" -gt 28 ]; then 635 if [ "$GCCVER" -gt 28 ]; then
@@ -741,6 +775,10 @@ case "$GUESSOS" in
741 OBJECT_MODE=${OBJECT_MODE:-32} 775 OBJECT_MODE=${OBJECT_MODE:-32}
742 if [ "$CC" = "gcc" ]; then 776 if [ "$CC" = "gcc" ]; then
743 OUT="aix-gcc" 777 OUT="aix-gcc"
778 if [ $OBJECT_MODE -eq 64 ]; then
779 echo 'Your $OBJECT_MODE was found to be set to 64'
780 OUT="aix64-gcc"
781 fi
744 elif [ $OBJECT_MODE -eq 64 ]; then 782 elif [ $OBJECT_MODE -eq 64 ]; then
745 echo 'Your $OBJECT_MODE was found to be set to 64' 783 echo 'Your $OBJECT_MODE was found to be set to 64'
746 OUT="aix64-cc" 784 OUT="aix64-cc"
@@ -769,6 +807,9 @@ case "$GUESSOS" in
769 t3e-cray-unicosmk) OUT="cray-t3e" ;; 807 t3e-cray-unicosmk) OUT="cray-t3e" ;;
770 j90-cray-unicos) OUT="cray-j90" ;; 808 j90-cray-unicos) OUT="cray-j90" ;;
771 nsr-tandem-nsk) OUT="tandem-c89" ;; 809 nsr-tandem-nsk) OUT="tandem-c89" ;;
810 beos-*) OUT="$GUESSOS" ;;
811 x86pc-*-qnx6) OUT="QNX6-i386" ;;
812 *-*-qnx6) OUT="QNX6" ;;
772 *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;; 813 *) OUT=`echo $GUESSOS | awk -F- '{print $3}'`;;
773esac 814esac
774 815
diff --git a/src/lib/libssl/src/crypto/Makefile b/src/lib/libssl/src/crypto/Makefile
index 6557f2b4e1..c1033f6d77 100644
--- a/src/lib/libssl/src/crypto/Makefile
+++ b/src/lib/libssl/src/crypto/Makefile
@@ -5,9 +5,9 @@
5DIR= crypto 5DIR= crypto
6TOP= .. 6TOP= ..
7CC= cc 7CC= cc
8INCLUDE= -I. -I$(TOP) -I../include 8INCLUDE= -I. -I$(TOP) -I../include $(ZLIB_INCLUDE)
9# INCLUDES targets sudbirs! 9# INCLUDES targets sudbirs!
10INCLUDES= -I.. -I../.. -I../../include 10INCLUDES= -I.. -I../.. -I../asn1 -I../evp -I../../include $(ZLIB_INCLUDE)
11CFLAG= -g 11CFLAG= -g
12MAKEDEPPROG= makedepend 12MAKEDEPPROG= makedepend
13MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) 13MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
@@ -17,7 +17,7 @@ AR= ar r
17 17
18RECURSIVE_MAKE= [ -n "$(SDIRS)" ] && for i in $(SDIRS) ; do \ 18RECURSIVE_MAKE= [ -n "$(SDIRS)" ] && for i in $(SDIRS) ; do \
19 (cd $$i && echo "making $$target in $(DIR)/$$i..." && \ 19 (cd $$i && echo "making $$target in $(DIR)/$$i..." && \
20 $(MAKE) -e TOP=../.. DIR=$$i INCLUDES='${INCLUDES}' $$target ) || exit 1; \ 20 $(MAKE) -e TOP=../.. DIR=$$i INCLUDES='$(INCLUDES)' $$target ) || exit 1; \
21 done; 21 done;
22 22
23PEX_LIBS= 23PEX_LIBS=
@@ -26,6 +26,7 @@ EX_LIBS=
26CFLAGS= $(INCLUDE) $(CFLAG) 26CFLAGS= $(INCLUDE) $(CFLAG)
27ASFLAGS= $(INCLUDE) $(ASFLAG) 27ASFLAGS= $(INCLUDE) $(ASFLAG)
28AFLAGS=$(ASFLAGS) 28AFLAGS=$(ASFLAGS)
29CPUID_OBJ=mem_clr.o
29 30
30LIBS= 31LIBS=
31 32
@@ -33,12 +34,12 @@ GENERAL=Makefile README crypto-lib.com install.com
33 34
34LIB= $(TOP)/libcrypto.a 35LIB= $(TOP)/libcrypto.a
35SHARED_LIB= libcrypto$(SHLIB_EXT) 36SHARED_LIB= libcrypto$(SHLIB_EXT)
36LIBSRC= cryptlib.c dyn_lck.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c tmdiff.c cpt_err.c ebcdic.c uid.c o_time.c o_str.c o_dir.c o_init.c fips_err.c 37LIBSRC= cryptlib.c mem.c mem_clr.c mem_dbg.c cversion.c ex_data.c cpt_err.c ebcdic.c uid.c o_time.c o_str.c o_dir.c
37LIBOBJ= cryptlib.o dyn_lck.o mem.o mem_clr.o mem_dbg.o cversion.o ex_data.o tmdiff.o cpt_err.o ebcdic.o uid.o o_time.o o_str.o o_dir.o o_init.o fips_err.o $(CPUID_OBJ) 38LIBOBJ= cryptlib.o mem.o mem_dbg.o cversion.o ex_data.o cpt_err.o ebcdic.o uid.o o_time.o o_str.o o_dir.o $(CPUID_OBJ)
38 39
39SRC= $(LIBSRC) 40SRC= $(LIBSRC)
40 41
41EXHEADER= crypto.h tmdiff.h opensslv.h opensslconf.h ebcdic.h symhacks.h \ 42EXHEADER= crypto.h opensslv.h opensslconf.h ebcdic.h symhacks.h \
42 ossl_typ.h 43 ossl_typ.h
43HEADER= cryptlib.h buildinf.h md32_common.h o_time.h o_str.h o_dir.h $(EXHEADER) 44HEADER= cryptlib.h buildinf.h md32_common.h o_time.h o_str.h o_dir.h $(EXHEADER)
44 45
@@ -47,7 +48,7 @@ ALL= $(GENERAL) $(SRC) $(HEADER)
47top: 48top:
48 @(cd ..; $(MAKE) DIRS=$(DIR) all) 49 @(cd ..; $(MAKE) DIRS=$(DIR) all)
49 50
50all: lib 51all: shared
51 52
52buildinf.h: ../Makefile 53buildinf.h: ../Makefile
53 ( echo "#ifndef MK1MF_BUILD"; \ 54 ( echo "#ifndef MK1MF_BUILD"; \
@@ -57,26 +58,26 @@ buildinf.h: ../Makefile
57 echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \ 58 echo " #define DATE \"`LC_ALL=C LC_TIME=C date`\""; \
58 echo '#endif' ) >buildinf.h 59 echo '#endif' ) >buildinf.h
59 60
60x86cpuid-elf.s: x86cpuid.pl perlasm/x86asm.pl 61x86cpuid.s: x86cpuid.pl perlasm/x86asm.pl
61 $(PERL) x86cpuid.pl elf $(CFLAGS) $(PROCESSOR) > $@ 62 $(PERL) x86cpuid.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
62x86cpuid-cof.s: x86cpuid.pl perlasm/x86asm.pl
63 $(PERL) x86cpuid.pl coff $(CFLAGS) $(PROCESSOR) > $@
64x86cpuid-out.s: x86cpuid.pl perlasm/x86asm.pl
65 $(PERL) x86cpuid.pl a.out $(CFLAGS) $(PROCESSOR) > $@
66 63
67uplink.o: ../ms/uplink.c 64applink.o: $(TOP)/ms/applink.c
68 $(CC) $(CFLAGS) -c -o $@ ../ms/uplink.c 65 $(CC) $(CFLAGS) -c -o $@ $(TOP)/ms/applink.c
69 66
70uplink-cof.s: ../ms/uplink.pl 67uplink.o: $(TOP)/ms/uplink.c applink.o
71 $(PERL) ../ms/uplink.pl coff > $@ 68 $(CC) $(CFLAGS) -c -o $@ $(TOP)/ms/uplink.c
69
70uplink-cof.s: $(TOP)/ms/uplink.pl
71 $(PERL) $(TOP)/ms/uplink.pl coff > $@
72 72
73x86_64cpuid.s: x86_64cpuid.pl 73x86_64cpuid.s: x86_64cpuid.pl
74 $(PERL) x86_64cpuid.pl $@ 74 $(PERL) x86_64cpuid.pl $(PERLASM_SCHEME) > $@
75ia64cpuid.s: ia64cpuid.S 75ia64cpuid.s: ia64cpuid.S
76 $(CC) $(CFLAGS) -E ia64cpuid.S > $@ 76 $(CC) $(CFLAGS) -E ia64cpuid.S > $@
77ppccpuid.s: ppccpuid.pl; $(PERL) ppccpuid.pl $(PERLASM_SCHEME) $@
77 78
78testapps: 79testapps:
79 [ -z "$(THIS)" ] || ( if echo ${SDIRS} | fgrep ' des '; \ 80 [ -z "$(THIS)" ] || ( if echo $(SDIRS) | fgrep ' des '; \
80 then cd des && $(MAKE) -e des; fi ) 81 then cd des && $(MAKE) -e des; fi )
81 [ -z "$(THIS)" ] || ( cd pkcs7 && $(MAKE) -e testapps ); 82 [ -z "$(THIS)" ] || ( cd pkcs7 && $(MAKE) -e testapps );
82 @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi 83 @if [ -z "$(THIS)" ]; then $(MAKE) -f $(TOP)/Makefile reflect THIS=$@; fi
@@ -94,11 +95,11 @@ links:
94 @$(PERL) $(TOP)/util/mklink.pl ../apps $(APPS) 95 @$(PERL) $(TOP)/util/mklink.pl ../apps $(APPS)
95 @target=links; $(RECURSIVE_MAKE) 96 @target=links; $(RECURSIVE_MAKE)
96 97
97# lib: and $(LIB): are splitted to avoid end-less loop 98# lib: $(LIB): are splitted to avoid end-less loop
98lib: buildinf.h $(LIB) subdirs 99lib: $(LIB)
99 @touch lib 100 @touch lib
100$(LIB): $(LIBOBJ) 101$(LIB): $(LIBOBJ)
101 $(ARX) $(LIB) $(LIBOBJ) 102 $(AR) $(LIB) $(LIBOBJ)
102 $(RANLIB) $(LIB) || echo Never mind. 103 $(RANLIB) $(LIB) || echo Never mind.
103 104
104shared: buildinf.h lib subdirs 105shared: buildinf.h lib subdirs
@@ -135,6 +136,7 @@ clean:
135dclean: 136dclean:
136 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new 137 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
137 mv -f Makefile.new $(MAKEFILE) 138 mv -f Makefile.new $(MAKEFILE)
139 rm -f opensslconf.h
138 @target=dclean; $(RECURSIVE_MAKE) 140 @target=dclean; $(RECURSIVE_MAKE)
139 141
140# DO NOT DELETE THIS LINE -- make depend depends on it. 142# DO NOT DELETE THIS LINE -- make depend depends on it.
@@ -159,13 +161,6 @@ cversion.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
159cversion.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 161cversion.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
160cversion.o: ../include/openssl/stack.h ../include/openssl/symhacks.h buildinf.h 162cversion.o: ../include/openssl/stack.h ../include/openssl/symhacks.h buildinf.h
161cversion.o: cryptlib.h cversion.c 163cversion.o: cryptlib.h cversion.c
162dyn_lck.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
163dyn_lck.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
164dyn_lck.o: ../include/openssl/err.h ../include/openssl/lhash.h
165dyn_lck.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
166dyn_lck.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
167dyn_lck.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
168dyn_lck.o: dyn_lck.c
169ebcdic.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h ebcdic.c 164ebcdic.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h ebcdic.c
170ex_data.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h 165ex_data.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
171ex_data.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 166ex_data.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
@@ -174,13 +169,6 @@ ex_data.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
174ex_data.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 169ex_data.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
175ex_data.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h 170ex_data.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
176ex_data.o: ex_data.c 171ex_data.o: ex_data.c
177fips_err.o: ../include/openssl/bio.h ../include/openssl/crypto.h
178fips_err.o: ../include/openssl/e_os2.h ../include/openssl/err.h
179fips_err.o: ../include/openssl/fips.h ../include/openssl/lhash.h
180fips_err.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
181fips_err.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
182fips_err.o: ../include/openssl/stack.h ../include/openssl/symhacks.h fips_err.c
183fips_err.o: fips_err.h
184mem.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h 172mem.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
185mem.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 173mem.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
186mem.o: ../include/openssl/err.h ../include/openssl/lhash.h 174mem.o: ../include/openssl/err.h ../include/openssl/lhash.h
@@ -201,23 +189,10 @@ mem_dbg.o: ../include/openssl/stack.h ../include/openssl/symhacks.h cryptlib.h
201mem_dbg.o: mem_dbg.c 189mem_dbg.o: mem_dbg.c
202o_dir.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h 190o_dir.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
203o_dir.o: LPdir_unix.c o_dir.c o_dir.h 191o_dir.o: LPdir_unix.c o_dir.c o_dir.h
204o_init.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/crypto.h
205o_init.o: ../include/openssl/e_os2.h ../include/openssl/err.h
206o_init.o: ../include/openssl/lhash.h ../include/openssl/opensslconf.h
207o_init.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
208o_init.o: ../include/openssl/safestack.h ../include/openssl/stack.h
209o_init.o: ../include/openssl/symhacks.h o_init.c
210o_str.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h 192o_str.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
211o_str.o: o_str.c o_str.h 193o_str.o: o_str.c o_str.h
212o_time.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h o_time.c 194o_time.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h o_time.c
213o_time.o: o_time.h 195o_time.o: o_time.h
214tmdiff.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/buffer.h
215tmdiff.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
216tmdiff.o: ../include/openssl/err.h ../include/openssl/lhash.h
217tmdiff.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
218tmdiff.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
219tmdiff.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
220tmdiff.o: ../include/openssl/tmdiff.h cryptlib.h tmdiff.c
221uid.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 196uid.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
222uid.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 197uid.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
223uid.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 198uid.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
diff --git a/src/lib/libssl/src/crypto/aes/Makefile b/src/lib/libssl/src/crypto/aes/Makefile
index 9d174f4c3e..c501a43a8f 100644
--- a/src/lib/libssl/src/crypto/aes/Makefile
+++ b/src/lib/libssl/src/crypto/aes/Makefile
@@ -11,7 +11,7 @@ CFLAG=-g
11MAKEFILE= Makefile 11MAKEFILE= Makefile
12AR= ar r 12AR= ar r
13 13
14AES_ASM_OBJ=aes_core.o aes_cbc.o 14AES_ENC=aes_core.o aes_cbc.o
15 15
16CFLAGS= $(INCLUDES) $(CFLAG) 16CFLAGS= $(INCLUDES) $(CFLAG)
17ASFLAGS= $(INCLUDES) $(ASFLAG) 17ASFLAGS= $(INCLUDES) $(ASFLAG)
@@ -26,7 +26,7 @@ LIB=$(TOP)/libcrypto.a
26LIBSRC=aes_core.c aes_misc.c aes_ecb.c aes_cbc.c aes_cfb.c aes_ofb.c \ 26LIBSRC=aes_core.c aes_misc.c aes_ecb.c aes_cbc.c aes_cfb.c aes_ofb.c \
27 aes_ctr.c aes_ige.c aes_wrap.c 27 aes_ctr.c aes_ige.c aes_wrap.c
28LIBOBJ=aes_misc.o aes_ecb.o aes_cfb.o aes_ofb.o aes_ctr.o aes_ige.o aes_wrap.o \ 28LIBOBJ=aes_misc.o aes_ecb.o aes_cfb.o aes_ofb.o aes_ctr.o aes_ige.o aes_wrap.o \
29 $(AES_ASM_OBJ) 29 $(AES_ENC)
30 30
31SRC= $(LIBSRC) 31SRC= $(LIBSRC)
32 32
@@ -41,24 +41,27 @@ top:
41all: lib 41all: lib
42 42
43lib: $(LIBOBJ) 43lib: $(LIBOBJ)
44 $(ARX) $(LIB) $(LIBOBJ) 44 $(AR) $(LIB) $(LIBOBJ)
45 $(RANLIB) $(LIB) || echo Never mind. 45 $(RANLIB) $(LIB) || echo Never mind.
46 @touch lib 46 @touch lib
47 47
48$(LIBOBJ): $(LIBSRC)
49
50aes-ia64.s: asm/aes-ia64.S 48aes-ia64.s: asm/aes-ia64.S
51 $(CC) $(CFLAGS) -E asm/aes-ia64.S > $@ 49 $(CC) $(CFLAGS) -E asm/aes-ia64.S > $@
52 50
53ax86-elf.s: asm/aes-586.pl ../perlasm/x86asm.pl 51aes-586.s: asm/aes-586.pl ../perlasm/x86asm.pl
54 (cd asm; $(PERL) aes-586.pl elf $(CFLAGS) $(PROCESSOR) > ../$@) 52 $(PERL) asm/aes-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
55ax86-cof.s: asm/aes-586.pl ../perlasm/x86asm.pl
56 (cd asm; $(PERL) aes-586.pl coff $(CFLAGS) $(PROCESSOR) > ../$@)
57ax86-out.s: asm/aes-586.pl ../perlasm/x86asm.pl
58 (cd asm; $(PERL) aes-586.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
59 53
60aes-x86_64.s: asm/aes-x86_64.pl 54aes-x86_64.s: asm/aes-x86_64.pl
61 $(PERL) asm/aes-x86_64.pl $@ 55 $(PERL) asm/aes-x86_64.pl $(PERLASM_SCHEME) > $@
56
57aes-sparcv9.s: asm/aes-sparcv9.pl
58 $(PERL) asm/aes-sparcv9.pl $(CFLAGS) > $@
59
60aes-ppc.s: asm/aes-ppc.pl
61 $(PERL) asm/aes-ppc.pl $(PERLASM_SCHEME) $@
62
63# GNU make "catch all"
64aes-%.s: asm/aes-%.pl; $(PERL) $< $(CFLAGS) > $@
62 65
63files: 66files:
64 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 67 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -97,16 +100,14 @@ clean:
97 100
98# DO NOT DELETE THIS LINE -- make depend depends on it. 101# DO NOT DELETE THIS LINE -- make depend depends on it.
99 102
100aes_cbc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 103aes_cbc.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
101aes_cbc.o: ../../include/openssl/opensslconf.h aes_cbc.c aes_locl.h 104aes_cbc.o: ../../include/openssl/opensslconf.h aes_cbc.c
102aes_cfb.o: ../../e_os.h ../../include/openssl/aes.h 105aes_cfb.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
103aes_cfb.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 106aes_cfb.o: ../../include/openssl/opensslconf.h aes_cfb.c
104aes_cfb.o: aes_cfb.c aes_locl.h
105aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 107aes_core.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
106aes_core.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h 108aes_core.o: ../../include/openssl/opensslconf.h aes_core.c aes_locl.h
107aes_core.o: aes_core.c aes_locl.h 109aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
108aes_ctr.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 110aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c
109aes_ctr.o: ../../include/openssl/opensslconf.h aes_ctr.c aes_locl.h
110aes_ecb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 111aes_ecb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
111aes_ecb.o: ../../include/openssl/opensslconf.h aes_ecb.c aes_locl.h 112aes_ecb.o: ../../include/openssl/opensslconf.h aes_ecb.c aes_locl.h
112aes_ige.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/bio.h 113aes_ige.o: ../../e_os.h ../../include/openssl/aes.h ../../include/openssl/bio.h
@@ -119,8 +120,8 @@ aes_ige.o: ../../include/openssl/symhacks.h ../cryptlib.h aes_ige.c aes_locl.h
119aes_misc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 120aes_misc.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h
120aes_misc.o: ../../include/openssl/opensslconf.h 121aes_misc.o: ../../include/openssl/opensslconf.h
121aes_misc.o: ../../include/openssl/opensslv.h aes_locl.h aes_misc.c 122aes_misc.o: ../../include/openssl/opensslv.h aes_locl.h aes_misc.c
122aes_ofb.o: ../../include/openssl/aes.h ../../include/openssl/e_os2.h 123aes_ofb.o: ../../include/openssl/aes.h ../../include/openssl/modes.h
123aes_ofb.o: ../../include/openssl/opensslconf.h aes_locl.h aes_ofb.c 124aes_ofb.o: ../../include/openssl/opensslconf.h aes_ofb.c
124aes_wrap.o: ../../e_os.h ../../include/openssl/aes.h 125aes_wrap.o: ../../e_os.h ../../include/openssl/aes.h
125aes_wrap.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 126aes_wrap.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
126aes_wrap.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 127aes_wrap.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
diff --git a/src/lib/libssl/src/crypto/aes/aes.h b/src/lib/libssl/src/crypto/aes/aes.h
index 450f2b4051..d2c99730fe 100644
--- a/src/lib/libssl/src/crypto/aes/aes.h
+++ b/src/lib/libssl/src/crypto/aes/aes.h
@@ -58,6 +58,8 @@
58#error AES is disabled. 58#error AES is disabled.
59#endif 59#endif
60 60
61#include <stddef.h>
62
61#define AES_ENCRYPT 1 63#define AES_ENCRYPT 1
62#define AES_DECRYPT 0 64#define AES_DECRYPT 0
63 65
@@ -66,10 +68,6 @@
66#define AES_MAXNR 14 68#define AES_MAXNR 14
67#define AES_BLOCK_SIZE 16 69#define AES_BLOCK_SIZE 16
68 70
69#ifdef OPENSSL_FIPS
70#define FIPS_AES_SIZE_T int
71#endif
72
73#ifdef __cplusplus 71#ifdef __cplusplus
74extern "C" { 72extern "C" {
75#endif 73#endif
@@ -100,37 +98,32 @@ void AES_decrypt(const unsigned char *in, unsigned char *out,
100void AES_ecb_encrypt(const unsigned char *in, unsigned char *out, 98void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,
101 const AES_KEY *key, const int enc); 99 const AES_KEY *key, const int enc);
102void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, 100void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
103 const unsigned long length, const AES_KEY *key, 101 size_t length, const AES_KEY *key,
104 unsigned char *ivec, const int enc); 102 unsigned char *ivec, const int enc);
105void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out, 103void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
106 const unsigned long length, const AES_KEY *key, 104 size_t length, const AES_KEY *key,
107 unsigned char *ivec, int *num, const int enc); 105 unsigned char *ivec, int *num, const int enc);
108void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out, 106void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
109 const unsigned long length, const AES_KEY *key, 107 size_t length, const AES_KEY *key,
110 unsigned char *ivec, int *num, const int enc); 108 unsigned char *ivec, int *num, const int enc);
111void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out, 109void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
112 const unsigned long length, const AES_KEY *key, 110 size_t length, const AES_KEY *key,
113 unsigned char *ivec, int *num, const int enc); 111 unsigned char *ivec, int *num, const int enc);
114void AES_cfbr_encrypt_block(const unsigned char *in,unsigned char *out,
115 const int nbits,const AES_KEY *key,
116 unsigned char *ivec,const int enc);
117void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out, 112void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
118 const unsigned long length, const AES_KEY *key, 113 size_t length, const AES_KEY *key,
119 unsigned char *ivec, int *num); 114 unsigned char *ivec, int *num);
120void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out, 115void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
121 const unsigned long length, const AES_KEY *key, 116 size_t length, const AES_KEY *key,
122 unsigned char ivec[AES_BLOCK_SIZE], 117 unsigned char ivec[AES_BLOCK_SIZE],
123 unsigned char ecount_buf[AES_BLOCK_SIZE], 118 unsigned char ecount_buf[AES_BLOCK_SIZE],
124 unsigned int *num); 119 unsigned int *num);
125
126/* For IGE, see also http://www.links.org/files/openssl-ige.pdf */
127/* NB: the IV is _two_ blocks long */ 120/* NB: the IV is _two_ blocks long */
128void AES_ige_encrypt(const unsigned char *in, unsigned char *out, 121void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
129 const unsigned long length, const AES_KEY *key, 122 size_t length, const AES_KEY *key,
130 unsigned char *ivec, const int enc); 123 unsigned char *ivec, const int enc);
131/* NB: the IV is _four_ blocks long */ 124/* NB: the IV is _four_ blocks long */
132void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out, 125void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
133 const unsigned long length, const AES_KEY *key, 126 size_t length, const AES_KEY *key,
134 const AES_KEY *key2, const unsigned char *ivec, 127 const AES_KEY *key2, const unsigned char *ivec,
135 const int enc); 128 const int enc);
136 129
@@ -141,6 +134,7 @@ int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
141 unsigned char *out, 134 unsigned char *out,
142 const unsigned char *in, unsigned int inlen); 135 const unsigned char *in, unsigned int inlen);
143 136
137
144#ifdef __cplusplus 138#ifdef __cplusplus
145} 139}
146#endif 140#endif
diff --git a/src/lib/libssl/src/crypto/aes/aes_cbc.c b/src/lib/libssl/src/crypto/aes/aes_cbc.c
index 373864cd4b..227f75625d 100644
--- a/src/lib/libssl/src/crypto/aes/aes_cbc.c
+++ b/src/lib/libssl/src/crypto/aes/aes_cbc.c
@@ -49,85 +49,15 @@
49 * 49 *
50 */ 50 */
51 51
52#ifndef AES_DEBUG
53# ifndef NDEBUG
54# define NDEBUG
55# endif
56#endif
57#include <assert.h>
58
59#include <openssl/aes.h> 52#include <openssl/aes.h>
60#include "aes_locl.h" 53#include <openssl/modes.h>
61 54
62#if !defined(OPENSSL_FIPS_AES_ASM)
63void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, 55void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
64 const unsigned long length, const AES_KEY *key, 56 size_t len, const AES_KEY *key,
65 unsigned char *ivec, const int enc) { 57 unsigned char *ivec, const int enc) {
66 58
67 unsigned long n; 59 if (enc)
68 unsigned long len = length; 60 CRYPTO_cbc128_encrypt(in,out,len,key,ivec,(block128_f)AES_encrypt);
69 unsigned char tmp[AES_BLOCK_SIZE]; 61 else
70 const unsigned char *iv = ivec; 62 CRYPTO_cbc128_decrypt(in,out,len,key,ivec,(block128_f)AES_decrypt);
71
72 assert(in && out && key && ivec);
73 assert((AES_ENCRYPT == enc)||(AES_DECRYPT == enc));
74
75 if (AES_ENCRYPT == enc) {
76 while (len >= AES_BLOCK_SIZE) {
77 for(n=0; n < AES_BLOCK_SIZE; ++n)
78 out[n] = in[n] ^ iv[n];
79 AES_encrypt(out, out, key);
80 iv = out;
81 len -= AES_BLOCK_SIZE;
82 in += AES_BLOCK_SIZE;
83 out += AES_BLOCK_SIZE;
84 }
85 if (len) {
86 for(n=0; n < len; ++n)
87 out[n] = in[n] ^ iv[n];
88 for(n=len; n < AES_BLOCK_SIZE; ++n)
89 out[n] = iv[n];
90 AES_encrypt(out, out, key);
91 iv = out;
92 }
93 memcpy(ivec,iv,AES_BLOCK_SIZE);
94 } else if (in != out) {
95 while (len >= AES_BLOCK_SIZE) {
96 AES_decrypt(in, out, key);
97 for(n=0; n < AES_BLOCK_SIZE; ++n)
98 out[n] ^= iv[n];
99 iv = in;
100 len -= AES_BLOCK_SIZE;
101 in += AES_BLOCK_SIZE;
102 out += AES_BLOCK_SIZE;
103 }
104 if (len) {
105 AES_decrypt(in,tmp,key);
106 for(n=0; n < len; ++n)
107 out[n] = tmp[n] ^ iv[n];
108 iv = in;
109 }
110 memcpy(ivec,iv,AES_BLOCK_SIZE);
111 } else {
112 while (len >= AES_BLOCK_SIZE) {
113 memcpy(tmp, in, AES_BLOCK_SIZE);
114 AES_decrypt(in, out, key);
115 for(n=0; n < AES_BLOCK_SIZE; ++n)
116 out[n] ^= ivec[n];
117 memcpy(ivec, tmp, AES_BLOCK_SIZE);
118 len -= AES_BLOCK_SIZE;
119 in += AES_BLOCK_SIZE;
120 out += AES_BLOCK_SIZE;
121 }
122 if (len) {
123 memcpy(tmp, in, AES_BLOCK_SIZE);
124 AES_decrypt(tmp, out, key);
125 for(n=0; n < len; ++n)
126 out[n] ^= ivec[n];
127 for(n=len; n < AES_BLOCK_SIZE; ++n)
128 out[n] = tmp[n];
129 memcpy(ivec, tmp, AES_BLOCK_SIZE);
130 }
131 }
132} 63}
133#endif
diff --git a/src/lib/libssl/src/crypto/aes/aes_cfb.c b/src/lib/libssl/src/crypto/aes/aes_cfb.c
index 49f0411010..0c6d058ce7 100644
--- a/src/lib/libssl/src/crypto/aes/aes_cfb.c
+++ b/src/lib/libssl/src/crypto/aes/aes_cfb.c
@@ -1,6 +1,6 @@
1/* crypto/aes/aes_cfb.c -*- mode:C; c-file-style: "eay" -*- */ 1/* crypto/aes/aes_cfb.c -*- mode:C; c-file-style: "eay" -*- */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 2002-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -48,73 +48,9 @@
48 * ==================================================================== 48 * ====================================================================
49 * 49 *
50 */ 50 */
51/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
52 * All rights reserved.
53 *
54 * This package is an SSL implementation written
55 * by Eric Young (eay@cryptsoft.com).
56 * The implementation was written so as to conform with Netscapes SSL.
57 *
58 * This library is free for commercial and non-commercial use as long as
59 * the following conditions are aheared to. The following conditions
60 * apply to all code found in this distribution, be it the RC4, RSA,
61 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
62 * included with this distribution is covered by the same copyright terms
63 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
64 *
65 * Copyright remains Eric Young's, and as such any Copyright notices in
66 * the code are not to be removed.
67 * If this package is used in a product, Eric Young should be given attribution
68 * as the author of the parts of the library used.
69 * This can be in the form of a textual message at program startup or
70 * in documentation (online or textual) provided with the package.
71 *
72 * Redistribution and use in source and binary forms, with or without
73 * modification, are permitted provided that the following conditions
74 * are met:
75 * 1. Redistributions of source code must retain the copyright
76 * notice, this list of conditions and the following disclaimer.
77 * 2. Redistributions in binary form must reproduce the above copyright
78 * notice, this list of conditions and the following disclaimer in the
79 * documentation and/or other materials provided with the distribution.
80 * 3. All advertising materials mentioning features or use of this software
81 * must display the following acknowledgement:
82 * "This product includes cryptographic software written by
83 * Eric Young (eay@cryptsoft.com)"
84 * The word 'cryptographic' can be left out if the rouines from the library
85 * being used are not cryptographic related :-).
86 * 4. If you include any Windows specific code (or a derivative thereof) from
87 * the apps directory (application code) you must include an acknowledgement:
88 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
89 *
90 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
91 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
92 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
93 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
94 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
95 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
96 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
97 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
98 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
99 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
100 * SUCH DAMAGE.
101 *
102 * The licence and distribution terms for any publically available version or
103 * derivative of this code cannot be changed. i.e. this code cannot simply be
104 * copied and put under another distribution licence
105 * [including the GNU Public Licence.]
106 */
107
108#ifndef AES_DEBUG
109# ifndef NDEBUG
110# define NDEBUG
111# endif
112#endif
113#include <assert.h>
114 51
115#include <openssl/aes.h> 52#include <openssl/aes.h>
116#include "aes_locl.h" 53#include <openssl/modes.h>
117#include "e_os.h"
118 54
119/* The input and output encrypted as though 128bit cfb mode is being 55/* The input and output encrypted as though 128bit cfb mode is being
120 * used. The extra state information to record how much of the 56 * used. The extra state information to record how much of the
@@ -122,104 +58,24 @@
122 */ 58 */
123 59
124void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out, 60void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
125 const unsigned long length, const AES_KEY *key, 61 size_t length, const AES_KEY *key,
126 unsigned char *ivec, int *num, const int enc) { 62 unsigned char *ivec, int *num, const int enc) {
127 63
128 unsigned int n; 64 CRYPTO_cfb128_encrypt(in,out,length,key,ivec,num,enc,(block128_f)AES_encrypt);
129 unsigned long l = length;
130 unsigned char c;
131
132 assert(in && out && key && ivec && num);
133
134 n = *num;
135
136 if (enc) {
137 while (l--) {
138 if (n == 0) {
139 AES_encrypt(ivec, ivec, key);
140 }
141 ivec[n] = *(out++) = *(in++) ^ ivec[n];
142 n = (n+1) % AES_BLOCK_SIZE;
143 }
144 } else {
145 while (l--) {
146 if (n == 0) {
147 AES_encrypt(ivec, ivec, key);
148 }
149 c = *(in);
150 *(out++) = *(in++) ^ ivec[n];
151 ivec[n] = c;
152 n = (n+1) % AES_BLOCK_SIZE;
153 }
154 }
155
156 *num=n;
157} 65}
158 66
159/* This expects a single block of size nbits for both in and out. Note that
160 it corrupts any extra bits in the last byte of out */
161void AES_cfbr_encrypt_block(const unsigned char *in,unsigned char *out,
162 const int nbits,const AES_KEY *key,
163 unsigned char *ivec,const int enc)
164 {
165 int n,rem,num;
166 unsigned char ovec[AES_BLOCK_SIZE*2];
167
168 if (nbits<=0 || nbits>128) return;
169
170 /* fill in the first half of the new IV with the current IV */
171 memcpy(ovec,ivec,AES_BLOCK_SIZE);
172 /* construct the new IV */
173 AES_encrypt(ivec,ivec,key);
174 num = (nbits+7)/8;
175 if (enc) /* encrypt the input */
176 for(n=0 ; n < num ; ++n)
177 out[n] = (ovec[AES_BLOCK_SIZE+n] = in[n] ^ ivec[n]);
178 else /* decrypt the input */
179 for(n=0 ; n < num ; ++n)
180 out[n] = (ovec[AES_BLOCK_SIZE+n] = in[n]) ^ ivec[n];
181 /* shift ovec left... */
182 rem = nbits%8;
183 num = nbits/8;
184 if(rem==0)
185 memcpy(ivec,ovec+num,AES_BLOCK_SIZE);
186 else
187 for(n=0 ; n < AES_BLOCK_SIZE ; ++n)
188 ivec[n] = ovec[n+num]<<rem | ovec[n+num+1]>>(8-rem);
189
190 /* it is not necessary to cleanse ovec, since the IV is not secret */
191 }
192
193/* N.B. This expects the input to be packed, MS bit first */ 67/* N.B. This expects the input to be packed, MS bit first */
194void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out, 68void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
195 const unsigned long length, const AES_KEY *key, 69 size_t length, const AES_KEY *key,
196 unsigned char *ivec, int *num, const int enc) 70 unsigned char *ivec, int *num, const int enc)
197 { 71 {
198 unsigned int n; 72 CRYPTO_cfb128_1_encrypt(in,out,length,key,ivec,num,enc,(block128_f)AES_encrypt);
199 unsigned char c[1],d[1];
200
201 assert(in && out && key && ivec && num);
202 assert(*num == 0);
203
204 memset(out,0,(length+7)/8);
205 for(n=0 ; n < length ; ++n)
206 {
207 c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0;
208 AES_cfbr_encrypt_block(c,d,1,key,ivec,enc);
209 out[n/8]=(out[n/8]&~(1 << (7-n%8)))|((d[0]&0x80) >> (n%8));
210 }
211 } 73 }
212 74
213void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out, 75void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
214 const unsigned long length, const AES_KEY *key, 76 size_t length, const AES_KEY *key,
215 unsigned char *ivec, int *num, const int enc) 77 unsigned char *ivec, int *num, const int enc)
216 { 78 {
217 unsigned int n; 79 CRYPTO_cfb128_8_encrypt(in,out,length,key,ivec,num,enc,(block128_f)AES_encrypt);
218
219 assert(in && out && key && ivec && num);
220 assert(*num == 0);
221
222 for(n=0 ; n < length ; ++n)
223 AES_cfbr_encrypt_block(&in[n],&out[n],8,key,ivec,enc);
224 } 80 }
225 81
diff --git a/src/lib/libssl/src/crypto/aes/aes_core.c b/src/lib/libssl/src/crypto/aes/aes_core.c
index cffdd4daec..a7ec54f4da 100644
--- a/src/lib/libssl/src/crypto/aes/aes_core.c
+++ b/src/lib/libssl/src/crypto/aes/aes_core.c
@@ -37,12 +37,9 @@
37 37
38#include <stdlib.h> 38#include <stdlib.h>
39#include <openssl/aes.h> 39#include <openssl/aes.h>
40#ifdef OPENSSL_FIPS
41#include <openssl/fips.h>
42#endif
43
44#include "aes_locl.h" 40#include "aes_locl.h"
45 41
42#ifndef AES_ASM
46/* 43/*
47Te0[x] = S [x].[02, 01, 01, 03]; 44Te0[x] = S [x].[02, 01, 01, 03];
48Te1[x] = S [x].[03, 02, 01, 01]; 45Te1[x] = S [x].[03, 02, 01, 01];
@@ -635,10 +632,6 @@ int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
635 int i = 0; 632 int i = 0;
636 u32 temp; 633 u32 temp;
637 634
638#ifdef OPENSSL_FIPS
639 FIPS_selftest_check();
640#endif
641
642 if (!userKey || !key) 635 if (!userKey || !key)
643 return -1; 636 return -1;
644 if (bits != 128 && bits != 192 && bits != 256) 637 if (bits != 128 && bits != 192 && bits != 256)
@@ -781,7 +774,6 @@ int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
781 return 0; 774 return 0;
782} 775}
783 776
784#ifndef AES_ASM
785/* 777/*
786 * Encrypt a single block 778 * Encrypt a single block
787 * in and out can overlap 779 * in and out can overlap
@@ -1164,4 +1156,203 @@ void AES_decrypt(const unsigned char *in, unsigned char *out,
1164 PUTU32(out + 12, s3); 1156 PUTU32(out + 12, s3);
1165} 1157}
1166 1158
1159#else /* AES_ASM */
1160
1161static const u8 Te4[256] = {
1162 0x63U, 0x7cU, 0x77U, 0x7bU, 0xf2U, 0x6bU, 0x6fU, 0xc5U,
1163 0x30U, 0x01U, 0x67U, 0x2bU, 0xfeU, 0xd7U, 0xabU, 0x76U,
1164 0xcaU, 0x82U, 0xc9U, 0x7dU, 0xfaU, 0x59U, 0x47U, 0xf0U,
1165 0xadU, 0xd4U, 0xa2U, 0xafU, 0x9cU, 0xa4U, 0x72U, 0xc0U,
1166 0xb7U, 0xfdU, 0x93U, 0x26U, 0x36U, 0x3fU, 0xf7U, 0xccU,
1167 0x34U, 0xa5U, 0xe5U, 0xf1U, 0x71U, 0xd8U, 0x31U, 0x15U,
1168 0x04U, 0xc7U, 0x23U, 0xc3U, 0x18U, 0x96U, 0x05U, 0x9aU,
1169 0x07U, 0x12U, 0x80U, 0xe2U, 0xebU, 0x27U, 0xb2U, 0x75U,
1170 0x09U, 0x83U, 0x2cU, 0x1aU, 0x1bU, 0x6eU, 0x5aU, 0xa0U,
1171 0x52U, 0x3bU, 0xd6U, 0xb3U, 0x29U, 0xe3U, 0x2fU, 0x84U,
1172 0x53U, 0xd1U, 0x00U, 0xedU, 0x20U, 0xfcU, 0xb1U, 0x5bU,
1173 0x6aU, 0xcbU, 0xbeU, 0x39U, 0x4aU, 0x4cU, 0x58U, 0xcfU,
1174 0xd0U, 0xefU, 0xaaU, 0xfbU, 0x43U, 0x4dU, 0x33U, 0x85U,
1175 0x45U, 0xf9U, 0x02U, 0x7fU, 0x50U, 0x3cU, 0x9fU, 0xa8U,
1176 0x51U, 0xa3U, 0x40U, 0x8fU, 0x92U, 0x9dU, 0x38U, 0xf5U,
1177 0xbcU, 0xb6U, 0xdaU, 0x21U, 0x10U, 0xffU, 0xf3U, 0xd2U,
1178 0xcdU, 0x0cU, 0x13U, 0xecU, 0x5fU, 0x97U, 0x44U, 0x17U,
1179 0xc4U, 0xa7U, 0x7eU, 0x3dU, 0x64U, 0x5dU, 0x19U, 0x73U,
1180 0x60U, 0x81U, 0x4fU, 0xdcU, 0x22U, 0x2aU, 0x90U, 0x88U,
1181 0x46U, 0xeeU, 0xb8U, 0x14U, 0xdeU, 0x5eU, 0x0bU, 0xdbU,
1182 0xe0U, 0x32U, 0x3aU, 0x0aU, 0x49U, 0x06U, 0x24U, 0x5cU,
1183 0xc2U, 0xd3U, 0xacU, 0x62U, 0x91U, 0x95U, 0xe4U, 0x79U,
1184 0xe7U, 0xc8U, 0x37U, 0x6dU, 0x8dU, 0xd5U, 0x4eU, 0xa9U,
1185 0x6cU, 0x56U, 0xf4U, 0xeaU, 0x65U, 0x7aU, 0xaeU, 0x08U,
1186 0xbaU, 0x78U, 0x25U, 0x2eU, 0x1cU, 0xa6U, 0xb4U, 0xc6U,
1187 0xe8U, 0xddU, 0x74U, 0x1fU, 0x4bU, 0xbdU, 0x8bU, 0x8aU,
1188 0x70U, 0x3eU, 0xb5U, 0x66U, 0x48U, 0x03U, 0xf6U, 0x0eU,
1189 0x61U, 0x35U, 0x57U, 0xb9U, 0x86U, 0xc1U, 0x1dU, 0x9eU,
1190 0xe1U, 0xf8U, 0x98U, 0x11U, 0x69U, 0xd9U, 0x8eU, 0x94U,
1191 0x9bU, 0x1eU, 0x87U, 0xe9U, 0xceU, 0x55U, 0x28U, 0xdfU,
1192 0x8cU, 0xa1U, 0x89U, 0x0dU, 0xbfU, 0xe6U, 0x42U, 0x68U,
1193 0x41U, 0x99U, 0x2dU, 0x0fU, 0xb0U, 0x54U, 0xbbU, 0x16U
1194};
1195static const u32 rcon[] = {
1196 0x01000000, 0x02000000, 0x04000000, 0x08000000,
1197 0x10000000, 0x20000000, 0x40000000, 0x80000000,
1198 0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
1199};
1200
1201/**
1202 * Expand the cipher key into the encryption key schedule.
1203 */
1204int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
1205 AES_KEY *key) {
1206 u32 *rk;
1207 int i = 0;
1208 u32 temp;
1209
1210 if (!userKey || !key)
1211 return -1;
1212 if (bits != 128 && bits != 192 && bits != 256)
1213 return -2;
1214
1215 rk = key->rd_key;
1216
1217 if (bits==128)
1218 key->rounds = 10;
1219 else if (bits==192)
1220 key->rounds = 12;
1221 else
1222 key->rounds = 14;
1223
1224 rk[0] = GETU32(userKey );
1225 rk[1] = GETU32(userKey + 4);
1226 rk[2] = GETU32(userKey + 8);
1227 rk[3] = GETU32(userKey + 12);
1228 if (bits == 128) {
1229 while (1) {
1230 temp = rk[3];
1231 rk[4] = rk[0] ^
1232 (Te4[(temp >> 16) & 0xff] << 24) ^
1233 (Te4[(temp >> 8) & 0xff] << 16) ^
1234 (Te4[(temp ) & 0xff] << 8) ^
1235 (Te4[(temp >> 24) ]) ^
1236 rcon[i];
1237 rk[5] = rk[1] ^ rk[4];
1238 rk[6] = rk[2] ^ rk[5];
1239 rk[7] = rk[3] ^ rk[6];
1240 if (++i == 10) {
1241 return 0;
1242 }
1243 rk += 4;
1244 }
1245 }
1246 rk[4] = GETU32(userKey + 16);
1247 rk[5] = GETU32(userKey + 20);
1248 if (bits == 192) {
1249 while (1) {
1250 temp = rk[ 5];
1251 rk[ 6] = rk[ 0] ^
1252 (Te4[(temp >> 16) & 0xff] << 24) ^
1253 (Te4[(temp >> 8) & 0xff] << 16) ^
1254 (Te4[(temp ) & 0xff] << 8) ^
1255 (Te4[(temp >> 24) ]) ^
1256 rcon[i];
1257 rk[ 7] = rk[ 1] ^ rk[ 6];
1258 rk[ 8] = rk[ 2] ^ rk[ 7];
1259 rk[ 9] = rk[ 3] ^ rk[ 8];
1260 if (++i == 8) {
1261 return 0;
1262 }
1263 rk[10] = rk[ 4] ^ rk[ 9];
1264 rk[11] = rk[ 5] ^ rk[10];
1265 rk += 6;
1266 }
1267 }
1268 rk[6] = GETU32(userKey + 24);
1269 rk[7] = GETU32(userKey + 28);
1270 if (bits == 256) {
1271 while (1) {
1272 temp = rk[ 7];
1273 rk[ 8] = rk[ 0] ^
1274 (Te4[(temp >> 16) & 0xff] << 24) ^
1275 (Te4[(temp >> 8) & 0xff] << 16) ^
1276 (Te4[(temp ) & 0xff] << 8) ^
1277 (Te4[(temp >> 24) ]) ^
1278 rcon[i];
1279 rk[ 9] = rk[ 1] ^ rk[ 8];
1280 rk[10] = rk[ 2] ^ rk[ 9];
1281 rk[11] = rk[ 3] ^ rk[10];
1282 if (++i == 7) {
1283 return 0;
1284 }
1285 temp = rk[11];
1286 rk[12] = rk[ 4] ^
1287 (Te4[(temp >> 24) ] << 24) ^
1288 (Te4[(temp >> 16) & 0xff] << 16) ^
1289 (Te4[(temp >> 8) & 0xff] << 8) ^
1290 (Te4[(temp ) & 0xff]);
1291 rk[13] = rk[ 5] ^ rk[12];
1292 rk[14] = rk[ 6] ^ rk[13];
1293 rk[15] = rk[ 7] ^ rk[14];
1294
1295 rk += 8;
1296 }
1297 }
1298 return 0;
1299}
1300
1301/**
1302 * Expand the cipher key into the decryption key schedule.
1303 */
1304int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
1305 AES_KEY *key) {
1306
1307 u32 *rk;
1308 int i, j, status;
1309 u32 temp;
1310
1311 /* first, start with an encryption schedule */
1312 status = AES_set_encrypt_key(userKey, bits, key);
1313 if (status < 0)
1314 return status;
1315
1316 rk = key->rd_key;
1317
1318 /* invert the order of the round keys: */
1319 for (i = 0, j = 4*(key->rounds); i < j; i += 4, j -= 4) {
1320 temp = rk[i ]; rk[i ] = rk[j ]; rk[j ] = temp;
1321 temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;
1322 temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;
1323 temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;
1324 }
1325 /* apply the inverse MixColumn transform to all round keys but the first and the last: */
1326 for (i = 1; i < (key->rounds); i++) {
1327 rk += 4;
1328 for (j = 0; j < 4; j++) {
1329 u32 tp1, tp2, tp4, tp8, tp9, tpb, tpd, tpe, m;
1330
1331 tp1 = rk[j];
1332 m = tp1 & 0x80808080;
1333 tp2 = ((tp1 & 0x7f7f7f7f) << 1) ^
1334 ((m - (m >> 7)) & 0x1b1b1b1b);
1335 m = tp2 & 0x80808080;
1336 tp4 = ((tp2 & 0x7f7f7f7f) << 1) ^
1337 ((m - (m >> 7)) & 0x1b1b1b1b);
1338 m = tp4 & 0x80808080;
1339 tp8 = ((tp4 & 0x7f7f7f7f) << 1) ^
1340 ((m - (m >> 7)) & 0x1b1b1b1b);
1341 tp9 = tp8 ^ tp1;
1342 tpb = tp9 ^ tp2;
1343 tpd = tp9 ^ tp4;
1344 tpe = tp8 ^ tp4 ^ tp2;
1345#if defined(ROTATE)
1346 rk[j] = tpe ^ ROTATE(tpd,16) ^
1347 ROTATE(tp9,24) ^ ROTATE(tpb,8);
1348#else
1349 rk[j] = tpe ^ (tpd >> 16) ^ (tpd << 16) ^
1350 (tp9 >> 8) ^ (tp9 << 24) ^
1351 (tpb >> 24) ^ (tpb << 8);
1352#endif
1353 }
1354 }
1355 return 0;
1356}
1357
1167#endif /* AES_ASM */ 1358#endif /* AES_ASM */
diff --git a/src/lib/libssl/src/crypto/aes/aes_ctr.c b/src/lib/libssl/src/crypto/aes/aes_ctr.c
index f36982be1e..7c9d165d8a 100644
--- a/src/lib/libssl/src/crypto/aes/aes_ctr.c
+++ b/src/lib/libssl/src/crypto/aes/aes_ctr.c
@@ -49,91 +49,13 @@
49 * 49 *
50 */ 50 */
51 51
52#ifndef AES_DEBUG
53# ifndef NDEBUG
54# define NDEBUG
55# endif
56#endif
57#include <assert.h>
58
59#include <openssl/aes.h> 52#include <openssl/aes.h>
60#include "aes_locl.h" 53#include <openssl/modes.h>
61
62/* NOTE: the IV/counter CTR mode is big-endian. The rest of the AES code
63 * is endian-neutral. */
64
65/* increment counter (128-bit int) by 1 */
66static void AES_ctr128_inc(unsigned char *counter) {
67 unsigned long c;
68
69 /* Grab bottom dword of counter and increment */
70 c = GETU32(counter + 12);
71 c++; c &= 0xFFFFFFFF;
72 PUTU32(counter + 12, c);
73
74 /* if no overflow, we're done */
75 if (c)
76 return;
77
78 /* Grab 1st dword of counter and increment */
79 c = GETU32(counter + 8);
80 c++; c &= 0xFFFFFFFF;
81 PUTU32(counter + 8, c);
82
83 /* if no overflow, we're done */
84 if (c)
85 return;
86
87 /* Grab 2nd dword of counter and increment */
88 c = GETU32(counter + 4);
89 c++; c &= 0xFFFFFFFF;
90 PUTU32(counter + 4, c);
91
92 /* if no overflow, we're done */
93 if (c)
94 return;
95 54
96 /* Grab top dword of counter and increment */
97 c = GETU32(counter + 0);
98 c++; c &= 0xFFFFFFFF;
99 PUTU32(counter + 0, c);
100}
101
102/* The input encrypted as though 128bit counter mode is being
103 * used. The extra state information to record how much of the
104 * 128bit block we have used is contained in *num, and the
105 * encrypted counter is kept in ecount_buf. Both *num and
106 * ecount_buf must be initialised with zeros before the first
107 * call to AES_ctr128_encrypt().
108 *
109 * This algorithm assumes that the counter is in the x lower bits
110 * of the IV (ivec), and that the application has full control over
111 * overflow and the rest of the IV. This implementation takes NO
112 * responsability for checking that the counter doesn't overflow
113 * into the rest of the IV when incremented.
114 */
115void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out, 55void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
116 const unsigned long length, const AES_KEY *key, 56 size_t length, const AES_KEY *key,
117 unsigned char ivec[AES_BLOCK_SIZE], 57 unsigned char ivec[AES_BLOCK_SIZE],
118 unsigned char ecount_buf[AES_BLOCK_SIZE], 58 unsigned char ecount_buf[AES_BLOCK_SIZE],
119 unsigned int *num) { 59 unsigned int *num) {
120 60 CRYPTO_ctr128_encrypt(in,out,length,key,ivec,ecount_buf,num,(block128_f)AES_encrypt);
121 unsigned int n;
122 unsigned long l=length;
123
124 assert(in && out && key && counter && num);
125 assert(*num < AES_BLOCK_SIZE);
126
127 n = *num;
128
129 while (l--) {
130 if (n == 0) {
131 AES_encrypt(ivec, ecount_buf, key);
132 AES_ctr128_inc(ivec);
133 }
134 *(out++) = *(in++) ^ ecount_buf[n];
135 n = (n+1) % AES_BLOCK_SIZE;
136 }
137
138 *num=n;
139} 61}
diff --git a/src/lib/libssl/src/crypto/aes/aes_ofb.c b/src/lib/libssl/src/crypto/aes/aes_ofb.c
index f358bb39e2..50bf0b8325 100644
--- a/src/lib/libssl/src/crypto/aes/aes_ofb.c
+++ b/src/lib/libssl/src/crypto/aes/aes_ofb.c
@@ -1,6 +1,6 @@
1/* crypto/aes/aes_ofb.c -*- mode:C; c-file-style: "eay" -*- */ 1/* crypto/aes/aes_ofb.c -*- mode:C; c-file-style: "eay" -*- */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 2002-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -48,95 +48,13 @@
48 * ==================================================================== 48 * ====================================================================
49 * 49 *
50 */ 50 */
51/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
52 * All rights reserved.
53 *
54 * This package is an SSL implementation written
55 * by Eric Young (eay@cryptsoft.com).
56 * The implementation was written so as to conform with Netscapes SSL.
57 *
58 * This library is free for commercial and non-commercial use as long as
59 * the following conditions are aheared to. The following conditions
60 * apply to all code found in this distribution, be it the RC4, RSA,
61 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
62 * included with this distribution is covered by the same copyright terms
63 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
64 *
65 * Copyright remains Eric Young's, and as such any Copyright notices in
66 * the code are not to be removed.
67 * If this package is used in a product, Eric Young should be given attribution
68 * as the author of the parts of the library used.
69 * This can be in the form of a textual message at program startup or
70 * in documentation (online or textual) provided with the package.
71 *
72 * Redistribution and use in source and binary forms, with or without
73 * modification, are permitted provided that the following conditions
74 * are met:
75 * 1. Redistributions of source code must retain the copyright
76 * notice, this list of conditions and the following disclaimer.
77 * 2. Redistributions in binary form must reproduce the above copyright
78 * notice, this list of conditions and the following disclaimer in the
79 * documentation and/or other materials provided with the distribution.
80 * 3. All advertising materials mentioning features or use of this software
81 * must display the following acknowledgement:
82 * "This product includes cryptographic software written by
83 * Eric Young (eay@cryptsoft.com)"
84 * The word 'cryptographic' can be left out if the rouines from the library
85 * being used are not cryptographic related :-).
86 * 4. If you include any Windows specific code (or a derivative thereof) from
87 * the apps directory (application code) you must include an acknowledgement:
88 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
89 *
90 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
91 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
92 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
93 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
94 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
95 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
96 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
97 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
98 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
99 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
100 * SUCH DAMAGE.
101 *
102 * The licence and distribution terms for any publically available version or
103 * derivative of this code cannot be changed. i.e. this code cannot simply be
104 * copied and put under another distribution licence
105 * [including the GNU Public Licence.]
106 */
107
108#ifndef AES_DEBUG
109# ifndef NDEBUG
110# define NDEBUG
111# endif
112#endif
113#include <assert.h>
114 51
115#include <openssl/aes.h> 52#include <openssl/aes.h>
116#include "aes_locl.h" 53#include <openssl/modes.h>
117 54
118/* The input and output encrypted as though 128bit ofb mode is being
119 * used. The extra state information to record how much of the
120 * 128bit block we have used is contained in *num;
121 */
122void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out, 55void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
123 const unsigned long length, const AES_KEY *key, 56 size_t length, const AES_KEY *key,
124 unsigned char *ivec, int *num) { 57 unsigned char *ivec, int *num)
125 58{
126 unsigned int n; 59 CRYPTO_ofb128_encrypt(in,out,length,key,ivec,num,(block128_f)AES_encrypt);
127 unsigned long l=length;
128
129 assert(in && out && key && ivec && num);
130
131 n = *num;
132
133 while (l--) {
134 if (n == 0) {
135 AES_encrypt(ivec, ivec, key);
136 }
137 *(out++) = *(in++) ^ ivec[n];
138 n = (n+1) % AES_BLOCK_SIZE;
139 }
140
141 *num=n;
142} 60}
diff --git a/src/lib/libssl/src/crypto/asn1/Makefile b/src/lib/libssl/src/crypto/asn1/Makefile
index 94a6885804..160544eede 100644
--- a/src/lib/libssl/src/crypto/asn1/Makefile
+++ b/src/lib/libssl/src/crypto/asn1/Makefile
@@ -22,30 +22,32 @@ LIBSRC= a_object.c a_bitstr.c a_utctm.c a_gentm.c a_time.c a_int.c a_octet.c \
22 a_enum.c a_utf8.c a_sign.c a_digest.c a_verify.c a_mbstr.c a_strex.c \ 22 a_enum.c a_utf8.c a_sign.c a_digest.c a_verify.c a_mbstr.c a_strex.c \
23 x_algor.c x_val.c x_pubkey.c x_sig.c x_req.c x_attrib.c x_bignum.c \ 23 x_algor.c x_val.c x_pubkey.c x_sig.c x_req.c x_attrib.c x_bignum.c \
24 x_long.c x_name.c x_x509.c x_x509a.c x_crl.c x_info.c x_spki.c nsseq.c \ 24 x_long.c x_name.c x_x509.c x_x509a.c x_crl.c x_info.c x_spki.c nsseq.c \
25 d2i_pu.c d2i_pr.c i2d_pu.c i2d_pr.c\ 25 x_nx509.c d2i_pu.c d2i_pr.c i2d_pu.c i2d_pr.c\
26 t_req.c t_x509.c t_x509a.c t_crl.c t_pkey.c t_spki.c t_bitst.c \ 26 t_req.c t_x509.c t_x509a.c t_crl.c t_pkey.c t_spki.c t_bitst.c \
27 tasn_new.c tasn_fre.c tasn_enc.c tasn_dec.c tasn_utl.c tasn_typ.c \ 27 tasn_new.c tasn_fre.c tasn_enc.c tasn_dec.c tasn_utl.c tasn_typ.c \
28 tasn_prn.c ameth_lib.c \
28 f_int.c f_string.c n_pkey.c \ 29 f_int.c f_string.c n_pkey.c \
29 f_enum.c a_hdr.c x_pkey.c a_bool.c x_exten.c asn_mime.c \ 30 f_enum.c x_pkey.c a_bool.c x_exten.c bio_asn1.c bio_ndef.c asn_mime.c \
30 asn1_gen.c asn1_par.c asn1_lib.c asn1_err.c a_meth.c a_bytes.c a_strnid.c \ 31 asn1_gen.c asn1_par.c asn1_lib.c asn1_err.c a_bytes.c a_strnid.c \
31 evp_asn1.c asn_pack.c p5_pbe.c p5_pbev2.c p8_pkey.c asn_moid.c 32 evp_asn1.c asn_pack.c p5_pbe.c p5_pbev2.c p8_pkey.c asn_moid.c
32LIBOBJ= a_object.o a_bitstr.o a_utctm.o a_gentm.o a_time.o a_int.o a_octet.o \ 33LIBOBJ= a_object.o a_bitstr.o a_utctm.o a_gentm.o a_time.o a_int.o a_octet.o \
33 a_print.o a_type.o a_set.o a_dup.o a_d2i_fp.o a_i2d_fp.o \ 34 a_print.o a_type.o a_set.o a_dup.o a_d2i_fp.o a_i2d_fp.o \
34 a_enum.o a_utf8.o a_sign.o a_digest.o a_verify.o a_mbstr.o a_strex.o \ 35 a_enum.o a_utf8.o a_sign.o a_digest.o a_verify.o a_mbstr.o a_strex.o \
35 x_algor.o x_val.o x_pubkey.o x_sig.o x_req.o x_attrib.o x_bignum.o \ 36 x_algor.o x_val.o x_pubkey.o x_sig.o x_req.o x_attrib.o x_bignum.o \
36 x_long.o x_name.o x_x509.o x_x509a.o x_crl.o x_info.o x_spki.o nsseq.o \ 37 x_long.o x_name.o x_x509.o x_x509a.o x_crl.o x_info.o x_spki.o nsseq.o \
37 d2i_pu.o d2i_pr.o i2d_pu.o i2d_pr.o \ 38 x_nx509.o d2i_pu.o d2i_pr.o i2d_pu.o i2d_pr.o \
38 t_req.o t_x509.o t_x509a.o t_crl.o t_pkey.o t_spki.o t_bitst.o \ 39 t_req.o t_x509.o t_x509a.o t_crl.o t_pkey.o t_spki.o t_bitst.o \
39 tasn_new.o tasn_fre.o tasn_enc.o tasn_dec.o tasn_utl.o tasn_typ.o \ 40 tasn_new.o tasn_fre.o tasn_enc.o tasn_dec.o tasn_utl.o tasn_typ.o \
41 tasn_prn.o ameth_lib.o \
40 f_int.o f_string.o n_pkey.o \ 42 f_int.o f_string.o n_pkey.o \
41 f_enum.o a_hdr.o x_pkey.o a_bool.o x_exten.o asn_mime.o \ 43 f_enum.o x_pkey.o a_bool.o x_exten.o bio_asn1.o bio_ndef.o asn_mime.o \
42 asn1_gen.o asn1_par.o asn1_lib.o asn1_err.o a_meth.o a_bytes.o a_strnid.o \ 44 asn1_gen.o asn1_par.o asn1_lib.o asn1_err.o a_bytes.o a_strnid.o \
43 evp_asn1.o asn_pack.o p5_pbe.o p5_pbev2.o p8_pkey.o asn_moid.o 45 evp_asn1.o asn_pack.o p5_pbe.o p5_pbev2.o p8_pkey.o asn_moid.o
44 46
45SRC= $(LIBSRC) 47SRC= $(LIBSRC)
46 48
47EXHEADER= asn1.h asn1_mac.h asn1t.h 49EXHEADER= asn1.h asn1_mac.h asn1t.h
48HEADER= $(EXHEADER) 50HEADER= $(EXHEADER) asn1_locl.h
49 51
50ALL= $(GENERAL) $(SRC) $(HEADER) 52ALL= $(GENERAL) $(SRC) $(HEADER)
51 53
@@ -63,7 +65,7 @@ pk: pk.c
63all: lib 65all: lib
64 66
65lib: $(LIBOBJ) 67lib: $(LIBOBJ)
66 $(ARX) $(LIB) $(LIBOBJ) 68 $(AR) $(LIB) $(LIBOBJ)
67 $(RANLIB) $(LIB) || echo Never mind. 69 $(RANLIB) $(LIB) || echo Never mind.
68 @touch lib 70 @touch lib
69 71
@@ -142,9 +144,9 @@ a_digest.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
142a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 144a_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
143a_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 145a_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
144a_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 146a_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
145a_digest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 147a_digest.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
146a_digest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 148a_digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
147a_digest.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 149a_digest.o: ../../include/openssl/opensslconf.h
148a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 150a_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
149a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 151a_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
150a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 152a_digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -173,14 +175,6 @@ a_gentm.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
173a_gentm.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 175a_gentm.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
174a_gentm.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 176a_gentm.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
175a_gentm.o: ../cryptlib.h ../o_time.h a_gentm.c 177a_gentm.o: ../cryptlib.h ../o_time.h a_gentm.c
176a_hdr.o: ../../e_os.h ../../include/openssl/asn1.h
177a_hdr.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
178a_hdr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
179a_hdr.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
180a_hdr.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
181a_hdr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
182a_hdr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
183a_hdr.o: ../../include/openssl/symhacks.h ../cryptlib.h a_hdr.c
184a_i2d_fp.o: ../../e_os.h ../../include/openssl/asn1.h 178a_i2d_fp.o: ../../e_os.h ../../include/openssl/asn1.h
185a_i2d_fp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 179a_i2d_fp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
186a_i2d_fp.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 180a_i2d_fp.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
@@ -205,13 +199,6 @@ a_mbstr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
205a_mbstr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 199a_mbstr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
206a_mbstr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 200a_mbstr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
207a_mbstr.o: ../cryptlib.h a_mbstr.c 201a_mbstr.o: ../cryptlib.h a_mbstr.c
208a_meth.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
209a_meth.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
210a_meth.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
211a_meth.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
212a_meth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
213a_meth.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
214a_meth.o: ../../include/openssl/symhacks.h ../cryptlib.h a_meth.c
215a_object.o: ../../e_os.h ../../include/openssl/asn1.h 202a_object.o: ../../e_os.h ../../include/openssl/asn1.h
216a_object.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 203a_object.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
217a_object.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 204a_object.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -250,27 +237,27 @@ a_sign.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
250a_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 237a_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
251a_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 238a_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
252a_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 239a_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
253a_sign.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 240a_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
254a_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 241a_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
255a_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 242a_sign.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
256a_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 243a_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
257a_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 244a_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
258a_sign.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 245a_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
259a_sign.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 246a_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
260a_sign.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_sign.c 247a_sign.o: ../cryptlib.h a_sign.c asn1_locl.h
261a_strex.o: ../../e_os.h ../../include/openssl/asn1.h 248a_strex.o: ../../e_os.h ../../include/openssl/asn1.h
262a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 249a_strex.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
263a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 250a_strex.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
264a_strex.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 251a_strex.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
265a_strex.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 252a_strex.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
266a_strex.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 253a_strex.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
267a_strex.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 254a_strex.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
268a_strex.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 255a_strex.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
269a_strex.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 256a_strex.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
270a_strex.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 257a_strex.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
271a_strex.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 258a_strex.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
272a_strex.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 259a_strex.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
273a_strex.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_strex.c charmap.h 260a_strex.o: ../cryptlib.h a_strex.c charmap.h
274a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h 261a_strnid.o: ../../e_os.h ../../include/openssl/asn1.h
275a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 262a_strnid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
276a_strnid.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 263a_strnid.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
@@ -318,14 +305,29 @@ a_verify.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
318a_verify.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 305a_verify.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
319a_verify.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 306a_verify.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
320a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h 307a_verify.o: ../../include/openssl/err.h ../../include/openssl/evp.h
321a_verify.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 308a_verify.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
322a_verify.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 309a_verify.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
323a_verify.o: ../../include/openssl/opensslconf.h
324a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 310a_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
325a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 311a_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
326a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 312a_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
327a_verify.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 313a_verify.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
328a_verify.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_verify.c 314a_verify.o: ../../include/openssl/x509_vfy.h ../cryptlib.h a_verify.c
315a_verify.o: asn1_locl.h
316ameth_lib.o: ../../e_os.h ../../include/openssl/asn1.h
317ameth_lib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
318ameth_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
319ameth_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
320ameth_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
321ameth_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h
322ameth_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
323ameth_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
324ameth_lib.o: ../../include/openssl/opensslconf.h
325ameth_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
326ameth_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
327ameth_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
328ameth_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
329ameth_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h ameth_lib.c
330ameth_lib.o: asn1_locl.h
329asn1_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 331asn1_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
330asn1_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 332asn1_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
331asn1_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h 333asn1_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
@@ -339,9 +341,8 @@ asn1_gen.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
339asn1_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 341asn1_gen.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
340asn1_gen.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 342asn1_gen.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
341asn1_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h 343asn1_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h
342asn1_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 344asn1_gen.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
343asn1_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 345asn1_gen.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
344asn1_gen.o: ../../include/openssl/opensslconf.h
345asn1_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 346asn1_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
346asn1_gen.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 347asn1_gen.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
347asn1_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 348asn1_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -371,24 +372,23 @@ asn_mime.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
371asn_mime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 372asn_mime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
372asn_mime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 373asn_mime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
373asn_mime.o: ../../include/openssl/err.h ../../include/openssl/evp.h 374asn_mime.o: ../../include/openssl/err.h ../../include/openssl/evp.h
374asn_mime.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 375asn_mime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
375asn_mime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 376asn_mime.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
376asn_mime.o: ../../include/openssl/opensslconf.h
377asn_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 377asn_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
378asn_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 378asn_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
379asn_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 379asn_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
380asn_mime.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 380asn_mime.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
381asn_mime.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 381asn_mime.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
382asn_mime.o: ../cryptlib.h asn_mime.c 382asn_mime.o: ../cryptlib.h asn1_locl.h asn_mime.c
383asn_moid.o: ../../e_os.h ../../include/openssl/asn1.h 383asn_moid.o: ../../e_os.h ../../include/openssl/asn1.h
384asn_moid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 384asn_moid.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
385asn_moid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 385asn_moid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
386asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h 386asn_moid.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
387asn_moid.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 387asn_moid.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
388asn_moid.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 388asn_moid.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
389asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 389asn_moid.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
390asn_moid.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 390asn_moid.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
391asn_moid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 391asn_moid.o: ../../include/openssl/opensslconf.h
392asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 392asn_moid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
393asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 393asn_moid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
394asn_moid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 394asn_moid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -402,28 +402,43 @@ asn_pack.o: ../../include/openssl/opensslconf.h
402asn_pack.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 402asn_pack.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
403asn_pack.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 403asn_pack.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
404asn_pack.o: ../../include/openssl/symhacks.h ../cryptlib.h asn_pack.c 404asn_pack.o: ../../include/openssl/symhacks.h ../cryptlib.h asn_pack.c
405bio_asn1.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
406bio_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
407bio_asn1.o: ../../include/openssl/opensslconf.h
408bio_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
409bio_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
410bio_asn1.o: ../../include/openssl/symhacks.h bio_asn1.c
411bio_ndef.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
412bio_ndef.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
413bio_ndef.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
414bio_ndef.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
415bio_ndef.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
416bio_ndef.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
417bio_ndef.o: ../../include/openssl/symhacks.h bio_ndef.c
405d2i_pr.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 418d2i_pr.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
406d2i_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 419d2i_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
407d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 420d2i_pr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
408d2i_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 421d2i_pr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
422d2i_pr.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
409d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h 423d2i_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
410d2i_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 424d2i_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
411d2i_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 425d2i_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
412d2i_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 426d2i_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
413d2i_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h 427d2i_pr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
414d2i_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 428d2i_pr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
415d2i_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pr.c 429d2i_pr.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
430d2i_pr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h asn1_locl.h d2i_pr.c
416d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 431d2i_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
417d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 432d2i_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
418d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 433d2i_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
419d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 434d2i_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
420d2i_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h 435d2i_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
421d2i_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 436d2i_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
422d2i_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 437d2i_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
423d2i_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 438d2i_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
424d2i_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h 439d2i_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
425d2i_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 440d2i_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
426d2i_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h d2i_pu.c 441d2i_pu.o: ../cryptlib.h d2i_pu.c
427evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h 442evp_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
428evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h 443evp_asn1.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
429evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 444evp_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -455,77 +470,76 @@ f_string.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
455f_string.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 470f_string.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
456f_string.o: ../../include/openssl/symhacks.h ../cryptlib.h f_string.c 471f_string.o: ../../include/openssl/symhacks.h ../cryptlib.h f_string.c
457i2d_pr.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 472i2d_pr.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
458i2d_pr.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 473i2d_pr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
459i2d_pr.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
460i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 474i2d_pr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
475i2d_pr.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
461i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h 476i2d_pr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
462i2d_pr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 477i2d_pr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
463i2d_pr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 478i2d_pr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
464i2d_pr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 479i2d_pr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
465i2d_pr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h 480i2d_pr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
466i2d_pr.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 481i2d_pr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
467i2d_pr.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pr.c 482i2d_pr.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
483i2d_pr.o: ../../include/openssl/x509_vfy.h ../cryptlib.h asn1_locl.h i2d_pr.c
468i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 484i2d_pu.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
469i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 485i2d_pu.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
470i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 486i2d_pu.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
471i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 487i2d_pu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
472i2d_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h 488i2d_pu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
473i2d_pu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 489i2d_pu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
474i2d_pu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 490i2d_pu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
475i2d_pu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 491i2d_pu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
476i2d_pu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rsa.h 492i2d_pu.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
477i2d_pu.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 493i2d_pu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
478i2d_pu.o: ../../include/openssl/symhacks.h ../cryptlib.h i2d_pu.c 494i2d_pu.o: ../cryptlib.h i2d_pu.c
479n_pkey.o: ../../e_os.h ../../include/openssl/asn1.h 495n_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
480n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h 496n_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/asn1t.h
481n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 497n_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
482n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 498n_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
483n_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 499n_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
484n_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 500n_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
485n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 501n_pkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
486n_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 502n_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
487n_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 503n_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
488n_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 504n_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
489n_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 505n_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
490n_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 506n_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
491n_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 507n_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
492n_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 508n_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h n_pkey.c
493n_pkey.o: ../cryptlib.h n_pkey.c
494nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 509nsseq.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
495nsseq.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 510nsseq.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
496nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 511nsseq.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
497nsseq.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 512nsseq.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
498nsseq.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h 513nsseq.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
499nsseq.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 514nsseq.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
500nsseq.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 515nsseq.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
501nsseq.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 516nsseq.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
502nsseq.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 517nsseq.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
503nsseq.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 518nsseq.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
504nsseq.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 519nsseq.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
505nsseq.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h nsseq.c 520nsseq.o: ../../include/openssl/x509_vfy.h nsseq.c
506p5_pbe.o: ../../e_os.h ../../include/openssl/asn1.h 521p5_pbe.o: ../../e_os.h ../../include/openssl/asn1.h
507p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 522p5_pbe.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
508p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 523p5_pbe.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
509p5_pbe.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 524p5_pbe.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
510p5_pbe.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 525p5_pbe.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
511p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h 526p5_pbe.o: ../../include/openssl/err.h ../../include/openssl/evp.h
512p5_pbe.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 527p5_pbe.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
513p5_pbe.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 528p5_pbe.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
514p5_pbe.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 529p5_pbe.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
515p5_pbe.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 530p5_pbe.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
516p5_pbe.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 531p5_pbe.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
517p5_pbe.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 532p5_pbe.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
518p5_pbe.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 533p5_pbe.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
519p5_pbe.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p5_pbe.c 534p5_pbe.o: ../cryptlib.h p5_pbe.c
520p5_pbev2.o: ../../e_os.h ../../include/openssl/asn1.h 535p5_pbev2.o: ../../e_os.h ../../include/openssl/asn1.h
521p5_pbev2.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 536p5_pbev2.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
522p5_pbev2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 537p5_pbev2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
523p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 538p5_pbev2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
524p5_pbev2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 539p5_pbev2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
525p5_pbev2.o: ../../include/openssl/err.h ../../include/openssl/evp.h 540p5_pbev2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
526p5_pbev2.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 541p5_pbev2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
527p5_pbev2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 542p5_pbev2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
528p5_pbev2.o: ../../include/openssl/opensslconf.h
529p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 543p5_pbev2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
530p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 544p5_pbev2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
531p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 545p5_pbev2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -538,51 +552,48 @@ p8_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
538p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 552p8_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
539p8_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 553p8_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
540p8_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h 554p8_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
541p8_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 555p8_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
542p8_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 556p8_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
543p8_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 557p8_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
544p8_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 558p8_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
545p8_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 559p8_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
546p8_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 560p8_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
547p8_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 561p8_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p8_pkey.c
548p8_pkey.o: ../cryptlib.h p8_pkey.c
549t_bitst.o: ../../e_os.h ../../include/openssl/asn1.h 562t_bitst.o: ../../e_os.h ../../include/openssl/asn1.h
550t_bitst.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 563t_bitst.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
551t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 564t_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
552t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 565t_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
553t_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 566t_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
554t_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h 567t_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h
555t_bitst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 568t_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
556t_bitst.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 569t_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
557t_bitst.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 570t_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
558t_bitst.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 571t_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
559t_bitst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 572t_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
560t_bitst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 573t_bitst.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
561t_bitst.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 574t_bitst.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
562t_bitst.o: ../../include/openssl/x509v3.h ../cryptlib.h t_bitst.c 575t_bitst.o: ../cryptlib.h t_bitst.c
563t_crl.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 576t_crl.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
564t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 577t_crl.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
565t_crl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 578t_crl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
566t_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 579t_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
567t_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 580t_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
568t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h 581t_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
569t_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 582t_crl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
570t_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 583t_crl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
571t_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 584t_crl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
572t_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 585t_crl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
573t_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 586t_crl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
574t_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 587t_crl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
575t_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 588t_crl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
576t_crl.o: ../../include/openssl/x509v3.h ../cryptlib.h t_crl.c 589t_crl.o: ../cryptlib.h t_crl.c
577t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 590t_pkey.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
578t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 591t_pkey.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
579t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h 592t_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
580t_pkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 593t_pkey.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
581t_pkey.o: ../../include/openssl/ec.h ../../include/openssl/err.h 594t_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
582t_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 595t_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
583t_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 596t_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
584t_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
585t_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
586t_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 597t_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
587t_pkey.o: ../cryptlib.h t_pkey.c 598t_pkey.o: ../cryptlib.h t_pkey.c
588t_req.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 599t_req.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
@@ -591,57 +602,57 @@ t_req.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
591t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 602t_req.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
592t_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 603t_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
593t_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 604t_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
594t_req.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 605t_req.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
595t_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 606t_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
596t_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 607t_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
597t_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 608t_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
598t_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 609t_req.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
599t_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 610t_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
600t_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 611t_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
601t_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 612t_req.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
602t_req.o: ../../include/openssl/x509v3.h ../cryptlib.h t_req.c 613t_req.o: ../cryptlib.h t_req.c
603t_spki.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 614t_spki.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
604t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 615t_spki.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
605t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 616t_spki.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
606t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 617t_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
607t_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 618t_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
608t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h 619t_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
609t_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 620t_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
610t_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 621t_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
611t_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 622t_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
612t_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 623t_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
613t_spki.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 624t_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
614t_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 625t_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
615t_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 626t_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
616t_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_spki.c 627t_spki.o: ../cryptlib.h t_spki.c
617t_x509.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 628t_x509.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
618t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 629t_x509.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
619t_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 630t_x509.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
620t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 631t_x509.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
621t_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 632t_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
622t_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 633t_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
623t_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 634t_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
624t_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 635t_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
625t_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 636t_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
626t_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 637t_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
627t_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 638t_x509.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
628t_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 639t_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
629t_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 640t_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
630t_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 641t_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
631t_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h t_x509.c 642t_x509.o: ../cryptlib.h t_x509.c
632t_x509a.o: ../../e_os.h ../../include/openssl/asn1.h 643t_x509a.o: ../../e_os.h ../../include/openssl/asn1.h
633t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 644t_x509a.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
634t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 645t_x509a.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
635t_x509a.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 646t_x509a.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
636t_x509a.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 647t_x509a.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
637t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 648t_x509a.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
638t_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 649t_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
639t_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 650t_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
640t_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 651t_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
641t_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 652t_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
642t_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 653t_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
643t_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 654t_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
644t_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h t_x509a.c 655t_x509a.o: ../cryptlib.h t_x509a.c
645tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 656tasn_dec.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
646tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 657tasn_dec.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
647tasn_dec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 658tasn_dec.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
@@ -675,6 +686,21 @@ tasn_new.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
675tasn_new.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 686tasn_new.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
676tasn_new.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 687tasn_new.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
677tasn_new.o: ../../include/openssl/symhacks.h tasn_new.c 688tasn_new.o: ../../include/openssl/symhacks.h tasn_new.c
689tasn_prn.o: ../../e_os.h ../../include/openssl/asn1.h
690tasn_prn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
691tasn_prn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
692tasn_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
693tasn_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
694tasn_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
695tasn_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
696tasn_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
697tasn_prn.o: ../../include/openssl/opensslconf.h
698tasn_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
699tasn_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
700tasn_prn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
701tasn_prn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
702tasn_prn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
703tasn_prn.o: ../cryptlib.h asn1_locl.h tasn_prn.c
678tasn_typ.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 704tasn_typ.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
679tasn_typ.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 705tasn_typ.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
680tasn_typ.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 706tasn_typ.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
@@ -694,23 +720,21 @@ x_algor.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
694x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 720x_algor.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
695x_algor.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 721x_algor.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
696x_algor.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h 722x_algor.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
697x_algor.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 723x_algor.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
698x_algor.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 724x_algor.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
699x_algor.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 725x_algor.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
700x_algor.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 726x_algor.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
701x_algor.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 727x_algor.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
702x_algor.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 728x_algor.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
703x_algor.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 729x_algor.o: ../../include/openssl/x509_vfy.h x_algor.c
704x_algor.o: x_algor.c
705x_attrib.o: ../../e_os.h ../../include/openssl/asn1.h 730x_attrib.o: ../../e_os.h ../../include/openssl/asn1.h
706x_attrib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 731x_attrib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
707x_attrib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 732x_attrib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
708x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 733x_attrib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
709x_attrib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 734x_attrib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
710x_attrib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 735x_attrib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
711x_attrib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 736x_attrib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
712x_attrib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 737x_attrib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
713x_attrib.o: ../../include/openssl/opensslconf.h
714x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 738x_attrib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
715x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 739x_attrib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
716x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 740x_attrib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -727,44 +751,42 @@ x_bignum.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
727x_bignum.o: ../../include/openssl/symhacks.h ../cryptlib.h x_bignum.c 751x_bignum.o: ../../include/openssl/symhacks.h ../cryptlib.h x_bignum.c
728x_crl.o: ../../e_os.h ../../include/openssl/asn1.h 752x_crl.o: ../../e_os.h ../../include/openssl/asn1.h
729x_crl.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 753x_crl.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
730x_crl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 754x_crl.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
731x_crl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 755x_crl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
732x_crl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 756x_crl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
733x_crl.o: ../../include/openssl/err.h ../../include/openssl/evp.h 757x_crl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
734x_crl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 758x_crl.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
735x_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 759x_crl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
736x_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 760x_crl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
737x_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 761x_crl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
738x_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 762x_crl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
739x_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 763x_crl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
740x_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 764x_crl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
741x_crl.o: ../cryptlib.h x_crl.c 765x_crl.o: ../../include/openssl/x509v3.h ../cryptlib.h asn1_locl.h x_crl.c
742x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 766x_exten.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
743x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 767x_exten.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
744x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 768x_exten.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
745x_exten.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 769x_exten.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
746x_exten.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h 770x_exten.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
747x_exten.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 771x_exten.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
748x_exten.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 772x_exten.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
749x_exten.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 773x_exten.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
750x_exten.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 774x_exten.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
751x_exten.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 775x_exten.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
752x_exten.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 776x_exten.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
753x_exten.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 777x_exten.o: ../../include/openssl/x509_vfy.h x_exten.c
754x_exten.o: x_exten.c
755x_info.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 778x_info.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
756x_info.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 779x_info.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
757x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 780x_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
758x_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 781x_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
759x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h 782x_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h
760x_info.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 783x_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
761x_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 784x_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
762x_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 785x_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
763x_info.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 786x_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
764x_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 787x_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
765x_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 788x_info.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
766x_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 789x_info.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_info.c
767x_info.o: ../cryptlib.h x_info.c
768x_long.o: ../../e_os.h ../../include/openssl/asn1.h 790x_long.o: ../../e_os.h ../../include/openssl/asn1.h
769x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 791x_long.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
770x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 792x_long.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
@@ -780,125 +802,129 @@ x_name.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
780x_name.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 802x_name.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
781x_name.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 803x_name.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
782x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h 804x_name.o: ../../include/openssl/err.h ../../include/openssl/evp.h
783x_name.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 805x_name.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
784x_name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 806x_name.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
785x_name.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 807x_name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
786x_name.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 808x_name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
787x_name.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 809x_name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
788x_name.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 810x_name.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
789x_name.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 811x_name.o: ../../include/openssl/x509_vfy.h ../cryptlib.h asn1_locl.h x_name.c
790x_name.o: ../cryptlib.h x_name.c 812x_nx509.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
813x_nx509.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
814x_nx509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
815x_nx509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
816x_nx509.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
817x_nx509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
818x_nx509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
819x_nx509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
820x_nx509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
821x_nx509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
822x_nx509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
823x_nx509.o: ../../include/openssl/x509_vfy.h x_nx509.c
791x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h 824x_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
792x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h 825x_pkey.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
793x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 826x_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
794x_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 827x_pkey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
795x_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 828x_pkey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
796x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h 829x_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
797x_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 830x_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
798x_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 831x_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
799x_pkey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 832x_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
800x_pkey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 833x_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
801x_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 834x_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
802x_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 835x_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
803x_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 836x_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_pkey.c
804x_pkey.o: ../cryptlib.h x_pkey.c
805x_pubkey.o: ../../e_os.h ../../include/openssl/asn1.h 837x_pubkey.o: ../../e_os.h ../../include/openssl/asn1.h
806x_pubkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 838x_pubkey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
807x_pubkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 839x_pubkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
808x_pubkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 840x_pubkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
809x_pubkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 841x_pubkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
810x_pubkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 842x_pubkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
811x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 843x_pubkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
812x_pubkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 844x_pubkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
813x_pubkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 845x_pubkey.o: ../../include/openssl/opensslconf.h
814x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 846x_pubkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
815x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 847x_pubkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
816x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 848x_pubkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
817x_pubkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 849x_pubkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
818x_pubkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 850x_pubkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
819x_pubkey.o: ../cryptlib.h x_pubkey.c 851x_pubkey.o: ../cryptlib.h asn1_locl.h x_pubkey.c
820x_req.o: ../../e_os.h ../../include/openssl/asn1.h 852x_req.o: ../../e_os.h ../../include/openssl/asn1.h
821x_req.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 853x_req.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
822x_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 854x_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
823x_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 855x_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
824x_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 856x_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
825x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h 857x_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h
826x_req.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 858x_req.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
827x_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 859x_req.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
828x_req.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 860x_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
829x_req.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 861x_req.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
830x_req.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 862x_req.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
831x_req.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 863x_req.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
832x_req.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 864x_req.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_req.c
833x_req.o: ../cryptlib.h x_req.c
834x_sig.o: ../../e_os.h ../../include/openssl/asn1.h 865x_sig.o: ../../e_os.h ../../include/openssl/asn1.h
835x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 866x_sig.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
836x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 867x_sig.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
837x_sig.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 868x_sig.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
838x_sig.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 869x_sig.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
839x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h 870x_sig.o: ../../include/openssl/err.h ../../include/openssl/evp.h
840x_sig.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 871x_sig.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
841x_sig.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 872x_sig.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
842x_sig.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 873x_sig.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
843x_sig.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 874x_sig.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
844x_sig.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 875x_sig.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
845x_sig.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 876x_sig.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
846x_sig.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 877x_sig.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_sig.c
847x_sig.o: ../cryptlib.h x_sig.c
848x_spki.o: ../../e_os.h ../../include/openssl/asn1.h 878x_spki.o: ../../e_os.h ../../include/openssl/asn1.h
849x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 879x_spki.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
850x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 880x_spki.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
851x_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 881x_spki.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
852x_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 882x_spki.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
853x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h 883x_spki.o: ../../include/openssl/err.h ../../include/openssl/evp.h
854x_spki.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 884x_spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
855x_spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 885x_spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
856x_spki.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 886x_spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
857x_spki.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 887x_spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
858x_spki.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 888x_spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
859x_spki.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 889x_spki.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
860x_spki.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 890x_spki.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_spki.c
861x_spki.o: ../cryptlib.h x_spki.c
862x_val.o: ../../e_os.h ../../include/openssl/asn1.h 891x_val.o: ../../e_os.h ../../include/openssl/asn1.h
863x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 892x_val.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
864x_val.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 893x_val.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
865x_val.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 894x_val.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
866x_val.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 895x_val.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
867x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h 896x_val.o: ../../include/openssl/err.h ../../include/openssl/evp.h
868x_val.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 897x_val.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
869x_val.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 898x_val.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
870x_val.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 899x_val.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
871x_val.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 900x_val.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
872x_val.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 901x_val.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
873x_val.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 902x_val.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
874x_val.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 903x_val.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_val.c
875x_val.o: ../cryptlib.h x_val.c
876x_x509.o: ../../e_os.h ../../include/openssl/asn1.h 904x_x509.o: ../../e_os.h ../../include/openssl/asn1.h
877x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 905x_x509.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
878x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 906x_x509.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
879x_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 907x_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
880x_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 908x_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
881x_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 909x_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
882x_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 910x_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
883x_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 911x_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
884x_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 912x_x509.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
885x_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 913x_x509.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
886x_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 914x_x509.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
887x_x509.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 915x_x509.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
888x_x509.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 916x_x509.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
889x_x509.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 917x_x509.o: ../../include/openssl/x509v3.h ../cryptlib.h x_x509.c
890x_x509.o: ../cryptlib.h x_x509.c
891x_x509a.o: ../../e_os.h ../../include/openssl/asn1.h 918x_x509a.o: ../../e_os.h ../../include/openssl/asn1.h
892x_x509a.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 919x_x509a.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
893x_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 920x_x509a.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
894x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 921x_x509a.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
895x_x509a.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 922x_x509a.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
896x_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h 923x_x509a.o: ../../include/openssl/err.h ../../include/openssl/evp.h
897x_x509a.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 924x_x509a.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
898x_x509a.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 925x_x509a.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
899x_x509a.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 926x_x509a.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
900x_x509a.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 927x_x509a.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
901x_x509a.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 928x_x509a.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
902x_x509a.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 929x_x509a.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
903x_x509a.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 930x_x509a.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_x509a.c
904x_x509a.o: ../cryptlib.h x_x509a.c
diff --git a/src/lib/libssl/src/crypto/asn1/a_bitstr.c b/src/lib/libssl/src/crypto/asn1/a_bitstr.c
index 0fb9ce0c2a..34179960b8 100644
--- a/src/lib/libssl/src/crypto/asn1/a_bitstr.c
+++ b/src/lib/libssl/src/crypto/asn1/a_bitstr.c
@@ -223,3 +223,26 @@ int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n)
223 return((a->data[w]&v) != 0); 223 return((a->data[w]&v) != 0);
224 } 224 }
225 225
226/*
227 * Checks if the given bit string contains only bits specified by
228 * the flags vector. Returns 0 if there is at least one bit set in 'a'
229 * which is not specified in 'flags', 1 otherwise.
230 * 'len' is the length of 'flags'.
231 */
232int ASN1_BIT_STRING_check(ASN1_BIT_STRING *a,
233 unsigned char *flags, int flags_len)
234 {
235 int i, ok;
236 /* Check if there is one bit set at all. */
237 if (!a || !a->data) return 1;
238
239 /* Check each byte of the internal representation of the bit string. */
240 ok = 1;
241 for (i = 0; i < a->length && ok; ++i)
242 {
243 unsigned char mask = i < flags_len ? ~flags[i] : 0xff;
244 /* We are done if there is an unneeded bit set. */
245 ok = (a->data[i] & mask) == 0;
246 }
247 return ok;
248 }
diff --git a/src/lib/libssl/src/crypto/asn1/a_dup.c b/src/lib/libssl/src/crypto/asn1/a_dup.c
index 199d50f521..d98992548a 100644
--- a/src/lib/libssl/src/crypto/asn1/a_dup.c
+++ b/src/lib/libssl/src/crypto/asn1/a_dup.c
@@ -62,7 +62,7 @@
62 62
63#ifndef NO_OLD_ASN1 63#ifndef NO_OLD_ASN1
64 64
65void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x) 65void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x)
66 { 66 {
67 unsigned char *b,*p; 67 unsigned char *b,*p;
68 const unsigned char *p2; 68 const unsigned char *p2;
diff --git a/src/lib/libssl/src/crypto/asn1/a_gentm.c b/src/lib/libssl/src/crypto/asn1/a_gentm.c
index def79062a5..c79c6f538c 100644
--- a/src/lib/libssl/src/crypto/asn1/a_gentm.c
+++ b/src/lib/libssl/src/crypto/asn1/a_gentm.c
@@ -117,8 +117,8 @@ err:
117 117
118int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d) 118int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
119 { 119 {
120 static int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0}; 120 static const int min[9]={ 0, 0, 1, 1, 0, 0, 0, 0, 0};
121 static int max[9]={99, 99,12,31,23,59,59,12,59}; 121 static const int max[9]={99, 99,12,31,23,59,59,12,59};
122 char *a; 122 char *a;
123 int n,i,l,o; 123 int n,i,l,o;
124 124
@@ -176,6 +176,11 @@ int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *d)
176 o++; 176 o++;
177 } 177 }
178 } 178 }
179 else
180 {
181 /* Missing time zone information. */
182 goto err;
183 }
179 return(o == l); 184 return(o == l);
180err: 185err:
181 return(0); 186 return(0);
@@ -206,6 +211,12 @@ int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str)
206ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s, 211ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
207 time_t t) 212 time_t t)
208 { 213 {
214 return ASN1_GENERALIZEDTIME_adj(s, t, 0, 0);
215 }
216
217ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
218 time_t t, int offset_day, long offset_sec)
219 {
209 char *p; 220 char *p;
210 struct tm *ts; 221 struct tm *ts;
211 struct tm data; 222 struct tm data;
@@ -220,13 +231,19 @@ ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,
220 if (ts == NULL) 231 if (ts == NULL)
221 return(NULL); 232 return(NULL);
222 233
234 if (offset_day || offset_sec)
235 {
236 if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec))
237 return NULL;
238 }
239
223 p=(char *)s->data; 240 p=(char *)s->data;
224 if ((p == NULL) || ((size_t)s->length < len)) 241 if ((p == NULL) || ((size_t)s->length < len))
225 { 242 {
226 p=OPENSSL_malloc(len); 243 p=OPENSSL_malloc(len);
227 if (p == NULL) 244 if (p == NULL)
228 { 245 {
229 ASN1err(ASN1_F_ASN1_GENERALIZEDTIME_SET, 246 ASN1err(ASN1_F_ASN1_GENERALIZEDTIME_ADJ,
230 ERR_R_MALLOC_FAILURE); 247 ERR_R_MALLOC_FAILURE);
231 return(NULL); 248 return(NULL);
232 } 249 }
diff --git a/src/lib/libssl/src/crypto/asn1/a_int.c b/src/lib/libssl/src/crypto/asn1/a_int.c
index f8d198efb1..c6fd204ae3 100644
--- a/src/lib/libssl/src/crypto/asn1/a_int.c
+++ b/src/lib/libssl/src/crypto/asn1/a_int.c
@@ -61,10 +61,10 @@
61#include <openssl/asn1.h> 61#include <openssl/asn1.h>
62#include <openssl/bn.h> 62#include <openssl/bn.h>
63 63
64ASN1_INTEGER *ASN1_INTEGER_dup(ASN1_INTEGER *x) 64ASN1_INTEGER *ASN1_INTEGER_dup(const ASN1_INTEGER *x)
65{ return M_ASN1_INTEGER_dup(x);} 65{ return M_ASN1_INTEGER_dup(x);}
66 66
67int ASN1_INTEGER_cmp(ASN1_INTEGER *x, ASN1_INTEGER *y) 67int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y)
68 { 68 {
69 int neg, ret; 69 int neg, ret;
70 /* Compare signs */ 70 /* Compare signs */
@@ -373,7 +373,7 @@ int ASN1_INTEGER_set(ASN1_INTEGER *a, long v)
373 return(1); 373 return(1);
374 } 374 }
375 375
376long ASN1_INTEGER_get(ASN1_INTEGER *a) 376long ASN1_INTEGER_get(const ASN1_INTEGER *a)
377 { 377 {
378 int neg=0,i; 378 int neg=0,i;
379 long r=0; 379 long r=0;
@@ -402,7 +402,7 @@ long ASN1_INTEGER_get(ASN1_INTEGER *a)
402 return(r); 402 return(r);
403 } 403 }
404 404
405ASN1_INTEGER *BN_to_ASN1_INTEGER(BIGNUM *bn, ASN1_INTEGER *ai) 405ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai)
406 { 406 {
407 ASN1_INTEGER *ret; 407 ASN1_INTEGER *ret;
408 int len,j; 408 int len,j;
@@ -444,7 +444,7 @@ err:
444 return(NULL); 444 return(NULL);
445 } 445 }
446 446
447BIGNUM *ASN1_INTEGER_to_BN(ASN1_INTEGER *ai, BIGNUM *bn) 447BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai, BIGNUM *bn)
448 { 448 {
449 BIGNUM *ret; 449 BIGNUM *ret;
450 450
diff --git a/src/lib/libssl/src/crypto/asn1/a_mbstr.c b/src/lib/libssl/src/crypto/asn1/a_mbstr.c
index 1bcd046893..1538e0a4fc 100644
--- a/src/lib/libssl/src/crypto/asn1/a_mbstr.c
+++ b/src/lib/libssl/src/crypto/asn1/a_mbstr.c
@@ -93,7 +93,7 @@ int ASN1_mbstring_ncopy(ASN1_STRING **out, const unsigned char *in, int len,
93 int str_type; 93 int str_type;
94 int ret; 94 int ret;
95 char free_out; 95 char free_out;
96 int outform, outlen; 96 int outform, outlen = 0;
97 ASN1_STRING *dest; 97 ASN1_STRING *dest;
98 unsigned char *p; 98 unsigned char *p;
99 int nchar; 99 int nchar;
diff --git a/src/lib/libssl/src/crypto/asn1/a_object.c b/src/lib/libssl/src/crypto/asn1/a_object.c
index dc980421d0..e5fbe7cbb1 100644
--- a/src/lib/libssl/src/crypto/asn1/a_object.c
+++ b/src/lib/libssl/src/crypto/asn1/a_object.c
@@ -281,8 +281,6 @@ ASN1_OBJECT *d2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
281 return ret; 281 return ret;
282err: 282err:
283 ASN1err(ASN1_F_D2I_ASN1_OBJECT,i); 283 ASN1err(ASN1_F_D2I_ASN1_OBJECT,i);
284 if ((ret != NULL) && ((a == NULL) || (*a != ret)))
285 ASN1_OBJECT_free(ret);
286 return(NULL); 284 return(NULL);
287} 285}
288ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp, 286ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
@@ -290,7 +288,19 @@ ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
290 { 288 {
291 ASN1_OBJECT *ret=NULL; 289 ASN1_OBJECT *ret=NULL;
292 const unsigned char *p; 290 const unsigned char *p;
291 unsigned char *data;
293 int i; 292 int i;
293 /* Sanity check OID encoding: can't have leading 0x80 in
294 * subidentifiers, see: X.690 8.19.2
295 */
296 for (i = 0, p = *pp + 1; i < len - 1; i++, p++)
297 {
298 if (*p == 0x80 && (!i || !(p[-1] & 0x80)))
299 {
300 ASN1err(ASN1_F_C2I_ASN1_OBJECT,ASN1_R_INVALID_OBJECT_ENCODING);
301 return NULL;
302 }
303 }
294 304
295 /* only the ASN1_OBJECTs from the 'table' will have values 305 /* only the ASN1_OBJECTs from the 'table' will have values
296 * for ->sn or ->ln */ 306 * for ->sn or ->ln */
@@ -302,15 +312,22 @@ ASN1_OBJECT *c2i_ASN1_OBJECT(ASN1_OBJECT **a, const unsigned char **pp,
302 else ret=(*a); 312 else ret=(*a);
303 313
304 p= *pp; 314 p= *pp;
305 if ((ret->data == NULL) || (ret->length < len)) 315 /* detach data from object */
316 data = (unsigned char *)ret->data;
317 ret->data = NULL;
318 /* once detached we can change it */
319 if ((data == NULL) || (ret->length < len))
306 { 320 {
307 if (ret->data != NULL) OPENSSL_free(ret->data); 321 ret->length=0;
308 ret->data=(unsigned char *)OPENSSL_malloc(len ? (int)len : 1); 322 if (data != NULL) OPENSSL_free(data);
309 ret->flags|=ASN1_OBJECT_FLAG_DYNAMIC_DATA; 323 data=(unsigned char *)OPENSSL_malloc(len ? (int)len : 1);
310 if (ret->data == NULL) 324 if (data == NULL)
311 { i=ERR_R_MALLOC_FAILURE; goto err; } 325 { i=ERR_R_MALLOC_FAILURE; goto err; }
326 ret->flags|=ASN1_OBJECT_FLAG_DYNAMIC_DATA;
312 } 327 }
313 memcpy(ret->data,p,(int)len); 328 memcpy(data,p,(int)len);
329 /* reattach data to object, after which it remains const */
330 ret->data =data;
314 ret->length=(int)len; 331 ret->length=(int)len;
315 ret->sn=NULL; 332 ret->sn=NULL;
316 ret->ln=NULL; 333 ret->ln=NULL;
@@ -359,7 +376,7 @@ void ASN1_OBJECT_free(ASN1_OBJECT *a)
359 } 376 }
360 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA) 377 if (a->flags & ASN1_OBJECT_FLAG_DYNAMIC_DATA)
361 { 378 {
362 if (a->data != NULL) OPENSSL_free(a->data); 379 if (a->data != NULL) OPENSSL_free((void *)a->data);
363 a->data=NULL; 380 a->data=NULL;
364 a->length=0; 381 a->length=0;
365 } 382 }
diff --git a/src/lib/libssl/src/crypto/asn1/a_octet.c b/src/lib/libssl/src/crypto/asn1/a_octet.c
index 24fd0f8e5a..e8725e44f1 100644
--- a/src/lib/libssl/src/crypto/asn1/a_octet.c
+++ b/src/lib/libssl/src/crypto/asn1/a_octet.c
@@ -60,10 +60,10 @@
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include <openssl/asn1.h> 61#include <openssl/asn1.h>
62 62
63ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(ASN1_OCTET_STRING *x) 63ASN1_OCTET_STRING *ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *x)
64{ return M_ASN1_OCTET_STRING_dup(x); } 64{ return M_ASN1_OCTET_STRING_dup(x); }
65 65
66int ASN1_OCTET_STRING_cmp(ASN1_OCTET_STRING *a, ASN1_OCTET_STRING *b) 66int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, const ASN1_OCTET_STRING *b)
67{ return M_ASN1_OCTET_STRING_cmp(a, b); } 67{ return M_ASN1_OCTET_STRING_cmp(a, b); }
68 68
69int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *x, const unsigned char *d, int len) 69int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *x, const unsigned char *d, int len)
diff --git a/src/lib/libssl/src/crypto/asn1/a_set.c b/src/lib/libssl/src/crypto/asn1/a_set.c
index 958558c204..d726c8d3a8 100644
--- a/src/lib/libssl/src/crypto/asn1/a_set.c
+++ b/src/lib/libssl/src/crypto/asn1/a_set.c
@@ -85,8 +85,9 @@ static int SetBlobCmp(const void *elem1, const void *elem2 )
85 } 85 }
86 86
87/* int is_set: if TRUE, then sort the contents (i.e. it isn't a SEQUENCE) */ 87/* int is_set: if TRUE, then sort the contents (i.e. it isn't a SEQUENCE) */
88int i2d_ASN1_SET(STACK *a, unsigned char **pp, i2d_of_void *i2d, int ex_tag, 88int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp,
89 int ex_class, int is_set) 89 i2d_of_void *i2d, int ex_tag, int ex_class,
90 int is_set)
90 { 91 {
91 int ret=0,r; 92 int ret=0,r;
92 int i; 93 int i;
@@ -96,8 +97,8 @@ int i2d_ASN1_SET(STACK *a, unsigned char **pp, i2d_of_void *i2d, int ex_tag,
96 int totSize; 97 int totSize;
97 98
98 if (a == NULL) return(0); 99 if (a == NULL) return(0);
99 for (i=sk_num(a)-1; i>=0; i--) 100 for (i=sk_OPENSSL_BLOCK_num(a)-1; i>=0; i--)
100 ret+=i2d(sk_value(a,i),NULL); 101 ret+=i2d(sk_OPENSSL_BLOCK_value(a,i),NULL);
101 r=ASN1_object_size(1,ret,ex_tag); 102 r=ASN1_object_size(1,ret,ex_tag);
102 if (pp == NULL) return(r); 103 if (pp == NULL) return(r);
103 104
@@ -108,10 +109,10 @@ int i2d_ASN1_SET(STACK *a, unsigned char **pp, i2d_of_void *i2d, int ex_tag,
108 /* And then again by Ben */ 109 /* And then again by Ben */
109 /* And again by Steve */ 110 /* And again by Steve */
110 111
111 if(!is_set || (sk_num(a) < 2)) 112 if(!is_set || (sk_OPENSSL_BLOCK_num(a) < 2))
112 { 113 {
113 for (i=0; i<sk_num(a); i++) 114 for (i=0; i<sk_OPENSSL_BLOCK_num(a); i++)
114 i2d(sk_value(a,i),&p); 115 i2d(sk_OPENSSL_BLOCK_value(a,i),&p);
115 116
116 *pp=p; 117 *pp=p;
117 return(r); 118 return(r);
@@ -119,17 +120,17 @@ int i2d_ASN1_SET(STACK *a, unsigned char **pp, i2d_of_void *i2d, int ex_tag,
119 120
120 pStart = p; /* Catch the beg of Setblobs*/ 121 pStart = p; /* Catch the beg of Setblobs*/
121 /* In this array we will store the SET blobs */ 122 /* In this array we will store the SET blobs */
122 rgSetBlob = (MYBLOB *)OPENSSL_malloc(sk_num(a) * sizeof(MYBLOB)); 123 rgSetBlob = OPENSSL_malloc(sk_OPENSSL_BLOCK_num(a) * sizeof(MYBLOB));
123 if (rgSetBlob == NULL) 124 if (rgSetBlob == NULL)
124 { 125 {
125 ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE); 126 ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
126 return(0); 127 return(0);
127 } 128 }
128 129
129 for (i=0; i<sk_num(a); i++) 130 for (i=0; i<sk_OPENSSL_BLOCK_num(a); i++)
130 { 131 {
131 rgSetBlob[i].pbData = p; /* catch each set encode blob */ 132 rgSetBlob[i].pbData = p; /* catch each set encode blob */
132 i2d(sk_value(a,i),&p); 133 i2d(sk_OPENSSL_BLOCK_value(a,i),&p);
133 rgSetBlob[i].cbData = p - rgSetBlob[i].pbData; /* Length of this 134 rgSetBlob[i].cbData = p - rgSetBlob[i].pbData; /* Length of this
134SetBlob 135SetBlob
135*/ 136*/
@@ -139,7 +140,7 @@ SetBlob
139 140
140 /* Now we have to sort the blobs. I am using a simple algo. 141 /* Now we have to sort the blobs. I am using a simple algo.
141 *Sort ptrs *Copy to temp-mem *Copy from temp-mem to user-mem*/ 142 *Sort ptrs *Copy to temp-mem *Copy from temp-mem to user-mem*/
142 qsort( rgSetBlob, sk_num(a), sizeof(MYBLOB), SetBlobCmp); 143 qsort( rgSetBlob, sk_OPENSSL_BLOCK_num(a), sizeof(MYBLOB), SetBlobCmp);
143 if (!(pTempMem = OPENSSL_malloc(totSize))) 144 if (!(pTempMem = OPENSSL_malloc(totSize)))
144 { 145 {
145 ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE); 146 ASN1err(ASN1_F_I2D_ASN1_SET,ERR_R_MALLOC_FAILURE);
@@ -148,7 +149,7 @@ SetBlob
148 149
149/* Copy to temp mem */ 150/* Copy to temp mem */
150 p = pTempMem; 151 p = pTempMem;
151 for(i=0; i<sk_num(a); ++i) 152 for(i=0; i<sk_OPENSSL_BLOCK_num(a); ++i)
152 { 153 {
153 memcpy(p, rgSetBlob[i].pbData, rgSetBlob[i].cbData); 154 memcpy(p, rgSetBlob[i].pbData, rgSetBlob[i].cbData);
154 p += rgSetBlob[i].cbData; 155 p += rgSetBlob[i].cbData;
@@ -162,16 +163,18 @@ SetBlob
162 return(r); 163 return(r);
163 } 164 }
164 165
165STACK *d2i_ASN1_SET(STACK **a, const unsigned char **pp, long length, 166STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a,
166 d2i_of_void *d2i, void (*free_func)(void *), int ex_tag, 167 const unsigned char **pp,
167 int ex_class) 168 long length, d2i_of_void *d2i,
169 void (*free_func)(OPENSSL_BLOCK), int ex_tag,
170 int ex_class)
168 { 171 {
169 ASN1_const_CTX c; 172 ASN1_const_CTX c;
170 STACK *ret=NULL; 173 STACK_OF(OPENSSL_BLOCK) *ret=NULL;
171 174
172 if ((a == NULL) || ((*a) == NULL)) 175 if ((a == NULL) || ((*a) == NULL))
173 { 176 {
174 if ((ret=sk_new_null()) == NULL) 177 if ((ret=sk_OPENSSL_BLOCK_new_null()) == NULL)
175 { 178 {
176 ASN1err(ASN1_F_D2I_ASN1_SET,ERR_R_MALLOC_FAILURE); 179 ASN1err(ASN1_F_D2I_ASN1_SET,ERR_R_MALLOC_FAILURE);
177 goto err; 180 goto err;
@@ -216,10 +219,10 @@ STACK *d2i_ASN1_SET(STACK **a, const unsigned char **pp, long length,
216 if ((s=d2i(NULL,&c.p,c.slen)) == NULL) 219 if ((s=d2i(NULL,&c.p,c.slen)) == NULL)
217 { 220 {
218 ASN1err(ASN1_F_D2I_ASN1_SET,ASN1_R_ERROR_PARSING_SET_ELEMENT); 221 ASN1err(ASN1_F_D2I_ASN1_SET,ASN1_R_ERROR_PARSING_SET_ELEMENT);
219 asn1_add_error(*pp,(int)(c.q- *pp)); 222 asn1_add_error(*pp,(int)(c.p- *pp));
220 goto err; 223 goto err;
221 } 224 }
222 if (!sk_push(ret,s)) goto err; 225 if (!sk_OPENSSL_BLOCK_push(ret,s)) goto err;
223 } 226 }
224 if (a != NULL) (*a)=ret; 227 if (a != NULL) (*a)=ret;
225 *pp=c.p; 228 *pp=c.p;
@@ -228,9 +231,9 @@ err:
228 if ((ret != NULL) && ((a == NULL) || (*a != ret))) 231 if ((ret != NULL) && ((a == NULL) || (*a != ret)))
229 { 232 {
230 if (free_func != NULL) 233 if (free_func != NULL)
231 sk_pop_free(ret,free_func); 234 sk_OPENSSL_BLOCK_pop_free(ret,free_func);
232 else 235 else
233 sk_free(ret); 236 sk_OPENSSL_BLOCK_free(ret);
234 } 237 }
235 return(NULL); 238 return(NULL);
236 } 239 }
diff --git a/src/lib/libssl/src/crypto/asn1/a_sign.c b/src/lib/libssl/src/crypto/asn1/a_sign.c
index 4dee45fbb8..ff63bfc7be 100644
--- a/src/lib/libssl/src/crypto/asn1/a_sign.c
+++ b/src/lib/libssl/src/crypto/asn1/a_sign.c
@@ -123,6 +123,7 @@
123#include <openssl/x509.h> 123#include <openssl/x509.h>
124#include <openssl/objects.h> 124#include <openssl/objects.h>
125#include <openssl/buffer.h> 125#include <openssl/buffer.h>
126#include "asn1_locl.h"
126 127
127#ifndef NO_ASN1_OLD 128#ifndef NO_ASN1_OLD
128 129
@@ -218,45 +219,47 @@ int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
218 { 219 {
219 EVP_MD_CTX ctx; 220 EVP_MD_CTX ctx;
220 unsigned char *buf_in=NULL,*buf_out=NULL; 221 unsigned char *buf_in=NULL,*buf_out=NULL;
221 int i,inl=0,outl=0,outll=0; 222 int inl=0,outl=0,outll=0;
222 X509_ALGOR *a; 223 int signid, paramtype;
223 224
224 EVP_MD_CTX_init(&ctx); 225 if (type == NULL)
225 for (i=0; i<2; i++)
226 { 226 {
227 if (i == 0) 227 int def_nid;
228 a=algor1; 228 if (EVP_PKEY_get_default_digest_nid(pkey, &def_nid) > 0)
229 else 229 type = EVP_get_digestbynid(def_nid);
230 a=algor2; 230 }
231 if (a == NULL) continue; 231
232 if (type->pkey_type == NID_dsaWithSHA1 || 232 if (type == NULL)
233 type->pkey_type == NID_ecdsa_with_SHA1) 233 {
234 { 234 ASN1err(ASN1_F_ASN1_ITEM_SIGN, ASN1_R_NO_DEFAULT_DIGEST);
235 /* special case: RFC 3279 tells us to omit 'parameters' 235 return 0;
236 * with id-dsa-with-sha1 and ecdsa-with-SHA1 */ 236 }
237 ASN1_TYPE_free(a->parameter); 237
238 a->parameter = NULL; 238 if (type->flags & EVP_MD_FLAG_PKEY_METHOD_SIGNATURE)
239 } 239 {
240 else if ((a->parameter == NULL) || 240 if (!pkey->ameth ||
241 (a->parameter->type != V_ASN1_NULL)) 241 !OBJ_find_sigid_by_algs(&signid, EVP_MD_nid(type),
242 { 242 pkey->ameth->pkey_id))
243 ASN1_TYPE_free(a->parameter);
244 if ((a->parameter=ASN1_TYPE_new()) == NULL) goto err;
245 a->parameter->type=V_ASN1_NULL;
246 }
247 ASN1_OBJECT_free(a->algorithm);
248 a->algorithm=OBJ_nid2obj(type->pkey_type);
249 if (a->algorithm == NULL)
250 {
251 ASN1err(ASN1_F_ASN1_ITEM_SIGN,ASN1_R_UNKNOWN_OBJECT_TYPE);
252 goto err;
253 }
254 if (a->algorithm->length == 0)
255 { 243 {
256 ASN1err(ASN1_F_ASN1_ITEM_SIGN,ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD); 244 ASN1err(ASN1_F_ASN1_ITEM_SIGN,
257 goto err; 245 ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED);
246 return 0;
258 } 247 }
259 } 248 }
249 else
250 signid = type->pkey_type;
251
252 if (pkey->ameth->pkey_flags & ASN1_PKEY_SIGPARAM_NULL)
253 paramtype = V_ASN1_NULL;
254 else
255 paramtype = V_ASN1_UNDEF;
256
257 if (algor1)
258 X509_ALGOR_set0(algor1, OBJ_nid2obj(signid), paramtype, NULL);
259 if (algor2)
260 X509_ALGOR_set0(algor2, OBJ_nid2obj(signid), paramtype, NULL);
261
262 EVP_MD_CTX_init(&ctx);
260 inl=ASN1_item_i2d(asn,&buf_in, it); 263 inl=ASN1_item_i2d(asn,&buf_in, it);
261 outll=outl=EVP_PKEY_size(pkey); 264 outll=outl=EVP_PKEY_size(pkey);
262 buf_out=(unsigned char *)OPENSSL_malloc((unsigned int)outl); 265 buf_out=(unsigned char *)OPENSSL_malloc((unsigned int)outl);
@@ -267,12 +270,7 @@ int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
267 goto err; 270 goto err;
268 } 271 }
269 272
270 if (!EVP_SignInit_ex(&ctx,type, NULL)) 273 EVP_SignInit_ex(&ctx,type, NULL);
271 {
272 outl=0;
273 ASN1err(ASN1_F_ASN1_ITEM_SIGN,ERR_R_EVP_LIB);
274 goto err;
275 }
276 EVP_SignUpdate(&ctx,(unsigned char *)buf_in,inl); 274 EVP_SignUpdate(&ctx,(unsigned char *)buf_in,inl);
277 if (!EVP_SignFinal(&ctx,(unsigned char *)buf_out, 275 if (!EVP_SignFinal(&ctx,(unsigned char *)buf_out,
278 (unsigned int *)&outl,pkey)) 276 (unsigned int *)&outl,pkey))
diff --git a/src/lib/libssl/src/crypto/asn1/a_strnid.c b/src/lib/libssl/src/crypto/asn1/a_strnid.c
index fe515b52ba..753021a7a2 100644
--- a/src/lib/libssl/src/crypto/asn1/a_strnid.c
+++ b/src/lib/libssl/src/crypto/asn1/a_strnid.c
@@ -67,7 +67,6 @@ static STACK_OF(ASN1_STRING_TABLE) *stable = NULL;
67static void st_free(ASN1_STRING_TABLE *tbl); 67static void st_free(ASN1_STRING_TABLE *tbl);
68static int sk_table_cmp(const ASN1_STRING_TABLE * const *a, 68static int sk_table_cmp(const ASN1_STRING_TABLE * const *a,
69 const ASN1_STRING_TABLE * const *b); 69 const ASN1_STRING_TABLE * const *b);
70static int table_cmp(const void *a, const void *b);
71 70
72 71
73/* This is the global mask for the mbstring functions: this is use to 72/* This is the global mask for the mbstring functions: this is use to
@@ -158,7 +157,7 @@ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in,
158 157
159/* This table must be kept in NID order */ 158/* This table must be kept in NID order */
160 159
161static ASN1_STRING_TABLE tbl_standard[] = { 160static const ASN1_STRING_TABLE tbl_standard[] = {
162{NID_commonName, 1, ub_common_name, DIRSTRING_TYPE, 0}, 161{NID_commonName, 1, ub_common_name, DIRSTRING_TYPE, 0},
163{NID_countryName, 2, 2, B_ASN1_PRINTABLESTRING, STABLE_NO_MASK}, 162{NID_countryName, 2, 2, B_ASN1_PRINTABLESTRING, STABLE_NO_MASK},
164{NID_localityName, 1, ub_locality_name, DIRSTRING_TYPE, 0}, 163{NID_localityName, 1, ub_locality_name, DIRSTRING_TYPE, 0},
@@ -186,22 +185,23 @@ static int sk_table_cmp(const ASN1_STRING_TABLE * const *a,
186 return (*a)->nid - (*b)->nid; 185 return (*a)->nid - (*b)->nid;
187} 186}
188 187
189static int table_cmp(const void *a, const void *b) 188DECLARE_OBJ_BSEARCH_CMP_FN(ASN1_STRING_TABLE, ASN1_STRING_TABLE, table);
189
190static int table_cmp(const ASN1_STRING_TABLE *a, const ASN1_STRING_TABLE *b)
190{ 191{
191 const ASN1_STRING_TABLE *sa = a, *sb = b; 192 return a->nid - b->nid;
192 return sa->nid - sb->nid;
193} 193}
194 194
195IMPLEMENT_OBJ_BSEARCH_CMP_FN(ASN1_STRING_TABLE, ASN1_STRING_TABLE, table);
196
195ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid) 197ASN1_STRING_TABLE *ASN1_STRING_TABLE_get(int nid)
196{ 198{
197 int idx; 199 int idx;
198 ASN1_STRING_TABLE *ttmp; 200 ASN1_STRING_TABLE *ttmp;
199 ASN1_STRING_TABLE fnd; 201 ASN1_STRING_TABLE fnd;
200 fnd.nid = nid; 202 fnd.nid = nid;
201 ttmp = (ASN1_STRING_TABLE *) OBJ_bsearch((char *)&fnd, 203 ttmp = OBJ_bsearch_table(&fnd, tbl_standard,
202 (char *)tbl_standard, 204 sizeof(tbl_standard)/sizeof(ASN1_STRING_TABLE));
203 sizeof(tbl_standard)/sizeof(ASN1_STRING_TABLE),
204 sizeof(ASN1_STRING_TABLE), table_cmp);
205 if(ttmp) return ttmp; 205 if(ttmp) return ttmp;
206 if(!stable) return NULL; 206 if(!stable) return NULL;
207 idx = sk_ASN1_STRING_TABLE_find(stable, &fnd); 207 idx = sk_ASN1_STRING_TABLE_find(stable, &fnd);
diff --git a/src/lib/libssl/src/crypto/asn1/a_time.c b/src/lib/libssl/src/crypto/asn1/a_time.c
index 159681fbcb..e2eb9b243e 100644
--- a/src/lib/libssl/src/crypto/asn1/a_time.c
+++ b/src/lib/libssl/src/crypto/asn1/a_time.c
@@ -100,18 +100,29 @@ int i2d_ASN1_TIME(ASN1_TIME *a, unsigned char **pp)
100 100
101ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t) 101ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t)
102 { 102 {
103 return ASN1_TIME_adj(s, t, 0, 0);
104 }
105
106ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s, time_t t,
107 int offset_day, long offset_sec)
108 {
103 struct tm *ts; 109 struct tm *ts;
104 struct tm data; 110 struct tm data;
105 111
106 ts=OPENSSL_gmtime(&t,&data); 112 ts=OPENSSL_gmtime(&t,&data);
107 if (ts == NULL) 113 if (ts == NULL)
108 { 114 {
109 ASN1err(ASN1_F_ASN1_TIME_SET, ASN1_R_ERROR_GETTING_TIME); 115 ASN1err(ASN1_F_ASN1_TIME_ADJ, ASN1_R_ERROR_GETTING_TIME);
110 return NULL; 116 return NULL;
111 } 117 }
118 if (offset_day || offset_sec)
119 {
120 if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec))
121 return NULL;
122 }
112 if((ts->tm_year >= 50) && (ts->tm_year < 150)) 123 if((ts->tm_year >= 50) && (ts->tm_year < 150))
113 return ASN1_UTCTIME_set(s, t); 124 return ASN1_UTCTIME_adj(s, t, offset_day, offset_sec);
114 return ASN1_GENERALIZEDTIME_set(s,t); 125 return ASN1_GENERALIZEDTIME_adj(s, t, offset_day, offset_sec);
115 } 126 }
116 127
117int ASN1_TIME_check(ASN1_TIME *t) 128int ASN1_TIME_check(ASN1_TIME *t)
@@ -162,3 +173,26 @@ ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZE
162 173
163 return ret; 174 return ret;
164 } 175 }
176
177int ASN1_TIME_set_string(ASN1_TIME *s, const char *str)
178 {
179 ASN1_TIME t;
180
181 t.length = strlen(str);
182 t.data = (unsigned char *)str;
183 t.flags = 0;
184
185 t.type = V_ASN1_UTCTIME;
186
187 if (!ASN1_TIME_check(&t))
188 {
189 t.type = V_ASN1_GENERALIZEDTIME;
190 if (!ASN1_TIME_check(&t))
191 return 0;
192 }
193
194 if (s && !ASN1_STRING_copy((ASN1_STRING *)s, (ASN1_STRING *)&t))
195 return 0;
196
197 return 1;
198 }
diff --git a/src/lib/libssl/src/crypto/asn1/a_type.c b/src/lib/libssl/src/crypto/asn1/a_type.c
index 36beceacdb..a45d2f9d12 100644
--- a/src/lib/libssl/src/crypto/asn1/a_type.c
+++ b/src/lib/libssl/src/crypto/asn1/a_type.c
@@ -77,7 +77,10 @@ void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value)
77 ASN1_primitive_free((ASN1_VALUE **)tmp_a, NULL); 77 ASN1_primitive_free((ASN1_VALUE **)tmp_a, NULL);
78 } 78 }
79 a->type=type; 79 a->type=type;
80 a->value.ptr=value; 80 if (type == V_ASN1_BOOLEAN)
81 a->value.boolean = value ? 0xff : 0;
82 else
83 a->value.ptr=value;
81 } 84 }
82 85
83int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value) 86int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value)
@@ -98,7 +101,7 @@ int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value)
98 else 101 else
99 { 102 {
100 ASN1_STRING *sdup; 103 ASN1_STRING *sdup;
101 sdup = ASN1_STRING_dup((ASN1_STRING *)value); 104 sdup = ASN1_STRING_dup(value);
102 if (!sdup) 105 if (!sdup)
103 return 0; 106 return 0;
104 ASN1_TYPE_set(a, type, sdup); 107 ASN1_TYPE_set(a, type, sdup);
@@ -108,3 +111,49 @@ int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value)
108 111
109IMPLEMENT_STACK_OF(ASN1_TYPE) 112IMPLEMENT_STACK_OF(ASN1_TYPE)
110IMPLEMENT_ASN1_SET_OF(ASN1_TYPE) 113IMPLEMENT_ASN1_SET_OF(ASN1_TYPE)
114
115/* Returns 0 if they are equal, != 0 otherwise. */
116int ASN1_TYPE_cmp(ASN1_TYPE *a, ASN1_TYPE *b)
117 {
118 int result = -1;
119
120 if (!a || !b || a->type != b->type) return -1;
121
122 switch (a->type)
123 {
124 case V_ASN1_OBJECT:
125 result = OBJ_cmp(a->value.object, b->value.object);
126 break;
127 case V_ASN1_NULL:
128 result = 0; /* They do not have content. */
129 break;
130 case V_ASN1_INTEGER:
131 case V_ASN1_NEG_INTEGER:
132 case V_ASN1_ENUMERATED:
133 case V_ASN1_NEG_ENUMERATED:
134 case V_ASN1_BIT_STRING:
135 case V_ASN1_OCTET_STRING:
136 case V_ASN1_SEQUENCE:
137 case V_ASN1_SET:
138 case V_ASN1_NUMERICSTRING:
139 case V_ASN1_PRINTABLESTRING:
140 case V_ASN1_T61STRING:
141 case V_ASN1_VIDEOTEXSTRING:
142 case V_ASN1_IA5STRING:
143 case V_ASN1_UTCTIME:
144 case V_ASN1_GENERALIZEDTIME:
145 case V_ASN1_GRAPHICSTRING:
146 case V_ASN1_VISIBLESTRING:
147 case V_ASN1_GENERALSTRING:
148 case V_ASN1_UNIVERSALSTRING:
149 case V_ASN1_BMPSTRING:
150 case V_ASN1_UTF8STRING:
151 case V_ASN1_OTHER:
152 default:
153 result = ASN1_STRING_cmp((ASN1_STRING *) a->value.ptr,
154 (ASN1_STRING *) b->value.ptr);
155 break;
156 }
157
158 return result;
159 }
diff --git a/src/lib/libssl/src/crypto/asn1/a_utctm.c b/src/lib/libssl/src/crypto/asn1/a_utctm.c
index d31c028193..072e236592 100644
--- a/src/lib/libssl/src/crypto/asn1/a_utctm.c
+++ b/src/lib/libssl/src/crypto/asn1/a_utctm.c
@@ -114,8 +114,8 @@ err:
114 114
115int ASN1_UTCTIME_check(ASN1_UTCTIME *d) 115int ASN1_UTCTIME_check(ASN1_UTCTIME *d)
116 { 116 {
117 static int min[8]={ 0, 1, 1, 0, 0, 0, 0, 0}; 117 static const int min[8]={ 0, 1, 1, 0, 0, 0, 0, 0};
118 static int max[8]={99,12,31,23,59,59,12,59}; 118 static const int max[8]={99,12,31,23,59,59,12,59};
119 char *a; 119 char *a;
120 int n,i,l,o; 120 int n,i,l,o;
121 121
@@ -186,6 +186,12 @@ int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str)
186 186
187ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t) 187ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t)
188 { 188 {
189 return ASN1_UTCTIME_adj(s, t, 0, 0);
190 }
191
192ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
193 int offset_day, long offset_sec)
194 {
189 char *p; 195 char *p;
190 struct tm *ts; 196 struct tm *ts;
191 struct tm data; 197 struct tm data;
@@ -200,13 +206,22 @@ ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s, time_t t)
200 if (ts == NULL) 206 if (ts == NULL)
201 return(NULL); 207 return(NULL);
202 208
209 if (offset_day || offset_sec)
210 {
211 if (!OPENSSL_gmtime_adj(ts, offset_day, offset_sec))
212 return NULL;
213 }
214
215 if((ts->tm_year < 50) || (ts->tm_year >= 150))
216 return NULL;
217
203 p=(char *)s->data; 218 p=(char *)s->data;
204 if ((p == NULL) || ((size_t)s->length < len)) 219 if ((p == NULL) || ((size_t)s->length < len))
205 { 220 {
206 p=OPENSSL_malloc(len); 221 p=OPENSSL_malloc(len);
207 if (p == NULL) 222 if (p == NULL)
208 { 223 {
209 ASN1err(ASN1_F_ASN1_UTCTIME_SET,ERR_R_MALLOC_FAILURE); 224 ASN1err(ASN1_F_ASN1_UTCTIME_ADJ,ERR_R_MALLOC_FAILURE);
210 return(NULL); 225 return(NULL);
211 } 226 }
212 if (s->data != NULL) 227 if (s->data != NULL)
diff --git a/src/lib/libssl/src/crypto/asn1/a_verify.c b/src/lib/libssl/src/crypto/asn1/a_verify.c
index da3efaaf8d..cecdb13c70 100644
--- a/src/lib/libssl/src/crypto/asn1/a_verify.c
+++ b/src/lib/libssl/src/crypto/asn1/a_verify.c
@@ -60,6 +60,7 @@
60#include <time.h> 60#include <time.h>
61 61
62#include "cryptlib.h" 62#include "cryptlib.h"
63#include "asn1_locl.h"
63 64
64#ifndef NO_SYS_TYPES_H 65#ifndef NO_SYS_TYPES_H
65# include <sys/types.h> 66# include <sys/types.h>
@@ -100,12 +101,7 @@ int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *a, ASN1_BIT_STRING *signature,
100 p=buf_in; 101 p=buf_in;
101 102
102 i2d(data,&p); 103 i2d(data,&p);
103 if (!EVP_VerifyInit_ex(&ctx,type, NULL)) 104 EVP_VerifyInit_ex(&ctx,type, NULL);
104 {
105 ASN1err(ASN1_F_ASN1_VERIFY,ERR_R_EVP_LIB);
106 ret=0;
107 goto err;
108 }
109 EVP_VerifyUpdate(&ctx,(unsigned char *)buf_in,inl); 105 EVP_VerifyUpdate(&ctx,(unsigned char *)buf_in,inl);
110 106
111 OPENSSL_cleanse(buf_in,(unsigned int)inl); 107 OPENSSL_cleanse(buf_in,(unsigned int)inl);
@@ -134,19 +130,34 @@ int ASN1_item_verify(const ASN1_ITEM *it, X509_ALGOR *a, ASN1_BIT_STRING *signat
134 void *asn, EVP_PKEY *pkey) 130 void *asn, EVP_PKEY *pkey)
135 { 131 {
136 EVP_MD_CTX ctx; 132 EVP_MD_CTX ctx;
137 const EVP_MD *type; 133 const EVP_MD *type = NULL;
138 unsigned char *buf_in=NULL; 134 unsigned char *buf_in=NULL;
139 int ret= -1,i,inl; 135 int ret= -1,inl;
136
137 int mdnid, pknid;
140 138
141 EVP_MD_CTX_init(&ctx); 139 EVP_MD_CTX_init(&ctx);
142 i=OBJ_obj2nid(a->algorithm); 140
143 type=EVP_get_digestbyname(OBJ_nid2sn(i)); 141 /* Convert signature OID into digest and public key OIDs */
142 if (!OBJ_find_sigid_algs(OBJ_obj2nid(a->algorithm), &mdnid, &pknid))
143 {
144 ASN1err(ASN1_F_ASN1_ITEM_VERIFY,ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM);
145 goto err;
146 }
147 type=EVP_get_digestbynid(mdnid);
144 if (type == NULL) 148 if (type == NULL)
145 { 149 {
146 ASN1err(ASN1_F_ASN1_ITEM_VERIFY,ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM); 150 ASN1err(ASN1_F_ASN1_ITEM_VERIFY,ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM);
147 goto err; 151 goto err;
148 } 152 }
149 153
154 /* Check public key OID matches public key type */
155 if (EVP_PKEY_type(pknid) != pkey->ameth->pkey_id)
156 {
157 ASN1err(ASN1_F_ASN1_ITEM_VERIFY,ASN1_R_WRONG_PUBLIC_KEY_TYPE);
158 goto err;
159 }
160
150 if (!EVP_VerifyInit_ex(&ctx,type, NULL)) 161 if (!EVP_VerifyInit_ex(&ctx,type, NULL))
151 { 162 {
152 ASN1err(ASN1_F_ASN1_ITEM_VERIFY,ERR_R_EVP_LIB); 163 ASN1err(ASN1_F_ASN1_ITEM_VERIFY,ERR_R_EVP_LIB);
diff --git a/src/lib/libssl/src/crypto/asn1/asn1.h b/src/lib/libssl/src/crypto/asn1/asn1.h
index e3385226d4..f7718b5a94 100644
--- a/src/lib/libssl/src/crypto/asn1/asn1.h
+++ b/src/lib/libssl/src/crypto/asn1/asn1.h
@@ -213,7 +213,7 @@ typedef struct asn1_object_st
213 const char *sn,*ln; 213 const char *sn,*ln;
214 int nid; 214 int nid;
215 int length; 215 int length;
216 unsigned char *data; 216 const unsigned char *data; /* data remains const after init */
217 int flags; /* Should we free this one */ 217 int flags; /* Should we free this one */
218 } ASN1_OBJECT; 218 } ASN1_OBJECT;
219 219
@@ -228,8 +228,12 @@ typedef struct asn1_object_st
228 * complete and is a place holder for content when it had all been 228 * complete and is a place holder for content when it had all been
229 * accessed. The flag will be reset when content has been written to it. 229 * accessed. The flag will be reset when content has been written to it.
230 */ 230 */
231#define ASN1_STRING_FLAG_CONT 0x020
232 231
232#define ASN1_STRING_FLAG_CONT 0x020
233/* This flag is used by ASN1 code to indicate an ASN1_STRING is an MSTRING
234 * type.
235 */
236#define ASN1_STRING_FLAG_MSTRING 0x040
233/* This is the base type that holds just about everything :-) */ 237/* This is the base type that holds just about everything :-) */
234typedef struct asn1_string_st 238typedef struct asn1_string_st
235 { 239 {
@@ -330,6 +334,13 @@ typedef struct ASN1_VALUE_st ASN1_VALUE;
330 type *name##_new(void); \ 334 type *name##_new(void); \
331 void name##_free(type *a); 335 void name##_free(type *a);
332 336
337#define DECLARE_ASN1_PRINT_FUNCTION(stname) \
338 DECLARE_ASN1_PRINT_FUNCTION_fname(stname, stname)
339
340#define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \
341 int fname##_print_ctx(BIO *out, stname *x, int indent, \
342 const ASN1_PCTX *pctx);
343
333#define D2I_OF(type) type *(*)(type **,const unsigned char **,long) 344#define D2I_OF(type) type *(*)(type **,const unsigned char **,long)
334#define I2D_OF(type) int (*)(type *,unsigned char **) 345#define I2D_OF(type) int (*)(type *,unsigned char **)
335#define I2D_OF_const(type) int (*)(const type *,unsigned char **) 346#define I2D_OF_const(type) int (*)(const type *,unsigned char **)
@@ -534,28 +545,23 @@ typedef struct asn1_type_st
534 * contain the set or sequence bytes */ 545 * contain the set or sequence bytes */
535 ASN1_STRING * set; 546 ASN1_STRING * set;
536 ASN1_STRING * sequence; 547 ASN1_STRING * sequence;
537 ASN1_VALUE * asn1_value; 548 ASN1_VALUE * asn1_value;
538 } value; 549 } value;
539 } ASN1_TYPE; 550 } ASN1_TYPE;
540 551
541DECLARE_STACK_OF(ASN1_TYPE) 552DECLARE_STACK_OF(ASN1_TYPE)
542DECLARE_ASN1_SET_OF(ASN1_TYPE) 553DECLARE_ASN1_SET_OF(ASN1_TYPE)
543 554
544typedef struct asn1_method_st 555typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY;
545 { 556
546 i2d_of_void *i2d; 557DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY)
547 d2i_of_void *d2i; 558DECLARE_ASN1_ENCODE_FUNCTIONS_const(ASN1_SEQUENCE_ANY, ASN1_SET_ANY)
548 void *(*create)(void); 559
549 void (*destroy)(void *); 560typedef struct NETSCAPE_X509_st
550 } ASN1_METHOD;
551
552/* This is used when parsing some Netscape objects */
553typedef struct asn1_header_st
554 { 561 {
555 ASN1_OCTET_STRING *header; 562 ASN1_OCTET_STRING *header;
556 void *data; 563 X509 *cert;
557 ASN1_METHOD *meth; 564 } NETSCAPE_X509;
558 } ASN1_HEADER;
559 565
560/* This is used to contain a list of bit names */ 566/* This is used to contain a list of bit names */
561typedef struct BIT_STRING_BITNAME_st { 567typedef struct BIT_STRING_BITNAME_st {
@@ -575,32 +581,34 @@ typedef struct BIT_STRING_BITNAME_st {
575 ASN1_STRING_type_new(V_ASN1_BIT_STRING) 581 ASN1_STRING_type_new(V_ASN1_BIT_STRING)
576#define M_ASN1_BIT_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 582#define M_ASN1_BIT_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
577#define M_ASN1_BIT_STRING_dup(a) (ASN1_BIT_STRING *)\ 583#define M_ASN1_BIT_STRING_dup(a) (ASN1_BIT_STRING *)\
578 ASN1_STRING_dup((ASN1_STRING *)a) 584 ASN1_STRING_dup((const ASN1_STRING *)a)
579#define M_ASN1_BIT_STRING_cmp(a,b) ASN1_STRING_cmp(\ 585#define M_ASN1_BIT_STRING_cmp(a,b) ASN1_STRING_cmp(\
580 (ASN1_STRING *)a,(ASN1_STRING *)b) 586 (const ASN1_STRING *)a,(const ASN1_STRING *)b)
581#define M_ASN1_BIT_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) 587#define M_ASN1_BIT_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c)
582 588
583#define M_ASN1_INTEGER_new() (ASN1_INTEGER *)\ 589#define M_ASN1_INTEGER_new() (ASN1_INTEGER *)\
584 ASN1_STRING_type_new(V_ASN1_INTEGER) 590 ASN1_STRING_type_new(V_ASN1_INTEGER)
585#define M_ASN1_INTEGER_free(a) ASN1_STRING_free((ASN1_STRING *)a) 591#define M_ASN1_INTEGER_free(a) ASN1_STRING_free((ASN1_STRING *)a)
586#define M_ASN1_INTEGER_dup(a) (ASN1_INTEGER *)ASN1_STRING_dup((ASN1_STRING *)a) 592#define M_ASN1_INTEGER_dup(a) (ASN1_INTEGER *)\
593 ASN1_STRING_dup((const ASN1_STRING *)a)
587#define M_ASN1_INTEGER_cmp(a,b) ASN1_STRING_cmp(\ 594#define M_ASN1_INTEGER_cmp(a,b) ASN1_STRING_cmp(\
588 (ASN1_STRING *)a,(ASN1_STRING *)b) 595 (const ASN1_STRING *)a,(const ASN1_STRING *)b)
589 596
590#define M_ASN1_ENUMERATED_new() (ASN1_ENUMERATED *)\ 597#define M_ASN1_ENUMERATED_new() (ASN1_ENUMERATED *)\
591 ASN1_STRING_type_new(V_ASN1_ENUMERATED) 598 ASN1_STRING_type_new(V_ASN1_ENUMERATED)
592#define M_ASN1_ENUMERATED_free(a) ASN1_STRING_free((ASN1_STRING *)a) 599#define M_ASN1_ENUMERATED_free(a) ASN1_STRING_free((ASN1_STRING *)a)
593#define M_ASN1_ENUMERATED_dup(a) (ASN1_ENUMERATED *)ASN1_STRING_dup((ASN1_STRING *)a) 600#define M_ASN1_ENUMERATED_dup(a) (ASN1_ENUMERATED *)\
601 ASN1_STRING_dup((const ASN1_STRING *)a)
594#define M_ASN1_ENUMERATED_cmp(a,b) ASN1_STRING_cmp(\ 602#define M_ASN1_ENUMERATED_cmp(a,b) ASN1_STRING_cmp(\
595 (ASN1_STRING *)a,(ASN1_STRING *)b) 603 (const ASN1_STRING *)a,(const ASN1_STRING *)b)
596 604
597#define M_ASN1_OCTET_STRING_new() (ASN1_OCTET_STRING *)\ 605#define M_ASN1_OCTET_STRING_new() (ASN1_OCTET_STRING *)\
598 ASN1_STRING_type_new(V_ASN1_OCTET_STRING) 606 ASN1_STRING_type_new(V_ASN1_OCTET_STRING)
599#define M_ASN1_OCTET_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 607#define M_ASN1_OCTET_STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
600#define M_ASN1_OCTET_STRING_dup(a) (ASN1_OCTET_STRING *)\ 608#define M_ASN1_OCTET_STRING_dup(a) (ASN1_OCTET_STRING *)\
601 ASN1_STRING_dup((ASN1_STRING *)a) 609 ASN1_STRING_dup((const ASN1_STRING *)a)
602#define M_ASN1_OCTET_STRING_cmp(a,b) ASN1_STRING_cmp(\ 610#define M_ASN1_OCTET_STRING_cmp(a,b) ASN1_STRING_cmp(\
603 (ASN1_STRING *)a,(ASN1_STRING *)b) 611 (const ASN1_STRING *)a,(const ASN1_STRING *)b)
604#define M_ASN1_OCTET_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c) 612#define M_ASN1_OCTET_STRING_set(a,b,c) ASN1_STRING_set((ASN1_STRING *)a,b,c)
605#define M_ASN1_OCTET_STRING_print(a,b) ASN1_STRING_print(a,(ASN1_STRING *)b) 613#define M_ASN1_OCTET_STRING_print(a,b) ASN1_STRING_print(a,(ASN1_STRING *)b)
606#define M_i2d_ASN1_OCTET_STRING(a,pp) \ 614#define M_i2d_ASN1_OCTET_STRING(a,pp) \
@@ -684,7 +692,7 @@ typedef struct BIT_STRING_BITNAME_st {
684 ASN1_STRING_type_new(V_ASN1_IA5STRING) 692 ASN1_STRING_type_new(V_ASN1_IA5STRING)
685#define M_ASN1_IA5STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a) 693#define M_ASN1_IA5STRING_free(a) ASN1_STRING_free((ASN1_STRING *)a)
686#define M_ASN1_IA5STRING_dup(a) \ 694#define M_ASN1_IA5STRING_dup(a) \
687 (ASN1_IA5STRING *)ASN1_STRING_dup((ASN1_STRING *)a) 695 (ASN1_IA5STRING *)ASN1_STRING_dup((const ASN1_STRING *)a)
688#define M_i2d_ASN1_IA5STRING(a,pp) \ 696#define M_i2d_ASN1_IA5STRING(a,pp) \
689 i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_IA5STRING,\ 697 i2d_ASN1_bytes((ASN1_STRING *)a,pp,V_ASN1_IA5STRING,\
690 V_ASN1_UNIVERSAL) 698 V_ASN1_UNIVERSAL)
@@ -695,18 +703,20 @@ typedef struct BIT_STRING_BITNAME_st {
695#define M_ASN1_UTCTIME_new() (ASN1_UTCTIME *)\ 703#define M_ASN1_UTCTIME_new() (ASN1_UTCTIME *)\
696 ASN1_STRING_type_new(V_ASN1_UTCTIME) 704 ASN1_STRING_type_new(V_ASN1_UTCTIME)
697#define M_ASN1_UTCTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) 705#define M_ASN1_UTCTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a)
698#define M_ASN1_UTCTIME_dup(a) (ASN1_UTCTIME *)ASN1_STRING_dup((ASN1_STRING *)a) 706#define M_ASN1_UTCTIME_dup(a) (ASN1_UTCTIME *)\
707 ASN1_STRING_dup((const ASN1_STRING *)a)
699 708
700#define M_ASN1_GENERALIZEDTIME_new() (ASN1_GENERALIZEDTIME *)\ 709#define M_ASN1_GENERALIZEDTIME_new() (ASN1_GENERALIZEDTIME *)\
701 ASN1_STRING_type_new(V_ASN1_GENERALIZEDTIME) 710 ASN1_STRING_type_new(V_ASN1_GENERALIZEDTIME)
702#define M_ASN1_GENERALIZEDTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) 711#define M_ASN1_GENERALIZEDTIME_free(a) ASN1_STRING_free((ASN1_STRING *)a)
703#define M_ASN1_GENERALIZEDTIME_dup(a) (ASN1_GENERALIZEDTIME *)ASN1_STRING_dup(\ 712#define M_ASN1_GENERALIZEDTIME_dup(a) (ASN1_GENERALIZEDTIME *)ASN1_STRING_dup(\
704 (ASN1_STRING *)a) 713 (const ASN1_STRING *)a)
705 714
706#define M_ASN1_TIME_new() (ASN1_TIME *)\ 715#define M_ASN1_TIME_new() (ASN1_TIME *)\
707 ASN1_STRING_type_new(V_ASN1_UTCTIME) 716 ASN1_STRING_type_new(V_ASN1_UTCTIME)
708#define M_ASN1_TIME_free(a) ASN1_STRING_free((ASN1_STRING *)a) 717#define M_ASN1_TIME_free(a) ASN1_STRING_free((ASN1_STRING *)a)
709#define M_ASN1_TIME_dup(a) (ASN1_TIME *)ASN1_STRING_dup((ASN1_STRING *)a) 718#define M_ASN1_TIME_dup(a) (ASN1_TIME *)\
719 ASN1_STRING_dup((const ASN1_STRING *)a)
710 720
711#define M_ASN1_GENERALSTRING_new() (ASN1_GENERALSTRING *)\ 721#define M_ASN1_GENERALSTRING_new() (ASN1_GENERALSTRING *)\
712 ASN1_STRING_type_new(V_ASN1_GENERALSTRING) 722 ASN1_STRING_type_new(V_ASN1_GENERALSTRING)
@@ -767,6 +777,7 @@ DECLARE_ASN1_FUNCTIONS_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)
767int ASN1_TYPE_get(ASN1_TYPE *a); 777int ASN1_TYPE_get(ASN1_TYPE *a);
768void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value); 778void ASN1_TYPE_set(ASN1_TYPE *a, int type, void *value);
769int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value); 779int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value);
780int ASN1_TYPE_cmp(ASN1_TYPE *a, ASN1_TYPE *b);
770 781
771ASN1_OBJECT * ASN1_OBJECT_new(void ); 782ASN1_OBJECT * ASN1_OBJECT_new(void );
772void ASN1_OBJECT_free(ASN1_OBJECT *a); 783void ASN1_OBJECT_free(ASN1_OBJECT *a);
@@ -783,14 +794,15 @@ DECLARE_ASN1_SET_OF(ASN1_OBJECT)
783 794
784ASN1_STRING * ASN1_STRING_new(void); 795ASN1_STRING * ASN1_STRING_new(void);
785void ASN1_STRING_free(ASN1_STRING *a); 796void ASN1_STRING_free(ASN1_STRING *a);
786ASN1_STRING * ASN1_STRING_dup(ASN1_STRING *a); 797int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str);
798ASN1_STRING * ASN1_STRING_dup(const ASN1_STRING *a);
787ASN1_STRING * ASN1_STRING_type_new(int type ); 799ASN1_STRING * ASN1_STRING_type_new(int type );
788int ASN1_STRING_cmp(ASN1_STRING *a, ASN1_STRING *b); 800int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b);
789 /* Since this is used to store all sorts of things, via macros, for now, make 801 /* Since this is used to store all sorts of things, via macros, for now, make
790 its data void * */ 802 its data void * */
791int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len); 803int ASN1_STRING_set(ASN1_STRING *str, const void *data, int len);
792void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len); 804void ASN1_STRING_set0(ASN1_STRING *str, void *data, int len);
793int ASN1_STRING_length(ASN1_STRING *x); 805int ASN1_STRING_length(const ASN1_STRING *x);
794void ASN1_STRING_length_set(ASN1_STRING *x, int n); 806void ASN1_STRING_length_set(ASN1_STRING *x, int n);
795int ASN1_STRING_type(ASN1_STRING *x); 807int ASN1_STRING_type(ASN1_STRING *x);
796unsigned char * ASN1_STRING_data(ASN1_STRING *x); 808unsigned char * ASN1_STRING_data(ASN1_STRING *x);
@@ -803,6 +815,8 @@ int ASN1_BIT_STRING_set(ASN1_BIT_STRING *a, unsigned char *d,
803 int length ); 815 int length );
804int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value); 816int ASN1_BIT_STRING_set_bit(ASN1_BIT_STRING *a, int n, int value);
805int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n); 817int ASN1_BIT_STRING_get_bit(ASN1_BIT_STRING *a, int n);
818int ASN1_BIT_STRING_check(ASN1_BIT_STRING *a,
819 unsigned char *flags, int flags_len);
806 820
807#ifndef OPENSSL_NO_BIO 821#ifndef OPENSSL_NO_BIO
808int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs, 822int ASN1_BIT_STRING_name_print(BIO *out, ASN1_BIT_STRING *bs,
@@ -821,13 +835,15 @@ ASN1_INTEGER *c2i_ASN1_INTEGER(ASN1_INTEGER **a,const unsigned char **pp,
821 long length); 835 long length);
822ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a,const unsigned char **pp, 836ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a,const unsigned char **pp,
823 long length); 837 long length);
824ASN1_INTEGER * ASN1_INTEGER_dup(ASN1_INTEGER *x); 838ASN1_INTEGER * ASN1_INTEGER_dup(const ASN1_INTEGER *x);
825int ASN1_INTEGER_cmp(ASN1_INTEGER *x, ASN1_INTEGER *y); 839int ASN1_INTEGER_cmp(const ASN1_INTEGER *x, const ASN1_INTEGER *y);
826 840
827DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED) 841DECLARE_ASN1_FUNCTIONS(ASN1_ENUMERATED)
828 842
829int ASN1_UTCTIME_check(ASN1_UTCTIME *a); 843int ASN1_UTCTIME_check(ASN1_UTCTIME *a);
830ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s,time_t t); 844ASN1_UTCTIME *ASN1_UTCTIME_set(ASN1_UTCTIME *s,time_t t);
845ASN1_UTCTIME *ASN1_UTCTIME_adj(ASN1_UTCTIME *s, time_t t,
846 int offset_day, long offset_sec);
831int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str); 847int ASN1_UTCTIME_set_string(ASN1_UTCTIME *s, const char *str);
832int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t); 848int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t);
833#if 0 849#if 0
@@ -836,11 +852,13 @@ time_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s);
836 852
837int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *a); 853int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *a);
838ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,time_t t); 854ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_set(ASN1_GENERALIZEDTIME *s,time_t t);
855ASN1_GENERALIZEDTIME *ASN1_GENERALIZEDTIME_adj(ASN1_GENERALIZEDTIME *s,
856 time_t t, int offset_day, long offset_sec);
839int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str); 857int ASN1_GENERALIZEDTIME_set_string(ASN1_GENERALIZEDTIME *s, const char *str);
840 858
841DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING) 859DECLARE_ASN1_FUNCTIONS(ASN1_OCTET_STRING)
842ASN1_OCTET_STRING * ASN1_OCTET_STRING_dup(ASN1_OCTET_STRING *a); 860ASN1_OCTET_STRING * ASN1_OCTET_STRING_dup(const ASN1_OCTET_STRING *a);
843int ASN1_OCTET_STRING_cmp(ASN1_OCTET_STRING *a, ASN1_OCTET_STRING *b); 861int ASN1_OCTET_STRING_cmp(const ASN1_OCTET_STRING *a, const ASN1_OCTET_STRING *b);
844int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, int len); 862int ASN1_OCTET_STRING_set(ASN1_OCTET_STRING *str, const unsigned char *data, int len);
845 863
846DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING) 864DECLARE_ASN1_FUNCTIONS(ASN1_VISIBLESTRING)
@@ -867,14 +885,20 @@ DECLARE_ASN1_FUNCTIONS(ASN1_TIME)
867DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF) 885DECLARE_ASN1_ITEM(ASN1_OCTET_STRING_NDEF)
868 886
869ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s,time_t t); 887ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s,time_t t);
888ASN1_TIME *ASN1_TIME_adj(ASN1_TIME *s,time_t t,
889 int offset_day, long offset_sec);
870int ASN1_TIME_check(ASN1_TIME *t); 890int ASN1_TIME_check(ASN1_TIME *t);
871ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out); 891ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(ASN1_TIME *t, ASN1_GENERALIZEDTIME **out);
892int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
872 893
873int i2d_ASN1_SET(STACK *a, unsigned char **pp, 894int i2d_ASN1_SET(STACK_OF(OPENSSL_BLOCK) *a, unsigned char **pp,
874 i2d_of_void *i2d, int ex_tag, int ex_class, int is_set); 895 i2d_of_void *i2d, int ex_tag, int ex_class,
875STACK * d2i_ASN1_SET(STACK **a, const unsigned char **pp, long length, 896 int is_set);
876 d2i_of_void *d2i, void (*free_func)(void *), 897STACK_OF(OPENSSL_BLOCK) *d2i_ASN1_SET(STACK_OF(OPENSSL_BLOCK) **a,
877 int ex_tag, int ex_class); 898 const unsigned char **pp,
899 long length, d2i_of_void *d2i,
900 void (*free_func)(OPENSSL_BLOCK), int ex_tag,
901 int ex_class);
878 902
879#ifndef OPENSSL_NO_BIO 903#ifndef OPENSSL_NO_BIO
880int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a); 904int i2a_ASN1_INTEGER(BIO *bp, ASN1_INTEGER *a);
@@ -892,9 +916,9 @@ ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data,int len,
892 const char *sn, const char *ln); 916 const char *sn, const char *ln);
893 917
894int ASN1_INTEGER_set(ASN1_INTEGER *a, long v); 918int ASN1_INTEGER_set(ASN1_INTEGER *a, long v);
895long ASN1_INTEGER_get(ASN1_INTEGER *a); 919long ASN1_INTEGER_get(const ASN1_INTEGER *a);
896ASN1_INTEGER *BN_to_ASN1_INTEGER(BIGNUM *bn, ASN1_INTEGER *ai); 920ASN1_INTEGER *BN_to_ASN1_INTEGER(const BIGNUM *bn, ASN1_INTEGER *ai);
897BIGNUM *ASN1_INTEGER_to_BN(ASN1_INTEGER *ai,BIGNUM *bn); 921BIGNUM *ASN1_INTEGER_to_BN(const ASN1_INTEGER *ai,BIGNUM *bn);
898 922
899int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v); 923int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v);
900long ASN1_ENUMERATED_get(ASN1_ENUMERATED *a); 924long ASN1_ENUMERATED_get(ASN1_ENUMERATED *a);
@@ -928,7 +952,7 @@ int ASN1_put_eoc(unsigned char **pp);
928int ASN1_object_size(int constructed, int length, int tag); 952int ASN1_object_size(int constructed, int length, int tag);
929 953
930/* Used to implement other functions */ 954/* Used to implement other functions */
931void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, char *x); 955void *ASN1_dup(i2d_of_void *i2d, d2i_of_void *d2i, void *x);
932 956
933#define ASN1_dup_of(type,i2d,d2i,x) \ 957#define ASN1_dup_of(type,i2d,d2i,x) \
934 ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \ 958 ((type*)ASN1_dup(CHECKED_I2D_OF(type, i2d), \
@@ -999,29 +1023,23 @@ int ASN1_i2d_bio(i2d_of_void *i2d,BIO *out, unsigned char *x);
999 CHECKED_PTR_OF(const type, x))) 1023 CHECKED_PTR_OF(const type, x)))
1000 1024
1001int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x); 1025int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, void *x);
1002int ASN1_UTCTIME_print(BIO *fp,ASN1_UTCTIME *a); 1026int ASN1_UTCTIME_print(BIO *fp, const ASN1_UTCTIME *a);
1003int ASN1_GENERALIZEDTIME_print(BIO *fp,ASN1_GENERALIZEDTIME *a); 1027int ASN1_GENERALIZEDTIME_print(BIO *fp, const ASN1_GENERALIZEDTIME *a);
1004int ASN1_TIME_print(BIO *fp,ASN1_TIME *a); 1028int ASN1_TIME_print(BIO *fp, const ASN1_TIME *a);
1005int ASN1_STRING_print(BIO *bp,ASN1_STRING *v); 1029int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v);
1006int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags); 1030int ASN1_STRING_print_ex(BIO *out, ASN1_STRING *str, unsigned long flags);
1031int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num,
1032 unsigned char *buf, int off);
1007int ASN1_parse(BIO *bp,const unsigned char *pp,long len,int indent); 1033int ASN1_parse(BIO *bp,const unsigned char *pp,long len,int indent);
1008int ASN1_parse_dump(BIO *bp,const unsigned char *pp,long len,int indent,int dump); 1034int ASN1_parse_dump(BIO *bp,const unsigned char *pp,long len,int indent,int dump);
1009#endif 1035#endif
1010const char *ASN1_tag2str(int tag); 1036const char *ASN1_tag2str(int tag);
1011 1037
1012/* Used to load and write netscape format cert/key */ 1038/* Used to load and write netscape format cert */
1013int i2d_ASN1_HEADER(ASN1_HEADER *a,unsigned char **pp);
1014ASN1_HEADER *d2i_ASN1_HEADER(ASN1_HEADER **a,const unsigned char **pp, long length);
1015ASN1_HEADER *ASN1_HEADER_new(void );
1016void ASN1_HEADER_free(ASN1_HEADER *a);
1017 1039
1018int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s); 1040DECLARE_ASN1_FUNCTIONS(NETSCAPE_X509)
1019 1041
1020/* Not used that much at this point, except for the first two */ 1042int ASN1_UNIVERSALSTRING_to_string(ASN1_UNIVERSALSTRING *s);
1021ASN1_METHOD *X509_asn1_meth(void);
1022ASN1_METHOD *RSAPrivateKey_asn1_meth(void);
1023ASN1_METHOD *ASN1_IA5STRING_asn1_meth(void);
1024ASN1_METHOD *ASN1_BIT_STRING_asn1_meth(void);
1025 1043
1026int ASN1_TYPE_set_octetstring(ASN1_TYPE *a, 1044int ASN1_TYPE_set_octetstring(ASN1_TYPE *a,
1027 unsigned char *data, int len); 1045 unsigned char *data, int len);
@@ -1032,9 +1050,9 @@ int ASN1_TYPE_set_int_octetstring(ASN1_TYPE *a, long num,
1032int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num, 1050int ASN1_TYPE_get_int_octetstring(ASN1_TYPE *a,long *num,
1033 unsigned char *data, int max_len); 1051 unsigned char *data, int max_len);
1034 1052
1035STACK *ASN1_seq_unpack(const unsigned char *buf, int len, 1053STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
1036 d2i_of_void *d2i, void (*free_func)(void *)); 1054 d2i_of_void *d2i, void (*free_func)(OPENSSL_BLOCK));
1037unsigned char *ASN1_seq_pack(STACK *safes, i2d_of_void *i2d, 1055unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d,
1038 unsigned char **buf, int *len ); 1056 unsigned char **buf, int *len );
1039void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i); 1057void *ASN1_unpack_string(ASN1_STRING *oct, d2i_of_void *d2i);
1040void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it); 1058void *ASN1_item_unpack(ASN1_STRING *oct, const ASN1_ITEM *it);
@@ -1077,15 +1095,58 @@ void ASN1_add_oid_module(void);
1077ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf); 1095ASN1_TYPE *ASN1_generate_nconf(char *str, CONF *nconf);
1078ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf); 1096ASN1_TYPE *ASN1_generate_v3(char *str, X509V3_CTX *cnf);
1079 1097
1080typedef int asn1_output_data_fn(BIO *out, BIO *data, ASN1_VALUE *val, int flags, 1098/* ASN1 Print flags */
1081 const ASN1_ITEM *it); 1099
1082 1100/* Indicate missing OPTIONAL fields */
1083int int_smime_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, 1101#define ASN1_PCTX_FLAGS_SHOW_ABSENT 0x001
1102/* Mark start and end of SEQUENCE */
1103#define ASN1_PCTX_FLAGS_SHOW_SEQUENCE 0x002
1104/* Mark start and end of SEQUENCE/SET OF */
1105#define ASN1_PCTX_FLAGS_SHOW_SSOF 0x004
1106/* Show the ASN1 type of primitives */
1107#define ASN1_PCTX_FLAGS_SHOW_TYPE 0x008
1108/* Don't show ASN1 type of ANY */
1109#define ASN1_PCTX_FLAGS_NO_ANY_TYPE 0x010
1110/* Don't show ASN1 type of MSTRINGs */
1111#define ASN1_PCTX_FLAGS_NO_MSTRING_TYPE 0x020
1112/* Don't show field names in SEQUENCE */
1113#define ASN1_PCTX_FLAGS_NO_FIELD_NAME 0x040
1114/* Show structure names of each SEQUENCE field */
1115#define ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME 0x080
1116/* Don't show structure name even at top level */
1117#define ASN1_PCTX_FLAGS_NO_STRUCT_NAME 0x100
1118
1119int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent,
1120 const ASN1_ITEM *it, const ASN1_PCTX *pctx);
1121ASN1_PCTX *ASN1_PCTX_new(void);
1122void ASN1_PCTX_free(ASN1_PCTX *p);
1123unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p);
1124void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags);
1125unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p);
1126void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags);
1127unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p);
1128void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags);
1129unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p);
1130void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags);
1131unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p);
1132void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags);
1133
1134BIO_METHOD *BIO_f_asn1(void);
1135
1136BIO *BIO_new_NDEF(BIO *out, ASN1_VALUE *val, const ASN1_ITEM *it);
1137
1138int i2d_ASN1_bio_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
1139 const ASN1_ITEM *it);
1140int PEM_write_bio_ASN1_stream(BIO *out, ASN1_VALUE *val, BIO *in, int flags,
1141 const char *hdr,
1142 const ASN1_ITEM *it);
1143int SMIME_write_ASN1(BIO *bio, ASN1_VALUE *val, BIO *data, int flags,
1084 int ctype_nid, int econt_nid, 1144 int ctype_nid, int econt_nid,
1085 STACK_OF(X509_ALGOR) *mdalgs, 1145 STACK_OF(X509_ALGOR) *mdalgs,
1086 asn1_output_data_fn *data_fn,
1087 const ASN1_ITEM *it); 1146 const ASN1_ITEM *it);
1088ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); 1147ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it);
1148int SMIME_crlf_copy(BIO *in, BIO *out, int flags);
1149int SMIME_text(BIO *in, BIO *out);
1089 1150
1090/* BEGIN ERROR CODES */ 1151/* BEGIN ERROR CODES */
1091/* The following lines are auto generated by the script mkerr.pl. Any changes 1152/* The following lines are auto generated by the script mkerr.pl. Any changes
@@ -1116,6 +1177,7 @@ void ERR_load_ASN1_strings(void);
1116#define ASN1_F_ASN1_ENUMERATED_TO_BN 113 1177#define ASN1_F_ASN1_ENUMERATED_TO_BN 113
1117#define ASN1_F_ASN1_EX_C2I 204 1178#define ASN1_F_ASN1_EX_C2I 204
1118#define ASN1_F_ASN1_FIND_END 190 1179#define ASN1_F_ASN1_FIND_END 190
1180#define ASN1_F_ASN1_GENERALIZEDTIME_ADJ 216
1119#define ASN1_F_ASN1_GENERALIZEDTIME_SET 185 1181#define ASN1_F_ASN1_GENERALIZEDTIME_SET 185
1120#define ASN1_F_ASN1_GENERATE_V3 178 1182#define ASN1_F_ASN1_GENERATE_V3 178
1121#define ASN1_F_ASN1_GET_OBJECT 114 1183#define ASN1_F_ASN1_GET_OBJECT 114
@@ -1136,7 +1198,7 @@ void ERR_load_ASN1_strings(void);
1136#define ASN1_F_ASN1_ITEM_VERIFY 197 1198#define ASN1_F_ASN1_ITEM_VERIFY 197
1137#define ASN1_F_ASN1_MBSTRING_NCOPY 122 1199#define ASN1_F_ASN1_MBSTRING_NCOPY 122
1138#define ASN1_F_ASN1_OBJECT_NEW 123 1200#define ASN1_F_ASN1_OBJECT_NEW 123
1139#define ASN1_F_ASN1_OUTPUT_DATA 207 1201#define ASN1_F_ASN1_OUTPUT_DATA 214
1140#define ASN1_F_ASN1_PACK_STRING 124 1202#define ASN1_F_ASN1_PACK_STRING 124
1141#define ASN1_F_ASN1_PCTX_NEW 205 1203#define ASN1_F_ASN1_PCTX_NEW 205
1142#define ASN1_F_ASN1_PKCS5_PBE_SET 125 1204#define ASN1_F_ASN1_PKCS5_PBE_SET 125
@@ -1150,14 +1212,17 @@ void ERR_load_ASN1_strings(void);
1150#define ASN1_F_ASN1_TEMPLATE_EX_D2I 132 1212#define ASN1_F_ASN1_TEMPLATE_EX_D2I 132
1151#define ASN1_F_ASN1_TEMPLATE_NEW 133 1213#define ASN1_F_ASN1_TEMPLATE_NEW 133
1152#define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131 1214#define ASN1_F_ASN1_TEMPLATE_NOEXP_D2I 131
1215#define ASN1_F_ASN1_TIME_ADJ 217
1153#define ASN1_F_ASN1_TIME_SET 175 1216#define ASN1_F_ASN1_TIME_SET 175
1154#define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134 1217#define ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING 134
1155#define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135 1218#define ASN1_F_ASN1_TYPE_GET_OCTETSTRING 135
1156#define ASN1_F_ASN1_UNPACK_STRING 136 1219#define ASN1_F_ASN1_UNPACK_STRING 136
1220#define ASN1_F_ASN1_UTCTIME_ADJ 218
1157#define ASN1_F_ASN1_UTCTIME_SET 187 1221#define ASN1_F_ASN1_UTCTIME_SET 187
1158#define ASN1_F_ASN1_VERIFY 137 1222#define ASN1_F_ASN1_VERIFY 137
1159#define ASN1_F_B64_READ_ASN1 208 1223#define ASN1_F_B64_READ_ASN1 209
1160#define ASN1_F_B64_WRITE_ASN1 209 1224#define ASN1_F_B64_WRITE_ASN1 210
1225#define ASN1_F_BIO_NEW_NDEF 208
1161#define ASN1_F_BITSTR_CB 180 1226#define ASN1_F_BITSTR_CB 180
1162#define ASN1_F_BN_TO_ASN1_ENUMERATED 138 1227#define ASN1_F_BN_TO_ASN1_ENUMERATED 138
1163#define ASN1_F_BN_TO_ASN1_INTEGER 139 1228#define ASN1_F_BN_TO_ASN1_INTEGER 139
@@ -1176,6 +1241,7 @@ void ERR_load_ASN1_strings(void);
1176#define ASN1_F_D2I_ASN1_TYPE_BYTES 149 1241#define ASN1_F_D2I_ASN1_TYPE_BYTES 149
1177#define ASN1_F_D2I_ASN1_UINTEGER 150 1242#define ASN1_F_D2I_ASN1_UINTEGER 150
1178#define ASN1_F_D2I_ASN1_UTCTIME 151 1243#define ASN1_F_D2I_ASN1_UTCTIME 151
1244#define ASN1_F_D2I_AUTOPRIVATEKEY 207
1179#define ASN1_F_D2I_NETSCAPE_RSA 152 1245#define ASN1_F_D2I_NETSCAPE_RSA 152
1180#define ASN1_F_D2I_NETSCAPE_RSA_2 153 1246#define ASN1_F_D2I_NETSCAPE_RSA_2 153
1181#define ASN1_F_D2I_PRIVATEKEY 154 1247#define ASN1_F_D2I_PRIVATEKEY 154
@@ -1185,6 +1251,7 @@ void ERR_load_ASN1_strings(void);
1185#define ASN1_F_D2I_X509 156 1251#define ASN1_F_D2I_X509 156
1186#define ASN1_F_D2I_X509_CINF 157 1252#define ASN1_F_D2I_X509_CINF 157
1187#define ASN1_F_D2I_X509_PKEY 159 1253#define ASN1_F_D2I_X509_PKEY 159
1254#define ASN1_F_I2D_ASN1_BIO_STREAM 211
1188#define ASN1_F_I2D_ASN1_SET 188 1255#define ASN1_F_I2D_ASN1_SET 188
1189#define ASN1_F_I2D_ASN1_TIME 160 1256#define ASN1_F_I2D_ASN1_TIME 160
1190#define ASN1_F_I2D_DSA_PUBKEY 161 1257#define ASN1_F_I2D_DSA_PUBKEY 161
@@ -1196,10 +1263,11 @@ void ERR_load_ASN1_strings(void);
1196#define ASN1_F_LONG_C2I 166 1263#define ASN1_F_LONG_C2I 166
1197#define ASN1_F_OID_MODULE_INIT 174 1264#define ASN1_F_OID_MODULE_INIT 174
1198#define ASN1_F_PARSE_TAGGING 182 1265#define ASN1_F_PARSE_TAGGING 182
1199#define ASN1_F_PKCS5_PBE2_SET 167 1266#define ASN1_F_PKCS5_PBE2_SET_IV 167
1200#define ASN1_F_PKCS5_PBE_SET 202 1267#define ASN1_F_PKCS5_PBE_SET 202
1201#define ASN1_F_SMIME_READ_ASN1 210 1268#define ASN1_F_PKCS5_PBE_SET0_ALGOR 215
1202#define ASN1_F_SMIME_TEXT 211 1269#define ASN1_F_SMIME_READ_ASN1 212
1270#define ASN1_F_SMIME_TEXT 213
1203#define ASN1_F_X509_CINF_NEW 168 1271#define ASN1_F_X509_CINF_NEW 168
1204#define ASN1_F_X509_CRL_ADD0_REVOKED 169 1272#define ASN1_F_X509_CRL_ADD0_REVOKED 169
1205#define ASN1_F_X509_INFO_NEW 170 1273#define ASN1_F_X509_INFO_NEW 170
@@ -1211,14 +1279,14 @@ void ERR_load_ASN1_strings(void);
1211 1279
1212/* Reason codes. */ 1280/* Reason codes. */
1213#define ASN1_R_ADDING_OBJECT 171 1281#define ASN1_R_ADDING_OBJECT 171
1214#define ASN1_R_ASN1_PARSE_ERROR 198 1282#define ASN1_R_ASN1_PARSE_ERROR 203
1215#define ASN1_R_ASN1_SIG_PARSE_ERROR 199 1283#define ASN1_R_ASN1_SIG_PARSE_ERROR 204
1216#define ASN1_R_AUX_ERROR 100 1284#define ASN1_R_AUX_ERROR 100
1217#define ASN1_R_BAD_CLASS 101 1285#define ASN1_R_BAD_CLASS 101
1218#define ASN1_R_BAD_OBJECT_HEADER 102 1286#define ASN1_R_BAD_OBJECT_HEADER 102
1219#define ASN1_R_BAD_PASSWORD_READ 103 1287#define ASN1_R_BAD_PASSWORD_READ 103
1220#define ASN1_R_BAD_TAG 104 1288#define ASN1_R_BAD_TAG 104
1221#define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 210 1289#define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214
1222#define ASN1_R_BN_LIB 105 1290#define ASN1_R_BN_LIB 105
1223#define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106 1291#define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106
1224#define ASN1_R_BUFFER_TOO_SMALL 107 1292#define ASN1_R_BUFFER_TOO_SMALL 107
@@ -1227,6 +1295,7 @@ void ERR_load_ASN1_strings(void);
1227#define ASN1_R_DECODE_ERROR 110 1295#define ASN1_R_DECODE_ERROR 110
1228#define ASN1_R_DECODING_ERROR 111 1296#define ASN1_R_DECODING_ERROR 111
1229#define ASN1_R_DEPTH_EXCEEDED 174 1297#define ASN1_R_DEPTH_EXCEEDED 174
1298#define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198
1230#define ASN1_R_ENCODE_ERROR 112 1299#define ASN1_R_ENCODE_ERROR 112
1231#define ASN1_R_ERROR_GETTING_TIME 173 1300#define ASN1_R_ERROR_GETTING_TIME 173
1232#define ASN1_R_ERROR_LOADING_SECTION 172 1301#define ASN1_R_ERROR_LOADING_SECTION 172
@@ -1260,9 +1329,10 @@ void ERR_load_ASN1_strings(void);
1260#define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128 1329#define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128
1261#define ASN1_R_INVALID_BMPSTRING_LENGTH 129 1330#define ASN1_R_INVALID_BMPSTRING_LENGTH 129
1262#define ASN1_R_INVALID_DIGIT 130 1331#define ASN1_R_INVALID_DIGIT 130
1263#define ASN1_R_INVALID_MIME_TYPE 200 1332#define ASN1_R_INVALID_MIME_TYPE 205
1264#define ASN1_R_INVALID_MODIFIER 186 1333#define ASN1_R_INVALID_MODIFIER 186
1265#define ASN1_R_INVALID_NUMBER 187 1334#define ASN1_R_INVALID_NUMBER 187
1335#define ASN1_R_INVALID_OBJECT_ENCODING 216
1266#define ASN1_R_INVALID_SEPARATOR 131 1336#define ASN1_R_INVALID_SEPARATOR 131
1267#define ASN1_R_INVALID_TIME_FORMAT 132 1337#define ASN1_R_INVALID_TIME_FORMAT 132
1268#define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133 1338#define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133
@@ -1270,9 +1340,9 @@ void ERR_load_ASN1_strings(void);
1270#define ASN1_R_IV_TOO_LARGE 135 1340#define ASN1_R_IV_TOO_LARGE 135
1271#define ASN1_R_LENGTH_ERROR 136 1341#define ASN1_R_LENGTH_ERROR 136
1272#define ASN1_R_LIST_ERROR 188 1342#define ASN1_R_LIST_ERROR 188
1273#define ASN1_R_MIME_NO_CONTENT_TYPE 201 1343#define ASN1_R_MIME_NO_CONTENT_TYPE 206
1274#define ASN1_R_MIME_PARSE_ERROR 202 1344#define ASN1_R_MIME_PARSE_ERROR 207
1275#define ASN1_R_MIME_SIG_PARSE_ERROR 203 1345#define ASN1_R_MIME_SIG_PARSE_ERROR 208
1276#define ASN1_R_MISSING_EOC 137 1346#define ASN1_R_MISSING_EOC 137
1277#define ASN1_R_MISSING_SECOND_NUMBER 138 1347#define ASN1_R_MISSING_SECOND_NUMBER 138
1278#define ASN1_R_MISSING_VALUE 189 1348#define ASN1_R_MISSING_VALUE 189
@@ -1282,11 +1352,12 @@ void ERR_load_ASN1_strings(void);
1282#define ASN1_R_NON_HEX_CHARACTERS 141 1352#define ASN1_R_NON_HEX_CHARACTERS 141
1283#define ASN1_R_NOT_ASCII_FORMAT 190 1353#define ASN1_R_NOT_ASCII_FORMAT 190
1284#define ASN1_R_NOT_ENOUGH_DATA 142 1354#define ASN1_R_NOT_ENOUGH_DATA 142
1285#define ASN1_R_NO_CONTENT_TYPE 204 1355#define ASN1_R_NO_CONTENT_TYPE 209
1356#define ASN1_R_NO_DEFAULT_DIGEST 201
1286#define ASN1_R_NO_MATCHING_CHOICE_TYPE 143 1357#define ASN1_R_NO_MATCHING_CHOICE_TYPE 143
1287#define ASN1_R_NO_MULTIPART_BODY_FAILURE 205 1358#define ASN1_R_NO_MULTIPART_BODY_FAILURE 210
1288#define ASN1_R_NO_MULTIPART_BOUNDARY 206 1359#define ASN1_R_NO_MULTIPART_BOUNDARY 211
1289#define ASN1_R_NO_SIG_CONTENT_TYPE 207 1360#define ASN1_R_NO_SIG_CONTENT_TYPE 212
1290#define ASN1_R_NULL_IS_WRONG_LENGTH 144 1361#define ASN1_R_NULL_IS_WRONG_LENGTH 144
1291#define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191 1362#define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191
1292#define ASN1_R_ODD_NUMBER_OF_CHARS 145 1363#define ASN1_R_ODD_NUMBER_OF_CHARS 145
@@ -1296,8 +1367,8 @@ void ERR_load_ASN1_strings(void);
1296#define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149 1367#define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149
1297#define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192 1368#define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192
1298#define ASN1_R_SHORT_LINE 150 1369#define ASN1_R_SHORT_LINE 150
1299#define ASN1_R_SIG_INVALID_MIME_TYPE 208 1370#define ASN1_R_SIG_INVALID_MIME_TYPE 213
1300#define ASN1_R_STREAMING_NOT_SUPPORTED 209 1371#define ASN1_R_STREAMING_NOT_SUPPORTED 202
1301#define ASN1_R_STRING_TOO_LONG 151 1372#define ASN1_R_STRING_TOO_LONG 151
1302#define ASN1_R_STRING_TOO_SHORT 152 1373#define ASN1_R_STRING_TOO_SHORT 152
1303#define ASN1_R_TAG_VALUE_TOO_HIGH 153 1374#define ASN1_R_TAG_VALUE_TOO_HIGH 153
@@ -1308,11 +1379,12 @@ void ERR_load_ASN1_strings(void);
1308#define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 157 1379#define ASN1_R_UNABLE_TO_DECODE_RSA_KEY 157
1309#define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 158 1380#define ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY 158
1310#define ASN1_R_UNEXPECTED_EOC 159 1381#define ASN1_R_UNEXPECTED_EOC 159
1311#define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 211 1382#define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215
1312#define ASN1_R_UNKNOWN_FORMAT 160 1383#define ASN1_R_UNKNOWN_FORMAT 160
1313#define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161 1384#define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161
1314#define ASN1_R_UNKNOWN_OBJECT_TYPE 162 1385#define ASN1_R_UNKNOWN_OBJECT_TYPE 162
1315#define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163 1386#define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163
1387#define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199
1316#define ASN1_R_UNKNOWN_TAG 194 1388#define ASN1_R_UNKNOWN_TAG 194
1317#define ASN1_R_UNKOWN_FORMAT 195 1389#define ASN1_R_UNKOWN_FORMAT 195
1318#define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164 1390#define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164
@@ -1320,6 +1392,7 @@ void ERR_load_ASN1_strings(void);
1320#define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM 166 1392#define ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM 166
1321#define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167 1393#define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167
1322#define ASN1_R_UNSUPPORTED_TYPE 196 1394#define ASN1_R_UNSUPPORTED_TYPE 196
1395#define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200
1323#define ASN1_R_WRONG_TAG 168 1396#define ASN1_R_WRONG_TAG 168
1324#define ASN1_R_WRONG_TYPE 169 1397#define ASN1_R_WRONG_TYPE 169
1325 1398
diff --git a/src/lib/libssl/src/crypto/asn1/asn1_err.c b/src/lib/libssl/src/crypto/asn1/asn1_err.c
index 5f5de98eed..6e04d08f31 100644
--- a/src/lib/libssl/src/crypto/asn1/asn1_err.c
+++ b/src/lib/libssl/src/crypto/asn1/asn1_err.c
@@ -1,6 +1,6 @@
1/* crypto/asn1/asn1_err.c */ 1/* crypto/asn1/asn1_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2009 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -90,10 +90,11 @@ static ERR_STRING_DATA ASN1_str_functs[]=
90{ERR_FUNC(ASN1_F_ASN1_ENUMERATED_TO_BN), "ASN1_ENUMERATED_to_BN"}, 90{ERR_FUNC(ASN1_F_ASN1_ENUMERATED_TO_BN), "ASN1_ENUMERATED_to_BN"},
91{ERR_FUNC(ASN1_F_ASN1_EX_C2I), "ASN1_EX_C2I"}, 91{ERR_FUNC(ASN1_F_ASN1_EX_C2I), "ASN1_EX_C2I"},
92{ERR_FUNC(ASN1_F_ASN1_FIND_END), "ASN1_FIND_END"}, 92{ERR_FUNC(ASN1_F_ASN1_FIND_END), "ASN1_FIND_END"},
93{ERR_FUNC(ASN1_F_ASN1_GENERALIZEDTIME_ADJ), "ASN1_GENERALIZEDTIME_adj"},
93{ERR_FUNC(ASN1_F_ASN1_GENERALIZEDTIME_SET), "ASN1_GENERALIZEDTIME_set"}, 94{ERR_FUNC(ASN1_F_ASN1_GENERALIZEDTIME_SET), "ASN1_GENERALIZEDTIME_set"},
94{ERR_FUNC(ASN1_F_ASN1_GENERATE_V3), "ASN1_generate_v3"}, 95{ERR_FUNC(ASN1_F_ASN1_GENERATE_V3), "ASN1_generate_v3"},
95{ERR_FUNC(ASN1_F_ASN1_GET_OBJECT), "ASN1_get_object"}, 96{ERR_FUNC(ASN1_F_ASN1_GET_OBJECT), "ASN1_get_object"},
96{ERR_FUNC(ASN1_F_ASN1_HEADER_NEW), "ASN1_HEADER_new"}, 97{ERR_FUNC(ASN1_F_ASN1_HEADER_NEW), "ASN1_HEADER_NEW"},
97{ERR_FUNC(ASN1_F_ASN1_I2D_BIO), "ASN1_i2d_bio"}, 98{ERR_FUNC(ASN1_F_ASN1_I2D_BIO), "ASN1_i2d_bio"},
98{ERR_FUNC(ASN1_F_ASN1_I2D_FP), "ASN1_i2d_fp"}, 99{ERR_FUNC(ASN1_F_ASN1_I2D_FP), "ASN1_i2d_fp"},
99{ERR_FUNC(ASN1_F_ASN1_INTEGER_SET), "ASN1_INTEGER_set"}, 100{ERR_FUNC(ASN1_F_ASN1_INTEGER_SET), "ASN1_INTEGER_set"},
@@ -112,7 +113,7 @@ static ERR_STRING_DATA ASN1_str_functs[]=
112{ERR_FUNC(ASN1_F_ASN1_OBJECT_NEW), "ASN1_OBJECT_new"}, 113{ERR_FUNC(ASN1_F_ASN1_OBJECT_NEW), "ASN1_OBJECT_new"},
113{ERR_FUNC(ASN1_F_ASN1_OUTPUT_DATA), "ASN1_OUTPUT_DATA"}, 114{ERR_FUNC(ASN1_F_ASN1_OUTPUT_DATA), "ASN1_OUTPUT_DATA"},
114{ERR_FUNC(ASN1_F_ASN1_PACK_STRING), "ASN1_pack_string"}, 115{ERR_FUNC(ASN1_F_ASN1_PACK_STRING), "ASN1_pack_string"},
115{ERR_FUNC(ASN1_F_ASN1_PCTX_NEW), "ASN1_PCTX_NEW"}, 116{ERR_FUNC(ASN1_F_ASN1_PCTX_NEW), "ASN1_PCTX_new"},
116{ERR_FUNC(ASN1_F_ASN1_PKCS5_PBE_SET), "ASN1_PKCS5_PBE_SET"}, 117{ERR_FUNC(ASN1_F_ASN1_PKCS5_PBE_SET), "ASN1_PKCS5_PBE_SET"},
117{ERR_FUNC(ASN1_F_ASN1_SEQ_PACK), "ASN1_seq_pack"}, 118{ERR_FUNC(ASN1_F_ASN1_SEQ_PACK), "ASN1_seq_pack"},
118{ERR_FUNC(ASN1_F_ASN1_SEQ_UNPACK), "ASN1_seq_unpack"}, 119{ERR_FUNC(ASN1_F_ASN1_SEQ_UNPACK), "ASN1_seq_unpack"},
@@ -124,14 +125,17 @@ static ERR_STRING_DATA ASN1_str_functs[]=
124{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_EX_D2I), "ASN1_TEMPLATE_EX_D2I"}, 125{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_EX_D2I), "ASN1_TEMPLATE_EX_D2I"},
125{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_NEW), "ASN1_TEMPLATE_NEW"}, 126{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_NEW), "ASN1_TEMPLATE_NEW"},
126{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_NOEXP_D2I), "ASN1_TEMPLATE_NOEXP_D2I"}, 127{ERR_FUNC(ASN1_F_ASN1_TEMPLATE_NOEXP_D2I), "ASN1_TEMPLATE_NOEXP_D2I"},
128{ERR_FUNC(ASN1_F_ASN1_TIME_ADJ), "ASN1_TIME_adj"},
127{ERR_FUNC(ASN1_F_ASN1_TIME_SET), "ASN1_TIME_set"}, 129{ERR_FUNC(ASN1_F_ASN1_TIME_SET), "ASN1_TIME_set"},
128{ERR_FUNC(ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING), "ASN1_TYPE_get_int_octetstring"}, 130{ERR_FUNC(ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING), "ASN1_TYPE_get_int_octetstring"},
129{ERR_FUNC(ASN1_F_ASN1_TYPE_GET_OCTETSTRING), "ASN1_TYPE_get_octetstring"}, 131{ERR_FUNC(ASN1_F_ASN1_TYPE_GET_OCTETSTRING), "ASN1_TYPE_get_octetstring"},
130{ERR_FUNC(ASN1_F_ASN1_UNPACK_STRING), "ASN1_unpack_string"}, 132{ERR_FUNC(ASN1_F_ASN1_UNPACK_STRING), "ASN1_unpack_string"},
133{ERR_FUNC(ASN1_F_ASN1_UTCTIME_ADJ), "ASN1_UTCTIME_adj"},
131{ERR_FUNC(ASN1_F_ASN1_UTCTIME_SET), "ASN1_UTCTIME_set"}, 134{ERR_FUNC(ASN1_F_ASN1_UTCTIME_SET), "ASN1_UTCTIME_set"},
132{ERR_FUNC(ASN1_F_ASN1_VERIFY), "ASN1_verify"}, 135{ERR_FUNC(ASN1_F_ASN1_VERIFY), "ASN1_verify"},
133{ERR_FUNC(ASN1_F_B64_READ_ASN1), "B64_READ_ASN1"}, 136{ERR_FUNC(ASN1_F_B64_READ_ASN1), "B64_READ_ASN1"},
134{ERR_FUNC(ASN1_F_B64_WRITE_ASN1), "B64_WRITE_ASN1"}, 137{ERR_FUNC(ASN1_F_B64_WRITE_ASN1), "B64_WRITE_ASN1"},
138{ERR_FUNC(ASN1_F_BIO_NEW_NDEF), "BIO_new_NDEF"},
135{ERR_FUNC(ASN1_F_BITSTR_CB), "BITSTR_CB"}, 139{ERR_FUNC(ASN1_F_BITSTR_CB), "BITSTR_CB"},
136{ERR_FUNC(ASN1_F_BN_TO_ASN1_ENUMERATED), "BN_to_ASN1_ENUMERATED"}, 140{ERR_FUNC(ASN1_F_BN_TO_ASN1_ENUMERATED), "BN_to_ASN1_ENUMERATED"},
137{ERR_FUNC(ASN1_F_BN_TO_ASN1_INTEGER), "BN_to_ASN1_INTEGER"}, 141{ERR_FUNC(ASN1_F_BN_TO_ASN1_INTEGER), "BN_to_ASN1_INTEGER"},
@@ -143,13 +147,14 @@ static ERR_STRING_DATA ASN1_str_functs[]=
143{ERR_FUNC(ASN1_F_D2I_ASN1_BOOLEAN), "d2i_ASN1_BOOLEAN"}, 147{ERR_FUNC(ASN1_F_D2I_ASN1_BOOLEAN), "d2i_ASN1_BOOLEAN"},
144{ERR_FUNC(ASN1_F_D2I_ASN1_BYTES), "d2i_ASN1_bytes"}, 148{ERR_FUNC(ASN1_F_D2I_ASN1_BYTES), "d2i_ASN1_bytes"},
145{ERR_FUNC(ASN1_F_D2I_ASN1_GENERALIZEDTIME), "D2I_ASN1_GENERALIZEDTIME"}, 149{ERR_FUNC(ASN1_F_D2I_ASN1_GENERALIZEDTIME), "D2I_ASN1_GENERALIZEDTIME"},
146{ERR_FUNC(ASN1_F_D2I_ASN1_HEADER), "d2i_ASN1_HEADER"}, 150{ERR_FUNC(ASN1_F_D2I_ASN1_HEADER), "D2I_ASN1_HEADER"},
147{ERR_FUNC(ASN1_F_D2I_ASN1_INTEGER), "D2I_ASN1_INTEGER"}, 151{ERR_FUNC(ASN1_F_D2I_ASN1_INTEGER), "D2I_ASN1_INTEGER"},
148{ERR_FUNC(ASN1_F_D2I_ASN1_OBJECT), "d2i_ASN1_OBJECT"}, 152{ERR_FUNC(ASN1_F_D2I_ASN1_OBJECT), "d2i_ASN1_OBJECT"},
149{ERR_FUNC(ASN1_F_D2I_ASN1_SET), "d2i_ASN1_SET"}, 153{ERR_FUNC(ASN1_F_D2I_ASN1_SET), "d2i_ASN1_SET"},
150{ERR_FUNC(ASN1_F_D2I_ASN1_TYPE_BYTES), "d2i_ASN1_type_bytes"}, 154{ERR_FUNC(ASN1_F_D2I_ASN1_TYPE_BYTES), "d2i_ASN1_type_bytes"},
151{ERR_FUNC(ASN1_F_D2I_ASN1_UINTEGER), "d2i_ASN1_UINTEGER"}, 155{ERR_FUNC(ASN1_F_D2I_ASN1_UINTEGER), "d2i_ASN1_UINTEGER"},
152{ERR_FUNC(ASN1_F_D2I_ASN1_UTCTIME), "D2I_ASN1_UTCTIME"}, 156{ERR_FUNC(ASN1_F_D2I_ASN1_UTCTIME), "D2I_ASN1_UTCTIME"},
157{ERR_FUNC(ASN1_F_D2I_AUTOPRIVATEKEY), "d2i_AutoPrivateKey"},
153{ERR_FUNC(ASN1_F_D2I_NETSCAPE_RSA), "d2i_Netscape_RSA"}, 158{ERR_FUNC(ASN1_F_D2I_NETSCAPE_RSA), "d2i_Netscape_RSA"},
154{ERR_FUNC(ASN1_F_D2I_NETSCAPE_RSA_2), "D2I_NETSCAPE_RSA_2"}, 159{ERR_FUNC(ASN1_F_D2I_NETSCAPE_RSA_2), "D2I_NETSCAPE_RSA_2"},
155{ERR_FUNC(ASN1_F_D2I_PRIVATEKEY), "d2i_PrivateKey"}, 160{ERR_FUNC(ASN1_F_D2I_PRIVATEKEY), "d2i_PrivateKey"},
@@ -159,6 +164,7 @@ static ERR_STRING_DATA ASN1_str_functs[]=
159{ERR_FUNC(ASN1_F_D2I_X509), "D2I_X509"}, 164{ERR_FUNC(ASN1_F_D2I_X509), "D2I_X509"},
160{ERR_FUNC(ASN1_F_D2I_X509_CINF), "D2I_X509_CINF"}, 165{ERR_FUNC(ASN1_F_D2I_X509_CINF), "D2I_X509_CINF"},
161{ERR_FUNC(ASN1_F_D2I_X509_PKEY), "d2i_X509_PKEY"}, 166{ERR_FUNC(ASN1_F_D2I_X509_PKEY), "d2i_X509_PKEY"},
167{ERR_FUNC(ASN1_F_I2D_ASN1_BIO_STREAM), "i2d_ASN1_bio_stream"},
162{ERR_FUNC(ASN1_F_I2D_ASN1_SET), "i2d_ASN1_SET"}, 168{ERR_FUNC(ASN1_F_I2D_ASN1_SET), "i2d_ASN1_SET"},
163{ERR_FUNC(ASN1_F_I2D_ASN1_TIME), "I2D_ASN1_TIME"}, 169{ERR_FUNC(ASN1_F_I2D_ASN1_TIME), "I2D_ASN1_TIME"},
164{ERR_FUNC(ASN1_F_I2D_DSA_PUBKEY), "i2d_DSA_PUBKEY"}, 170{ERR_FUNC(ASN1_F_I2D_DSA_PUBKEY), "i2d_DSA_PUBKEY"},
@@ -170,8 +176,9 @@ static ERR_STRING_DATA ASN1_str_functs[]=
170{ERR_FUNC(ASN1_F_LONG_C2I), "LONG_C2I"}, 176{ERR_FUNC(ASN1_F_LONG_C2I), "LONG_C2I"},
171{ERR_FUNC(ASN1_F_OID_MODULE_INIT), "OID_MODULE_INIT"}, 177{ERR_FUNC(ASN1_F_OID_MODULE_INIT), "OID_MODULE_INIT"},
172{ERR_FUNC(ASN1_F_PARSE_TAGGING), "PARSE_TAGGING"}, 178{ERR_FUNC(ASN1_F_PARSE_TAGGING), "PARSE_TAGGING"},
173{ERR_FUNC(ASN1_F_PKCS5_PBE2_SET), "PKCS5_pbe2_set"}, 179{ERR_FUNC(ASN1_F_PKCS5_PBE2_SET_IV), "PKCS5_pbe2_set_iv"},
174{ERR_FUNC(ASN1_F_PKCS5_PBE_SET), "PKCS5_pbe_set"}, 180{ERR_FUNC(ASN1_F_PKCS5_PBE_SET), "PKCS5_pbe_set"},
181{ERR_FUNC(ASN1_F_PKCS5_PBE_SET0_ALGOR), "PKCS5_pbe_set0_algor"},
175{ERR_FUNC(ASN1_F_SMIME_READ_ASN1), "SMIME_read_ASN1"}, 182{ERR_FUNC(ASN1_F_SMIME_READ_ASN1), "SMIME_read_ASN1"},
176{ERR_FUNC(ASN1_F_SMIME_TEXT), "SMIME_text"}, 183{ERR_FUNC(ASN1_F_SMIME_TEXT), "SMIME_text"},
177{ERR_FUNC(ASN1_F_X509_CINF_NEW), "X509_CINF_NEW"}, 184{ERR_FUNC(ASN1_F_X509_CINF_NEW), "X509_CINF_NEW"},
@@ -204,6 +211,7 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
204{ERR_REASON(ASN1_R_DECODE_ERROR) ,"decode error"}, 211{ERR_REASON(ASN1_R_DECODE_ERROR) ,"decode error"},
205{ERR_REASON(ASN1_R_DECODING_ERROR) ,"decoding error"}, 212{ERR_REASON(ASN1_R_DECODING_ERROR) ,"decoding error"},
206{ERR_REASON(ASN1_R_DEPTH_EXCEEDED) ,"depth exceeded"}, 213{ERR_REASON(ASN1_R_DEPTH_EXCEEDED) ,"depth exceeded"},
214{ERR_REASON(ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED),"digest and key type not supported"},
207{ERR_REASON(ASN1_R_ENCODE_ERROR) ,"encode error"}, 215{ERR_REASON(ASN1_R_ENCODE_ERROR) ,"encode error"},
208{ERR_REASON(ASN1_R_ERROR_GETTING_TIME) ,"error getting time"}, 216{ERR_REASON(ASN1_R_ERROR_GETTING_TIME) ,"error getting time"},
209{ERR_REASON(ASN1_R_ERROR_LOADING_SECTION),"error loading section"}, 217{ERR_REASON(ASN1_R_ERROR_LOADING_SECTION),"error loading section"},
@@ -240,6 +248,7 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
240{ERR_REASON(ASN1_R_INVALID_MIME_TYPE) ,"invalid mime type"}, 248{ERR_REASON(ASN1_R_INVALID_MIME_TYPE) ,"invalid mime type"},
241{ERR_REASON(ASN1_R_INVALID_MODIFIER) ,"invalid modifier"}, 249{ERR_REASON(ASN1_R_INVALID_MODIFIER) ,"invalid modifier"},
242{ERR_REASON(ASN1_R_INVALID_NUMBER) ,"invalid number"}, 250{ERR_REASON(ASN1_R_INVALID_NUMBER) ,"invalid number"},
251{ERR_REASON(ASN1_R_INVALID_OBJECT_ENCODING),"invalid object encoding"},
243{ERR_REASON(ASN1_R_INVALID_SEPARATOR) ,"invalid separator"}, 252{ERR_REASON(ASN1_R_INVALID_SEPARATOR) ,"invalid separator"},
244{ERR_REASON(ASN1_R_INVALID_TIME_FORMAT) ,"invalid time format"}, 253{ERR_REASON(ASN1_R_INVALID_TIME_FORMAT) ,"invalid time format"},
245{ERR_REASON(ASN1_R_INVALID_UNIVERSALSTRING_LENGTH),"invalid universalstring length"}, 254{ERR_REASON(ASN1_R_INVALID_UNIVERSALSTRING_LENGTH),"invalid universalstring length"},
@@ -260,6 +269,7 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
260{ERR_REASON(ASN1_R_NOT_ASCII_FORMAT) ,"not ascii format"}, 269{ERR_REASON(ASN1_R_NOT_ASCII_FORMAT) ,"not ascii format"},
261{ERR_REASON(ASN1_R_NOT_ENOUGH_DATA) ,"not enough data"}, 270{ERR_REASON(ASN1_R_NOT_ENOUGH_DATA) ,"not enough data"},
262{ERR_REASON(ASN1_R_NO_CONTENT_TYPE) ,"no content type"}, 271{ERR_REASON(ASN1_R_NO_CONTENT_TYPE) ,"no content type"},
272{ERR_REASON(ASN1_R_NO_DEFAULT_DIGEST) ,"no default digest"},
263{ERR_REASON(ASN1_R_NO_MATCHING_CHOICE_TYPE),"no matching choice type"}, 273{ERR_REASON(ASN1_R_NO_MATCHING_CHOICE_TYPE),"no matching choice type"},
264{ERR_REASON(ASN1_R_NO_MULTIPART_BODY_FAILURE),"no multipart body failure"}, 274{ERR_REASON(ASN1_R_NO_MULTIPART_BODY_FAILURE),"no multipart body failure"},
265{ERR_REASON(ASN1_R_NO_MULTIPART_BOUNDARY),"no multipart boundary"}, 275{ERR_REASON(ASN1_R_NO_MULTIPART_BOUNDARY),"no multipart boundary"},
@@ -290,6 +300,7 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
290{ERR_REASON(ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM),"unknown message digest algorithm"}, 300{ERR_REASON(ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM),"unknown message digest algorithm"},
291{ERR_REASON(ASN1_R_UNKNOWN_OBJECT_TYPE) ,"unknown object type"}, 301{ERR_REASON(ASN1_R_UNKNOWN_OBJECT_TYPE) ,"unknown object type"},
292{ERR_REASON(ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE),"unknown public key type"}, 302{ERR_REASON(ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE),"unknown public key type"},
303{ERR_REASON(ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM),"unknown signature algorithm"},
293{ERR_REASON(ASN1_R_UNKNOWN_TAG) ,"unknown tag"}, 304{ERR_REASON(ASN1_R_UNKNOWN_TAG) ,"unknown tag"},
294{ERR_REASON(ASN1_R_UNKOWN_FORMAT) ,"unkown format"}, 305{ERR_REASON(ASN1_R_UNKOWN_FORMAT) ,"unkown format"},
295{ERR_REASON(ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE),"unsupported any defined by type"}, 306{ERR_REASON(ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE),"unsupported any defined by type"},
@@ -297,6 +308,7 @@ static ERR_STRING_DATA ASN1_str_reasons[]=
297{ERR_REASON(ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM),"unsupported encryption algorithm"}, 308{ERR_REASON(ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM),"unsupported encryption algorithm"},
298{ERR_REASON(ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE),"unsupported public key type"}, 309{ERR_REASON(ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE),"unsupported public key type"},
299{ERR_REASON(ASN1_R_UNSUPPORTED_TYPE) ,"unsupported type"}, 310{ERR_REASON(ASN1_R_UNSUPPORTED_TYPE) ,"unsupported type"},
311{ERR_REASON(ASN1_R_WRONG_PUBLIC_KEY_TYPE),"wrong public key type"},
300{ERR_REASON(ASN1_R_WRONG_TAG) ,"wrong tag"}, 312{ERR_REASON(ASN1_R_WRONG_TAG) ,"wrong tag"},
301{ERR_REASON(ASN1_R_WRONG_TYPE) ,"wrong type"}, 313{ERR_REASON(ASN1_R_WRONG_TYPE) ,"wrong type"},
302{0,NULL} 314{0,NULL}
diff --git a/src/lib/libssl/src/crypto/asn1/asn1_lib.c b/src/lib/libssl/src/crypto/asn1/asn1_lib.c
index 5af559ef8d..1bcb44aee2 100644
--- a/src/lib/libssl/src/crypto/asn1/asn1_lib.c
+++ b/src/lib/libssl/src/crypto/asn1/asn1_lib.c
@@ -340,20 +340,31 @@ int asn1_GetSequence(ASN1_const_CTX *c, long *length)
340 return(1); 340 return(1);
341 } 341 }
342 342
343ASN1_STRING *ASN1_STRING_dup(ASN1_STRING *str) 343int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str)
344 { 344 {
345 ASN1_STRING *ret; 345 if (str == NULL)
346 return 0;
347 dst->type = str->type;
348 if (!ASN1_STRING_set(dst,str->data,str->length))
349 return 0;
350 dst->flags = str->flags;
351 return 1;
352 }
346 353
347 if (str == NULL) return(NULL); 354ASN1_STRING *ASN1_STRING_dup(const ASN1_STRING *str)
348 if ((ret=ASN1_STRING_type_new(str->type)) == NULL) 355 {
349 return(NULL); 356 ASN1_STRING *ret;
350 if (!ASN1_STRING_set(ret,str->data,str->length)) 357 if (!str)
358 return NULL;
359 ret=ASN1_STRING_new();
360 if (!ret)
361 return NULL;
362 if (!ASN1_STRING_copy(ret,str))
351 { 363 {
352 ASN1_STRING_free(ret); 364 ASN1_STRING_free(ret);
353 return(NULL); 365 return NULL;
354 } 366 }
355 ret->flags = str->flags; 367 return ret;
356 return(ret);
357 } 368 }
358 369
359int ASN1_STRING_set(ASN1_STRING *str, const void *_data, int len) 370int ASN1_STRING_set(ASN1_STRING *str, const void *_data, int len)
@@ -427,11 +438,12 @@ ASN1_STRING *ASN1_STRING_type_new(int type)
427void ASN1_STRING_free(ASN1_STRING *a) 438void ASN1_STRING_free(ASN1_STRING *a)
428 { 439 {
429 if (a == NULL) return; 440 if (a == NULL) return;
430 if (a->data != NULL) OPENSSL_free(a->data); 441 if (a->data && !(a->flags & ASN1_STRING_FLAG_NDEF))
442 OPENSSL_free(a->data);
431 OPENSSL_free(a); 443 OPENSSL_free(a);
432 } 444 }
433 445
434int ASN1_STRING_cmp(ASN1_STRING *a, ASN1_STRING *b) 446int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b)
435 { 447 {
436 int i; 448 int i;
437 449
@@ -457,7 +469,7 @@ void asn1_add_error(const unsigned char *address, int offset)
457 ERR_add_error_data(4,"address=",buf1," offset=",buf2); 469 ERR_add_error_data(4,"address=",buf1," offset=",buf2);
458 } 470 }
459 471
460int ASN1_STRING_length(ASN1_STRING *x) 472int ASN1_STRING_length(const ASN1_STRING *x)
461{ return M_ASN1_STRING_length(x); } 473{ return M_ASN1_STRING_length(x); }
462 474
463void ASN1_STRING_length_set(ASN1_STRING *x, int len) 475void ASN1_STRING_length_set(ASN1_STRING *x, int len)
diff --git a/src/lib/libssl/src/crypto/asn1/asn1_mac.h b/src/lib/libssl/src/crypto/asn1/asn1_mac.h
index d958ca60d9..87bd0e9e1d 100644
--- a/src/lib/libssl/src/crypto/asn1/asn1_mac.h
+++ b/src/lib/libssl/src/crypto/asn1/asn1_mac.h
@@ -153,6 +153,13 @@ err:\
153 M_ASN1_D2I_get(b,func); \ 153 M_ASN1_D2I_get(b,func); \
154 } 154 }
155 155
156#define M_ASN1_D2I_get_int_opt(b,func,type) \
157 if ((c.slen != 0) && ((M_ASN1_next & (~V_ASN1_CONSTRUCTED)) \
158 == (V_ASN1_UNIVERSAL|(type)))) \
159 { \
160 M_ASN1_D2I_get_int(b,func); \
161 }
162
156#define M_ASN1_D2I_get_imp(b,func, type) \ 163#define M_ASN1_D2I_get_imp(b,func, type) \
157 M_ASN1_next=(_tmp& V_ASN1_CONSTRUCTED)|type; \ 164 M_ASN1_next=(_tmp& V_ASN1_CONSTRUCTED)|type; \
158 c.q=c.p; \ 165 c.q=c.p; \
diff --git a/src/lib/libssl/src/crypto/asn1/asn1_par.c b/src/lib/libssl/src/crypto/asn1/asn1_par.c
index 8657f73d66..aaca69aebd 100644
--- a/src/lib/libssl/src/crypto/asn1/asn1_par.c
+++ b/src/lib/libssl/src/crypto/asn1/asn1_par.c
@@ -70,9 +70,8 @@ static int asn1_print_info(BIO *bp, int tag, int xclass, int constructed,
70 int indent) 70 int indent)
71 { 71 {
72 static const char fmt[]="%-18s"; 72 static const char fmt[]="%-18s";
73 static const char fmt2[]="%2d %-15s";
74 char str[128]; 73 char str[128];
75 const char *p,*p2=NULL; 74 const char *p;
76 75
77 if (constructed & V_ASN1_CONSTRUCTED) 76 if (constructed & V_ASN1_CONSTRUCTED)
78 p="cons: "; 77 p="cons: ";
@@ -93,14 +92,8 @@ static int asn1_print_info(BIO *bp, int tag, int xclass, int constructed,
93 else 92 else
94 p = ASN1_tag2str(tag); 93 p = ASN1_tag2str(tag);
95 94
96 if (p2 != NULL) 95 if (BIO_printf(bp,fmt,p) <= 0)
97 { 96 goto err;
98 if (BIO_printf(bp,fmt2,tag,p2) <= 0) goto err;
99 }
100 else
101 {
102 if (BIO_printf(bp,fmt,p) <= 0) goto err;
103 }
104 return(1); 97 return(1);
105err: 98err:
106 return(0); 99 return(0);
@@ -246,7 +239,7 @@ static int asn1_parse2(BIO *bp, const unsigned char **pp, long length, int offse
246 ii=d2i_ASN1_BOOLEAN(NULL,&opp,len+hl); 239 ii=d2i_ASN1_BOOLEAN(NULL,&opp,len+hl);
247 if (ii < 0) 240 if (ii < 0)
248 { 241 {
249 if (BIO_write(bp,"Bad boolean\n",12)) 242 if (BIO_write(bp,"Bad boolean\n",12) <= 0)
250 goto end; 243 goto end;
251 } 244 }
252 BIO_printf(bp,":%d",ii); 245 BIO_printf(bp,":%d",ii);
@@ -424,7 +417,7 @@ end:
424 417
425const char *ASN1_tag2str(int tag) 418const char *ASN1_tag2str(int tag)
426{ 419{
427 static const char *tag2str[] = { 420 static const char * const tag2str[] = {
428 "EOC", "BOOLEAN", "INTEGER", "BIT STRING", "OCTET STRING", /* 0-4 */ 421 "EOC", "BOOLEAN", "INTEGER", "BIT STRING", "OCTET STRING", /* 0-4 */
429 "NULL", "OBJECT", "OBJECT DESCRIPTOR", "EXTERNAL", "REAL", /* 5-9 */ 422 "NULL", "OBJECT", "OBJECT DESCRIPTOR", "EXTERNAL", "REAL", /* 5-9 */
430 "ENUMERATED", "<ASN1 11>", "UTF8STRING", "<ASN1 13>", /* 10-13 */ 423 "ENUMERATED", "<ASN1 11>", "UTF8STRING", "<ASN1 13>", /* 10-13 */
diff --git a/src/lib/libssl/src/crypto/asn1/asn1t.h b/src/lib/libssl/src/crypto/asn1/asn1t.h
index ac14f9415b..d230e4bf70 100644
--- a/src/lib/libssl/src/crypto/asn1/asn1t.h
+++ b/src/lib/libssl/src/crypto/asn1/asn1t.h
@@ -3,7 +3,7 @@
3 * project 2000. 3 * project 2000.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 2000 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -218,6 +218,18 @@ extern "C" {
218 #stname \ 218 #stname \
219 ASN1_ITEM_end(tname) 219 ASN1_ITEM_end(tname)
220 220
221#define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \
222 ;\
223 ASN1_ITEM_start(tname) \
224 ASN1_ITYPE_NDEF_SEQUENCE,\
225 V_ASN1_SEQUENCE,\
226 tname##_seq_tt,\
227 sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
228 &tname##_aux,\
229 sizeof(stname),\
230 #stname \
231 ASN1_ITEM_end(tname)
232
221 233
222/* This pair helps declare a CHOICE type. We can do: 234/* This pair helps declare a CHOICE type. We can do:
223 * 235 *
@@ -651,8 +663,13 @@ typedef int ASN1_ex_i2d(ASN1_VALUE **pval, unsigned char **out, const ASN1_ITEM
651typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it); 663typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
652typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); 664typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
653 665
666typedef int ASN1_ex_print_func(BIO *out, ASN1_VALUE **pval,
667 int indent, const char *fname,
668 const ASN1_PCTX *pctx);
669
654typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it); 670typedef int ASN1_primitive_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it);
655typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it); 671typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
672typedef int ASN1_primitive_print(BIO *out, ASN1_VALUE **pval, const ASN1_ITEM *it, int indent, const ASN1_PCTX *pctx);
656 673
657typedef struct ASN1_COMPAT_FUNCS_st { 674typedef struct ASN1_COMPAT_FUNCS_st {
658 ASN1_new_func *asn1_new; 675 ASN1_new_func *asn1_new;
@@ -668,6 +685,7 @@ typedef struct ASN1_EXTERN_FUNCS_st {
668 ASN1_ex_free_func *asn1_ex_clear; 685 ASN1_ex_free_func *asn1_ex_clear;
669 ASN1_ex_d2i *asn1_ex_d2i; 686 ASN1_ex_d2i *asn1_ex_d2i;
670 ASN1_ex_i2d *asn1_ex_i2d; 687 ASN1_ex_i2d *asn1_ex_i2d;
688 ASN1_ex_print_func *asn1_ex_print;
671} ASN1_EXTERN_FUNCS; 689} ASN1_EXTERN_FUNCS;
672 690
673typedef struct ASN1_PRIMITIVE_FUNCS_st { 691typedef struct ASN1_PRIMITIVE_FUNCS_st {
@@ -678,6 +696,7 @@ typedef struct ASN1_PRIMITIVE_FUNCS_st {
678 ASN1_ex_free_func *prim_clear; 696 ASN1_ex_free_func *prim_clear;
679 ASN1_primitive_c2i *prim_c2i; 697 ASN1_primitive_c2i *prim_c2i;
680 ASN1_primitive_i2c *prim_i2c; 698 ASN1_primitive_i2c *prim_i2c;
699 ASN1_primitive_print *prim_print;
681} ASN1_PRIMITIVE_FUNCS; 700} ASN1_PRIMITIVE_FUNCS;
682 701
683/* This is the ASN1_AUX structure: it handles various 702/* This is the ASN1_AUX structure: it handles various
@@ -697,7 +716,8 @@ typedef struct ASN1_PRIMITIVE_FUNCS_st {
697 * then an external type is more appropriate. 716 * then an external type is more appropriate.
698 */ 717 */
699 718
700typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it); 719typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it,
720 void *exarg);
701 721
702typedef struct ASN1_AUX_st { 722typedef struct ASN1_AUX_st {
703 void *app_data; 723 void *app_data;
@@ -708,6 +728,23 @@ typedef struct ASN1_AUX_st {
708 int enc_offset; /* Offset of ASN1_ENCODING structure */ 728 int enc_offset; /* Offset of ASN1_ENCODING structure */
709} ASN1_AUX; 729} ASN1_AUX;
710 730
731/* For print related callbacks exarg points to this structure */
732typedef struct ASN1_PRINT_ARG_st {
733 BIO *out;
734 int indent;
735 const ASN1_PCTX *pctx;
736} ASN1_PRINT_ARG;
737
738/* For streaming related callbacks exarg points to this structure */
739typedef struct ASN1_STREAM_ARG_st {
740 /* BIO to stream through */
741 BIO *out;
742 /* BIO with filters appended */
743 BIO *ndef_bio;
744 /* Streaming I/O boundary */
745 unsigned char **boundary;
746} ASN1_STREAM_ARG;
747
711/* Flags in ASN1_AUX */ 748/* Flags in ASN1_AUX */
712 749
713/* Use a reference count */ 750/* Use a reference count */
@@ -727,6 +764,12 @@ typedef struct ASN1_AUX_st {
727#define ASN1_OP_D2I_POST 5 764#define ASN1_OP_D2I_POST 5
728#define ASN1_OP_I2D_PRE 6 765#define ASN1_OP_I2D_PRE 6
729#define ASN1_OP_I2D_POST 7 766#define ASN1_OP_I2D_POST 7
767#define ASN1_OP_PRINT_PRE 8
768#define ASN1_OP_PRINT_POST 9
769#define ASN1_OP_STREAM_PRE 10
770#define ASN1_OP_STREAM_POST 11
771#define ASN1_OP_DETACHED_PRE 12
772#define ASN1_OP_DETACHED_POST 13
730 773
731/* Macro to implement a primitive type */ 774/* Macro to implement a primitive type */
732#define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0) 775#define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0)
@@ -782,9 +825,22 @@ typedef struct ASN1_AUX_st {
782#define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \ 825#define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \
783 IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname) 826 IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname)
784 827
828#define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \
829 IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname)
830
785#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \ 831#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \
786 IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname) 832 IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname)
787 833
834#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \
835 pre stname *fname##_new(void) \
836 { \
837 return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
838 } \
839 pre void fname##_free(stname *a) \
840 { \
841 ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
842 }
843
788#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \ 844#define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \
789 stname *fname##_new(void) \ 845 stname *fname##_new(void) \
790 { \ 846 { \
@@ -834,6 +890,17 @@ typedef struct ASN1_AUX_st {
834 return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \ 890 return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
835 } 891 }
836 892
893#define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \
894 IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname)
895
896#define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \
897 int fname##_print_ctx(BIO *out, stname *x, int indent, \
898 const ASN1_PCTX *pctx) \
899 { \
900 return ASN1_item_print(out, (ASN1_VALUE *)x, indent, \
901 ASN1_ITEM_rptr(itname), pctx); \
902 }
903
837#define IMPLEMENT_ASN1_FUNCTIONS_const(name) \ 904#define IMPLEMENT_ASN1_FUNCTIONS_const(name) \
838 IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name) 905 IMPLEMENT_ASN1_FUNCTIONS_const_fname(name, name, name)
839 906
diff --git a/src/lib/libssl/src/crypto/asn1/asn_pack.c b/src/lib/libssl/src/crypto/asn1/asn_pack.c
index f1a5a05632..ad738217d7 100644
--- a/src/lib/libssl/src/crypto/asn1/asn_pack.c
+++ b/src/lib/libssl/src/crypto/asn1/asn_pack.c
@@ -66,10 +66,10 @@
66 66
67/* Turn an ASN1 encoded SEQUENCE OF into a STACK of structures */ 67/* Turn an ASN1 encoded SEQUENCE OF into a STACK of structures */
68 68
69STACK *ASN1_seq_unpack(const unsigned char *buf, int len, 69STACK_OF(OPENSSL_BLOCK) *ASN1_seq_unpack(const unsigned char *buf, int len,
70 d2i_of_void *d2i,void (*free_func)(void *)) 70 d2i_of_void *d2i, void (*free_func)(OPENSSL_BLOCK))
71{ 71{
72 STACK *sk; 72 STACK_OF(OPENSSL_BLOCK) *sk;
73 const unsigned char *pbuf; 73 const unsigned char *pbuf;
74 pbuf = buf; 74 pbuf = buf;
75 if (!(sk = d2i_ASN1_SET(NULL, &pbuf, len, d2i, free_func, 75 if (!(sk = d2i_ASN1_SET(NULL, &pbuf, len, d2i, free_func,
@@ -82,7 +82,7 @@ STACK *ASN1_seq_unpack(const unsigned char *buf, int len,
82 * OPENSSL_malloc'ed buffer 82 * OPENSSL_malloc'ed buffer
83 */ 83 */
84 84
85unsigned char *ASN1_seq_pack(STACK *safes, i2d_of_void *i2d, 85unsigned char *ASN1_seq_pack(STACK_OF(OPENSSL_BLOCK) *safes, i2d_of_void *i2d,
86 unsigned char **buf, int *len) 86 unsigned char **buf, int *len)
87{ 87{
88 int safelen; 88 int safelen;
diff --git a/src/lib/libssl/src/crypto/asn1/charmap.h b/src/lib/libssl/src/crypto/asn1/charmap.h
index bd020a9562..b55e638725 100644
--- a/src/lib/libssl/src/crypto/asn1/charmap.h
+++ b/src/lib/libssl/src/crypto/asn1/charmap.h
@@ -2,7 +2,7 @@
2 * Mask of various character properties 2 * Mask of various character properties
3 */ 3 */
4 4
5static unsigned char char_type[] = { 5static const unsigned char char_type[] = {
6 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
7 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
8120, 0, 1,40, 0, 0, 0,16,16,16, 0,25,25,16,16,16, 8120, 0, 1,40, 0, 0, 0,16,16,16, 0,25,25,16,16,16,
diff --git a/src/lib/libssl/src/crypto/asn1/d2i_pr.c b/src/lib/libssl/src/crypto/asn1/d2i_pr.c
index 207ccda5ac..2828944777 100644
--- a/src/lib/libssl/src/crypto/asn1/d2i_pr.c
+++ b/src/lib/libssl/src/crypto/asn1/d2i_pr.c
@@ -61,16 +61,12 @@
61#include <openssl/bn.h> 61#include <openssl/bn.h>
62#include <openssl/evp.h> 62#include <openssl/evp.h>
63#include <openssl/objects.h> 63#include <openssl/objects.h>
64#include <openssl/asn1.h> 64#ifndef OPENSSL_NO_ENGINE
65#ifndef OPENSSL_NO_RSA 65#include <openssl/engine.h>
66#include <openssl/rsa.h>
67#endif
68#ifndef OPENSSL_NO_DSA
69#include <openssl/dsa.h>
70#endif
71#ifndef OPENSSL_NO_EC
72#include <openssl/ec.h>
73#endif 66#endif
67#include <openssl/x509.h>
68#include <openssl/asn1.h>
69#include "asn1_locl.h"
74 70
75EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, 71EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
76 long length) 72 long length)
@@ -85,47 +81,43 @@ EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
85 return(NULL); 81 return(NULL);
86 } 82 }
87 } 83 }
88 else ret= *a; 84 else
89
90 ret->save_type=type;
91 ret->type=EVP_PKEY_type(type);
92 switch (ret->type)
93 { 85 {
94#ifndef OPENSSL_NO_RSA 86 ret= *a;
95 case EVP_PKEY_RSA: 87#ifndef OPENSSL_NO_ENGINE
96 if ((ret->pkey.rsa=d2i_RSAPrivateKey(NULL, 88 if (ret->engine)
97 (const unsigned char **)pp,length)) == NULL) /* TMP UGLY CAST */
98 { 89 {
99 ASN1err(ASN1_F_D2I_PRIVATEKEY,ERR_R_ASN1_LIB); 90 ENGINE_finish(ret->engine);
100 goto err; 91 ret->engine = NULL;
101 } 92 }
102 break;
103#endif 93#endif
104#ifndef OPENSSL_NO_DSA 94 }
105 case EVP_PKEY_DSA: 95
106 if ((ret->pkey.dsa=d2i_DSAPrivateKey(NULL, 96 if (!EVP_PKEY_set_type(ret, type))
107 (const unsigned char **)pp,length)) == NULL) /* TMP UGLY CAST */ 97 {
98 ASN1err(ASN1_F_D2I_PRIVATEKEY,ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);
99 goto err;
100 }
101
102 if (!ret->ameth->old_priv_decode ||
103 !ret->ameth->old_priv_decode(ret, pp, length))
104 {
105 if (ret->ameth->priv_decode)
108 { 106 {
109 ASN1err(ASN1_F_D2I_PRIVATEKEY,ERR_R_ASN1_LIB); 107 PKCS8_PRIV_KEY_INFO *p8=NULL;
110 goto err; 108 p8=d2i_PKCS8_PRIV_KEY_INFO(NULL,pp,length);
111 } 109 if (!p8) goto err;
112 break; 110 EVP_PKEY_free(ret);
113#endif 111 ret = EVP_PKCS82PKEY(p8);
114#ifndef OPENSSL_NO_EC 112 PKCS8_PRIV_KEY_INFO_free(p8);
115 case EVP_PKEY_EC: 113
116 if ((ret->pkey.ec = d2i_ECPrivateKey(NULL, 114 }
117 (const unsigned char **)pp, length)) == NULL) 115 else
118 { 116 {
119 ASN1err(ASN1_F_D2I_PRIVATEKEY, ERR_R_ASN1_LIB); 117 ASN1err(ASN1_F_D2I_PRIVATEKEY,ERR_R_ASN1_LIB);
120 goto err; 118 goto err;
121 } 119 }
122 break; 120 }
123#endif
124 default:
125 ASN1err(ASN1_F_D2I_PRIVATEKEY,ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE);
126 goto err;
127 /* break; */
128 }
129 if (a != NULL) (*a)=ret; 121 if (a != NULL) (*a)=ret;
130 return(ret); 122 return(ret);
131err: 123err:
@@ -146,8 +138,7 @@ EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
146 * by analyzing it we can determine the passed structure: this 138 * by analyzing it we can determine the passed structure: this
147 * assumes the input is surrounded by an ASN1 SEQUENCE. 139 * assumes the input is surrounded by an ASN1 SEQUENCE.
148 */ 140 */
149 inkey = d2i_ASN1_SET_OF_ASN1_TYPE(NULL, &p, length, d2i_ASN1_TYPE, 141 inkey = d2i_ASN1_SEQUENCE_ANY(NULL, &p, length);
150 ASN1_TYPE_free, V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL);
151 /* Since we only need to discern "traditional format" RSA and DSA 142 /* Since we only need to discern "traditional format" RSA and DSA
152 * keys we can just count the elements. 143 * keys we can just count the elements.
153 */ 144 */
@@ -155,6 +146,24 @@ EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
155 keytype = EVP_PKEY_DSA; 146 keytype = EVP_PKEY_DSA;
156 else if (sk_ASN1_TYPE_num(inkey) == 4) 147 else if (sk_ASN1_TYPE_num(inkey) == 4)
157 keytype = EVP_PKEY_EC; 148 keytype = EVP_PKEY_EC;
149 else if (sk_ASN1_TYPE_num(inkey) == 3)
150 { /* This seems to be PKCS8, not traditional format */
151 PKCS8_PRIV_KEY_INFO *p8 = d2i_PKCS8_PRIV_KEY_INFO(NULL,pp,length);
152 EVP_PKEY *ret;
153
154 sk_ASN1_TYPE_pop_free(inkey, ASN1_TYPE_free);
155 if (!p8)
156 {
157 ASN1err(ASN1_F_D2I_AUTOPRIVATEKEY,ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE);
158 return NULL;
159 }
160 ret = EVP_PKCS82PKEY(p8);
161 PKCS8_PRIV_KEY_INFO_free(p8);
162 if (a) {
163 *a = ret;
164 }
165 return ret;
166 }
158 else keytype = EVP_PKEY_RSA; 167 else keytype = EVP_PKEY_RSA;
159 sk_ASN1_TYPE_pop_free(inkey, ASN1_TYPE_free); 168 sk_ASN1_TYPE_pop_free(inkey, ASN1_TYPE_free);
160 return d2i_PrivateKey(keytype, a, pp, length); 169 return d2i_PrivateKey(keytype, a, pp, length);
diff --git a/src/lib/libssl/src/crypto/asn1/d2i_pu.c b/src/lib/libssl/src/crypto/asn1/d2i_pu.c
index 3694f51a8c..c8f39ceb03 100644
--- a/src/lib/libssl/src/crypto/asn1/d2i_pu.c
+++ b/src/lib/libssl/src/crypto/asn1/d2i_pu.c
@@ -87,9 +87,13 @@ EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **a, const unsigned char **pp,
87 } 87 }
88 else ret= *a; 88 else ret= *a;
89 89
90 ret->save_type=type; 90 if (!EVP_PKEY_set_type(ret, type))
91 ret->type=EVP_PKEY_type(type); 91 {
92 switch (ret->type) 92 ASN1err(ASN1_F_D2I_PUBLICKEY,ERR_R_EVP_LIB);
93 goto err;
94 }
95
96 switch (EVP_PKEY_id(ret))
93 { 97 {
94#ifndef OPENSSL_NO_RSA 98#ifndef OPENSSL_NO_RSA
95 case EVP_PKEY_RSA: 99 case EVP_PKEY_RSA:
diff --git a/src/lib/libssl/src/crypto/asn1/i2d_pr.c b/src/lib/libssl/src/crypto/asn1/i2d_pr.c
index 0be52c5b76..e398b62666 100644
--- a/src/lib/libssl/src/crypto/asn1/i2d_pr.c
+++ b/src/lib/libssl/src/crypto/asn1/i2d_pr.c
@@ -58,41 +58,22 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include <openssl/bn.h>
62#include <openssl/evp.h> 61#include <openssl/evp.h>
63#include <openssl/objects.h> 62#include <openssl/x509.h>
64#ifndef OPENSSL_NO_RSA 63#include "asn1_locl.h"
65#include <openssl/rsa.h>
66#endif
67#ifndef OPENSSL_NO_DSA
68#include <openssl/dsa.h>
69#endif
70#ifndef OPENSSL_NO_EC
71#include <openssl/ec.h>
72#endif
73 64
74int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp) 65int i2d_PrivateKey(EVP_PKEY *a, unsigned char **pp)
75 { 66 {
76#ifndef OPENSSL_NO_RSA 67 if (a->ameth && a->ameth->old_priv_encode)
77 if (a->type == EVP_PKEY_RSA)
78 { 68 {
79 return(i2d_RSAPrivateKey(a->pkey.rsa,pp)); 69 return a->ameth->old_priv_encode(a, pp);
80 } 70 }
81 else 71 if (a->ameth && a->ameth->priv_encode) {
82#endif 72 PKCS8_PRIV_KEY_INFO *p8 = EVP_PKEY2PKCS8(a);
83#ifndef OPENSSL_NO_DSA 73 int ret = i2d_PKCS8_PRIV_KEY_INFO(p8,pp);
84 if (a->type == EVP_PKEY_DSA) 74 PKCS8_PRIV_KEY_INFO_free(p8);
85 { 75 return ret;
86 return(i2d_DSAPrivateKey(a->pkey.dsa,pp)); 76 }
87 }
88#endif
89#ifndef OPENSSL_NO_EC
90 if (a->type == EVP_PKEY_EC)
91 {
92 return(i2d_ECPrivateKey(a->pkey.ec, pp));
93 }
94#endif
95
96 ASN1err(ASN1_F_I2D_PRIVATEKEY,ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE); 77 ASN1err(ASN1_F_I2D_PRIVATEKEY,ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE);
97 return(-1); 78 return(-1);
98 } 79 }
diff --git a/src/lib/libssl/src/crypto/asn1/nsseq.c b/src/lib/libssl/src/crypto/asn1/nsseq.c
index e551c57d59..b8c4202230 100644
--- a/src/lib/libssl/src/crypto/asn1/nsseq.c
+++ b/src/lib/libssl/src/crypto/asn1/nsseq.c
@@ -3,7 +3,7 @@
3 * project 1999. 3 * project 1999.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -62,7 +62,8 @@
62#include <openssl/x509.h> 62#include <openssl/x509.h>
63#include <openssl/objects.h> 63#include <openssl/objects.h>
64 64
65static int nsseq_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 65static int nsseq_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
66 void *exarg)
66{ 67{
67 if(operation == ASN1_OP_NEW_POST) { 68 if(operation == ASN1_OP_NEW_POST) {
68 NETSCAPE_CERT_SEQUENCE *nsseq; 69 NETSCAPE_CERT_SEQUENCE *nsseq;
diff --git a/src/lib/libssl/src/crypto/asn1/p5_pbe.c b/src/lib/libssl/src/crypto/asn1/p5_pbe.c
index c4582f8041..94bc38b99f 100644
--- a/src/lib/libssl/src/crypto/asn1/p5_pbe.c
+++ b/src/lib/libssl/src/crypto/asn1/p5_pbe.c
@@ -71,61 +71,78 @@ ASN1_SEQUENCE(PBEPARAM) = {
71 71
72IMPLEMENT_ASN1_FUNCTIONS(PBEPARAM) 72IMPLEMENT_ASN1_FUNCTIONS(PBEPARAM)
73 73
74/* Return an algorithm identifier for a PKCS#5 PBE algorithm */
75 74
76X509_ALGOR *PKCS5_pbe_set(int alg, int iter, unsigned char *salt, 75/* Set an algorithm identifier for a PKCS#5 PBE algorithm */
77 int saltlen) 76
78{ 77int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter,
78 const unsigned char *salt, int saltlen)
79 {
79 PBEPARAM *pbe=NULL; 80 PBEPARAM *pbe=NULL;
80 ASN1_OBJECT *al; 81 ASN1_STRING *pbe_str=NULL;
81 X509_ALGOR *algor; 82 unsigned char *sstr;
82 ASN1_TYPE *astype=NULL;
83 83
84 if (!(pbe = PBEPARAM_new ())) { 84 pbe = PBEPARAM_new();
85 ASN1err(ASN1_F_PKCS5_PBE_SET,ERR_R_MALLOC_FAILURE); 85 if (!pbe)
86 {
87 ASN1err(ASN1_F_PKCS5_PBE_SET0_ALGOR,ERR_R_MALLOC_FAILURE);
86 goto err; 88 goto err;
87 } 89 }
88 if(iter <= 0) iter = PKCS5_DEFAULT_ITER; 90 if(iter <= 0)
89 if (!ASN1_INTEGER_set(pbe->iter, iter)) { 91 iter = PKCS5_DEFAULT_ITER;
90 ASN1err(ASN1_F_PKCS5_PBE_SET,ERR_R_MALLOC_FAILURE); 92 if (!ASN1_INTEGER_set(pbe->iter, iter))
93 {
94 ASN1err(ASN1_F_PKCS5_PBE_SET0_ALGOR,ERR_R_MALLOC_FAILURE);
91 goto err; 95 goto err;
92 } 96 }
93 if (!saltlen) saltlen = PKCS5_SALT_LEN; 97 if (!saltlen)
94 if (!(pbe->salt->data = OPENSSL_malloc (saltlen))) { 98 saltlen = PKCS5_SALT_LEN;
95 ASN1err(ASN1_F_PKCS5_PBE_SET,ERR_R_MALLOC_FAILURE); 99 if (!ASN1_STRING_set(pbe->salt, NULL, saltlen))
100 {
101 ASN1err(ASN1_F_PKCS5_PBE_SET0_ALGOR,ERR_R_MALLOC_FAILURE);
96 goto err; 102 goto err;
97 } 103 }
98 pbe->salt->length = saltlen; 104 sstr = ASN1_STRING_data(pbe->salt);
99 if (salt) memcpy (pbe->salt->data, salt, saltlen); 105 if (salt)
100 else if (RAND_pseudo_bytes (pbe->salt->data, saltlen) < 0) 106 memcpy(sstr, salt, saltlen);
107 else if (RAND_pseudo_bytes(sstr, saltlen) < 0)
101 goto err; 108 goto err;
102 109
103 if (!(astype = ASN1_TYPE_new())) { 110 if(!ASN1_item_pack(pbe, ASN1_ITEM_rptr(PBEPARAM), &pbe_str))
104 ASN1err(ASN1_F_PKCS5_PBE_SET,ERR_R_MALLOC_FAILURE); 111 {
112 ASN1err(ASN1_F_PKCS5_PBE_SET0_ALGOR,ERR_R_MALLOC_FAILURE);
105 goto err; 113 goto err;
106 } 114 }
107 115
108 astype->type = V_ASN1_SEQUENCE; 116 PBEPARAM_free(pbe);
109 if(!ASN1_pack_string_of(PBEPARAM, pbe, i2d_PBEPARAM,
110 &astype->value.sequence)) {
111 ASN1err(ASN1_F_PKCS5_PBE_SET,ERR_R_MALLOC_FAILURE);
112 goto err;
113 }
114 PBEPARAM_free (pbe);
115 pbe = NULL; 117 pbe = NULL;
116
117 al = OBJ_nid2obj(alg); /* never need to free al */
118 if (!(algor = X509_ALGOR_new())) {
119 ASN1err(ASN1_F_PKCS5_PBE_SET,ERR_R_MALLOC_FAILURE);
120 goto err;
121 }
122 ASN1_OBJECT_free(algor->algorithm);
123 algor->algorithm = al;
124 algor->parameter = astype;
125 118
126 return (algor); 119 if (X509_ALGOR_set0(algor, OBJ_nid2obj(alg), V_ASN1_SEQUENCE, pbe_str))
120 return 1;
121
127err: 122err:
128 if (pbe != NULL) PBEPARAM_free(pbe); 123 if (pbe != NULL)
129 if (astype != NULL) ASN1_TYPE_free(astype); 124 PBEPARAM_free(pbe);
125 if (pbe_str != NULL)
126 ASN1_STRING_free(pbe_str);
127 return 0;
128 }
129
130/* Return an algorithm identifier for a PKCS#5 PBE algorithm */
131
132X509_ALGOR *PKCS5_pbe_set(int alg, int iter,
133 const unsigned char *salt, int saltlen)
134 {
135 X509_ALGOR *ret;
136 ret = X509_ALGOR_new();
137 if (!ret)
138 {
139 ASN1err(ASN1_F_PKCS5_PBE_SET,ERR_R_MALLOC_FAILURE);
140 return NULL;
141 }
142
143 if (PKCS5_pbe_set0_algor(ret, alg, iter, salt, saltlen))
144 return ret;
145
146 X509_ALGOR_free(ret);
130 return NULL; 147 return NULL;
131} 148 }
diff --git a/src/lib/libssl/src/crypto/asn1/p5_pbev2.c b/src/lib/libssl/src/crypto/asn1/p5_pbev2.c
index 2b0516afee..cb49b6651d 100644
--- a/src/lib/libssl/src/crypto/asn1/p5_pbev2.c
+++ b/src/lib/libssl/src/crypto/asn1/p5_pbev2.c
@@ -82,10 +82,13 @@ IMPLEMENT_ASN1_FUNCTIONS(PBKDF2PARAM)
82 82
83/* Return an algorithm identifier for a PKCS#5 v2.0 PBE algorithm: 83/* Return an algorithm identifier for a PKCS#5 v2.0 PBE algorithm:
84 * yes I know this is horrible! 84 * yes I know this is horrible!
85 *
86 * Extended version to allow application supplied PRF NID and IV.
85 */ 87 */
86 88
87X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, 89X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter,
88 unsigned char *salt, int saltlen) 90 unsigned char *salt, int saltlen,
91 unsigned char *aiv, int prf_nid)
89{ 92{
90 X509_ALGOR *scheme = NULL, *kalg = NULL, *ret = NULL; 93 X509_ALGOR *scheme = NULL, *kalg = NULL, *ret = NULL;
91 int alg_nid; 94 int alg_nid;
@@ -98,7 +101,7 @@ X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
98 101
99 alg_nid = EVP_CIPHER_type(cipher); 102 alg_nid = EVP_CIPHER_type(cipher);
100 if(alg_nid == NID_undef) { 103 if(alg_nid == NID_undef) {
101 ASN1err(ASN1_F_PKCS5_PBE2_SET, 104 ASN1err(ASN1_F_PKCS5_PBE2_SET_IV,
102 ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER); 105 ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER);
103 goto err; 106 goto err;
104 } 107 }
@@ -113,20 +116,33 @@ X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
113 if(!(scheme->parameter = ASN1_TYPE_new())) goto merr; 116 if(!(scheme->parameter = ASN1_TYPE_new())) goto merr;
114 117
115 /* Create random IV */ 118 /* Create random IV */
116 if (EVP_CIPHER_iv_length(cipher) && 119 if (EVP_CIPHER_iv_length(cipher))
117 RAND_pseudo_bytes(iv, EVP_CIPHER_iv_length(cipher)) < 0) 120 {
118 goto err; 121 if (aiv)
122 memcpy(iv, aiv, EVP_CIPHER_iv_length(cipher));
123 else if (RAND_pseudo_bytes(iv, EVP_CIPHER_iv_length(cipher)) < 0)
124 goto err;
125 }
119 126
120 EVP_CIPHER_CTX_init(&ctx); 127 EVP_CIPHER_CTX_init(&ctx);
121 128
122 /* Dummy cipherinit to just setup the IV */ 129 /* Dummy cipherinit to just setup the IV, and PRF */
123 EVP_CipherInit_ex(&ctx, cipher, NULL, NULL, iv, 0); 130 EVP_CipherInit_ex(&ctx, cipher, NULL, NULL, iv, 0);
124 if(EVP_CIPHER_param_to_asn1(&ctx, scheme->parameter) < 0) { 131 if(EVP_CIPHER_param_to_asn1(&ctx, scheme->parameter) < 0) {
125 ASN1err(ASN1_F_PKCS5_PBE2_SET, 132 ASN1err(ASN1_F_PKCS5_PBE2_SET_IV,
126 ASN1_R_ERROR_SETTING_CIPHER_PARAMS); 133 ASN1_R_ERROR_SETTING_CIPHER_PARAMS);
127 EVP_CIPHER_CTX_cleanup(&ctx); 134 EVP_CIPHER_CTX_cleanup(&ctx);
128 goto err; 135 goto err;
129 } 136 }
137 /* If prf NID unspecified see if cipher has a preference.
138 * An error is OK here: just means use default PRF.
139 */
140 if ((prf_nid == -1) &&
141 EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_PBE_PRF_NID, 0, &prf_nid) <= 0)
142 {
143 ERR_clear_error();
144 prf_nid = NID_hmacWithSHA1;
145 }
130 EVP_CIPHER_CTX_cleanup(&ctx); 146 EVP_CIPHER_CTX_cleanup(&ctx);
131 147
132 if(!(kdf = PBKDF2PARAM_new())) goto merr; 148 if(!(kdf = PBKDF2PARAM_new())) goto merr;
@@ -154,7 +170,15 @@ X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
154 EVP_CIPHER_key_length(cipher))) goto merr; 170 EVP_CIPHER_key_length(cipher))) goto merr;
155 } 171 }
156 172
157 /* prf can stay NULL because we are using hmacWithSHA1 */ 173 /* prf can stay NULL if we are using hmacWithSHA1 */
174 if (prf_nid != NID_hmacWithSHA1)
175 {
176 kdf->prf = X509_ALGOR_new();
177 if (!kdf->prf)
178 goto merr;
179 X509_ALGOR_set0(kdf->prf, OBJ_nid2obj(prf_nid),
180 V_ASN1_NULL, NULL);
181 }
158 182
159 /* Now setup the PBE2PARAM keyfunc structure */ 183 /* Now setup the PBE2PARAM keyfunc structure */
160 184
@@ -164,7 +188,7 @@ X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
164 188
165 if(!(pbe2->keyfunc->parameter = ASN1_TYPE_new())) goto merr; 189 if(!(pbe2->keyfunc->parameter = ASN1_TYPE_new())) goto merr;
166 190
167 if(!ASN1_pack_string_of(PBKDF2PARAM, kdf, i2d_PBKDF2PARAM, 191 if(!ASN1_item_pack(kdf, ASN1_ITEM_rptr(PBKDF2PARAM),
168 &pbe2->keyfunc->parameter->value.sequence)) goto merr; 192 &pbe2->keyfunc->parameter->value.sequence)) goto merr;
169 pbe2->keyfunc->parameter->type = V_ASN1_SEQUENCE; 193 pbe2->keyfunc->parameter->type = V_ASN1_SEQUENCE;
170 194
@@ -180,7 +204,7 @@ X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
180 204
181 /* Encode PBE2PARAM into parameter */ 205 /* Encode PBE2PARAM into parameter */
182 206
183 if(!ASN1_pack_string_of(PBE2PARAM, pbe2, i2d_PBE2PARAM, 207 if(!ASN1_item_pack(pbe2, ASN1_ITEM_rptr(PBE2PARAM),
184 &ret->parameter->value.sequence)) goto merr; 208 &ret->parameter->value.sequence)) goto merr;
185 ret->parameter->type = V_ASN1_SEQUENCE; 209 ret->parameter->type = V_ASN1_SEQUENCE;
186 210
@@ -190,7 +214,7 @@ X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
190 return ret; 214 return ret;
191 215
192 merr: 216 merr:
193 ASN1err(ASN1_F_PKCS5_PBE2_SET,ERR_R_MALLOC_FAILURE); 217 ASN1err(ASN1_F_PKCS5_PBE2_SET_IV,ERR_R_MALLOC_FAILURE);
194 218
195 err: 219 err:
196 PBE2PARAM_free(pbe2); 220 PBE2PARAM_free(pbe2);
@@ -203,3 +227,9 @@ X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
203 return NULL; 227 return NULL;
204 228
205} 229}
230
231X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
232 unsigned char *salt, int saltlen)
233 {
234 return PKCS5_pbe2_set_iv(cipher, iter, salt, saltlen, NULL, -1);
235 }
diff --git a/src/lib/libssl/src/crypto/asn1/p8_pkey.c b/src/lib/libssl/src/crypto/asn1/p8_pkey.c
index 0a1957556e..17b68d386d 100644
--- a/src/lib/libssl/src/crypto/asn1/p8_pkey.c
+++ b/src/lib/libssl/src/crypto/asn1/p8_pkey.c
@@ -3,7 +3,7 @@
3 * project 1999. 3 * project 1999.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -62,7 +62,8 @@
62#include <openssl/x509.h> 62#include <openssl/x509.h>
63 63
64/* Minor tweak to operation: zero private key data */ 64/* Minor tweak to operation: zero private key data */
65static int pkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 65static int pkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
66 void *exarg)
66{ 67{
67 /* Since the structure must still be valid use ASN1_OP_FREE_PRE */ 68 /* Since the structure must still be valid use ASN1_OP_FREE_PRE */
68 if(operation == ASN1_OP_FREE_PRE) { 69 if(operation == ASN1_OP_FREE_PRE) {
@@ -82,3 +83,73 @@ ASN1_SEQUENCE_cb(PKCS8_PRIV_KEY_INFO, pkey_cb) = {
82} ASN1_SEQUENCE_END_cb(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO) 83} ASN1_SEQUENCE_END_cb(PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO)
83 84
84IMPLEMENT_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) 85IMPLEMENT_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO)
86
87int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,
88 int version,
89 int ptype, void *pval,
90 unsigned char *penc, int penclen)
91 {
92 unsigned char **ppenc = NULL;
93 if (version >= 0)
94 {
95 if (!ASN1_INTEGER_set(priv->version, version))
96 return 0;
97 }
98 if (penc)
99 {
100 int pmtype;
101 ASN1_OCTET_STRING *oct;
102 oct = ASN1_OCTET_STRING_new();
103 if (!oct)
104 return 0;
105 oct->data = penc;
106 ppenc = &oct->data;
107 oct->length = penclen;
108 if (priv->broken == PKCS8_NO_OCTET)
109 pmtype = V_ASN1_SEQUENCE;
110 else
111 pmtype = V_ASN1_OCTET_STRING;
112 ASN1_TYPE_set(priv->pkey, pmtype, oct);
113 }
114 if (!X509_ALGOR_set0(priv->pkeyalg, aobj, ptype, pval))
115 {
116 /* If call fails do not swallow 'enc' */
117 if (ppenc)
118 *ppenc = NULL;
119 return 0;
120 }
121 return 1;
122 }
123
124int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg,
125 const unsigned char **pk, int *ppklen,
126 X509_ALGOR **pa,
127 PKCS8_PRIV_KEY_INFO *p8)
128 {
129 if (ppkalg)
130 *ppkalg = p8->pkeyalg->algorithm;
131 if(p8->pkey->type == V_ASN1_OCTET_STRING)
132 {
133 p8->broken = PKCS8_OK;
134 if (pk)
135 {
136 *pk = p8->pkey->value.octet_string->data;
137 *ppklen = p8->pkey->value.octet_string->length;
138 }
139 }
140 else if (p8->pkey->type == V_ASN1_SEQUENCE)
141 {
142 p8->broken = PKCS8_NO_OCTET;
143 if (pk)
144 {
145 *pk = p8->pkey->value.sequence->data;
146 *ppklen = p8->pkey->value.sequence->length;
147 }
148 }
149 else
150 return 0;
151 if (pa)
152 *pa = p8->pkeyalg;
153 return 1;
154 }
155
diff --git a/src/lib/libssl/src/crypto/asn1/t_pkey.c b/src/lib/libssl/src/crypto/asn1/t_pkey.c
index afb95d6712..9dd18f6579 100644
--- a/src/lib/libssl/src/crypto/asn1/t_pkey.c
+++ b/src/lib/libssl/src/crypto/asn1/t_pkey.c
@@ -55,520 +55,15 @@
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ====================================================================
59 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
60 * Binary polynomial ECC support in OpenSSL originally developed by
61 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
62 */
63 58
64#include <stdio.h> 59#include <stdio.h>
65#include "cryptlib.h" 60#include "cryptlib.h"
66#include <openssl/objects.h> 61#include <openssl/objects.h>
67#include <openssl/buffer.h> 62#include <openssl/buffer.h>
68#include <openssl/bn.h> 63#include <openssl/bn.h>
69#ifndef OPENSSL_NO_RSA
70#include <openssl/rsa.h>
71#endif
72#ifndef OPENSSL_NO_DH
73#include <openssl/dh.h>
74#endif
75#ifndef OPENSSL_NO_DSA
76#include <openssl/dsa.h>
77#endif
78#ifndef OPENSSL_NO_EC
79#include <openssl/ec.h>
80#endif
81
82static int print(BIO *fp,const char *str, const BIGNUM *num,
83 unsigned char *buf,int off);
84#ifndef OPENSSL_NO_EC
85static int print_bin(BIO *fp, const char *str, const unsigned char *num,
86 size_t len, int off);
87#endif
88#ifndef OPENSSL_NO_RSA
89#ifndef OPENSSL_NO_FP_API
90int RSA_print_fp(FILE *fp, const RSA *x, int off)
91 {
92 BIO *b;
93 int ret;
94
95 if ((b=BIO_new(BIO_s_file())) == NULL)
96 {
97 RSAerr(RSA_F_RSA_PRINT_FP,ERR_R_BUF_LIB);
98 return(0);
99 }
100 BIO_set_fp(b,fp,BIO_NOCLOSE);
101 ret=RSA_print(b,x,off);
102 BIO_free(b);
103 return(ret);
104 }
105#endif
106
107int RSA_print(BIO *bp, const RSA *x, int off)
108 {
109 char str[128];
110 const char *s;
111 unsigned char *m=NULL;
112 int ret=0, mod_len = 0;
113 size_t buf_len=0, i;
114
115 if (x->n)
116 buf_len = (size_t)BN_num_bytes(x->n);
117 if (x->e)
118 if (buf_len < (i = (size_t)BN_num_bytes(x->e)))
119 buf_len = i;
120 if (x->d)
121 if (buf_len < (i = (size_t)BN_num_bytes(x->d)))
122 buf_len = i;
123 if (x->p)
124 if (buf_len < (i = (size_t)BN_num_bytes(x->p)))
125 buf_len = i;
126 if (x->q)
127 if (buf_len < (i = (size_t)BN_num_bytes(x->q)))
128 buf_len = i;
129 if (x->dmp1)
130 if (buf_len < (i = (size_t)BN_num_bytes(x->dmp1)))
131 buf_len = i;
132 if (x->dmq1)
133 if (buf_len < (i = (size_t)BN_num_bytes(x->dmq1)))
134 buf_len = i;
135 if (x->iqmp)
136 if (buf_len < (i = (size_t)BN_num_bytes(x->iqmp)))
137 buf_len = i;
138
139 m=(unsigned char *)OPENSSL_malloc(buf_len+10);
140 if (m == NULL)
141 {
142 RSAerr(RSA_F_RSA_PRINT,ERR_R_MALLOC_FAILURE);
143 goto err;
144 }
145
146 if (x->n != NULL)
147 mod_len = BN_num_bits(x->n);
148
149 if (x->d != NULL)
150 {
151 if(!BIO_indent(bp,off,128))
152 goto err;
153 if (BIO_printf(bp,"Private-Key: (%d bit)\n", mod_len)
154 <= 0) goto err;
155 }
156
157 if (x->d == NULL)
158 BIO_snprintf(str,sizeof str,"Modulus (%d bit):", mod_len);
159 else
160 BUF_strlcpy(str,"modulus:",sizeof str);
161 if (!print(bp,str,x->n,m,off)) goto err;
162 s=(x->d == NULL)?"Exponent:":"publicExponent:";
163 if ((x->e != NULL) && !print(bp,s,x->e,m,off))
164 goto err;
165 if ((x->d != NULL) && !print(bp,"privateExponent:",x->d,m,off))
166 goto err;
167 if ((x->p != NULL) && !print(bp,"prime1:",x->p,m,off))
168 goto err;
169 if ((x->q != NULL) && !print(bp,"prime2:",x->q,m,off))
170 goto err;
171 if ((x->dmp1 != NULL) && !print(bp,"exponent1:",x->dmp1,m,off))
172 goto err;
173 if ((x->dmq1 != NULL) && !print(bp,"exponent2:",x->dmq1,m,off))
174 goto err;
175 if ((x->iqmp != NULL) && !print(bp,"coefficient:",x->iqmp,m,off))
176 goto err;
177 ret=1;
178err:
179 if (m != NULL) OPENSSL_free(m);
180 return(ret);
181 }
182#endif /* OPENSSL_NO_RSA */
183
184#ifndef OPENSSL_NO_DSA
185#ifndef OPENSSL_NO_FP_API
186int DSA_print_fp(FILE *fp, const DSA *x, int off)
187 {
188 BIO *b;
189 int ret;
190
191 if ((b=BIO_new(BIO_s_file())) == NULL)
192 {
193 DSAerr(DSA_F_DSA_PRINT_FP,ERR_R_BUF_LIB);
194 return(0);
195 }
196 BIO_set_fp(b,fp,BIO_NOCLOSE);
197 ret=DSA_print(b,x,off);
198 BIO_free(b);
199 return(ret);
200 }
201#endif
202
203int DSA_print(BIO *bp, const DSA *x, int off)
204 {
205 unsigned char *m=NULL;
206 int ret=0;
207 size_t buf_len=0,i;
208
209 if (x->p)
210 buf_len = (size_t)BN_num_bytes(x->p);
211 else
212 {
213 DSAerr(DSA_F_DSA_PRINT,DSA_R_MISSING_PARAMETERS);
214 goto err;
215 }
216 if (x->q)
217 if (buf_len < (i = (size_t)BN_num_bytes(x->q)))
218 buf_len = i;
219 if (x->g)
220 if (buf_len < (i = (size_t)BN_num_bytes(x->g)))
221 buf_len = i;
222 if (x->priv_key)
223 if (buf_len < (i = (size_t)BN_num_bytes(x->priv_key)))
224 buf_len = i;
225 if (x->pub_key)
226 if (buf_len < (i = (size_t)BN_num_bytes(x->pub_key)))
227 buf_len = i;
228
229 m=(unsigned char *)OPENSSL_malloc(buf_len+10);
230 if (m == NULL)
231 {
232 DSAerr(DSA_F_DSA_PRINT,ERR_R_MALLOC_FAILURE);
233 goto err;
234 }
235
236 if (x->priv_key != NULL)
237 {
238 if(!BIO_indent(bp,off,128))
239 goto err;
240 if (BIO_printf(bp,"Private-Key: (%d bit)\n",BN_num_bits(x->p))
241 <= 0) goto err;
242 }
243
244 if ((x->priv_key != NULL) && !print(bp,"priv:",x->priv_key,m,off))
245 goto err;
246 if ((x->pub_key != NULL) && !print(bp,"pub: ",x->pub_key,m,off))
247 goto err;
248 if ((x->p != NULL) && !print(bp,"P: ",x->p,m,off)) goto err;
249 if ((x->q != NULL) && !print(bp,"Q: ",x->q,m,off)) goto err;
250 if ((x->g != NULL) && !print(bp,"G: ",x->g,m,off)) goto err;
251 ret=1;
252err:
253 if (m != NULL) OPENSSL_free(m);
254 return(ret);
255 }
256#endif /* !OPENSSL_NO_DSA */
257
258#ifndef OPENSSL_NO_EC
259#ifndef OPENSSL_NO_FP_API
260int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off)
261 {
262 BIO *b;
263 int ret;
264
265 if ((b=BIO_new(BIO_s_file())) == NULL)
266 {
267 ECerr(EC_F_ECPKPARAMETERS_PRINT_FP,ERR_R_BUF_LIB);
268 return(0);
269 }
270 BIO_set_fp(b, fp, BIO_NOCLOSE);
271 ret = ECPKParameters_print(b, x, off);
272 BIO_free(b);
273 return(ret);
274 }
275
276int EC_KEY_print_fp(FILE *fp, const EC_KEY *x, int off)
277 {
278 BIO *b;
279 int ret;
280
281 if ((b=BIO_new(BIO_s_file())) == NULL)
282 {
283 ECerr(EC_F_EC_KEY_PRINT_FP, ERR_R_BIO_LIB);
284 return(0);
285 }
286 BIO_set_fp(b, fp, BIO_NOCLOSE);
287 ret = EC_KEY_print(b, x, off);
288 BIO_free(b);
289 return(ret);
290 }
291#endif
292
293int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off)
294 {
295 unsigned char *buffer=NULL;
296 size_t buf_len=0, i;
297 int ret=0, reason=ERR_R_BIO_LIB;
298 BN_CTX *ctx=NULL;
299 const EC_POINT *point=NULL;
300 BIGNUM *p=NULL, *a=NULL, *b=NULL, *gen=NULL,
301 *order=NULL, *cofactor=NULL;
302 const unsigned char *seed;
303 size_t seed_len=0;
304
305 static const char *gen_compressed = "Generator (compressed):";
306 static const char *gen_uncompressed = "Generator (uncompressed):";
307 static const char *gen_hybrid = "Generator (hybrid):";
308
309 if (!x)
310 {
311 reason = ERR_R_PASSED_NULL_PARAMETER;
312 goto err;
313 }
314
315 if (EC_GROUP_get_asn1_flag(x))
316 {
317 /* the curve parameter are given by an asn1 OID */
318 int nid;
319
320 if (!BIO_indent(bp, off, 128))
321 goto err;
322
323 nid = EC_GROUP_get_curve_name(x);
324 if (nid == 0)
325 goto err;
326
327 if (BIO_printf(bp, "ASN1 OID: %s", OBJ_nid2sn(nid)) <= 0)
328 goto err;
329 if (BIO_printf(bp, "\n") <= 0)
330 goto err;
331 }
332 else
333 {
334 /* explicit parameters */
335 int is_char_two = 0;
336 point_conversion_form_t form;
337 int tmp_nid = EC_METHOD_get_field_type(EC_GROUP_method_of(x));
338
339 if (tmp_nid == NID_X9_62_characteristic_two_field)
340 is_char_two = 1;
341
342 if ((p = BN_new()) == NULL || (a = BN_new()) == NULL ||
343 (b = BN_new()) == NULL || (order = BN_new()) == NULL ||
344 (cofactor = BN_new()) == NULL)
345 {
346 reason = ERR_R_MALLOC_FAILURE;
347 goto err;
348 }
349
350 if (is_char_two)
351 {
352 if (!EC_GROUP_get_curve_GF2m(x, p, a, b, ctx))
353 {
354 reason = ERR_R_EC_LIB;
355 goto err;
356 }
357 }
358 else /* prime field */
359 {
360 if (!EC_GROUP_get_curve_GFp(x, p, a, b, ctx))
361 {
362 reason = ERR_R_EC_LIB;
363 goto err;
364 }
365 }
366
367 if ((point = EC_GROUP_get0_generator(x)) == NULL)
368 {
369 reason = ERR_R_EC_LIB;
370 goto err;
371 }
372 if (!EC_GROUP_get_order(x, order, NULL) ||
373 !EC_GROUP_get_cofactor(x, cofactor, NULL))
374 {
375 reason = ERR_R_EC_LIB;
376 goto err;
377 }
378
379 form = EC_GROUP_get_point_conversion_form(x);
380
381 if ((gen = EC_POINT_point2bn(x, point,
382 form, NULL, ctx)) == NULL)
383 {
384 reason = ERR_R_EC_LIB;
385 goto err;
386 }
387
388 buf_len = (size_t)BN_num_bytes(p);
389 if (buf_len < (i = (size_t)BN_num_bytes(a)))
390 buf_len = i;
391 if (buf_len < (i = (size_t)BN_num_bytes(b)))
392 buf_len = i;
393 if (buf_len < (i = (size_t)BN_num_bytes(gen)))
394 buf_len = i;
395 if (buf_len < (i = (size_t)BN_num_bytes(order)))
396 buf_len = i;
397 if (buf_len < (i = (size_t)BN_num_bytes(cofactor)))
398 buf_len = i;
399
400 if ((seed = EC_GROUP_get0_seed(x)) != NULL)
401 seed_len = EC_GROUP_get_seed_len(x);
402
403 buf_len += 10;
404 if ((buffer = OPENSSL_malloc(buf_len)) == NULL)
405 {
406 reason = ERR_R_MALLOC_FAILURE;
407 goto err;
408 }
409
410 if (!BIO_indent(bp, off, 128))
411 goto err;
412
413 /* print the 'short name' of the field type */
414 if (BIO_printf(bp, "Field Type: %s\n", OBJ_nid2sn(tmp_nid))
415 <= 0)
416 goto err;
417
418 if (is_char_two)
419 {
420 /* print the 'short name' of the base type OID */
421 int basis_type = EC_GROUP_get_basis_type(x);
422 if (basis_type == 0)
423 goto err;
424
425 if (!BIO_indent(bp, off, 128))
426 goto err;
427
428 if (BIO_printf(bp, "Basis Type: %s\n",
429 OBJ_nid2sn(basis_type)) <= 0)
430 goto err;
431
432 /* print the polynomial */
433 if ((p != NULL) && !print(bp, "Polynomial:", p, buffer,
434 off))
435 goto err;
436 }
437 else
438 {
439 if ((p != NULL) && !print(bp, "Prime:", p, buffer,off))
440 goto err;
441 }
442 if ((a != NULL) && !print(bp, "A: ", a, buffer, off))
443 goto err;
444 if ((b != NULL) && !print(bp, "B: ", b, buffer, off))
445 goto err;
446 if (form == POINT_CONVERSION_COMPRESSED)
447 {
448 if ((gen != NULL) && !print(bp, gen_compressed, gen,
449 buffer, off))
450 goto err;
451 }
452 else if (form == POINT_CONVERSION_UNCOMPRESSED)
453 {
454 if ((gen != NULL) && !print(bp, gen_uncompressed, gen,
455 buffer, off))
456 goto err;
457 }
458 else /* form == POINT_CONVERSION_HYBRID */
459 {
460 if ((gen != NULL) && !print(bp, gen_hybrid, gen,
461 buffer, off))
462 goto err;
463 }
464 if ((order != NULL) && !print(bp, "Order: ", order,
465 buffer, off)) goto err;
466 if ((cofactor != NULL) && !print(bp, "Cofactor: ", cofactor,
467 buffer, off)) goto err;
468 if (seed && !print_bin(bp, "Seed:", seed, seed_len, off))
469 goto err;
470 }
471 ret=1;
472err:
473 if (!ret)
474 ECerr(EC_F_ECPKPARAMETERS_PRINT, reason);
475 if (p)
476 BN_free(p);
477 if (a)
478 BN_free(a);
479 if (b)
480 BN_free(b);
481 if (gen)
482 BN_free(gen);
483 if (order)
484 BN_free(order);
485 if (cofactor)
486 BN_free(cofactor);
487 if (ctx)
488 BN_CTX_free(ctx);
489 if (buffer != NULL)
490 OPENSSL_free(buffer);
491 return(ret);
492 }
493 64
494int EC_KEY_print(BIO *bp, const EC_KEY *x, int off) 65int ASN1_bn_print(BIO *bp, const char *number, const BIGNUM *num,
495 { 66 unsigned char *buf, int off)
496 unsigned char *buffer=NULL;
497 size_t buf_len=0, i;
498 int ret=0, reason=ERR_R_BIO_LIB;
499 BIGNUM *pub_key=NULL, *order=NULL;
500 BN_CTX *ctx=NULL;
501 const EC_GROUP *group;
502 const EC_POINT *public_key;
503 const BIGNUM *priv_key;
504
505 if (x == NULL || (group = EC_KEY_get0_group(x)) == NULL)
506 {
507 reason = ERR_R_PASSED_NULL_PARAMETER;
508 goto err;
509 }
510
511 public_key = EC_KEY_get0_public_key(x);
512 if ((pub_key = EC_POINT_point2bn(group, public_key,
513 EC_KEY_get_conv_form(x), NULL, ctx)) == NULL)
514 {
515 reason = ERR_R_EC_LIB;
516 goto err;
517 }
518
519 buf_len = (size_t)BN_num_bytes(pub_key);
520 priv_key = EC_KEY_get0_private_key(x);
521 if (priv_key != NULL)
522 {
523 if ((i = (size_t)BN_num_bytes(priv_key)) > buf_len)
524 buf_len = i;
525 }
526
527 buf_len += 10;
528 if ((buffer = OPENSSL_malloc(buf_len)) == NULL)
529 {
530 reason = ERR_R_MALLOC_FAILURE;
531 goto err;
532 }
533
534 if (priv_key != NULL)
535 {
536 if (!BIO_indent(bp, off, 128))
537 goto err;
538 if ((order = BN_new()) == NULL)
539 goto err;
540 if (!EC_GROUP_get_order(group, order, NULL))
541 goto err;
542 if (BIO_printf(bp, "Private-Key: (%d bit)\n",
543 BN_num_bits(order)) <= 0) goto err;
544 }
545
546 if ((priv_key != NULL) && !print(bp, "priv:", priv_key,
547 buffer, off))
548 goto err;
549 if ((pub_key != NULL) && !print(bp, "pub: ", pub_key,
550 buffer, off))
551 goto err;
552 if (!ECPKParameters_print(bp, group, off))
553 goto err;
554 ret=1;
555err:
556 if (!ret)
557 ECerr(EC_F_EC_KEY_PRINT, reason);
558 if (pub_key)
559 BN_free(pub_key);
560 if (order)
561 BN_free(order);
562 if (ctx)
563 BN_CTX_free(ctx);
564 if (buffer != NULL)
565 OPENSSL_free(buffer);
566 return(ret);
567 }
568#endif /* OPENSSL_NO_EC */
569
570static int print(BIO *bp, const char *number, const BIGNUM *num, unsigned char *buf,
571 int off)
572 { 67 {
573 int n,i; 68 int n,i;
574 const char *neg; 69 const char *neg;
@@ -617,223 +112,3 @@ static int print(BIO *bp, const char *number, const BIGNUM *num, unsigned char *
617 } 112 }
618 return(1); 113 return(1);
619 } 114 }
620
621#ifndef OPENSSL_NO_EC
622static int print_bin(BIO *fp, const char *name, const unsigned char *buf,
623 size_t len, int off)
624 {
625 size_t i;
626 char str[128];
627
628 if (buf == NULL)
629 return 1;
630 if (off)
631 {
632 if (off > 128)
633 off=128;
634 memset(str,' ',off);
635 if (BIO_write(fp, str, off) <= 0)
636 return 0;
637 }
638
639 if (BIO_printf(fp,"%s", name) <= 0)
640 return 0;
641
642 for (i=0; i<len; i++)
643 {
644 if ((i%15) == 0)
645 {
646 str[0]='\n';
647 memset(&(str[1]),' ',off+4);
648 if (BIO_write(fp, str, off+1+4) <= 0)
649 return 0;
650 }
651 if (BIO_printf(fp,"%02x%s",buf[i],((i+1) == len)?"":":") <= 0)
652 return 0;
653 }
654 if (BIO_write(fp,"\n",1) <= 0)
655 return 0;
656
657 return 1;
658 }
659#endif
660
661#ifndef OPENSSL_NO_DH
662#ifndef OPENSSL_NO_FP_API
663int DHparams_print_fp(FILE *fp, const DH *x)
664 {
665 BIO *b;
666 int ret;
667
668 if ((b=BIO_new(BIO_s_file())) == NULL)
669 {
670 DHerr(DH_F_DHPARAMS_PRINT_FP,ERR_R_BUF_LIB);
671 return(0);
672 }
673 BIO_set_fp(b,fp,BIO_NOCLOSE);
674 ret=DHparams_print(b, x);
675 BIO_free(b);
676 return(ret);
677 }
678#endif
679
680int DHparams_print(BIO *bp, const DH *x)
681 {
682 unsigned char *m=NULL;
683 int reason=ERR_R_BUF_LIB,ret=0;
684 size_t buf_len=0, i;
685
686 if (x->p)
687 buf_len = (size_t)BN_num_bytes(x->p);
688 else
689 {
690 reason = ERR_R_PASSED_NULL_PARAMETER;
691 goto err;
692 }
693 if (x->g)
694 if (buf_len < (i = (size_t)BN_num_bytes(x->g)))
695 buf_len = i;
696 m=(unsigned char *)OPENSSL_malloc(buf_len+10);
697 if (m == NULL)
698 {
699 reason=ERR_R_MALLOC_FAILURE;
700 goto err;
701 }
702
703 if (BIO_printf(bp,"Diffie-Hellman-Parameters: (%d bit)\n",
704 BN_num_bits(x->p)) <= 0)
705 goto err;
706 if (!print(bp,"prime:",x->p,m,4)) goto err;
707 if (!print(bp,"generator:",x->g,m,4)) goto err;
708 if (x->length != 0)
709 {
710 if (BIO_printf(bp," recommended-private-length: %d bits\n",
711 (int)x->length) <= 0) goto err;
712 }
713 ret=1;
714 if (0)
715 {
716err:
717 DHerr(DH_F_DHPARAMS_PRINT,reason);
718 }
719 if (m != NULL) OPENSSL_free(m);
720 return(ret);
721 }
722#endif
723
724#ifndef OPENSSL_NO_DSA
725#ifndef OPENSSL_NO_FP_API
726int DSAparams_print_fp(FILE *fp, const DSA *x)
727 {
728 BIO *b;
729 int ret;
730
731 if ((b=BIO_new(BIO_s_file())) == NULL)
732 {
733 DSAerr(DSA_F_DSAPARAMS_PRINT_FP,ERR_R_BUF_LIB);
734 return(0);
735 }
736 BIO_set_fp(b,fp,BIO_NOCLOSE);
737 ret=DSAparams_print(b, x);
738 BIO_free(b);
739 return(ret);
740 }
741#endif
742
743int DSAparams_print(BIO *bp, const DSA *x)
744 {
745 unsigned char *m=NULL;
746 int ret=0;
747 size_t buf_len=0,i;
748
749 if (x->p)
750 buf_len = (size_t)BN_num_bytes(x->p);
751 else
752 {
753 DSAerr(DSA_F_DSAPARAMS_PRINT,DSA_R_MISSING_PARAMETERS);
754 goto err;
755 }
756 if (x->q)
757 if (buf_len < (i = (size_t)BN_num_bytes(x->q)))
758 buf_len = i;
759 if (x->g)
760 if (buf_len < (i = (size_t)BN_num_bytes(x->g)))
761 buf_len = i;
762 m=(unsigned char *)OPENSSL_malloc(buf_len+10);
763 if (m == NULL)
764 {
765 DSAerr(DSA_F_DSAPARAMS_PRINT,ERR_R_MALLOC_FAILURE);
766 goto err;
767 }
768
769 if (BIO_printf(bp,"DSA-Parameters: (%d bit)\n",
770 BN_num_bits(x->p)) <= 0)
771 goto err;
772 if (!print(bp,"p:",x->p,m,4)) goto err;
773 if ((x->q != NULL) && !print(bp,"q:",x->q,m,4)) goto err;
774 if ((x->g != NULL) && !print(bp,"g:",x->g,m,4)) goto err;
775 ret=1;
776err:
777 if (m != NULL) OPENSSL_free(m);
778 return(ret);
779 }
780
781#endif /* !OPENSSL_NO_DSA */
782
783#ifndef OPENSSL_NO_EC
784#ifndef OPENSSL_NO_FP_API
785int ECParameters_print_fp(FILE *fp, const EC_KEY *x)
786 {
787 BIO *b;
788 int ret;
789
790 if ((b=BIO_new(BIO_s_file())) == NULL)
791 {
792 ECerr(EC_F_ECPARAMETERS_PRINT_FP, ERR_R_BIO_LIB);
793 return(0);
794 }
795 BIO_set_fp(b, fp, BIO_NOCLOSE);
796 ret = ECParameters_print(b, x);
797 BIO_free(b);
798 return(ret);
799 }
800#endif
801
802int ECParameters_print(BIO *bp, const EC_KEY *x)
803 {
804 int reason=ERR_R_EC_LIB, ret=0;
805 BIGNUM *order=NULL;
806 const EC_GROUP *group;
807
808 if (x == NULL || (group = EC_KEY_get0_group(x)) == NULL)
809 {
810 reason = ERR_R_PASSED_NULL_PARAMETER;;
811 goto err;
812 }
813
814 if ((order = BN_new()) == NULL)
815 {
816 reason = ERR_R_MALLOC_FAILURE;
817 goto err;
818 }
819
820 if (!EC_GROUP_get_order(group, order, NULL))
821 {
822 reason = ERR_R_EC_LIB;
823 goto err;
824 }
825
826 if (BIO_printf(bp, "ECDSA-Parameters: (%d bit)\n",
827 BN_num_bits(order)) <= 0)
828 goto err;
829 if (!ECPKParameters_print(bp, group, 4))
830 goto err;
831 ret=1;
832err:
833 if (order)
834 BN_free(order);
835 ECerr(EC_F_ECPARAMETERS_PRINT, reason);
836 return(ret);
837 }
838
839#endif
diff --git a/src/lib/libssl/src/crypto/asn1/t_req.c b/src/lib/libssl/src/crypto/asn1/t_req.c
index 5557e06584..ea1794e3e0 100644
--- a/src/lib/libssl/src/crypto/asn1/t_req.c
+++ b/src/lib/libssl/src/crypto/asn1/t_req.c
@@ -149,34 +149,10 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags, unsigned long
149 ERR_print_errors(bp); 149 ERR_print_errors(bp);
150 } 150 }
151 else 151 else
152#ifndef OPENSSL_NO_RSA
153 if (pkey->type == EVP_PKEY_RSA)
154 {
155 BIO_printf(bp,"%12sRSA Public Key: (%d bit)\n","",
156 BN_num_bits(pkey->pkey.rsa->n));
157 RSA_print(bp,pkey->pkey.rsa,16);
158 }
159 else
160#endif
161#ifndef OPENSSL_NO_DSA
162 if (pkey->type == EVP_PKEY_DSA)
163 { 152 {
164 BIO_printf(bp,"%12sDSA Public Key:\n",""); 153 EVP_PKEY_print_public(bp, pkey, 16, NULL);
165 DSA_print(bp,pkey->pkey.dsa,16); 154 EVP_PKEY_free(pkey);
166 } 155 }
167 else
168#endif
169#ifndef OPENSSL_NO_EC
170 if (pkey->type == EVP_PKEY_EC)
171 {
172 BIO_printf(bp, "%12sEC Public Key: \n","");
173 EC_KEY_print(bp, pkey->pkey.ec, 16);
174 }
175 else
176#endif
177 BIO_printf(bp,"%12sUnknown Public Key:\n","");
178
179 EVP_PKEY_free(pkey);
180 } 156 }
181 157
182 if(!(cflag & X509_FLAG_NO_ATTRIBUTES)) 158 if(!(cflag & X509_FLAG_NO_ATTRIBUTES))
diff --git a/src/lib/libssl/src/crypto/asn1/t_spki.c b/src/lib/libssl/src/crypto/asn1/t_spki.c
index a73369b949..079c081a81 100644
--- a/src/lib/libssl/src/crypto/asn1/t_spki.c
+++ b/src/lib/libssl/src/crypto/asn1/t_spki.c
@@ -82,36 +82,11 @@ int NETSCAPE_SPKI_print(BIO *out, NETSCAPE_SPKI *spki)
82 (i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i)); 82 (i == NID_undef)?"UNKNOWN":OBJ_nid2ln(i));
83 pkey = X509_PUBKEY_get(spki->spkac->pubkey); 83 pkey = X509_PUBKEY_get(spki->spkac->pubkey);
84 if(!pkey) BIO_printf(out, " Unable to load public key\n"); 84 if(!pkey) BIO_printf(out, " Unable to load public key\n");
85 else { 85 else
86#ifndef OPENSSL_NO_RSA
87 if (pkey->type == EVP_PKEY_RSA)
88 {
89 BIO_printf(out," RSA Public Key: (%d bit)\n",
90 BN_num_bits(pkey->pkey.rsa->n));
91 RSA_print(out,pkey->pkey.rsa,2);
92 }
93 else
94#endif
95#ifndef OPENSSL_NO_DSA
96 if (pkey->type == EVP_PKEY_DSA)
97 {
98 BIO_printf(out," DSA Public Key:\n");
99 DSA_print(out,pkey->pkey.dsa,2);
100 }
101 else
102#endif
103#ifndef OPENSSL_NO_EC
104 if (pkey->type == EVP_PKEY_EC)
105 { 86 {
106 BIO_printf(out, " EC Public Key:\n"); 87 EVP_PKEY_print_public(out, pkey, 4, NULL);
107 EC_KEY_print(out, pkey->pkey.ec,2);
108 }
109 else
110#endif
111
112 BIO_printf(out," Unknown Public Key:\n");
113 EVP_PKEY_free(pkey); 88 EVP_PKEY_free(pkey);
114 } 89 }
115 chal = spki->spkac->challenge; 90 chal = spki->spkac->challenge;
116 if(chal->length) 91 if(chal->length)
117 BIO_printf(out, " Challenge String: %s\n", chal->data); 92 BIO_printf(out, " Challenge String: %s\n", chal->data);
diff --git a/src/lib/libssl/src/crypto/asn1/t_x509.c b/src/lib/libssl/src/crypto/asn1/t_x509.c
index 8f746f9c05..e061f2ffad 100644
--- a/src/lib/libssl/src/crypto/asn1/t_x509.c
+++ b/src/lib/libssl/src/crypto/asn1/t_x509.c
@@ -111,7 +111,6 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)
111 ASN1_INTEGER *bs; 111 ASN1_INTEGER *bs;
112 EVP_PKEY *pkey=NULL; 112 EVP_PKEY *pkey=NULL;
113 const char *neg; 113 const char *neg;
114 ASN1_STRING *str=NULL;
115 114
116 if((nmflags & XN_FLAG_SEP_MASK) == XN_FLAG_SEP_MULTILINE) { 115 if((nmflags & XN_FLAG_SEP_MASK) == XN_FLAG_SEP_MULTILINE) {
117 mlch = '\n'; 116 mlch = '\n';
@@ -215,34 +214,10 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)
215 ERR_print_errors(bp); 214 ERR_print_errors(bp);
216 } 215 }
217 else 216 else
218#ifndef OPENSSL_NO_RSA
219 if (pkey->type == EVP_PKEY_RSA)
220 {
221 BIO_printf(bp,"%12sRSA Public Key: (%d bit)\n","",
222 BN_num_bits(pkey->pkey.rsa->n));
223 RSA_print(bp,pkey->pkey.rsa,16);
224 }
225 else
226#endif
227#ifndef OPENSSL_NO_DSA
228 if (pkey->type == EVP_PKEY_DSA)
229 {
230 BIO_printf(bp,"%12sDSA Public Key:\n","");
231 DSA_print(bp,pkey->pkey.dsa,16);
232 }
233 else
234#endif
235#ifndef OPENSSL_NO_EC
236 if (pkey->type == EVP_PKEY_EC)
237 { 217 {
238 BIO_printf(bp, "%12sEC Public Key:\n",""); 218 EVP_PKEY_print_public(bp, pkey, 16, NULL);
239 EC_KEY_print(bp, pkey->pkey.ec, 16); 219 EVP_PKEY_free(pkey);
240 } 220 }
241 else
242#endif
243 BIO_printf(bp,"%12sUnknown Public Key:\n","");
244
245 EVP_PKEY_free(pkey);
246 } 221 }
247 222
248 if (!(cflag & X509_FLAG_NO_EXTENSIONS)) 223 if (!(cflag & X509_FLAG_NO_EXTENSIONS))
@@ -259,7 +234,6 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags, unsigned long cflag)
259 } 234 }
260 ret=1; 235 ret=1;
261err: 236err:
262 if (str != NULL) ASN1_STRING_free(str);
263 if (m != NULL) OPENSSL_free(m); 237 if (m != NULL) OPENSSL_free(m);
264 return(ret); 238 return(ret);
265 } 239 }
@@ -329,14 +303,15 @@ int X509_signature_print(BIO *bp, X509_ALGOR *sigalg, ASN1_STRING *sig)
329 return 1; 303 return 1;
330} 304}
331 305
332int ASN1_STRING_print(BIO *bp, ASN1_STRING *v) 306int ASN1_STRING_print(BIO *bp, const ASN1_STRING *v)
333 { 307 {
334 int i,n; 308 int i,n;
335 char buf[80],*p; 309 char buf[80];
310 const char *p;
336 311
337 if (v == NULL) return(0); 312 if (v == NULL) return(0);
338 n=0; 313 n=0;
339 p=(char *)v->data; 314 p=(const char *)v->data;
340 for (i=0; i<v->length; i++) 315 for (i=0; i<v->length; i++)
341 { 316 {
342 if ((p[i] > '~') || ((p[i] < ' ') && 317 if ((p[i] > '~') || ((p[i] < ' ') &&
@@ -358,7 +333,7 @@ int ASN1_STRING_print(BIO *bp, ASN1_STRING *v)
358 return(1); 333 return(1);
359 } 334 }
360 335
361int ASN1_TIME_print(BIO *bp, ASN1_TIME *tm) 336int ASN1_TIME_print(BIO *bp, const ASN1_TIME *tm)
362{ 337{
363 if(tm->type == V_ASN1_UTCTIME) return ASN1_UTCTIME_print(bp, tm); 338 if(tm->type == V_ASN1_UTCTIME) return ASN1_UTCTIME_print(bp, tm);
364 if(tm->type == V_ASN1_GENERALIZEDTIME) 339 if(tm->type == V_ASN1_GENERALIZEDTIME)
@@ -373,12 +348,14 @@ static const char *mon[12]=
373 "Jul","Aug","Sep","Oct","Nov","Dec" 348 "Jul","Aug","Sep","Oct","Nov","Dec"
374 }; 349 };
375 350
376int ASN1_GENERALIZEDTIME_print(BIO *bp, ASN1_GENERALIZEDTIME *tm) 351int ASN1_GENERALIZEDTIME_print(BIO *bp, const ASN1_GENERALIZEDTIME *tm)
377 { 352 {
378 char *v; 353 char *v;
379 int gmt=0; 354 int gmt=0;
380 int i; 355 int i;
381 int y=0,M=0,d=0,h=0,m=0,s=0; 356 int y=0,M=0,d=0,h=0,m=0,s=0;
357 char *f = NULL;
358 int f_len = 0;
382 359
383 i=tm->length; 360 i=tm->length;
384 v=(char *)tm->data; 361 v=(char *)tm->data;
@@ -396,10 +373,21 @@ int ASN1_GENERALIZEDTIME_print(BIO *bp, ASN1_GENERALIZEDTIME *tm)
396 if (tm->length >= 14 && 373 if (tm->length >= 14 &&
397 (v[12] >= '0') && (v[12] <= '9') && 374 (v[12] >= '0') && (v[12] <= '9') &&
398 (v[13] >= '0') && (v[13] <= '9')) 375 (v[13] >= '0') && (v[13] <= '9'))
376 {
399 s= (v[12]-'0')*10+(v[13]-'0'); 377 s= (v[12]-'0')*10+(v[13]-'0');
378 /* Check for fractions of seconds. */
379 if (tm->length >= 15 && v[14] == '.')
380 {
381 int l = tm->length;
382 f = &v[14]; /* The decimal point. */
383 f_len = 1;
384 while (14 + f_len < l && f[f_len] >= '0' && f[f_len] <= '9')
385 ++f_len;
386 }
387 }
400 388
401 if (BIO_printf(bp,"%s %2d %02d:%02d:%02d %d%s", 389 if (BIO_printf(bp,"%s %2d %02d:%02d:%02d%.*s %d%s",
402 mon[M-1],d,h,m,s,y,(gmt)?" GMT":"") <= 0) 390 mon[M-1],d,h,m,s,f_len,f,y,(gmt)?" GMT":"") <= 0)
403 return(0); 391 return(0);
404 else 392 else
405 return(1); 393 return(1);
@@ -408,15 +396,15 @@ err:
408 return(0); 396 return(0);
409 } 397 }
410 398
411int ASN1_UTCTIME_print(BIO *bp, ASN1_UTCTIME *tm) 399int ASN1_UTCTIME_print(BIO *bp, const ASN1_UTCTIME *tm)
412 { 400 {
413 char *v; 401 const char *v;
414 int gmt=0; 402 int gmt=0;
415 int i; 403 int i;
416 int y=0,M=0,d=0,h=0,m=0,s=0; 404 int y=0,M=0,d=0,h=0,m=0,s=0;
417 405
418 i=tm->length; 406 i=tm->length;
419 v=(char *)tm->data; 407 v=(const char *)tm->data;
420 408
421 if (i < 10) goto err; 409 if (i < 10) goto err;
422 if (v[i-1] == 'Z') gmt=1; 410 if (v[i-1] == 'Z') gmt=1;
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_dec.c b/src/lib/libssl/src/crypto/asn1/tasn_dec.c
index 48bc1c0d4d..3bee439968 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_dec.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_dec.c
@@ -114,6 +114,8 @@ unsigned long ASN1_tag2bit(int tag)
114/* Macro to initialize and invalidate the cache */ 114/* Macro to initialize and invalidate the cache */
115 115
116#define asn1_tlc_clear(c) if (c) (c)->valid = 0 116#define asn1_tlc_clear(c) if (c) (c)->valid = 0
117/* Version to avoid compiler warning about 'c' always non-NULL */
118#define asn1_tlc_clear_nc(c) (c)->valid = 0
117 119
118/* Decode an ASN1 item, this currently behaves just 120/* Decode an ASN1 item, this currently behaves just
119 * like a standard 'd2i' function. 'in' points to 121 * like a standard 'd2i' function. 'in' points to
@@ -130,7 +132,7 @@ ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **pval,
130 ASN1_VALUE *ptmpval = NULL; 132 ASN1_VALUE *ptmpval = NULL;
131 if (!pval) 133 if (!pval)
132 pval = &ptmpval; 134 pval = &ptmpval;
133 c.valid = 0; 135 asn1_tlc_clear_nc(&c);
134 if (ASN1_item_ex_d2i(pval, in, len, it, -1, 0, 0, &c) > 0) 136 if (ASN1_item_ex_d2i(pval, in, len, it, -1, 0, 0, &c) > 0)
135 return *pval; 137 return *pval;
136 return NULL; 138 return NULL;
@@ -140,7 +142,7 @@ int ASN1_template_d2i(ASN1_VALUE **pval,
140 const unsigned char **in, long len, const ASN1_TEMPLATE *tt) 142 const unsigned char **in, long len, const ASN1_TEMPLATE *tt)
141 { 143 {
142 ASN1_TLC c; 144 ASN1_TLC c;
143 c.valid = 0; 145 asn1_tlc_clear_nc(&c);
144 return asn1_template_ex_d2i(pval, in, len, tt, 0, &c); 146 return asn1_template_ex_d2i(pval, in, len, tt, 0, &c);
145 } 147 }
146 148
@@ -306,7 +308,7 @@ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
306 308
307 309
308 case ASN1_ITYPE_CHOICE: 310 case ASN1_ITYPE_CHOICE:
309 if (asn1_cb && !asn1_cb(ASN1_OP_D2I_PRE, pval, it)) 311 if (asn1_cb && !asn1_cb(ASN1_OP_D2I_PRE, pval, it, NULL))
310 goto auxerr; 312 goto auxerr;
311 313
312 /* Allocate structure */ 314 /* Allocate structure */
@@ -356,7 +358,7 @@ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
356 358
357 asn1_set_choice_selector(pval, i, it); 359 asn1_set_choice_selector(pval, i, it);
358 *in = p; 360 *in = p;
359 if (asn1_cb && !asn1_cb(ASN1_OP_D2I_POST, pval, it)) 361 if (asn1_cb && !asn1_cb(ASN1_OP_D2I_POST, pval, it, NULL))
360 goto auxerr; 362 goto auxerr;
361 return 1; 363 return 1;
362 364
@@ -403,7 +405,7 @@ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
403 goto err; 405 goto err;
404 } 406 }
405 407
406 if (asn1_cb && !asn1_cb(ASN1_OP_D2I_PRE, pval, it)) 408 if (asn1_cb && !asn1_cb(ASN1_OP_D2I_PRE, pval, it, NULL))
407 goto auxerr; 409 goto auxerr;
408 410
409 /* Get each field entry */ 411 /* Get each field entry */
@@ -505,7 +507,7 @@ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
505 if (!asn1_enc_save(pval, *in, p - *in, it)) 507 if (!asn1_enc_save(pval, *in, p - *in, it))
506 goto auxerr; 508 goto auxerr;
507 *in = p; 509 *in = p;
508 if (asn1_cb && !asn1_cb(ASN1_OP_D2I_POST, pval, it)) 510 if (asn1_cb && !asn1_cb(ASN1_OP_D2I_POST, pval, it, NULL))
509 goto auxerr; 511 goto auxerr;
510 return 1; 512 return 1;
511 513
@@ -665,11 +667,12 @@ static int asn1_template_noexp_d2i(ASN1_VALUE **val,
665 else 667 else
666 { 668 {
667 /* We've got a valid STACK: free up any items present */ 669 /* We've got a valid STACK: free up any items present */
668 STACK *sktmp = (STACK *)*val; 670 STACK_OF(ASN1_VALUE) *sktmp
671 = (STACK_OF(ASN1_VALUE) *)*val;
669 ASN1_VALUE *vtmp; 672 ASN1_VALUE *vtmp;
670 while(sk_num(sktmp) > 0) 673 while(sk_ASN1_VALUE_num(sktmp) > 0)
671 { 674 {
672 vtmp = (ASN1_VALUE *)sk_pop(sktmp); 675 vtmp = sk_ASN1_VALUE_pop(sktmp);
673 ASN1_item_ex_free(&vtmp, 676 ASN1_item_ex_free(&vtmp,
674 ASN1_ITEM_ptr(tt->item)); 677 ASN1_ITEM_ptr(tt->item));
675 } 678 }
@@ -710,7 +713,8 @@ static int asn1_template_noexp_d2i(ASN1_VALUE **val,
710 goto err; 713 goto err;
711 } 714 }
712 len -= p - q; 715 len -= p - q;
713 if (!sk_push((STACK *)*val, (char *)skfield)) 716 if (!sk_ASN1_VALUE_push((STACK_OF(ASN1_VALUE) *)*val,
717 skfield))
714 { 718 {
715 ASN1err(ASN1_F_ASN1_TEMPLATE_NOEXP_D2I, 719 ASN1err(ASN1_F_ASN1_TEMPLATE_NOEXP_D2I,
716 ERR_R_MALLOC_FAILURE); 720 ERR_R_MALLOC_FAILURE);
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_enc.c b/src/lib/libssl/src/crypto/asn1/tasn_enc.c
index 2721f904a6..936ad1f767 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_enc.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_enc.c
@@ -158,7 +158,7 @@ int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out,
158 return asn1_i2d_ex_primitive(pval, out, it, -1, aclass); 158 return asn1_i2d_ex_primitive(pval, out, it, -1, aclass);
159 159
160 case ASN1_ITYPE_CHOICE: 160 case ASN1_ITYPE_CHOICE:
161 if (asn1_cb && !asn1_cb(ASN1_OP_I2D_PRE, pval, it)) 161 if (asn1_cb && !asn1_cb(ASN1_OP_I2D_PRE, pval, it, NULL))
162 return 0; 162 return 0;
163 i = asn1_get_choice_selector(pval, it); 163 i = asn1_get_choice_selector(pval, it);
164 if ((i >= 0) && (i < it->tcount)) 164 if ((i >= 0) && (i < it->tcount))
@@ -171,7 +171,7 @@ int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out,
171 -1, aclass); 171 -1, aclass);
172 } 172 }
173 /* Fixme: error condition if selector out of range */ 173 /* Fixme: error condition if selector out of range */
174 if (asn1_cb && !asn1_cb(ASN1_OP_I2D_POST, pval, it)) 174 if (asn1_cb && !asn1_cb(ASN1_OP_I2D_POST, pval, it, NULL))
175 return 0; 175 return 0;
176 break; 176 break;
177 177
@@ -216,7 +216,7 @@ int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out,
216 aclass = (aclass & ~ASN1_TFLG_TAG_CLASS) 216 aclass = (aclass & ~ASN1_TFLG_TAG_CLASS)
217 | V_ASN1_UNIVERSAL; 217 | V_ASN1_UNIVERSAL;
218 } 218 }
219 if (asn1_cb && !asn1_cb(ASN1_OP_I2D_PRE, pval, it)) 219 if (asn1_cb && !asn1_cb(ASN1_OP_I2D_PRE, pval, it, NULL))
220 return 0; 220 return 0;
221 /* First work out sequence content length */ 221 /* First work out sequence content length */
222 for (i = 0, tt = it->templates; i < it->tcount; tt++, i++) 222 for (i = 0, tt = it->templates; i < it->tcount; tt++, i++)
@@ -250,7 +250,7 @@ int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out,
250 } 250 }
251 if (ndef == 2) 251 if (ndef == 2)
252 ASN1_put_eoc(out); 252 ASN1_put_eoc(out);
253 if (asn1_cb && !asn1_cb(ASN1_OP_I2D_POST, pval, it)) 253 if (asn1_cb && !asn1_cb(ASN1_OP_I2D_POST, pval, it, NULL))
254 return 0; 254 return 0;
255 return seqlen; 255 return seqlen;
256 256
@@ -569,7 +569,8 @@ int asn1_ex_i2c(ASN1_VALUE **pval, unsigned char *cout, int *putype,
569 ASN1_STRING *strtmp; 569 ASN1_STRING *strtmp;
570 ASN1_OBJECT *otmp; 570 ASN1_OBJECT *otmp;
571 int utype; 571 int utype;
572 unsigned char *cont, c; 572 const unsigned char *cont;
573 unsigned char c;
573 int len; 574 int len;
574 const ASN1_PRIMITIVE_FUNCS *pf; 575 const ASN1_PRIMITIVE_FUNCS *pf;
575 pf = it->funcs; 576 pf = it->funcs;
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_fre.c b/src/lib/libssl/src/crypto/asn1/tasn_fre.c
index d7c017fa1d..77d3092d31 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_fre.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_fre.c
@@ -110,7 +110,7 @@ static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int c
110 case ASN1_ITYPE_CHOICE: 110 case ASN1_ITYPE_CHOICE:
111 if (asn1_cb) 111 if (asn1_cb)
112 { 112 {
113 i = asn1_cb(ASN1_OP_FREE_PRE, pval, it); 113 i = asn1_cb(ASN1_OP_FREE_PRE, pval, it, NULL);
114 if (i == 2) 114 if (i == 2)
115 return; 115 return;
116 } 116 }
@@ -123,7 +123,7 @@ static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int c
123 ASN1_template_free(pchval, tt); 123 ASN1_template_free(pchval, tt);
124 } 124 }
125 if (asn1_cb) 125 if (asn1_cb)
126 asn1_cb(ASN1_OP_FREE_POST, pval, it); 126 asn1_cb(ASN1_OP_FREE_POST, pval, it, NULL);
127 if (!combine) 127 if (!combine)
128 { 128 {
129 OPENSSL_free(*pval); 129 OPENSSL_free(*pval);
@@ -149,7 +149,7 @@ static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int c
149 return; 149 return;
150 if (asn1_cb) 150 if (asn1_cb)
151 { 151 {
152 i = asn1_cb(ASN1_OP_FREE_PRE, pval, it); 152 i = asn1_cb(ASN1_OP_FREE_PRE, pval, it, NULL);
153 if (i == 2) 153 if (i == 2)
154 return; 154 return;
155 } 155 }
@@ -170,7 +170,7 @@ static void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int c
170 ASN1_template_free(pseqval, seqtt); 170 ASN1_template_free(pseqval, seqtt);
171 } 171 }
172 if (asn1_cb) 172 if (asn1_cb)
173 asn1_cb(ASN1_OP_FREE_POST, pval, it); 173 asn1_cb(ASN1_OP_FREE_POST, pval, it, NULL);
174 if (!combine) 174 if (!combine)
175 { 175 {
176 OPENSSL_free(*pval); 176 OPENSSL_free(*pval);
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_new.c b/src/lib/libssl/src/crypto/asn1/tasn_new.c
index 5c6a2ebd4d..0d9e78cc7c 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_new.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_new.c
@@ -68,7 +68,7 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
68 int combine); 68 int combine);
69static void asn1_item_clear(ASN1_VALUE **pval, const ASN1_ITEM *it); 69static void asn1_item_clear(ASN1_VALUE **pval, const ASN1_ITEM *it);
70static void asn1_template_clear(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt); 70static void asn1_template_clear(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
71void asn1_primitive_clear(ASN1_VALUE **pval, const ASN1_ITEM *it); 71static void asn1_primitive_clear(ASN1_VALUE **pval, const ASN1_ITEM *it);
72 72
73ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it) 73ASN1_VALUE *ASN1_item_new(const ASN1_ITEM *it)
74 { 74 {
@@ -146,7 +146,7 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
146 case ASN1_ITYPE_CHOICE: 146 case ASN1_ITYPE_CHOICE:
147 if (asn1_cb) 147 if (asn1_cb)
148 { 148 {
149 i = asn1_cb(ASN1_OP_NEW_PRE, pval, it); 149 i = asn1_cb(ASN1_OP_NEW_PRE, pval, it, NULL);
150 if (!i) 150 if (!i)
151 goto auxerr; 151 goto auxerr;
152 if (i==2) 152 if (i==2)
@@ -166,7 +166,7 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
166 memset(*pval, 0, it->size); 166 memset(*pval, 0, it->size);
167 } 167 }
168 asn1_set_choice_selector(pval, -1, it); 168 asn1_set_choice_selector(pval, -1, it);
169 if (asn1_cb && !asn1_cb(ASN1_OP_NEW_POST, pval, it)) 169 if (asn1_cb && !asn1_cb(ASN1_OP_NEW_POST, pval, it, NULL))
170 goto auxerr; 170 goto auxerr;
171 break; 171 break;
172 172
@@ -174,7 +174,7 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
174 case ASN1_ITYPE_SEQUENCE: 174 case ASN1_ITYPE_SEQUENCE:
175 if (asn1_cb) 175 if (asn1_cb)
176 { 176 {
177 i = asn1_cb(ASN1_OP_NEW_PRE, pval, it); 177 i = asn1_cb(ASN1_OP_NEW_PRE, pval, it, NULL);
178 if (!i) 178 if (!i)
179 goto auxerr; 179 goto auxerr;
180 if (i==2) 180 if (i==2)
@@ -201,7 +201,7 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
201 if (!ASN1_template_new(pseqval, tt)) 201 if (!ASN1_template_new(pseqval, tt))
202 goto memerr; 202 goto memerr;
203 } 203 }
204 if (asn1_cb && !asn1_cb(ASN1_OP_NEW_POST, pval, it)) 204 if (asn1_cb && !asn1_cb(ASN1_OP_NEW_POST, pval, it, NULL))
205 goto auxerr; 205 goto auxerr;
206 break; 206 break;
207 } 207 }
@@ -325,6 +325,7 @@ static void asn1_template_clear(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt)
325int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it) 325int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it)
326 { 326 {
327 ASN1_TYPE *typ; 327 ASN1_TYPE *typ;
328 ASN1_STRING *str;
328 int utype; 329 int utype;
329 330
330 if (it && it->funcs) 331 if (it && it->funcs)
@@ -345,10 +346,7 @@ int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it)
345 return 1; 346 return 1;
346 347
347 case V_ASN1_BOOLEAN: 348 case V_ASN1_BOOLEAN:
348 if (it) 349 *(ASN1_BOOLEAN *)pval = it->size;
349 *(ASN1_BOOLEAN *)pval = it->size;
350 else
351 *(ASN1_BOOLEAN *)pval = -1;
352 return 1; 350 return 1;
353 351
354 case V_ASN1_NULL: 352 case V_ASN1_NULL:
@@ -365,7 +363,10 @@ int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it)
365 break; 363 break;
366 364
367 default: 365 default:
368 *pval = (ASN1_VALUE *)ASN1_STRING_type_new(utype); 366 str = ASN1_STRING_type_new(utype);
367 if (it->itype == ASN1_ITYPE_MSTRING && str)
368 str->flags |= ASN1_STRING_FLAG_MSTRING;
369 *pval = (ASN1_VALUE *)str;
369 break; 370 break;
370 } 371 }
371 if (*pval) 372 if (*pval)
@@ -373,7 +374,7 @@ int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it)
373 return 0; 374 return 0;
374 } 375 }
375 376
376void asn1_primitive_clear(ASN1_VALUE **pval, const ASN1_ITEM *it) 377static void asn1_primitive_clear(ASN1_VALUE **pval, const ASN1_ITEM *it)
377 { 378 {
378 int utype; 379 int utype;
379 if (it && it->funcs) 380 if (it && it->funcs)
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_prn.c b/src/lib/libssl/src/crypto/asn1/tasn_prn.c
index b9c96a6dbe..453698012d 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_prn.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_prn.c
@@ -3,7 +3,7 @@
3 * project 2000. 3 * project 2000.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 2000 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 2000,2005 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -58,141 +58,570 @@
58 58
59 59
60#include <stddef.h> 60#include <stddef.h>
61#include "cryptlib.h"
61#include <openssl/asn1.h> 62#include <openssl/asn1.h>
63#include <openssl/asn1t.h>
62#include <openssl/objects.h> 64#include <openssl/objects.h>
63#include <openssl/buffer.h> 65#include <openssl/buffer.h>
64#include <openssl/err.h> 66#include <openssl/err.h>
65#include <openssl/nasn.h> 67#include <openssl/x509v3.h>
68#include "asn1_locl.h"
66 69
67/* Print routines. Print out a whole structure from a template. 70/* Print routines.
68 */ 71 */
69 72
70static int asn1_item_print_nm(BIO *out, void *fld, int indent, const ASN1_ITEM *it, const char *name); 73/* ASN1_PCTX routines */
71 74
72int ASN1_item_print(BIO *out, void *fld, int indent, const ASN1_ITEM *it) 75ASN1_PCTX default_pctx =
73{ 76 {
74 return asn1_item_print_nm(out, fld, indent, it, it->sname); 77 ASN1_PCTX_FLAGS_SHOW_ABSENT, /* flags */
75} 78 0, /* nm_flags */
79 0, /* cert_flags */
80 0, /* oid_flags */
81 0 /* str_flags */
82 };
83
76 84
77static int asn1_item_print_nm(BIO *out, void *fld, int indent, const ASN1_ITEM *it, const char *name) 85ASN1_PCTX *ASN1_PCTX_new(void)
78{ 86 {
79 ASN1_STRING *str; 87 ASN1_PCTX *ret;
88 ret = OPENSSL_malloc(sizeof(ASN1_PCTX));
89 if (ret == NULL)
90 {
91 ASN1err(ASN1_F_ASN1_PCTX_NEW, ERR_R_MALLOC_FAILURE);
92 return NULL;
93 }
94 ret->flags = 0;
95 ret->nm_flags = 0;
96 ret->cert_flags = 0;
97 ret->oid_flags = 0;
98 ret->str_flags = 0;
99 return ret;
100 }
101
102void ASN1_PCTX_free(ASN1_PCTX *p)
103 {
104 OPENSSL_free(p);
105 }
106
107unsigned long ASN1_PCTX_get_flags(ASN1_PCTX *p)
108 {
109 return p->flags;
110 }
111
112void ASN1_PCTX_set_flags(ASN1_PCTX *p, unsigned long flags)
113 {
114 p->flags = flags;
115 }
116
117unsigned long ASN1_PCTX_get_nm_flags(ASN1_PCTX *p)
118 {
119 return p->nm_flags;
120 }
121
122void ASN1_PCTX_set_nm_flags(ASN1_PCTX *p, unsigned long flags)
123 {
124 p->nm_flags = flags;
125 }
126
127unsigned long ASN1_PCTX_get_cert_flags(ASN1_PCTX *p)
128 {
129 return p->cert_flags;
130 }
131
132void ASN1_PCTX_set_cert_flags(ASN1_PCTX *p, unsigned long flags)
133 {
134 p->cert_flags = flags;
135 }
136
137unsigned long ASN1_PCTX_get_oid_flags(ASN1_PCTX *p)
138 {
139 return p->oid_flags;
140 }
141
142void ASN1_PCTX_set_oid_flags(ASN1_PCTX *p, unsigned long flags)
143 {
144 p->oid_flags = flags;
145 }
146
147unsigned long ASN1_PCTX_get_str_flags(ASN1_PCTX *p)
148 {
149 return p->str_flags;
150 }
151
152void ASN1_PCTX_set_str_flags(ASN1_PCTX *p, unsigned long flags)
153 {
154 p->str_flags = flags;
155 }
156
157/* Main print routines */
158
159static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
160 const ASN1_ITEM *it,
161 const char *fname, const char *sname,
162 int nohdr, const ASN1_PCTX *pctx);
163
164int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
165 const ASN1_TEMPLATE *tt, const ASN1_PCTX *pctx);
166
167static int asn1_primitive_print(BIO *out, ASN1_VALUE **fld,
168 const ASN1_ITEM *it, int indent,
169 const char *fname, const char *sname,
170 const ASN1_PCTX *pctx);
171
172static int asn1_print_fsname(BIO *out, int indent,
173 const char *fname, const char *sname,
174 const ASN1_PCTX *pctx);
175
176int ASN1_item_print(BIO *out, ASN1_VALUE *ifld, int indent,
177 const ASN1_ITEM *it, const ASN1_PCTX *pctx)
178 {
179 const char *sname;
180 if (pctx == NULL)
181 pctx = &default_pctx;
182 if (pctx->flags & ASN1_PCTX_FLAGS_NO_STRUCT_NAME)
183 sname = NULL;
184 else
185 sname = it->sname;
186 return asn1_item_print_ctx(out, &ifld, indent, it,
187 NULL, sname, 0, pctx);
188 }
189
190static int asn1_item_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
191 const ASN1_ITEM *it,
192 const char *fname, const char *sname,
193 int nohdr, const ASN1_PCTX *pctx)
194 {
80 const ASN1_TEMPLATE *tt; 195 const ASN1_TEMPLATE *tt;
81 void *tmpfld; 196 const ASN1_EXTERN_FUNCS *ef;
197 ASN1_VALUE **tmpfld;
198 const ASN1_AUX *aux = it->funcs;
199 ASN1_aux_cb *asn1_cb;
200 ASN1_PRINT_ARG parg;
82 int i; 201 int i;
83 if(!fld) { 202 if (aux && aux->asn1_cb)
84 BIO_printf(out, "%*s%s ABSENT\n", indent, "", name); 203 {
204 parg.out = out;
205 parg.indent = indent;
206 parg.pctx = pctx;
207 asn1_cb = aux->asn1_cb;
208 }
209 else asn1_cb = 0;
210
211 if(*fld == NULL)
212 {
213 if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_ABSENT)
214 {
215 if (!nohdr && !asn1_print_fsname(out, indent,
216 fname, sname, pctx))
217 return 0;
218 if (BIO_puts(out, "<ABSENT>\n") <= 0)
219 return 0;
220 }
85 return 1; 221 return 1;
86 } 222 }
87 switch(it->itype) {
88 223
224 switch(it->itype)
225 {
89 case ASN1_ITYPE_PRIMITIVE: 226 case ASN1_ITYPE_PRIMITIVE:
90 if(it->templates) 227 if(it->templates)
91 return ASN1_template_print(out, fld, indent, it->templates); 228 {
92 return asn1_primitive_print(out, fld, it->utype, indent, name); 229 if (!asn1_template_print_ctx(out, fld, indent,
93 break; 230 it->templates, pctx))
94 231 return 0;
232 }
233 /* fall thru */
95 case ASN1_ITYPE_MSTRING: 234 case ASN1_ITYPE_MSTRING:
96 str = fld; 235 if (!asn1_primitive_print(out, fld, it,
97 return asn1_primitive_print(out, fld, str->type, indent, name); 236 indent, fname, sname,pctx))
237 return 0;
238 break;
98 239
99 case ASN1_ITYPE_EXTERN: 240 case ASN1_ITYPE_EXTERN:
100 BIO_printf(out, "%*s%s:EXTERNAL TYPE %s %s\n", indent, "", name, it->sname, fld ? "" : "ABSENT"); 241 if (!nohdr && !asn1_print_fsname(out, indent, fname, sname, pctx))
101 return 1; 242 return 0;
102 case ASN1_ITYPE_COMPAT: 243 /* Use new style print routine if possible */
103 BIO_printf(out, "%*s%s:COMPATIBLE TYPE %s %s\n", indent, "", name, it->sname, fld ? "" : "ABSENT"); 244 ef = it->funcs;
104 return 1; 245 if (ef && ef->asn1_ex_print)
105 246 {
247 i = ef->asn1_ex_print(out, fld, indent, "", pctx);
248 if (!i)
249 return 0;
250 if ((i == 2) && (BIO_puts(out, "\n") <= 0))
251 return 0;
252 return 1;
253 }
254 else if (sname &&
255 BIO_printf(out, ":EXTERNAL TYPE %s\n", sname) <= 0)
256 return 0;
257 break;
106 258
107 case ASN1_ITYPE_CHOICE: 259 case ASN1_ITYPE_CHOICE:
260#if 0
261 if (!nohdr && !asn1_print_fsname(out, indent, fname, sname, pctx))
262 return 0;
263#endif
108 /* CHOICE type, get selector */ 264 /* CHOICE type, get selector */
109 i = asn1_get_choice_selector(fld, it); 265 i = asn1_get_choice_selector(fld, it);
110 /* This should never happen... */ 266 /* This should never happen... */
111 if((i < 0) || (i >= it->tcount)) { 267 if((i < 0) || (i >= it->tcount))
112 BIO_printf(out, "%s selector [%d] out of range\n", it->sname, i); 268 {
269 if (BIO_printf(out,
270 "ERROR: selector [%d] invalid\n", i) <= 0)
271 return 0;
113 return 1; 272 return 1;
114 } 273 }
115 tt = it->templates + i; 274 tt = it->templates + i;
116 tmpfld = asn1_get_field(fld, tt); 275 tmpfld = asn1_get_field_ptr(fld, tt);
117 return ASN1_template_print(out, tmpfld, indent, tt); 276 if (!asn1_template_print_ctx(out, tmpfld, indent, tt, pctx))
277 return 0;
278 break;
118 279
119 case ASN1_ITYPE_SEQUENCE: 280 case ASN1_ITYPE_SEQUENCE:
120 BIO_printf(out, "%*s%s {\n", indent, "", name); 281 case ASN1_ITYPE_NDEF_SEQUENCE:
121 /* Get each field entry */ 282 if (!nohdr && !asn1_print_fsname(out, indent, fname, sname, pctx))
122 for(i = 0, tt = it->templates; i < it->tcount; i++, tt++) { 283 return 0;
123 tmpfld = asn1_get_field(fld, tt); 284 if (fname || sname)
124 ASN1_template_print(out, tmpfld, indent + 2, tt); 285 {
125 } 286 if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_SEQUENCE)
126 BIO_printf(out, "%*s}\n", indent, ""); 287 {
127 return 1; 288 if (BIO_puts(out, " {\n") <= 0)
289 return 0;
290 }
291 else
292 {
293 if (BIO_puts(out, "\n") <= 0)
294 return 0;
295 }
296 }
297
298 if (asn1_cb)
299 {
300 i = asn1_cb(ASN1_OP_PRINT_PRE, fld, it, &parg);
301 if (i == 0)
302 return 0;
303 if (i == 2)
304 return 1;
305 }
306
307 /* Print each field entry */
308 for(i = 0, tt = it->templates; i < it->tcount; i++, tt++)
309 {
310 const ASN1_TEMPLATE *seqtt;
311 seqtt = asn1_do_adb(fld, tt, 1);
312 tmpfld = asn1_get_field_ptr(fld, seqtt);
313 if (!asn1_template_print_ctx(out, tmpfld,
314 indent + 2, seqtt, pctx))
315 return 0;
316 }
317 if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_SEQUENCE)
318 {
319 if (BIO_printf(out, "%*s}\n", indent, "") < 0)
320 return 0;
321 }
322
323 if (asn1_cb)
324 {
325 i = asn1_cb(ASN1_OP_PRINT_POST, fld, it, &parg);
326 if (i == 0)
327 return 0;
328 }
329 break;
128 330
129 default: 331 default:
332 BIO_printf(out, "Unprocessed type %d\n", it->itype);
130 return 0; 333 return 0;
334 }
335
336 return 1;
131 } 337 }
132}
133 338
134int ASN1_template_print(BIO *out, void *fld, int indent, const ASN1_TEMPLATE *tt) 339int asn1_template_print_ctx(BIO *out, ASN1_VALUE **fld, int indent,
135{ 340 const ASN1_TEMPLATE *tt, const ASN1_PCTX *pctx)
341 {
136 int i, flags; 342 int i, flags;
137#if 0 343 const char *sname, *fname;
138 if(!fld) return 0;
139#endif
140 flags = tt->flags; 344 flags = tt->flags;
141 if(flags & ASN1_TFLG_SK_MASK) { 345 if(pctx->flags & ASN1_PCTX_FLAGS_SHOW_FIELD_STRUCT_NAME)
346 sname = ASN1_ITEM_ptr(tt->item)->sname;
347 else
348 sname = NULL;
349 if(pctx->flags & ASN1_PCTX_FLAGS_NO_FIELD_NAME)
350 fname = NULL;
351 else
352 fname = tt->field_name;
353 if(flags & ASN1_TFLG_SK_MASK)
354 {
142 char *tname; 355 char *tname;
143 void *skitem; 356 ASN1_VALUE *skitem;
357 STACK_OF(ASN1_VALUE) *stack;
358
144 /* SET OF, SEQUENCE OF */ 359 /* SET OF, SEQUENCE OF */
145 if(flags & ASN1_TFLG_SET_OF) tname = "SET"; 360 if (fname)
146 else tname = "SEQUENCE"; 361 {
147 if(fld) { 362 if(pctx->flags & ASN1_PCTX_FLAGS_SHOW_SSOF)
148 BIO_printf(out, "%*s%s OF %s {\n", indent, "", tname, tt->field_name); 363 {
149 for(i = 0; i < sk_num(fld); i++) { 364 if(flags & ASN1_TFLG_SET_OF)
150 skitem = sk_value(fld, i); 365 tname = "SET";
151 asn1_item_print_nm(out, skitem, indent + 2, tt->item, ""); 366 else
367 tname = "SEQUENCE";
368 if (BIO_printf(out, "%*s%s OF %s {\n",
369 indent, "", tname, tt->field_name) <= 0)
370 return 0;
371 }
372 else if (BIO_printf(out, "%*s%s:\n", indent, "",
373 fname) <= 0)
374 return 0;
375 }
376 stack = (STACK_OF(ASN1_VALUE) *)*fld;
377 for(i = 0; i < sk_ASN1_VALUE_num(stack); i++)
378 {
379 if ((i > 0) && (BIO_puts(out, "\n") <= 0))
380 return 0;
381
382 skitem = sk_ASN1_VALUE_value(stack, i);
383 if (!asn1_item_print_ctx(out, &skitem, indent + 2,
384 ASN1_ITEM_ptr(tt->item), NULL, NULL, 1, pctx))
385 return 0;
386 }
387 if (!i && BIO_printf(out, "%*s<EMPTY>\n", indent + 2, "") <= 0)
388 return 0;
389 if(pctx->flags & ASN1_PCTX_FLAGS_SHOW_SEQUENCE)
390 {
391 if (BIO_printf(out, "%*s}\n", indent, "") <= 0)
392 return 0;
152 } 393 }
153 BIO_printf(out, "%*s}\n", indent, "");
154 } else
155 BIO_printf(out, "%*s%s OF %s ABSENT\n", indent, "", tname, tt->field_name);
156 return 1; 394 return 1;
395 }
396 return asn1_item_print_ctx(out, fld, indent, ASN1_ITEM_ptr(tt->item),
397 fname, sname, 0, pctx);
157 } 398 }
158 return asn1_item_print_nm(out, fld, indent, tt->item, tt->field_name); 399
159} 400static int asn1_print_fsname(BIO *out, int indent,
160 401 const char *fname, const char *sname,
161static int asn1_primitive_print(BIO *out, void *fld, long utype, int indent, const char *name) 402 const ASN1_PCTX *pctx)
162{ 403 {
163 ASN1_STRING *str = fld; 404 static char spaces[] = " ";
164 if(fld) { 405 const int nspaces = sizeof(spaces) - 1;
165 if(utype == V_ASN1_BOOLEAN) { 406
166 int *bool = fld; 407#if 0
167if(*bool == -1) printf("BOOL MISSING\n"); 408 if (!sname && !fname)
168 BIO_printf(out, "%*s%s:%s", indent, "", "BOOLEAN", *bool ? "TRUE" : "FALSE"); 409 return 1;
169 } else if((utype == V_ASN1_INTEGER) 410#endif
170 || (utype == V_ASN1_ENUMERATED)) { 411
171 char *s, *nm; 412 while (indent > nspaces)
172 s = i2s_ASN1_INTEGER(NULL, fld); 413 {
173 if(utype == V_ASN1_INTEGER) nm = "INTEGER"; 414 if (BIO_write(out, spaces, nspaces) != nspaces)
174 else nm = "ENUMERATED"; 415 return 0;
175 BIO_printf(out, "%*s%s:%s", indent, "", nm, s); 416 indent -= nspaces;
176 OPENSSL_free(s); 417 }
177 } else if(utype == V_ASN1_NULL) { 418 if (BIO_write(out, spaces, indent) != indent)
178 BIO_printf(out, "%*s%s", indent, "", "NULL"); 419 return 0;
179 } else if(utype == V_ASN1_UTCTIME) { 420 if (pctx->flags & ASN1_PCTX_FLAGS_NO_STRUCT_NAME)
180 BIO_printf(out, "%*s%s:%s:", indent, "", name, "UTCTIME"); 421 sname = NULL;
181 ASN1_UTCTIME_print(out, str); 422 if (pctx->flags & ASN1_PCTX_FLAGS_NO_FIELD_NAME)
182 } else if(utype == V_ASN1_GENERALIZEDTIME) { 423 fname = NULL;
183 BIO_printf(out, "%*s%s:%s:", indent, "", name, "GENERALIZEDTIME"); 424 if (!sname && !fname)
184 ASN1_GENERALIZEDTIME_print(out, str); 425 return 1;
185 } else if(utype == V_ASN1_OBJECT) { 426 if (fname)
186 char objbuf[80], *ln; 427 {
187 ln = OBJ_nid2ln(OBJ_obj2nid(fld)); 428 if (BIO_puts(out, fname) <= 0)
188 if(!ln) ln = ""; 429 return 0;
189 OBJ_obj2txt(objbuf, sizeof objbuf, fld, 1);
190 BIO_printf(out, "%*s%s:%s (%s)", indent, "", "OBJECT", ln, objbuf);
191 } else {
192 BIO_printf(out, "%*s%s:", indent, "", name);
193 ASN1_STRING_print_ex(out, str, ASN1_STRFLGS_DUMP_UNKNOWN|ASN1_STRFLGS_SHOW_TYPE);
194 } 430 }
195 BIO_printf(out, "\n"); 431 if (sname)
196 } else BIO_printf(out, "%*s%s [ABSENT]\n", indent, "", name); 432 {
433 if (fname)
434 {
435 if (BIO_printf(out, " (%s)", sname) <= 0)
436 return 0;
437 }
438 else
439 {
440 if (BIO_puts(out, sname) <= 0)
441 return 0;
442 }
443 }
444 if (BIO_write(out, ": ", 2) != 2)
445 return 0;
197 return 1; 446 return 1;
198} 447 }
448
449static int asn1_print_boolean_ctx(BIO *out, const int bool,
450 const ASN1_PCTX *pctx)
451 {
452 const char *str;
453 switch (bool)
454 {
455 case -1:
456 str = "BOOL ABSENT";
457 break;
458
459 case 0:
460 str = "FALSE";
461 break;
462
463 default:
464 str = "TRUE";
465 break;
466
467 }
468
469 if (BIO_puts(out, str) <= 0)
470 return 0;
471 return 1;
472
473 }
474
475static int asn1_print_integer_ctx(BIO *out, ASN1_INTEGER *str,
476 const ASN1_PCTX *pctx)
477 {
478 char *s;
479 int ret = 1;
480 s = i2s_ASN1_INTEGER(NULL, str);
481 if (BIO_puts(out, s) <= 0)
482 ret = 0;
483 OPENSSL_free(s);
484 return ret;
485 }
486
487static int asn1_print_oid_ctx(BIO *out, const ASN1_OBJECT *oid,
488 const ASN1_PCTX *pctx)
489 {
490 char objbuf[80];
491 const char *ln;
492 ln = OBJ_nid2ln(OBJ_obj2nid(oid));
493 if(!ln)
494 ln = "";
495 OBJ_obj2txt(objbuf, sizeof objbuf, oid, 1);
496 if (BIO_printf(out, "%s (%s)", ln, objbuf) <= 0)
497 return 0;
498 return 1;
499 }
500
501static int asn1_print_obstring_ctx(BIO *out, ASN1_STRING *str, int indent,
502 const ASN1_PCTX *pctx)
503 {
504 if (str->type == V_ASN1_BIT_STRING)
505 {
506 if (BIO_printf(out, " (%ld unused bits)\n",
507 str->flags & 0x7) <= 0)
508 return 0;
509 }
510 else if (BIO_puts(out, "\n") <= 0)
511 return 0;
512 if ((str->length > 0)
513 && BIO_dump_indent(out, (char *)str->data, str->length,
514 indent + 2) <= 0)
515 return 0;
516 return 1;
517 }
518
519static int asn1_primitive_print(BIO *out, ASN1_VALUE **fld,
520 const ASN1_ITEM *it, int indent,
521 const char *fname, const char *sname,
522 const ASN1_PCTX *pctx)
523 {
524 long utype;
525 ASN1_STRING *str;
526 int ret = 1, needlf = 1;
527 const char *pname;
528 const ASN1_PRIMITIVE_FUNCS *pf;
529 pf = it->funcs;
530 if (!asn1_print_fsname(out, indent, fname, sname, pctx))
531 return 0;
532 if (pf && pf->prim_print)
533 return pf->prim_print(out, fld, it, indent, pctx);
534 str = (ASN1_STRING *)*fld;
535 if (it->itype == ASN1_ITYPE_MSTRING)
536 utype = str->type & ~V_ASN1_NEG;
537 else
538 utype = it->utype;
539 if (utype == V_ASN1_ANY)
540 {
541 ASN1_TYPE *atype = (ASN1_TYPE *)*fld;
542 utype = atype->type;
543 fld = &atype->value.asn1_value;
544 str = (ASN1_STRING *)*fld;
545 if (pctx->flags & ASN1_PCTX_FLAGS_NO_ANY_TYPE)
546 pname = NULL;
547 else
548 pname = ASN1_tag2str(utype);
549 }
550 else
551 {
552 if (pctx->flags & ASN1_PCTX_FLAGS_SHOW_TYPE)
553 pname = ASN1_tag2str(utype);
554 else
555 pname = NULL;
556 }
557
558 if (utype == V_ASN1_NULL)
559 {
560 if (BIO_puts(out, "NULL\n") <= 0)
561 return 0;
562 return 1;
563 }
564
565 if (pname)
566 {
567 if (BIO_puts(out, pname) <= 0)
568 return 0;
569 if (BIO_puts(out, ":") <= 0)
570 return 0;
571 }
572
573 switch (utype)
574 {
575 case V_ASN1_BOOLEAN:
576 {
577 int bool = *(int *)fld;
578 if (bool == -1)
579 bool = it->size;
580 ret = asn1_print_boolean_ctx(out, bool, pctx);
581 }
582 break;
583
584 case V_ASN1_INTEGER:
585 case V_ASN1_ENUMERATED:
586 ret = asn1_print_integer_ctx(out, str, pctx);
587 break;
588
589 case V_ASN1_UTCTIME:
590 ret = ASN1_UTCTIME_print(out, str);
591 break;
592
593 case V_ASN1_GENERALIZEDTIME:
594 ret = ASN1_GENERALIZEDTIME_print(out, str);
595 break;
596
597 case V_ASN1_OBJECT:
598 ret = asn1_print_oid_ctx(out, (const ASN1_OBJECT *)*fld, pctx);
599 break;
600
601 case V_ASN1_OCTET_STRING:
602 case V_ASN1_BIT_STRING:
603 ret = asn1_print_obstring_ctx(out, str, indent, pctx);
604 needlf = 0;
605 break;
606
607 case V_ASN1_SEQUENCE:
608 case V_ASN1_SET:
609 case V_ASN1_OTHER:
610 if (BIO_puts(out, "\n") <= 0)
611 return 0;
612 if (ASN1_parse_dump(out, str->data, str->length,
613 indent, 0) <= 0)
614 ret = 0;
615 needlf = 0;
616 break;
617
618 default:
619 ret = ASN1_STRING_print_ex(out, str, pctx->str_flags);
620
621 }
622 if (!ret)
623 return 0;
624 if (needlf && BIO_puts(out, "\n") <= 0)
625 return 0;
626 return 1;
627 }
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_typ.c b/src/lib/libssl/src/crypto/asn1/tasn_typ.c
index 6252213d15..6fb1c372da 100644
--- a/src/lib/libssl/src/crypto/asn1/tasn_typ.c
+++ b/src/lib/libssl/src/crypto/asn1/tasn_typ.c
@@ -135,3 +135,14 @@ IMPLEMENT_ASN1_TYPE_ex(ASN1_FBOOLEAN, ASN1_BOOLEAN, 0)
135/* Special, OCTET STRING with indefinite length constructed support */ 135/* Special, OCTET STRING with indefinite length constructed support */
136 136
137IMPLEMENT_ASN1_TYPE_ex(ASN1_OCTET_STRING_NDEF, ASN1_OCTET_STRING, ASN1_TFLG_NDEF) 137IMPLEMENT_ASN1_TYPE_ex(ASN1_OCTET_STRING_NDEF, ASN1_OCTET_STRING, ASN1_TFLG_NDEF)
138
139ASN1_ITEM_TEMPLATE(ASN1_SEQUENCE_ANY) =
140 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, ASN1_SEQUENCE_ANY, ASN1_ANY)
141ASN1_ITEM_TEMPLATE_END(ASN1_SEQUENCE_ANY)
142
143ASN1_ITEM_TEMPLATE(ASN1_SET_ANY) =
144 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SET_OF, 0, ASN1_SET_ANY, ASN1_ANY)
145ASN1_ITEM_TEMPLATE_END(ASN1_SET_ANY)
146
147IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY)
148IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(ASN1_SEQUENCE_ANY, ASN1_SET_ANY, ASN1_SET_ANY)
diff --git a/src/lib/libssl/src/crypto/asn1/x_crl.c b/src/lib/libssl/src/crypto/asn1/x_crl.c
index 70d56a67f2..c51c690ba9 100644
--- a/src/lib/libssl/src/crypto/asn1/x_crl.c
+++ b/src/lib/libssl/src/crypto/asn1/x_crl.c
@@ -58,11 +58,14 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "asn1_locl.h"
61#include <openssl/asn1t.h> 62#include <openssl/asn1t.h>
62#include <openssl/x509.h> 63#include <openssl/x509.h>
64#include <openssl/x509v3.h>
63 65
64static int X509_REVOKED_cmp(const X509_REVOKED * const *a, 66static int X509_REVOKED_cmp(const X509_REVOKED * const *a,
65 const X509_REVOKED * const *b); 67 const X509_REVOKED * const *b);
68static void setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp);
66 69
67ASN1_SEQUENCE(X509_REVOKED) = { 70ASN1_SEQUENCE(X509_REVOKED) = {
68 ASN1_SIMPLE(X509_REVOKED,serialNumber, ASN1_INTEGER), 71 ASN1_SIMPLE(X509_REVOKED,serialNumber, ASN1_INTEGER),
@@ -70,11 +73,26 @@ ASN1_SEQUENCE(X509_REVOKED) = {
70 ASN1_SEQUENCE_OF_OPT(X509_REVOKED,extensions, X509_EXTENSION) 73 ASN1_SEQUENCE_OF_OPT(X509_REVOKED,extensions, X509_EXTENSION)
71} ASN1_SEQUENCE_END(X509_REVOKED) 74} ASN1_SEQUENCE_END(X509_REVOKED)
72 75
76static int def_crl_verify(X509_CRL *crl, EVP_PKEY *r);
77static int def_crl_lookup(X509_CRL *crl,
78 X509_REVOKED **ret, ASN1_INTEGER *serial, X509_NAME *issuer);
79
80static X509_CRL_METHOD int_crl_meth =
81 {
82 0,
83 0,0,
84 def_crl_lookup,
85 def_crl_verify
86 };
87
88static const X509_CRL_METHOD *default_crl_method = &int_crl_meth;
89
73/* The X509_CRL_INFO structure needs a bit of customisation. 90/* The X509_CRL_INFO structure needs a bit of customisation.
74 * Since we cache the original encoding the signature wont be affected by 91 * Since we cache the original encoding the signature wont be affected by
75 * reordering of the revoked field. 92 * reordering of the revoked field.
76 */ 93 */
77static int crl_inf_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 94static int crl_inf_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
95 void *exarg)
78{ 96{
79 X509_CRL_INFO *a = (X509_CRL_INFO *)*pval; 97 X509_CRL_INFO *a = (X509_CRL_INFO *)*pval;
80 98
@@ -101,7 +119,237 @@ ASN1_SEQUENCE_enc(X509_CRL_INFO, enc, crl_inf_cb) = {
101 ASN1_EXP_SEQUENCE_OF_OPT(X509_CRL_INFO, extensions, X509_EXTENSION, 0) 119 ASN1_EXP_SEQUENCE_OF_OPT(X509_CRL_INFO, extensions, X509_EXTENSION, 0)
102} ASN1_SEQUENCE_END_enc(X509_CRL_INFO, X509_CRL_INFO) 120} ASN1_SEQUENCE_END_enc(X509_CRL_INFO, X509_CRL_INFO)
103 121
104ASN1_SEQUENCE_ref(X509_CRL, 0, CRYPTO_LOCK_X509_CRL) = { 122/* Set CRL entry issuer according to CRL certificate issuer extension.
123 * Check for unhandled critical CRL entry extensions.
124 */
125
126static int crl_set_issuers(X509_CRL *crl)
127 {
128
129 int i, j;
130 GENERAL_NAMES *gens, *gtmp;
131 STACK_OF(X509_REVOKED) *revoked;
132
133 revoked = X509_CRL_get_REVOKED(crl);
134
135 gens = NULL;
136 for (i = 0; i < sk_X509_REVOKED_num(revoked); i++)
137 {
138 X509_REVOKED *rev = sk_X509_REVOKED_value(revoked, i);
139 STACK_OF(X509_EXTENSION) *exts;
140 ASN1_ENUMERATED *reason;
141 X509_EXTENSION *ext;
142 gtmp = X509_REVOKED_get_ext_d2i(rev,
143 NID_certificate_issuer,
144 &j, NULL);
145 if (!gtmp && (j != -1))
146 {
147 crl->flags |= EXFLAG_INVALID;
148 return 1;
149 }
150
151 if (gtmp)
152 {
153 gens = gtmp;
154 if (!crl->issuers)
155 {
156 crl->issuers = sk_GENERAL_NAMES_new_null();
157 if (!crl->issuers)
158 return 0;
159 }
160 if (!sk_GENERAL_NAMES_push(crl->issuers, gtmp))
161 return 0;
162 }
163 rev->issuer = gens;
164
165 reason = X509_REVOKED_get_ext_d2i(rev, NID_crl_reason,
166 &j, NULL);
167 if (!reason && (j != -1))
168 {
169 crl->flags |= EXFLAG_INVALID;
170 return 1;
171 }
172
173 if (reason)
174 {
175 rev->reason = ASN1_ENUMERATED_get(reason);
176 ASN1_ENUMERATED_free(reason);
177 }
178 else
179 rev->reason = CRL_REASON_NONE;
180
181 /* Check for critical CRL entry extensions */
182
183 exts = rev->extensions;
184
185 for (j = 0; j < sk_X509_EXTENSION_num(exts); j++)
186 {
187 ext = sk_X509_EXTENSION_value(exts, j);
188 if (ext->critical > 0)
189 {
190 if (OBJ_obj2nid(ext->object) ==
191 NID_certificate_issuer)
192 continue;
193 crl->flags |= EXFLAG_CRITICAL;
194 break;
195 }
196 }
197
198
199 }
200
201 return 1;
202
203 }
204
205/* The X509_CRL structure needs a bit of customisation. Cache some extensions
206 * and hash of the whole CRL.
207 */
208static int crl_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
209 void *exarg)
210 {
211 X509_CRL *crl = (X509_CRL *)*pval;
212 STACK_OF(X509_EXTENSION) *exts;
213 X509_EXTENSION *ext;
214 int idx;
215
216 switch(operation)
217 {
218 case ASN1_OP_NEW_POST:
219 crl->idp = NULL;
220 crl->akid = NULL;
221 crl->flags = 0;
222 crl->idp_flags = 0;
223 crl->idp_reasons = CRLDP_ALL_REASONS;
224 crl->meth = default_crl_method;
225 crl->meth_data = NULL;
226 crl->issuers = NULL;
227 crl->crl_number = NULL;
228 crl->base_crl_number = NULL;
229 break;
230
231 case ASN1_OP_D2I_POST:
232#ifndef OPENSSL_NO_SHA
233 X509_CRL_digest(crl, EVP_sha1(), crl->sha1_hash, NULL);
234#endif
235 crl->idp = X509_CRL_get_ext_d2i(crl,
236 NID_issuing_distribution_point, NULL, NULL);
237 if (crl->idp)
238 setup_idp(crl, crl->idp);
239
240 crl->akid = X509_CRL_get_ext_d2i(crl,
241 NID_authority_key_identifier, NULL, NULL);
242
243 crl->crl_number = X509_CRL_get_ext_d2i(crl,
244 NID_crl_number, NULL, NULL);
245
246 crl->base_crl_number = X509_CRL_get_ext_d2i(crl,
247 NID_delta_crl, NULL, NULL);
248 /* Delta CRLs must have CRL number */
249 if (crl->base_crl_number && !crl->crl_number)
250 crl->flags |= EXFLAG_INVALID;
251
252 /* See if we have any unhandled critical CRL extensions and
253 * indicate this in a flag. We only currently handle IDP so
254 * anything else critical sets the flag.
255 *
256 * This code accesses the X509_CRL structure directly:
257 * applications shouldn't do this.
258 */
259
260 exts = crl->crl->extensions;
261
262 for (idx = 0; idx < sk_X509_EXTENSION_num(exts); idx++)
263 {
264 int nid;
265 ext = sk_X509_EXTENSION_value(exts, idx);
266 nid = OBJ_obj2nid(ext->object);
267 if (nid == NID_freshest_crl)
268 crl->flags |= EXFLAG_FRESHEST;
269 if (ext->critical > 0)
270 {
271 /* We handle IDP and deltas */
272 if ((nid == NID_issuing_distribution_point)
273 || (nid == NID_delta_crl))
274 break;;
275 crl->flags |= EXFLAG_CRITICAL;
276 break;
277 }
278 }
279
280
281 if (!crl_set_issuers(crl))
282 return 0;
283
284 if (crl->meth->crl_init)
285 {
286 if (crl->meth->crl_init(crl) == 0)
287 return 0;
288 }
289 break;
290
291 case ASN1_OP_FREE_POST:
292 if (crl->meth->crl_free)
293 {
294 if (!crl->meth->crl_free(crl))
295 return 0;
296 }
297 if (crl->akid)
298 AUTHORITY_KEYID_free(crl->akid);
299 if (crl->idp)
300 ISSUING_DIST_POINT_free(crl->idp);
301 ASN1_INTEGER_free(crl->crl_number);
302 ASN1_INTEGER_free(crl->base_crl_number);
303 sk_GENERAL_NAMES_pop_free(crl->issuers, GENERAL_NAMES_free);
304 break;
305 }
306 return 1;
307 }
308
309/* Convert IDP into a more convenient form */
310
311static void setup_idp(X509_CRL *crl, ISSUING_DIST_POINT *idp)
312 {
313 int idp_only = 0;
314 /* Set various flags according to IDP */
315 crl->idp_flags |= IDP_PRESENT;
316 if (idp->onlyuser > 0)
317 {
318 idp_only++;
319 crl->idp_flags |= IDP_ONLYUSER;
320 }
321 if (idp->onlyCA > 0)
322 {
323 idp_only++;
324 crl->idp_flags |= IDP_ONLYCA;
325 }
326 if (idp->onlyattr > 0)
327 {
328 idp_only++;
329 crl->idp_flags |= IDP_ONLYATTR;
330 }
331
332 if (idp_only > 1)
333 crl->idp_flags |= IDP_INVALID;
334
335 if (idp->indirectCRL > 0)
336 crl->idp_flags |= IDP_INDIRECT;
337
338 if (idp->onlysomereasons)
339 {
340 crl->idp_flags |= IDP_REASONS;
341 if (idp->onlysomereasons->length > 0)
342 crl->idp_reasons = idp->onlysomereasons->data[0];
343 if (idp->onlysomereasons->length > 1)
344 crl->idp_reasons |=
345 (idp->onlysomereasons->data[1] << 8);
346 crl->idp_reasons &= CRLDP_ALL_REASONS;
347 }
348
349 DIST_POINT_set_dpname(idp->distpoint, X509_CRL_get_issuer(crl));
350 }
351
352ASN1_SEQUENCE_ref(X509_CRL, crl_cb, CRYPTO_LOCK_X509_CRL) = {
105 ASN1_SIMPLE(X509_CRL, crl, X509_CRL_INFO), 353 ASN1_SIMPLE(X509_CRL, crl, X509_CRL_INFO),
106 ASN1_SIMPLE(X509_CRL, sig_alg, X509_ALGOR), 354 ASN1_SIMPLE(X509_CRL, sig_alg, X509_ALGOR),
107 ASN1_SIMPLE(X509_CRL, signature, ASN1_BIT_STRING) 355 ASN1_SIMPLE(X509_CRL, signature, ASN1_BIT_STRING)
@@ -134,6 +382,145 @@ int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev)
134 return 1; 382 return 1;
135} 383}
136 384
385int X509_CRL_verify(X509_CRL *crl, EVP_PKEY *r)
386 {
387 if (crl->meth->crl_verify)
388 return crl->meth->crl_verify(crl, r);
389 return 0;
390 }
391
392int X509_CRL_get0_by_serial(X509_CRL *crl,
393 X509_REVOKED **ret, ASN1_INTEGER *serial)
394 {
395 if (crl->meth->crl_lookup)
396 return crl->meth->crl_lookup(crl, ret, serial, NULL);
397 return 0;
398 }
399
400int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x)
401 {
402 if (crl->meth->crl_lookup)
403 return crl->meth->crl_lookup(crl, ret,
404 X509_get_serialNumber(x),
405 X509_get_issuer_name(x));
406 return 0;
407 }
408
409static int def_crl_verify(X509_CRL *crl, EVP_PKEY *r)
410 {
411 return(ASN1_item_verify(ASN1_ITEM_rptr(X509_CRL_INFO),
412 crl->sig_alg, crl->signature,crl->crl,r));
413 }
414
415static int crl_revoked_issuer_match(X509_CRL *crl, X509_NAME *nm,
416 X509_REVOKED *rev)
417 {
418 int i;
419
420 if (!rev->issuer)
421 {
422 if (!nm)
423 return 1;
424 if (!X509_NAME_cmp(nm, X509_CRL_get_issuer(crl)))
425 return 1;
426 return 0;
427 }
428
429 if (!nm)
430 nm = X509_CRL_get_issuer(crl);
431
432 for (i = 0; i < sk_GENERAL_NAME_num(rev->issuer); i++)
433 {
434 GENERAL_NAME *gen = sk_GENERAL_NAME_value(rev->issuer, i);
435 if (gen->type != GEN_DIRNAME)
436 continue;
437 if (!X509_NAME_cmp(nm, gen->d.directoryName))
438 return 1;
439 }
440 return 0;
441
442 }
443
444static int def_crl_lookup(X509_CRL *crl,
445 X509_REVOKED **ret, ASN1_INTEGER *serial, X509_NAME *issuer)
446 {
447 X509_REVOKED rtmp, *rev;
448 int idx;
449 rtmp.serialNumber = serial;
450 /* Sort revoked into serial number order if not already sorted.
451 * Do this under a lock to avoid race condition.
452 */
453 if (!sk_X509_REVOKED_is_sorted(crl->crl->revoked))
454 {
455 CRYPTO_w_lock(CRYPTO_LOCK_X509_CRL);
456 sk_X509_REVOKED_sort(crl->crl->revoked);
457 CRYPTO_w_unlock(CRYPTO_LOCK_X509_CRL);
458 }
459 idx = sk_X509_REVOKED_find(crl->crl->revoked, &rtmp);
460 if(idx < 0)
461 return 0;
462 /* Need to look for matching name */
463 for(;idx < sk_X509_REVOKED_num(crl->crl->revoked); idx++)
464 {
465 rev = sk_X509_REVOKED_value(crl->crl->revoked, idx);
466 if (ASN1_INTEGER_cmp(rev->serialNumber, serial))
467 return 0;
468 if (crl_revoked_issuer_match(crl, issuer, rev))
469 {
470 if (ret)
471 *ret = rev;
472 if (rev->reason == CRL_REASON_REMOVE_FROM_CRL)
473 return 2;
474 return 1;
475 }
476 }
477 return 0;
478 }
479
480void X509_CRL_set_default_method(const X509_CRL_METHOD *meth)
481 {
482 if (meth == NULL)
483 default_crl_method = &int_crl_meth;
484 else
485 default_crl_method = meth;
486 }
487
488X509_CRL_METHOD *X509_CRL_METHOD_new(
489 int (*crl_init)(X509_CRL *crl),
490 int (*crl_free)(X509_CRL *crl),
491 int (*crl_lookup)(X509_CRL *crl, X509_REVOKED **ret,
492 ASN1_INTEGER *ser, X509_NAME *issuer),
493 int (*crl_verify)(X509_CRL *crl, EVP_PKEY *pk))
494 {
495 X509_CRL_METHOD *m;
496 m = OPENSSL_malloc(sizeof(X509_CRL_METHOD));
497 if (!m)
498 return NULL;
499 m->crl_init = crl_init;
500 m->crl_free = crl_free;
501 m->crl_lookup = crl_lookup;
502 m->crl_verify = crl_verify;
503 m->flags = X509_CRL_METHOD_DYNAMIC;
504 return m;
505 }
506
507void X509_CRL_METHOD_free(X509_CRL_METHOD *m)
508 {
509 if (!(m->flags & X509_CRL_METHOD_DYNAMIC))
510 return;
511 OPENSSL_free(m);
512 }
513
514void X509_CRL_set_meth_data(X509_CRL *crl, void *dat)
515 {
516 crl->meth_data = dat;
517 }
518
519void *X509_CRL_get_meth_data(X509_CRL *crl)
520 {
521 return crl->meth_data;
522 }
523
137IMPLEMENT_STACK_OF(X509_REVOKED) 524IMPLEMENT_STACK_OF(X509_REVOKED)
138IMPLEMENT_ASN1_SET_OF(X509_REVOKED) 525IMPLEMENT_ASN1_SET_OF(X509_REVOKED)
139IMPLEMENT_STACK_OF(X509_CRL) 526IMPLEMENT_STACK_OF(X509_CRL)
diff --git a/src/lib/libssl/src/crypto/asn1/x_long.c b/src/lib/libssl/src/crypto/asn1/x_long.c
index bf35457c1f..75317418e1 100644
--- a/src/lib/libssl/src/crypto/asn1/x_long.c
+++ b/src/lib/libssl/src/crypto/asn1/x_long.c
@@ -71,6 +71,7 @@ static void long_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
71 71
72static int long_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it); 72static int long_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype, const ASN1_ITEM *it);
73static int long_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it); 73static int long_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it);
74static int long_print(BIO *out, ASN1_VALUE **pval, const ASN1_ITEM *it, int indent, const ASN1_PCTX *pctx);
74 75
75static ASN1_PRIMITIVE_FUNCS long_pf = { 76static ASN1_PRIMITIVE_FUNCS long_pf = {
76 NULL, 0, 77 NULL, 0,
@@ -78,7 +79,8 @@ static ASN1_PRIMITIVE_FUNCS long_pf = {
78 long_free, 79 long_free,
79 long_free, /* Clear should set to initial value */ 80 long_free, /* Clear should set to initial value */
80 long_c2i, 81 long_c2i,
81 long_i2c 82 long_i2c,
83 long_print
82}; 84};
83 85
84ASN1_ITEM_start(LONG) 86ASN1_ITEM_start(LONG)
@@ -169,3 +171,9 @@ static int long_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
169 memcpy(cp, &ltmp, sizeof(long)); 171 memcpy(cp, &ltmp, sizeof(long));
170 return 1; 172 return 1;
171} 173}
174
175static int long_print(BIO *out, ASN1_VALUE **pval, const ASN1_ITEM *it,
176 int indent, const ASN1_PCTX *pctx)
177 {
178 return BIO_printf(out, "%ld\n", *(long *)pval);
179 }
diff --git a/src/lib/libssl/src/crypto/asn1/x_name.c b/src/lib/libssl/src/crypto/asn1/x_name.c
index 04380abc3f..caa4409feb 100644
--- a/src/lib/libssl/src/crypto/asn1/x_name.c
+++ b/src/lib/libssl/src/crypto/asn1/x_name.c
@@ -57,18 +57,36 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <ctype.h>
60#include "cryptlib.h" 61#include "cryptlib.h"
61#include <openssl/asn1t.h> 62#include <openssl/asn1t.h>
62#include <openssl/x509.h> 63#include <openssl/x509.h>
64#include "asn1_locl.h"
63 65
64static int x509_name_ex_d2i(ASN1_VALUE **val, const unsigned char **in, long len, const ASN1_ITEM *it, 66typedef STACK_OF(X509_NAME_ENTRY) STACK_OF_X509_NAME_ENTRY;
65 int tag, int aclass, char opt, ASN1_TLC *ctx); 67DECLARE_STACK_OF(STACK_OF_X509_NAME_ENTRY)
66 68
67static int x509_name_ex_i2d(ASN1_VALUE **val, unsigned char **out, const ASN1_ITEM *it, int tag, int aclass); 69static int x509_name_ex_d2i(ASN1_VALUE **val,
70 const unsigned char **in, long len,
71 const ASN1_ITEM *it,
72 int tag, int aclass, char opt, ASN1_TLC *ctx);
73
74static int x509_name_ex_i2d(ASN1_VALUE **val, unsigned char **out,
75 const ASN1_ITEM *it, int tag, int aclass);
68static int x509_name_ex_new(ASN1_VALUE **val, const ASN1_ITEM *it); 76static int x509_name_ex_new(ASN1_VALUE **val, const ASN1_ITEM *it);
69static void x509_name_ex_free(ASN1_VALUE **val, const ASN1_ITEM *it); 77static void x509_name_ex_free(ASN1_VALUE **val, const ASN1_ITEM *it);
70 78
71static int x509_name_encode(X509_NAME *a); 79static int x509_name_encode(X509_NAME *a);
80static int x509_name_canon(X509_NAME *a);
81static int asn1_string_canon(ASN1_STRING *out, ASN1_STRING *in);
82static int i2d_name_canon(STACK_OF(STACK_OF_X509_NAME_ENTRY) *intname,
83 unsigned char **in);
84
85
86static int x509_name_ex_print(BIO *out, ASN1_VALUE **pval,
87 int indent,
88 const char *fname,
89 const ASN1_PCTX *pctx);
72 90
73ASN1_SEQUENCE(X509_NAME_ENTRY) = { 91ASN1_SEQUENCE(X509_NAME_ENTRY) = {
74 ASN1_SIMPLE(X509_NAME_ENTRY, object, ASN1_OBJECT), 92 ASN1_SIMPLE(X509_NAME_ENTRY, object, ASN1_OBJECT),
@@ -102,7 +120,8 @@ const ASN1_EXTERN_FUNCS x509_name_ff = {
102 x509_name_ex_free, 120 x509_name_ex_free,
103 0, /* Default clear behaviour is OK */ 121 0, /* Default clear behaviour is OK */
104 x509_name_ex_d2i, 122 x509_name_ex_d2i,
105 x509_name_ex_i2d 123 x509_name_ex_i2d,
124 x509_name_ex_print
106}; 125};
107 126
108IMPLEMENT_EXTERN_ASN1(X509_NAME, V_ASN1_SEQUENCE, x509_name_ff) 127IMPLEMENT_EXTERN_ASN1(X509_NAME, V_ASN1_SEQUENCE, x509_name_ff)
@@ -118,6 +137,8 @@ static int x509_name_ex_new(ASN1_VALUE **val, const ASN1_ITEM *it)
118 if ((ret->entries=sk_X509_NAME_ENTRY_new_null()) == NULL) 137 if ((ret->entries=sk_X509_NAME_ENTRY_new_null()) == NULL)
119 goto memerr; 138 goto memerr;
120 if((ret->bytes = BUF_MEM_new()) == NULL) goto memerr; 139 if((ret->bytes = BUF_MEM_new()) == NULL) goto memerr;
140 ret->canon_enc = NULL;
141 ret->canon_enclen = 0;
121 ret->modified=1; 142 ret->modified=1;
122 *val = (ASN1_VALUE *)ret; 143 *val = (ASN1_VALUE *)ret;
123 return 1; 144 return 1;
@@ -142,25 +163,19 @@ static void x509_name_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it)
142 163
143 BUF_MEM_free(a->bytes); 164 BUF_MEM_free(a->bytes);
144 sk_X509_NAME_ENTRY_pop_free(a->entries,X509_NAME_ENTRY_free); 165 sk_X509_NAME_ENTRY_pop_free(a->entries,X509_NAME_ENTRY_free);
166 if (a->canon_enc)
167 OPENSSL_free(a->canon_enc);
145 OPENSSL_free(a); 168 OPENSSL_free(a);
146 *pval = NULL; 169 *pval = NULL;
147} 170}
148 171
149/* Used with sk_pop_free() to free up the internal representation. 172static int x509_name_ex_d2i(ASN1_VALUE **val,
150 * NB: we only free the STACK and not its contents because it is 173 const unsigned char **in, long len, const ASN1_ITEM *it,
151 * already present in the X509_NAME structure. 174 int tag, int aclass, char opt, ASN1_TLC *ctx)
152 */
153
154static void sk_internal_free(void *a)
155{
156 sk_free(a);
157}
158
159static int x509_name_ex_d2i(ASN1_VALUE **val, const unsigned char **in, long len, const ASN1_ITEM *it,
160 int tag, int aclass, char opt, ASN1_TLC *ctx)
161{ 175{
162 const unsigned char *p = *in, *q; 176 const unsigned char *p = *in, *q;
163 union { STACK *s; ASN1_VALUE *a; } intname = {NULL}; 177 union { STACK_OF(STACK_OF_X509_NAME_ENTRY) *s;
178 ASN1_VALUE *a; } intname = {NULL};
164 union { X509_NAME *x; ASN1_VALUE *a; } nm = {NULL}; 179 union { X509_NAME *x; ASN1_VALUE *a; } nm = {NULL};
165 int i, j, ret; 180 int i, j, ret;
166 STACK_OF(X509_NAME_ENTRY) *entries; 181 STACK_OF(X509_NAME_ENTRY) *entries;
@@ -181,8 +196,8 @@ static int x509_name_ex_d2i(ASN1_VALUE **val, const unsigned char **in, long len
181 memcpy(nm.x->bytes->data, q, p - q); 196 memcpy(nm.x->bytes->data, q, p - q);
182 197
183 /* Convert internal representation to X509_NAME structure */ 198 /* Convert internal representation to X509_NAME structure */
184 for(i = 0; i < sk_num(intname.s); i++) { 199 for(i = 0; i < sk_STACK_OF_X509_NAME_ENTRY_num(intname.s); i++) {
185 entries = (STACK_OF(X509_NAME_ENTRY) *)sk_value(intname.s, i); 200 entries = sk_STACK_OF_X509_NAME_ENTRY_value(intname.s, i);
186 for(j = 0; j < sk_X509_NAME_ENTRY_num(entries); j++) { 201 for(j = 0; j < sk_X509_NAME_ENTRY_num(entries); j++) {
187 entry = sk_X509_NAME_ENTRY_value(entries, j); 202 entry = sk_X509_NAME_ENTRY_value(entries, j);
188 entry->set = i; 203 entry->set = i;
@@ -191,7 +206,10 @@ static int x509_name_ex_d2i(ASN1_VALUE **val, const unsigned char **in, long len
191 } 206 }
192 sk_X509_NAME_ENTRY_free(entries); 207 sk_X509_NAME_ENTRY_free(entries);
193 } 208 }
194 sk_free(intname.s); 209 sk_STACK_OF_X509_NAME_ENTRY_free(intname.s);
210 ret = x509_name_canon(nm.x);
211 if (!ret)
212 goto err;
195 nm.x->modified = 0; 213 nm.x->modified = 0;
196 *val = nm.a; 214 *val = nm.a;
197 *in = p; 215 *in = p;
@@ -206,8 +224,12 @@ static int x509_name_ex_i2d(ASN1_VALUE **val, unsigned char **out, const ASN1_IT
206 int ret; 224 int ret;
207 X509_NAME *a = (X509_NAME *)*val; 225 X509_NAME *a = (X509_NAME *)*val;
208 if(a->modified) { 226 if(a->modified) {
209 ret = x509_name_encode((X509_NAME *)a); 227 ret = x509_name_encode(a);
210 if(ret < 0) return ret; 228 if(ret < 0)
229 return ret;
230 ret = x509_name_canon(a);
231 if(ret < 0)
232 return ret;
211 } 233 }
212 ret = a->bytes->length; 234 ret = a->bytes->length;
213 if(out != NULL) { 235 if(out != NULL) {
@@ -217,22 +239,35 @@ static int x509_name_ex_i2d(ASN1_VALUE **val, unsigned char **out, const ASN1_IT
217 return ret; 239 return ret;
218} 240}
219 241
242static void local_sk_X509_NAME_ENTRY_free(STACK_OF(X509_NAME_ENTRY) *ne)
243 {
244 sk_X509_NAME_ENTRY_free(ne);
245 }
246
247static void local_sk_X509_NAME_ENTRY_pop_free(STACK_OF(X509_NAME_ENTRY) *ne)
248 {
249 sk_X509_NAME_ENTRY_pop_free(ne, X509_NAME_ENTRY_free);
250 }
251
220static int x509_name_encode(X509_NAME *a) 252static int x509_name_encode(X509_NAME *a)
221{ 253{
222 union { STACK *s; ASN1_VALUE *a; } intname = {NULL}; 254 union { STACK_OF(STACK_OF_X509_NAME_ENTRY) *s;
255 ASN1_VALUE *a; } intname = {NULL};
223 int len; 256 int len;
224 unsigned char *p; 257 unsigned char *p;
225 STACK_OF(X509_NAME_ENTRY) *entries = NULL; 258 STACK_OF(X509_NAME_ENTRY) *entries = NULL;
226 X509_NAME_ENTRY *entry; 259 X509_NAME_ENTRY *entry;
227 int i, set = -1; 260 int i, set = -1;
228 intname.s = sk_new_null(); 261 intname.s = sk_STACK_OF_X509_NAME_ENTRY_new_null();
229 if(!intname.s) goto memerr; 262 if(!intname.s) goto memerr;
230 for(i = 0; i < sk_X509_NAME_ENTRY_num(a->entries); i++) { 263 for(i = 0; i < sk_X509_NAME_ENTRY_num(a->entries); i++) {
231 entry = sk_X509_NAME_ENTRY_value(a->entries, i); 264 entry = sk_X509_NAME_ENTRY_value(a->entries, i);
232 if(entry->set != set) { 265 if(entry->set != set) {
233 entries = sk_X509_NAME_ENTRY_new_null(); 266 entries = sk_X509_NAME_ENTRY_new_null();
234 if(!entries) goto memerr; 267 if(!entries) goto memerr;
235 if(!sk_push(intname.s, (char *)entries)) goto memerr; 268 if(!sk_STACK_OF_X509_NAME_ENTRY_push(intname.s,
269 entries))
270 goto memerr;
236 set = entry->set; 271 set = entry->set;
237 } 272 }
238 if(!sk_X509_NAME_ENTRY_push(entries, entry)) goto memerr; 273 if(!sk_X509_NAME_ENTRY_push(entries, entry)) goto memerr;
@@ -243,15 +278,222 @@ static int x509_name_encode(X509_NAME *a)
243 p=(unsigned char *)a->bytes->data; 278 p=(unsigned char *)a->bytes->data;
244 ASN1_item_ex_i2d(&intname.a, 279 ASN1_item_ex_i2d(&intname.a,
245 &p, ASN1_ITEM_rptr(X509_NAME_INTERNAL), -1, -1); 280 &p, ASN1_ITEM_rptr(X509_NAME_INTERNAL), -1, -1);
246 sk_pop_free(intname.s, sk_internal_free); 281 sk_STACK_OF_X509_NAME_ENTRY_pop_free(intname.s,
282 local_sk_X509_NAME_ENTRY_free);
247 a->modified = 0; 283 a->modified = 0;
248 return len; 284 return len;
249 memerr: 285memerr:
250 sk_pop_free(intname.s, sk_internal_free); 286 sk_STACK_OF_X509_NAME_ENTRY_pop_free(intname.s,
287 local_sk_X509_NAME_ENTRY_free);
251 ASN1err(ASN1_F_X509_NAME_ENCODE, ERR_R_MALLOC_FAILURE); 288 ASN1err(ASN1_F_X509_NAME_ENCODE, ERR_R_MALLOC_FAILURE);
252 return -1; 289 return -1;
253} 290}
254 291
292static int x509_name_ex_print(BIO *out, ASN1_VALUE **pval,
293 int indent,
294 const char *fname,
295 const ASN1_PCTX *pctx)
296 {
297 if (X509_NAME_print_ex(out, (X509_NAME *)*pval,
298 indent, pctx->nm_flags) <= 0)
299 return 0;
300 return 2;
301 }
302
303/* This function generates the canonical encoding of the Name structure.
304 * In it all strings are converted to UTF8, leading, trailing and
305 * multiple spaces collapsed, converted to lower case and the leading
306 * SEQUENCE header removed.
307 *
308 * In future we could also normalize the UTF8 too.
309 *
310 * By doing this comparison of Name structures can be rapidly
311 * perfomed by just using memcmp() of the canonical encoding.
312 * By omitting the leading SEQUENCE name constraints of type
313 * dirName can also be checked with a simple memcmp().
314 */
315
316static int x509_name_canon(X509_NAME *a)
317 {
318 unsigned char *p;
319 STACK_OF(STACK_OF_X509_NAME_ENTRY) *intname = NULL;
320 STACK_OF(X509_NAME_ENTRY) *entries = NULL;
321 X509_NAME_ENTRY *entry, *tmpentry = NULL;
322 int i, set = -1, ret = 0;
323
324 if (a->canon_enc)
325 {
326 OPENSSL_free(a->canon_enc);
327 a->canon_enc = NULL;
328 }
329 /* Special case: empty X509_NAME => null encoding */
330 if (sk_X509_NAME_ENTRY_num(a->entries) == 0)
331 {
332 a->canon_enclen = 0;
333 return 1;
334 }
335 intname = sk_STACK_OF_X509_NAME_ENTRY_new_null();
336 if(!intname)
337 goto err;
338 for(i = 0; i < sk_X509_NAME_ENTRY_num(a->entries); i++)
339 {
340 entry = sk_X509_NAME_ENTRY_value(a->entries, i);
341 if(entry->set != set)
342 {
343 entries = sk_X509_NAME_ENTRY_new_null();
344 if(!entries)
345 goto err;
346 if(!sk_STACK_OF_X509_NAME_ENTRY_push(intname, entries))
347 goto err;
348 set = entry->set;
349 }
350 tmpentry = X509_NAME_ENTRY_new();
351 tmpentry->object = OBJ_dup(entry->object);
352 if (!asn1_string_canon(tmpentry->value, entry->value))
353 goto err;
354 if(!sk_X509_NAME_ENTRY_push(entries, tmpentry))
355 goto err;
356 tmpentry = NULL;
357 }
358
359 /* Finally generate encoding */
360
361 a->canon_enclen = i2d_name_canon(intname, NULL);
362
363 p = OPENSSL_malloc(a->canon_enclen);
364
365 if (!p)
366 goto err;
367
368 a->canon_enc = p;
369
370 i2d_name_canon(intname, &p);
371
372 ret = 1;
373
374 err:
375
376 if (tmpentry)
377 X509_NAME_ENTRY_free(tmpentry);
378 if (intname)
379 sk_STACK_OF_X509_NAME_ENTRY_pop_free(intname,
380 local_sk_X509_NAME_ENTRY_pop_free);
381 return ret;
382 }
383
384/* Bitmap of all the types of string that will be canonicalized. */
385
386#define ASN1_MASK_CANON \
387 (B_ASN1_UTF8STRING | B_ASN1_BMPSTRING | B_ASN1_UNIVERSALSTRING \
388 | B_ASN1_PRINTABLESTRING | B_ASN1_T61STRING | B_ASN1_IA5STRING \
389 | B_ASN1_VISIBLESTRING)
390
391
392static int asn1_string_canon(ASN1_STRING *out, ASN1_STRING *in)
393 {
394 unsigned char *to, *from;
395 int len, i;
396
397 /* If type not in bitmask just copy string across */
398 if (!(ASN1_tag2bit(in->type) & ASN1_MASK_CANON))
399 {
400 out->type = in->type;
401 if (!ASN1_STRING_set(out, in->data, in->length))
402 return 0;
403 return 1;
404 }
405
406 out->type = V_ASN1_UTF8STRING;
407 out->length = ASN1_STRING_to_UTF8(&out->data, in);
408 if (out->length == -1)
409 return 0;
410
411 to = out->data;
412 from = to;
413
414 len = out->length;
415
416 /* Convert string in place to canonical form.
417 * Ultimately we may need to handle a wider range of characters
418 * but for now ignore anything with MSB set and rely on the
419 * isspace() and tolower() functions.
420 */
421
422 /* Ignore leading spaces */
423 while((len > 0) && !(*from & 0x80) && isspace(*from))
424 {
425 from++;
426 len--;
427 }
428
429 to = from + len - 1;
430
431 /* Ignore trailing spaces */
432 while ((len > 0) && !(*to & 0x80) && isspace(*to))
433 {
434 to--;
435 len--;
436 }
437
438 to = out->data;
439
440 i = 0;
441 while(i < len)
442 {
443 /* If MSB set just copy across */
444 if (*from & 0x80)
445 {
446 *to++ = *from++;
447 i++;
448 }
449 /* Collapse multiple spaces */
450 else if (isspace(*from))
451 {
452 /* Copy one space across */
453 *to++ = ' ';
454 /* Ignore subsequent spaces. Note: don't need to
455 * check len here because we know the last
456 * character is a non-space so we can't overflow.
457 */
458 do
459 {
460 from++;
461 i++;
462 }
463 while(!(*from & 0x80) && isspace(*from));
464 }
465 else
466 {
467 *to++ = tolower(*from++);
468 i++;
469 }
470 }
471
472 out->length = to - out->data;
473
474 return 1;
475
476 }
477
478static int i2d_name_canon(STACK_OF(STACK_OF_X509_NAME_ENTRY) *_intname,
479 unsigned char **in)
480 {
481 int i, len, ltmp;
482 ASN1_VALUE *v;
483 STACK_OF(ASN1_VALUE) *intname = (STACK_OF(ASN1_VALUE) *)_intname;
484
485 len = 0;
486 for (i = 0; i < sk_ASN1_VALUE_num(intname); i++)
487 {
488 v = sk_ASN1_VALUE_value(intname, i);
489 ltmp = ASN1_item_ex_i2d(&v, in,
490 ASN1_ITEM_rptr(X509_NAME_ENTRIES), -1, -1);
491 if (ltmp < 0)
492 return ltmp;
493 len += ltmp;
494 }
495 return len;
496 }
255 497
256int X509_NAME_set(X509_NAME **xn, X509_NAME *name) 498int X509_NAME_set(X509_NAME **xn, X509_NAME *name)
257 { 499 {
diff --git a/src/lib/libssl/src/crypto/asn1/x_pubkey.c b/src/lib/libssl/src/crypto/asn1/x_pubkey.c
index 91c2756116..d42b6a2c54 100644
--- a/src/lib/libssl/src/crypto/asn1/x_pubkey.c
+++ b/src/lib/libssl/src/crypto/asn1/x_pubkey.c
@@ -60,6 +60,7 @@
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include <openssl/asn1t.h> 61#include <openssl/asn1t.h>
62#include <openssl/x509.h> 62#include <openssl/x509.h>
63#include "asn1_locl.h"
63#ifndef OPENSSL_NO_RSA 64#ifndef OPENSSL_NO_RSA
64#include <openssl/rsa.h> 65#include <openssl/rsa.h>
65#endif 66#endif
@@ -68,7 +69,8 @@
68#endif 69#endif
69 70
70/* Minor tweak to operation: free up EVP_PKEY */ 71/* Minor tweak to operation: free up EVP_PKEY */
71static int pubkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 72static int pubkey_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
73 void *exarg)
72 { 74 {
73 if (operation == ASN1_OP_FREE_POST) 75 if (operation == ASN1_OP_FREE_POST)
74 { 76 {
@@ -88,169 +90,42 @@ IMPLEMENT_ASN1_FUNCTIONS(X509_PUBKEY)
88int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey) 90int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey)
89 { 91 {
90 X509_PUBKEY *pk=NULL; 92 X509_PUBKEY *pk=NULL;
91 X509_ALGOR *a;
92 ASN1_OBJECT *o;
93 unsigned char *s,*p = NULL;
94 int i;
95 93
96 if (x == NULL) return(0); 94 if (x == NULL) return(0);
97 95
98 if ((pk=X509_PUBKEY_new()) == NULL) goto err; 96 if ((pk=X509_PUBKEY_new()) == NULL) goto error;
99 a=pk->algor;
100 97
101 /* set the algorithm id */ 98 if (pkey->ameth)
102 if ((o=OBJ_nid2obj(pkey->type)) == NULL) goto err;
103 ASN1_OBJECT_free(a->algorithm);
104 a->algorithm=o;
105
106 /* Set the parameter list */
107 if (!pkey->save_parameters || (pkey->type == EVP_PKEY_RSA))
108 { 99 {
109 if ((a->parameter == NULL) || 100 if (pkey->ameth->pub_encode)
110 (a->parameter->type != V_ASN1_NULL))
111 { 101 {
112 ASN1_TYPE_free(a->parameter); 102 if (!pkey->ameth->pub_encode(pk, pkey))
113 if (!(a->parameter=ASN1_TYPE_new()))
114 { 103 {
115 X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE); 104 X509err(X509_F_X509_PUBKEY_SET,
116 goto err; 105 X509_R_PUBLIC_KEY_ENCODE_ERROR);
106 goto error;
117 } 107 }
118 a->parameter->type=V_ASN1_NULL;
119 }
120 }
121#ifndef OPENSSL_NO_DSA
122 else if (pkey->type == EVP_PKEY_DSA)
123 {
124 unsigned char *pp;
125 DSA *dsa;
126
127 dsa=pkey->pkey.dsa;
128 dsa->write_params=0;
129 ASN1_TYPE_free(a->parameter);
130 if ((i=i2d_DSAparams(dsa,NULL)) <= 0)
131 goto err;
132 if (!(p=(unsigned char *)OPENSSL_malloc(i)))
133 {
134 X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE);
135 goto err;
136 }
137 pp=p;
138 i2d_DSAparams(dsa,&pp);
139 if (!(a->parameter=ASN1_TYPE_new()))
140 {
141 OPENSSL_free(p);
142 X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE);
143 goto err;
144 }
145 a->parameter->type=V_ASN1_SEQUENCE;
146 if (!(a->parameter->value.sequence=ASN1_STRING_new()))
147 {
148 OPENSSL_free(p);
149 X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE);
150 goto err;
151 } 108 }
152 if (!ASN1_STRING_set(a->parameter->value.sequence,p,i)) 109 else
153 { 110 {
154 OPENSSL_free(p); 111 X509err(X509_F_X509_PUBKEY_SET,
155 X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE); 112 X509_R_METHOD_NOT_SUPPORTED);
156 goto err; 113 goto error;
157 } 114 }
158 OPENSSL_free(p);
159 } 115 }
160#endif 116 else
161#ifndef OPENSSL_NO_EC
162 else if (pkey->type == EVP_PKEY_EC)
163 {
164 int nid=0;
165 unsigned char *pp;
166 EC_KEY *ec_key;
167 const EC_GROUP *group;
168
169 ec_key = pkey->pkey.ec;
170 ASN1_TYPE_free(a->parameter);
171
172 if ((a->parameter = ASN1_TYPE_new()) == NULL)
173 {
174 X509err(X509_F_X509_PUBKEY_SET, ERR_R_ASN1_LIB);
175 goto err;
176 }
177
178 group = EC_KEY_get0_group(ec_key);
179 if (EC_GROUP_get_asn1_flag(group)
180 && (nid = EC_GROUP_get_curve_name(group)))
181 {
182 /* just set the OID */
183 a->parameter->type = V_ASN1_OBJECT;
184 a->parameter->value.object = OBJ_nid2obj(nid);
185 }
186 else /* explicit parameters */
187 {
188 if ((i = i2d_ECParameters(ec_key, NULL)) == 0)
189 {
190 X509err(X509_F_X509_PUBKEY_SET, ERR_R_EC_LIB);
191 goto err;
192 }
193 if ((p = (unsigned char *) OPENSSL_malloc(i)) == NULL)
194 {
195 X509err(X509_F_X509_PUBKEY_SET, ERR_R_MALLOC_FAILURE);
196 goto err;
197 }
198 pp = p;
199 if (!i2d_ECParameters(ec_key, &pp))
200 {
201 X509err(X509_F_X509_PUBKEY_SET, ERR_R_EC_LIB);
202 OPENSSL_free(p);
203 goto err;
204 }
205 a->parameter->type = V_ASN1_SEQUENCE;
206 if ((a->parameter->value.sequence = ASN1_STRING_new()) == NULL)
207 {
208 X509err(X509_F_X509_PUBKEY_SET, ERR_R_ASN1_LIB);
209 OPENSSL_free(p);
210 goto err;
211 }
212 ASN1_STRING_set(a->parameter->value.sequence, p, i);
213 OPENSSL_free(p);
214 }
215 }
216#endif
217 else if (1)
218 { 117 {
219 X509err(X509_F_X509_PUBKEY_SET,X509_R_UNSUPPORTED_ALGORITHM); 118 X509err(X509_F_X509_PUBKEY_SET,X509_R_UNSUPPORTED_ALGORITHM);
220 goto err; 119 goto error;
221 } 120 }
222 121
223 if ((i=i2d_PublicKey(pkey,NULL)) <= 0) goto err;
224 if ((s=(unsigned char *)OPENSSL_malloc(i+1)) == NULL)
225 {
226 X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE);
227 goto err;
228 }
229 p=s;
230 i2d_PublicKey(pkey,&p);
231 if (!M_ASN1_BIT_STRING_set(pk->public_key,s,i))
232 {
233 X509err(X509_F_X509_PUBKEY_SET,ERR_R_MALLOC_FAILURE);
234 goto err;
235 }
236 /* Set number of unused bits to zero */
237 pk->public_key->flags&= ~(ASN1_STRING_FLAG_BITS_LEFT|0x07);
238 pk->public_key->flags|=ASN1_STRING_FLAG_BITS_LEFT;
239
240 OPENSSL_free(s);
241
242#if 0
243 CRYPTO_add(&pkey->references,1,CRYPTO_LOCK_EVP_PKEY);
244 pk->pkey=pkey;
245#endif
246
247 if (*x != NULL) 122 if (*x != NULL)
248 X509_PUBKEY_free(*x); 123 X509_PUBKEY_free(*x);
249 124
250 *x=pk; 125 *x=pk;
251 126
252 return 1; 127 return 1;
253err: 128error:
254 if (pk != NULL) X509_PUBKEY_free(pk); 129 if (pk != NULL) X509_PUBKEY_free(pk);
255 return 0; 130 return 0;
256 } 131 }
@@ -258,119 +133,50 @@ err:
258EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key) 133EVP_PKEY *X509_PUBKEY_get(X509_PUBKEY *key)
259 { 134 {
260 EVP_PKEY *ret=NULL; 135 EVP_PKEY *ret=NULL;
261 long j;
262 int type;
263 const unsigned char *p;
264#if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_ECDSA)
265 const unsigned char *cp;
266 X509_ALGOR *a;
267#endif
268 136
269 if (key == NULL) goto err; 137 if (key == NULL) goto error;
270 138
271 if (key->pkey != NULL) 139 if (key->pkey != NULL)
272 { 140 {
273 CRYPTO_add(&key->pkey->references, 1, CRYPTO_LOCK_EVP_PKEY); 141 CRYPTO_add(&key->pkey->references, 1, CRYPTO_LOCK_EVP_PKEY);
274 return(key->pkey); 142 return key->pkey;
275 } 143 }
276 144
277 if (key->public_key == NULL) goto err; 145 if (key->public_key == NULL) goto error;
278 146
279 type=OBJ_obj2nid(key->algor->algorithm);
280 if ((ret = EVP_PKEY_new()) == NULL) 147 if ((ret = EVP_PKEY_new()) == NULL)
281 { 148 {
282 X509err(X509_F_X509_PUBKEY_GET, ERR_R_MALLOC_FAILURE); 149 X509err(X509_F_X509_PUBKEY_GET, ERR_R_MALLOC_FAILURE);
283 goto err; 150 goto error;
284 } 151 }
285 ret->type = EVP_PKEY_type(type);
286
287 /* the parameters must be extracted before the public key (ECDSA!) */
288
289#if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_ECDSA)
290 a=key->algor;
291#endif
292 152
293 if (0) 153 if (!EVP_PKEY_set_type(ret, OBJ_obj2nid(key->algor->algorithm)))
294 ;
295#ifndef OPENSSL_NO_DSA
296 else if (ret->type == EVP_PKEY_DSA)
297 { 154 {
298 if (a->parameter && (a->parameter->type == V_ASN1_SEQUENCE)) 155 X509err(X509_F_X509_PUBKEY_GET,X509_R_UNSUPPORTED_ALGORITHM);
299 { 156 goto error;
300 if ((ret->pkey.dsa = DSA_new()) == NULL)
301 {
302 X509err(X509_F_X509_PUBKEY_GET, ERR_R_MALLOC_FAILURE);
303 goto err;
304 }
305 ret->pkey.dsa->write_params=0;
306 cp=p=a->parameter->value.sequence->data;
307 j=a->parameter->value.sequence->length;
308 if (!d2i_DSAparams(&ret->pkey.dsa, &cp, (long)j))
309 goto err;
310 }
311 ret->save_parameters=1;
312 } 157 }
313#endif 158
314#ifndef OPENSSL_NO_EC 159 if (ret->ameth->pub_decode)
315 else if (ret->type == EVP_PKEY_EC)
316 { 160 {
317 if (a->parameter && (a->parameter->type == V_ASN1_SEQUENCE)) 161 if (!ret->ameth->pub_decode(ret, key))
318 { 162 {
319 /* type == V_ASN1_SEQUENCE => we have explicit parameters 163 X509err(X509_F_X509_PUBKEY_GET,
320 * (e.g. parameters in the X9_62_EC_PARAMETERS-structure ) 164 X509_R_PUBLIC_KEY_DECODE_ERROR);
321 */ 165 goto error;
322 if ((ret->pkey.ec= EC_KEY_new()) == NULL)
323 {
324 X509err(X509_F_X509_PUBKEY_GET,
325 ERR_R_MALLOC_FAILURE);
326 goto err;
327 }
328 cp = p = a->parameter->value.sequence->data;
329 j = a->parameter->value.sequence->length;
330 if (!d2i_ECParameters(&ret->pkey.ec, &cp, (long)j))
331 {
332 X509err(X509_F_X509_PUBKEY_GET, ERR_R_EC_LIB);
333 goto err;
334 }
335 }
336 else if (a->parameter && (a->parameter->type == V_ASN1_OBJECT))
337 {
338 /* type == V_ASN1_OBJECT => the parameters are given
339 * by an asn1 OID
340 */
341 EC_KEY *ec_key;
342 EC_GROUP *group;
343
344 if (ret->pkey.ec == NULL)
345 ret->pkey.ec = EC_KEY_new();
346 ec_key = ret->pkey.ec;
347 if (ec_key == NULL)
348 goto err;
349 group = EC_GROUP_new_by_curve_name(OBJ_obj2nid(a->parameter->value.object));
350 if (group == NULL)
351 goto err;
352 EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE);
353 if (EC_KEY_set_group(ec_key, group) == 0)
354 goto err;
355 EC_GROUP_free(group);
356 } 166 }
357 /* the case implicitlyCA is currently not implemented */
358 ret->save_parameters = 1;
359 } 167 }
360#endif 168 else
361
362 p=key->public_key->data;
363 j=key->public_key->length;
364 if (!d2i_PublicKey(type, &ret, &p, (long)j))
365 { 169 {
366 X509err(X509_F_X509_PUBKEY_GET, X509_R_ERR_ASN1_LIB); 170 X509err(X509_F_X509_PUBKEY_GET, X509_R_METHOD_NOT_SUPPORTED);
367 goto err; 171 goto error;
368 } 172 }
369 173
370 key->pkey = ret; 174 key->pkey = ret;
371 CRYPTO_add(&ret->references, 1, CRYPTO_LOCK_EVP_PKEY); 175 CRYPTO_add(&ret->references, 1, CRYPTO_LOCK_EVP_PKEY);
372 return(ret); 176
373err: 177 return ret;
178
179 error:
374 if (ret != NULL) 180 if (ret != NULL)
375 EVP_PKEY_free(ret); 181 EVP_PKEY_free(ret);
376 return(NULL); 182 return(NULL);
@@ -529,3 +335,39 @@ int i2d_EC_PUBKEY(EC_KEY *a, unsigned char **pp)
529 return(ret); 335 return(ret);
530 } 336 }
531#endif 337#endif
338
339int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj,
340 int ptype, void *pval,
341 unsigned char *penc, int penclen)
342 {
343 if (!X509_ALGOR_set0(pub->algor, aobj, ptype, pval))
344 return 0;
345 if (penc)
346 {
347 if (pub->public_key->data)
348 OPENSSL_free(pub->public_key->data);
349 pub->public_key->data = penc;
350 pub->public_key->length = penclen;
351 /* Set number of unused bits to zero */
352 pub->public_key->flags&= ~(ASN1_STRING_FLAG_BITS_LEFT|0x07);
353 pub->public_key->flags|=ASN1_STRING_FLAG_BITS_LEFT;
354 }
355 return 1;
356 }
357
358int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg,
359 const unsigned char **pk, int *ppklen,
360 X509_ALGOR **pa,
361 X509_PUBKEY *pub)
362 {
363 if (ppkalg)
364 *ppkalg = pub->algor->algorithm;
365 if (pk)
366 {
367 *pk = pub->public_key->data;
368 *ppklen = pub->public_key->length;
369 }
370 if (pa)
371 *pa = pub->algor;
372 return 1;
373 }
diff --git a/src/lib/libssl/src/crypto/asn1/x_req.c b/src/lib/libssl/src/crypto/asn1/x_req.c
index 59ca8ce329..d57555827c 100644
--- a/src/lib/libssl/src/crypto/asn1/x_req.c
+++ b/src/lib/libssl/src/crypto/asn1/x_req.c
@@ -79,7 +79,8 @@
79 * 79 *
80 */ 80 */
81 81
82static int rinf_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 82static int rinf_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
83 void *exarg)
83{ 84{
84 X509_REQ_INFO *rinf = (X509_REQ_INFO *)*pval; 85 X509_REQ_INFO *rinf = (X509_REQ_INFO *)*pval;
85 86
diff --git a/src/lib/libssl/src/crypto/asn1/x_x509.c b/src/lib/libssl/src/crypto/asn1/x_x509.c
index e118696625..dafd3cc921 100644
--- a/src/lib/libssl/src/crypto/asn1/x_x509.c
+++ b/src/lib/libssl/src/crypto/asn1/x_x509.c
@@ -81,7 +81,8 @@ IMPLEMENT_ASN1_FUNCTIONS(X509_CINF)
81 81
82extern void policy_cache_free(X509_POLICY_CACHE *cache); 82extern void policy_cache_free(X509_POLICY_CACHE *cache);
83 83
84static int x509_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 84static int x509_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
85 void *exarg)
85{ 86{
86 X509 *ret = (X509 *)*pval; 87 X509 *ret = (X509 *)*pval;
87 88
@@ -99,6 +100,7 @@ static int x509_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it)
99 ret->rfc3779_asid = NULL; 100 ret->rfc3779_asid = NULL;
100#endif 101#endif
101 ret->aux = NULL; 102 ret->aux = NULL;
103 ret->crldp = NULL;
102 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509, ret, &ret->ex_data); 104 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509, ret, &ret->ex_data);
103 break; 105 break;
104 106
@@ -112,7 +114,10 @@ static int x509_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it)
112 X509_CERT_AUX_free(ret->aux); 114 X509_CERT_AUX_free(ret->aux);
113 ASN1_OCTET_STRING_free(ret->skid); 115 ASN1_OCTET_STRING_free(ret->skid);
114 AUTHORITY_KEYID_free(ret->akid); 116 AUTHORITY_KEYID_free(ret->akid);
117 CRL_DIST_POINTS_free(ret->crldp);
115 policy_cache_free(ret->policy_cache); 118 policy_cache_free(ret->policy_cache);
119 GENERAL_NAMES_free(ret->altname);
120 NAME_CONSTRAINTS_free(ret->nc);
116#ifndef OPENSSL_NO_RFC3779 121#ifndef OPENSSL_NO_RFC3779
117 sk_IPAddressFamily_pop_free(ret->rfc3779_addr, IPAddressFamily_free); 122 sk_IPAddressFamily_pop_free(ret->rfc3779_addr, IPAddressFamily_free);
118 ASIdentifiers_free(ret->rfc3779_asid); 123 ASIdentifiers_free(ret->rfc3779_asid);
@@ -136,19 +141,6 @@ ASN1_SEQUENCE_ref(X509, x509_cb, CRYPTO_LOCK_X509) = {
136IMPLEMENT_ASN1_FUNCTIONS(X509) 141IMPLEMENT_ASN1_FUNCTIONS(X509)
137IMPLEMENT_ASN1_DUP_FUNCTION(X509) 142IMPLEMENT_ASN1_DUP_FUNCTION(X509)
138 143
139static ASN1_METHOD meth=
140 {
141 (I2D_OF(void)) i2d_X509,
142 (D2I_OF(void)) d2i_X509,
143 (void *(*)(void))X509_new,
144 (void (*)(void *)) X509_free
145 };
146
147ASN1_METHOD *X509_asn1_meth(void)
148 {
149 return(&meth);
150 }
151
152int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, 144int X509_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
153 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func) 145 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
154 { 146 {
diff --git a/src/lib/libssl/src/crypto/bf/Makefile b/src/lib/libssl/src/crypto/bf/Makefile
index 7f4f03eb82..dd2c2c708e 100644
--- a/src/lib/libssl/src/crypto/bf/Makefile
+++ b/src/lib/libssl/src/crypto/bf/Makefile
@@ -12,8 +12,6 @@ MAKEFILE= Makefile
12AR= ar r 12AR= ar r
13 13
14BF_ENC= bf_enc.o 14BF_ENC= bf_enc.o
15# or use
16#DES_ENC= bx86-elf.o
17 15
18CFLAGS= $(INCLUDES) $(CFLAG) 16CFLAGS= $(INCLUDES) $(CFLAG)
19ASFLAGS= $(INCLUDES) $(ASFLAG) 17ASFLAGS= $(INCLUDES) $(ASFLAG)
@@ -40,19 +38,12 @@ top:
40all: lib 38all: lib
41 39
42lib: $(LIBOBJ) 40lib: $(LIBOBJ)
43 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
44 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
45 @touch lib 43 @touch lib
46 44
47# ELF 45bf-586.s: asm/bf-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
48bx86-elf.s: asm/bf-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl 46 $(PERL) asm/bf-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
49 (cd asm; $(PERL) bf-586.pl elf $(CFLAGS) $(PROCESSOR) > ../$@)
50# COFF
51bx86-cof.s: asm/bf-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
52 (cd asm; $(PERL) bf-586.pl coff $(CFLAGS) $(PROCESSOR) > ../$@)
53# a.out
54bx86-out.s: asm/bf-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
55 (cd asm; $(PERL) bf-586.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
56 47
57files: 48files:
58 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 49 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -103,9 +94,5 @@ bf_enc.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
103bf_enc.o: ../../include/openssl/opensslconf.h bf_enc.c bf_locl.h 94bf_enc.o: ../../include/openssl/opensslconf.h bf_enc.c bf_locl.h
104bf_ofb64.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h 95bf_ofb64.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
105bf_ofb64.o: ../../include/openssl/opensslconf.h bf_locl.h bf_ofb64.c 96bf_ofb64.o: ../../include/openssl/opensslconf.h bf_locl.h bf_ofb64.c
106bf_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/crypto.h 97bf_skey.o: ../../include/openssl/blowfish.h ../../include/openssl/e_os2.h
107bf_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h 98bf_skey.o: ../../include/openssl/opensslconf.h bf_locl.h bf_pi.h bf_skey.c
108bf_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
109bf_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
110bf_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
111bf_skey.o: bf_locl.h bf_pi.h bf_skey.c
diff --git a/src/lib/libssl/src/crypto/bf/asm/bf-586.pl b/src/lib/libssl/src/crypto/bf/asm/bf-586.pl
index b556642c94..b74cfbafd4 100644
--- a/src/lib/libssl/src/crypto/bf/asm/bf-586.pl
+++ b/src/lib/libssl/src/crypto/bf/asm/bf-586.pl
@@ -1,6 +1,7 @@
1#!/usr/local/bin/perl 1#!/usr/local/bin/perl
2 2
3push(@INC,"perlasm","../../perlasm"); 3$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
4push(@INC,"${dir}","${dir}../../perlasm");
4require "x86asm.pl"; 5require "x86asm.pl";
5require "cbc.pl"; 6require "cbc.pl";
6 7
diff --git a/src/lib/libssl/src/crypto/bf/bf_skey.c b/src/lib/libssl/src/crypto/bf/bf_skey.c
index 6ac2aeb279..3673cdee6e 100644
--- a/src/lib/libssl/src/crypto/bf/bf_skey.c
+++ b/src/lib/libssl/src/crypto/bf/bf_skey.c
@@ -59,15 +59,10 @@
59#include <stdio.h> 59#include <stdio.h>
60#include <string.h> 60#include <string.h>
61#include <openssl/blowfish.h> 61#include <openssl/blowfish.h>
62#include <openssl/crypto.h>
63#ifdef OPENSSL_FIPS
64#include <openssl/fips.h>
65#endif
66
67#include "bf_locl.h" 62#include "bf_locl.h"
68#include "bf_pi.h" 63#include "bf_pi.h"
69 64
70FIPS_NON_FIPS_VCIPHER_Init(BF) 65void BF_set_key(BF_KEY *key, int len, const unsigned char *data)
71 { 66 {
72 int i; 67 int i;
73 BF_LONG *p,ri,in[2]; 68 BF_LONG *p,ri,in[2];
diff --git a/src/lib/libssl/src/crypto/bf/blowfish.h b/src/lib/libssl/src/crypto/bf/blowfish.h
index d24ffccb65..b97e76f9a3 100644
--- a/src/lib/libssl/src/crypto/bf/blowfish.h
+++ b/src/lib/libssl/src/crypto/bf/blowfish.h
@@ -79,7 +79,7 @@ extern "C" {
79 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 79 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
80 */ 80 */
81 81
82#if defined(OPENSSL_SYS_WIN16) || defined(__LP32__) 82#if defined(__LP32__)
83#define BF_LONG unsigned long 83#define BF_LONG unsigned long
84#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) 84#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__)
85#define BF_LONG unsigned long 85#define BF_LONG unsigned long
@@ -104,9 +104,7 @@ typedef struct bf_key_st
104 BF_LONG S[4*256]; 104 BF_LONG S[4*256];
105 } BF_KEY; 105 } BF_KEY;
106 106
107#ifdef OPENSSL_FIPS 107
108void private_BF_set_key(BF_KEY *key, int len, const unsigned char *data);
109#endif
110void BF_set_key(BF_KEY *key, int len, const unsigned char *data); 108void BF_set_key(BF_KEY *key, int len, const unsigned char *data);
111 109
112void BF_encrypt(BF_LONG *data,const BF_KEY *key); 110void BF_encrypt(BF_LONG *data,const BF_KEY *key);
diff --git a/src/lib/libssl/src/crypto/bio/Makefile b/src/lib/libssl/src/crypto/bio/Makefile
index 1cd76ce7a2..c395d80496 100644
--- a/src/lib/libssl/src/crypto/bio/Makefile
+++ b/src/lib/libssl/src/crypto/bio/Makefile
@@ -45,7 +45,7 @@ top:
45all: lib 45all: lib
46 46
47lib: $(LIBOBJ) 47lib: $(LIBOBJ)
48 $(ARX) $(LIB) $(LIBOBJ) 48 $(AR) $(LIB) $(LIBOBJ)
49 $(RANLIB) $(LIB) || echo Never mind. 49 $(RANLIB) $(LIB) || echo Never mind.
50 @touch lib 50 @touch lib
51 51
@@ -102,11 +102,12 @@ b_print.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
102b_print.o: ../../include/openssl/symhacks.h ../cryptlib.h b_print.c 102b_print.o: ../../include/openssl/symhacks.h ../cryptlib.h b_print.c
103b_sock.o: ../../e_os.h ../../include/openssl/bio.h 103b_sock.o: ../../e_os.h ../../include/openssl/bio.h
104b_sock.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 104b_sock.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
105b_sock.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 105b_sock.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
106b_sock.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h 106b_sock.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
107b_sock.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 107b_sock.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
108b_sock.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 108b_sock.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
109b_sock.o: ../../include/openssl/symhacks.h ../cryptlib.h b_sock.c 109b_sock.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
110b_sock.o: ../cryptlib.h b_sock.c
110bf_buff.o: ../../e_os.h ../../include/openssl/bio.h 111bf_buff.o: ../../e_os.h ../../include/openssl/bio.h
111bf_buff.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 112bf_buff.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
112bf_buff.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 113bf_buff.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
diff --git a/src/lib/libssl/src/crypto/bio/b_print.c b/src/lib/libssl/src/crypto/bio/b_print.c
index 3a87b0ec0b..143a7cfefa 100644
--- a/src/lib/libssl/src/crypto/bio/b_print.c
+++ b/src/lib/libssl/src/crypto/bio/b_print.c
@@ -115,8 +115,8 @@
115#define LDOUBLE double 115#define LDOUBLE double
116#endif 116#endif
117 117
118#if HAVE_LONG_LONG 118#ifdef HAVE_LONG_LONG
119# if defined(OPENSSL_SYS_WIN32) && !defined(__GNUC__) 119# if defined(_WIN32) && !defined(__GNUC__)
120# define LLONG __int64 120# define LLONG __int64
121# else 121# else
122# define LLONG long long 122# define LLONG long long
diff --git a/src/lib/libssl/src/crypto/bio/b_sock.c b/src/lib/libssl/src/crypto/bio/b_sock.c
index ead477d8a2..12b0a53a81 100644
--- a/src/lib/libssl/src/crypto/bio/b_sock.c
+++ b/src/lib/libssl/src/crypto/bio/b_sock.c
@@ -72,11 +72,9 @@ NETDB_DEFINE_CONTEXT
72 72
73#ifndef OPENSSL_NO_SOCK 73#ifndef OPENSSL_NO_SOCK
74 74
75#ifdef OPENSSL_SYS_WIN16 75#include <openssl/dso.h>
76#define SOCKET_PROTOCOL 0 /* more microsoft stupidity */ 76
77#else
78#define SOCKET_PROTOCOL IPPROTO_TCP 77#define SOCKET_PROTOCOL IPPROTO_TCP
79#endif
80 78
81#ifdef SO_MAXCONN 79#ifdef SO_MAXCONN
82#define MAX_LISTEN SO_MAXCONN 80#define MAX_LISTEN SO_MAXCONN
@@ -90,6 +88,17 @@ NETDB_DEFINE_CONTEXT
90static int wsa_init_done=0; 88static int wsa_init_done=0;
91#endif 89#endif
92 90
91/*
92 * WSAAPI specifier is required to make indirect calls to run-time
93 * linked WinSock 2 functions used in this module, to be specific
94 * [get|free]addrinfo and getnameinfo. This is because WinSock uses
95 * uses non-C calling convention, __stdcall vs. __cdecl, on x86
96 * Windows. On non-WinSock platforms WSAAPI needs to be void.
97 */
98#ifndef WSAAPI
99#define WSAAPI
100#endif
101
93#if 0 102#if 0
94static unsigned long BIO_ghbn_hits=0L; 103static unsigned long BIO_ghbn_hits=0L;
95static unsigned long BIO_ghbn_miss=0L; 104static unsigned long BIO_ghbn_miss=0L;
@@ -226,6 +235,10 @@ int BIO_sock_error(int sock)
226 int j,i; 235 int j,i;
227 int size; 236 int size;
228 237
238#if defined(OPENSSL_SYS_BEOS_R5)
239 return 0;
240#endif
241
229 size=sizeof(int); 242 size=sizeof(int);
230 /* Note: under Windows the third parameter is of type (char *) 243 /* Note: under Windows the third parameter is of type (char *)
231 * whereas under other systems it is (void *) if you don't have 244 * whereas under other systems it is (void *) if you don't have
@@ -466,7 +479,12 @@ int BIO_sock_init(void)
466 479
467 wsa_init_done=1; 480 wsa_init_done=1;
468 memset(&wsa_state,0,sizeof(wsa_state)); 481 memset(&wsa_state,0,sizeof(wsa_state));
469 if (WSAStartup(0x0101,&wsa_state)!=0) 482 /* Not making wsa_state available to the rest of the
483 * code is formally wrong. But the structures we use
484 * are [beleived to be] invariable among Winsock DLLs,
485 * while API availability is [expected to be] probed
486 * at run-time with DSO_global_lookup. */
487 if (WSAStartup(0x0202,&wsa_state)!=0)
470 { 488 {
471 err=WSAGetLastError(); 489 err=WSAGetLastError();
472 SYSerr(SYS_F_WSASTARTUP,err); 490 SYSerr(SYS_F_WSASTARTUP,err);
@@ -510,8 +528,8 @@ void BIO_sock_cleanup(void)
510 if (wsa_init_done) 528 if (wsa_init_done)
511 { 529 {
512 wsa_init_done=0; 530 wsa_init_done=0;
513#ifndef OPENSSL_SYS_WINCE 531#if 0 /* this call is claimed to be non-present in Winsock2 */
514 WSACancelBlockingCall(); /* Winsock 1.1 specific */ 532 WSACancelBlockingCall();
515#endif 533#endif
516 WSACleanup(); 534 WSACleanup();
517 } 535 }
@@ -581,12 +599,18 @@ static int get_ip(const char *str, unsigned char ip[4])
581int BIO_get_accept_socket(char *host, int bind_mode) 599int BIO_get_accept_socket(char *host, int bind_mode)
582 { 600 {
583 int ret=0; 601 int ret=0;
584 struct sockaddr_in server,client; 602 union {
585 int s=INVALID_SOCKET,cs; 603 struct sockaddr sa;
604 struct sockaddr_in sa_in;
605#if OPENSSL_USE_IPV6
606 struct sockaddr_in6 sa_in6;
607#endif
608 } server,client;
609 int s=INVALID_SOCKET,cs,addrlen;
586 unsigned char ip[4]; 610 unsigned char ip[4];
587 unsigned short port; 611 unsigned short port;
588 char *str=NULL,*e; 612 char *str=NULL,*e;
589 const char *h,*p; 613 char *h,*p;
590 unsigned long l; 614 unsigned long l;
591 int err_num; 615 int err_num;
592 616
@@ -600,8 +624,7 @@ int BIO_get_accept_socket(char *host, int bind_mode)
600 { 624 {
601 if (*e == ':') 625 if (*e == ':')
602 { 626 {
603 p= &(e[1]); 627 p=e;
604 *e='\0';
605 } 628 }
606 else if (*e == '/') 629 else if (*e == '/')
607 { 630 {
@@ -609,21 +632,70 @@ int BIO_get_accept_socket(char *host, int bind_mode)
609 break; 632 break;
610 } 633 }
611 } 634 }
612 635 if (p) *p++='\0'; /* points at last ':', '::port' is special [see below] */
613 if (p == NULL) 636 else p=h,h=NULL;
637
638#ifdef EAI_FAMILY
639 do {
640 static union { void *p;
641 int (WSAAPI *f)(const char *,const char *,
642 const struct addrinfo *,
643 struct addrinfo **);
644 } p_getaddrinfo = {NULL};
645 static union { void *p;
646 void (WSAAPI *f)(struct addrinfo *);
647 } p_freeaddrinfo = {NULL};
648 struct addrinfo *res,hint;
649
650 if (p_getaddrinfo.p==NULL)
651 {
652 if ((p_getaddrinfo.p=DSO_global_lookup("getaddrinfo"))==NULL ||
653 (p_freeaddrinfo.p=DSO_global_lookup("freeaddrinfo"))==NULL)
654 p_getaddrinfo.p=(void*)-1;
655 }
656 if (p_getaddrinfo.p==(void *)-1) break;
657
658 /* '::port' enforces IPv6 wildcard listener. Some OSes,
659 * e.g. Solaris, default to IPv6 without any hint. Also
660 * note that commonly IPv6 wildchard socket can service
661 * IPv4 connections just as well... */
662 memset(&hint,0,sizeof(hint));
663 if (h)
614 { 664 {
615 p=h; 665 if (strchr(h,':'))
616 h="*"; 666 {
667 if (h[1]=='\0') h=NULL;
668#if OPENSSL_USE_IPV6
669 hint.ai_family = AF_INET6;
670#else
671 h=NULL;
672#endif
673 }
674 else if (h[0]=='*' && h[1]=='\0')
675 h=NULL;
617 } 676 }
618 677
678 if ((*p_getaddrinfo.f)(h,p,&hint,&res)) break;
679
680 addrlen = res->ai_addrlen<=sizeof(server) ?
681 res->ai_addrlen :
682 sizeof(server);
683 memcpy(&server, res->ai_addr, addrlen);
684
685 (*p_freeaddrinfo.f)(res);
686 goto again;
687 } while (0);
688#endif
689
619 if (!BIO_get_port(p,&port)) goto err; 690 if (!BIO_get_port(p,&port)) goto err;
620 691
621 memset((char *)&server,0,sizeof(server)); 692 memset((char *)&server,0,sizeof(server));
622 server.sin_family=AF_INET; 693 server.sa_in.sin_family=AF_INET;
623 server.sin_port=htons(port); 694 server.sa_in.sin_port=htons(port);
695 addrlen = sizeof(server.sa_in);
624 696
625 if (strcmp(h,"*") == 0) 697 if (h == NULL || strcmp(h,"*") == 0)
626 server.sin_addr.s_addr=INADDR_ANY; 698 server.sa_in.sin_addr.s_addr=INADDR_ANY;
627 else 699 else
628 { 700 {
629 if (!BIO_get_host_ip(h,&(ip[0]))) goto err; 701 if (!BIO_get_host_ip(h,&(ip[0]))) goto err;
@@ -632,11 +704,11 @@ int BIO_get_accept_socket(char *host, int bind_mode)
632 ((unsigned long)ip[1]<<16L)| 704 ((unsigned long)ip[1]<<16L)|
633 ((unsigned long)ip[2]<< 8L)| 705 ((unsigned long)ip[2]<< 8L)|
634 ((unsigned long)ip[3]); 706 ((unsigned long)ip[3]);
635 server.sin_addr.s_addr=htonl(l); 707 server.sa_in.sin_addr.s_addr=htonl(l);
636 } 708 }
637 709
638again: 710again:
639 s=socket(AF_INET,SOCK_STREAM,SOCKET_PROTOCOL); 711 s=socket(server.sa.sa_family,SOCK_STREAM,SOCKET_PROTOCOL);
640 if (s == INVALID_SOCKET) 712 if (s == INVALID_SOCKET)
641 { 713 {
642 SYSerr(SYS_F_SOCKET,get_last_socket_error()); 714 SYSerr(SYS_F_SOCKET,get_last_socket_error());
@@ -654,22 +726,42 @@ again:
654 bind_mode=BIO_BIND_NORMAL; 726 bind_mode=BIO_BIND_NORMAL;
655 } 727 }
656#endif 728#endif
657 if (bind(s,(struct sockaddr *)&server,sizeof(server)) == -1) 729 if (bind(s,&server.sa,addrlen) == -1)
658 { 730 {
659#ifdef SO_REUSEADDR 731#ifdef SO_REUSEADDR
660 err_num=get_last_socket_error(); 732 err_num=get_last_socket_error();
661 if ((bind_mode == BIO_BIND_REUSEADDR_IF_UNUSED) && 733 if ((bind_mode == BIO_BIND_REUSEADDR_IF_UNUSED) &&
734#ifdef OPENSSL_SYS_WINDOWS
735 /* Some versions of Windows define EADDRINUSE to
736 * a dummy value.
737 */
738 (err_num == WSAEADDRINUSE))
739#else
662 (err_num == EADDRINUSE)) 740 (err_num == EADDRINUSE))
741#endif
663 { 742 {
664 memcpy((char *)&client,(char *)&server,sizeof(server)); 743 client = server;
665 if (strcmp(h,"*") == 0) 744 if (h == NULL || strcmp(h,"*") == 0)
666 client.sin_addr.s_addr=htonl(0x7F000001); 745 {
667 cs=socket(AF_INET,SOCK_STREAM,SOCKET_PROTOCOL); 746#if OPENSSL_USE_IPV6
747 if (client.sa.sa_family == AF_INET6)
748 {
749 memset(&client.sa_in6.sin6_addr,0,sizeof(client.sa_in6.sin6_addr));
750 client.sa_in6.sin6_addr.s6_addr[15]=1;
751 }
752 else
753#endif
754 if (client.sa.sa_family == AF_INET)
755 {
756 client.sa_in.sin_addr.s_addr=htonl(0x7F000001);
757 }
758 else goto err;
759 }
760 cs=socket(client.sa.sa_family,SOCK_STREAM,SOCKET_PROTOCOL);
668 if (cs != INVALID_SOCKET) 761 if (cs != INVALID_SOCKET)
669 { 762 {
670 int ii; 763 int ii;
671 ii=connect(cs,(struct sockaddr *)&client, 764 ii=connect(cs,&client.sa,addrlen);
672 sizeof(client));
673 closesocket(cs); 765 closesocket(cs);
674 if (ii == INVALID_SOCKET) 766 if (ii == INVALID_SOCKET)
675 { 767 {
@@ -708,20 +800,52 @@ err:
708int BIO_accept(int sock, char **addr) 800int BIO_accept(int sock, char **addr)
709 { 801 {
710 int ret=INVALID_SOCKET; 802 int ret=INVALID_SOCKET;
711 static struct sockaddr_in from;
712 unsigned long l; 803 unsigned long l;
713 unsigned short port; 804 unsigned short port;
714 int len;
715 char *p; 805 char *p;
716 806
717 memset((char *)&from,0,sizeof(from)); 807 struct {
718 len=sizeof(from); 808 /*
719 /* Note: under VMS with SOCKETSHR the fourth parameter is currently 809 * As for following union. Trouble is that there are platforms
720 * of type (int *) whereas under other systems it is (void *) if 810 * that have socklen_t and there are platforms that don't, on
721 * you don't have a cast it will choke the compiler: if you do 811 * some platforms socklen_t is int and on some size_t. So what
722 * have a cast then you can either go for (int *) or (void *). 812 * one can do? One can cook #ifdef spaghetti, which is nothing
813 * but masochistic. Or one can do union between int and size_t.
814 * One naturally does it primarily for 64-bit platforms where
815 * sizeof(int) != sizeof(size_t). But would it work? Note that
816 * if size_t member is initialized to 0, then later int member
817 * assignment naturally does the job on little-endian platforms
818 * regardless accept's expectations! What about big-endians?
819 * If accept expects int*, then it works, and if size_t*, then
820 * length value would appear as unreasonably large. But this
821 * won't prevent it from filling in the address structure. The
822 * trouble of course would be if accept returns more data than
823 * actual buffer can accomodate and overwrite stack... That's
824 * where early OPENSSL_assert comes into picture. Besides, the
825 * only 64-bit big-endian platform found so far that expects
826 * size_t* is HP-UX, where stack grows towards higher address.
827 * <appro>
723 */ 828 */
724 ret=accept(sock,(struct sockaddr *)&from,(void *)&len); 829 union { size_t s; int i; } len;
830 union {
831 struct sockaddr sa;
832 struct sockaddr_in sa_in;
833#if OPENSSL_USE_IPV6
834 struct sockaddr_in6 sa_in6;
835#endif
836 } from;
837 } sa;
838
839 sa.len.s=0;
840 sa.len.i=sizeof(sa.from);
841 memset(&sa.from,0,sizeof(sa.from));
842 ret=accept(sock,&sa.from.sa,(void *)&sa.len);
843 if (sizeof(sa.len.i)!=sizeof(sa.len.s) && sa.len.i==0)
844 {
845 OPENSSL_assert(sa.len.s<=sizeof(sa.from));
846 sa.len.i = (int)sa.len.s;
847 /* use sa.len.i from this point */
848 }
725 if (ret == INVALID_SOCKET) 849 if (ret == INVALID_SOCKET)
726 { 850 {
727 if(BIO_sock_should_retry(ret)) return -2; 851 if(BIO_sock_should_retry(ret)) return -2;
@@ -732,8 +856,46 @@ int BIO_accept(int sock, char **addr)
732 856
733 if (addr == NULL) goto end; 857 if (addr == NULL) goto end;
734 858
735 l=ntohl(from.sin_addr.s_addr); 859#ifdef EAI_FAMILY
736 port=ntohs(from.sin_port); 860 do {
861 char h[NI_MAXHOST],s[NI_MAXSERV];
862 size_t nl;
863 static union { void *p;
864 int (WSAAPI *f)(const struct sockaddr *,size_t/*socklen_t*/,
865 char *,size_t,char *,size_t,int);
866 } p_getnameinfo = {NULL};
867 /* 2nd argument to getnameinfo is specified to
868 * be socklen_t. Unfortunately there is a number
869 * of environments where socklen_t is not defined.
870 * As it's passed by value, it's safe to pass it
871 * as size_t... <appro> */
872
873 if (p_getnameinfo.p==NULL)
874 {
875 if ((p_getnameinfo.p=DSO_global_lookup("getnameinfo"))==NULL)
876 p_getnameinfo.p=(void*)-1;
877 }
878 if (p_getnameinfo.p==(void *)-1) break;
879
880 if ((*p_getnameinfo.f)(&sa.from.sa,sa.len.i,h,sizeof(h),s,sizeof(s),
881 NI_NUMERICHOST|NI_NUMERICSERV)) break;
882 nl = strlen(h)+strlen(s)+2;
883 p = *addr;
884 if (p) { *p = '\0'; p = OPENSSL_realloc(p,nl); }
885 else { p = OPENSSL_malloc(nl); }
886 if (p==NULL)
887 {
888 BIOerr(BIO_F_BIO_ACCEPT,ERR_R_MALLOC_FAILURE);
889 goto end;
890 }
891 *addr = p;
892 BIO_snprintf(*addr,nl,"%s:%s",h,s);
893 goto end;
894 } while(0);
895#endif
896 if (sa.from.sa.sa_family != AF_INET) goto end;
897 l=ntohl(sa.from.sa_in.sin_addr.s_addr);
898 port=ntohs(sa.from.sa_in.sin_port);
737 if (*addr == NULL) 899 if (*addr == NULL)
738 { 900 {
739 if ((p=OPENSSL_malloc(24)) == NULL) 901 if ((p=OPENSSL_malloc(24)) == NULL)
diff --git a/src/lib/libssl/src/crypto/bio/bio.h b/src/lib/libssl/src/crypto/bio/bio.h
index cecb6a7207..152802fbdf 100644
--- a/src/lib/libssl/src/crypto/bio/bio.h
+++ b/src/lib/libssl/src/crypto/bio/bio.h
@@ -95,6 +95,7 @@ extern "C" {
95#define BIO_TYPE_BIO (19|0x0400) /* (half a) BIO pair */ 95#define BIO_TYPE_BIO (19|0x0400) /* (half a) BIO pair */
96#define BIO_TYPE_LINEBUFFER (20|0x0200) /* filter */ 96#define BIO_TYPE_LINEBUFFER (20|0x0200) /* filter */
97#define BIO_TYPE_DGRAM (21|0x0400|0x0100) 97#define BIO_TYPE_DGRAM (21|0x0400|0x0100)
98#define BIO_TYPE_ASN1 (22|0x0200) /* filter */
98#define BIO_TYPE_COMP (23|0x0200) /* filter */ 99#define BIO_TYPE_COMP (23|0x0200) /* filter */
99 100
100#define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */ 101#define BIO_TYPE_DESCRIPTOR 0x0100 /* socket, fd, connect or accept */
@@ -156,8 +157,11 @@ extern "C" {
156 * previous write 157 * previous write
157 * operation */ 158 * operation */
158 159
160#define BIO_CTRL_DGRAM_GET_PEER 46
159#define BIO_CTRL_DGRAM_SET_PEER 44 /* Destination for the data */ 161#define BIO_CTRL_DGRAM_SET_PEER 44 /* Destination for the data */
160 162
163#define BIO_CTRL_DGRAM_SET_NEXT_TIMEOUT 45 /* Next DTLS handshake timeout to
164 * adjust socket timeouts */
161 165
162/* modifiers */ 166/* modifiers */
163#define BIO_FP_READ 0x02 167#define BIO_FP_READ 0x02
@@ -262,7 +266,6 @@ int BIO_method_type(const BIO *b);
262 266
263typedef void bio_info_cb(struct bio_st *, int, const char *, int, long, long); 267typedef void bio_info_cb(struct bio_st *, int, const char *, int, long, long);
264 268
265#ifndef OPENSSL_SYS_WIN16
266typedef struct bio_method_st 269typedef struct bio_method_st
267 { 270 {
268 int type; 271 int type;
@@ -276,21 +279,6 @@ typedef struct bio_method_st
276 int (*destroy)(BIO *); 279 int (*destroy)(BIO *);
277 long (*callback_ctrl)(BIO *, int, bio_info_cb *); 280 long (*callback_ctrl)(BIO *, int, bio_info_cb *);
278 } BIO_METHOD; 281 } BIO_METHOD;
279#else
280typedef struct bio_method_st
281 {
282 int type;
283 const char *name;
284 int (_far *bwrite)();
285 int (_far *bread)();
286 int (_far *bputs)();
287 int (_far *bgets)();
288 long (_far *ctrl)();
289 int (_far *create)();
290 int (_far *destroy)();
291 long (_far *callback_ctrl)();
292 } BIO_METHOD;
293#endif
294 282
295struct bio_st 283struct bio_st
296 { 284 {
@@ -331,6 +319,9 @@ typedef struct bio_f_buffer_ctx_struct
331 int obuf_off; /* write/read offset */ 319 int obuf_off; /* write/read offset */
332 } BIO_F_BUFFER_CTX; 320 } BIO_F_BUFFER_CTX;
333 321
322/* Prefix and suffix callback in ASN1 BIO */
323typedef int asn1_ps_func(BIO *b, unsigned char **pbuf, int *plen, void *parg);
324
334/* connect BIO stuff */ 325/* connect BIO stuff */
335#define BIO_CONN_S_BEFORE 1 326#define BIO_CONN_S_BEFORE 1
336#define BIO_CONN_S_GET_IP 2 327#define BIO_CONN_S_GET_IP 2
@@ -393,6 +384,13 @@ typedef struct bio_f_buffer_ctx_struct
393#define BIO_C_RESET_READ_REQUEST 147 384#define BIO_C_RESET_READ_REQUEST 147
394#define BIO_C_SET_MD_CTX 148 385#define BIO_C_SET_MD_CTX 148
395 386
387#define BIO_C_SET_PREFIX 149
388#define BIO_C_GET_PREFIX 150
389#define BIO_C_SET_SUFFIX 151
390#define BIO_C_GET_SUFFIX 152
391
392#define BIO_C_SET_EX_ARG 153
393#define BIO_C_GET_EX_ARG 154
396 394
397#define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg) 395#define BIO_set_app_data(s,arg) BIO_set_ex_data(s,0,arg)
398#define BIO_get_app_data(s) BIO_get_ex_data(s,0) 396#define BIO_get_app_data(s) BIO_get_ex_data(s,0)
@@ -405,7 +403,7 @@ typedef struct bio_f_buffer_ctx_struct
405#define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0) 403#define BIO_get_conn_hostname(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,0)
406#define BIO_get_conn_port(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1) 404#define BIO_get_conn_port(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,1)
407#define BIO_get_conn_ip(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2) 405#define BIO_get_conn_ip(b) BIO_ptr_ctrl(b,BIO_C_GET_CONNECT,2)
408#define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3) 406#define BIO_get_conn_int_port(b) BIO_int_ctrl(b,BIO_C_GET_CONNECT,3,0)
409 407
410 408
411#define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) 409#define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL)
@@ -414,7 +412,7 @@ typedef struct bio_f_buffer_ctx_struct
414#define BIO_set_accept_port(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name) 412#define BIO_set_accept_port(b,name) BIO_ctrl(b,BIO_C_SET_ACCEPT,0,(char *)name)
415#define BIO_get_accept_port(b) BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0) 413#define BIO_get_accept_port(b) BIO_ptr_ctrl(b,BIO_C_GET_ACCEPT,0)
416/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */ 414/* #define BIO_set_nbio(b,n) BIO_ctrl(b,BIO_C_SET_NBIO,(n),NULL) */
417#define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(n)?"a":NULL) 415#define BIO_set_nbio_accept(b,n) BIO_ctrl(b,BIO_C_SET_ACCEPT,1,(n)?(void *)"a":NULL)
418#define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(char *)bio) 416#define BIO_set_accept_bios(b,bio) BIO_ctrl(b,BIO_C_SET_ACCEPT,2,(char *)bio)
419 417
420#define BIO_BIND_NORMAL 0 418#define BIO_BIND_NORMAL 0
@@ -541,6 +539,8 @@ int BIO_ctrl_reset_read_request(BIO *b);
541 (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL) 539 (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_RECV_TIMER_EXP, 0, NULL)
542#define BIO_dgram_send_timedout(b) \ 540#define BIO_dgram_send_timedout(b) \
543 (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL) 541 (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_SEND_TIMER_EXP, 0, NULL)
542#define BIO_dgram_get_peer(b,peer) \
543 (int)BIO_ctrl(b, BIO_CTRL_DGRAM_GET_PEER, 0, (char *)peer)
544#define BIO_dgram_set_peer(b,peer) \ 544#define BIO_dgram_set_peer(b,peer) \
545 (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)peer) 545 (int)BIO_ctrl(b, BIO_CTRL_DGRAM_SET_PEER, 0, (char *)peer)
546 546
@@ -554,22 +554,21 @@ int BIO_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
554unsigned long BIO_number_read(BIO *bio); 554unsigned long BIO_number_read(BIO *bio);
555unsigned long BIO_number_written(BIO *bio); 555unsigned long BIO_number_written(BIO *bio);
556 556
557/* For BIO_f_asn1() */
558int BIO_asn1_set_prefix(BIO *b, asn1_ps_func *prefix,
559 asn1_ps_func *prefix_free);
560int BIO_asn1_get_prefix(BIO *b, asn1_ps_func **pprefix,
561 asn1_ps_func **pprefix_free);
562int BIO_asn1_set_suffix(BIO *b, asn1_ps_func *suffix,
563 asn1_ps_func *suffix_free);
564int BIO_asn1_get_suffix(BIO *b, asn1_ps_func **psuffix,
565 asn1_ps_func **psuffix_free);
566
557# ifndef OPENSSL_NO_FP_API 567# ifndef OPENSSL_NO_FP_API
558# if defined(OPENSSL_SYS_WIN16) && defined(_WINDLL)
559BIO_METHOD *BIO_s_file_internal(void);
560BIO *BIO_new_file_internal(char *filename, char *mode);
561BIO *BIO_new_fp_internal(FILE *stream, int close_flag);
562# define BIO_s_file BIO_s_file_internal
563# define BIO_new_file BIO_new_file_internal
564# define BIO_new_fp BIO_new_fp_internal
565# else /* FP_API */
566BIO_METHOD *BIO_s_file(void ); 568BIO_METHOD *BIO_s_file(void );
567BIO *BIO_new_file(const char *filename, const char *mode); 569BIO *BIO_new_file(const char *filename, const char *mode);
568BIO *BIO_new_fp(FILE *stream, int close_flag); 570BIO *BIO_new_fp(FILE *stream, int close_flag);
569# define BIO_s_file_internal BIO_s_file 571# define BIO_s_file_internal BIO_s_file
570# define BIO_new_file_internal BIO_new_file
571# define BIO_new_fp_internal BIO_s_file
572# endif /* FP_API */
573# endif 572# endif
574BIO * BIO_new(BIO_METHOD *type); 573BIO * BIO_new(BIO_METHOD *type);
575int BIO_set(BIO *a,BIO_METHOD *type); 574int BIO_set(BIO *a,BIO_METHOD *type);
@@ -598,13 +597,8 @@ int BIO_nread(BIO *bio, char **buf, int num);
598int BIO_nwrite0(BIO *bio, char **buf); 597int BIO_nwrite0(BIO *bio, char **buf);
599int BIO_nwrite(BIO *bio, char **buf, int num); 598int BIO_nwrite(BIO *bio, char **buf, int num);
600 599
601#ifndef OPENSSL_SYS_WIN16
602long BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi, 600long BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi,
603 long argl,long ret); 601 long argl,long ret);
604#else
605long _far _loadds BIO_debug_callback(BIO *bio,int cmd,const char *argp,int argi,
606 long argl,long ret);
607#endif
608 602
609BIO_METHOD *BIO_s_mem(void); 603BIO_METHOD *BIO_s_mem(void);
610BIO *BIO_new_mem_buf(void *buf, int len); 604BIO *BIO_new_mem_buf(void *buf, int len);
diff --git a/src/lib/libssl/src/crypto/bio/bio_cb.c b/src/lib/libssl/src/crypto/bio/bio_cb.c
index 6f4254a114..9bcbc321d9 100644
--- a/src/lib/libssl/src/crypto/bio/bio_cb.c
+++ b/src/lib/libssl/src/crypto/bio/bio_cb.c
@@ -85,28 +85,32 @@ long MS_CALLBACK BIO_debug_callback(BIO *bio, int cmd, const char *argp,
85 break; 85 break;
86 case BIO_CB_READ: 86 case BIO_CB_READ:
87 if (bio->method->type & BIO_TYPE_DESCRIPTOR) 87 if (bio->method->type & BIO_TYPE_DESCRIPTOR)
88 BIO_snprintf(p,p_maxlen,"read(%d,%d) - %s fd=%d\n", 88 BIO_snprintf(p,p_maxlen,"read(%d,%lu) - %s fd=%d\n",
89 bio->num,argi,bio->method->name,bio->num); 89 bio->num,(unsigned long)argi,
90 bio->method->name,bio->num);
90 else 91 else
91 BIO_snprintf(p,p_maxlen,"read(%d,%d) - %s\n", 92 BIO_snprintf(p,p_maxlen,"read(%d,%lu) - %s\n",
92 bio->num,argi,bio->method->name); 93 bio->num,(unsigned long)argi,
94 bio->method->name);
93 break; 95 break;
94 case BIO_CB_WRITE: 96 case BIO_CB_WRITE:
95 if (bio->method->type & BIO_TYPE_DESCRIPTOR) 97 if (bio->method->type & BIO_TYPE_DESCRIPTOR)
96 BIO_snprintf(p,p_maxlen,"write(%d,%d) - %s fd=%d\n", 98 BIO_snprintf(p,p_maxlen,"write(%d,%lu) - %s fd=%d\n",
97 bio->num,argi,bio->method->name,bio->num); 99 bio->num,(unsigned long)argi,
100 bio->method->name,bio->num);
98 else 101 else
99 BIO_snprintf(p,p_maxlen,"write(%d,%d) - %s\n", 102 BIO_snprintf(p,p_maxlen,"write(%d,%lu) - %s\n",
100 bio->num,argi,bio->method->name); 103 bio->num,(unsigned long)argi,
104 bio->method->name);
101 break; 105 break;
102 case BIO_CB_PUTS: 106 case BIO_CB_PUTS:
103 BIO_snprintf(p,p_maxlen,"puts() - %s\n",bio->method->name); 107 BIO_snprintf(p,p_maxlen,"puts() - %s\n",bio->method->name);
104 break; 108 break;
105 case BIO_CB_GETS: 109 case BIO_CB_GETS:
106 BIO_snprintf(p,p_maxlen,"gets(%d) - %s\n",argi,bio->method->name); 110 BIO_snprintf(p,p_maxlen,"gets(%lu) - %s\n",(unsigned long)argi,bio->method->name);
107 break; 111 break;
108 case BIO_CB_CTRL: 112 case BIO_CB_CTRL:
109 BIO_snprintf(p,p_maxlen,"ctrl(%d) - %s\n",argi,bio->method->name); 113 BIO_snprintf(p,p_maxlen,"ctrl(%lu) - %s\n",(unsigned long)argi,bio->method->name);
110 break; 114 break;
111 case BIO_CB_RETURN|BIO_CB_READ: 115 case BIO_CB_RETURN|BIO_CB_READ:
112 BIO_snprintf(p,p_maxlen,"read return %ld\n",ret); 116 BIO_snprintf(p,p_maxlen,"read return %ld\n",ret);
diff --git a/src/lib/libssl/src/crypto/bio/bio_err.c b/src/lib/libssl/src/crypto/bio/bio_err.c
index 6603f1c74d..a224edd5a0 100644
--- a/src/lib/libssl/src/crypto/bio/bio_err.c
+++ b/src/lib/libssl/src/crypto/bio/bio_err.c
@@ -1,6 +1,6 @@
1/* crypto/bio/bio_err.c */ 1/* crypto/bio/bio_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
diff --git a/src/lib/libssl/src/crypto/bio/bio_lib.c b/src/lib/libssl/src/crypto/bio/bio_lib.c
index 3f52ae953c..77f4de9c32 100644
--- a/src/lib/libssl/src/crypto/bio/bio_lib.c
+++ b/src/lib/libssl/src/crypto/bio/bio_lib.c
@@ -429,7 +429,7 @@ BIO *BIO_push(BIO *b, BIO *bio)
429 if (bio != NULL) 429 if (bio != NULL)
430 bio->prev_bio=lb; 430 bio->prev_bio=lb;
431 /* called to do internal processing */ 431 /* called to do internal processing */
432 BIO_ctrl(b,BIO_CTRL_PUSH,0,NULL); 432 BIO_ctrl(b,BIO_CTRL_PUSH,0,lb);
433 return(b); 433 return(b);
434 } 434 }
435 435
@@ -441,7 +441,7 @@ BIO *BIO_pop(BIO *b)
441 if (b == NULL) return(NULL); 441 if (b == NULL) return(NULL);
442 ret=b->next_bio; 442 ret=b->next_bio;
443 443
444 BIO_ctrl(b,BIO_CTRL_POP,0,NULL); 444 BIO_ctrl(b,BIO_CTRL_POP,0,b);
445 445
446 if (b->prev_bio != NULL) 446 if (b->prev_bio != NULL)
447 b->prev_bio->next_bio=b->next_bio; 447 b->prev_bio->next_bio=b->next_bio;
diff --git a/src/lib/libssl/src/crypto/bio/bss_acpt.c b/src/lib/libssl/src/crypto/bio/bss_acpt.c
index d090b7272f..826f761143 100644
--- a/src/lib/libssl/src/crypto/bio/bss_acpt.c
+++ b/src/lib/libssl/src/crypto/bio/bss_acpt.c
@@ -100,8 +100,8 @@ static int acpt_new(BIO *h);
100static int acpt_free(BIO *data); 100static int acpt_free(BIO *data);
101static int acpt_state(BIO *b, BIO_ACCEPT *c); 101static int acpt_state(BIO *b, BIO_ACCEPT *c);
102static void acpt_close_socket(BIO *data); 102static void acpt_close_socket(BIO *data);
103BIO_ACCEPT *BIO_ACCEPT_new(void ); 103static BIO_ACCEPT *BIO_ACCEPT_new(void );
104void BIO_ACCEPT_free(BIO_ACCEPT *a); 104static void BIO_ACCEPT_free(BIO_ACCEPT *a);
105 105
106#define ACPT_S_BEFORE 1 106#define ACPT_S_BEFORE 1
107#define ACPT_S_GET_ACCEPT_SOCKET 2 107#define ACPT_S_GET_ACCEPT_SOCKET 2
@@ -141,7 +141,7 @@ static int acpt_new(BIO *bi)
141 return(1); 141 return(1);
142 } 142 }
143 143
144BIO_ACCEPT *BIO_ACCEPT_new(void) 144static BIO_ACCEPT *BIO_ACCEPT_new(void)
145 { 145 {
146 BIO_ACCEPT *ret; 146 BIO_ACCEPT *ret;
147 147
@@ -154,7 +154,7 @@ BIO_ACCEPT *BIO_ACCEPT_new(void)
154 return(ret); 154 return(ret);
155 } 155 }
156 156
157void BIO_ACCEPT_free(BIO_ACCEPT *a) 157static void BIO_ACCEPT_free(BIO_ACCEPT *a)
158 { 158 {
159 if(a == NULL) 159 if(a == NULL)
160 return; 160 return;
diff --git a/src/lib/libssl/src/crypto/bio/bss_fd.c b/src/lib/libssl/src/crypto/bio/bss_fd.c
index 4c229bf641..d1bf85aae1 100644
--- a/src/lib/libssl/src/crypto/bio/bss_fd.c
+++ b/src/lib/libssl/src/crypto/bio/bss_fd.c
@@ -60,6 +60,13 @@
60#include <errno.h> 60#include <errno.h>
61#define USE_SOCKETS 61#define USE_SOCKETS
62#include "cryptlib.h" 62#include "cryptlib.h"
63
64#if defined(OPENSSL_NO_POSIX_IO)
65/*
66 * One can argue that one should implement dummy placeholder for
67 * BIO_s_fd here...
68 */
69#else
63/* 70/*
64 * As for unconditional usage of "UPLINK" interface in this module. 71 * As for unconditional usage of "UPLINK" interface in this module.
65 * Trouble is that unlike Unix file descriptors [which are indexes 72 * Trouble is that unlike Unix file descriptors [which are indexes
@@ -77,6 +84,7 @@
77static int fd_write(BIO *h, const char *buf, int num); 84static int fd_write(BIO *h, const char *buf, int num);
78static int fd_read(BIO *h, char *buf, int size); 85static int fd_read(BIO *h, char *buf, int size);
79static int fd_puts(BIO *h, const char *str); 86static int fd_puts(BIO *h, const char *str);
87static int fd_gets(BIO *h, char *buf, int size);
80static long fd_ctrl(BIO *h, int cmd, long arg1, void *arg2); 88static long fd_ctrl(BIO *h, int cmd, long arg1, void *arg2);
81static int fd_new(BIO *h); 89static int fd_new(BIO *h);
82static int fd_free(BIO *data); 90static int fd_free(BIO *data);
@@ -88,7 +96,7 @@ static BIO_METHOD methods_fdp=
88 fd_write, 96 fd_write,
89 fd_read, 97 fd_read,
90 fd_puts, 98 fd_puts,
91 NULL, /* fd_gets, */ 99 fd_gets,
92 fd_ctrl, 100 fd_ctrl,
93 fd_new, 101 fd_new,
94 fd_free, 102 fd_free,
@@ -227,6 +235,22 @@ static int fd_puts(BIO *bp, const char *str)
227 return(ret); 235 return(ret);
228 } 236 }
229 237
238static int fd_gets(BIO *bp, char *buf, int size)
239 {
240 int ret=0;
241 char *ptr=buf;
242 char *end=buf+size-1;
243
244 while ( (ptr < end) && (fd_read(bp, ptr, 1) > 0) && (ptr[0] != '\n') )
245 ptr++;
246
247 ptr[0]='\0';
248
249 if (buf[0] != '\0')
250 ret=strlen(buf);
251 return(ret);
252 }
253
230int BIO_fd_should_retry(int i) 254int BIO_fd_should_retry(int i)
231 { 255 {
232 int err; 256 int err;
@@ -292,3 +316,4 @@ int BIO_fd_non_fatal_error(int err)
292 } 316 }
293 return(0); 317 return(0);
294 } 318 }
319#endif
diff --git a/src/lib/libssl/src/crypto/bio/bss_file.c b/src/lib/libssl/src/crypto/bio/bss_file.c
index 9ad46fa081..8bfa0bcd97 100644
--- a/src/lib/libssl/src/crypto/bio/bss_file.c
+++ b/src/lib/libssl/src/crypto/bio/bss_file.c
@@ -118,10 +118,47 @@ static BIO_METHOD methods_filep=
118 118
119BIO *BIO_new_file(const char *filename, const char *mode) 119BIO *BIO_new_file(const char *filename, const char *mode)
120 { 120 {
121 BIO *ret; 121 BIO *ret;
122 FILE *file; 122 FILE *file=NULL;
123
124#if defined(_WIN32) && defined(CP_UTF8)
125 int sz, len_0 = (int)strlen(filename)+1;
123 126
124 if ((file=fopen(filename,mode)) == NULL) 127 /*
128 * Basically there are three cases to cover: a) filename is
129 * pure ASCII string; b) actual UTF-8 encoded string and
130 * c) locale-ized string, i.e. one containing 8-bit
131 * characters that are meaningful in current system locale.
132 * If filename is pure ASCII or real UTF-8 encoded string,
133 * MultiByteToWideChar succeeds and _wfopen works. If
134 * filename is locale-ized string, chances are that
135 * MultiByteToWideChar fails reporting
136 * ERROR_NO_UNICODE_TRANSLATION, in which case we fall
137 * back to fopen...
138 */
139 if ((sz=MultiByteToWideChar(CP_UTF8,MB_ERR_INVALID_CHARS,
140 filename,len_0,NULL,0))>0)
141 {
142 WCHAR wmode[8];
143 WCHAR *wfilename = _alloca(sz*sizeof(WCHAR));
144
145 if (MultiByteToWideChar(CP_UTF8,MB_ERR_INVALID_CHARS,
146 filename,len_0,wfilename,sz) &&
147 MultiByteToWideChar(CP_UTF8,0,mode,strlen(mode)+1,
148 wmode,sizeof(wmode)/sizeof(wmode[0])) &&
149 (file=_wfopen(wfilename,wmode))==NULL && errno==ENOENT
150 ) /* UTF-8 decode succeeded, but no file, filename
151 * could still have been locale-ized... */
152 file = fopen(filename,mode);
153 }
154 else if (GetLastError()==ERROR_NO_UNICODE_TRANSLATION)
155 {
156 file = fopen(filename,mode);
157 }
158#else
159 file=fopen(filename,mode);
160#endif
161 if (file == NULL)
125 { 162 {
126 SYSerr(SYS_F_FOPEN,get_last_sys_error()); 163 SYSerr(SYS_F_FOPEN,get_last_sys_error());
127 ERR_add_error_data(5,"fopen('",filename,"','",mode,"')"); 164 ERR_add_error_data(5,"fopen('",filename,"','",mode,"')");
@@ -131,7 +168,7 @@ BIO *BIO_new_file(const char *filename, const char *mode)
131 BIOerr(BIO_F_BIO_NEW_FILE,ERR_R_SYS_LIB); 168 BIOerr(BIO_F_BIO_NEW_FILE,ERR_R_SYS_LIB);
132 return(NULL); 169 return(NULL);
133 } 170 }
134 if ((ret=BIO_new(BIO_s_file_internal())) == NULL) 171 if ((ret=BIO_new(BIO_s_file())) == NULL)
135 { 172 {
136 fclose(file); 173 fclose(file);
137 return(NULL); 174 return(NULL);
@@ -272,9 +309,9 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
272 BIO_clear_flags(b,BIO_FLAGS_UPLINK); 309 BIO_clear_flags(b,BIO_FLAGS_UPLINK);
273#endif 310#endif
274#endif 311#endif
275#ifdef UP_fsetmode 312#ifdef UP_fsetmod
276 if (b->flags&BIO_FLAGS_UPLINK) 313 if (b->flags&BIO_FLAGS_UPLINK)
277 UP_fsetmode(b->ptr,num&BIO_FP_TEXT?'t':'b'); 314 UP_fsetmod(b->ptr,(char)((num&BIO_FP_TEXT)?'t':'b'));
278 else 315 else
279#endif 316#endif
280 { 317 {
@@ -286,8 +323,7 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
286 _setmode(fd,_O_BINARY); 323 _setmode(fd,_O_BINARY);
287#elif defined(OPENSSL_SYS_NETWARE) && defined(NETWARE_CLIB) 324#elif defined(OPENSSL_SYS_NETWARE) && defined(NETWARE_CLIB)
288 int fd = fileno((FILE*)ptr); 325 int fd = fileno((FILE*)ptr);
289 /* Under CLib there are differences in file modes 326 /* Under CLib there are differences in file modes */
290 */
291 if (num & BIO_FP_TEXT) 327 if (num & BIO_FP_TEXT)
292 setmode(fd,O_TEXT); 328 setmode(fd,O_TEXT);
293 else 329 else
@@ -308,7 +344,7 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
308 else 344 else
309 _setmode(fd,_O_BINARY); 345 _setmode(fd,_O_BINARY);
310 } 346 }
311#elif defined(OPENSSL_SYS_OS2) 347#elif defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_WIN32_CYGWIN)
312 int fd = fileno((FILE*)ptr); 348 int fd = fileno((FILE*)ptr);
313 if (num & BIO_FP_TEXT) 349 if (num & BIO_FP_TEXT)
314 setmode(fd, O_TEXT); 350 setmode(fd, O_TEXT);
@@ -404,11 +440,18 @@ static int MS_CALLBACK file_gets(BIO *bp, char *buf, int size)
404 440
405 buf[0]='\0'; 441 buf[0]='\0';
406 if (bp->flags&BIO_FLAGS_UPLINK) 442 if (bp->flags&BIO_FLAGS_UPLINK)
407 UP_fgets(buf,size,bp->ptr); 443 {
444 if (!UP_fgets(buf,size,bp->ptr))
445 goto err;
446 }
408 else 447 else
409 fgets(buf,size,(FILE *)bp->ptr); 448 {
449 if (!fgets(buf,size,(FILE *)bp->ptr))
450 goto err;
451 }
410 if (buf[0] != '\0') 452 if (buf[0] != '\0')
411 ret=strlen(buf); 453 ret=strlen(buf);
454 err:
412 return(ret); 455 return(ret);
413 } 456 }
414 457
diff --git a/src/lib/libssl/src/crypto/bio/bss_log.c b/src/lib/libssl/src/crypto/bio/bss_log.c
index 6360dbc820..7ead044b37 100644
--- a/src/lib/libssl/src/crypto/bio/bss_log.c
+++ b/src/lib/libssl/src/crypto/bio/bss_log.c
@@ -70,7 +70,6 @@
70 70
71#if defined(OPENSSL_SYS_WINCE) 71#if defined(OPENSSL_SYS_WINCE)
72#elif defined(OPENSSL_SYS_WIN32) 72#elif defined(OPENSSL_SYS_WIN32)
73# include <process.h>
74#elif defined(OPENSSL_SYS_VMS) 73#elif defined(OPENSSL_SYS_VMS)
75# include <opcdef.h> 74# include <opcdef.h>
76# include <descrip.h> 75# include <descrip.h>
@@ -122,18 +121,6 @@ static int MS_CALLBACK slg_free(BIO *data);
122static void xopenlog(BIO* bp, char* name, int level); 121static void xopenlog(BIO* bp, char* name, int level);
123static void xsyslog(BIO* bp, int priority, const char* string); 122static void xsyslog(BIO* bp, int priority, const char* string);
124static void xcloselog(BIO* bp); 123static void xcloselog(BIO* bp);
125#ifdef OPENSSL_SYS_WIN32
126LONG (WINAPI *go_for_advapi)() = RegOpenKeyEx;
127HANDLE (WINAPI *register_event_source)() = NULL;
128BOOL (WINAPI *deregister_event_source)() = NULL;
129BOOL (WINAPI *report_event)() = NULL;
130#define DL_PROC(m,f) (GetProcAddress( m, f ))
131#ifdef UNICODE
132#define DL_PROC_X(m,f) DL_PROC( m, f "W" )
133#else
134#define DL_PROC_X(m,f) DL_PROC( m, f "A" )
135#endif
136#endif
137 124
138static BIO_METHOD methods_slg= 125static BIO_METHOD methods_slg=
139 { 126 {
@@ -175,7 +162,7 @@ static int MS_CALLBACK slg_write(BIO *b, const char *in, int inl)
175 char* buf; 162 char* buf;
176 char* pp; 163 char* pp;
177 int priority, i; 164 int priority, i;
178 static struct 165 static const struct
179 { 166 {
180 int strl; 167 int strl;
181 char str[10]; 168 char str[10];
@@ -249,35 +236,20 @@ static int MS_CALLBACK slg_puts(BIO *bp, const char *str)
249 236
250static void xopenlog(BIO* bp, char* name, int level) 237static void xopenlog(BIO* bp, char* name, int level)
251{ 238{
252 if ( !register_event_source ) 239 if (GetVersion() < 0x80000000)
253 { 240 bp->ptr = RegisterEventSourceA(NULL,name);
254 HANDLE advapi; 241 else
255 if ( !(advapi = GetModuleHandle("advapi32")) ) 242 bp->ptr = NULL;
256 return;
257 register_event_source = (HANDLE (WINAPI *)())DL_PROC_X(advapi,
258 "RegisterEventSource" );
259 deregister_event_source = (BOOL (WINAPI *)())DL_PROC(advapi,
260 "DeregisterEventSource");
261 report_event = (BOOL (WINAPI *)())DL_PROC_X(advapi,
262 "ReportEvent" );
263 if ( !(register_event_source && deregister_event_source &&
264 report_event) )
265 {
266 register_event_source = NULL;
267 deregister_event_source = NULL;
268 report_event = NULL;
269 return;
270 }
271 }
272 bp->ptr= (char *)register_event_source(NULL, name);
273} 243}
274 244
275static void xsyslog(BIO *bp, int priority, const char *string) 245static void xsyslog(BIO *bp, int priority, const char *string)
276{ 246{
277 LPCSTR lpszStrings[2]; 247 LPCSTR lpszStrings[2];
278 WORD evtype= EVENTLOG_ERROR_TYPE; 248 WORD evtype= EVENTLOG_ERROR_TYPE;
279 int pid = _getpid(); 249 char pidbuf[DECIMAL_SIZE(DWORD)+4];
280 char pidbuf[DECIMAL_SIZE(pid)+4]; 250
251 if (bp->ptr == NULL)
252 return;
281 253
282 switch (priority) 254 switch (priority)
283 { 255 {
@@ -301,19 +273,18 @@ static void xsyslog(BIO *bp, int priority, const char *string)
301 break; 273 break;
302 } 274 }
303 275
304 sprintf(pidbuf, "[%d] ", pid); 276 sprintf(pidbuf, "[%u] ", GetCurrentProcessId());
305 lpszStrings[0] = pidbuf; 277 lpszStrings[0] = pidbuf;
306 lpszStrings[1] = string; 278 lpszStrings[1] = string;
307 279
308 if(report_event && bp->ptr) 280 ReportEventA(bp->ptr, evtype, 0, 1024, NULL, 2, 0,
309 report_event(bp->ptr, evtype, 0, 1024, NULL, 2, 0,
310 lpszStrings, NULL); 281 lpszStrings, NULL);
311} 282}
312 283
313static void xcloselog(BIO* bp) 284static void xcloselog(BIO* bp)
314{ 285{
315 if(deregister_event_source && bp->ptr) 286 if(bp->ptr)
316 deregister_event_source((HANDLE)(bp->ptr)); 287 DeregisterEventSource((HANDLE)(bp->ptr));
317 bp->ptr= NULL; 288 bp->ptr= NULL;
318} 289}
319 290
diff --git a/src/lib/libssl/src/crypto/bio/bss_mem.c b/src/lib/libssl/src/crypto/bio/bss_mem.c
index e7ab9cb3a3..37d4194e4b 100644
--- a/src/lib/libssl/src/crypto/bio/bss_mem.c
+++ b/src/lib/libssl/src/crypto/bio/bss_mem.c
@@ -94,16 +94,18 @@ BIO *BIO_new_mem_buf(void *buf, int len)
94{ 94{
95 BIO *ret; 95 BIO *ret;
96 BUF_MEM *b; 96 BUF_MEM *b;
97 size_t sz;
98
97 if (!buf) { 99 if (!buf) {
98 BIOerr(BIO_F_BIO_NEW_MEM_BUF,BIO_R_NULL_PARAMETER); 100 BIOerr(BIO_F_BIO_NEW_MEM_BUF,BIO_R_NULL_PARAMETER);
99 return NULL; 101 return NULL;
100 } 102 }
101 if(len == -1) len = strlen(buf); 103 sz = (len<0) ? strlen(buf) : (size_t)len;
102 if(!(ret = BIO_new(BIO_s_mem())) ) return NULL; 104 if(!(ret = BIO_new(BIO_s_mem())) ) return NULL;
103 b = (BUF_MEM *)ret->ptr; 105 b = (BUF_MEM *)ret->ptr;
104 b->data = buf; 106 b->data = buf;
105 b->length = len; 107 b->length = sz;
106 b->max = len; 108 b->max = sz;
107 ret->flags |= BIO_FLAGS_MEM_RDONLY; 109 ret->flags |= BIO_FLAGS_MEM_RDONLY;
108 /* Since this is static data retrying wont help */ 110 /* Since this is static data retrying wont help */
109 ret->num = 0; 111 ret->num = 0;
@@ -144,22 +146,16 @@ static int mem_read(BIO *b, char *out, int outl)
144 { 146 {
145 int ret= -1; 147 int ret= -1;
146 BUF_MEM *bm; 148 BUF_MEM *bm;
147 int i;
148 char *from,*to;
149 149
150 bm=(BUF_MEM *)b->ptr; 150 bm=(BUF_MEM *)b->ptr;
151 BIO_clear_retry_flags(b); 151 BIO_clear_retry_flags(b);
152 ret=(outl > bm->length)?bm->length:outl; 152 ret=(outl >=0 && (size_t)outl > bm->length)?(int)bm->length:outl;
153 if ((out != NULL) && (ret > 0)) { 153 if ((out != NULL) && (ret > 0)) {
154 memcpy(out,bm->data,ret); 154 memcpy(out,bm->data,ret);
155 bm->length-=ret; 155 bm->length-=ret;
156 /* memmove(&(bm->data[0]),&(bm->data[ret]), bm->length); */
157 if(b->flags & BIO_FLAGS_MEM_RDONLY) bm->data += ret; 156 if(b->flags & BIO_FLAGS_MEM_RDONLY) bm->data += ret;
158 else { 157 else {
159 from=(char *)&(bm->data[ret]); 158 memmove(&(bm->data[0]),&(bm->data[ret]),bm->length);
160 to=(char *)&(bm->data[0]);
161 for (i=0; i<bm->length; i++)
162 to[i]=from[i];
163 } 159 }
164 } else if (bm->length == 0) 160 } else if (bm->length == 0)
165 { 161 {
diff --git a/src/lib/libssl/src/crypto/bio/bss_sock.c b/src/lib/libssl/src/crypto/bio/bss_sock.c
index 30c3ceab46..3df31938c1 100644
--- a/src/lib/libssl/src/crypto/bio/bss_sock.c
+++ b/src/lib/libssl/src/crypto/bio/bss_sock.c
@@ -172,15 +172,6 @@ static long sock_ctrl(BIO *b, int cmd, long num, void *ptr)
172 172
173 switch (cmd) 173 switch (cmd)
174 { 174 {
175 case BIO_CTRL_RESET:
176 num=0;
177 case BIO_C_FILE_SEEK:
178 ret=0;
179 break;
180 case BIO_C_FILE_TELL:
181 case BIO_CTRL_INFO:
182 ret=0;
183 break;
184 case BIO_C_SET_FD: 175 case BIO_C_SET_FD:
185 sock_free(b); 176 sock_free(b);
186 b->num= *((int *)ptr); 177 b->num= *((int *)ptr);
@@ -203,10 +194,6 @@ static long sock_ctrl(BIO *b, int cmd, long num, void *ptr)
203 case BIO_CTRL_SET_CLOSE: 194 case BIO_CTRL_SET_CLOSE:
204 b->shutdown=(int)num; 195 b->shutdown=(int)num;
205 break; 196 break;
206 case BIO_CTRL_PENDING:
207 case BIO_CTRL_WPENDING:
208 ret=0;
209 break;
210 case BIO_CTRL_DUP: 197 case BIO_CTRL_DUP:
211 case BIO_CTRL_FLUSH: 198 case BIO_CTRL_FLUSH:
212 ret=1; 199 ret=1;
diff --git a/src/lib/libssl/src/crypto/bn/Makefile b/src/lib/libssl/src/crypto/bn/Makefile
index f5e8f65a46..aabc4f56b8 100644
--- a/src/lib/libssl/src/crypto/bn/Makefile
+++ b/src/lib/libssl/src/crypto/bn/Makefile
@@ -12,8 +12,6 @@ MAKEFILE= Makefile
12AR= ar r 12AR= ar r
13 13
14BN_ASM= bn_asm.o 14BN_ASM= bn_asm.o
15# or use
16#BN_ASM= bn86-elf.o
17 15
18CFLAGS= $(INCLUDES) $(CFLAG) 16CFLAGS= $(INCLUDES) $(CFLAG)
19ASFLAGS= $(INCLUDES) $(ASFLAG) 17ASFLAGS= $(INCLUDES) $(ASFLAG)
@@ -28,13 +26,13 @@ LIBSRC= bn_add.c bn_div.c bn_exp.c bn_lib.c bn_ctx.c bn_mul.c bn_mod.c \
28 bn_print.c bn_rand.c bn_shift.c bn_word.c bn_blind.c \ 26 bn_print.c bn_rand.c bn_shift.c bn_word.c bn_blind.c \
29 bn_kron.c bn_sqrt.c bn_gcd.c bn_prime.c bn_err.c bn_sqr.c bn_asm.c \ 27 bn_kron.c bn_sqrt.c bn_gcd.c bn_prime.c bn_err.c bn_sqr.c bn_asm.c \
30 bn_recp.c bn_mont.c bn_mpi.c bn_exp2.c bn_gf2m.c bn_nist.c \ 28 bn_recp.c bn_mont.c bn_mpi.c bn_exp2.c bn_gf2m.c bn_nist.c \
31 bn_depr.c bn_x931p.c bn_const.c bn_opt.c 29 bn_depr.c bn_const.c
32 30
33LIBOBJ= bn_add.o bn_div.o bn_exp.o bn_lib.o bn_ctx.o bn_mul.o bn_mod.o \ 31LIBOBJ= bn_add.o bn_div.o bn_exp.o bn_lib.o bn_ctx.o bn_mul.o bn_mod.o \
34 bn_print.o bn_rand.o bn_shift.o bn_word.o bn_blind.o \ 32 bn_print.o bn_rand.o bn_shift.o bn_word.o bn_blind.o \
35 bn_kron.o bn_sqrt.o bn_gcd.o bn_prime.o bn_err.o bn_sqr.o $(BN_ASM) \ 33 bn_kron.o bn_sqrt.o bn_gcd.o bn_prime.o bn_err.o bn_sqr.o $(BN_ASM) \
36 bn_recp.o bn_mont.o bn_mpi.o bn_exp2.o bn_gf2m.o bn_nist.o \ 34 bn_recp.o bn_mont.o bn_mpi.o bn_exp2.o bn_gf2m.o bn_nist.o \
37 bn_depr.o bn_x931p.o bn_const.o bn_opt.o 35 bn_depr.o bn_const.o
38 36
39SRC= $(LIBSRC) 37SRC= $(LIBSRC)
40 38
@@ -58,36 +56,25 @@ bnbug: bnbug.c ../../libcrypto.a top
58 cc -g -I../../include bnbug.c -o bnbug ../../libcrypto.a 56 cc -g -I../../include bnbug.c -o bnbug ../../libcrypto.a
59 57
60lib: $(LIBOBJ) 58lib: $(LIBOBJ)
61 $(ARX) $(LIB) $(LIBOBJ) 59 $(AR) $(LIB) $(LIBOBJ)
62 $(RANLIB) $(LIB) || echo Never mind. 60 $(RANLIB) $(LIB) || echo Never mind.
63 @touch lib 61 @touch lib
64 62
65# ELF 63bn-586.s: asm/bn-586.pl ../perlasm/x86asm.pl
66bn86-elf.s: asm/bn-586.pl ../perlasm/x86asm.pl 64 $(PERL) asm/bn-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
67 (cd asm; $(PERL) bn-586.pl elf $(CFLAGS) > ../$@) 65co-586.s: asm/co-586.pl ../perlasm/x86asm.pl
68co86-elf.s: asm/co-586.pl ../perlasm/x86asm.pl 66 $(PERL) asm/co-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
69 (cd asm; $(PERL) co-586.pl elf $(CFLAGS) > ../$@) 67x86-mont.s: asm/x86-mont.pl ../perlasm/x86asm.pl
70mo86-elf.s: asm/mo-586.pl ../perlasm/x86asm.pl 68 $(PERL) asm/x86-mont.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
71 (cd asm; $(PERL) mo-586.pl elf $(CFLAGS) > ../$@)
72# COFF
73bn86-cof.s: asm/bn-586.pl ../perlasm/x86asm.pl
74 (cd asm; $(PERL) bn-586.pl coff $(CFLAGS) > ../$@)
75co86-cof.s: asm/co-586.pl ../perlasm/x86asm.pl
76 (cd asm; $(PERL) co-586.pl coff $(CFLAGS) > ../$@)
77mo86-cof.s: asm/mo-586.pl ../perlasm/x86asm.pl
78 (cd asm; $(PERL) mo-586.pl coff $(CFLAGS) > ../$@)
79# a.out
80bn86-out.s: asm/bn-586.pl ../perlasm/x86asm.pl
81 (cd asm; $(PERL) bn-586.pl a.out $(CFLAGS) > ../$@)
82co86-out.s: asm/co-586.pl ../perlasm/x86asm.pl
83 (cd asm; $(PERL) co-586.pl a.out $(CFLAGS) > ../$@)
84mo86-out.s: asm/mo-586.pl ../perlasm/x86asm.pl
85 (cd asm; $(PERL) mo-586.pl a.out $(CFLAGS) > ../$@)
86 69
87sparcv8.o: asm/sparcv8.S 70sparcv8.o: asm/sparcv8.S
88 $(CC) $(CFLAGS) -c asm/sparcv8.S 71 $(CC) $(CFLAGS) -c asm/sparcv8.S
89sparcv8plus.o: asm/sparcv8plus.S 72bn-sparcv9.o: asm/sparcv8plus.S
90 $(CC) $(CFLAGS) -c asm/sparcv8plus.S 73 $(CC) $(CFLAGS) -c -o $@ asm/sparcv8plus.S
74sparcv9a-mont.s: asm/sparcv9a-mont.pl
75 $(PERL) asm/sparcv9a-mont.pl $(CFLAGS) > $@
76sparcv9-mont.s: asm/sparcv9-mont.pl
77 $(PERL) asm/sparcv9-mont.pl $(CFLAGS) > $@
91 78
92bn-mips3.o: asm/mips3.s 79bn-mips3.o: asm/mips3.s
93 @if [ "$(CC)" = "gcc" ]; then \ 80 @if [ "$(CC)" = "gcc" ]; then \
@@ -95,10 +82,13 @@ bn-mips3.o: asm/mips3.s
95 as -$$ABI -O -o $@ asm/mips3.s; \ 82 as -$$ABI -O -o $@ asm/mips3.s; \
96 else $(CC) -c $(CFLAGS) -o $@ asm/mips3.s; fi 83 else $(CC) -c $(CFLAGS) -o $@ asm/mips3.s; fi
97 84
85bn-s390x.o: asm/s390x.S
86 $(CC) $(CFLAGS) -c -o $@ asm/s390x.S
87
98x86_64-gcc.o: asm/x86_64-gcc.c 88x86_64-gcc.o: asm/x86_64-gcc.c
99 $(CC) $(CFLAGS) -c -o $@ asm/x86_64-gcc.c 89 $(CC) $(CFLAGS) -c -o $@ asm/x86_64-gcc.c
100x86_64-mont.s: asm/x86_64-mont.pl 90x86_64-mont.s: asm/x86_64-mont.pl
101 $(PERL) asm/x86_64-mont.pl $@ 91 $(PERL) asm/x86_64-mont.pl $(PERLASM_SCHEME) > $@
102 92
103bn-ia64.s: asm/ia64.S 93bn-ia64.s: asm/ia64.S
104 $(CC) $(CFLAGS) -E asm/ia64.S > $@ 94 $(CC) $(CFLAGS) -E asm/ia64.S > $@
@@ -111,12 +101,14 @@ pa-risc2.o: asm/pa-risc2.s
111 /usr/ccs/bin/as -o pa-risc2.o asm/pa-risc2.s 101 /usr/ccs/bin/as -o pa-risc2.o asm/pa-risc2.s
112 102
113# ppc - AIX, Linux, MacOS X... 103# ppc - AIX, Linux, MacOS X...
114linux_ppc32.s: asm/ppc.pl; $(PERL) $< $@ 104bn-ppc.s: asm/ppc.pl; $(PERL) asm/ppc.pl $(PERLASM_SCHEME) $@
115linux_ppc64.s: asm/ppc.pl; $(PERL) $< $@ 105ppc-mont.s: asm/ppc-mont.pl;$(PERL) asm/ppc-mont.pl $(PERLASM_SCHEME) $@
116aix_ppc32.s: asm/ppc.pl; $(PERL) asm/ppc.pl $@ 106
117aix_ppc64.s: asm/ppc.pl; $(PERL) asm/ppc.pl $@ 107alpha-mont.s: asm/alpha-mont.pl
118osx_ppc32.s: asm/ppc.pl; $(PERL) $< $@ 108 $(PERL) $< | $(CC) -E - | tee $@ > /dev/null
119osx_ppc64.s: asm/ppc.pl; $(PERL) $< $@ 109
110# GNU make "catch all"
111%-mont.s: asm/%-mont.pl; $(PERL) $< $(CFLAGS) > $@
120 112
121files: 113files:
122 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 114 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -184,8 +176,11 @@ bn_blind.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
184bn_blind.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 176bn_blind.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
185bn_blind.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 177bn_blind.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
186bn_blind.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_blind.c bn_lcl.h 178bn_blind.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_blind.c bn_lcl.h
187bn_const.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 179bn_const.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
188bn_const.o: ../../include/openssl/ossl_typ.h bn.h bn_const.c 180bn_const.o: ../../include/openssl/opensslconf.h
181bn_const.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
182bn_const.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
183bn_const.o: ../../include/openssl/symhacks.h bn.h bn_const.c
189bn_ctx.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h 184bn_ctx.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
190bn_ctx.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 185bn_ctx.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
191bn_ctx.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 186bn_ctx.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
@@ -292,13 +287,6 @@ bn_nist.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
292bn_nist.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 287bn_nist.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
293bn_nist.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 288bn_nist.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
294bn_nist.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_nist.c 289bn_nist.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_nist.c
295bn_opt.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
296bn_opt.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
297bn_opt.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
298bn_opt.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
299bn_opt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
300bn_opt.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
301bn_opt.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_opt.c
302bn_prime.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h 290bn_prime.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
303bn_prime.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 291bn_prime.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
304bn_prime.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 292bn_prime.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
@@ -357,6 +345,3 @@ bn_word.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
357bn_word.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 345bn_word.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
358bn_word.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 346bn_word.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
359bn_word.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_word.c 347bn_word.o: ../../include/openssl/symhacks.h ../cryptlib.h bn_lcl.h bn_word.c
360bn_x931p.o: ../../include/openssl/bn.h ../../include/openssl/e_os2.h
361bn_x931p.o: ../../include/openssl/opensslconf.h
362bn_x931p.o: ../../include/openssl/ossl_typ.h bn_x931p.c
diff --git a/src/lib/libssl/src/crypto/bn/asm/bn-586.pl b/src/lib/libssl/src/crypto/bn/asm/bn-586.pl
index 26c2685a72..332ef3e91d 100644
--- a/src/lib/libssl/src/crypto/bn/asm/bn-586.pl
+++ b/src/lib/libssl/src/crypto/bn/asm/bn-586.pl
@@ -1,6 +1,7 @@
1#!/usr/local/bin/perl 1#!/usr/local/bin/perl
2 2
3push(@INC,"perlasm","../../perlasm"); 3$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
4push(@INC,"${dir}","${dir}../../perlasm");
4require "x86asm.pl"; 5require "x86asm.pl";
5 6
6&asm_init($ARGV[0],$0); 7&asm_init($ARGV[0],$0);
@@ -24,38 +25,25 @@ sub bn_mul_add_words
24 { 25 {
25 local($name)=@_; 26 local($name)=@_;
26 27
27 &function_begin($name,$sse2?"EXTRN\t_OPENSSL_ia32cap_P:DWORD":""); 28 &function_begin_B($name,$sse2?"EXTRN\t_OPENSSL_ia32cap_P:DWORD":"");
28 29
29 &comment(""); 30 $r="eax";
30 $Low="eax"; 31 $a="edx";
31 $High="edx"; 32 $c="ecx";
32 $a="ebx";
33 $w="ebp";
34 $r="edi";
35 $c="esi";
36
37 &xor($c,$c); # clear carry
38 &mov($r,&wparam(0)); #
39
40 &mov("ecx",&wparam(2)); #
41 &mov($a,&wparam(1)); #
42
43 &and("ecx",0xfffffff8); # num / 8
44 &mov($w,&wparam(3)); #
45
46 &push("ecx"); # Up the stack for a tmp variable
47
48 &jz(&label("maw_finish"));
49 33
50 if ($sse2) { 34 if ($sse2) {
51 &picmeup("eax","OPENSSL_ia32cap_P"); 35 &picmeup("eax","OPENSSL_ia32cap_P");
52 &bt(&DWP(0,"eax"),26); 36 &bt(&DWP(0,"eax"),26);
53 &jnc(&label("maw_loop")); 37 &jnc(&label("maw_non_sse2"));
54 38
55 &movd("mm0",$w); # mm0 = w 39 &mov($r,&wparam(0));
40 &mov($a,&wparam(1));
41 &mov($c,&wparam(2));
42 &movd("mm0",&wparam(3)); # mm0 = w
56 &pxor("mm1","mm1"); # mm1 = carry_in 43 &pxor("mm1","mm1"); # mm1 = carry_in
57 44 &jmp(&label("maw_sse2_entry"));
58 &set_label("maw_sse2_loop",0); 45
46 &set_label("maw_sse2_unrolled",16);
59 &movd("mm3",&DWP(0,$r,"",0)); # mm3 = r[0] 47 &movd("mm3",&DWP(0,$r,"",0)); # mm3 = r[0]
60 &paddq("mm1","mm3"); # mm1 = carry_in + r[0] 48 &paddq("mm1","mm3"); # mm1 = carry_in + r[0]
61 &movd("mm2",&DWP(0,$a,"",0)); # mm2 = a[0] 49 &movd("mm2",&DWP(0,$a,"",0)); # mm2 = a[0]
@@ -112,42 +100,82 @@ sub bn_mul_add_words
112 &psrlq("mm1",32); # mm1 = carry6 100 &psrlq("mm1",32); # mm1 = carry6
113 &paddq("mm1","mm3"); # mm1 = carry6 + r[7] + w*a[7] 101 &paddq("mm1","mm3"); # mm1 = carry6 + r[7] + w*a[7]
114 &movd(&DWP(28,$r,"",0),"mm1"); 102 &movd(&DWP(28,$r,"",0),"mm1");
115 &add($r,32); 103 &lea($r,&DWP(32,$r));
116 &psrlq("mm1",32); # mm1 = carry_out 104 &psrlq("mm1",32); # mm1 = carry_out
117 105
118 &sub("ecx",8); 106 &sub($c,8);
107 &jz(&label("maw_sse2_exit"));
108 &set_label("maw_sse2_entry");
109 &test($c,0xfffffff8);
110 &jnz(&label("maw_sse2_unrolled"));
111
112 &set_label("maw_sse2_loop",4);
113 &movd("mm2",&DWP(0,$a)); # mm2 = a[i]
114 &movd("mm3",&DWP(0,$r)); # mm3 = r[i]
115 &pmuludq("mm2","mm0"); # a[i] *= w
116 &lea($a,&DWP(4,$a));
117 &paddq("mm1","mm3"); # carry += r[i]
118 &paddq("mm1","mm2"); # carry += a[i]*w
119 &movd(&DWP(0,$r),"mm1"); # r[i] = carry_low
120 &sub($c,1);
121 &psrlq("mm1",32); # carry = carry_high
122 &lea($r,&DWP(4,$r));
119 &jnz(&label("maw_sse2_loop")); 123 &jnz(&label("maw_sse2_loop"));
120 124 &set_label("maw_sse2_exit");
121 &movd($c,"mm1"); # c = carry_out 125 &movd("eax","mm1"); # c = carry_out
122 &emms(); 126 &emms();
127 &ret();
123 128
124 &jmp(&label("maw_finish")); 129 &set_label("maw_non_sse2",16);
125 } 130 }
126 131
127 &set_label("maw_loop",0); 132 # function_begin prologue
133 &push("ebp");
134 &push("ebx");
135 &push("esi");
136 &push("edi");
137
138 &comment("");
139 $Low="eax";
140 $High="edx";
141 $a="ebx";
142 $w="ebp";
143 $r="edi";
144 $c="esi";
145
146 &xor($c,$c); # clear carry
147 &mov($r,&wparam(0)); #
148
149 &mov("ecx",&wparam(2)); #
150 &mov($a,&wparam(1)); #
151
152 &and("ecx",0xfffffff8); # num / 8
153 &mov($w,&wparam(3)); #
128 154
129 &mov(&swtmp(0),"ecx"); # 155 &push("ecx"); # Up the stack for a tmp variable
156
157 &jz(&label("maw_finish"));
158
159 &set_label("maw_loop",16);
130 160
131 for ($i=0; $i<32; $i+=4) 161 for ($i=0; $i<32; $i+=4)
132 { 162 {
133 &comment("Round $i"); 163 &comment("Round $i");
134 164
135 &mov("eax",&DWP($i,$a,"",0)); # *a 165 &mov("eax",&DWP($i,$a)); # *a
136 &mul($w); # *a * w 166 &mul($w); # *a * w
137 &add("eax",$c); # L(t)+= *r 167 &add("eax",$c); # L(t)+= c
138 &mov($c,&DWP($i,$r,"",0)); # L(t)+= *r
139 &adc("edx",0); # H(t)+=carry 168 &adc("edx",0); # H(t)+=carry
140 &add("eax",$c); # L(t)+=c 169 &add("eax",&DWP($i,$r)); # L(t)+= *r
141 &adc("edx",0); # H(t)+=carry 170 &adc("edx",0); # H(t)+=carry
142 &mov(&DWP($i,$r,"",0),"eax"); # *r= L(t); 171 &mov(&DWP($i,$r),"eax"); # *r= L(t);
143 &mov($c,"edx"); # c= H(t); 172 &mov($c,"edx"); # c= H(t);
144 } 173 }
145 174
146 &comment(""); 175 &comment("");
147 &mov("ecx",&swtmp(0)); #
148 &add($a,32);
149 &add($r,32);
150 &sub("ecx",8); 176 &sub("ecx",8);
177 &lea($a,&DWP(32,$a));
178 &lea($r,&DWP(32,$r));
151 &jnz(&label("maw_loop")); 179 &jnz(&label("maw_loop"));
152 180
153 &set_label("maw_finish",0); 181 &set_label("maw_finish",0);
@@ -160,16 +188,15 @@ sub bn_mul_add_words
160 for ($i=0; $i<7; $i++) 188 for ($i=0; $i<7; $i++)
161 { 189 {
162 &comment("Tail Round $i"); 190 &comment("Tail Round $i");
163 &mov("eax",&DWP($i*4,$a,"",0));# *a 191 &mov("eax",&DWP($i*4,$a)); # *a
164 &mul($w); # *a * w 192 &mul($w); # *a * w
165 &add("eax",$c); # L(t)+=c 193 &add("eax",$c); # L(t)+=c
166 &mov($c,&DWP($i*4,$r,"",0)); # L(t)+= *r
167 &adc("edx",0); # H(t)+=carry 194 &adc("edx",0); # H(t)+=carry
168 &add("eax",$c); 195 &add("eax",&DWP($i*4,$r)); # L(t)+= *r
169 &adc("edx",0); # H(t)+=carry 196 &adc("edx",0); # H(t)+=carry
170 &dec("ecx") if ($i != 7-1); 197 &dec("ecx") if ($i != 7-1);
171 &mov(&DWP($i*4,$r,"",0),"eax"); # *r= L(t); 198 &mov(&DWP($i*4,$r),"eax"); # *r= L(t);
172 &mov($c,"edx"); # c= H(t); 199 &mov($c,"edx"); # c= H(t);
173 &jz(&label("maw_end")) if ($i != 7-1); 200 &jz(&label("maw_end")) if ($i != 7-1);
174 } 201 }
175 &set_label("maw_end",0); 202 &set_label("maw_end",0);
@@ -184,7 +211,45 @@ sub bn_mul_words
184 { 211 {
185 local($name)=@_; 212 local($name)=@_;
186 213
187 &function_begin($name,""); 214 &function_begin_B($name,$sse2?"EXTRN\t_OPENSSL_ia32cap_P:DWORD":"");
215
216 $r="eax";
217 $a="edx";
218 $c="ecx";
219
220 if ($sse2) {
221 &picmeup("eax","OPENSSL_ia32cap_P");
222 &bt(&DWP(0,"eax"),26);
223 &jnc(&label("mw_non_sse2"));
224
225 &mov($r,&wparam(0));
226 &mov($a,&wparam(1));
227 &mov($c,&wparam(2));
228 &movd("mm0",&wparam(3)); # mm0 = w
229 &pxor("mm1","mm1"); # mm1 = carry = 0
230
231 &set_label("mw_sse2_loop",16);
232 &movd("mm2",&DWP(0,$a)); # mm2 = a[i]
233 &pmuludq("mm2","mm0"); # a[i] *= w
234 &lea($a,&DWP(4,$a));
235 &paddq("mm1","mm2"); # carry += a[i]*w
236 &movd(&DWP(0,$r),"mm1"); # r[i] = carry_low
237 &sub($c,1);
238 &psrlq("mm1",32); # carry = carry_high
239 &lea($r,&DWP(4,$r));
240 &jnz(&label("mw_sse2_loop"));
241
242 &movd("eax","mm1"); # return carry
243 &emms();
244 &ret();
245 &set_label("mw_non_sse2",16);
246 }
247
248 # function_begin prologue
249 &push("ebp");
250 &push("ebx");
251 &push("esi");
252 &push("edi");
188 253
189 &comment(""); 254 &comment("");
190 $Low="eax"; 255 $Low="eax";
@@ -257,7 +322,40 @@ sub bn_sqr_words
257 { 322 {
258 local($name)=@_; 323 local($name)=@_;
259 324
260 &function_begin($name,""); 325 &function_begin_B($name,$sse2?"EXTRN\t_OPENSSL_ia32cap_P:DWORD":"");
326
327 $r="eax";
328 $a="edx";
329 $c="ecx";
330
331 if ($sse2) {
332 &picmeup("eax","OPENSSL_ia32cap_P");
333 &bt(&DWP(0,"eax"),26);
334 &jnc(&label("sqr_non_sse2"));
335
336 &mov($r,&wparam(0));
337 &mov($a,&wparam(1));
338 &mov($c,&wparam(2));
339
340 &set_label("sqr_sse2_loop",16);
341 &movd("mm0",&DWP(0,$a)); # mm0 = a[i]
342 &pmuludq("mm0","mm0"); # a[i] *= a[i]
343 &lea($a,&DWP(4,$a)); # a++
344 &movq(&QWP(0,$r),"mm0"); # r[i] = a[i]*a[i]
345 &sub($c,1);
346 &lea($r,&DWP(8,$r)); # r += 2
347 &jnz(&label("sqr_sse2_loop"));
348
349 &emms();
350 &ret();
351 &set_label("sqr_non_sse2",16);
352 }
353
354 # function_begin prologue
355 &push("ebp");
356 &push("ebx");
357 &push("esi");
358 &push("edi");
261 359
262 &comment(""); 360 &comment("");
263 $r="esi"; 361 $r="esi";
@@ -313,12 +411,13 @@ sub bn_div_words
313 { 411 {
314 local($name)=@_; 412 local($name)=@_;
315 413
316 &function_begin($name,""); 414 &function_begin_B($name,"");
317 &mov("edx",&wparam(0)); # 415 &mov("edx",&wparam(0)); #
318 &mov("eax",&wparam(1)); # 416 &mov("eax",&wparam(1)); #
319 &mov("ebx",&wparam(2)); # 417 &mov("ecx",&wparam(2)); #
320 &div("ebx"); 418 &div("ecx");
321 &function_end($name); 419 &ret();
420 &function_end_B($name);
322 } 421 }
323 422
324sub bn_add_words 423sub bn_add_words
diff --git a/src/lib/libssl/src/crypto/bn/asm/co-586.pl b/src/lib/libssl/src/crypto/bn/asm/co-586.pl
index 5d962cb957..57101a6bd7 100644
--- a/src/lib/libssl/src/crypto/bn/asm/co-586.pl
+++ b/src/lib/libssl/src/crypto/bn/asm/co-586.pl
@@ -1,6 +1,7 @@
1#!/usr/local/bin/perl 1#!/usr/local/bin/perl
2 2
3push(@INC,"perlasm","../../perlasm"); 3$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
4push(@INC,"${dir}","${dir}../../perlasm");
4require "x86asm.pl"; 5require "x86asm.pl";
5 6
6&asm_init($ARGV[0],$0); 7&asm_init($ARGV[0],$0);
diff --git a/src/lib/libssl/src/crypto/bn/asm/ppc.pl b/src/lib/libssl/src/crypto/bn/asm/ppc.pl
index 08e0053473..37c65d3511 100644
--- a/src/lib/libssl/src/crypto/bn/asm/ppc.pl
+++ b/src/lib/libssl/src/crypto/bn/asm/ppc.pl
@@ -100,9 +100,9 @@
100# me a note at schari@us.ibm.com 100# me a note at schari@us.ibm.com
101# 101#
102 102
103$opf = shift; 103$flavour = shift;
104 104
105if ($opf =~ /32\.s/) { 105if ($flavour =~ /32/) {
106 $BITS= 32; 106 $BITS= 32;
107 $BNSZ= $BITS/8; 107 $BNSZ= $BITS/8;
108 $ISA= "\"ppc\""; 108 $ISA= "\"ppc\"";
@@ -125,7 +125,7 @@ if ($opf =~ /32\.s/) {
125 $INSR= "insrwi"; # insert right 125 $INSR= "insrwi"; # insert right
126 $ROTL= "rotlwi"; # rotate left by immediate 126 $ROTL= "rotlwi"; # rotate left by immediate
127 $TR= "tw"; # conditional trap 127 $TR= "tw"; # conditional trap
128} elsif ($opf =~ /64\.s/) { 128} elsif ($flavour =~ /64/) {
129 $BITS= 64; 129 $BITS= 64;
130 $BNSZ= $BITS/8; 130 $BNSZ= $BITS/8;
131 $ISA= "\"ppc64\""; 131 $ISA= "\"ppc64\"";
@@ -149,93 +149,16 @@ if ($opf =~ /32\.s/) {
149 $INSR= "insrdi"; # insert right 149 $INSR= "insrdi"; # insert right
150 $ROTL= "rotldi"; # rotate left by immediate 150 $ROTL= "rotldi"; # rotate left by immediate
151 $TR= "td"; # conditional trap 151 $TR= "td"; # conditional trap
152} else { die "nonsense $opf"; } 152} else { die "nonsense $flavour"; }
153 153
154( defined shift || open STDOUT,">$opf" ) || die "can't open $opf: $!"; 154$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
155( $xlate="${dir}ppc-xlate.pl" and -f $xlate ) or
156( $xlate="${dir}../../perlasm/ppc-xlate.pl" and -f $xlate) or
157die "can't locate ppc-xlate.pl";
155 158
156# function entry points from the AIX code 159open STDOUT,"| $^X $xlate $flavour ".shift || die "can't call $xlate: $!";
157#
158# There are other, more elegant, ways to handle this. We (IBM) chose
159# this approach as it plays well with scripts we run to 'namespace'
160# OpenSSL .i.e. we add a prefix to all the public symbols so we can
161# co-exist in the same process with other implementations of OpenSSL.
162# 'cleverer' ways of doing these substitutions tend to hide data we
163# need to be obvious.
164#
165my @items = ("bn_sqr_comba4",
166 "bn_sqr_comba8",
167 "bn_mul_comba4",
168 "bn_mul_comba8",
169 "bn_sub_words",
170 "bn_add_words",
171 "bn_div_words",
172 "bn_sqr_words",
173 "bn_mul_words",
174 "bn_mul_add_words");
175 160
176if ($opf =~ /linux/) { do_linux(); } 161$data=<<EOF;
177elsif ($opf =~ /aix/) { do_aix(); }
178elsif ($opf =~ /osx/) { do_osx(); }
179else { do_bsd(); }
180
181sub do_linux {
182 $d=&data();
183
184 if ($BITS==64) {
185 foreach $t (@items) {
186 $d =~ s/\.$t:/\
187\t.section\t".opd","aw"\
188\t.align\t3\
189\t.globl\t$t\
190$t:\
191\t.quad\t.$t,.TOC.\@tocbase,0\
192\t.size\t$t,24\
193\t.previous\n\
194\t.type\t.$t,\@function\
195\t.globl\t.$t\
196.$t:/g;
197 }
198 }
199 else {
200 foreach $t (@items) {
201 $d=~s/\.$t/$t/g;
202 }
203 }
204 # hide internal labels to avoid pollution of name table...
205 $d=~s/Lppcasm_/.Lppcasm_/gm;
206 print $d;
207}
208
209sub do_aix {
210 # AIX assembler is smart enough to please the linker without
211 # making us do something special...
212 print &data();
213}
214
215# MacOSX 32 bit
216sub do_osx {
217 $d=&data();
218 # Change the bn symbol prefix from '.' to '_'
219 foreach $t (@items) {
220 $d=~s/\.$t/_$t/g;
221 }
222 # Change .machine to something OS X asm will accept
223 $d=~s/\.machine.*/.text/g;
224 $d=~s/\#/;/g; # change comment from '#' to ';'
225 print $d;
226}
227
228# BSD (Untested)
229sub do_bsd {
230 $d=&data();
231 foreach $t (@items) {
232 $d=~s/\.$t/_$t/g;
233 }
234 print $d;
235}
236
237sub data {
238 local($data)=<<EOF;
239#-------------------------------------------------------------------- 162#--------------------------------------------------------------------
240# 163#
241# 164#
@@ -297,33 +220,20 @@ sub data {
297# 220#
298# Defines to be used in the assembly code. 221# Defines to be used in the assembly code.
299# 222#
300.set r0,0 # we use it as storage for value of 0 223#.set r0,0 # we use it as storage for value of 0
301.set SP,1 # preserved 224#.set SP,1 # preserved
302.set RTOC,2 # preserved 225#.set RTOC,2 # preserved
303.set r3,3 # 1st argument/return value 226#.set r3,3 # 1st argument/return value
304.set r4,4 # 2nd argument/volatile register 227#.set r4,4 # 2nd argument/volatile register
305.set r5,5 # 3rd argument/volatile register 228#.set r5,5 # 3rd argument/volatile register
306.set r6,6 # ... 229#.set r6,6 # ...
307.set r7,7 230#.set r7,7
308.set r8,8 231#.set r8,8
309.set r9,9 232#.set r9,9
310.set r10,10 233#.set r10,10
311.set r11,11 234#.set r11,11
312.set r12,12 235#.set r12,12
313.set r13,13 # not used, nor any other "below" it... 236#.set r13,13 # not used, nor any other "below" it...
314
315.set BO_IF_NOT,4
316.set BO_IF,12
317.set BO_dCTR_NZERO,16
318.set BO_dCTR_ZERO,18
319.set BO_ALWAYS,20
320.set CR0_LT,0;
321.set CR0_GT,1;
322.set CR0_EQ,2
323.set CR1_FX,4;
324.set CR1_FEX,5;
325.set CR1_VX,6
326.set LR,8
327 237
328# Declare function names to be global 238# Declare function names to be global
329# NOTE: For gcc these names MUST be changed to remove 239# NOTE: For gcc these names MUST be changed to remove
@@ -344,7 +254,7 @@ sub data {
344 254
345# .text section 255# .text section
346 256
347 .machine $ISA 257 .machine "any"
348 258
349# 259#
350# NOTE: The following label name should be changed to 260# NOTE: The following label name should be changed to
@@ -478,7 +388,7 @@ sub data {
478 388
479 $ST r9,`6*$BNSZ`(r3) #r[6]=c1 389 $ST r9,`6*$BNSZ`(r3) #r[6]=c1
480 $ST r10,`7*$BNSZ`(r3) #r[7]=c2 390 $ST r10,`7*$BNSZ`(r3) #r[7]=c2
481 bclr BO_ALWAYS,CR0_LT 391 blr
482 .long 0x00000000 392 .long 0x00000000
483 393
484# 394#
@@ -903,7 +813,7 @@ sub data {
903 $ST r9, `15*$BNSZ`(r3) #r[15]=c1; 813 $ST r9, `15*$BNSZ`(r3) #r[15]=c1;
904 814
905 815
906 bclr BO_ALWAYS,CR0_LT 816 blr
907 817
908 .long 0x00000000 818 .long 0x00000000
909 819
@@ -1055,7 +965,7 @@ sub data {
1055 965
1056 $ST r10,`6*$BNSZ`(r3) #r[6]=c1 966 $ST r10,`6*$BNSZ`(r3) #r[6]=c1
1057 $ST r11,`7*$BNSZ`(r3) #r[7]=c2 967 $ST r11,`7*$BNSZ`(r3) #r[7]=c2
1058 bclr BO_ALWAYS,CR0_LT 968 blr
1059 .long 0x00000000 969 .long 0x00000000
1060 970
1061# 971#
@@ -1591,7 +1501,7 @@ sub data {
1591 adde r10,r10,r9 1501 adde r10,r10,r9
1592 $ST r12,`14*$BNSZ`(r3) #r[14]=c3; 1502 $ST r12,`14*$BNSZ`(r3) #r[14]=c3;
1593 $ST r10,`15*$BNSZ`(r3) #r[15]=c1; 1503 $ST r10,`15*$BNSZ`(r3) #r[15]=c1;
1594 bclr BO_ALWAYS,CR0_LT 1504 blr
1595 .long 0x00000000 1505 .long 0x00000000
1596 1506
1597# 1507#
@@ -1623,7 +1533,7 @@ sub data {
1623 subfc. r7,r0,r6 # If r6 is 0 then result is 0. 1533 subfc. r7,r0,r6 # If r6 is 0 then result is 0.
1624 # if r6 > 0 then result !=0 1534 # if r6 > 0 then result !=0
1625 # In either case carry bit is set. 1535 # In either case carry bit is set.
1626 bc BO_IF,CR0_EQ,Lppcasm_sub_adios 1536 beq Lppcasm_sub_adios
1627 addi r4,r4,-$BNSZ 1537 addi r4,r4,-$BNSZ
1628 addi r3,r3,-$BNSZ 1538 addi r3,r3,-$BNSZ
1629 addi r5,r5,-$BNSZ 1539 addi r5,r5,-$BNSZ
@@ -1635,11 +1545,11 @@ Lppcasm_sub_mainloop:
1635 # if carry = 1 this is r7-r8. Else it 1545 # if carry = 1 this is r7-r8. Else it
1636 # is r7-r8 -1 as we need. 1546 # is r7-r8 -1 as we need.
1637 $STU r6,$BNSZ(r3) 1547 $STU r6,$BNSZ(r3)
1638 bc BO_dCTR_NZERO,CR0_EQ,Lppcasm_sub_mainloop 1548 bdnz- Lppcasm_sub_mainloop
1639Lppcasm_sub_adios: 1549Lppcasm_sub_adios:
1640 subfze r3,r0 # if carry bit is set then r3 = 0 else -1 1550 subfze r3,r0 # if carry bit is set then r3 = 0 else -1
1641 andi. r3,r3,1 # keep only last bit. 1551 andi. r3,r3,1 # keep only last bit.
1642 bclr BO_ALWAYS,CR0_LT 1552 blr
1643 .long 0x00000000 1553 .long 0x00000000
1644 1554
1645 1555
@@ -1670,7 +1580,7 @@ Lppcasm_sub_adios:
1670# check for r6 = 0. Is this needed? 1580# check for r6 = 0. Is this needed?
1671# 1581#
1672 addic. r6,r6,0 #test r6 and clear carry bit. 1582 addic. r6,r6,0 #test r6 and clear carry bit.
1673 bc BO_IF,CR0_EQ,Lppcasm_add_adios 1583 beq Lppcasm_add_adios
1674 addi r4,r4,-$BNSZ 1584 addi r4,r4,-$BNSZ
1675 addi r3,r3,-$BNSZ 1585 addi r3,r3,-$BNSZ
1676 addi r5,r5,-$BNSZ 1586 addi r5,r5,-$BNSZ
@@ -1680,10 +1590,10 @@ Lppcasm_add_mainloop:
1680 $LDU r8,$BNSZ(r5) 1590 $LDU r8,$BNSZ(r5)
1681 adde r8,r7,r8 1591 adde r8,r7,r8
1682 $STU r8,$BNSZ(r3) 1592 $STU r8,$BNSZ(r3)
1683 bc BO_dCTR_NZERO,CR0_EQ,Lppcasm_add_mainloop 1593 bdnz- Lppcasm_add_mainloop
1684Lppcasm_add_adios: 1594Lppcasm_add_adios:
1685 addze r3,r0 #return carry bit. 1595 addze r3,r0 #return carry bit.
1686 bclr BO_ALWAYS,CR0_LT 1596 blr
1687 .long 0x00000000 1597 .long 0x00000000
1688 1598
1689# 1599#
@@ -1707,24 +1617,24 @@ Lppcasm_add_adios:
1707# r5 = d 1617# r5 = d
1708 1618
1709 $UCMPI 0,r5,0 # compare r5 and 0 1619 $UCMPI 0,r5,0 # compare r5 and 0
1710 bc BO_IF_NOT,CR0_EQ,Lppcasm_div1 # proceed if d!=0 1620 bne Lppcasm_div1 # proceed if d!=0
1711 li r3,-1 # d=0 return -1 1621 li r3,-1 # d=0 return -1
1712 bclr BO_ALWAYS,CR0_LT 1622 blr
1713Lppcasm_div1: 1623Lppcasm_div1:
1714 xor r0,r0,r0 #r0=0 1624 xor r0,r0,r0 #r0=0
1715 li r8,$BITS 1625 li r8,$BITS
1716 $CNTLZ. r7,r5 #r7 = num leading 0s in d. 1626 $CNTLZ. r7,r5 #r7 = num leading 0s in d.
1717 bc BO_IF,CR0_EQ,Lppcasm_div2 #proceed if no leading zeros 1627 beq Lppcasm_div2 #proceed if no leading zeros
1718 subf r8,r7,r8 #r8 = BN_num_bits_word(d) 1628 subf r8,r7,r8 #r8 = BN_num_bits_word(d)
1719 $SHR. r9,r3,r8 #are there any bits above r8'th? 1629 $SHR. r9,r3,r8 #are there any bits above r8'th?
1720 $TR 16,r9,r0 #if there're, signal to dump core... 1630 $TR 16,r9,r0 #if there're, signal to dump core...
1721Lppcasm_div2: 1631Lppcasm_div2:
1722 $UCMP 0,r3,r5 #h>=d? 1632 $UCMP 0,r3,r5 #h>=d?
1723 bc BO_IF,CR0_LT,Lppcasm_div3 #goto Lppcasm_div3 if not 1633 blt Lppcasm_div3 #goto Lppcasm_div3 if not
1724 subf r3,r5,r3 #h-=d ; 1634 subf r3,r5,r3 #h-=d ;
1725Lppcasm_div3: #r7 = BN_BITS2-i. so r7=i 1635Lppcasm_div3: #r7 = BN_BITS2-i. so r7=i
1726 cmpi 0,0,r7,0 # is (i == 0)? 1636 cmpi 0,0,r7,0 # is (i == 0)?
1727 bc BO_IF,CR0_EQ,Lppcasm_div4 1637 beq Lppcasm_div4
1728 $SHL r3,r3,r7 # h = (h<< i) 1638 $SHL r3,r3,r7 # h = (h<< i)
1729 $SHR r8,r4,r8 # r8 = (l >> BN_BITS2 -i) 1639 $SHR r8,r4,r8 # r8 = (l >> BN_BITS2 -i)
1730 $SHL r5,r5,r7 # d<<=i 1640 $SHL r5,r5,r7 # d<<=i
@@ -1741,7 +1651,7 @@ Lppcasm_divouterloop:
1741 $SHRI r11,r4,`$BITS/2` #r11= (l&BN_MASK2h)>>BN_BITS4 1651 $SHRI r11,r4,`$BITS/2` #r11= (l&BN_MASK2h)>>BN_BITS4
1742 # compute here for innerloop. 1652 # compute here for innerloop.
1743 $UCMP 0,r8,r9 # is (h>>BN_BITS4)==dh 1653 $UCMP 0,r8,r9 # is (h>>BN_BITS4)==dh
1744 bc BO_IF_NOT,CR0_EQ,Lppcasm_div5 # goto Lppcasm_div5 if not 1654 bne Lppcasm_div5 # goto Lppcasm_div5 if not
1745 1655
1746 li r8,-1 1656 li r8,-1
1747 $CLRU r8,r8,`$BITS/2` #q = BN_MASK2l 1657 $CLRU r8,r8,`$BITS/2` #q = BN_MASK2l
@@ -1762,9 +1672,9 @@ Lppcasm_divinnerloop:
1762 # the following 2 instructions do that 1672 # the following 2 instructions do that
1763 $SHLI r7,r10,`$BITS/2` # r7 = (t<<BN_BITS4) 1673 $SHLI r7,r10,`$BITS/2` # r7 = (t<<BN_BITS4)
1764 or r7,r7,r11 # r7|=((l&BN_MASK2h)>>BN_BITS4) 1674 or r7,r7,r11 # r7|=((l&BN_MASK2h)>>BN_BITS4)
1765 $UCMP 1,r6,r7 # compare (tl <= r7) 1675 $UCMP cr1,r6,r7 # compare (tl <= r7)
1766 bc BO_IF_NOT,CR0_EQ,Lppcasm_divinnerexit 1676 bne Lppcasm_divinnerexit
1767 bc BO_IF_NOT,CR1_FEX,Lppcasm_divinnerexit 1677 ble cr1,Lppcasm_divinnerexit
1768 addi r8,r8,-1 #q-- 1678 addi r8,r8,-1 #q--
1769 subf r12,r9,r12 #th -=dh 1679 subf r12,r9,r12 #th -=dh
1770 $CLRU r10,r5,`$BITS/2` #r10=dl. t is no longer needed in loop. 1680 $CLRU r10,r5,`$BITS/2` #r10=dl. t is no longer needed in loop.
@@ -1773,14 +1683,14 @@ Lppcasm_divinnerloop:
1773Lppcasm_divinnerexit: 1683Lppcasm_divinnerexit:
1774 $SHRI r10,r6,`$BITS/2` #t=(tl>>BN_BITS4) 1684 $SHRI r10,r6,`$BITS/2` #t=(tl>>BN_BITS4)
1775 $SHLI r11,r6,`$BITS/2` #tl=(tl<<BN_BITS4)&BN_MASK2h; 1685 $SHLI r11,r6,`$BITS/2` #tl=(tl<<BN_BITS4)&BN_MASK2h;
1776 $UCMP 1,r4,r11 # compare l and tl 1686 $UCMP cr1,r4,r11 # compare l and tl
1777 add r12,r12,r10 # th+=t 1687 add r12,r12,r10 # th+=t
1778 bc BO_IF_NOT,CR1_FX,Lppcasm_div7 # if (l>=tl) goto Lppcasm_div7 1688 bge cr1,Lppcasm_div7 # if (l>=tl) goto Lppcasm_div7
1779 addi r12,r12,1 # th++ 1689 addi r12,r12,1 # th++
1780Lppcasm_div7: 1690Lppcasm_div7:
1781 subf r11,r11,r4 #r11=l-tl 1691 subf r11,r11,r4 #r11=l-tl
1782 $UCMP 1,r3,r12 #compare h and th 1692 $UCMP cr1,r3,r12 #compare h and th
1783 bc BO_IF_NOT,CR1_FX,Lppcasm_div8 #if (h>=th) goto Lppcasm_div8 1693 bge cr1,Lppcasm_div8 #if (h>=th) goto Lppcasm_div8
1784 addi r8,r8,-1 # q-- 1694 addi r8,r8,-1 # q--
1785 add r3,r5,r3 # h+=d 1695 add r3,r5,r3 # h+=d
1786Lppcasm_div8: 1696Lppcasm_div8:
@@ -1791,12 +1701,12 @@ Lppcasm_div8:
1791 # the following 2 instructions will do this. 1701 # the following 2 instructions will do this.
1792 $INSR r11,r12,`$BITS/2`,`$BITS/2` # r11 is the value we want rotated $BITS/2. 1702 $INSR r11,r12,`$BITS/2`,`$BITS/2` # r11 is the value we want rotated $BITS/2.
1793 $ROTL r3,r11,`$BITS/2` # rotate by $BITS/2 and store in r3 1703 $ROTL r3,r11,`$BITS/2` # rotate by $BITS/2 and store in r3
1794 bc BO_dCTR_ZERO,CR0_EQ,Lppcasm_div9#if (count==0) break ; 1704 bdz Lppcasm_div9 #if (count==0) break ;
1795 $SHLI r0,r8,`$BITS/2` #ret =q<<BN_BITS4 1705 $SHLI r0,r8,`$BITS/2` #ret =q<<BN_BITS4
1796 b Lppcasm_divouterloop 1706 b Lppcasm_divouterloop
1797Lppcasm_div9: 1707Lppcasm_div9:
1798 or r3,r8,r0 1708 or r3,r8,r0
1799 bclr BO_ALWAYS,CR0_LT 1709 blr
1800 .long 0x00000000 1710 .long 0x00000000
1801 1711
1802# 1712#
@@ -1822,7 +1732,7 @@ Lppcasm_div9:
1822# No unrolling done here. Not performance critical. 1732# No unrolling done here. Not performance critical.
1823 1733
1824 addic. r5,r5,0 #test r5. 1734 addic. r5,r5,0 #test r5.
1825 bc BO_IF,CR0_EQ,Lppcasm_sqr_adios 1735 beq Lppcasm_sqr_adios
1826 addi r4,r4,-$BNSZ 1736 addi r4,r4,-$BNSZ
1827 addi r3,r3,-$BNSZ 1737 addi r3,r3,-$BNSZ
1828 mtctr r5 1738 mtctr r5
@@ -1833,9 +1743,9 @@ Lppcasm_sqr_mainloop:
1833 $UMULH r8,r6,r6 1743 $UMULH r8,r6,r6
1834 $STU r7,$BNSZ(r3) 1744 $STU r7,$BNSZ(r3)
1835 $STU r8,$BNSZ(r3) 1745 $STU r8,$BNSZ(r3)
1836 bc BO_dCTR_NZERO,CR0_EQ,Lppcasm_sqr_mainloop 1746 bdnz- Lppcasm_sqr_mainloop
1837Lppcasm_sqr_adios: 1747Lppcasm_sqr_adios:
1838 bclr BO_ALWAYS,CR0_LT 1748 blr
1839 .long 0x00000000 1749 .long 0x00000000
1840 1750
1841 1751
@@ -1858,7 +1768,7 @@ Lppcasm_sqr_adios:
1858 xor r0,r0,r0 1768 xor r0,r0,r0
1859 xor r12,r12,r12 # used for carry 1769 xor r12,r12,r12 # used for carry
1860 rlwinm. r7,r5,30,2,31 # num >> 2 1770 rlwinm. r7,r5,30,2,31 # num >> 2
1861 bc BO_IF,CR0_EQ,Lppcasm_mw_REM 1771 beq Lppcasm_mw_REM
1862 mtctr r7 1772 mtctr r7
1863Lppcasm_mw_LOOP: 1773Lppcasm_mw_LOOP:
1864 #mul(rp[0],ap[0],w,c1); 1774 #mul(rp[0],ap[0],w,c1);
@@ -1896,11 +1806,11 @@ Lppcasm_mw_LOOP:
1896 1806
1897 addi r3,r3,`4*$BNSZ` 1807 addi r3,r3,`4*$BNSZ`
1898 addi r4,r4,`4*$BNSZ` 1808 addi r4,r4,`4*$BNSZ`
1899 bc BO_dCTR_NZERO,CR0_EQ,Lppcasm_mw_LOOP 1809 bdnz- Lppcasm_mw_LOOP
1900 1810
1901Lppcasm_mw_REM: 1811Lppcasm_mw_REM:
1902 andi. r5,r5,0x3 1812 andi. r5,r5,0x3
1903 bc BO_IF,CR0_EQ,Lppcasm_mw_OVER 1813 beq Lppcasm_mw_OVER
1904 #mul(rp[0],ap[0],w,c1); 1814 #mul(rp[0],ap[0],w,c1);
1905 $LD r8,`0*$BNSZ`(r4) 1815 $LD r8,`0*$BNSZ`(r4)
1906 $UMULL r9,r6,r8 1816 $UMULL r9,r6,r8
@@ -1912,7 +1822,7 @@ Lppcasm_mw_REM:
1912 1822
1913 addi r5,r5,-1 1823 addi r5,r5,-1
1914 cmpli 0,0,r5,0 1824 cmpli 0,0,r5,0
1915 bc BO_IF,CR0_EQ,Lppcasm_mw_OVER 1825 beq Lppcasm_mw_OVER
1916 1826
1917 1827
1918 #mul(rp[1],ap[1],w,c1); 1828 #mul(rp[1],ap[1],w,c1);
@@ -1926,7 +1836,7 @@ Lppcasm_mw_REM:
1926 1836
1927 addi r5,r5,-1 1837 addi r5,r5,-1
1928 cmpli 0,0,r5,0 1838 cmpli 0,0,r5,0
1929 bc BO_IF,CR0_EQ,Lppcasm_mw_OVER 1839 beq Lppcasm_mw_OVER
1930 1840
1931 #mul_add(rp[2],ap[2],w,c1); 1841 #mul_add(rp[2],ap[2],w,c1);
1932 $LD r8,`2*$BNSZ`(r4) 1842 $LD r8,`2*$BNSZ`(r4)
@@ -1939,7 +1849,7 @@ Lppcasm_mw_REM:
1939 1849
1940Lppcasm_mw_OVER: 1850Lppcasm_mw_OVER:
1941 addi r3,r12,0 1851 addi r3,r12,0
1942 bclr BO_ALWAYS,CR0_LT 1852 blr
1943 .long 0x00000000 1853 .long 0x00000000
1944 1854
1945# 1855#
@@ -1964,7 +1874,7 @@ Lppcasm_mw_OVER:
1964 xor r0,r0,r0 #r0 = 0 1874 xor r0,r0,r0 #r0 = 0
1965 xor r12,r12,r12 #r12 = 0 . used for carry 1875 xor r12,r12,r12 #r12 = 0 . used for carry
1966 rlwinm. r7,r5,30,2,31 # num >> 2 1876 rlwinm. r7,r5,30,2,31 # num >> 2
1967 bc BO_IF,CR0_EQ,Lppcasm_maw_leftover # if (num < 4) go LPPCASM_maw_leftover 1877 beq Lppcasm_maw_leftover # if (num < 4) go LPPCASM_maw_leftover
1968 mtctr r7 1878 mtctr r7
1969Lppcasm_maw_mainloop: 1879Lppcasm_maw_mainloop:
1970 #mul_add(rp[0],ap[0],w,c1); 1880 #mul_add(rp[0],ap[0],w,c1);
@@ -2017,11 +1927,11 @@ Lppcasm_maw_mainloop:
2017 $ST r11,`3*$BNSZ`(r3) 1927 $ST r11,`3*$BNSZ`(r3)
2018 addi r3,r3,`4*$BNSZ` 1928 addi r3,r3,`4*$BNSZ`
2019 addi r4,r4,`4*$BNSZ` 1929 addi r4,r4,`4*$BNSZ`
2020 bc BO_dCTR_NZERO,CR0_EQ,Lppcasm_maw_mainloop 1930 bdnz- Lppcasm_maw_mainloop
2021 1931
2022Lppcasm_maw_leftover: 1932Lppcasm_maw_leftover:
2023 andi. r5,r5,0x3 1933 andi. r5,r5,0x3
2024 bc BO_IF,CR0_EQ,Lppcasm_maw_adios 1934 beq Lppcasm_maw_adios
2025 addi r3,r3,-$BNSZ 1935 addi r3,r3,-$BNSZ
2026 addi r4,r4,-$BNSZ 1936 addi r4,r4,-$BNSZ
2027 #mul_add(rp[0],ap[0],w,c1); 1937 #mul_add(rp[0],ap[0],w,c1);
@@ -2036,7 +1946,7 @@ Lppcasm_maw_leftover:
2036 addze r12,r10 1946 addze r12,r10
2037 $ST r9,0(r3) 1947 $ST r9,0(r3)
2038 1948
2039 bc BO_dCTR_ZERO,CR0_EQ,Lppcasm_maw_adios 1949 bdz Lppcasm_maw_adios
2040 #mul_add(rp[1],ap[1],w,c1); 1950 #mul_add(rp[1],ap[1],w,c1);
2041 $LDU r8,$BNSZ(r4) 1951 $LDU r8,$BNSZ(r4)
2042 $UMULL r9,r6,r8 1952 $UMULL r9,r6,r8
@@ -2048,7 +1958,7 @@ Lppcasm_maw_leftover:
2048 addze r12,r10 1958 addze r12,r10
2049 $ST r9,0(r3) 1959 $ST r9,0(r3)
2050 1960
2051 bc BO_dCTR_ZERO,CR0_EQ,Lppcasm_maw_adios 1961 bdz Lppcasm_maw_adios
2052 #mul_add(rp[2],ap[2],w,c1); 1962 #mul_add(rp[2],ap[2],w,c1);
2053 $LDU r8,$BNSZ(r4) 1963 $LDU r8,$BNSZ(r4)
2054 $UMULL r9,r6,r8 1964 $UMULL r9,r6,r8
@@ -2062,17 +1972,10 @@ Lppcasm_maw_leftover:
2062 1972
2063Lppcasm_maw_adios: 1973Lppcasm_maw_adios:
2064 addi r3,r12,0 1974 addi r3,r12,0
2065 bclr BO_ALWAYS,CR0_LT 1975 blr
2066 .long 0x00000000 1976 .long 0x00000000
2067 .align 4 1977 .align 4
2068EOF 1978EOF
2069 $data =~ s/\`([^\`]*)\`/eval $1/gem; 1979$data =~ s/\`([^\`]*)\`/eval $1/gem;
2070 1980print $data;
2071 # if some assembler chokes on some simplified mnemonic, 1981close STDOUT;
2072 # this is the spot to fix it up, e.g.:
2073 # GNU as doesn't seem to accept cmplw, 32-bit unsigned compare
2074 $data =~ s/^(\s*)cmplw(\s+)([^,]+),(.*)/$1cmpl$2$3,0,$4/gm;
2075 # assembler X doesn't accept li, load immediate value
2076 #$data =~ s/^(\s*)li(\s+)([^,]+),(.*)/$1addi$2$3,0,$4/gm;
2077 return($data);
2078}
diff --git a/src/lib/libssl/src/crypto/bn/asm/sparcv8plus.S b/src/lib/libssl/src/crypto/bn/asm/sparcv8plus.S
index 8c56e2e7e7..63de1860f2 100644
--- a/src/lib/libssl/src/crypto/bn/asm/sparcv8plus.S
+++ b/src/lib/libssl/src/crypto/bn/asm/sparcv8plus.S
@@ -144,6 +144,19 @@
144 * } 144 * }
145 */ 145 */
146 146
147#if defined(__SUNPRO_C) && defined(__sparcv9)
148 /* They've said -xarch=v9 at command line */
149 .register %g2,#scratch
150 .register %g3,#scratch
151# define FRAME_SIZE -192
152#elif defined(__GNUC__) && defined(__arch64__)
153 /* They've said -m64 at command line */
154 .register %g2,#scratch
155 .register %g3,#scratch
156# define FRAME_SIZE -192
157#else
158# define FRAME_SIZE -96
159#endif
147/* 160/*
148 * GNU assembler can't stand stuw:-( 161 * GNU assembler can't stand stuw:-(
149 */ 162 */
@@ -619,8 +632,6 @@ bn_sub_words:
619 * Andy. 632 * Andy.
620 */ 633 */
621 634
622#define FRAME_SIZE -96
623
624/* 635/*
625 * Here is register usage map for *all* routines below. 636 * Here is register usage map for *all* routines below.
626 */ 637 */
diff --git a/src/lib/libssl/src/crypto/bn/asm/x86_64-gcc.c b/src/lib/libssl/src/crypto/bn/asm/x86_64-gcc.c
index f13f52dd85..acb0b40118 100644
--- a/src/lib/libssl/src/crypto/bn/asm/x86_64-gcc.c
+++ b/src/lib/libssl/src/crypto/bn/asm/x86_64-gcc.c
@@ -1,4 +1,5 @@
1#ifdef __SUNPRO_C 1#include "../bn_lcl.h"
2#if !(defined(__GNUC__) && __GNUC__>=2)
2# include "../bn_asm.c" /* kind of dirty hack for Sun Studio */ 3# include "../bn_asm.c" /* kind of dirty hack for Sun Studio */
3#else 4#else
4/* 5/*
@@ -54,7 +55,15 @@
54 * machine. 55 * machine.
55 */ 56 */
56 57
58#ifdef _WIN64
59#define BN_ULONG unsigned long long
60#else
57#define BN_ULONG unsigned long 61#define BN_ULONG unsigned long
62#endif
63
64#undef mul
65#undef mul_add
66#undef sqr
58 67
59/* 68/*
60 * "m"(a), "+m"(r) is the way to favor DirectPath µ-code; 69 * "m"(a), "+m"(r) is the way to favor DirectPath µ-code;
@@ -97,7 +106,7 @@
97 : "a"(a) \ 106 : "a"(a) \
98 : "cc"); 107 : "cc");
99 108
100BN_ULONG bn_mul_add_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w) 109BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w)
101 { 110 {
102 BN_ULONG c1=0; 111 BN_ULONG c1=0;
103 112
@@ -121,7 +130,7 @@ BN_ULONG bn_mul_add_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w)
121 return(c1); 130 return(c1);
122 } 131 }
123 132
124BN_ULONG bn_mul_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w) 133BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w)
125 { 134 {
126 BN_ULONG c1=0; 135 BN_ULONG c1=0;
127 136
@@ -144,7 +153,7 @@ BN_ULONG bn_mul_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w)
144 return(c1); 153 return(c1);
145 } 154 }
146 155
147void bn_sqr_words(BN_ULONG *r, BN_ULONG *a, int n) 156void bn_sqr_words(BN_ULONG *r, const BN_ULONG *a, int n)
148 { 157 {
149 if (n <= 0) return; 158 if (n <= 0) return;
150 159
@@ -175,14 +184,14 @@ BN_ULONG bn_div_words(BN_ULONG h, BN_ULONG l, BN_ULONG d)
175 return ret; 184 return ret;
176} 185}
177 186
178BN_ULONG bn_add_words (BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int n) 187BN_ULONG bn_add_words (BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,int n)
179{ BN_ULONG ret=0,i=0; 188{ BN_ULONG ret=0,i=0;
180 189
181 if (n <= 0) return 0; 190 if (n <= 0) return 0;
182 191
183 asm ( 192 asm (
184 " subq %2,%2 \n" 193 " subq %2,%2 \n"
185 ".align 16 \n" 194 ".p2align 4 \n"
186 "1: movq (%4,%2,8),%0 \n" 195 "1: movq (%4,%2,8),%0 \n"
187 " adcq (%5,%2,8),%0 \n" 196 " adcq (%5,%2,8),%0 \n"
188 " movq %0,(%3,%2,8) \n" 197 " movq %0,(%3,%2,8) \n"
@@ -198,14 +207,14 @@ BN_ULONG bn_add_words (BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int n)
198} 207}
199 208
200#ifndef SIMICS 209#ifndef SIMICS
201BN_ULONG bn_sub_words (BN_ULONG *rp, BN_ULONG *ap, BN_ULONG *bp,int n) 210BN_ULONG bn_sub_words (BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,int n)
202{ BN_ULONG ret=0,i=0; 211{ BN_ULONG ret=0,i=0;
203 212
204 if (n <= 0) return 0; 213 if (n <= 0) return 0;
205 214
206 asm ( 215 asm (
207 " subq %2,%2 \n" 216 " subq %2,%2 \n"
208 ".align 16 \n" 217 ".p2align 4 \n"
209 "1: movq (%4,%2,8),%0 \n" 218 "1: movq (%4,%2,8),%0 \n"
210 " sbbq (%5,%2,8),%0 \n" 219 " sbbq (%5,%2,8),%0 \n"
211 " movq %0,(%3,%2,8) \n" 220 " movq %0,(%3,%2,8) \n"
@@ -485,7 +494,7 @@ void bn_mul_comba4(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b)
485 r[7]=c2; 494 r[7]=c2;
486 } 495 }
487 496
488void bn_sqr_comba8(BN_ULONG *r, BN_ULONG *a) 497void bn_sqr_comba8(BN_ULONG *r, const BN_ULONG *a)
489 { 498 {
490 BN_ULONG t1,t2; 499 BN_ULONG t1,t2;
491 BN_ULONG c1,c2,c3; 500 BN_ULONG c1,c2,c3;
@@ -561,7 +570,7 @@ void bn_sqr_comba8(BN_ULONG *r, BN_ULONG *a)
561 r[15]=c1; 570 r[15]=c1;
562 } 571 }
563 572
564void bn_sqr_comba4(BN_ULONG *r, BN_ULONG *a) 573void bn_sqr_comba4(BN_ULONG *r, const BN_ULONG *a)
565 { 574 {
566 BN_ULONG t1,t2; 575 BN_ULONG t1,t2;
567 BN_ULONG c1,c2,c3; 576 BN_ULONG c1,c2,c3;
diff --git a/src/lib/libssl/src/crypto/bn/bn.h b/src/lib/libssl/src/crypto/bn/bn.h
index f1719a5877..e484b7fc11 100644
--- a/src/lib/libssl/src/crypto/bn/bn.h
+++ b/src/lib/libssl/src/crypto/bn/bn.h
@@ -56,6 +56,59 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60 *
61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions
63 * are met:
64 *
65 * 1. Redistributions of source code must retain the above copyright
66 * notice, this list of conditions and the following disclaimer.
67 *
68 * 2. Redistributions in binary form must reproduce the above copyright
69 * notice, this list of conditions and the following disclaimer in
70 * the documentation and/or other materials provided with the
71 * distribution.
72 *
73 * 3. All advertising materials mentioning features or use of this
74 * software must display the following acknowledgment:
75 * "This product includes software developed by the OpenSSL Project
76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77 *
78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79 * endorse or promote products derived from this software without
80 * prior written permission. For written permission, please contact
81 * openssl-core@openssl.org.
82 *
83 * 5. Products derived from this software may not be called "OpenSSL"
84 * nor may "OpenSSL" appear in their names without prior written
85 * permission of the OpenSSL Project.
86 *
87 * 6. Redistributions of any form whatsoever must retain the following
88 * acknowledgment:
89 * "This product includes software developed by the OpenSSL Project
90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91 *
92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103 * OF THE POSSIBILITY OF SUCH DAMAGE.
104 * ====================================================================
105 *
106 * This product includes cryptographic software written by Eric Young
107 * (eay@cryptsoft.com). This product includes software written by Tim
108 * Hudson (tjh@cryptsoft.com).
109 *
110 */
111/* ====================================================================
59 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 112 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
60 * 113 *
61 * Portions of the attached software ("Contribution") are developed by 114 * Portions of the attached software ("Contribution") are developed by
@@ -77,6 +130,7 @@
77#include <stdio.h> /* FILE */ 130#include <stdio.h> /* FILE */
78#endif 131#endif
79#include <openssl/ossl_typ.h> 132#include <openssl/ossl_typ.h>
133#include <openssl/crypto.h>
80 134
81#ifdef __cplusplus 135#ifdef __cplusplus
82extern "C" { 136extern "C" {
@@ -94,9 +148,11 @@ extern "C" {
94/* #define BN_DEBUG */ 148/* #define BN_DEBUG */
95/* #define BN_DEBUG_RAND */ 149/* #define BN_DEBUG_RAND */
96 150
151#ifndef OPENSSL_SMALL_FOOTPRINT
97#define BN_MUL_COMBA 152#define BN_MUL_COMBA
98#define BN_SQR_COMBA 153#define BN_SQR_COMBA
99#define BN_RECURSION 154#define BN_RECURSION
155#endif
100 156
101/* This next option uses the C libraries (2 word)/(1 word) function. 157/* This next option uses the C libraries (2 word)/(1 word) function.
102 * If it is not defined, I use my C version (which is slower). 158 * If it is not defined, I use my C version (which is slower).
@@ -137,6 +193,8 @@ extern "C" {
137#define BN_DEC_FMT1 "%lu" 193#define BN_DEC_FMT1 "%lu"
138#define BN_DEC_FMT2 "%019lu" 194#define BN_DEC_FMT2 "%019lu"
139#define BN_DEC_NUM 19 195#define BN_DEC_NUM 19
196#define BN_HEX_FMT1 "%lX"
197#define BN_HEX_FMT2 "%016lX"
140#endif 198#endif
141 199
142/* This is where the long long data type is 64 bits, but long is 32. 200/* This is where the long long data type is 64 bits, but long is 32.
@@ -162,83 +220,37 @@ extern "C" {
162#define BN_DEC_FMT1 "%llu" 220#define BN_DEC_FMT1 "%llu"
163#define BN_DEC_FMT2 "%019llu" 221#define BN_DEC_FMT2 "%019llu"
164#define BN_DEC_NUM 19 222#define BN_DEC_NUM 19
223#define BN_HEX_FMT1 "%llX"
224#define BN_HEX_FMT2 "%016llX"
165#endif 225#endif
166 226
167#ifdef THIRTY_TWO_BIT 227#ifdef THIRTY_TWO_BIT
168#ifdef BN_LLONG 228#ifdef BN_LLONG
169# if defined(OPENSSL_SYS_WIN32) && !defined(__GNUC__) 229# if defined(_WIN32) && !defined(__GNUC__)
170# define BN_ULLONG unsigned __int64 230# define BN_ULLONG unsigned __int64
231# define BN_MASK (0xffffffffffffffffI64)
171# else 232# else
172# define BN_ULLONG unsigned long long 233# define BN_ULLONG unsigned long long
234# define BN_MASK (0xffffffffffffffffLL)
173# endif 235# endif
174#endif 236#endif
175#define BN_ULONG unsigned long 237#define BN_ULONG unsigned int
176#define BN_LONG long 238#define BN_LONG int
177#define BN_BITS 64 239#define BN_BITS 64
178#define BN_BYTES 4 240#define BN_BYTES 4
179#define BN_BITS2 32 241#define BN_BITS2 32
180#define BN_BITS4 16 242#define BN_BITS4 16
181#ifdef OPENSSL_SYS_WIN32
182/* VC++ doesn't like the LL suffix */
183#define BN_MASK (0xffffffffffffffffL)
184#else
185#define BN_MASK (0xffffffffffffffffLL)
186#endif
187#define BN_MASK2 (0xffffffffL) 243#define BN_MASK2 (0xffffffffL)
188#define BN_MASK2l (0xffff) 244#define BN_MASK2l (0xffff)
189#define BN_MASK2h1 (0xffff8000L) 245#define BN_MASK2h1 (0xffff8000L)
190#define BN_MASK2h (0xffff0000L) 246#define BN_MASK2h (0xffff0000L)
191#define BN_TBIT (0x80000000L) 247#define BN_TBIT (0x80000000L)
192#define BN_DEC_CONV (1000000000L) 248#define BN_DEC_CONV (1000000000L)
193#define BN_DEC_FMT1 "%lu"
194#define BN_DEC_FMT2 "%09lu"
195#define BN_DEC_NUM 9
196#endif
197
198#ifdef SIXTEEN_BIT
199#ifndef BN_DIV2W
200#define BN_DIV2W
201#endif
202#define BN_ULLONG unsigned long
203#define BN_ULONG unsigned short
204#define BN_LONG short
205#define BN_BITS 32
206#define BN_BYTES 2
207#define BN_BITS2 16
208#define BN_BITS4 8
209#define BN_MASK (0xffffffff)
210#define BN_MASK2 (0xffff)
211#define BN_MASK2l (0xff)
212#define BN_MASK2h1 (0xff80)
213#define BN_MASK2h (0xff00)
214#define BN_TBIT (0x8000)
215#define BN_DEC_CONV (100000)
216#define BN_DEC_FMT1 "%u" 249#define BN_DEC_FMT1 "%u"
217#define BN_DEC_FMT2 "%05u" 250#define BN_DEC_FMT2 "%09u"
218#define BN_DEC_NUM 5 251#define BN_DEC_NUM 9
219#endif 252#define BN_HEX_FMT1 "%X"
220 253#define BN_HEX_FMT2 "%08X"
221#ifdef EIGHT_BIT
222#ifndef BN_DIV2W
223#define BN_DIV2W
224#endif
225#define BN_ULLONG unsigned short
226#define BN_ULONG unsigned char
227#define BN_LONG char
228#define BN_BITS 16
229#define BN_BYTES 1
230#define BN_BITS2 8
231#define BN_BITS4 4
232#define BN_MASK (0xffff)
233#define BN_MASK2 (0xff)
234#define BN_MASK2l (0xf)
235#define BN_MASK2h1 (0xf8)
236#define BN_MASK2h (0xf0)
237#define BN_TBIT (0x80)
238#define BN_DEC_CONV (100)
239#define BN_DEC_FMT1 "%u"
240#define BN_DEC_FMT2 "%02u"
241#define BN_DEC_NUM 2
242#endif 254#endif
243 255
244#define BN_DEFAULT_BITS 1280 256#define BN_DEFAULT_BITS 1280
@@ -303,12 +315,8 @@ struct bn_mont_ctx_st
303 BIGNUM N; /* The modulus */ 315 BIGNUM N; /* The modulus */
304 BIGNUM Ni; /* R*(1/R mod N) - N*Ni = 1 316 BIGNUM Ni; /* R*(1/R mod N) - N*Ni = 1
305 * (Ni is only stored for bignum algorithm) */ 317 * (Ni is only stored for bignum algorithm) */
306#if 0 318 BN_ULONG n0[2];/* least significant word(s) of Ni;
307 /* OpenSSL 0.9.9 preview: */ 319 (type changed with 0.9.9, was "BN_ULONG n0;" before) */
308 BN_ULONG n0[2];/* least significant word(s) of Ni */
309#else
310 BN_ULONG n0; /* least significant word of Ni */
311#endif
312 int flags; 320 int flags;
313 }; 321 };
314 322
@@ -504,6 +512,7 @@ char * BN_bn2hex(const BIGNUM *a);
504char * BN_bn2dec(const BIGNUM *a); 512char * BN_bn2dec(const BIGNUM *a);
505int BN_hex2bn(BIGNUM **a, const char *str); 513int BN_hex2bn(BIGNUM **a, const char *str);
506int BN_dec2bn(BIGNUM **a, const char *str); 514int BN_dec2bn(BIGNUM **a, const char *str);
515int BN_asc2bn(BIGNUM **a, const char *str);
507int BN_gcd(BIGNUM *r,const BIGNUM *a,const BIGNUM *b,BN_CTX *ctx); 516int BN_gcd(BIGNUM *r,const BIGNUM *a,const BIGNUM *b,BN_CTX *ctx);
508int BN_kronecker(const BIGNUM *a,const BIGNUM *b,BN_CTX *ctx); /* returns -2 for error */ 517int BN_kronecker(const BIGNUM *a,const BIGNUM *b,BN_CTX *ctx); /* returns -2 for error */
509BIGNUM *BN_mod_inverse(BIGNUM *ret, 518BIGNUM *BN_mod_inverse(BIGNUM *ret,
@@ -531,17 +540,6 @@ int BN_is_prime_ex(const BIGNUM *p,int nchecks, BN_CTX *ctx, BN_GENCB *cb);
531int BN_is_prime_fasttest_ex(const BIGNUM *p,int nchecks, BN_CTX *ctx, 540int BN_is_prime_fasttest_ex(const BIGNUM *p,int nchecks, BN_CTX *ctx,
532 int do_trial_division, BN_GENCB *cb); 541 int do_trial_division, BN_GENCB *cb);
533 542
534int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx);
535
536int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
537 const BIGNUM *Xp, const BIGNUM *Xp1, const BIGNUM *Xp2,
538 const BIGNUM *e, BN_CTX *ctx, BN_GENCB *cb);
539int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
540 BIGNUM *Xp1, BIGNUM *Xp2,
541 const BIGNUM *Xp,
542 const BIGNUM *e, BN_CTX *ctx,
543 BN_GENCB *cb);
544
545BN_MONT_CTX *BN_MONT_CTX_new(void ); 543BN_MONT_CTX *BN_MONT_CTX_new(void );
546void BN_MONT_CTX_init(BN_MONT_CTX *ctx); 544void BN_MONT_CTX_init(BN_MONT_CTX *ctx);
547int BN_mod_mul_montgomery(BIGNUM *r,const BIGNUM *a,const BIGNUM *b, 545int BN_mod_mul_montgomery(BIGNUM *r,const BIGNUM *a,const BIGNUM *b,
@@ -560,19 +558,22 @@ BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, int lock,
560#define BN_BLINDING_NO_UPDATE 0x00000001 558#define BN_BLINDING_NO_UPDATE 0x00000001
561#define BN_BLINDING_NO_RECREATE 0x00000002 559#define BN_BLINDING_NO_RECREATE 0x00000002
562 560
563BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, /* const */ BIGNUM *mod); 561BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod);
564void BN_BLINDING_free(BN_BLINDING *b); 562void BN_BLINDING_free(BN_BLINDING *b);
565int BN_BLINDING_update(BN_BLINDING *b,BN_CTX *ctx); 563int BN_BLINDING_update(BN_BLINDING *b,BN_CTX *ctx);
566int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); 564int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
567int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx); 565int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
568int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *); 566int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *);
569int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *); 567int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *);
568#ifndef OPENSSL_NO_DEPRECATED
570unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *); 569unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *);
571void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long); 570void BN_BLINDING_set_thread_id(BN_BLINDING *, unsigned long);
571#endif
572CRYPTO_THREADID *BN_BLINDING_thread_id(BN_BLINDING *);
572unsigned long BN_BLINDING_get_flags(const BN_BLINDING *); 573unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
573void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long); 574void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
574BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, 575BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
575 const BIGNUM *e, /* const */ BIGNUM *m, BN_CTX *ctx, 576 const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
576 int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 577 int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
577 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx), 578 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx),
578 BN_MONT_CTX *m_ctx); 579 BN_MONT_CTX *m_ctx);
@@ -625,24 +626,24 @@ int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
625 * t^p[0] + t^p[1] + ... + t^p[k] 626 * t^p[0] + t^p[1] + ... + t^p[k]
626 * where m = p[0] > p[1] > ... > p[k] = 0. 627 * where m = p[0] > p[1] > ... > p[k] = 0.
627 */ 628 */
628int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const unsigned int p[]); 629int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]);
629 /* r = a mod p */ 630 /* r = a mod p */
630int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 631int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
631 const unsigned int p[], BN_CTX *ctx); /* r = (a * b) mod p */ 632 const int p[], BN_CTX *ctx); /* r = (a * b) mod p */
632int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const unsigned int p[], 633int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[],
633 BN_CTX *ctx); /* r = (a * a) mod p */ 634 BN_CTX *ctx); /* r = (a * a) mod p */
634int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const unsigned int p[], 635int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[],
635 BN_CTX *ctx); /* r = (1 / b) mod p */ 636 BN_CTX *ctx); /* r = (1 / b) mod p */
636int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 637int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
637 const unsigned int p[], BN_CTX *ctx); /* r = (a / b) mod p */ 638 const int p[], BN_CTX *ctx); /* r = (a / b) mod p */
638int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 639int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
639 const unsigned int p[], BN_CTX *ctx); /* r = (a ^ b) mod p */ 640 const int p[], BN_CTX *ctx); /* r = (a ^ b) mod p */
640int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a, 641int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a,
641 const unsigned int p[], BN_CTX *ctx); /* r = sqrt(a) mod p */ 642 const int p[], BN_CTX *ctx); /* r = sqrt(a) mod p */
642int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a, 643int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a,
643 const unsigned int p[], BN_CTX *ctx); /* r^2 + r = a mod p */ 644 const int p[], BN_CTX *ctx); /* r^2 + r = a mod p */
644int BN_GF2m_poly2arr(const BIGNUM *a, unsigned int p[], int max); 645int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max);
645int BN_GF2m_arr2poly(const unsigned int p[], BIGNUM *a); 646int BN_GF2m_arr2poly(const int p[], BIGNUM *a);
646 647
647/* faster mod functions for the 'NIST primes' 648/* faster mod functions for the 'NIST primes'
648 * 0 <= a < p^2 */ 649 * 0 <= a < p^2 */
@@ -751,10 +752,12 @@ int RAND_pseudo_bytes(unsigned char *buf,int num);
751#define bn_correct_top(a) \ 752#define bn_correct_top(a) \
752 { \ 753 { \
753 BN_ULONG *ftl; \ 754 BN_ULONG *ftl; \
754 if ((a)->top > 0) \ 755 int tmp_top = (a)->top; \
756 if (tmp_top > 0) \
755 { \ 757 { \
756 for (ftl= &((a)->d[(a)->top-1]); (a)->top > 0; (a)->top--) \ 758 for (ftl= &((a)->d[tmp_top-1]); tmp_top > 0; tmp_top--) \
757 if (*(ftl--)) break; \ 759 if (*(ftl--)) break; \
760 (a)->top = tmp_top; \
758 } \ 761 } \
759 bn_pollute(a); \ 762 bn_pollute(a); \
760 } 763 }
diff --git a/src/lib/libssl/src/crypto/bn/bn_asm.c b/src/lib/libssl/src/crypto/bn/bn_asm.c
index 99bc2de491..c43c91cc09 100644
--- a/src/lib/libssl/src/crypto/bn/bn_asm.c
+++ b/src/lib/libssl/src/crypto/bn/bn_asm.c
@@ -75,6 +75,7 @@ BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w)
75 assert(num >= 0); 75 assert(num >= 0);
76 if (num <= 0) return(c1); 76 if (num <= 0) return(c1);
77 77
78#ifndef OPENSSL_SMALL_FOOTPRINT
78 while (num&~3) 79 while (num&~3)
79 { 80 {
80 mul_add(rp[0],ap[0],w,c1); 81 mul_add(rp[0],ap[0],w,c1);
@@ -83,11 +84,11 @@ BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w)
83 mul_add(rp[3],ap[3],w,c1); 84 mul_add(rp[3],ap[3],w,c1);
84 ap+=4; rp+=4; num-=4; 85 ap+=4; rp+=4; num-=4;
85 } 86 }
86 if (num) 87#endif
88 while (num)
87 { 89 {
88 mul_add(rp[0],ap[0],w,c1); if (--num==0) return c1; 90 mul_add(rp[0],ap[0],w,c1);
89 mul_add(rp[1],ap[1],w,c1); if (--num==0) return c1; 91 ap++; rp++; num--;
90 mul_add(rp[2],ap[2],w,c1); return c1;
91 } 92 }
92 93
93 return(c1); 94 return(c1);
@@ -100,6 +101,7 @@ BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w)
100 assert(num >= 0); 101 assert(num >= 0);
101 if (num <= 0) return(c1); 102 if (num <= 0) return(c1);
102 103
104#ifndef OPENSSL_SMALL_FOOTPRINT
103 while (num&~3) 105 while (num&~3)
104 { 106 {
105 mul(rp[0],ap[0],w,c1); 107 mul(rp[0],ap[0],w,c1);
@@ -108,11 +110,11 @@ BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w)
108 mul(rp[3],ap[3],w,c1); 110 mul(rp[3],ap[3],w,c1);
109 ap+=4; rp+=4; num-=4; 111 ap+=4; rp+=4; num-=4;
110 } 112 }
111 if (num) 113#endif
114 while (num)
112 { 115 {
113 mul(rp[0],ap[0],w,c1); if (--num == 0) return c1; 116 mul(rp[0],ap[0],w,c1);
114 mul(rp[1],ap[1],w,c1); if (--num == 0) return c1; 117 ap++; rp++; num--;
115 mul(rp[2],ap[2],w,c1);
116 } 118 }
117 return(c1); 119 return(c1);
118 } 120 }
@@ -121,6 +123,8 @@ void bn_sqr_words(BN_ULONG *r, const BN_ULONG *a, int n)
121 { 123 {
122 assert(n >= 0); 124 assert(n >= 0);
123 if (n <= 0) return; 125 if (n <= 0) return;
126
127#ifndef OPENSSL_SMALL_FOOTPRINT
124 while (n&~3) 128 while (n&~3)
125 { 129 {
126 sqr(r[0],r[1],a[0]); 130 sqr(r[0],r[1],a[0]);
@@ -129,11 +133,11 @@ void bn_sqr_words(BN_ULONG *r, const BN_ULONG *a, int n)
129 sqr(r[6],r[7],a[3]); 133 sqr(r[6],r[7],a[3]);
130 a+=4; r+=8; n-=4; 134 a+=4; r+=8; n-=4;
131 } 135 }
132 if (n) 136#endif
137 while (n)
133 { 138 {
134 sqr(r[0],r[1],a[0]); if (--n == 0) return; 139 sqr(r[0],r[1],a[0]);
135 sqr(r[2],r[3],a[1]); if (--n == 0) return; 140 a++; r+=2; n--;
136 sqr(r[4],r[5],a[2]);
137 } 141 }
138 } 142 }
139 143
@@ -150,18 +154,20 @@ BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w)
150 bl=LBITS(w); 154 bl=LBITS(w);
151 bh=HBITS(w); 155 bh=HBITS(w);
152 156
153 for (;;) 157#ifndef OPENSSL_SMALL_FOOTPRINT
158 while (num&~3)
154 { 159 {
155 mul_add(rp[0],ap[0],bl,bh,c); 160 mul_add(rp[0],ap[0],bl,bh,c);
156 if (--num == 0) break;
157 mul_add(rp[1],ap[1],bl,bh,c); 161 mul_add(rp[1],ap[1],bl,bh,c);
158 if (--num == 0) break;
159 mul_add(rp[2],ap[2],bl,bh,c); 162 mul_add(rp[2],ap[2],bl,bh,c);
160 if (--num == 0) break;
161 mul_add(rp[3],ap[3],bl,bh,c); 163 mul_add(rp[3],ap[3],bl,bh,c);
162 if (--num == 0) break; 164 ap+=4; rp+=4; num-=4;
163 ap+=4; 165 }
164 rp+=4; 166#endif
167 while (num)
168 {
169 mul_add(rp[0],ap[0],bl,bh,c);
170 ap++; rp++; num--;
165 } 171 }
166 return(c); 172 return(c);
167 } 173 }
@@ -177,18 +183,20 @@ BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, int num, BN_ULONG w)
177 bl=LBITS(w); 183 bl=LBITS(w);
178 bh=HBITS(w); 184 bh=HBITS(w);
179 185
180 for (;;) 186#ifndef OPENSSL_SMALL_FOOTPRINT
187 while (num&~3)
181 { 188 {
182 mul(rp[0],ap[0],bl,bh,carry); 189 mul(rp[0],ap[0],bl,bh,carry);
183 if (--num == 0) break;
184 mul(rp[1],ap[1],bl,bh,carry); 190 mul(rp[1],ap[1],bl,bh,carry);
185 if (--num == 0) break;
186 mul(rp[2],ap[2],bl,bh,carry); 191 mul(rp[2],ap[2],bl,bh,carry);
187 if (--num == 0) break;
188 mul(rp[3],ap[3],bl,bh,carry); 192 mul(rp[3],ap[3],bl,bh,carry);
189 if (--num == 0) break; 193 ap+=4; rp+=4; num-=4;
190 ap+=4; 194 }
191 rp+=4; 195#endif
196 while (num)
197 {
198 mul(rp[0],ap[0],bl,bh,carry);
199 ap++; rp++; num--;
192 } 200 }
193 return(carry); 201 return(carry);
194 } 202 }
@@ -197,22 +205,21 @@ void bn_sqr_words(BN_ULONG *r, const BN_ULONG *a, int n)
197 { 205 {
198 assert(n >= 0); 206 assert(n >= 0);
199 if (n <= 0) return; 207 if (n <= 0) return;
200 for (;;) 208
209#ifndef OPENSSL_SMALL_FOOTPRINT
210 while (n&~3)
201 { 211 {
202 sqr64(r[0],r[1],a[0]); 212 sqr64(r[0],r[1],a[0]);
203 if (--n == 0) break;
204
205 sqr64(r[2],r[3],a[1]); 213 sqr64(r[2],r[3],a[1]);
206 if (--n == 0) break;
207
208 sqr64(r[4],r[5],a[2]); 214 sqr64(r[4],r[5],a[2]);
209 if (--n == 0) break;
210
211 sqr64(r[6],r[7],a[3]); 215 sqr64(r[6],r[7],a[3]);
212 if (--n == 0) break; 216 a+=4; r+=8; n-=4;
213 217 }
214 a+=4; 218#endif
215 r+=8; 219 while (n)
220 {
221 sqr64(r[0],r[1],a[0]);
222 a++; r+=2; n--;
216 } 223 }
217 } 224 }
218 225
@@ -303,31 +310,30 @@ BN_ULONG bn_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, int n)
303 assert(n >= 0); 310 assert(n >= 0);
304 if (n <= 0) return((BN_ULONG)0); 311 if (n <= 0) return((BN_ULONG)0);
305 312
306 for (;;) 313#ifndef OPENSSL_SMALL_FOOTPRINT
314 while (n&~3)
307 { 315 {
308 ll+=(BN_ULLONG)a[0]+b[0]; 316 ll+=(BN_ULLONG)a[0]+b[0];
309 r[0]=(BN_ULONG)ll&BN_MASK2; 317 r[0]=(BN_ULONG)ll&BN_MASK2;
310 ll>>=BN_BITS2; 318 ll>>=BN_BITS2;
311 if (--n <= 0) break;
312
313 ll+=(BN_ULLONG)a[1]+b[1]; 319 ll+=(BN_ULLONG)a[1]+b[1];
314 r[1]=(BN_ULONG)ll&BN_MASK2; 320 r[1]=(BN_ULONG)ll&BN_MASK2;
315 ll>>=BN_BITS2; 321 ll>>=BN_BITS2;
316 if (--n <= 0) break;
317
318 ll+=(BN_ULLONG)a[2]+b[2]; 322 ll+=(BN_ULLONG)a[2]+b[2];
319 r[2]=(BN_ULONG)ll&BN_MASK2; 323 r[2]=(BN_ULONG)ll&BN_MASK2;
320 ll>>=BN_BITS2; 324 ll>>=BN_BITS2;
321 if (--n <= 0) break;
322
323 ll+=(BN_ULLONG)a[3]+b[3]; 325 ll+=(BN_ULLONG)a[3]+b[3];
324 r[3]=(BN_ULONG)ll&BN_MASK2; 326 r[3]=(BN_ULONG)ll&BN_MASK2;
325 ll>>=BN_BITS2; 327 ll>>=BN_BITS2;
326 if (--n <= 0) break; 328 a+=4; b+=4; r+=4; n-=4;
327 329 }
328 a+=4; 330#endif
329 b+=4; 331 while (n)
330 r+=4; 332 {
333 ll+=(BN_ULLONG)a[0]+b[0];
334 r[0]=(BN_ULONG)ll&BN_MASK2;
335 ll>>=BN_BITS2;
336 a++; b++; r++; n--;
331 } 337 }
332 return((BN_ULONG)ll); 338 return((BN_ULONG)ll);
333 } 339 }
@@ -340,7 +346,8 @@ BN_ULONG bn_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, int n)
340 if (n <= 0) return((BN_ULONG)0); 346 if (n <= 0) return((BN_ULONG)0);
341 347
342 c=0; 348 c=0;
343 for (;;) 349#ifndef OPENSSL_SMALL_FOOTPRINT
350 while (n&~3)
344 { 351 {
345 t=a[0]; 352 t=a[0];
346 t=(t+c)&BN_MASK2; 353 t=(t+c)&BN_MASK2;
@@ -348,35 +355,36 @@ BN_ULONG bn_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, int n)
348 l=(t+b[0])&BN_MASK2; 355 l=(t+b[0])&BN_MASK2;
349 c+=(l < t); 356 c+=(l < t);
350 r[0]=l; 357 r[0]=l;
351 if (--n <= 0) break;
352
353 t=a[1]; 358 t=a[1];
354 t=(t+c)&BN_MASK2; 359 t=(t+c)&BN_MASK2;
355 c=(t < c); 360 c=(t < c);
356 l=(t+b[1])&BN_MASK2; 361 l=(t+b[1])&BN_MASK2;
357 c+=(l < t); 362 c+=(l < t);
358 r[1]=l; 363 r[1]=l;
359 if (--n <= 0) break;
360
361 t=a[2]; 364 t=a[2];
362 t=(t+c)&BN_MASK2; 365 t=(t+c)&BN_MASK2;
363 c=(t < c); 366 c=(t < c);
364 l=(t+b[2])&BN_MASK2; 367 l=(t+b[2])&BN_MASK2;
365 c+=(l < t); 368 c+=(l < t);
366 r[2]=l; 369 r[2]=l;
367 if (--n <= 0) break;
368
369 t=a[3]; 370 t=a[3];
370 t=(t+c)&BN_MASK2; 371 t=(t+c)&BN_MASK2;
371 c=(t < c); 372 c=(t < c);
372 l=(t+b[3])&BN_MASK2; 373 l=(t+b[3])&BN_MASK2;
373 c+=(l < t); 374 c+=(l < t);
374 r[3]=l; 375 r[3]=l;
375 if (--n <= 0) break; 376 a+=4; b+=4; r+=4; n-=4;
376 377 }
377 a+=4; 378#endif
378 b+=4; 379 while(n)
379 r+=4; 380 {
381 t=a[0];
382 t=(t+c)&BN_MASK2;
383 c=(t < c);
384 l=(t+b[0])&BN_MASK2;
385 c+=(l < t);
386 r[0]=l;
387 a++; b++; r++; n--;
380 } 388 }
381 return((BN_ULONG)c); 389 return((BN_ULONG)c);
382 } 390 }
@@ -390,36 +398,35 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b, int n)
390 assert(n >= 0); 398 assert(n >= 0);
391 if (n <= 0) return((BN_ULONG)0); 399 if (n <= 0) return((BN_ULONG)0);
392 400
393 for (;;) 401#ifndef OPENSSL_SMALL_FOOTPRINT
402 while (n&~3)
394 { 403 {
395 t1=a[0]; t2=b[0]; 404 t1=a[0]; t2=b[0];
396 r[0]=(t1-t2-c)&BN_MASK2; 405 r[0]=(t1-t2-c)&BN_MASK2;
397 if (t1 != t2) c=(t1 < t2); 406 if (t1 != t2) c=(t1 < t2);
398 if (--n <= 0) break;
399
400 t1=a[1]; t2=b[1]; 407 t1=a[1]; t2=b[1];
401 r[1]=(t1-t2-c)&BN_MASK2; 408 r[1]=(t1-t2-c)&BN_MASK2;
402 if (t1 != t2) c=(t1 < t2); 409 if (t1 != t2) c=(t1 < t2);
403 if (--n <= 0) break;
404
405 t1=a[2]; t2=b[2]; 410 t1=a[2]; t2=b[2];
406 r[2]=(t1-t2-c)&BN_MASK2; 411 r[2]=(t1-t2-c)&BN_MASK2;
407 if (t1 != t2) c=(t1 < t2); 412 if (t1 != t2) c=(t1 < t2);
408 if (--n <= 0) break;
409
410 t1=a[3]; t2=b[3]; 413 t1=a[3]; t2=b[3];
411 r[3]=(t1-t2-c)&BN_MASK2; 414 r[3]=(t1-t2-c)&BN_MASK2;
412 if (t1 != t2) c=(t1 < t2); 415 if (t1 != t2) c=(t1 < t2);
413 if (--n <= 0) break; 416 a+=4; b+=4; r+=4; n-=4;
414 417 }
415 a+=4; 418#endif
416 b+=4; 419 while (n)
417 r+=4; 420 {
421 t1=a[0]; t2=b[0];
422 r[0]=(t1-t2-c)&BN_MASK2;
423 if (t1 != t2) c=(t1 < t2);
424 a++; b++; r++; n--;
418 } 425 }
419 return(c); 426 return(c);
420 } 427 }
421 428
422#ifdef BN_MUL_COMBA 429#if defined(BN_MUL_COMBA) && !defined(OPENSSL_SMALL_FOOTPRINT)
423 430
424#undef bn_mul_comba8 431#undef bn_mul_comba8
425#undef bn_mul_comba4 432#undef bn_mul_comba4
@@ -820,18 +827,134 @@ void bn_sqr_comba4(BN_ULONG *r, const BN_ULONG *a)
820 r[6]=c1; 827 r[6]=c1;
821 r[7]=c2; 828 r[7]=c2;
822 } 829 }
830
831#ifdef OPENSSL_NO_ASM
832#ifdef OPENSSL_BN_ASM_MONT
833#include <alloca.h>
834/*
835 * This is essentially reference implementation, which may or may not
836 * result in performance improvement. E.g. on IA-32 this routine was
837 * observed to give 40% faster rsa1024 private key operations and 10%
838 * faster rsa4096 ones, while on AMD64 it improves rsa1024 sign only
839 * by 10% and *worsens* rsa4096 sign by 15%. Once again, it's a
840 * reference implementation, one to be used as starting point for
841 * platform-specific assembler. Mentioned numbers apply to compiler
842 * generated code compiled with and without -DOPENSSL_BN_ASM_MONT and
843 * can vary not only from platform to platform, but even for compiler
844 * versions. Assembler vs. assembler improvement coefficients can
845 * [and are known to] differ and are to be documented elsewhere.
846 */
847int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np,const BN_ULONG *n0p, int num)
848 {
849 BN_ULONG c0,c1,ml,*tp,n0;
850#ifdef mul64
851 BN_ULONG mh;
852#endif
853 volatile BN_ULONG *vp;
854 int i=0,j;
855
856#if 0 /* template for platform-specific implementation */
857 if (ap==bp) return bn_sqr_mont(rp,ap,np,n0p,num);
858#endif
859 vp = tp = alloca((num+2)*sizeof(BN_ULONG));
860
861 n0 = *n0p;
862
863 c0 = 0;
864 ml = bp[0];
865#ifdef mul64
866 mh = HBITS(ml);
867 ml = LBITS(ml);
868 for (j=0;j<num;++j)
869 mul(tp[j],ap[j],ml,mh,c0);
870#else
871 for (j=0;j<num;++j)
872 mul(tp[j],ap[j],ml,c0);
873#endif
874
875 tp[num] = c0;
876 tp[num+1] = 0;
877 goto enter;
878
879 for(i=0;i<num;i++)
880 {
881 c0 = 0;
882 ml = bp[i];
883#ifdef mul64
884 mh = HBITS(ml);
885 ml = LBITS(ml);
886 for (j=0;j<num;++j)
887 mul_add(tp[j],ap[j],ml,mh,c0);
888#else
889 for (j=0;j<num;++j)
890 mul_add(tp[j],ap[j],ml,c0);
891#endif
892 c1 = (tp[num] + c0)&BN_MASK2;
893 tp[num] = c1;
894 tp[num+1] = (c1<c0?1:0);
895 enter:
896 c1 = tp[0];
897 ml = (c1*n0)&BN_MASK2;
898 c0 = 0;
899#ifdef mul64
900 mh = HBITS(ml);
901 ml = LBITS(ml);
902 mul_add(c1,np[0],ml,mh,c0);
903#else
904 mul_add(c1,ml,np[0],c0);
905#endif
906 for(j=1;j<num;j++)
907 {
908 c1 = tp[j];
909#ifdef mul64
910 mul_add(c1,np[j],ml,mh,c0);
911#else
912 mul_add(c1,ml,np[j],c0);
913#endif
914 tp[j-1] = c1&BN_MASK2;
915 }
916 c1 = (tp[num] + c0)&BN_MASK2;
917 tp[num-1] = c1;
918 tp[num] = tp[num+1] + (c1<c0?1:0);
919 }
920
921 if (tp[num]!=0 || tp[num-1]>=np[num-1])
922 {
923 c0 = bn_sub_words(rp,tp,np,num);
924 if (tp[num]!=0 || c0==0)
925 {
926 for(i=0;i<num+2;i++) vp[i] = 0;
927 return 1;
928 }
929 }
930 for(i=0;i<num;i++) rp[i] = tp[i], vp[i] = 0;
931 vp[num] = 0;
932 vp[num+1] = 0;
933 return 1;
934 }
935#else
936/*
937 * Return value of 0 indicates that multiplication/convolution was not
938 * performed to signal the caller to fall down to alternative/original
939 * code-path.
940 */
941int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np,const BN_ULONG *n0, int num)
942{ return 0; }
943#endif /* OPENSSL_BN_ASM_MONT */
944#endif
945
823#else /* !BN_MUL_COMBA */ 946#else /* !BN_MUL_COMBA */
824 947
825/* hmm... is it faster just to do a multiply? */ 948/* hmm... is it faster just to do a multiply? */
826#undef bn_sqr_comba4 949#undef bn_sqr_comba4
827void bn_sqr_comba4(BN_ULONG *r, BN_ULONG *a) 950void bn_sqr_comba4(BN_ULONG *r, const BN_ULONG *a)
828 { 951 {
829 BN_ULONG t[8]; 952 BN_ULONG t[8];
830 bn_sqr_normal(r,a,4,t); 953 bn_sqr_normal(r,a,4,t);
831 } 954 }
832 955
833#undef bn_sqr_comba8 956#undef bn_sqr_comba8
834void bn_sqr_comba8(BN_ULONG *r, BN_ULONG *a) 957void bn_sqr_comba8(BN_ULONG *r, const BN_ULONG *a)
835 { 958 {
836 BN_ULONG t[16]; 959 BN_ULONG t[16];
837 bn_sqr_normal(r,a,8,t); 960 bn_sqr_normal(r,a,8,t);
@@ -857,4 +980,51 @@ void bn_mul_comba8(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b)
857 r[15]=bn_mul_add_words(&(r[7]),a,8,b[7]); 980 r[15]=bn_mul_add_words(&(r[7]),a,8,b[7]);
858 } 981 }
859 982
983#ifdef OPENSSL_NO_ASM
984#ifdef OPENSSL_BN_ASM_MONT
985#include <alloca.h>
986int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np,const BN_ULONG *n0p, int num)
987 {
988 BN_ULONG c0,c1,*tp,n0=*n0p;
989 volatile BN_ULONG *vp;
990 int i=0,j;
991
992 vp = tp = alloca((num+2)*sizeof(BN_ULONG));
993
994 for(i=0;i<=num;i++) tp[i]=0;
995
996 for(i=0;i<num;i++)
997 {
998 c0 = bn_mul_add_words(tp,ap,num,bp[i]);
999 c1 = (tp[num] + c0)&BN_MASK2;
1000 tp[num] = c1;
1001 tp[num+1] = (c1<c0?1:0);
1002
1003 c0 = bn_mul_add_words(tp,np,num,tp[0]*n0);
1004 c1 = (tp[num] + c0)&BN_MASK2;
1005 tp[num] = c1;
1006 tp[num+1] += (c1<c0?1:0);
1007 for(j=0;j<=num;j++) tp[j]=tp[j+1];
1008 }
1009
1010 if (tp[num]!=0 || tp[num-1]>=np[num-1])
1011 {
1012 c0 = bn_sub_words(rp,tp,np,num);
1013 if (tp[num]!=0 || c0==0)
1014 {
1015 for(i=0;i<num+2;i++) vp[i] = 0;
1016 return 1;
1017 }
1018 }
1019 for(i=0;i<num;i++) rp[i] = tp[i], vp[i] = 0;
1020 vp[num] = 0;
1021 vp[num+1] = 0;
1022 return 1;
1023 }
1024#else
1025int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_ULONG *np,const BN_ULONG *n0, int num)
1026{ return 0; }
1027#endif /* OPENSSL_BN_ASM_MONT */
1028#endif
1029
860#endif /* !BN_MUL_COMBA */ 1030#endif /* !BN_MUL_COMBA */
diff --git a/src/lib/libssl/src/crypto/bn/bn_blind.c b/src/lib/libssl/src/crypto/bn/bn_blind.c
index c11fb4ccc2..e060592fdc 100644
--- a/src/lib/libssl/src/crypto/bn/bn_blind.c
+++ b/src/lib/libssl/src/crypto/bn/bn_blind.c
@@ -1,6 +1,6 @@
1/* crypto/bn/bn_blind.c */ 1/* crypto/bn/bn_blind.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -121,8 +121,11 @@ struct bn_blinding_st
121 BIGNUM *Ai; 121 BIGNUM *Ai;
122 BIGNUM *e; 122 BIGNUM *e;
123 BIGNUM *mod; /* just a reference */ 123 BIGNUM *mod; /* just a reference */
124#ifndef OPENSSL_NO_DEPRECATED
124 unsigned long thread_id; /* added in OpenSSL 0.9.6j and 0.9.7b; 125 unsigned long thread_id; /* added in OpenSSL 0.9.6j and 0.9.7b;
125 * used only by crypto/rsa/rsa_eay.c, rsa_lib.c */ 126 * used only by crypto/rsa/rsa_eay.c, rsa_lib.c */
127#endif
128 CRYPTO_THREADID tid;
126 unsigned int counter; 129 unsigned int counter;
127 unsigned long flags; 130 unsigned long flags;
128 BN_MONT_CTX *m_ctx; 131 BN_MONT_CTX *m_ctx;
@@ -131,7 +134,7 @@ struct bn_blinding_st
131 BN_MONT_CTX *m_ctx); 134 BN_MONT_CTX *m_ctx);
132 }; 135 };
133 136
134BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, /* const */ BIGNUM *mod) 137BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod)
135 { 138 {
136 BN_BLINDING *ret=NULL; 139 BN_BLINDING *ret=NULL;
137 140
@@ -158,6 +161,7 @@ BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, /* const */ BIGN
158 BN_set_flags(ret->mod, BN_FLG_CONSTTIME); 161 BN_set_flags(ret->mod, BN_FLG_CONSTTIME);
159 162
160 ret->counter = BN_BLINDING_COUNTER; 163 ret->counter = BN_BLINDING_COUNTER;
164 CRYPTO_THREADID_current(&ret->tid);
161 return(ret); 165 return(ret);
162err: 166err:
163 if (ret != NULL) BN_BLINDING_free(ret); 167 if (ret != NULL) BN_BLINDING_free(ret);
@@ -263,6 +267,7 @@ int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b, BN_CTX *ct
263 return(ret); 267 return(ret);
264 } 268 }
265 269
270#ifndef OPENSSL_NO_DEPRECATED
266unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *b) 271unsigned long BN_BLINDING_get_thread_id(const BN_BLINDING *b)
267 { 272 {
268 return b->thread_id; 273 return b->thread_id;
@@ -272,6 +277,12 @@ void BN_BLINDING_set_thread_id(BN_BLINDING *b, unsigned long n)
272 { 277 {
273 b->thread_id = n; 278 b->thread_id = n;
274 } 279 }
280#endif
281
282CRYPTO_THREADID *BN_BLINDING_thread_id(BN_BLINDING *b)
283 {
284 return &b->tid;
285 }
275 286
276unsigned long BN_BLINDING_get_flags(const BN_BLINDING *b) 287unsigned long BN_BLINDING_get_flags(const BN_BLINDING *b)
277 { 288 {
@@ -284,7 +295,7 @@ void BN_BLINDING_set_flags(BN_BLINDING *b, unsigned long flags)
284 } 295 }
285 296
286BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b, 297BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
287 const BIGNUM *e, /* const */ BIGNUM *m, BN_CTX *ctx, 298 const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
288 int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, 299 int (*bn_mod_exp)(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
289 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx), 300 const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx),
290 BN_MONT_CTX *m_ctx) 301 BN_MONT_CTX *m_ctx)
diff --git a/src/lib/libssl/src/crypto/bn/bn_ctx.c b/src/lib/libssl/src/crypto/bn/bn_ctx.c
index b3452f1a91..3f2256f675 100644
--- a/src/lib/libssl/src/crypto/bn/bn_ctx.c
+++ b/src/lib/libssl/src/crypto/bn/bn_ctx.c
@@ -161,7 +161,7 @@ static void ctxdbg(BN_CTX *ctx)
161 fprintf(stderr,"(%08x): ", (unsigned int)ctx); 161 fprintf(stderr,"(%08x): ", (unsigned int)ctx);
162 while(bnidx < ctx->used) 162 while(bnidx < ctx->used)
163 { 163 {
164 fprintf(stderr,"%02x ", item->vals[bnidx++ % BN_CTX_POOL_SIZE].dmax); 164 fprintf(stderr,"%03x ", item->vals[bnidx++ % BN_CTX_POOL_SIZE].dmax);
165 if(!(bnidx % BN_CTX_POOL_SIZE)) 165 if(!(bnidx % BN_CTX_POOL_SIZE))
166 item = item->next; 166 item = item->next;
167 } 167 }
@@ -171,8 +171,8 @@ static void ctxdbg(BN_CTX *ctx)
171 while(fpidx < stack->depth) 171 while(fpidx < stack->depth)
172 { 172 {
173 while(bnidx++ < stack->indexes[fpidx]) 173 while(bnidx++ < stack->indexes[fpidx])
174 fprintf(stderr," "); 174 fprintf(stderr," ");
175 fprintf(stderr,"^^ "); 175 fprintf(stderr,"^^^ ");
176 bnidx++; 176 bnidx++;
177 fpidx++; 177 fpidx++;
178 } 178 }
diff --git a/src/lib/libssl/src/crypto/bn/bn_div.c b/src/lib/libssl/src/crypto/bn/bn_div.c
index 1e8e57626b..802a43d642 100644
--- a/src/lib/libssl/src/crypto/bn/bn_div.c
+++ b/src/lib/libssl/src/crypto/bn/bn_div.c
@@ -102,7 +102,7 @@ int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d,
102 /* The next 2 are needed so we can do a dv->d[0]|=1 later 102 /* The next 2 are needed so we can do a dv->d[0]|=1 later
103 * since BN_lshift1 will only work once there is a value :-) */ 103 * since BN_lshift1 will only work once there is a value :-) */
104 BN_zero(dv); 104 BN_zero(dv);
105 bn_wexpand(dv,1); 105 if(bn_wexpand(dv,1) == NULL) goto end;
106 dv->top=1; 106 dv->top=1;
107 107
108 if (!BN_lshift(D,D,nm-nd)) goto end; 108 if (!BN_lshift(D,D,nm-nd)) goto end;
@@ -229,7 +229,8 @@ int BN_div(BIGNUM *dv, BIGNUM *rm, const BIGNUM *num, const BIGNUM *divisor,
229 if (dv == NULL) 229 if (dv == NULL)
230 res=BN_CTX_get(ctx); 230 res=BN_CTX_get(ctx);
231 else res=dv; 231 else res=dv;
232 if (sdiv == NULL || res == NULL) goto err; 232 if (sdiv == NULL || res == NULL || tmp == NULL || snum == NULL)
233 goto err;
233 234
234 /* First we normalise the numbers */ 235 /* First we normalise the numbers */
235 norm_shift=BN_BITS2-((BN_num_bits(divisor))%BN_BITS2); 236 norm_shift=BN_BITS2-((BN_num_bits(divisor))%BN_BITS2);
@@ -336,7 +337,7 @@ X) -> 0x%08X\n",
336 t2 -= d1; 337 t2 -= d1;
337 } 338 }
338#else /* !BN_LLONG */ 339#else /* !BN_LLONG */
339 BN_ULONG t2l,t2h,ql,qh; 340 BN_ULONG t2l,t2h;
340 341
341 q=bn_div_words(n0,n1,d0); 342 q=bn_div_words(n0,n1,d0);
342#ifdef BN_DEBUG_LEVITTE 343#ifdef BN_DEBUG_LEVITTE
@@ -354,9 +355,12 @@ X) -> 0x%08X\n",
354 t2l = d1 * q; 355 t2l = d1 * q;
355 t2h = BN_UMULT_HIGH(d1,q); 356 t2h = BN_UMULT_HIGH(d1,q);
356#else 357#else
358 {
359 BN_ULONG ql, qh;
357 t2l=LBITS(d1); t2h=HBITS(d1); 360 t2l=LBITS(d1); t2h=HBITS(d1);
358 ql =LBITS(q); qh =HBITS(q); 361 ql =LBITS(q); qh =HBITS(q);
359 mul64(t2l,t2h,ql,qh); /* t2=(BN_ULLONG)d1*q; */ 362 mul64(t2l,t2h,ql,qh); /* t2=(BN_ULLONG)d1*q; */
363 }
360#endif 364#endif
361 365
362 for (;;) 366 for (;;)
@@ -560,7 +564,7 @@ X) -> 0x%08X\n",
560 t2 -= d1; 564 t2 -= d1;
561 } 565 }
562#else /* !BN_LLONG */ 566#else /* !BN_LLONG */
563 BN_ULONG t2l,t2h,ql,qh; 567 BN_ULONG t2l,t2h;
564 568
565 q=bn_div_words(n0,n1,d0); 569 q=bn_div_words(n0,n1,d0);
566#ifdef BN_DEBUG_LEVITTE 570#ifdef BN_DEBUG_LEVITTE
@@ -578,9 +582,12 @@ X) -> 0x%08X\n",
578 t2l = d1 * q; 582 t2l = d1 * q;
579 t2h = BN_UMULT_HIGH(d1,q); 583 t2h = BN_UMULT_HIGH(d1,q);
580#else 584#else
585 {
586 BN_ULONG ql, qh;
581 t2l=LBITS(d1); t2h=HBITS(d1); 587 t2l=LBITS(d1); t2h=HBITS(d1);
582 ql =LBITS(q); qh =HBITS(q); 588 ql =LBITS(q); qh =HBITS(q);
583 mul64(t2l,t2h,ql,qh); /* t2=(BN_ULLONG)d1*q; */ 589 mul64(t2l,t2h,ql,qh); /* t2=(BN_ULLONG)d1*q; */
590 }
584#endif 591#endif
585 592
586 for (;;) 593 for (;;)
diff --git a/src/lib/libssl/src/crypto/bn/bn_exp.c b/src/lib/libssl/src/crypto/bn/bn_exp.c
index 70a33f0d93..d9b6c737fc 100644
--- a/src/lib/libssl/src/crypto/bn/bn_exp.c
+++ b/src/lib/libssl/src/crypto/bn/bn_exp.c
@@ -134,7 +134,8 @@ int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx)
134 rr = BN_CTX_get(ctx); 134 rr = BN_CTX_get(ctx);
135 else 135 else
136 rr = r; 136 rr = r;
137 if ((v = BN_CTX_get(ctx)) == NULL) goto err; 137 v = BN_CTX_get(ctx);
138 if (rr == NULL || v == NULL) goto err;
138 139
139 if (BN_copy(v,a) == NULL) goto err; 140 if (BN_copy(v,a) == NULL) goto err;
140 bits=BN_num_bits(p); 141 bits=BN_num_bits(p);
diff --git a/src/lib/libssl/src/crypto/bn/bn_lcl.h b/src/lib/libssl/src/crypto/bn/bn_lcl.h
index 27ac4397a1..8e5e98e3f2 100644
--- a/src/lib/libssl/src/crypto/bn/bn_lcl.h
+++ b/src/lib/libssl/src/crypto/bn/bn_lcl.h
@@ -255,7 +255,8 @@ extern "C" {
255 : "r"(a), "r"(b)); \ 255 : "r"(a), "r"(b)); \
256 ret; }) 256 ret; })
257# endif /* compiler */ 257# endif /* compiler */
258# elif defined(__x86_64) && defined(SIXTY_FOUR_BIT_LONG) 258# elif (defined(__x86_64) || defined(__x86_64__)) && \
259 (defined(SIXTY_FOUR_BIT_LONG) || defined(SIXTY_FOUR_BIT))
259# if defined(__GNUC__) 260# if defined(__GNUC__)
260# define BN_UMULT_HIGH(a,b) ({ \ 261# define BN_UMULT_HIGH(a,b) ({ \
261 register BN_ULONG ret,discard; \ 262 register BN_ULONG ret,discard; \
diff --git a/src/lib/libssl/src/crypto/bn/bn_lib.c b/src/lib/libssl/src/crypto/bn/bn_lib.c
index 32a8fbaf51..5470fbe6ef 100644
--- a/src/lib/libssl/src/crypto/bn/bn_lib.c
+++ b/src/lib/libssl/src/crypto/bn/bn_lib.c
@@ -133,15 +133,34 @@ int BN_get_params(int which)
133 133
134const BIGNUM *BN_value_one(void) 134const BIGNUM *BN_value_one(void)
135 { 135 {
136 static BN_ULONG data_one=1L; 136 static const BN_ULONG data_one=1L;
137 static BIGNUM const_one={&data_one,1,1,0,BN_FLG_STATIC_DATA}; 137 static const BIGNUM const_one={(BN_ULONG *)&data_one,1,1,0,BN_FLG_STATIC_DATA};
138 138
139 return(&const_one); 139 return(&const_one);
140 } 140 }
141 141
142char *BN_options(void)
143 {
144 static int init=0;
145 static char data[16];
146
147 if (!init)
148 {
149 init++;
150#ifdef BN_LLONG
151 BIO_snprintf(data,sizeof data,"bn(%d,%d)",
152 (int)sizeof(BN_ULLONG)*8,(int)sizeof(BN_ULONG)*8);
153#else
154 BIO_snprintf(data,sizeof data,"bn(%d,%d)",
155 (int)sizeof(BN_ULONG)*8,(int)sizeof(BN_ULONG)*8);
156#endif
157 }
158 return(data);
159 }
160
142int BN_num_bits_word(BN_ULONG l) 161int BN_num_bits_word(BN_ULONG l)
143 { 162 {
144 static const char bits[256]={ 163 static const unsigned char bits[256]={
145 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4, 164 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,
146 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 165 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
147 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 166 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
@@ -216,7 +235,7 @@ int BN_num_bits_word(BN_ULONG l)
216 else 235 else
217#endif 236#endif
218 { 237 {
219#if defined(SIXTEEN_BIT) || defined(THIRTY_TWO_BIT) || defined(SIXTY_FOUR_BIT) || defined(SIXTY_FOUR_BIT_LONG) 238#if defined(THIRTY_TWO_BIT) || defined(SIXTY_FOUR_BIT) || defined(SIXTY_FOUR_BIT_LONG)
220 if (l & 0xff00L) 239 if (l & 0xff00L)
221 return(bits[(int)(l>>8)]+8); 240 return(bits[(int)(l>>8)]+8);
222 else 241 else
@@ -744,7 +763,7 @@ int BN_is_bit_set(const BIGNUM *a, int n)
744 i=n/BN_BITS2; 763 i=n/BN_BITS2;
745 j=n%BN_BITS2; 764 j=n%BN_BITS2;
746 if (a->top <= i) return 0; 765 if (a->top <= i) return 0;
747 return(((a->d[i])>>j)&((BN_ULONG)1)); 766 return (int)(((a->d[i])>>j)&((BN_ULONG)1));
748 } 767 }
749 768
750int BN_mask_bits(BIGNUM *a, int n) 769int BN_mask_bits(BIGNUM *a, int n)
diff --git a/src/lib/libssl/src/crypto/bn/bn_mont.c b/src/lib/libssl/src/crypto/bn/bn_mont.c
index 4799b152dd..7224637ab3 100644
--- a/src/lib/libssl/src/crypto/bn/bn_mont.c
+++ b/src/lib/libssl/src/crypto/bn/bn_mont.c
@@ -122,26 +122,10 @@
122 122
123#define MONT_WORD /* use the faster word-based algorithm */ 123#define MONT_WORD /* use the faster word-based algorithm */
124 124
125#if defined(MONT_WORD) && defined(OPENSSL_BN_ASM_MONT) && (BN_BITS2<=32) 125#ifdef MONT_WORD
126/* This condition means we have a specific non-default build:
127 * In the 0.9.8 branch, OPENSSL_BN_ASM_MONT is normally not set for any
128 * BN_BITS2<=32 platform; an explicit "enable-montasm" is required.
129 * I.e., if we are here, the user intentionally deviates from the
130 * normal stable build to get better Montgomery performance from
131 * the 0.9.9-dev backport.
132 *
133 * In this case only, we also enable BN_from_montgomery_word()
134 * (another non-stable feature from 0.9.9-dev).
135 */
136#define MONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD
137#endif
138
139#ifdef MONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD
140static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont); 126static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont);
141#endif 127#endif
142 128
143
144
145int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, 129int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
146 BN_MONT_CTX *mont, BN_CTX *ctx) 130 BN_MONT_CTX *mont, BN_CTX *ctx)
147 { 131 {
@@ -153,11 +137,7 @@ int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
153 if (num>1 && a->top==num && b->top==num) 137 if (num>1 && a->top==num && b->top==num)
154 { 138 {
155 if (bn_wexpand(r,num) == NULL) return(0); 139 if (bn_wexpand(r,num) == NULL) return(0);
156#if 0 /* for OpenSSL 0.9.9 mont->n0 */
157 if (bn_mul_mont(r->d,a->d,b->d,mont->N.d,mont->n0,num)) 140 if (bn_mul_mont(r->d,a->d,b->d,mont->N.d,mont->n0,num))
158#else
159 if (bn_mul_mont(r->d,a->d,b->d,mont->N.d,&mont->n0,num))
160#endif
161 { 141 {
162 r->neg = a->neg^b->neg; 142 r->neg = a->neg^b->neg;
163 r->top = num; 143 r->top = num;
@@ -181,7 +161,7 @@ int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
181 if (!BN_mul(tmp,a,b,ctx)) goto err; 161 if (!BN_mul(tmp,a,b,ctx)) goto err;
182 } 162 }
183 /* reduce from aRR to aR */ 163 /* reduce from aRR to aR */
184#ifdef MONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD 164#ifdef MONT_WORD
185 if (!BN_from_montgomery_word(r,tmp,mont)) goto err; 165 if (!BN_from_montgomery_word(r,tmp,mont)) goto err;
186#else 166#else
187 if (!BN_from_montgomery(r,tmp,mont,ctx)) goto err; 167 if (!BN_from_montgomery(r,tmp,mont,ctx)) goto err;
@@ -193,7 +173,7 @@ err:
193 return(ret); 173 return(ret);
194 } 174 }
195 175
196#ifdef MONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD 176#ifdef MONT_WORD
197static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont) 177static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont)
198 { 178 {
199 BIGNUM *n; 179 BIGNUM *n;
@@ -217,15 +197,15 @@ static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont)
217 nrp= &(r->d[nl]); 197 nrp= &(r->d[nl]);
218 198
219 /* clear the top words of T */ 199 /* clear the top words of T */
200#if 1
220 for (i=r->top; i<max; i++) /* memset? XXX */ 201 for (i=r->top; i<max; i++) /* memset? XXX */
221 r->d[i]=0; 202 r->d[i]=0;
203#else
204 memset(&(r->d[r->top]),0,(max-r->top)*sizeof(BN_ULONG));
205#endif
222 206
223 r->top=max; 207 r->top=max;
224#if 0 /* for OpenSSL 0.9.9 mont->n0 */
225 n0=mont->n0[0]; 208 n0=mont->n0[0];
226#else
227 n0=mont->n0;
228#endif
229 209
230#ifdef BN_COUNT 210#ifdef BN_COUNT
231 fprintf(stderr,"word BN_from_montgomery_word %d * %d\n",nl,nl); 211 fprintf(stderr,"word BN_from_montgomery_word %d * %d\n",nl,nl);
@@ -270,6 +250,8 @@ static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont)
270 } 250 }
271 al=r->top-ri; 251 al=r->top-ri;
272 252
253#define BRANCH_FREE 1
254#if BRANCH_FREE
273 if (bn_wexpand(ret,ri) == NULL) return(0); 255 if (bn_wexpand(ret,ri) == NULL) return(0);
274 x=0-(((al-ri)>>(sizeof(al)*8-1))&1); 256 x=0-(((al-ri)>>(sizeof(al)*8-1))&1);
275 ret->top=x=(ri&~x)|(al&x); /* min(ri,al) */ 257 ret->top=x=(ri&~x)|(al&x); /* min(ri,al) */
@@ -317,164 +299,8 @@ static int BN_from_montgomery_word(BIGNUM *ret, BIGNUM *r, BN_MONT_CTX *mont)
317 rp[i]=nrp[i], ap[i]=0; 299 rp[i]=nrp[i], ap[i]=0;
318 bn_correct_top(r); 300 bn_correct_top(r);
319 bn_correct_top(ret); 301 bn_correct_top(ret);
320 bn_check_top(ret);
321
322 return(1);
323 }
324
325int BN_from_montgomery(BIGNUM *ret, const BIGNUM *a, BN_MONT_CTX *mont,
326 BN_CTX *ctx)
327 {
328 int retn=0;
329 BIGNUM *t;
330
331 BN_CTX_start(ctx);
332 if ((t = BN_CTX_get(ctx)) && BN_copy(t,a))
333 retn = BN_from_montgomery_word(ret,t,mont);
334 BN_CTX_end(ctx);
335 return retn;
336 }
337
338#else /* !MONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD */
339
340int BN_from_montgomery(BIGNUM *ret, const BIGNUM *a, BN_MONT_CTX *mont,
341 BN_CTX *ctx)
342 {
343 int retn=0;
344
345#ifdef MONT_WORD
346 BIGNUM *n,*r;
347 BN_ULONG *ap,*np,*rp,n0,v,*nrp;
348 int al,nl,max,i,x,ri;
349
350 BN_CTX_start(ctx);
351 if ((r = BN_CTX_get(ctx)) == NULL) goto err;
352
353 if (!BN_copy(r,a)) goto err;
354 n= &(mont->N);
355
356 ap=a->d;
357 /* mont->ri is the size of mont->N in bits (rounded up
358 to the word size) */
359 al=ri=mont->ri/BN_BITS2;
360
361 nl=n->top;
362 if ((al == 0) || (nl == 0)) { r->top=0; return(1); }
363
364 max=(nl+al+1); /* allow for overflow (no?) XXX */
365 if (bn_wexpand(r,max) == NULL) goto err;
366
367 r->neg=a->neg^n->neg;
368 np=n->d;
369 rp=r->d;
370 nrp= &(r->d[nl]);
371
372 /* clear the top words of T */
373#if 1
374 for (i=r->top; i<max; i++) /* memset? XXX */
375 r->d[i]=0;
376#else 302#else
377 memset(&(r->d[r->top]),0,(max-r->top)*sizeof(BN_ULONG)); 303 if (bn_wexpand(ret,al) == NULL) return(0);
378#endif
379
380 r->top=max;
381 n0=mont->n0;
382
383#ifdef BN_COUNT
384 fprintf(stderr,"word BN_from_montgomery %d * %d\n",nl,nl);
385#endif
386 for (i=0; i<nl; i++)
387 {
388#ifdef __TANDEM
389 {
390 long long t1;
391 long long t2;
392 long long t3;
393 t1 = rp[0] * (n0 & 0177777);
394 t2 = 037777600000l;
395 t2 = n0 & t2;
396 t3 = rp[0] & 0177777;
397 t2 = (t3 * t2) & BN_MASK2;
398 t1 = t1 + t2;
399 v=bn_mul_add_words(rp,np,nl,(BN_ULONG) t1);
400 }
401#else
402 v=bn_mul_add_words(rp,np,nl,(rp[0]*n0)&BN_MASK2);
403#endif
404 nrp++;
405 rp++;
406 if (((nrp[-1]+=v)&BN_MASK2) >= v)
407 continue;
408 else
409 {
410 if (((++nrp[0])&BN_MASK2) != 0) continue;
411 if (((++nrp[1])&BN_MASK2) != 0) continue;
412 for (x=2; (((++nrp[x])&BN_MASK2) == 0); x++) ;
413 }
414 }
415 bn_correct_top(r);
416
417 /* mont->ri will be a multiple of the word size and below code
418 * is kind of BN_rshift(ret,r,mont->ri) equivalent */
419 if (r->top <= ri)
420 {
421 ret->top=0;
422 retn=1;
423 goto err;
424 }
425 al=r->top-ri;
426
427# define BRANCH_FREE 1
428# if BRANCH_FREE
429 if (bn_wexpand(ret,ri) == NULL) goto err;
430 x=0-(((al-ri)>>(sizeof(al)*8-1))&1);
431 ret->top=x=(ri&~x)|(al&x); /* min(ri,al) */
432 ret->neg=r->neg;
433
434 rp=ret->d;
435 ap=&(r->d[ri]);
436
437 {
438 size_t m1,m2;
439
440 v=bn_sub_words(rp,ap,np,ri);
441 /* this ----------------^^ works even in al<ri case
442 * thanks to zealous zeroing of top of the vector in the
443 * beginning. */
444
445 /* if (al==ri && !v) || al>ri) nrp=rp; else nrp=ap; */
446 /* in other words if subtraction result is real, then
447 * trick unconditional memcpy below to perform in-place
448 * "refresh" instead of actual copy. */
449 m1=0-(size_t)(((al-ri)>>(sizeof(al)*8-1))&1); /* al<ri */
450 m2=0-(size_t)(((ri-al)>>(sizeof(al)*8-1))&1); /* al>ri */
451 m1|=m2; /* (al!=ri) */
452 m1|=(0-(size_t)v); /* (al!=ri || v) */
453 m1&=~m2; /* (al!=ri || v) && !al>ri */
454 nrp=(BN_ULONG *)(((size_t)rp&~m1)|((size_t)ap&m1));
455 }
456
457 /* 'i<ri' is chosen to eliminate dependency on input data, even
458 * though it results in redundant copy in al<ri case. */
459 for (i=0,ri-=4; i<ri; i+=4)
460 {
461 BN_ULONG t1,t2,t3,t4;
462
463 t1=nrp[i+0];
464 t2=nrp[i+1];
465 t3=nrp[i+2]; ap[i+0]=0;
466 t4=nrp[i+3]; ap[i+1]=0;
467 rp[i+0]=t1; ap[i+2]=0;
468 rp[i+1]=t2; ap[i+3]=0;
469 rp[i+2]=t3;
470 rp[i+3]=t4;
471 }
472 for (ri+=4; i<ri; i++)
473 rp[i]=nrp[i], ap[i]=0;
474 bn_correct_top(r);
475 bn_correct_top(ret);
476# else
477 if (bn_wexpand(ret,al) == NULL) goto err;
478 ret->top=al; 304 ret->top=al;
479 ret->neg=r->neg; 305 ret->neg=r->neg;
480 306
@@ -497,8 +323,30 @@ int BN_from_montgomery(BIGNUM *ret, const BIGNUM *a, BN_MONT_CTX *mont,
497 al+=4; 323 al+=4;
498 for (; i<al; i++) 324 for (; i<al; i++)
499 rp[i]=ap[i]; 325 rp[i]=ap[i];
500# endif 326
501#else /* !MONT_WORD */ 327 if (BN_ucmp(ret, &(mont->N)) >= 0)
328 {
329 if (!BN_usub(ret,ret,&(mont->N))) return(0);
330 }
331#endif
332 bn_check_top(ret);
333
334 return(1);
335 }
336#endif /* MONT_WORD */
337
338int BN_from_montgomery(BIGNUM *ret, const BIGNUM *a, BN_MONT_CTX *mont,
339 BN_CTX *ctx)
340 {
341 int retn=0;
342#ifdef MONT_WORD
343 BIGNUM *t;
344
345 BN_CTX_start(ctx);
346 if ((t = BN_CTX_get(ctx)) && BN_copy(t,a))
347 retn = BN_from_montgomery_word(ret,t,mont);
348 BN_CTX_end(ctx);
349#else /* !MONT_WORD */
502 BIGNUM *t1,*t2; 350 BIGNUM *t1,*t2;
503 351
504 BN_CTX_start(ctx); 352 BN_CTX_start(ctx);
@@ -515,21 +363,18 @@ int BN_from_montgomery(BIGNUM *ret, const BIGNUM *a, BN_MONT_CTX *mont,
515 if (!BN_mul(t1,t2,&mont->N,ctx)) goto err; 363 if (!BN_mul(t1,t2,&mont->N,ctx)) goto err;
516 if (!BN_add(t2,a,t1)) goto err; 364 if (!BN_add(t2,a,t1)) goto err;
517 if (!BN_rshift(ret,t2,mont->ri)) goto err; 365 if (!BN_rshift(ret,t2,mont->ri)) goto err;
518#endif /* MONT_WORD */
519 366
520#if !defined(BRANCH_FREE) || BRANCH_FREE==0
521 if (BN_ucmp(ret, &(mont->N)) >= 0) 367 if (BN_ucmp(ret, &(mont->N)) >= 0)
522 { 368 {
523 if (!BN_usub(ret,ret,&(mont->N))) goto err; 369 if (!BN_usub(ret,ret,&(mont->N))) goto err;
524 } 370 }
525#endif
526 retn=1; 371 retn=1;
527 bn_check_top(ret); 372 bn_check_top(ret);
528 err: 373 err:
529 BN_CTX_end(ctx); 374 BN_CTX_end(ctx);
375#endif /* MONT_WORD */
530 return(retn); 376 return(retn);
531 } 377 }
532#endif /* MONT_FROM_WORD___NON_DEFAULT_0_9_8_BUILD */
533 378
534BN_MONT_CTX *BN_MONT_CTX_new(void) 379BN_MONT_CTX *BN_MONT_CTX_new(void)
535 { 380 {
@@ -549,11 +394,7 @@ void BN_MONT_CTX_init(BN_MONT_CTX *ctx)
549 BN_init(&(ctx->RR)); 394 BN_init(&(ctx->RR));
550 BN_init(&(ctx->N)); 395 BN_init(&(ctx->N));
551 BN_init(&(ctx->Ni)); 396 BN_init(&(ctx->Ni));
552#if 0 /* for OpenSSL 0.9.9 mont->n0 */
553 ctx->n0[0] = ctx->n0[1] = 0; 397 ctx->n0[0] = ctx->n0[1] = 0;
554#else
555 ctx->n0 = 0;
556#endif
557 ctx->flags=0; 398 ctx->flags=0;
558 } 399 }
559 400
@@ -585,26 +426,22 @@ int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
585 BIGNUM tmod; 426 BIGNUM tmod;
586 BN_ULONG buf[2]; 427 BN_ULONG buf[2];
587 428
588 mont->ri=(BN_num_bits(mod)+(BN_BITS2-1))/BN_BITS2*BN_BITS2;
589 BN_zero(R);
590#if 0 /* for OpenSSL 0.9.9 mont->n0, would be "#if defined(OPENSSL_BN_ASM_MONT) && (BN_BITS2<=32)",
591 only certain BN_BITS2<=32 platforms actually need this */
592 if (!(BN_set_bit(R,2*BN_BITS2))) goto err; /* R */
593#else
594 if (!(BN_set_bit(R,BN_BITS2))) goto err; /* R */
595#endif
596
597 buf[0]=mod->d[0]; /* tmod = N mod word size */
598 buf[1]=0;
599
600 BN_init(&tmod); 429 BN_init(&tmod);
601 tmod.d=buf; 430 tmod.d=buf;
602 tmod.top = buf[0] != 0 ? 1 : 0;
603 tmod.dmax=2; 431 tmod.dmax=2;
604 tmod.neg=0; 432 tmod.neg=0;
605 433
606#if 0 /* for OpenSSL 0.9.9 mont->n0, would be "#if defined(OPENSSL_BN_ASM_MONT) && (BN_BITS2<=32)"; 434 mont->ri=(BN_num_bits(mod)+(BN_BITS2-1))/BN_BITS2*BN_BITS2;
607 only certain BN_BITS2<=32 platforms actually need this */ 435
436#if defined(OPENSSL_BN_ASM_MONT) && (BN_BITS2<=32)
437 /* Only certain BN_BITS2<=32 platforms actually make use of
438 * n0[1], and we could use the #else case (with a shorter R
439 * value) for the others. However, currently only the assembler
440 * files do know which is which. */
441
442 BN_zero(R);
443 if (!(BN_set_bit(R,2*BN_BITS2))) goto err;
444
608 tmod.top=0; 445 tmod.top=0;
609 if ((buf[0] = mod->d[0])) tmod.top=1; 446 if ((buf[0] = mod->d[0])) tmod.top=1;
610 if ((buf[1] = mod->top>1 ? mod->d[1] : 0)) tmod.top=2; 447 if ((buf[1] = mod->top>1 ? mod->d[1] : 0)) tmod.top=2;
@@ -632,6 +469,12 @@ int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
632 mont->n0[0] = (Ri->top > 0) ? Ri->d[0] : 0; 469 mont->n0[0] = (Ri->top > 0) ? Ri->d[0] : 0;
633 mont->n0[1] = (Ri->top > 1) ? Ri->d[1] : 0; 470 mont->n0[1] = (Ri->top > 1) ? Ri->d[1] : 0;
634#else 471#else
472 BN_zero(R);
473 if (!(BN_set_bit(R,BN_BITS2))) goto err; /* R */
474
475 buf[0]=mod->d[0]; /* tmod = N mod word size */
476 buf[1]=0;
477 tmod.top = buf[0] != 0 ? 1 : 0;
635 /* Ri = R^-1 mod N*/ 478 /* Ri = R^-1 mod N*/
636 if ((BN_mod_inverse(Ri,R,&tmod,ctx)) == NULL) 479 if ((BN_mod_inverse(Ri,R,&tmod,ctx)) == NULL)
637 goto err; 480 goto err;
@@ -647,12 +490,8 @@ int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx)
647 if (!BN_div(Ri,NULL,Ri,&tmod,ctx)) goto err; 490 if (!BN_div(Ri,NULL,Ri,&tmod,ctx)) goto err;
648 /* Ni = (R*Ri-1)/N, 491 /* Ni = (R*Ri-1)/N,
649 * keep only least significant word: */ 492 * keep only least significant word: */
650# if 0 /* for OpenSSL 0.9.9 mont->n0 */
651 mont->n0[0] = (Ri->top > 0) ? Ri->d[0] : 0; 493 mont->n0[0] = (Ri->top > 0) ? Ri->d[0] : 0;
652 mont->n0[1] = 0; 494 mont->n0[1] = 0;
653# else
654 mont->n0 = (Ri->top > 0) ? Ri->d[0] : 0;
655# endif
656#endif 495#endif
657 } 496 }
658#else /* !MONT_WORD */ 497#else /* !MONT_WORD */
@@ -689,12 +528,8 @@ BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from)
689 if (!BN_copy(&(to->N),&(from->N))) return NULL; 528 if (!BN_copy(&(to->N),&(from->N))) return NULL;
690 if (!BN_copy(&(to->Ni),&(from->Ni))) return NULL; 529 if (!BN_copy(&(to->Ni),&(from->Ni))) return NULL;
691 to->ri=from->ri; 530 to->ri=from->ri;
692#if 0 /* for OpenSSL 0.9.9 mont->n0 */
693 to->n0[0]=from->n0[0]; 531 to->n0[0]=from->n0[0];
694 to->n0[1]=from->n0[1]; 532 to->n0[1]=from->n0[1];
695#else
696 to->n0=from->n0;
697#endif
698 return(to); 533 return(to);
699 } 534 }
700 535
diff --git a/src/lib/libssl/src/crypto/bn/bn_mul.c b/src/lib/libssl/src/crypto/bn/bn_mul.c
index b848c8cc60..a0e9ec3b46 100644
--- a/src/lib/libssl/src/crypto/bn/bn_mul.c
+++ b/src/lib/libssl/src/crypto/bn/bn_mul.c
@@ -1028,17 +1028,19 @@ int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx)
1028 assert(j <= al || j <= bl); 1028 assert(j <= al || j <= bl);
1029 k = j+j; 1029 k = j+j;
1030 t = BN_CTX_get(ctx); 1030 t = BN_CTX_get(ctx);
1031 if (t == NULL)
1032 goto err;
1031 if (al > j || bl > j) 1033 if (al > j || bl > j)
1032 { 1034 {
1033 bn_wexpand(t,k*4); 1035 if (bn_wexpand(t,k*4) == NULL) goto err;
1034 bn_wexpand(rr,k*4); 1036 if (bn_wexpand(rr,k*4) == NULL) goto err;
1035 bn_mul_part_recursive(rr->d,a->d,b->d, 1037 bn_mul_part_recursive(rr->d,a->d,b->d,
1036 j,al-j,bl-j,t->d); 1038 j,al-j,bl-j,t->d);
1037 } 1039 }
1038 else /* al <= j || bl <= j */ 1040 else /* al <= j || bl <= j */
1039 { 1041 {
1040 bn_wexpand(t,k*2); 1042 if (bn_wexpand(t,k*2) == NULL) goto err;
1041 bn_wexpand(rr,k*2); 1043 if (bn_wexpand(rr,k*2) == NULL) goto err;
1042 bn_mul_recursive(rr->d,a->d,b->d, 1044 bn_mul_recursive(rr->d,a->d,b->d,
1043 j,al-j,bl-j,t->d); 1045 j,al-j,bl-j,t->d);
1044 } 1046 }
diff --git a/src/lib/libssl/src/crypto/bn/bn_print.c b/src/lib/libssl/src/crypto/bn/bn_print.c
index 810dde34e1..bebb466d08 100644
--- a/src/lib/libssl/src/crypto/bn/bn_print.c
+++ b/src/lib/libssl/src/crypto/bn/bn_print.c
@@ -294,6 +294,27 @@ err:
294 return(0); 294 return(0);
295 } 295 }
296 296
297int BN_asc2bn(BIGNUM **bn, const char *a)
298 {
299 const char *p = a;
300 if (*p == '-')
301 p++;
302
303 if (p[0] == '0' && (p[1] == 'X' || p[1] == 'x'))
304 {
305 if (!BN_hex2bn(bn, p + 2))
306 return 0;
307 }
308 else
309 {
310 if (!BN_dec2bn(bn, p))
311 return 0;
312 }
313 if (*a == '-')
314 (*bn)->neg = 1;
315 return 1;
316 }
317
297#ifndef OPENSSL_NO_BIO 318#ifndef OPENSSL_NO_BIO
298#ifndef OPENSSL_NO_FP_API 319#ifndef OPENSSL_NO_FP_API
299int BN_print_fp(FILE *fp, const BIGNUM *a) 320int BN_print_fp(FILE *fp, const BIGNUM *a)
diff --git a/src/lib/libssl/src/crypto/bn/bntest.c b/src/lib/libssl/src/crypto/bn/bntest.c
index cf190380f5..0cd99c5b4b 100644
--- a/src/lib/libssl/src/crypto/bn/bntest.c
+++ b/src/lib/libssl/src/crypto/bn/bntest.c
@@ -486,7 +486,7 @@ static void print_word(BIO *bp,BN_ULONG w)
486 return; 486 return;
487 } 487 }
488#endif 488#endif
489 BIO_printf(bp,"%lX",w); 489 BIO_printf(bp,BN_HEX_FMT1,w);
490 } 490 }
491 491
492int test_div_word(BIO *bp) 492int test_div_word(BIO *bp)
@@ -732,6 +732,8 @@ int test_mont(BIO *bp, BN_CTX *ctx)
732 BN_init(&n); 732 BN_init(&n);
733 733
734 mont=BN_MONT_CTX_new(); 734 mont=BN_MONT_CTX_new();
735 if (mont == NULL)
736 return 0;
735 737
736 BN_bntest_rand(&a,100,0,0); /**/ 738 BN_bntest_rand(&a,100,0,0); /**/
737 BN_bntest_rand(&b,100,0,0); /**/ 739 BN_bntest_rand(&b,100,0,0); /**/
@@ -1027,7 +1029,7 @@ int test_exp(BIO *bp, BN_CTX *ctx)
1027 BN_bntest_rand(a,20+i*5,0,0); /**/ 1029 BN_bntest_rand(a,20+i*5,0,0); /**/
1028 BN_bntest_rand(b,2+i,0,0); /**/ 1030 BN_bntest_rand(b,2+i,0,0); /**/
1029 1031
1030 if (!BN_exp(d,a,b,ctx)) 1032 if (BN_exp(d,a,b,ctx) <= 0)
1031 return(0); 1033 return(0);
1032 1034
1033 if (bp != NULL) 1035 if (bp != NULL)
@@ -1116,8 +1118,8 @@ int test_gf2m_mod(BIO *bp)
1116 { 1118 {
1117 BIGNUM *a,*b[2],*c,*d,*e; 1119 BIGNUM *a,*b[2],*c,*d,*e;
1118 int i, j, ret = 0; 1120 int i, j, ret = 0;
1119 unsigned int p0[] = {163,7,6,3,0}; 1121 int p0[] = {163,7,6,3,0,-1};
1120 unsigned int p1[] = {193,15,0}; 1122 int p1[] = {193,15,0,-1};
1121 1123
1122 a=BN_new(); 1124 a=BN_new();
1123 b[0]=BN_new(); 1125 b[0]=BN_new();
@@ -1174,8 +1176,8 @@ int test_gf2m_mod_mul(BIO *bp,BN_CTX *ctx)
1174 { 1176 {
1175 BIGNUM *a,*b[2],*c,*d,*e,*f,*g,*h; 1177 BIGNUM *a,*b[2],*c,*d,*e,*f,*g,*h;
1176 int i, j, ret = 0; 1178 int i, j, ret = 0;
1177 unsigned int p0[] = {163,7,6,3,0}; 1179 int p0[] = {163,7,6,3,0,-1};
1178 unsigned int p1[] = {193,15,0}; 1180 int p1[] = {193,15,0,-1};
1179 1181
1180 a=BN_new(); 1182 a=BN_new();
1181 b[0]=BN_new(); 1183 b[0]=BN_new();
@@ -1245,8 +1247,8 @@ int test_gf2m_mod_sqr(BIO *bp,BN_CTX *ctx)
1245 { 1247 {
1246 BIGNUM *a,*b[2],*c,*d; 1248 BIGNUM *a,*b[2],*c,*d;
1247 int i, j, ret = 0; 1249 int i, j, ret = 0;
1248 unsigned int p0[] = {163,7,6,3,0}; 1250 int p0[] = {163,7,6,3,0,-1};
1249 unsigned int p1[] = {193,15,0}; 1251 int p1[] = {193,15,0,-1};
1250 1252
1251 a=BN_new(); 1253 a=BN_new();
1252 b[0]=BN_new(); 1254 b[0]=BN_new();
@@ -1304,8 +1306,8 @@ int test_gf2m_mod_inv(BIO *bp,BN_CTX *ctx)
1304 { 1306 {
1305 BIGNUM *a,*b[2],*c,*d; 1307 BIGNUM *a,*b[2],*c,*d;
1306 int i, j, ret = 0; 1308 int i, j, ret = 0;
1307 unsigned int p0[] = {163,7,6,3,0}; 1309 int p0[] = {163,7,6,3,0,-1};
1308 unsigned int p1[] = {193,15,0}; 1310 int p1[] = {193,15,0,-1};
1309 1311
1310 a=BN_new(); 1312 a=BN_new();
1311 b[0]=BN_new(); 1313 b[0]=BN_new();
@@ -1359,8 +1361,8 @@ int test_gf2m_mod_div(BIO *bp,BN_CTX *ctx)
1359 { 1361 {
1360 BIGNUM *a,*b[2],*c,*d,*e,*f; 1362 BIGNUM *a,*b[2],*c,*d,*e,*f;
1361 int i, j, ret = 0; 1363 int i, j, ret = 0;
1362 unsigned int p0[] = {163,7,6,3,0}; 1364 int p0[] = {163,7,6,3,0,-1};
1363 unsigned int p1[] = {193,15,0}; 1365 int p1[] = {193,15,0,-1};
1364 1366
1365 a=BN_new(); 1367 a=BN_new();
1366 b[0]=BN_new(); 1368 b[0]=BN_new();
@@ -1422,8 +1424,8 @@ int test_gf2m_mod_exp(BIO *bp,BN_CTX *ctx)
1422 { 1424 {
1423 BIGNUM *a,*b[2],*c,*d,*e,*f; 1425 BIGNUM *a,*b[2],*c,*d,*e,*f;
1424 int i, j, ret = 0; 1426 int i, j, ret = 0;
1425 unsigned int p0[] = {163,7,6,3,0}; 1427 int p0[] = {163,7,6,3,0,-1};
1426 unsigned int p1[] = {193,15,0}; 1428 int p1[] = {193,15,0,-1};
1427 1429
1428 a=BN_new(); 1430 a=BN_new();
1429 b[0]=BN_new(); 1431 b[0]=BN_new();
@@ -1493,8 +1495,8 @@ int test_gf2m_mod_sqrt(BIO *bp,BN_CTX *ctx)
1493 { 1495 {
1494 BIGNUM *a,*b[2],*c,*d,*e,*f; 1496 BIGNUM *a,*b[2],*c,*d,*e,*f;
1495 int i, j, ret = 0; 1497 int i, j, ret = 0;
1496 unsigned int p0[] = {163,7,6,3,0}; 1498 int p0[] = {163,7,6,3,0,-1};
1497 unsigned int p1[] = {193,15,0}; 1499 int p1[] = {193,15,0,-1};
1498 1500
1499 a=BN_new(); 1501 a=BN_new();
1500 b[0]=BN_new(); 1502 b[0]=BN_new();
@@ -1552,8 +1554,8 @@ int test_gf2m_mod_solve_quad(BIO *bp,BN_CTX *ctx)
1552 { 1554 {
1553 BIGNUM *a,*b[2],*c,*d,*e; 1555 BIGNUM *a,*b[2],*c,*d,*e;
1554 int i, j, s = 0, t, ret = 0; 1556 int i, j, s = 0, t, ret = 0;
1555 unsigned int p0[] = {163,7,6,3,0}; 1557 int p0[] = {163,7,6,3,0,-1};
1556 unsigned int p1[] = {193,15,0}; 1558 int p1[] = {193,15,0,-1};
1557 1559
1558 a=BN_new(); 1560 a=BN_new();
1559 b[0]=BN_new(); 1561 b[0]=BN_new();
diff --git a/src/lib/libssl/src/crypto/bn/exptest.c b/src/lib/libssl/src/crypto/bn/exptest.c
index f598a07cf5..074a8e882a 100644
--- a/src/lib/libssl/src/crypto/bn/exptest.c
+++ b/src/lib/libssl/src/crypto/bn/exptest.c
@@ -163,7 +163,7 @@ int main(int argc, char *argv[])
163 { 163 {
164 if (BN_cmp(r_simple,r_mont) != 0) 164 if (BN_cmp(r_simple,r_mont) != 0)
165 printf("\nsimple and mont results differ\n"); 165 printf("\nsimple and mont results differ\n");
166 if (BN_cmp(r_simple,r_mont) != 0) 166 if (BN_cmp(r_simple,r_mont_const) != 0)
167 printf("\nsimple and mont const time results differ\n"); 167 printf("\nsimple and mont const time results differ\n");
168 if (BN_cmp(r_simple,r_recp) != 0) 168 if (BN_cmp(r_simple,r_recp) != 0)
169 printf("\nsimple and recp results differ\n"); 169 printf("\nsimple and recp results differ\n");
@@ -187,7 +187,7 @@ int main(int argc, char *argv[])
187 BN_free(b); 187 BN_free(b);
188 BN_free(m); 188 BN_free(m);
189 BN_CTX_free(ctx); 189 BN_CTX_free(ctx);
190 ERR_remove_state(0); 190 ERR_remove_thread_state(NULL);
191 CRYPTO_mem_leaks(out); 191 CRYPTO_mem_leaks(out);
192 BIO_free(out); 192 BIO_free(out);
193 printf(" done\n"); 193 printf(" done\n");
diff --git a/src/lib/libssl/src/crypto/buffer/Makefile b/src/lib/libssl/src/crypto/buffer/Makefile
index 9e0f46e19a..9f3a88d2d6 100644
--- a/src/lib/libssl/src/crypto/buffer/Makefile
+++ b/src/lib/libssl/src/crypto/buffer/Makefile
@@ -17,8 +17,8 @@ TEST=
17APPS= 17APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= buffer.c buf_str.c buf_err.c 20LIBSRC= buffer.c buf_err.c
21LIBOBJ= buffer.o buf_str.o buf_err.o 21LIBOBJ= buffer.o buf_err.o
22 22
23SRC= $(LIBSRC) 23SRC= $(LIBSRC)
24 24
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -81,13 +81,6 @@ buf_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
81buf_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 81buf_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
82buf_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 82buf_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
83buf_err.o: buf_err.c 83buf_err.o: buf_err.c
84buf_str.o: ../../e_os.h ../../include/openssl/bio.h
85buf_str.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
86buf_str.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
87buf_str.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
88buf_str.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
89buf_str.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
90buf_str.o: ../../include/openssl/symhacks.h ../cryptlib.h buf_str.c
91buffer.o: ../../e_os.h ../../include/openssl/bio.h 84buffer.o: ../../e_os.h ../../include/openssl/bio.h
92buffer.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 85buffer.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
93buffer.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 86buffer.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
diff --git a/src/lib/libssl/src/crypto/buffer/buf_err.c b/src/lib/libssl/src/crypto/buffer/buf_err.c
index 3e25bbe879..8f1de6192b 100644
--- a/src/lib/libssl/src/crypto/buffer/buf_err.c
+++ b/src/lib/libssl/src/crypto/buffer/buf_err.c
@@ -1,6 +1,6 @@
1/* crypto/buffer/buf_err.c */ 1/* crypto/buffer/buf_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
diff --git a/src/lib/libssl/src/crypto/buffer/buffer.c b/src/lib/libssl/src/crypto/buffer/buffer.c
index b3e947771d..620ea8d536 100644
--- a/src/lib/libssl/src/crypto/buffer/buffer.c
+++ b/src/lib/libssl/src/crypto/buffer/buffer.c
@@ -89,10 +89,10 @@ void BUF_MEM_free(BUF_MEM *a)
89 OPENSSL_free(a); 89 OPENSSL_free(a);
90 } 90 }
91 91
92int BUF_MEM_grow(BUF_MEM *str, int len) 92int BUF_MEM_grow(BUF_MEM *str, size_t len)
93 { 93 {
94 char *ret; 94 char *ret;
95 unsigned int n; 95 size_t n;
96 96
97 if (str->length >= len) 97 if (str->length >= len)
98 { 98 {
@@ -125,10 +125,10 @@ int BUF_MEM_grow(BUF_MEM *str, int len)
125 return(len); 125 return(len);
126 } 126 }
127 127
128int BUF_MEM_grow_clean(BUF_MEM *str, int len) 128int BUF_MEM_grow_clean(BUF_MEM *str, size_t len)
129 { 129 {
130 char *ret; 130 char *ret;
131 unsigned int n; 131 size_t n;
132 132
133 if (str->length >= len) 133 if (str->length >= len)
134 { 134 {
@@ -161,3 +161,84 @@ int BUF_MEM_grow_clean(BUF_MEM *str, int len)
161 } 161 }
162 return(len); 162 return(len);
163 } 163 }
164
165char *BUF_strdup(const char *str)
166 {
167 if (str == NULL) return(NULL);
168 return BUF_strndup(str, strlen(str));
169 }
170
171char *BUF_strndup(const char *str, size_t siz)
172 {
173 char *ret;
174
175 if (str == NULL) return(NULL);
176
177 ret=OPENSSL_malloc(siz+1);
178 if (ret == NULL)
179 {
180 BUFerr(BUF_F_BUF_STRNDUP,ERR_R_MALLOC_FAILURE);
181 return(NULL);
182 }
183 BUF_strlcpy(ret,str,siz+1);
184 return(ret);
185 }
186
187void *BUF_memdup(const void *data, size_t siz)
188 {
189 void *ret;
190
191 if (data == NULL) return(NULL);
192
193 ret=OPENSSL_malloc(siz);
194 if (ret == NULL)
195 {
196 BUFerr(BUF_F_BUF_MEMDUP,ERR_R_MALLOC_FAILURE);
197 return(NULL);
198 }
199 return memcpy(ret, data, siz);
200 }
201
202size_t BUF_strlcpy(char *dst, const char *src, size_t size)
203 {
204 size_t l = 0;
205 for(; size > 1 && *src; size--)
206 {
207 *dst++ = *src++;
208 l++;
209 }
210 if (size)
211 *dst = '\0';
212 return l + strlen(src);
213 }
214
215size_t BUF_strlcat(char *dst, const char *src, size_t size)
216 {
217 size_t l = 0;
218 for(; size > 0 && *dst; size--, dst++)
219 l++;
220 return l + BUF_strlcpy(dst, src, size);
221 }
222
223void BUF_reverse(unsigned char *out, unsigned char *in, size_t size)
224 {
225 size_t i;
226 if (in)
227 {
228 out += size - 1;
229 for (i = 0; i < size; i++)
230 *in++ = *out--;
231 }
232 else
233 {
234 unsigned char *q;
235 char c;
236 q = out + size - 1;
237 for (i = 0; i < size/2; i++)
238 {
239 c = *q;
240 *q-- = *out;
241 *out++ = c;
242 }
243 }
244 }
diff --git a/src/lib/libssl/src/crypto/buffer/buffer.h b/src/lib/libssl/src/crypto/buffer/buffer.h
index 1db9607450..178e418282 100644
--- a/src/lib/libssl/src/crypto/buffer/buffer.h
+++ b/src/lib/libssl/src/crypto/buffer/buffer.h
@@ -76,18 +76,19 @@ extern "C" {
76 76
77struct buf_mem_st 77struct buf_mem_st
78 { 78 {
79 int length; /* current number of bytes */ 79 size_t length; /* current number of bytes */
80 char *data; 80 char *data;
81 int max; /* size of buffer */ 81 size_t max; /* size of buffer */
82 }; 82 };
83 83
84BUF_MEM *BUF_MEM_new(void); 84BUF_MEM *BUF_MEM_new(void);
85void BUF_MEM_free(BUF_MEM *a); 85void BUF_MEM_free(BUF_MEM *a);
86int BUF_MEM_grow(BUF_MEM *str, int len); 86int BUF_MEM_grow(BUF_MEM *str, size_t len);
87int BUF_MEM_grow_clean(BUF_MEM *str, int len); 87int BUF_MEM_grow_clean(BUF_MEM *str, size_t len);
88char * BUF_strdup(const char *str); 88char * BUF_strdup(const char *str);
89char * BUF_strndup(const char *str, size_t siz); 89char * BUF_strndup(const char *str, size_t siz);
90void * BUF_memdup(const void *data, size_t siz); 90void * BUF_memdup(const void *data, size_t siz);
91void BUF_reverse(unsigned char *out, unsigned char *in, size_t siz);
91 92
92/* safe string functions */ 93/* safe string functions */
93size_t BUF_strlcpy(char *dst,const char *src,size_t siz); 94size_t BUF_strlcpy(char *dst,const char *src,size_t siz);
diff --git a/src/lib/libssl/src/crypto/cast/Makefile b/src/lib/libssl/src/crypto/cast/Makefile
index 2e026dbe0d..0acc38f28d 100644
--- a/src/lib/libssl/src/crypto/cast/Makefile
+++ b/src/lib/libssl/src/crypto/cast/Makefile
@@ -38,19 +38,12 @@ top:
38all: lib 38all: lib
39 39
40lib: $(LIBOBJ) 40lib: $(LIBOBJ)
41 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
42 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
43 @touch lib 43 @touch lib
44 44
45# ELF 45cast-586.s: asm/cast-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
46cx86-elf.s: asm/cast-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl 46 $(PERL) asm/cast-586.pl $(PERLASM_SCHEME) $(CLAGS) $(PROCESSOR) > $@
47 (cd asm; $(PERL) cast-586.pl elf $(CLAGS) $(PROCESSOR) > ../$@)
48# COFF
49cx86-cof.s: asm/cast-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
50 (cd asm; $(PERL) cast-586.pl coff $(CLAGS) $(PROCESSOR) > ../$@)
51# a.out
52cx86-out.s: asm/cast-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
53 (cd asm; $(PERL) cast-586.pl a.out $(CLAGS) $(PROCESSOR) > ../$@)
54 47
55files: 48files:
56 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 49 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -102,8 +95,5 @@ c_ofb64.o: ../../e_os.h ../../include/openssl/cast.h
102c_ofb64.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 95c_ofb64.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
103c_ofb64.o: c_ofb64.c cast_lcl.h 96c_ofb64.o: c_ofb64.c cast_lcl.h
104c_skey.o: ../../e_os.h ../../include/openssl/cast.h 97c_skey.o: ../../e_os.h ../../include/openssl/cast.h
105c_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 98c_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
106c_skey.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h 99c_skey.o: c_skey.c cast_lcl.h cast_s.h
107c_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
108c_skey.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
109c_skey.o: ../../include/openssl/symhacks.h c_skey.c cast_lcl.h cast_s.h
diff --git a/src/lib/libssl/src/crypto/cast/asm/cast-586.pl b/src/lib/libssl/src/crypto/cast/asm/cast-586.pl
index 6be0bfe572..bf6810d335 100644
--- a/src/lib/libssl/src/crypto/cast/asm/cast-586.pl
+++ b/src/lib/libssl/src/crypto/cast/asm/cast-586.pl
@@ -3,7 +3,8 @@
3# define for pentium pro friendly version 3# define for pentium pro friendly version
4$ppro=1; 4$ppro=1;
5 5
6push(@INC,"perlasm","../../perlasm"); 6$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
7push(@INC,"${dir}","${dir}../../perlasm");
7require "x86asm.pl"; 8require "x86asm.pl";
8require "cbc.pl"; 9require "cbc.pl";
9 10
diff --git a/src/lib/libssl/src/crypto/cast/c_cfb64.c b/src/lib/libssl/src/crypto/cast/c_cfb64.c
index 514c005c32..dcec13a201 100644
--- a/src/lib/libssl/src/crypto/cast/c_cfb64.c
+++ b/src/lib/libssl/src/crypto/cast/c_cfb64.c
@@ -65,7 +65,7 @@
65 */ 65 */
66 66
67void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, 67void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out,
68 long length, CAST_KEY *schedule, unsigned char *ivec, 68 long length, const CAST_KEY *schedule, unsigned char *ivec,
69 int *num, int enc) 69 int *num, int enc)
70 { 70 {
71 register CAST_LONG v0,v1,t; 71 register CAST_LONG v0,v1,t;
@@ -119,4 +119,3 @@ void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out,
119 v0=v1=ti[0]=ti[1]=t=c=cc=0; 119 v0=v1=ti[0]=ti[1]=t=c=cc=0;
120 *num=n; 120 *num=n;
121 } 121 }
122
diff --git a/src/lib/libssl/src/crypto/cast/c_ecb.c b/src/lib/libssl/src/crypto/cast/c_ecb.c
index f2dc606226..b6a3b1fff9 100644
--- a/src/lib/libssl/src/crypto/cast/c_ecb.c
+++ b/src/lib/libssl/src/crypto/cast/c_ecb.c
@@ -63,7 +63,7 @@
63const char CAST_version[]="CAST" OPENSSL_VERSION_PTEXT; 63const char CAST_version[]="CAST" OPENSSL_VERSION_PTEXT;
64 64
65void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, 65void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out,
66 CAST_KEY *ks, int enc) 66 const CAST_KEY *ks, int enc)
67 { 67 {
68 CAST_LONG l,d[2]; 68 CAST_LONG l,d[2];
69 69
@@ -77,4 +77,3 @@ void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out,
77 l=d[1]; l2n(l,out); 77 l=d[1]; l2n(l,out);
78 l=d[0]=d[1]=0; 78 l=d[0]=d[1]=0;
79 } 79 }
80
diff --git a/src/lib/libssl/src/crypto/cast/c_enc.c b/src/lib/libssl/src/crypto/cast/c_enc.c
index 0fe2cffecc..357c41ebf0 100644
--- a/src/lib/libssl/src/crypto/cast/c_enc.c
+++ b/src/lib/libssl/src/crypto/cast/c_enc.c
@@ -59,9 +59,10 @@
59#include <openssl/cast.h> 59#include <openssl/cast.h>
60#include "cast_lcl.h" 60#include "cast_lcl.h"
61 61
62void CAST_encrypt(CAST_LONG *data, CAST_KEY *key) 62void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key)
63 { 63 {
64 register CAST_LONG l,r,*k,t; 64 register CAST_LONG l,r,t;
65 const register CAST_LONG *k;
65 66
66 k= &(key->data[0]); 67 k= &(key->data[0]);
67 l=data[0]; 68 l=data[0];
@@ -91,9 +92,10 @@ void CAST_encrypt(CAST_LONG *data, CAST_KEY *key)
91 data[0]=r&0xffffffffL; 92 data[0]=r&0xffffffffL;
92 } 93 }
93 94
94void CAST_decrypt(CAST_LONG *data, CAST_KEY *key) 95void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key)
95 { 96 {
96 register CAST_LONG l,r,*k,t; 97 register CAST_LONG l,r,t;
98 const register CAST_LONG *k;
97 99
98 k= &(key->data[0]); 100 k= &(key->data[0]);
99 l=data[0]; 101 l=data[0];
@@ -124,7 +126,7 @@ void CAST_decrypt(CAST_LONG *data, CAST_KEY *key)
124 } 126 }
125 127
126void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, 128void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
127 CAST_KEY *ks, unsigned char *iv, int enc) 129 const CAST_KEY *ks, unsigned char *iv, int enc)
128 { 130 {
129 register CAST_LONG tin0,tin1; 131 register CAST_LONG tin0,tin1;
130 register CAST_LONG tout0,tout1,xor0,xor1; 132 register CAST_LONG tout0,tout1,xor0,xor1;
@@ -204,4 +206,3 @@ void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
204 tin0=tin1=tout0=tout1=xor0=xor1=0; 206 tin0=tin1=tout0=tout1=xor0=xor1=0;
205 tin[0]=tin[1]=0; 207 tin[0]=tin[1]=0;
206 } 208 }
207
diff --git a/src/lib/libssl/src/crypto/cast/c_ofb64.c b/src/lib/libssl/src/crypto/cast/c_ofb64.c
index fd0469a62f..cb3222456c 100644
--- a/src/lib/libssl/src/crypto/cast/c_ofb64.c
+++ b/src/lib/libssl/src/crypto/cast/c_ofb64.c
@@ -64,7 +64,7 @@
64 * 64bit block we have used is contained in *num; 64 * 64bit block we have used is contained in *num;
65 */ 65 */
66void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, 66void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out,
67 long length, CAST_KEY *schedule, unsigned char *ivec, 67 long length, const CAST_KEY *schedule, unsigned char *ivec,
68 int *num) 68 int *num)
69 { 69 {
70 register CAST_LONG v0,v1,t; 70 register CAST_LONG v0,v1,t;
@@ -108,4 +108,3 @@ void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out,
108 t=v0=v1=ti[0]=ti[1]=0; 108 t=v0=v1=ti[0]=ti[1]=0;
109 *num=n; 109 *num=n;
110 } 110 }
111
diff --git a/src/lib/libssl/src/crypto/cast/c_skey.c b/src/lib/libssl/src/crypto/cast/c_skey.c
index 68e690a60c..76e40005c9 100644
--- a/src/lib/libssl/src/crypto/cast/c_skey.c
+++ b/src/lib/libssl/src/crypto/cast/c_skey.c
@@ -57,11 +57,6 @@
57 */ 57 */
58 58
59#include <openssl/cast.h> 59#include <openssl/cast.h>
60#include <openssl/crypto.h>
61#ifdef OPENSSL_FIPS
62#include <openssl/fips.h>
63#endif
64
65#include "cast_lcl.h" 60#include "cast_lcl.h"
66#include "cast_s.h" 61#include "cast_s.h"
67 62
@@ -77,7 +72,7 @@
77#define S6 CAST_S_table6 72#define S6 CAST_S_table6
78#define S7 CAST_S_table7 73#define S7 CAST_S_table7
79 74
80FIPS_NON_FIPS_VCIPHER_Init(CAST) 75void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data)
81 { 76 {
82 CAST_LONG x[16]; 77 CAST_LONG x[16];
83 CAST_LONG z[16]; 78 CAST_LONG z[16];
diff --git a/src/lib/libssl/src/crypto/cast/cast.h b/src/lib/libssl/src/crypto/cast/cast.h
index 1faf5806aa..1a264f8143 100644
--- a/src/lib/libssl/src/crypto/cast/cast.h
+++ b/src/lib/libssl/src/crypto/cast/cast.h
@@ -72,7 +72,7 @@ extern "C" {
72#define CAST_ENCRYPT 1 72#define CAST_ENCRYPT 1
73#define CAST_DECRYPT 0 73#define CAST_DECRYPT 0
74 74
75#define CAST_LONG unsigned long 75#define CAST_LONG unsigned int
76 76
77#define CAST_BLOCK 8 77#define CAST_BLOCK 8
78#define CAST_KEY_LENGTH 16 78#define CAST_KEY_LENGTH 16
@@ -83,21 +83,19 @@ typedef struct cast_key_st
83 int short_key; /* Use reduced rounds for short key */ 83 int short_key; /* Use reduced rounds for short key */
84 } CAST_KEY; 84 } CAST_KEY;
85 85
86#ifdef OPENSSL_FIPS 86
87void private_CAST_set_key(CAST_KEY *key, int len, const unsigned char *data);
88#endif
89void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data); 87void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data);
90void CAST_ecb_encrypt(const unsigned char *in,unsigned char *out,CAST_KEY *key, 88void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, const CAST_KEY *key,
91 int enc); 89 int enc);
92void CAST_encrypt(CAST_LONG *data,CAST_KEY *key); 90void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key);
93void CAST_decrypt(CAST_LONG *data,CAST_KEY *key); 91void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key);
94void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, 92void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
95 CAST_KEY *ks, unsigned char *iv, int enc); 93 const CAST_KEY *ks, unsigned char *iv, int enc);
96void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, 94void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out,
97 long length, CAST_KEY *schedule, unsigned char *ivec, 95 long length, const CAST_KEY *schedule, unsigned char *ivec,
98 int *num, int enc); 96 int *num, int enc);
99void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, 97void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out,
100 long length, CAST_KEY *schedule, unsigned char *ivec, 98 long length, const CAST_KEY *schedule, unsigned char *ivec,
101 int *num); 99 int *num);
102 100
103#ifdef __cplusplus 101#ifdef __cplusplus
diff --git a/src/lib/libssl/src/crypto/comp/Makefile b/src/lib/libssl/src/crypto/comp/Makefile
index 5d364b8513..efda832dce 100644
--- a/src/lib/libssl/src/crypto/comp/Makefile
+++ b/src/lib/libssl/src/crypto/comp/Makefile
@@ -36,7 +36,7 @@ top:
36all: lib 36all: lib
37 37
38lib: $(LIBOBJ) 38lib: $(LIBOBJ)
39 $(ARX) $(LIB) $(LIBOBJ) 39 $(AR) $(LIB) $(LIBOBJ)
40 $(RANLIB) $(LIB) || echo Never mind. 40 $(RANLIB) $(LIB) || echo Never mind.
41 @touch lib 41 @touch lib
42 42
diff --git a/src/lib/libssl/src/crypto/comp/c_zlib.c b/src/lib/libssl/src/crypto/comp/c_zlib.c
index eccfd09137..8adf35f3fc 100644
--- a/src/lib/libssl/src/crypto/comp/c_zlib.c
+++ b/src/lib/libssl/src/crypto/comp/c_zlib.c
@@ -136,15 +136,6 @@ struct zlib_state
136 136
137static int zlib_stateful_ex_idx = -1; 137static int zlib_stateful_ex_idx = -1;
138 138
139static void zlib_stateful_free_ex_data(void *obj, void *item,
140 CRYPTO_EX_DATA *ad, int ind,long argl, void *argp)
141 {
142 struct zlib_state *state = (struct zlib_state *)item;
143 inflateEnd(&state->istream);
144 deflateEnd(&state->ostream);
145 OPENSSL_free(state);
146 }
147
148static int zlib_stateful_init(COMP_CTX *ctx) 139static int zlib_stateful_init(COMP_CTX *ctx)
149 { 140 {
150 int err; 141 int err;
@@ -188,6 +179,12 @@ static int zlib_stateful_init(COMP_CTX *ctx)
188 179
189static void zlib_stateful_finish(COMP_CTX *ctx) 180static void zlib_stateful_finish(COMP_CTX *ctx)
190 { 181 {
182 struct zlib_state *state =
183 (struct zlib_state *)CRYPTO_get_ex_data(&ctx->ex_data,
184 zlib_stateful_ex_idx);
185 inflateEnd(&state->istream);
186 deflateEnd(&state->ostream);
187 OPENSSL_free(state);
191 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_COMP,ctx,&ctx->ex_data); 188 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_COMP,ctx,&ctx->ex_data);
192 } 189 }
193 190
@@ -402,7 +399,7 @@ COMP_METHOD *COMP_zlib(void)
402 if (zlib_stateful_ex_idx == -1) 399 if (zlib_stateful_ex_idx == -1)
403 zlib_stateful_ex_idx = 400 zlib_stateful_ex_idx =
404 CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_COMP, 401 CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_COMP,
405 0,NULL,NULL,NULL,zlib_stateful_free_ex_data); 402 0,NULL,NULL,NULL,NULL);
406 CRYPTO_w_unlock(CRYPTO_LOCK_COMP); 403 CRYPTO_w_unlock(CRYPTO_LOCK_COMP);
407 if (zlib_stateful_ex_idx == -1) 404 if (zlib_stateful_ex_idx == -1)
408 goto err; 405 goto err;
@@ -784,6 +781,7 @@ static long bio_zlib_ctrl(BIO *b, int cmd, long num, void *ptr)
784 default: 781 default:
785 ret = BIO_ctrl(b->next_bio, cmd, num, ptr); 782 ret = BIO_ctrl(b->next_bio, cmd, num, ptr);
786 break; 783 break;
784
787 } 785 }
788 786
789 return ret; 787 return ret;
diff --git a/src/lib/libssl/src/crypto/comp/comp_err.c b/src/lib/libssl/src/crypto/comp/comp_err.c
index 187d68b725..661c94c3a4 100644
--- a/src/lib/libssl/src/crypto/comp/comp_err.c
+++ b/src/lib/libssl/src/crypto/comp/comp_err.c
@@ -1,6 +1,6 @@
1/* crypto/comp/comp_err.c */ 1/* crypto/comp/comp_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
diff --git a/src/lib/libssl/src/crypto/conf/Makefile b/src/lib/libssl/src/crypto/conf/Makefile
index ccd0721332..78bb324106 100644
--- a/src/lib/libssl/src/crypto/conf/Makefile
+++ b/src/lib/libssl/src/crypto/conf/Makefile
@@ -36,7 +36,7 @@ top:
36all: lib 36all: lib
37 37
38lib: $(LIBOBJ) 38lib: $(LIBOBJ)
39 $(ARX) $(LIB) $(LIBOBJ) 39 $(AR) $(LIB) $(LIBOBJ)
40 $(RANLIB) $(LIB) || echo Never mind. 40 $(RANLIB) $(LIB) || echo Never mind.
41 @touch lib 41 @touch lib
42 42
@@ -114,8 +114,8 @@ conf_mall.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
114conf_mall.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 114conf_mall.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
115conf_mall.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 115conf_mall.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
116conf_mall.o: ../../include/openssl/err.h ../../include/openssl/evp.h 116conf_mall.o: ../../include/openssl/err.h ../../include/openssl/evp.h
117conf_mall.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 117conf_mall.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
118conf_mall.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 118conf_mall.o: ../../include/openssl/objects.h
119conf_mall.o: ../../include/openssl/opensslconf.h 119conf_mall.o: ../../include/openssl/opensslconf.h
120conf_mall.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 120conf_mall.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
121conf_mall.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 121conf_mall.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -128,9 +128,9 @@ conf_mod.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
128conf_mod.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h 128conf_mod.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
129conf_mod.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 129conf_mod.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
130conf_mod.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 130conf_mod.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
131conf_mod.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 131conf_mod.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
132conf_mod.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 132conf_mod.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
133conf_mod.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 133conf_mod.o: ../../include/openssl/opensslconf.h
134conf_mod.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 134conf_mod.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
135conf_mod.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 135conf_mod.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
136conf_mod.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 136conf_mod.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -143,9 +143,8 @@ conf_sap.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
143conf_sap.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 143conf_sap.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
144conf_sap.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 144conf_sap.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
145conf_sap.o: ../../include/openssl/err.h ../../include/openssl/evp.h 145conf_sap.o: ../../include/openssl/err.h ../../include/openssl/evp.h
146conf_sap.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 146conf_sap.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
147conf_sap.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 147conf_sap.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
148conf_sap.o: ../../include/openssl/opensslconf.h
149conf_sap.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 148conf_sap.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
150conf_sap.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 149conf_sap.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
151conf_sap.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 150conf_sap.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
diff --git a/src/lib/libssl/src/crypto/conf/README b/src/lib/libssl/src/crypto/conf/README
index ca58d0240f..96e53b34ed 100644
--- a/src/lib/libssl/src/crypto/conf/README
+++ b/src/lib/libssl/src/crypto/conf/README
@@ -1,8 +1,3 @@
1WARNING WARNING WARNING!!!
2
3This stuff is experimental, may change radically or be deleted altogether
4before OpenSSL 0.9.7 release. You have been warned!
5
6Configuration modules. These are a set of modules which can perform 1Configuration modules. These are a set of modules which can perform
7various configuration functions. 2various configuration functions.
8 3
@@ -13,7 +8,7 @@ The routines read a configuration file set up like this:
13 8
14----- 9-----
15#default section 10#default section
16openssl_init=init_section 11openssl_conf=init_section
17 12
18[init_section] 13[init_section]
19 14
@@ -30,29 +25,27 @@ path=/some/path/to/some/dso.so
30other_stuff=other_value 25other_stuff=other_value
31---- 26----
32 27
33When this file is loaded a configuration module with the specified 28When this file is loaded a configuration module with the specified string
34string (module* in the above example) is looked up and its init 29(module* in the above example) is looked up and its init function called as:
35function called as:
36 30
37int conf_init_func(CONF_IMODULE *md, CONF *cnf); 31int conf_init_func(CONF_IMODULE *md, CONF *cnf);
38 32
39The function can then take whatever action is appropriate, for example 33The function can then take whatever action is appropriate, for example further
40further lookups based on the value. Multiple instances of the same 34lookups based on the value. Multiple instances of the same config module can be
41config module can be loaded. 35loaded.
42 36
43When the application closes down the modules are cleaned up by calling 37When the application closes down the modules are cleaned up by calling an
44an optional finish function: 38optional finish function:
45 39
46void conf_finish_func(CONF_IMODULE *md); 40void conf_finish_func(CONF_IMODULE *md);
47 41
48The finish functions are called in reverse order: that is the last module 42The finish functions are called in reverse order: that is the last module
49loaded is the first one cleaned up. 43loaded is the first one cleaned up.
50 44
51If no module exists with a given name then an attempt is made to load 45If no module exists with a given name then an attempt is made to load a DSO
52a DSO with the supplied name. This might mean that "module3" attempts 46with the supplied name. This might mean that "module3" attempts to load a DSO
53to load a DSO called libmodule3.so or module3.dll for example. An explicit 47called libmodule3.so or module3.dll for example. An explicit DSO name can be
54DSO name can be given by including a separate section as in the module4 example 48given by including a separate section as in the module4 example above.
55above.
56 49
57The DSO is expected to at least contain an initialization function: 50The DSO is expected to at least contain an initialization function:
58 51
@@ -64,15 +57,17 @@ void OPENSSL_finish(CONF_IMODULE *md);
64 57
65Static modules can also be added using, 58Static modules can also be added using,
66 59
67int CONF_module_add(char *name, dso_mod_init_func *ifunc, dso_mod_finish_func *ffunc); 60int CONF_module_add(char *name, dso_mod_init_func *ifunc, dso_mod_finish_func
61*ffunc);
68 62
69where "name" is the name in the configuration file this function corresponds to. 63where "name" is the name in the configuration file this function corresponds
64to.
70 65
71A set of builtin modules (currently only an ASN1 non functional test module) can be 66A set of builtin modules (currently only an ASN1 non functional test module)
72added by calling OPENSSL_load_builtin_modules(). 67can be added by calling OPENSSL_load_builtin_modules().
73 68
74The function OPENSSL_config() is intended as a simple configuration function that 69The function OPENSSL_config() is intended as a simple configuration function
75any application can call to perform various default configuration tasks. It uses the 70that any application can call to perform various default configuration tasks.
76file openssl.cnf in the usual locations. 71It uses the file openssl.cnf in the usual locations.
77 72
78 73
diff --git a/src/lib/libssl/src/crypto/conf/conf.h b/src/lib/libssl/src/crypto/conf/conf.h
index 8aa06bc5ec..c2199978a3 100644
--- a/src/lib/libssl/src/crypto/conf/conf.h
+++ b/src/lib/libssl/src/crypto/conf/conf.h
@@ -79,8 +79,7 @@ typedef struct
79 } CONF_VALUE; 79 } CONF_VALUE;
80 80
81DECLARE_STACK_OF(CONF_VALUE) 81DECLARE_STACK_OF(CONF_VALUE)
82DECLARE_STACK_OF(CONF_MODULE) 82DECLARE_LHASH_OF(CONF_VALUE);
83DECLARE_STACK_OF(CONF_IMODULE)
84 83
85struct conf_st; 84struct conf_st;
86struct conf_method_st; 85struct conf_method_st;
@@ -105,6 +104,9 @@ struct conf_method_st
105typedef struct conf_imodule_st CONF_IMODULE; 104typedef struct conf_imodule_st CONF_IMODULE;
106typedef struct conf_module_st CONF_MODULE; 105typedef struct conf_module_st CONF_MODULE;
107 106
107DECLARE_STACK_OF(CONF_MODULE)
108DECLARE_STACK_OF(CONF_IMODULE)
109
108/* DSO module function typedefs */ 110/* DSO module function typedefs */
109typedef int conf_init_func(CONF_IMODULE *md, const CONF *cnf); 111typedef int conf_init_func(CONF_IMODULE *md, const CONF *cnf);
110typedef void conf_finish_func(CONF_IMODULE *md); 112typedef void conf_finish_func(CONF_IMODULE *md);
@@ -117,18 +119,23 @@ typedef void conf_finish_func(CONF_IMODULE *md);
117#define CONF_MFLAGS_DEFAULT_SECTION 0x20 119#define CONF_MFLAGS_DEFAULT_SECTION 0x20
118 120
119int CONF_set_default_method(CONF_METHOD *meth); 121int CONF_set_default_method(CONF_METHOD *meth);
120void CONF_set_nconf(CONF *conf,LHASH *hash); 122void CONF_set_nconf(CONF *conf,LHASH_OF(CONF_VALUE) *hash);
121LHASH *CONF_load(LHASH *conf,const char *file,long *eline); 123LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf,const char *file,
124 long *eline);
122#ifndef OPENSSL_NO_FP_API 125#ifndef OPENSSL_NO_FP_API
123LHASH *CONF_load_fp(LHASH *conf, FILE *fp,long *eline); 126LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp,
127 long *eline);
124#endif 128#endif
125LHASH *CONF_load_bio(LHASH *conf, BIO *bp,long *eline); 129LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp,long *eline);
126STACK_OF(CONF_VALUE) *CONF_get_section(LHASH *conf,const char *section); 130STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf,
127char *CONF_get_string(LHASH *conf,const char *group,const char *name); 131 const char *section);
128long CONF_get_number(LHASH *conf,const char *group,const char *name); 132char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf,const char *group,
129void CONF_free(LHASH *conf); 133 const char *name);
130int CONF_dump_fp(LHASH *conf, FILE *out); 134long CONF_get_number(LHASH_OF(CONF_VALUE) *conf,const char *group,
131int CONF_dump_bio(LHASH *conf, BIO *out); 135 const char *name);
136void CONF_free(LHASH_OF(CONF_VALUE) *conf);
137int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out);
138int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out);
132 139
133void OPENSSL_config(const char *config_name); 140void OPENSSL_config(const char *config_name);
134void OPENSSL_no_config(void); 141void OPENSSL_no_config(void);
@@ -140,7 +147,7 @@ struct conf_st
140 { 147 {
141 CONF_METHOD *meth; 148 CONF_METHOD *meth;
142 void *meth_data; 149 void *meth_data;
143 LHASH *data; 150 LHASH_OF(CONF_VALUE) *data;
144 }; 151 };
145 152
146CONF *NCONF_new(CONF_METHOD *meth); 153CONF *NCONF_new(CONF_METHOD *meth);
@@ -214,6 +221,7 @@ void ERR_load_CONF_strings(void);
214#define CONF_F_CONF_LOAD_BIO 102 221#define CONF_F_CONF_LOAD_BIO 102
215#define CONF_F_CONF_LOAD_FP 103 222#define CONF_F_CONF_LOAD_FP 103
216#define CONF_F_CONF_MODULES_LOAD 116 223#define CONF_F_CONF_MODULES_LOAD 116
224#define CONF_F_CONF_PARSE_LIST 119
217#define CONF_F_DEF_LOAD 120 225#define CONF_F_DEF_LOAD 120
218#define CONF_F_DEF_LOAD_BIO 121 226#define CONF_F_DEF_LOAD_BIO 121
219#define CONF_F_MODULE_INIT 115 227#define CONF_F_MODULE_INIT 115
@@ -233,6 +241,7 @@ void ERR_load_CONF_strings(void);
233 241
234/* Reason codes. */ 242/* Reason codes. */
235#define CONF_R_ERROR_LOADING_DSO 110 243#define CONF_R_ERROR_LOADING_DSO 110
244#define CONF_R_LIST_CANNOT_BE_NULL 115
236#define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 100 245#define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 100
237#define CONF_R_MISSING_EQUAL_SIGN 101 246#define CONF_R_MISSING_EQUAL_SIGN 101
238#define CONF_R_MISSING_FINISH_FUNCTION 111 247#define CONF_R_MISSING_FINISH_FUNCTION 111
diff --git a/src/lib/libssl/src/crypto/conf/conf_api.c b/src/lib/libssl/src/crypto/conf/conf_api.c
index 909d72b4b8..22617e5fa1 100644
--- a/src/lib/libssl/src/crypto/conf/conf_api.c
+++ b/src/lib/libssl/src/crypto/conf/conf_api.c
@@ -69,16 +69,12 @@
69#include <openssl/conf_api.h> 69#include <openssl/conf_api.h>
70#include "e_os.h" 70#include "e_os.h"
71 71
72static void value_free_hash(CONF_VALUE *a, LHASH *conf); 72static void value_free_hash_doall_arg(CONF_VALUE *a,
73static void value_free_stack(CONF_VALUE *a,LHASH *conf); 73 LHASH_OF(CONF_VALUE) *conf);
74static IMPLEMENT_LHASH_DOALL_ARG_FN(value_free_hash, CONF_VALUE *, LHASH *) 74static void value_free_stack_doall(CONF_VALUE *a);
75static IMPLEMENT_LHASH_DOALL_ARG_FN(value_free_stack, CONF_VALUE *, LHASH *) 75static IMPLEMENT_LHASH_DOALL_ARG_FN(value_free_hash, CONF_VALUE,
76/* We don't use function pointer casting or wrapper functions - but cast each 76 LHASH_OF(CONF_VALUE))
77 * callback parameter inside the callback functions. */ 77static IMPLEMENT_LHASH_DOALL_FN(value_free_stack, CONF_VALUE)
78/* static unsigned long hash(CONF_VALUE *v); */
79static unsigned long hash(const void *v_void);
80/* static int cmp_conf(CONF_VALUE *a,CONF_VALUE *b); */
81static int cmp_conf(const void *a_void,const void *b_void);
82 78
83/* Up until OpenSSL 0.9.5a, this was get_section */ 79/* Up until OpenSSL 0.9.5a, this was get_section */
84CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section) 80CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section)
@@ -88,7 +84,7 @@ CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section)
88 if ((conf == NULL) || (section == NULL)) return(NULL); 84 if ((conf == NULL) || (section == NULL)) return(NULL);
89 vv.name=NULL; 85 vv.name=NULL;
90 vv.section=(char *)section; 86 vv.section=(char *)section;
91 v=(CONF_VALUE *)lh_retrieve(conf->data,&vv); 87 v=lh_CONF_VALUE_retrieve(conf->data,&vv);
92 return(v); 88 return(v);
93 } 89 }
94 90
@@ -118,7 +114,7 @@ int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value)
118 return 0; 114 return 0;
119 } 115 }
120 116
121 v = (CONF_VALUE *)lh_insert(conf->data, value); 117 v = lh_CONF_VALUE_insert(conf->data, value);
122 if (v != NULL) 118 if (v != NULL)
123 { 119 {
124 (void)sk_CONF_VALUE_delete_ptr(ts,v); 120 (void)sk_CONF_VALUE_delete_ptr(ts,v);
@@ -141,24 +137,24 @@ char *_CONF_get_string(const CONF *conf, const char *section, const char *name)
141 { 137 {
142 vv.name=(char *)name; 138 vv.name=(char *)name;
143 vv.section=(char *)section; 139 vv.section=(char *)section;
144 v=(CONF_VALUE *)lh_retrieve(conf->data,&vv); 140 v=lh_CONF_VALUE_retrieve(conf->data,&vv);
145 if (v != NULL) return(v->value); 141 if (v != NULL) return(v->value);
146 if (strcmp(section,"ENV") == 0) 142 if (strcmp(section,"ENV") == 0)
147 { 143 {
148 p=Getenv(name); 144 p=getenv(name);
149 if (p != NULL) return(p); 145 if (p != NULL) return(p);
150 } 146 }
151 } 147 }
152 vv.section="default"; 148 vv.section="default";
153 vv.name=(char *)name; 149 vv.name=(char *)name;
154 v=(CONF_VALUE *)lh_retrieve(conf->data,&vv); 150 v=lh_CONF_VALUE_retrieve(conf->data,&vv);
155 if (v != NULL) 151 if (v != NULL)
156 return(v->value); 152 return(v->value);
157 else 153 else
158 return(NULL); 154 return(NULL);
159 } 155 }
160 else 156 else
161 return(Getenv(name)); 157 return(getenv(name));
162 } 158 }
163 159
164#if 0 /* There's no way to provide error checking with this function, so 160#if 0 /* There's no way to provide error checking with this function, so
@@ -182,6 +178,34 @@ long _CONF_get_number(CONF *conf, char *section, char *name)
182 } 178 }
183#endif 179#endif
184 180
181static unsigned long conf_value_hash(const CONF_VALUE *v)
182 {
183 return (lh_strhash(v->section)<<2)^lh_strhash(v->name);
184 }
185static IMPLEMENT_LHASH_HASH_FN(conf_value, CONF_VALUE)
186
187static int conf_value_cmp(const CONF_VALUE *a, const CONF_VALUE *b)
188 {
189 int i;
190
191 if (a->section != b->section)
192 {
193 i=strcmp(a->section,b->section);
194 if (i) return(i);
195 }
196
197 if ((a->name != NULL) && (b->name != NULL))
198 {
199 i=strcmp(a->name,b->name);
200 return(i);
201 }
202 else if (a->name == b->name)
203 return(0);
204 else
205 return((a->name == NULL)?-1:1);
206 }
207static IMPLEMENT_LHASH_COMP_FN(conf_value, CONF_VALUE)
208
185int _CONF_new_data(CONF *conf) 209int _CONF_new_data(CONF *conf)
186 { 210 {
187 if (conf == NULL) 211 if (conf == NULL)
@@ -189,7 +213,7 @@ int _CONF_new_data(CONF *conf)
189 return 0; 213 return 0;
190 } 214 }
191 if (conf->data == NULL) 215 if (conf->data == NULL)
192 if ((conf->data = lh_new(hash, cmp_conf)) == NULL) 216 if ((conf->data = lh_CONF_VALUE_new()) == NULL)
193 { 217 {
194 return 0; 218 return 0;
195 } 219 }
@@ -200,105 +224,73 @@ void _CONF_free_data(CONF *conf)
200 { 224 {
201 if (conf == NULL || conf->data == NULL) return; 225 if (conf == NULL || conf->data == NULL) return;
202 226
203 conf->data->down_load=0; /* evil thing to make sure the 'OPENSSL_free()' 227 lh_CONF_VALUE_down_load(conf->data)=0; /* evil thing to make
204 * works as expected */ 228 * sure the 'OPENSSL_free()' works as
205 lh_doall_arg(conf->data, LHASH_DOALL_ARG_FN(value_free_hash), 229 * expected */
206 conf->data); 230 lh_CONF_VALUE_doall_arg(conf->data,
231 LHASH_DOALL_ARG_FN(value_free_hash),
232 LHASH_OF(CONF_VALUE), conf->data);
207 233
208 /* We now have only 'section' entries in the hash table. 234 /* We now have only 'section' entries in the hash table.
209 * Due to problems with */ 235 * Due to problems with */
210 236
211 lh_doall_arg(conf->data, LHASH_DOALL_ARG_FN(value_free_stack), 237 lh_CONF_VALUE_doall(conf->data, LHASH_DOALL_FN(value_free_stack));
212 conf->data); 238 lh_CONF_VALUE_free(conf->data);
213 lh_free(conf->data);
214 } 239 }
215 240
216static void value_free_hash(CONF_VALUE *a, LHASH *conf) 241static void value_free_hash_doall_arg(CONF_VALUE *a, LHASH_OF(CONF_VALUE) *conf)
217 { 242 {
218 if (a->name != NULL) 243 if (a->name != NULL)
219 { 244 (void)lh_CONF_VALUE_delete(conf,a);
220 a=(CONF_VALUE *)lh_delete(conf,a);
221 }
222 } 245 }
223 246
224static void value_free_stack(CONF_VALUE *a, LHASH *conf) 247static void value_free_stack_doall(CONF_VALUE *a)
225 { 248 {
226 CONF_VALUE *vv; 249 CONF_VALUE *vv;
227 STACK *sk; 250 STACK_OF(CONF_VALUE) *sk;
228 int i; 251 int i;
229 252
230 if (a->name != NULL) return; 253 if (a->name != NULL) return;
231 254
232 sk=(STACK *)a->value; 255 sk=(STACK_OF(CONF_VALUE) *)a->value;
233 for (i=sk_num(sk)-1; i>=0; i--) 256 for (i=sk_CONF_VALUE_num(sk)-1; i>=0; i--)
234 { 257 {
235 vv=(CONF_VALUE *)sk_value(sk,i); 258 vv=sk_CONF_VALUE_value(sk,i);
236 OPENSSL_free(vv->value); 259 OPENSSL_free(vv->value);
237 OPENSSL_free(vv->name); 260 OPENSSL_free(vv->name);
238 OPENSSL_free(vv); 261 OPENSSL_free(vv);
239 } 262 }
240 if (sk != NULL) sk_free(sk); 263 if (sk != NULL) sk_CONF_VALUE_free(sk);
241 OPENSSL_free(a->section); 264 OPENSSL_free(a->section);
242 OPENSSL_free(a); 265 OPENSSL_free(a);
243 } 266 }
244 267
245/* static unsigned long hash(CONF_VALUE *v) */
246static unsigned long hash(const void *v_void)
247 {
248 CONF_VALUE *v = (CONF_VALUE *)v_void;
249 return((lh_strhash(v->section)<<2)^lh_strhash(v->name));
250 }
251
252/* static int cmp_conf(CONF_VALUE *a, CONF_VALUE *b) */
253static int cmp_conf(const void *a_void,const void *b_void)
254 {
255 int i;
256 CONF_VALUE *a = (CONF_VALUE *)a_void;
257 CONF_VALUE *b = (CONF_VALUE *)b_void;
258
259 if (a->section != b->section)
260 {
261 i=strcmp(a->section,b->section);
262 if (i) return(i);
263 }
264
265 if ((a->name != NULL) && (b->name != NULL))
266 {
267 i=strcmp(a->name,b->name);
268 return(i);
269 }
270 else if (a->name == b->name)
271 return(0);
272 else
273 return((a->name == NULL)?-1:1);
274 }
275
276/* Up until OpenSSL 0.9.5a, this was new_section */ 268/* Up until OpenSSL 0.9.5a, this was new_section */
277CONF_VALUE *_CONF_new_section(CONF *conf, const char *section) 269CONF_VALUE *_CONF_new_section(CONF *conf, const char *section)
278 { 270 {
279 STACK *sk=NULL; 271 STACK_OF(CONF_VALUE) *sk=NULL;
280 int ok=0,i; 272 int ok=0,i;
281 CONF_VALUE *v=NULL,*vv; 273 CONF_VALUE *v=NULL,*vv;
282 274
283 if ((sk=sk_new_null()) == NULL) 275 if ((sk=sk_CONF_VALUE_new_null()) == NULL)
284 goto err; 276 goto err;
285 if ((v=(CONF_VALUE *)OPENSSL_malloc(sizeof(CONF_VALUE))) == NULL) 277 if ((v=OPENSSL_malloc(sizeof(CONF_VALUE))) == NULL)
286 goto err; 278 goto err;
287 i=strlen(section)+1; 279 i=strlen(section)+1;
288 if ((v->section=(char *)OPENSSL_malloc(i)) == NULL) 280 if ((v->section=OPENSSL_malloc(i)) == NULL)
289 goto err; 281 goto err;
290 282
291 memcpy(v->section,section,i); 283 memcpy(v->section,section,i);
292 v->name=NULL; 284 v->name=NULL;
293 v->value=(char *)sk; 285 v->value=(char *)sk;
294 286
295 vv=(CONF_VALUE *)lh_insert(conf->data,v); 287 vv=lh_CONF_VALUE_insert(conf->data,v);
296 assert(vv == NULL); 288 assert(vv == NULL);
297 ok=1; 289 ok=1;
298err: 290err:
299 if (!ok) 291 if (!ok)
300 { 292 {
301 if (sk != NULL) sk_free(sk); 293 if (sk != NULL) sk_CONF_VALUE_free(sk);
302 if (v != NULL) OPENSSL_free(v); 294 if (v != NULL) OPENSSL_free(v);
303 v=NULL; 295 v=NULL;
304 } 296 }
diff --git a/src/lib/libssl/src/crypto/conf/conf_def.c b/src/lib/libssl/src/crypto/conf/conf_def.c
index d8bce8732a..0b571b0394 100644
--- a/src/lib/libssl/src/crypto/conf/conf_def.c
+++ b/src/lib/libssl/src/crypto/conf/conf_def.c
@@ -129,7 +129,7 @@ static CONF *def_create(CONF_METHOD *meth)
129 { 129 {
130 CONF *ret; 130 CONF *ret;
131 131
132 ret = (CONF *)OPENSSL_malloc(sizeof(CONF) + sizeof(unsigned short *)); 132 ret = OPENSSL_malloc(sizeof(CONF) + sizeof(unsigned short *));
133 if (ret) 133 if (ret)
134 if (meth->init(ret) == 0) 134 if (meth->init(ret) == 0)
135 { 135 {
@@ -145,7 +145,7 @@ static int def_init_default(CONF *conf)
145 return 0; 145 return 0;
146 146
147 conf->meth = &default_method; 147 conf->meth = &default_method;
148 conf->meth_data = (void *)CONF_type_default; 148 conf->meth_data = CONF_type_default;
149 conf->data = NULL; 149 conf->data = NULL;
150 150
151 return 1; 151 return 1;
@@ -722,7 +722,7 @@ static char *scan_dquote(CONF *conf, char *p)
722 return(p); 722 return(p);
723 } 723 }
724 724
725static void dump_value(CONF_VALUE *a, BIO *out) 725static void dump_value_doall_arg(CONF_VALUE *a, BIO *out)
726 { 726 {
727 if (a->name) 727 if (a->name)
728 BIO_printf(out, "[%s] %s=%s\n", a->section, a->name, a->value); 728 BIO_printf(out, "[%s] %s=%s\n", a->section, a->name, a->value);
@@ -730,11 +730,12 @@ static void dump_value(CONF_VALUE *a, BIO *out)
730 BIO_printf(out, "[[%s]]\n", a->section); 730 BIO_printf(out, "[[%s]]\n", a->section);
731 } 731 }
732 732
733static IMPLEMENT_LHASH_DOALL_ARG_FN(dump_value, CONF_VALUE *, BIO *) 733static IMPLEMENT_LHASH_DOALL_ARG_FN(dump_value, CONF_VALUE, BIO)
734 734
735static int def_dump(const CONF *conf, BIO *out) 735static int def_dump(const CONF *conf, BIO *out)
736 { 736 {
737 lh_doall_arg(conf->data, LHASH_DOALL_ARG_FN(dump_value), out); 737 lh_CONF_VALUE_doall_arg(conf->data, LHASH_DOALL_ARG_FN(dump_value),
738 BIO, out);
738 return 1; 739 return 1;
739 } 740 }
740 741
diff --git a/src/lib/libssl/src/crypto/conf/conf_err.c b/src/lib/libssl/src/crypto/conf/conf_err.c
index a16a5e0bd4..25bb5dc9aa 100644
--- a/src/lib/libssl/src/crypto/conf/conf_err.c
+++ b/src/lib/libssl/src/crypto/conf/conf_err.c
@@ -1,6 +1,6 @@
1/* crypto/conf/conf_err.c */ 1/* crypto/conf/conf_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -75,6 +75,7 @@ static ERR_STRING_DATA CONF_str_functs[]=
75{ERR_FUNC(CONF_F_CONF_LOAD_BIO), "CONF_load_bio"}, 75{ERR_FUNC(CONF_F_CONF_LOAD_BIO), "CONF_load_bio"},
76{ERR_FUNC(CONF_F_CONF_LOAD_FP), "CONF_load_fp"}, 76{ERR_FUNC(CONF_F_CONF_LOAD_FP), "CONF_load_fp"},
77{ERR_FUNC(CONF_F_CONF_MODULES_LOAD), "CONF_modules_load"}, 77{ERR_FUNC(CONF_F_CONF_MODULES_LOAD), "CONF_modules_load"},
78{ERR_FUNC(CONF_F_CONF_PARSE_LIST), "CONF_parse_list"},
78{ERR_FUNC(CONF_F_DEF_LOAD), "DEF_LOAD"}, 79{ERR_FUNC(CONF_F_DEF_LOAD), "DEF_LOAD"},
79{ERR_FUNC(CONF_F_DEF_LOAD_BIO), "DEF_LOAD_BIO"}, 80{ERR_FUNC(CONF_F_DEF_LOAD_BIO), "DEF_LOAD_BIO"},
80{ERR_FUNC(CONF_F_MODULE_INIT), "MODULE_INIT"}, 81{ERR_FUNC(CONF_F_MODULE_INIT), "MODULE_INIT"},
@@ -97,6 +98,7 @@ static ERR_STRING_DATA CONF_str_functs[]=
97static ERR_STRING_DATA CONF_str_reasons[]= 98static ERR_STRING_DATA CONF_str_reasons[]=
98 { 99 {
99{ERR_REASON(CONF_R_ERROR_LOADING_DSO) ,"error loading dso"}, 100{ERR_REASON(CONF_R_ERROR_LOADING_DSO) ,"error loading dso"},
101{ERR_REASON(CONF_R_LIST_CANNOT_BE_NULL) ,"list cannot be null"},
100{ERR_REASON(CONF_R_MISSING_CLOSE_SQUARE_BRACKET),"missing close square bracket"}, 102{ERR_REASON(CONF_R_MISSING_CLOSE_SQUARE_BRACKET),"missing close square bracket"},
101{ERR_REASON(CONF_R_MISSING_EQUAL_SIGN) ,"missing equal sign"}, 103{ERR_REASON(CONF_R_MISSING_EQUAL_SIGN) ,"missing equal sign"},
102{ERR_REASON(CONF_R_MISSING_FINISH_FUNCTION),"missing finish function"}, 104{ERR_REASON(CONF_R_MISSING_FINISH_FUNCTION),"missing finish function"},
diff --git a/src/lib/libssl/src/crypto/conf/conf_lib.c b/src/lib/libssl/src/crypto/conf/conf_lib.c
index 2a3399d269..54046defca 100644
--- a/src/lib/libssl/src/crypto/conf/conf_lib.c
+++ b/src/lib/libssl/src/crypto/conf/conf_lib.c
@@ -69,7 +69,7 @@ static CONF_METHOD *default_CONF_method=NULL;
69 69
70/* Init a 'CONF' structure from an old LHASH */ 70/* Init a 'CONF' structure from an old LHASH */
71 71
72void CONF_set_nconf(CONF *conf, LHASH *hash) 72void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash)
73 { 73 {
74 if (default_CONF_method == NULL) 74 if (default_CONF_method == NULL)
75 default_CONF_method = NCONF_default(); 75 default_CONF_method = NCONF_default();
@@ -87,9 +87,10 @@ int CONF_set_default_method(CONF_METHOD *meth)
87 return 1; 87 return 1;
88 } 88 }
89 89
90LHASH *CONF_load(LHASH *conf, const char *file, long *eline) 90LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file,
91 long *eline)
91 { 92 {
92 LHASH *ltmp; 93 LHASH_OF(CONF_VALUE) *ltmp;
93 BIO *in=NULL; 94 BIO *in=NULL;
94 95
95#ifdef OPENSSL_SYS_VMS 96#ifdef OPENSSL_SYS_VMS
@@ -110,10 +111,11 @@ LHASH *CONF_load(LHASH *conf, const char *file, long *eline)
110 } 111 }
111 112
112#ifndef OPENSSL_NO_FP_API 113#ifndef OPENSSL_NO_FP_API
113LHASH *CONF_load_fp(LHASH *conf, FILE *fp,long *eline) 114LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp,
115 long *eline)
114 { 116 {
115 BIO *btmp; 117 BIO *btmp;
116 LHASH *ltmp; 118 LHASH_OF(CONF_VALUE) *ltmp;
117 if(!(btmp = BIO_new_fp(fp, BIO_NOCLOSE))) { 119 if(!(btmp = BIO_new_fp(fp, BIO_NOCLOSE))) {
118 CONFerr(CONF_F_CONF_LOAD_FP,ERR_R_BUF_LIB); 120 CONFerr(CONF_F_CONF_LOAD_FP,ERR_R_BUF_LIB);
119 return NULL; 121 return NULL;
@@ -124,7 +126,8 @@ LHASH *CONF_load_fp(LHASH *conf, FILE *fp,long *eline)
124 } 126 }
125#endif 127#endif
126 128
127LHASH *CONF_load_bio(LHASH *conf, BIO *bp,long *eline) 129LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp,
130 long *eline)
128 { 131 {
129 CONF ctmp; 132 CONF ctmp;
130 int ret; 133 int ret;
@@ -137,7 +140,8 @@ LHASH *CONF_load_bio(LHASH *conf, BIO *bp,long *eline)
137 return NULL; 140 return NULL;
138 } 141 }
139 142
140STACK_OF(CONF_VALUE) *CONF_get_section(LHASH *conf,const char *section) 143STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf,
144 const char *section)
141 { 145 {
142 if (conf == NULL) 146 if (conf == NULL)
143 { 147 {
@@ -151,7 +155,8 @@ STACK_OF(CONF_VALUE) *CONF_get_section(LHASH *conf,const char *section)
151 } 155 }
152 } 156 }
153 157
154char *CONF_get_string(LHASH *conf,const char *group,const char *name) 158char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf,const char *group,
159 const char *name)
155 { 160 {
156 if (conf == NULL) 161 if (conf == NULL)
157 { 162 {
@@ -165,7 +170,8 @@ char *CONF_get_string(LHASH *conf,const char *group,const char *name)
165 } 170 }
166 } 171 }
167 172
168long CONF_get_number(LHASH *conf,const char *group,const char *name) 173long CONF_get_number(LHASH_OF(CONF_VALUE) *conf,const char *group,
174 const char *name)
169 { 175 {
170 int status; 176 int status;
171 long result = 0; 177 long result = 0;
@@ -189,7 +195,7 @@ long CONF_get_number(LHASH *conf,const char *group,const char *name)
189 return result; 195 return result;
190 } 196 }
191 197
192void CONF_free(LHASH *conf) 198void CONF_free(LHASH_OF(CONF_VALUE) *conf)
193 { 199 {
194 CONF ctmp; 200 CONF ctmp;
195 CONF_set_nconf(&ctmp, conf); 201 CONF_set_nconf(&ctmp, conf);
@@ -197,7 +203,7 @@ void CONF_free(LHASH *conf)
197 } 203 }
198 204
199#ifndef OPENSSL_NO_FP_API 205#ifndef OPENSSL_NO_FP_API
200int CONF_dump_fp(LHASH *conf, FILE *out) 206int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out)
201 { 207 {
202 BIO *btmp; 208 BIO *btmp;
203 int ret; 209 int ret;
@@ -212,7 +218,7 @@ int CONF_dump_fp(LHASH *conf, FILE *out)
212 } 218 }
213#endif 219#endif
214 220
215int CONF_dump_bio(LHASH *conf, BIO *out) 221int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out)
216 { 222 {
217 CONF ctmp; 223 CONF ctmp;
218 CONF_set_nconf(&ctmp, conf); 224 CONF_set_nconf(&ctmp, conf);
diff --git a/src/lib/libssl/src/crypto/conf/conf_mall.c b/src/lib/libssl/src/crypto/conf/conf_mall.c
index 1cc1fd5534..c6f4cb2d55 100644
--- a/src/lib/libssl/src/crypto/conf/conf_mall.c
+++ b/src/lib/libssl/src/crypto/conf/conf_mall.c
@@ -63,7 +63,6 @@
63#include <openssl/dso.h> 63#include <openssl/dso.h>
64#include <openssl/x509.h> 64#include <openssl/x509.h>
65#include <openssl/asn1.h> 65#include <openssl/asn1.h>
66#include <openssl/evp.h>
67#ifndef OPENSSL_NO_ENGINE 66#ifndef OPENSSL_NO_ENGINE
68#include <openssl/engine.h> 67#include <openssl/engine.h>
69#endif 68#endif
@@ -77,6 +76,5 @@ void OPENSSL_load_builtin_modules(void)
77#ifndef OPENSSL_NO_ENGINE 76#ifndef OPENSSL_NO_ENGINE
78 ENGINE_add_conf_module(); 77 ENGINE_add_conf_module();
79#endif 78#endif
80 EVP_add_alg_module();
81 } 79 }
82 80
diff --git a/src/lib/libssl/src/crypto/conf/conf_mod.c b/src/lib/libssl/src/crypto/conf/conf_mod.c
index ee9c677d9b..df1642a0a5 100644
--- a/src/lib/libssl/src/crypto/conf/conf_mod.c
+++ b/src/lib/libssl/src/crypto/conf/conf_mod.c
@@ -582,8 +582,14 @@ int CONF_parse_list(const char *list_, int sep, int nospc,
582 { 582 {
583 int ret; 583 int ret;
584 const char *lstart, *tmpend, *p; 584 const char *lstart, *tmpend, *p;
585 lstart = list_;
586 585
586 if(list_ == NULL)
587 {
588 CONFerr(CONF_F_CONF_PARSE_LIST, CONF_R_LIST_CANNOT_BE_NULL);
589 return 0;
590 }
591
592 lstart = list_;
587 for(;;) 593 for(;;)
588 { 594 {
589 if (nospc) 595 if (nospc)
diff --git a/src/lib/libssl/src/crypto/cpt_err.c b/src/lib/libssl/src/crypto/cpt_err.c
index 9fd41fff8c..139b9284e4 100644
--- a/src/lib/libssl/src/crypto/cpt_err.c
+++ b/src/lib/libssl/src/crypto/cpt_err.c
@@ -1,6 +1,6 @@
1/* crypto/cpt_err.c */ 1/* crypto/cpt_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
diff --git a/src/lib/libssl/src/crypto/cryptlib.c b/src/lib/libssl/src/crypto/cryptlib.c
index 8f9e88e403..b4449b86d6 100644
--- a/src/lib/libssl/src/crypto/cryptlib.c
+++ b/src/lib/libssl/src/crypto/cryptlib.c
@@ -1,6 +1,6 @@
1/* crypto/cryptlib.c */ 1/* crypto/cryptlib.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -121,17 +121,279 @@
121static double SSLeay_MSVC5_hack=0.0; /* and for VC1.5 */ 121static double SSLeay_MSVC5_hack=0.0; /* and for VC1.5 */
122#endif 122#endif
123 123
124DECLARE_STACK_OF(CRYPTO_dynlock)
125
126/* real #defines in crypto.h, keep these upto date */
127static const char* const lock_names[CRYPTO_NUM_LOCKS] =
128 {
129 "<<ERROR>>",
130 "err",
131 "ex_data",
132 "x509",
133 "x509_info",
134 "x509_pkey",
135 "x509_crl",
136 "x509_req",
137 "dsa",
138 "rsa",
139 "evp_pkey",
140 "x509_store",
141 "ssl_ctx",
142 "ssl_cert",
143 "ssl_session",
144 "ssl_sess_cert",
145 "ssl",
146 "ssl_method",
147 "rand",
148 "rand2",
149 "debug_malloc",
150 "BIO",
151 "gethostbyname",
152 "getservbyname",
153 "readdir",
154 "RSA_blinding",
155 "dh",
156 "debug_malloc2",
157 "dso",
158 "dynlock",
159 "engine",
160 "ui",
161 "ecdsa",
162 "ec",
163 "ecdh",
164 "bn",
165 "ec_pre_comp",
166 "store",
167 "comp",
168 "fips",
169 "fips2",
170#if CRYPTO_NUM_LOCKS != 41
171# error "Inconsistency between crypto.h and cryptlib.c"
172#endif
173 };
174
175/* This is for applications to allocate new type names in the non-dynamic
176 array of lock names. These are numbered with positive numbers. */
177static STACK_OF(OPENSSL_STRING) *app_locks=NULL;
178
179/* For applications that want a more dynamic way of handling threads, the
180 following stack is used. These are externally numbered with negative
181 numbers. */
182static STACK_OF(CRYPTO_dynlock) *dyn_locks=NULL;
183
184
124static void (MS_FAR *locking_callback)(int mode,int type, 185static void (MS_FAR *locking_callback)(int mode,int type,
125 const char *file,int line)=NULL; 186 const char *file,int line)=0;
126static int (MS_FAR *add_lock_callback)(int *pointer,int amount, 187static int (MS_FAR *add_lock_callback)(int *pointer,int amount,
127 int type,const char *file,int line)=NULL; 188 int type,const char *file,int line)=0;
128static unsigned long (MS_FAR *id_callback)(void)=NULL; 189#ifndef OPENSSL_NO_DEPRECATED
190static unsigned long (MS_FAR *id_callback)(void)=0;
191#endif
192static void (MS_FAR *threadid_callback)(CRYPTO_THREADID *)=0;
193static struct CRYPTO_dynlock_value *(MS_FAR *dynlock_create_callback)
194 (const char *file,int line)=0;
195static void (MS_FAR *dynlock_lock_callback)(int mode,
196 struct CRYPTO_dynlock_value *l, const char *file,int line)=0;
197static void (MS_FAR *dynlock_destroy_callback)(struct CRYPTO_dynlock_value *l,
198 const char *file,int line)=0;
199
200int CRYPTO_get_new_lockid(char *name)
201 {
202 char *str;
203 int i;
204
205#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16)
206 /* A hack to make Visual C++ 5.0 work correctly when linking as
207 * a DLL using /MT. Without this, the application cannot use
208 * any floating point printf's.
209 * It also seems to be needed for Visual C 1.5 (win16) */
210 SSLeay_MSVC5_hack=(double)name[0]*(double)name[1];
211#endif
212
213 if ((app_locks == NULL) && ((app_locks=sk_OPENSSL_STRING_new_null()) == NULL))
214 {
215 CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_LOCKID,ERR_R_MALLOC_FAILURE);
216 return(0);
217 }
218 if ((str=BUF_strdup(name)) == NULL)
219 {
220 CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_LOCKID,ERR_R_MALLOC_FAILURE);
221 return(0);
222 }
223 i=sk_OPENSSL_STRING_push(app_locks,str);
224 if (!i)
225 OPENSSL_free(str);
226 else
227 i+=CRYPTO_NUM_LOCKS; /* gap of one :-) */
228 return(i);
229 }
129 230
130int CRYPTO_num_locks(void) 231int CRYPTO_num_locks(void)
131 { 232 {
132 return CRYPTO_NUM_LOCKS; 233 return CRYPTO_NUM_LOCKS;
133 } 234 }
134 235
236int CRYPTO_get_new_dynlockid(void)
237 {
238 int i = 0;
239 CRYPTO_dynlock *pointer = NULL;
240
241 if (dynlock_create_callback == NULL)
242 {
243 CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,CRYPTO_R_NO_DYNLOCK_CREATE_CALLBACK);
244 return(0);
245 }
246 CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
247 if ((dyn_locks == NULL)
248 && ((dyn_locks=sk_CRYPTO_dynlock_new_null()) == NULL))
249 {
250 CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
251 CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE);
252 return(0);
253 }
254 CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
255
256 pointer = (CRYPTO_dynlock *)OPENSSL_malloc(sizeof(CRYPTO_dynlock));
257 if (pointer == NULL)
258 {
259 CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE);
260 return(0);
261 }
262 pointer->references = 1;
263 pointer->data = dynlock_create_callback(__FILE__,__LINE__);
264 if (pointer->data == NULL)
265 {
266 OPENSSL_free(pointer);
267 CRYPTOerr(CRYPTO_F_CRYPTO_GET_NEW_DYNLOCKID,ERR_R_MALLOC_FAILURE);
268 return(0);
269 }
270
271 CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
272 /* First, try to find an existing empty slot */
273 i=sk_CRYPTO_dynlock_find(dyn_locks,NULL);
274 /* If there was none, push, thereby creating a new one */
275 if (i == -1)
276 /* Since sk_push() returns the number of items on the
277 stack, not the location of the pushed item, we need
278 to transform the returned number into a position,
279 by decreasing it. */
280 i=sk_CRYPTO_dynlock_push(dyn_locks,pointer) - 1;
281 else
282 /* If we found a place with a NULL pointer, put our pointer
283 in it. */
284 (void)sk_CRYPTO_dynlock_set(dyn_locks,i,pointer);
285 CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
286
287 if (i == -1)
288 {
289 dynlock_destroy_callback(pointer->data,__FILE__,__LINE__);
290 OPENSSL_free(pointer);
291 }
292 else
293 i += 1; /* to avoid 0 */
294 return -i;
295 }
296
297void CRYPTO_destroy_dynlockid(int i)
298 {
299 CRYPTO_dynlock *pointer = NULL;
300 if (i)
301 i = -i-1;
302 if (dynlock_destroy_callback == NULL)
303 return;
304
305 CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
306
307 if (dyn_locks == NULL || i >= sk_CRYPTO_dynlock_num(dyn_locks))
308 {
309 CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
310 return;
311 }
312 pointer = sk_CRYPTO_dynlock_value(dyn_locks, i);
313 if (pointer != NULL)
314 {
315 --pointer->references;
316#ifdef REF_CHECK
317 if (pointer->references < 0)
318 {
319 fprintf(stderr,"CRYPTO_destroy_dynlockid, bad reference count\n");
320 abort();
321 }
322 else
323#endif
324 if (pointer->references <= 0)
325 {
326 (void)sk_CRYPTO_dynlock_set(dyn_locks, i, NULL);
327 }
328 else
329 pointer = NULL;
330 }
331 CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
332
333 if (pointer)
334 {
335 dynlock_destroy_callback(pointer->data,__FILE__,__LINE__);
336 OPENSSL_free(pointer);
337 }
338 }
339
340struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i)
341 {
342 CRYPTO_dynlock *pointer = NULL;
343 if (i)
344 i = -i-1;
345
346 CRYPTO_w_lock(CRYPTO_LOCK_DYNLOCK);
347
348 if (dyn_locks != NULL && i < sk_CRYPTO_dynlock_num(dyn_locks))
349 pointer = sk_CRYPTO_dynlock_value(dyn_locks, i);
350 if (pointer)
351 pointer->references++;
352
353 CRYPTO_w_unlock(CRYPTO_LOCK_DYNLOCK);
354
355 if (pointer)
356 return pointer->data;
357 return NULL;
358 }
359
360struct CRYPTO_dynlock_value *(*CRYPTO_get_dynlock_create_callback(void))
361 (const char *file,int line)
362 {
363 return(dynlock_create_callback);
364 }
365
366void (*CRYPTO_get_dynlock_lock_callback(void))(int mode,
367 struct CRYPTO_dynlock_value *l, const char *file,int line)
368 {
369 return(dynlock_lock_callback);
370 }
371
372void (*CRYPTO_get_dynlock_destroy_callback(void))
373 (struct CRYPTO_dynlock_value *l, const char *file,int line)
374 {
375 return(dynlock_destroy_callback);
376 }
377
378void CRYPTO_set_dynlock_create_callback(struct CRYPTO_dynlock_value *(*func)
379 (const char *file, int line))
380 {
381 dynlock_create_callback=func;
382 }
383
384void CRYPTO_set_dynlock_lock_callback(void (*func)(int mode,
385 struct CRYPTO_dynlock_value *l, const char *file, int line))
386 {
387 dynlock_lock_callback=func;
388 }
389
390void CRYPTO_set_dynlock_destroy_callback(void (*func)
391 (struct CRYPTO_dynlock_value *l, const char *file, int line))
392 {
393 dynlock_destroy_callback=func;
394 }
395
396
135void (*CRYPTO_get_locking_callback(void))(int mode,int type,const char *file, 397void (*CRYPTO_get_locking_callback(void))(int mode,int type,const char *file,
136 int line) 398 int line)
137 { 399 {
@@ -156,6 +418,108 @@ void CRYPTO_set_add_lock_callback(int (*func)(int *num,int mount,int type,
156 add_lock_callback=func; 418 add_lock_callback=func;
157 } 419 }
158 420
421/* the memset() here and in set_pointer() seem overkill, but for the sake of
422 * CRYPTO_THREADID_cmp() this avoids any platform silliness that might cause two
423 * "equal" THREADID structs to not be memcmp()-identical. */
424void CRYPTO_THREADID_set_numeric(CRYPTO_THREADID *id, unsigned long val)
425 {
426 memset(id, 0, sizeof(*id));
427 id->val = val;
428 }
429
430static const unsigned char hash_coeffs[] = { 3, 5, 7, 11, 13, 17, 19, 23 };
431void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr)
432 {
433 unsigned char *dest = (void *)&id->val;
434 unsigned int accum = 0;
435 unsigned char dnum = sizeof(id->val);
436
437 memset(id, 0, sizeof(*id));
438 id->ptr = ptr;
439 if (sizeof(id->val) >= sizeof(id->ptr))
440 {
441 /* 'ptr' can be embedded in 'val' without loss of uniqueness */
442 id->val = (unsigned long)id->ptr;
443 return;
444 }
445 /* hash ptr ==> val. Each byte of 'val' gets the mod-256 total of a
446 * linear function over the bytes in 'ptr', the co-efficients of which
447 * are a sequence of low-primes (hash_coeffs is an 8-element cycle) -
448 * the starting prime for the sequence varies for each byte of 'val'
449 * (unique polynomials unless pointers are >64-bit). For added spice,
450 * the totals accumulate rather than restarting from zero, and the index
451 * of the 'val' byte is added each time (position dependence). If I was
452 * a black-belt, I'd scan big-endian pointers in reverse to give
453 * low-order bits more play, but this isn't crypto and I'd prefer nobody
454 * mistake it as such. Plus I'm lazy. */
455 while (dnum--)
456 {
457 const unsigned char *src = (void *)&id->ptr;
458 unsigned char snum = sizeof(id->ptr);
459 while (snum--)
460 accum += *(src++) * hash_coeffs[(snum + dnum) & 7];
461 accum += dnum;
462 *(dest++) = accum & 255;
463 }
464 }
465
466int CRYPTO_THREADID_set_callback(void (*func)(CRYPTO_THREADID *))
467 {
468 if (threadid_callback)
469 return 0;
470 threadid_callback = func;
471 return 1;
472 }
473
474void (*CRYPTO_THREADID_get_callback(void))(CRYPTO_THREADID *)
475 {
476 return threadid_callback;
477 }
478
479void CRYPTO_THREADID_current(CRYPTO_THREADID *id)
480 {
481 if (threadid_callback)
482 {
483 threadid_callback(id);
484 return;
485 }
486#ifndef OPENSSL_NO_DEPRECATED
487 /* If the deprecated callback was set, fall back to that */
488 if (id_callback)
489 {
490 CRYPTO_THREADID_set_numeric(id, id_callback());
491 return;
492 }
493#endif
494 /* Else pick a backup */
495#ifdef OPENSSL_SYS_WIN16
496 CRYPTO_THREADID_set_numeric(id, (unsigned long)GetCurrentTask());
497#elif defined(OPENSSL_SYS_WIN32)
498 CRYPTO_THREADID_set_numeric(id, (unsigned long)GetCurrentThreadId());
499#elif defined(OPENSSL_SYS_BEOS)
500 CRYPTO_THREADID_set_numeric(id, (unsigned long)find_thread(NULL));
501#else
502 /* For everything else, default to using the address of 'errno' */
503 CRYPTO_THREADID_set_pointer(id, &errno);
504#endif
505 }
506
507int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *a, const CRYPTO_THREADID *b)
508 {
509 return memcmp(a, b, sizeof(*a));
510 }
511
512void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dest, const CRYPTO_THREADID *src)
513 {
514 memcpy(dest, src, sizeof(*src));
515 }
516
517unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id)
518 {
519 return id->val;
520 }
521
522#ifndef OPENSSL_NO_DEPRECATED
159unsigned long (*CRYPTO_get_id_callback(void))(void) 523unsigned long (*CRYPTO_get_id_callback(void))(void)
160 { 524 {
161 return(id_callback); 525 return(id_callback);
@@ -178,6 +542,8 @@ unsigned long CRYPTO_thread_id(void)
178 ret=(unsigned long)GetCurrentThreadId(); 542 ret=(unsigned long)GetCurrentThreadId();
179#elif defined(GETPID_IS_MEANINGLESS) 543#elif defined(GETPID_IS_MEANINGLESS)
180 ret=1L; 544 ret=1L;
545#elif defined(OPENSSL_SYS_BEOS)
546 ret=(unsigned long)find_thread(NULL);
181#else 547#else
182 ret=(unsigned long)getpid(); 548 ret=(unsigned long)getpid();
183#endif 549#endif
@@ -186,19 +552,13 @@ unsigned long CRYPTO_thread_id(void)
186 ret=id_callback(); 552 ret=id_callback();
187 return(ret); 553 return(ret);
188 } 554 }
189 555#endif
190static void (*do_dynlock_cb)(int mode, int type, const char *file, int line);
191
192void int_CRYPTO_set_do_dynlock_callback(
193 void (*dyn_cb)(int mode, int type, const char *file, int line))
194 {
195 do_dynlock_cb = dyn_cb;
196 }
197 556
198void CRYPTO_lock(int mode, int type, const char *file, int line) 557void CRYPTO_lock(int mode, int type, const char *file, int line)
199 { 558 {
200#ifdef LOCK_DEBUG 559#ifdef LOCK_DEBUG
201 { 560 {
561 CRYPTO_THREADID id;
202 char *rw_text,*operation_text; 562 char *rw_text,*operation_text;
203 563
204 if (mode & CRYPTO_LOCK) 564 if (mode & CRYPTO_LOCK)
@@ -215,15 +575,25 @@ void CRYPTO_lock(int mode, int type, const char *file, int line)
215 else 575 else
216 rw_text="ERROR"; 576 rw_text="ERROR";
217 577
578 CRYPTO_THREADID_current(&id);
218 fprintf(stderr,"lock:%08lx:(%s)%s %-18s %s:%d\n", 579 fprintf(stderr,"lock:%08lx:(%s)%s %-18s %s:%d\n",
219 CRYPTO_thread_id(), rw_text, operation_text, 580 CRYPTO_THREADID_hash(&id), rw_text, operation_text,
220 CRYPTO_get_lock_name(type), file, line); 581 CRYPTO_get_lock_name(type), file, line);
221 } 582 }
222#endif 583#endif
223 if (type < 0) 584 if (type < 0)
224 { 585 {
225 if (do_dynlock_cb) 586 if (dynlock_lock_callback != NULL)
226 do_dynlock_cb(mode, type, file, line); 587 {
588 struct CRYPTO_dynlock_value *pointer
589 = CRYPTO_get_dynlock_value(type);
590
591 OPENSSL_assert(pointer != NULL);
592
593 dynlock_lock_callback(mode, pointer, file, line);
594
595 CRYPTO_destroy_dynlockid(type);
596 }
227 } 597 }
228 else 598 else
229 if (locking_callback != NULL) 599 if (locking_callback != NULL)
@@ -243,11 +613,14 @@ int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file,
243 613
244 ret=add_lock_callback(pointer,amount,type,file,line); 614 ret=add_lock_callback(pointer,amount,type,file,line);
245#ifdef LOCK_DEBUG 615#ifdef LOCK_DEBUG
616 {
617 CRYPTO_THREADID id;
618 CRYPTO_THREADID_current(&id);
246 fprintf(stderr,"ladd:%08lx:%2d+%2d->%2d %-18s %s:%d\n", 619 fprintf(stderr,"ladd:%08lx:%2d+%2d->%2d %-18s %s:%d\n",
247 CRYPTO_thread_id(), 620 CRYPTO_THREADID_hash(&id), before,amount,ret,
248 before,amount,ret,
249 CRYPTO_get_lock_name(type), 621 CRYPTO_get_lock_name(type),
250 file,line); 622 file,line);
623 }
251#endif 624#endif
252 } 625 }
253 else 626 else
@@ -256,11 +629,15 @@ int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file,
256 629
257 ret= *pointer+amount; 630 ret= *pointer+amount;
258#ifdef LOCK_DEBUG 631#ifdef LOCK_DEBUG
632 {
633 CRYPTO_THREADID id;
634 CRYPTO_THREADID_current(&id);
259 fprintf(stderr,"ladd:%08lx:%2d+%2d->%2d %-18s %s:%d\n", 635 fprintf(stderr,"ladd:%08lx:%2d+%2d->%2d %-18s %s:%d\n",
260 CRYPTO_thread_id(), 636 CRYPTO_THREADID_hash(&id),
261 *pointer,amount,ret, 637 *pointer,amount,ret,
262 CRYPTO_get_lock_name(type), 638 CRYPTO_get_lock_name(type),
263 file,line); 639 file,line);
640 }
264#endif 641#endif
265 *pointer=ret; 642 *pointer=ret;
266 CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE,type,file,line); 643 CRYPTO_lock(CRYPTO_UNLOCK|CRYPTO_WRITE,type,file,line);
@@ -268,6 +645,18 @@ int CRYPTO_add_lock(int *pointer, int amount, int type, const char *file,
268 return(ret); 645 return(ret);
269 } 646 }
270 647
648const char *CRYPTO_get_lock_name(int type)
649 {
650 if (type < 0)
651 return("dynamic");
652 else if (type < CRYPTO_NUM_LOCKS)
653 return(lock_names[type]);
654 else if (type-CRYPTO_NUM_LOCKS > sk_OPENSSL_STRING_num(app_locks))
655 return("ERROR");
656 else
657 return(sk_OPENSSL_STRING_value(app_locks,type-CRYPTO_NUM_LOCKS));
658 }
659
271#if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \ 660#if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \
272 defined(__INTEL__) || \ 661 defined(__INTEL__) || \
273 defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64) 662 defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64)
@@ -301,70 +690,16 @@ void OPENSSL_cpuid_setup(void)
301unsigned long *OPENSSL_ia32cap_loc(void) { return NULL; } 690unsigned long *OPENSSL_ia32cap_loc(void) { return NULL; }
302#endif 691#endif
303int OPENSSL_NONPIC_relocated = 0; 692int OPENSSL_NONPIC_relocated = 0;
304#if !defined(OPENSSL_CPUID_SETUP) 693#if !defined(OPENSSL_CPUID_SETUP) && !defined(OPENSSL_CPUID_OBJ)
305void OPENSSL_cpuid_setup(void) {} 694void OPENSSL_cpuid_setup(void) {}
306#endif 695#endif
307 696
308#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(_WINDLL) 697#if (defined(_WIN32) || defined(__CYGWIN__)) && defined(_WINDLL)
309
310#ifdef OPENSSL_FIPS
311
312#include <tlhelp32.h>
313#if defined(__GNUC__) && __GNUC__>=2
314static int DllInit(void) __attribute__((constructor));
315#elif defined(_MSC_VER)
316static int DllInit(void);
317# ifdef _WIN64
318# pragma section(".CRT$XCU",read)
319 __declspec(allocate(".CRT$XCU"))
320# else
321# pragma data_seg(".CRT$XCU")
322# endif
323 static int (*p)(void) = DllInit;
324# pragma data_seg()
325#endif
326
327static int DllInit(void)
328{
329#if defined(_WIN32_WINNT)
330 union { int(*f)(void); BYTE *p; } t = { DllInit };
331 HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
332 IMAGE_DOS_HEADER *dos_header;
333 IMAGE_NT_HEADERS *nt_headers;
334 MODULEENTRY32 me32 = {sizeof(me32)};
335
336 hModuleSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE,0);
337 if (hModuleSnap != INVALID_HANDLE_VALUE &&
338 Module32First(hModuleSnap,&me32)) do
339 {
340 if (t.p >= me32.modBaseAddr &&
341 t.p < me32.modBaseAddr+me32.modBaseSize)
342 {
343 dos_header=(IMAGE_DOS_HEADER *)me32.modBaseAddr;
344 if (dos_header->e_magic==IMAGE_DOS_SIGNATURE)
345 {
346 nt_headers=(IMAGE_NT_HEADERS *)
347 ((BYTE *)dos_header+dos_header->e_lfanew);
348 if (nt_headers->Signature==IMAGE_NT_SIGNATURE &&
349 me32.modBaseAddr!=(BYTE*)nt_headers->OptionalHeader.ImageBase)
350 OPENSSL_NONPIC_relocated=1;
351 }
352 break;
353 }
354 } while (Module32Next(hModuleSnap,&me32));
355
356 if (hModuleSnap != INVALID_HANDLE_VALUE)
357 CloseHandle(hModuleSnap);
358#endif
359 OPENSSL_cpuid_setup();
360 return 0;
361}
362
363#else
364
365#ifdef __CYGWIN__ 698#ifdef __CYGWIN__
366/* pick DLL_[PROCESS|THREAD]_[ATTACH|DETACH] definitions */ 699/* pick DLL_[PROCESS|THREAD]_[ATTACH|DETACH] definitions */
367#include <windows.h> 700#include <windows.h>
701/* this has side-effect of _WIN32 getting defined, which otherwise
702 * is mutually exclusive with __CYGWIN__... */
368#endif 703#endif
369 704
370/* All we really need to do is remove the 'error' state when a thread 705/* All we really need to do is remove the 'error' state when a thread
@@ -405,16 +740,27 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
405 } 740 }
406#endif 741#endif
407 742
408#endif
409
410#if defined(_WIN32) && !defined(__CYGWIN__) 743#if defined(_WIN32) && !defined(__CYGWIN__)
411#include <tchar.h> 744#include <tchar.h>
745#include <signal.h>
412 746
413#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333 747#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333
414int OPENSSL_isservice(void) 748int OPENSSL_isservice(void)
415{ HWINSTA h; 749{ HWINSTA h;
416 DWORD len; 750 DWORD len;
417 WCHAR *name; 751 WCHAR *name;
752 static union { void *p; int (*f)(void); } _OPENSSL_isservice = { NULL };
753
754 if (_OPENSSL_isservice.p == NULL) {
755 HANDLE h = GetModuleHandle(NULL);
756 if (h != NULL)
757 _OPENSSL_isservice.p = GetProcAddress(h,"_OPENSSL_isservice");
758 if (_OPENSSL_isservice.p == NULL)
759 _OPENSSL_isservice.p = (void *)-1;
760 }
761
762 if (_OPENSSL_isservice.p != (void *)-1)
763 return (*_OPENSSL_isservice.f)();
418 764
419 (void)GetDesktopWindow(); /* return value is ignored */ 765 (void)GetDesktopWindow(); /* return value is ignored */
420 766
@@ -513,7 +859,7 @@ void OPENSSL_showfatal (const char *fmta,...)
513 859
514#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333 860#if defined(_WIN32_WINNT) && _WIN32_WINNT>=0x0333
515 /* this -------------v--- guards NT-specific calls */ 861 /* this -------------v--- guards NT-specific calls */
516 if (GetVersion() < 0x80000000 && OPENSSL_isservice()) 862 if (GetVersion() < 0x80000000 && OPENSSL_isservice() > 0)
517 { HANDLE h = RegisterEventSource(0,_T("OPENSSL")); 863 { HANDLE h = RegisterEventSource(0,_T("OPENSSL"));
518 const TCHAR *pmsg=buf; 864 const TCHAR *pmsg=buf;
519 ReportEvent(h,EVENTLOG_ERROR_TYPE,0,0,0,1,0,&pmsg,0); 865 ReportEvent(h,EVENTLOG_ERROR_TYPE,0,0,0,1,0,&pmsg,0);
@@ -539,7 +885,13 @@ void OpenSSLDie(const char *file,int line,const char *assertion)
539 OPENSSL_showfatal( 885 OPENSSL_showfatal(
540 "%s(%d): OpenSSL internal error, assertion failed: %s\n", 886 "%s(%d): OpenSSL internal error, assertion failed: %s\n",
541 file,line,assertion); 887 file,line,assertion);
888#if !defined(_WIN32) || defined(__CYGWIN__)
542 abort(); 889 abort();
890#else
891 /* Win32 abort() customarily shows a dialog, but we just did that... */
892 raise(SIGABRT);
893 _exit(3);
894#endif
543 } 895 }
544 896
545void *OPENSSL_stderr(void) { return stderr; } 897void *OPENSSL_stderr(void) { return stderr; }
diff --git a/src/lib/libssl/src/crypto/crypto-lib.com b/src/lib/libssl/src/crypto/crypto-lib.com
index e72af90822..a4b6635091 100644
--- a/src/lib/libssl/src/crypto/crypto-lib.com
+++ b/src/lib/libssl/src/crypto/crypto-lib.com
@@ -6,10 +6,11 @@ $! A-Com Computing, Inc.
6$! byer@mail.all-net.net 6$! byer@mail.all-net.net
7$! 7$!
8$! Changes by Richard Levitte <richard@levitte.org> 8$! Changes by Richard Levitte <richard@levitte.org>
9$! Zoltan Arpadffy <arpadffy@polarhome.com>
9$! 10$!
10$! This command files compiles and creates the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" 11$! This command files compiles and creates the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB"
11$! library for OpenSSL. The "xxx" denotes the machine architecture of AXP 12$! library for OpenSSL. The "xxx" denotes the machine architecture, ALPHA,
12$! or VAX. 13$! IA64 or VAX.
13$! 14$!
14$! It was re-written so it would try to determine what "C" compiler to use 15$! It was re-written so it would try to determine what "C" compiler to use
15$! or you can specify which "C" compiler to use. 16$! or you can specify which "C" compiler to use.
@@ -17,28 +18,28 @@ $!
17$! Specify the following as P1 to build just that part or ALL to just 18$! Specify the following as P1 to build just that part or ALL to just
18$! build everything. 19$! build everything.
19$! 20$!
20$! LIBRARY To just compile the [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library. 21$! LIBRARY To just compile the [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library.
21$! APPS To just compile the [.xxx.EXE.CRYPTO]*.EXE 22$! APPS To just compile the [.xxx.EXE.CRYPTO]*.EXE
22$! ALL To do both LIBRARY and APPS 23$! ALL To do both LIBRARY and APPS
23$! 24$!
24$! Specify DEBUG or NODEBUG as P2 to compile with or without debugger 25$! Specify DEBUG or NODEBUG as P2 to compile with or without debugger
25$! information. 26$! information.
26$! 27$!
27$! Specify which compiler at P3 to try to compile under. 28$! Specify which compiler at P3 to try to compile under.
28$! 29$!
29$! VAXC For VAX C. 30$! VAXC For VAX C.
30$! DECC For DEC C. 31$! DECC For DEC C.
31$! GNUC For GNU C. 32$! GNUC For GNU C.
32$! 33$!
33$! If you don't speficy a compiler, it will try to determine which 34$! If you don't specify a compiler, it will try to determine which
34$! "C" compiler to use. 35$! "C" compiler to use.
35$! 36$!
36$! P4, if defined, sets a TCP/IP library to use, through one of the following 37$! P4, if defined, sets a TCP/IP library to use, through one of the following
37$! keywords: 38$! keywords:
38$! 39$!
39$! UCX for UCX 40$! UCX For UCX
40$! TCPIP for TCPIP (post UCX) 41$! TCPIP For TCPIP (post UCX)
41$! SOCKETSHR for SOCKETSHR+NETLIB 42$! SOCKETSHR For SOCKETSHR+NETLIB
42$! 43$!
43$! P5, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up) 44$! P5, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
44$! 45$!
@@ -54,36 +55,49 @@ $ TCPIP_LIB = ""
54$! 55$!
55$! Check Which Architecture We Are Using. 56$! Check Which Architecture We Are Using.
56$! 57$!
57$ IF (F$GETSYI("CPU").GE.128) 58$ IF (F$GETSYI("CPU").LT.128)
58$ THEN 59$ THEN
59$! 60$!
60$! The Architecture Is AXP 61$! The Architecture Is VAX
61$! 62$!
62$ ARCH := AXP 63$ ARCH = "VAX"
63$! 64$!
64$! Else... 65$! Else...
65$! 66$!
66$ ELSE 67$ ELSE
67$! 68$!
68$! The Architecture Is VAX. 69$! The Architecture Is Alpha, IA64 or whatever comes in the future.
69$! 70$!
70$ ARCH := VAX 71$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
72$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
71$! 73$!
72$! End The Architecture Check. 74$! End The Architecture Check.
73$! 75$!
74$ ENDIF 76$ ENDIF
75$! 77$!
76$! Define The Different Encryption Types. 78$! Define The Different Encryption Types.
79$! NOTE: Some might think this list ugly. However, it's made this way to
80$! reflect the SDIRS variable in [-]Makefile.org as closely as possible,
81$! thereby making it fairly easy to verify that the lists are the same.
77$! 82$!
83$ ET_WHIRLPOOL = "WHRLPOOL"
84$ IF ARCH .EQS. "VAX" THEN ET_WHIRLPOOL = ""
78$ ENCRYPT_TYPES = "Basic,"+ - 85$ ENCRYPT_TYPES = "Basic,"+ -
79 "OBJECTS,"+ - 86 "OBJECTS,"+ -
80 "MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,"+ - 87 "MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,"+ET_WHIRLPOOL+","+ -
81 "DES,RC2,RC4,RC5,IDEA,BF,CAST,CAMELLIA,SEED,"+ - 88 "DES,AES,RC2,RC4,RC5,IDEA,BF,CAST,CAMELLIA,SEED,MODES,"+ -
82 "BN,EC,RSA,DSA,ECDSA,DH,ECDH,DSO,ENGINE,AES,"+ - 89 "BN,EC,RSA,DSA,ECDSA,DH,ECDH,DSO,ENGINE,"+ -
83 "BUFFER,BIO,STACK,LHASH,RAND,ERR,"+ - 90 "BUFFER,BIO,STACK,LHASH,RAND,ERR,"+ -
84 "EVP,EVP_2,ASN1,ASN1_2,PEM,X509,X509V3,"+ - 91 "EVP,EVP_2,EVP_3,ASN1,ASN1_2,PEM,X509,X509V3,"+ -
85 "CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,UI,KRB5,"+ - 92 "CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,UI,KRB5,"+ -
86 "STORE,CMS,PQUEUE,JPAKE" 93 "STORE,CMS,PQUEUE,TS,JPAKE"
94$! Define The OBJ Directory.
95$!
96$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.CRYPTO]
97$!
98$! Define The EXE Directory.
99$!
100$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]
87$! 101$!
88$! Check To Make Sure We Have Valid Command Line Parameters. 102$! Check To Make Sure We Have Valid Command Line Parameters.
89$! 103$!
@@ -97,9 +111,6 @@ $! Tell The User What Kind of Machine We Run On.
97$! 111$!
98$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine." 112$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
99$! 113$!
100$! Define The OBJ Directory.
101$!
102$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.CRYPTO]
103$! 114$!
104$! Check To See If The Architecture Specific OBJ Directory Exists. 115$! Check To See If The Architecture Specific OBJ Directory Exists.
105$! 116$!
@@ -114,10 +125,6 @@ $! End The Architecture Specific OBJ Directory Check.
114$! 125$!
115$ ENDIF 126$ ENDIF
116$! 127$!
117$! Define The EXE Directory.
118$!
119$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.CRYPTO]
120$!
121$! Check To See If The Architecture Specific Directory Exists. 128$! Check To See If The Architecture Specific Directory Exists.
122$! 129$!
123$ IF (F$PARSE(EXE_DIR).EQS."") 130$ IF (F$PARSE(EXE_DIR).EQS."")
@@ -161,15 +168,16 @@ $!
161$ APPS_DES = "DES/DES,CBC3_ENC" 168$ APPS_DES = "DES/DES,CBC3_ENC"
162$ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE" 169$ APPS_PKCS7 = "ENC/ENC;DEC/DEC;SIGN/SIGN;VERIFY/VERIFY,EXAMPLE"
163$ 170$
164$ LIB_ = "cryptlib,dyn_lck,mem,mem_clr,mem_dbg,cversion,ex_data,tmdiff,cpt_err,ebcdic,uid,o_time,o_str,o_dir,o_init,fips_err" 171$ LIB_ = "cryptlib,mem,mem_clr,mem_dbg,cversion,ex_data,cpt_err,ebcdic,uid,o_time,o_str,o_dir"
165$ LIB_MD2 = "md2_dgst,md2_one" 172$ LIB_MD2 = "md2_dgst,md2_one"
166$ LIB_MD4 = "md4_dgst,md4_one" 173$ LIB_MD4 = "md4_dgst,md4_one"
167$ LIB_MD5 = "md5_dgst,md5_one" 174$ LIB_MD5 = "md5_dgst,md5_one"
168$ LIB_SHA = "sha_dgst,sha1dgst,sha_one,sha1_one,sha256,sha512" 175$ LIB_SHA = "sha_dgst,sha1dgst,sha_one,sha1_one,sha256,sha512"
169$ LIB_MDC2 = "mdc2dgst,mdc2_one" 176$ LIB_MDC2 = "mdc2dgst,mdc2_one"
170$ LIB_HMAC = "hmac" 177$ LIB_HMAC = "hmac,hm_ameth,hm_pmeth"
171$ LIB_RIPEMD = "rmd_dgst,rmd_one" 178$ LIB_RIPEMD = "rmd_dgst,rmd_one"
172$ LIB_DES = "des_lib,set_key,ecb_enc,cbc_enc,"+ - 179$ LIB_WHRLPOOL = "wp_dgst,wp_block"
180$ LIB_DES = "set_key,ecb_enc,cbc_enc,"+ -
173 "ecb3_enc,cfb64enc,cfb64ede,cfb_enc,ofb64ede,"+ - 181 "ecb3_enc,cfb64enc,cfb64ede,cfb_enc,ofb64ede,"+ -
174 "enc_read,enc_writ,ofb64enc,"+ - 182 "enc_read,enc_writ,ofb64enc,"+ -
175 "ofb_enc,str2key,pcbc_enc,qud_cksm,rand_key,"+ - 183 "ofb_enc,str2key,pcbc_enc,qud_cksm,rand_key,"+ -
@@ -184,35 +192,39 @@ $ LIB_BF = "bf_skey,bf_ecb,bf_enc,bf_cfb64,bf_ofb64"
184$ LIB_CAST = "c_skey,c_ecb,c_enc,c_cfb64,c_ofb64" 192$ LIB_CAST = "c_skey,c_ecb,c_enc,c_cfb64,c_ofb64"
185$ LIB_CAMELLIA = "camellia,cmll_misc,cmll_ecb,cmll_cbc,cmll_ofb,"+ - 193$ LIB_CAMELLIA = "camellia,cmll_misc,cmll_ecb,cmll_cbc,cmll_ofb,"+ -
186 "cmll_cfb,cmll_ctr" 194 "cmll_cfb,cmll_ctr"
187$ LIB_SEED = "seed,seed_cbc,seed_ecb,seed_cfb,seed_ofb" 195$ LIB_SEED = "seed,seed_ecb,seed_cbc,seed_cfb,seed_ofb"
196$ LIB_MODES = "cbc128,ctr128,cfb128,ofb128"
188$ LIB_BN_ASM = "[.asm]vms.mar,vms-helper" 197$ LIB_BN_ASM = "[.asm]vms.mar,vms-helper"
189$ IF F$TRNLNM("OPENSSL_NO_ASM").OR.ARCH.EQS."AXP" THEN LIB_BN_ASM = "bn_asm" 198$ IF F$TRNLNM("OPENSSL_NO_ASM") .OR. ARCH .NES. "VAX" THEN -
199 LIB_BN_ASM = "bn_asm"
190$ LIB_BN = "bn_add,bn_div,bn_exp,bn_lib,bn_ctx,bn_mul,bn_mod,"+ - 200$ LIB_BN = "bn_add,bn_div,bn_exp,bn_lib,bn_ctx,bn_mul,bn_mod,"+ -
191 "bn_print,bn_rand,bn_shift,bn_word,bn_blind,"+ - 201 "bn_print,bn_rand,bn_shift,bn_word,bn_blind,"+ -
192 "bn_kron,bn_sqrt,bn_gcd,bn_prime,bn_err,bn_sqr,"+LIB_BN_ASM+","+ - 202 "bn_kron,bn_sqrt,bn_gcd,bn_prime,bn_err,bn_sqr,"+LIB_BN_ASM+","+ -
193 "bn_recp,bn_mont,bn_mpi,bn_exp2,bn_gf2m,bn_nist,"+ - 203 "bn_recp,bn_mont,bn_mpi,bn_exp2,bn_gf2m,bn_nist,"+ -
194 "bn_depr,bn_x931p,bn_const,bn_opt" 204 "bn_depr,bn_const"
195$ LIB_EC = "ec_lib,ecp_smpl,ecp_mont,ecp_nist,ec_cvt,ec_mult,"+ - 205$ LIB_EC = "ec_lib,ecp_smpl,ecp_mont,ecp_nist,ec_cvt,ec_mult,"+ -
196 "ec_err,ec_curve,ec_check,ec_print,ec_asn1,ec_key,"+ - 206 "ec_err,ec_curve,ec_check,ec_print,ec_asn1,ec_key,"+ -
197 "ec2_smpl,ec2_mult" 207 "ec2_smpl,ec2_mult,ec_ameth,ec_pmeth,eck_prn"
198$ LIB_RSA = "rsa_eay,rsa_gen,rsa_lib,rsa_sign,rsa_saos,rsa_err,"+ - 208$ LIB_RSA = "rsa_eay,rsa_gen,rsa_lib,rsa_sign,rsa_saos,rsa_err,"+ -
199 "rsa_pk1,rsa_ssl,rsa_none,rsa_oaep,rsa_chk,rsa_null,"+ - 209 "rsa_pk1,rsa_ssl,rsa_none,rsa_oaep,rsa_chk,rsa_null,"+ -
200 "rsa_pss,rsa_x931,rsa_x931g,rsa_asn1,rsa_depr,rsa_eng" 210 "rsa_pss,rsa_x931,rsa_asn1,rsa_depr,rsa_ameth,rsa_prn,"+ -
211 "rsa_pmeth"
201$ LIB_DSA = "dsa_gen,dsa_key,dsa_lib,dsa_asn1,dsa_vrf,dsa_sign,"+ - 212$ LIB_DSA = "dsa_gen,dsa_key,dsa_lib,dsa_asn1,dsa_vrf,dsa_sign,"+ -
202 "dsa_err,dsa_ossl,dsa_depr,dsa_utl" 213 "dsa_err,dsa_ossl,dsa_depr,dsa_ameth,dsa_pmeth,dsa_prn"
203$ LIB_ECDSA = "ecs_lib,ecs_asn1,ecs_ossl,ecs_sign,ecs_vrf,ecs_err" 214$ LIB_ECDSA = "ecs_lib,ecs_asn1,ecs_ossl,ecs_sign,ecs_vrf,ecs_err"
204$ LIB_DH = "dh_asn1,dh_gen,dh_key,dh_lib,dh_check,dh_err,dh_depr" 215$ LIB_DH = "dh_asn1,dh_gen,dh_key,dh_lib,dh_check,dh_err,dh_depr,"+ -
216 "dh_ameth,dh_pmeth,dh_prn"
205$ LIB_ECDH = "ech_lib,ech_ossl,ech_key,ech_err" 217$ LIB_ECDH = "ech_lib,ech_ossl,ech_key,ech_err"
206$ LIB_DSO = "dso_dl,dso_dlfcn,dso_err,dso_lib,dso_null,"+ - 218$ LIB_DSO = "dso_dl,dso_dlfcn,dso_err,dso_lib,dso_null,"+ -
207 "dso_openssl,dso_win32,dso_vms" 219 "dso_openssl,dso_win32,dso_vms,dso_beos"
208$ LIB_ENGINE = "eng_err,eng_lib,eng_list,eng_init,eng_ctrl,"+ - 220$ LIB_ENGINE = "eng_err,eng_lib,eng_list,eng_init,eng_ctrl,"+ -
209 "eng_table,eng_pkey,eng_fat,eng_all,"+ - 221 "eng_table,eng_pkey,eng_fat,eng_all,"+ -
210 "tb_rsa,tb_dsa,tb_ecdsa,tb_dh,tb_ecdh,tb_rand,tb_store,"+ - 222 "tb_rsa,tb_dsa,tb_ecdsa,tb_dh,tb_ecdh,tb_rand,tb_store,"+ -
211 "tb_cipher,tb_digest,"+ - 223 "tb_cipher,tb_digest,tb_pkmeth,tb_asnmth,"+ -
212 "eng_openssl,eng_dyn,eng_cnf,eng_cryptodev,eng_padlock" 224 "eng_openssl,eng_dyn,eng_cnf,eng_cryptodev"
213$ LIB_AES = "aes_core,aes_misc,aes_ecb,aes_cbc,aes_cfb,aes_ofb,"+ - 225$ LIB_AES = "aes_core,aes_misc,aes_ecb,aes_cbc,aes_cfb,aes_ofb,aes_ctr,"+ -
214 "aes_ctr,aes_ige,aes_wrap" 226 "aes_ige,aes_wrap"
215$ LIB_BUFFER = "buffer,buf_str,buf_err" 227$ LIB_BUFFER = "buffer,buf_err"
216$ LIB_BIO = "bio_lib,bio_cb,bio_err,"+ - 228$ LIB_BIO = "bio_lib,bio_cb,bio_err,"+ -
217 "bss_mem,bss_null,bss_fd,"+ - 229 "bss_mem,bss_null,bss_fd,"+ -
218 "bss_file,bss_sock,bss_conn,"+ - 230 "bss_file,bss_sock,bss_conn,"+ -
@@ -224,33 +236,34 @@ $ LIB_STACK = "stack"
224$ LIB_LHASH = "lhash,lh_stats" 236$ LIB_LHASH = "lhash,lh_stats"
225$ LIB_RAND = "md_rand,randfile,rand_lib,rand_err,rand_egd,"+ - 237$ LIB_RAND = "md_rand,randfile,rand_lib,rand_err,rand_egd,"+ -
226 "rand_vms" 238 "rand_vms"
227$ LIB_ERR = "err,err_def,err_all,err_prn,err_str,err_bio" 239$ LIB_ERR = "err,err_all,err_prn"
228$ LIB_OBJECTS = "o_names,obj_dat,obj_lib,obj_err" 240$ LIB_OBJECTS = "o_names,obj_dat,obj_lib,obj_err,obj_xref"
229$ LIB_EVP = "encode,digest,dig_eng,evp_enc,evp_key,evp_acnf,evp_cnf,"+ - 241$ LIB_EVP = "encode,digest,evp_enc,evp_key,evp_acnf,"+ -
230 "e_des,e_bf,e_idea,e_des3,e_camellia,"+ - 242 "e_des,e_bf,e_idea,e_des3,e_camellia,"+ -
231 "e_rc4,e_aes,names,e_seed,"+ - 243 "e_rc4,e_aes,names,e_seed,"+ -
232 "e_xcbc_d,e_rc2,e_cast,e_rc5,enc_min" 244 "e_xcbc_d,e_rc2,e_cast,e_rc5"
233$ LIB_EVP_2 = "m_null,m_md2,m_md4,m_md5,m_sha,m_sha1," + - 245$ LIB_EVP_2 = "m_null,m_md2,m_md4,m_md5,m_sha,m_sha1,m_wp," + -
234 "m_dss,m_dss1,m_mdc2,m_ripemd,m_ecdsa,"+ - 246 "m_dss,m_dss1,m_mdc2,m_ripemd,m_ecdsa,"+ -
235 "p_open,p_seal,p_sign,p_verify,p_lib,p_enc,p_dec,"+ - 247 "p_open,p_seal,p_sign,p_verify,p_lib,p_enc,p_dec,"+ -
236 "bio_md,bio_b64,bio_enc,evp_err,e_null,"+ - 248 "bio_md,bio_b64,bio_enc,evp_err,e_null,"+ -
237 "c_all,c_allc,c_alld,evp_lib,bio_ok,"+- 249 "c_all,c_allc,c_alld,evp_lib,bio_ok,"+-
238 "evp_pkey,evp_pbe,p5_crpt,p5_crpt2" 250 "evp_pkey,evp_pbe,p5_crpt,p5_crpt2"
239$ LIB_EVP_3 = "e_old" 251$ LIB_EVP_3 = "e_old,pmeth_lib,pmeth_fn,pmeth_gn,m_sigver"
240$ LIB_ASN1 = "a_object,a_bitstr,a_utctm,a_gentm,a_time,a_int,a_octet,"+ - 252$ LIB_ASN1 = "a_object,a_bitstr,a_utctm,a_gentm,a_time,a_int,a_octet,"+ -
241 "a_print,a_type,a_set,a_dup,a_d2i_fp,a_i2d_fp,"+ - 253 "a_print,a_type,a_set,a_dup,a_d2i_fp,a_i2d_fp,"+ -
242 "a_enum,a_utf8,a_sign,a_digest,a_verify,a_mbstr,a_strex,"+ - 254 "a_enum,a_utf8,a_sign,a_digest,a_verify,a_mbstr,a_strex,"+ -
243 "x_algor,x_val,x_pubkey,x_sig,x_req,x_attrib,x_bignum,"+ - 255 "x_algor,x_val,x_pubkey,x_sig,x_req,x_attrib,x_bignum,"+ -
244 "x_long,x_name,x_x509,x_x509a,x_crl,x_info,x_spki,nsseq,"+ - 256 "x_long,x_name,x_x509,x_x509a,x_crl,x_info,x_spki,nsseq,"+ -
245 "d2i_pu,d2i_pr,i2d_pu,i2d_pr" 257 "x_nx509,d2i_pu,d2i_pr,i2d_pu,i2d_pr"
246$ LIB_ASN1_2 = "t_req,t_x509,t_x509a,t_crl,t_pkey,t_spki,t_bitst,"+ - 258$ LIB_ASN1_2 = "t_req,t_x509,t_x509a,t_crl,t_pkey,t_spki,t_bitst,"+ -
247 "tasn_new,tasn_fre,tasn_enc,tasn_dec,tasn_utl,tasn_typ,"+ - 259 "tasn_new,tasn_fre,tasn_enc,tasn_dec,tasn_utl,tasn_typ,"+ -
260 "tasn_prn,ameth_lib,"+ -
248 "f_int,f_string,n_pkey,"+ - 261 "f_int,f_string,n_pkey,"+ -
249 "f_enum,a_hdr,x_pkey,a_bool,x_exten,asn_mime,"+ - 262 "f_enum,x_pkey,a_bool,x_exten,bio_asn1,bio_ndef,asn_mime,"+ -
250 "asn1_gen,asn1_par,asn1_lib,asn1_err,a_meth,a_bytes,a_strnid,"+ - 263 "asn1_gen,asn1_par,asn1_lib,asn1_err,a_bytes,a_strnid,"+ -
251 "evp_asn1,asn_pack,p5_pbe,p5_pbev2,p8_pkey,asn_moid" 264 "evp_asn1,asn_pack,p5_pbe,p5_pbev2,p8_pkey,asn_moid"
252$ LIB_PEM = "pem_sign,pem_seal,pem_info,pem_lib,pem_all,pem_err,"+ - 265$ LIB_PEM = "pem_sign,pem_seal,pem_info,pem_lib,pem_all,pem_err,"+ -
253 "pem_x509,pem_xaux,pem_oth,pem_pk8,pem_pkey" 266 "pem_x509,pem_xaux,pem_oth,pem_pk8,pem_pkey,pvkfmt"
254$ LIB_X509 = "x509_def,x509_d2,x509_r2x,x509_cmp,"+ - 267$ LIB_X509 = "x509_def,x509_d2,x509_r2x,x509_cmp,"+ -
255 "x509_obj,x509_req,x509spki,x509_vfy,"+ - 268 "x509_obj,x509_req,x509spki,x509_vfy,"+ -
256 "x509_set,x509cset,x509rset,x509_err,"+ - 269 "x509_set,x509cset,x509rset,x509_err,"+ -
@@ -266,7 +279,7 @@ $ LIB_X509V3 = "v3_bcons,v3_bitst,v3_conf,v3_extku,v3_ia5,v3_lib,"+ -
266$ LIB_CONF = "conf_err,conf_lib,conf_api,conf_def,conf_mod,conf_mall,conf_sap" 279$ LIB_CONF = "conf_err,conf_lib,conf_api,conf_def,conf_mod,conf_mall,conf_sap"
267$ LIB_TXT_DB = "txt_db" 280$ LIB_TXT_DB = "txt_db"
268$ LIB_PKCS7 = "pk7_asn1,pk7_lib,pkcs7err,pk7_doit,pk7_smime,pk7_attr,"+ - 281$ LIB_PKCS7 = "pk7_asn1,pk7_lib,pkcs7err,pk7_doit,pk7_smime,pk7_attr,"+ -
269 "pk7_mime" 282 "pk7_mime,bio_pk7"
270$ LIB_PKCS12 = "p12_add,p12_asn,p12_attr,p12_crpt,p12_crt,p12_decr,"+ - 283$ LIB_PKCS12 = "p12_add,p12_asn,p12_attr,p12_crpt,p12_crt,p12_decr,"+ -
271 "p12_init,p12_key,p12_kiss,p12_mutl,"+ - 284 "p12_init,p12_key,p12_kiss,p12_mutl,"+ -
272 "p12_utl,p12_npas,pk12err,p12_p8d,p12_p8e" 285 "p12_utl,p12_npas,pk12err,p12_p8d,p12_p8e"
@@ -281,6 +294,9 @@ $ LIB_STORE = "str_err,str_lib,str_meth,str_mem"
281$ LIB_CMS = "cms_lib,cms_asn1,cms_att,cms_io,cms_smime,cms_err,"+ - 294$ LIB_CMS = "cms_lib,cms_asn1,cms_att,cms_io,cms_smime,cms_err,"+ -
282 "cms_sd,cms_dd,cms_cd,cms_env,cms_enc,cms_ess" 295 "cms_sd,cms_dd,cms_cd,cms_env,cms_enc,cms_ess"
283$ LIB_PQUEUE = "pqueue" 296$ LIB_PQUEUE = "pqueue"
297$ LIB_TS = "ts_err,ts_req_utils,ts_req_print,ts_rsp_utils,ts_rsp_print,"+ -
298 "ts_rsp_sign,ts_rsp_verify,ts_verify_ctx,ts_lib,ts_conf,"+ -
299 "ts_asn1"
284$ LIB_JPAKE = "jpake,jpake_err" 300$ LIB_JPAKE = "jpake,jpake_err"
285$! 301$!
286$! Setup exceptional compilations 302$! Setup exceptional compilations
@@ -291,7 +307,7 @@ $ ! Disable the DOLLARID warning
291$ COMPILEWITH_CC4 = ",a_utctm,bss_log,o_time,o_dir" 307$ COMPILEWITH_CC4 = ",a_utctm,bss_log,o_time,o_dir"
292$ ! Disable disjoint optimization 308$ ! Disable disjoint optimization
293$ COMPILEWITH_CC5 = ",md2_dgst,md4_dgst,md5_dgst,mdc2dgst," + - 309$ COMPILEWITH_CC5 = ",md2_dgst,md4_dgst,md5_dgst,mdc2dgst," + -
294 "sha_dgst,sha1dgst,rmd_dgst,bf_enc," 310 "seed,sha_dgst,sha1dgst,rmd_dgst,bf_enc,"
295$ ! Disable the MIXLINKAGE warning 311$ ! Disable the MIXLINKAGE warning
296$ COMPILEWITH_CC6 = ",enc_read,set_key," 312$ COMPILEWITH_CC6 = ",enc_read,set_key,"
297$! 313$!
@@ -334,11 +350,11 @@ $! Create The Library and Apps Module Names.
334$! 350$!
335$ LIB_MODULE = "LIB_" + MODULE_NAME 351$ LIB_MODULE = "LIB_" + MODULE_NAME
336$ APPS_MODULE = "APPS_" + MODULE_NAME 352$ APPS_MODULE = "APPS_" + MODULE_NAME
337$ IF (MODULE_NAME.EQS."ASN1_2") 353$ IF (F$EXTRACT(0,5,MODULE_NAME).EQS."ASN1_")
338$ THEN 354$ THEN
339$ MODULE_NAME = "ASN1" 355$ MODULE_NAME = "ASN1"
340$ ENDIF 356$ ENDIF
341$ IF (MODULE_NAME.EQS."EVP_2") 357$ IF (F$EXTRACT(0,4,MODULE_NAME).EQS."EVP_")
342$ THEN 358$ THEN
343$ MODULE_NAME = "EVP" 359$ MODULE_NAME = "EVP"
344$ ENDIF 360$ ENDIF
@@ -353,7 +369,7 @@ $!
353$ IF F$TYPE('LIB_MODULE') .EQS. "" 369$ IF F$TYPE('LIB_MODULE') .EQS. ""
354$ THEN 370$ THEN
355$ WRITE SYS$ERROR "" 371$ WRITE SYS$ERROR ""
356$ WRITE SYS$ERROR "The module ",MODULE_NAME," does not exist. Continuing..." 372$ WRITE SYS$ERROR "The module ",MODULE_NAME1," does not exist. Continuing..."
357$ WRITE SYS$ERROR "" 373$ WRITE SYS$ERROR ""
358$ GOTO MODULE_NEXT 374$ GOTO MODULE_NEXT
359$ ENDIF 375$ ENDIF
@@ -694,7 +710,7 @@ $!
694$ IF (F$SEARCH(OPT_FILE).EQS."") 710$ IF (F$SEARCH(OPT_FILE).EQS."")
695$ THEN 711$ THEN
696$! 712$!
697$! Figure Out If We Need An AXP Or A VAX Linker Option File. 713$! Figure Out If We Need A non-VAX Or A VAX Linker Option File.
698$! 714$!
699$ IF ARCH .EQS. "VAX" 715$ IF ARCH .EQS. "VAX"
700$ THEN 716$ THEN
@@ -714,19 +730,19 @@ $! Else...
714$! 730$!
715$ ELSE 731$ ELSE
716$! 732$!
717$! Create The AXP Linker Option File. 733$! Create The non-VAX Linker Option File.
718$! 734$!
719$ CREATE 'OPT_FILE' 735$ CREATE 'OPT_FILE'
720$DECK 736$DECK
721! 737!
722! Default System Options File For AXP To Link Agianst 738! Default System Options File For non-VAX To Link Agianst
723! The Sharable C Runtime Library. 739! The Sharable C Runtime Library.
724! 740!
725SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE 741SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
726SYS$SHARE:CMA$OPEN_RTL/SHARE 742SYS$SHARE:CMA$OPEN_RTL/SHARE
727$EOD 743$EOD
728$! 744$!
729$! End The VAX/AXP DEC C Option File Check. 745$! End The DEC C Option File Check.
730$! 746$!
731$ ENDIF 747$ ENDIF
732$! 748$!
@@ -763,12 +779,12 @@ $! Else...
763$! 779$!
764$ ELSE 780$ ELSE
765$! 781$!
766$! Else, Check To See If P1 Has A Valid Arguement. 782$! Else, Check To See If P1 Has A Valid Argument.
767$! 783$!
768$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."APPS") 784$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."APPS")
769$ THEN 785$ THEN
770$! 786$!
771$! A Valid Arguement. 787$! A Valid Argument.
772$! 788$!
773$ BUILDALL = P1 789$ BUILDALL = P1
774$! 790$!
@@ -787,15 +803,16 @@ $ WRITE SYS$OUTPUT " APPS : To Compile Just The [.xxx.EXE.CRYPTO]*.E
787$ WRITE SYS$OUTPUT "" 803$ WRITE SYS$OUTPUT ""
788$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:" 804$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
789$ WRITE SYS$OUTPUT "" 805$ WRITE SYS$OUTPUT ""
790$ WRITE SYS$OUTPUT " AXP : Alpha Architecture." 806$ WRITE SYS$OUTPUT " ALPHA : Alpha Architecture."
791$ WRITE SYS$OUTPUT " VAX : VAX Architecture." 807$ WRITE SYS$OUTPUT " IA64 : IA64 Architecture."
808$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
792$ WRITE SYS$OUTPUT "" 809$ WRITE SYS$OUTPUT ""
793$! 810$!
794$! Time To EXIT. 811$! Time To EXIT.
795$! 812$!
796$ EXIT 813$ EXIT
797$! 814$!
798$! End The Valid Arguement Check. 815$! End The Valid Argument Check.
799$! 816$!
800$ ENDIF 817$ ENDIF
801$! 818$!
@@ -848,7 +865,7 @@ $! Time To EXIT.
848$! 865$!
849$ EXIT 866$ EXIT
850$! 867$!
851$! End The Valid Arguement Check. 868$! End The Valid Argument Check.
852$! 869$!
853$ ENDIF 870$ ENDIF
854$! 871$!
@@ -913,7 +930,7 @@ $ ELSE
913$! 930$!
914$! Check To See If We Have VAXC Or DECC. 931$! Check To See If We Have VAXC Or DECC.
915$! 932$!
916$ IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."") 933$ IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
917$ THEN 934$ THEN
918$! 935$!
919$! Looks Like DECC, Set To Use DECC. 936$! Looks Like DECC, Set To Use DECC.
@@ -1019,12 +1036,12 @@ $ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
1019 THEN CC = "CC/DECC" 1036 THEN CC = "CC/DECC"
1020$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + - 1037$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
1021 "/NOLIST/PREFIX=ALL" + - 1038 "/NOLIST/PREFIX=ALL" + -
1022 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP])" + - 1039 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[._''ARCH'],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP],SYS$DISK:[.ASN1])" + -
1023 CCEXTRAFLAGS 1040 CCEXTRAFLAGS
1024$! 1041$!
1025$! Define The Linker Options File Name. 1042$! Define The Linker Options File Name.
1026$! 1043$!
1027$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT" 1044$ OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
1028$! 1045$!
1029$! End DECC Check. 1046$! End DECC Check.
1030$! 1047$!
@@ -1046,14 +1063,14 @@ $!
1046$! Compile Using VAXC. 1063$! Compile Using VAXC.
1047$! 1064$!
1048$ CC = "CC" 1065$ CC = "CC"
1049$ IF ARCH.EQS."AXP" 1066$ IF ARCH.NES."VAX"
1050$ THEN 1067$ THEN
1051$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!" 1068$ WRITE SYS$OUTPUT "There is no VAX C on ''ARCH'!"
1052$ EXIT 1069$ EXIT
1053$ ENDIF 1070$ ENDIF
1054$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC" 1071$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
1055$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + - 1072$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
1056 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS])" + - 1073 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[._''ARCH'],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP],SYS$DISK:[.ASN1])" + -
1057 CCEXTRAFLAGS 1074 CCEXTRAFLAGS
1058$ CCDEFS = """VAXC""," + CCDEFS 1075$ CCDEFS = """VAXC""," + CCDEFS
1059$! 1076$!
@@ -1063,7 +1080,7 @@ $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
1063$! 1080$!
1064$! Define The Linker Options File Name. 1081$! Define The Linker Options File Name.
1065$! 1082$!
1066$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT" 1083$ OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
1067$! 1084$!
1068$! End VAXC Check 1085$! End VAXC Check
1069$! 1086$!
@@ -1085,12 +1102,12 @@ $!
1085$! Use GNU C... 1102$! Use GNU C...
1086$! 1103$!
1087$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + - 1104$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
1088 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS])" + - 1105 "/INCLUDE=(SYS$DISK:[],SYS$DISK:[._''ARCH'],SYS$DISK:[-],SYS$DISK:[.ENGINE.VENDOR_DEFNS],SYS$DISK:[.EVP],SYS$DISK:[.ASN1])" + -
1089 CCEXTRAFLAGS 1106 CCEXTRAFLAGS
1090$! 1107$!
1091$! Define The Linker Options File Name. 1108$! Define The Linker Options File Name.
1092$! 1109$!
1093$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT" 1110$ OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
1094$! 1111$!
1095$! End The GNU C Check. 1112$! End The GNU C Check.
1096$! 1113$!
@@ -1135,7 +1152,7 @@ $! Show user the result
1135$! 1152$!
1136$ WRITE/SYMBOL SYS$OUTPUT "Main C Compiling Command: ",CC 1153$ WRITE/SYMBOL SYS$OUTPUT "Main C Compiling Command: ",CC
1137$! 1154$!
1138$! Else The User Entered An Invalid Arguement. 1155$! Else The User Entered An Invalid Argument.
1139$! 1156$!
1140$ ELSE 1157$ ELSE
1141$! 1158$!
@@ -1153,14 +1170,14 @@ $! Time To EXIT.
1153$! 1170$!
1154$ EXIT 1171$ EXIT
1155$! 1172$!
1156$! End The Valid Arguement Check. 1173$! End The Valid Argument Check.
1157$! 1174$!
1158$ ENDIF 1175$ ENDIF
1159$! 1176$!
1160$! Build a MACRO command for the architecture at hand 1177$! Build a MACRO command for the architecture at hand
1161$! 1178$!
1162$ IF ARCH .EQS. "VAX" THEN MACRO = "MACRO/''DEBUGGER'" 1179$ IF ARCH .EQS. "VAX" THEN MACRO = "MACRO/''DEBUGGER'"
1163$ IF ARCH .EQS. "AXP" THEN MACRO = "MACRO/MIGRATION/''DEBUGGER'/''MACRO_OPTIMIZE'" 1180$ IF ARCH .NES. "VAX" THEN MACRO = "MACRO/MIGRATION/''DEBUGGER'/''MACRO_OPTIMIZE'"
1164$! 1181$!
1165$! Show user the result 1182$! Show user the result
1166$! 1183$!
@@ -1248,7 +1265,7 @@ $! Print info
1248$! 1265$!
1249$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB 1266$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
1250$! 1267$!
1251$! Else The User Entered An Invalid Arguement. 1268$! Else The User Entered An Invalid Argument.
1252$! 1269$!
1253$ ELSE 1270$ ELSE
1254$! 1271$!
diff --git a/src/lib/libssl/src/crypto/crypto.h b/src/lib/libssl/src/crypto/crypto.h
index 0e4fb0723c..b0360cec51 100644
--- a/src/lib/libssl/src/crypto/crypto.h
+++ b/src/lib/libssl/src/crypto/crypto.h
@@ -1,6 +1,6 @@
1/* crypto/crypto.h */ 1/* crypto/crypto.h */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -219,13 +219,9 @@ typedef struct openssl_item_st
219#define CRYPTO_LOCK_EC_PRE_COMP 36 219#define CRYPTO_LOCK_EC_PRE_COMP 36
220#define CRYPTO_LOCK_STORE 37 220#define CRYPTO_LOCK_STORE 37
221#define CRYPTO_LOCK_COMP 38 221#define CRYPTO_LOCK_COMP 38
222#ifndef OPENSSL_FIPS
223#define CRYPTO_NUM_LOCKS 39
224#else
225#define CRYPTO_LOCK_FIPS 39 222#define CRYPTO_LOCK_FIPS 39
226#define CRYPTO_LOCK_FIPS2 40 223#define CRYPTO_LOCK_FIPS2 40
227#define CRYPTO_NUM_LOCKS 41 224#define CRYPTO_NUM_LOCKS 41
228#endif
229 225
230#define CRYPTO_LOCK 1 226#define CRYPTO_LOCK 1
231#define CRYPTO_UNLOCK 2 227#define CRYPTO_UNLOCK 2
@@ -288,9 +284,10 @@ typedef struct bio_st BIO_dummy;
288 284
289struct crypto_ex_data_st 285struct crypto_ex_data_st
290 { 286 {
291 STACK *sk; 287 STACK_OF(void) *sk;
292 int dummy; /* gcc is screwing up this data structure :-( */ 288 int dummy; /* gcc is screwing up this data structure :-( */
293 }; 289 };
290DECLARE_STACK_OF(void)
294 291
295/* This stuff is basically class callback functions 292/* This stuff is basically class callback functions
296 * The current classes are SSL_CTX, SSL, SSL_SESSION, and a few more */ 293 * The current classes are SSL_CTX, SSL, SSL_SESSION, and a few more */
@@ -347,7 +344,14 @@ DECLARE_STACK_OF(CRYPTO_EX_DATA_FUNCS)
347 344
348/* Set standard debugging functions (not done by default 345/* Set standard debugging functions (not done by default
349 * unless CRYPTO_MDEBUG is defined) */ 346 * unless CRYPTO_MDEBUG is defined) */
350void CRYPTO_malloc_debug_init(void); 347#define CRYPTO_malloc_debug_init() do {\
348 CRYPTO_set_mem_debug_functions(\
349 CRYPTO_dbg_malloc,\
350 CRYPTO_dbg_realloc,\
351 CRYPTO_dbg_free,\
352 CRYPTO_dbg_set_options,\
353 CRYPTO_dbg_get_options);\
354 } while(0)
351 355
352int CRYPTO_mem_ctrl(int mode); 356int CRYPTO_mem_ctrl(int mode);
353int CRYPTO_is_mem_check_on(void); 357int CRYPTO_is_mem_check_on(void);
@@ -420,16 +424,32 @@ void CRYPTO_set_add_lock_callback(int (*func)(int *num,int mount,int type,
420 const char *file, int line)); 424 const char *file, int line));
421int (*CRYPTO_get_add_lock_callback(void))(int *num,int mount,int type, 425int (*CRYPTO_get_add_lock_callback(void))(int *num,int mount,int type,
422 const char *file,int line); 426 const char *file,int line);
427
428/* Don't use this structure directly. */
429typedef struct crypto_threadid_st
430 {
431 void *ptr;
432 unsigned long val;
433 } CRYPTO_THREADID;
434/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */
435void CRYPTO_THREADID_set_numeric(CRYPTO_THREADID *id, unsigned long val);
436void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr);
437int CRYPTO_THREADID_set_callback(void (*threadid_func)(CRYPTO_THREADID *));
438void (*CRYPTO_THREADID_get_callback(void))(CRYPTO_THREADID *);
439void CRYPTO_THREADID_current(CRYPTO_THREADID *id);
440int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *a, const CRYPTO_THREADID *b);
441void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dest, const CRYPTO_THREADID *src);
442unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id);
443#ifndef OPENSSL_NO_DEPRECATED
423void CRYPTO_set_id_callback(unsigned long (*func)(void)); 444void CRYPTO_set_id_callback(unsigned long (*func)(void));
424unsigned long (*CRYPTO_get_id_callback(void))(void); 445unsigned long (*CRYPTO_get_id_callback(void))(void);
425unsigned long CRYPTO_thread_id(void); 446unsigned long CRYPTO_thread_id(void);
447#endif
448
426const char *CRYPTO_get_lock_name(int type); 449const char *CRYPTO_get_lock_name(int type);
427int CRYPTO_add_lock(int *pointer,int amount,int type, const char *file, 450int CRYPTO_add_lock(int *pointer,int amount,int type, const char *file,
428 int line); 451 int line);
429 452
430void int_CRYPTO_set_do_dynlock_callback(
431 void (*do_dynlock_cb)(int mode, int type, const char *file, int line));
432
433int CRYPTO_get_new_dynlockid(void); 453int CRYPTO_get_new_dynlockid(void);
434void CRYPTO_destroy_dynlockid(int i); 454void CRYPTO_destroy_dynlockid(int i);
435struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i); 455struct CRYPTO_dynlock_value *CRYPTO_get_dynlock_value(int i);
@@ -454,10 +474,6 @@ int CRYPTO_set_mem_debug_functions(void (*m)(void *,int,const char *,int,int),
454 void (*f)(void *,int), 474 void (*f)(void *,int),
455 void (*so)(long), 475 void (*so)(long),
456 long (*go)(void)); 476 long (*go)(void));
457void CRYPTO_set_mem_info_functions(
458 int (*push_info_fn)(const char *info, const char *file, int line),
459 int (*pop_info_fn)(void),
460 int (*remove_all_info_fn)(void));
461void CRYPTO_get_mem_functions(void *(**m)(size_t),void *(**r)(void *, size_t), void (**f)(void *)); 477void CRYPTO_get_mem_functions(void *(**m)(size_t),void *(**r)(void *, size_t), void (**f)(void *));
462void CRYPTO_get_locked_mem_functions(void *(**m)(size_t), void (**f)(void *)); 478void CRYPTO_get_locked_mem_functions(void *(**m)(size_t), void (**f)(void *));
463void CRYPTO_get_mem_ex_functions(void *(**m)(size_t,const char *,int), 479void CRYPTO_get_mem_ex_functions(void *(**m)(size_t,const char *,int),
@@ -514,9 +530,6 @@ void CRYPTO_dbg_free(void *addr,int before_p);
514void CRYPTO_dbg_set_options(long bits); 530void CRYPTO_dbg_set_options(long bits);
515long CRYPTO_dbg_get_options(void); 531long CRYPTO_dbg_get_options(void);
516 532
517int CRYPTO_dbg_push_info(const char *info, const char *file, int line);
518int CRYPTO_dbg_pop_info(void);
519int CRYPTO_dbg_remove_all_info(void);
520 533
521#ifndef OPENSSL_NO_FP_API 534#ifndef OPENSSL_NO_FP_API
522void CRYPTO_mem_leaks_fp(FILE *); 535void CRYPTO_mem_leaks_fp(FILE *);
@@ -534,69 +547,12 @@ unsigned long *OPENSSL_ia32cap_loc(void);
534#define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc())) 547#define OPENSSL_ia32cap (*(OPENSSL_ia32cap_loc()))
535int OPENSSL_isservice(void); 548int OPENSSL_isservice(void);
536 549
537#ifdef OPENSSL_FIPS
538#define FIPS_ERROR_IGNORED(alg) OpenSSLDie(__FILE__, __LINE__, \
539 alg " previous FIPS forbidden algorithm error ignored");
540
541#define FIPS_BAD_ABORT(alg) OpenSSLDie(__FILE__, __LINE__, \
542 #alg " Algorithm forbidden in FIPS mode");
543
544#ifdef OPENSSL_FIPS_STRICT
545#define FIPS_BAD_ALGORITHM(alg) FIPS_BAD_ABORT(alg)
546#else
547#define FIPS_BAD_ALGORITHM(alg) \
548 { \
549 FIPSerr(FIPS_F_HASH_FINAL,FIPS_R_NON_FIPS_METHOD); \
550 ERR_add_error_data(2, "Algorithm=", #alg); \
551 return 0; \
552 }
553#endif
554
555/* Low level digest API blocking macro */
556
557#define FIPS_NON_FIPS_MD_Init(alg) \
558 int alg##_Init(alg##_CTX *c) \
559 { \
560 if (FIPS_mode()) \
561 FIPS_BAD_ALGORITHM(alg) \
562 return private_##alg##_Init(c); \
563 } \
564 int private_##alg##_Init(alg##_CTX *c)
565
566/* For ciphers the API often varies from cipher to cipher and each needs to
567 * be treated as a special case. Variable key length ciphers (Blowfish, RC4,
568 * CAST) however are very similar and can use a blocking macro.
569 */
570
571#define FIPS_NON_FIPS_VCIPHER_Init(alg) \
572 void alg##_set_key(alg##_KEY *key, int len, const unsigned char *data) \
573 { \
574 if (FIPS_mode()) \
575 FIPS_BAD_ABORT(alg) \
576 private_##alg##_set_key(key, len, data); \
577 } \
578 void private_##alg##_set_key(alg##_KEY *key, int len, \
579 const unsigned char *data)
580
581#else
582
583#define FIPS_NON_FIPS_VCIPHER_Init(alg) \
584 void alg##_set_key(alg##_KEY *key, int len, const unsigned char *data)
585
586#define FIPS_NON_FIPS_MD_Init(alg) \
587 int alg##_Init(alg##_CTX *c)
588
589#endif /* def OPENSSL_FIPS */
590
591/* BEGIN ERROR CODES */ 550/* BEGIN ERROR CODES */
592/* The following lines are auto generated by the script mkerr.pl. Any changes 551/* The following lines are auto generated by the script mkerr.pl. Any changes
593 * made after this point may be overwritten when the script is next run. 552 * made after this point may be overwritten when the script is next run.
594 */ 553 */
595void ERR_load_CRYPTO_strings(void); 554void ERR_load_CRYPTO_strings(void);
596 555
597#define OPENSSL_HAVE_INIT 1
598void OPENSSL_init(void);
599
600/* Error codes for the CRYPTO functions. */ 556/* Error codes for the CRYPTO functions. */
601 557
602/* Function codes. */ 558/* Function codes. */
diff --git a/src/lib/libssl/src/crypto/des/Makefile b/src/lib/libssl/src/crypto/des/Makefile
index 786e68802e..ae982265fd 100644
--- a/src/lib/libssl/src/crypto/des/Makefile
+++ b/src/lib/libssl/src/crypto/des/Makefile
@@ -12,8 +12,6 @@ MAKEFILE= Makefile
12AR= ar r 12AR= ar r
13RANLIB= ranlib 13RANLIB= ranlib
14DES_ENC= des_enc.o fcrypt_b.o 14DES_ENC= des_enc.o fcrypt_b.o
15# or use
16#DES_ENC= dx86-elf.o yx86-elf.o
17 15
18CFLAGS= $(INCLUDES) $(CFLAG) 16CFLAGS= $(INCLUDES) $(CFLAG)
19ASFLAGS= $(INCLUDES) $(ASFLAG) 17ASFLAGS= $(INCLUDES) $(ASFLAG)
@@ -24,7 +22,7 @@ TEST=destest.c
24APPS= 22APPS=
25 23
26LIB=$(TOP)/libcrypto.a 24LIB=$(TOP)/libcrypto.a
27LIBSRC= des_lib.c cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \ 25LIBSRC= cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \
28 ecb3_enc.c ecb_enc.c enc_read.c enc_writ.c \ 26 ecb3_enc.c ecb_enc.c enc_read.c enc_writ.c \
29 fcrypt.c ofb64enc.c ofb_enc.c pcbc_enc.c \ 27 fcrypt.c ofb64enc.c ofb_enc.c pcbc_enc.c \
30 qud_cksm.c rand_key.c rpc_enc.c set_key.c \ 28 qud_cksm.c rand_key.c rpc_enc.c set_key.c \
@@ -33,7 +31,7 @@ LIBSRC= des_lib.c cbc_cksm.c cbc_enc.c cfb64enc.c cfb_enc.c \
33 str2key.c cfb64ede.c ofb64ede.c ede_cbcm_enc.c des_old.c des_old2.c \ 31 str2key.c cfb64ede.c ofb64ede.c ede_cbcm_enc.c des_old.c des_old2.c \
34 read2pwd.c 32 read2pwd.c
35 33
36LIBOBJ= des_lib.o set_key.o ecb_enc.o cbc_enc.o \ 34LIBOBJ= set_key.o ecb_enc.o cbc_enc.o \
37 ecb3_enc.o cfb64enc.o cfb64ede.o cfb_enc.o ofb64ede.o \ 35 ecb3_enc.o cfb64enc.o cfb64ede.o cfb_enc.o ofb64ede.o \
38 enc_read.o enc_writ.o ofb64enc.o \ 36 enc_read.o enc_writ.o ofb64enc.o \
39 ofb_enc.o str2key.o pcbc_enc.o qud_cksm.o rand_key.o \ 37 ofb_enc.o str2key.o pcbc_enc.o qud_cksm.o rand_key.o \
@@ -54,7 +52,7 @@ top:
54all: lib 52all: lib
55 53
56lib: $(LIBOBJ) 54lib: $(LIBOBJ)
57 $(ARX) $(LIB) $(LIBOBJ) 55 $(AR) $(LIB) $(LIBOBJ)
58 $(RANLIB) $(LIB) || echo Never mind. 56 $(RANLIB) $(LIB) || echo Never mind.
59 @touch lib 57 @touch lib
60 58
@@ -64,21 +62,10 @@ des: des.o cbc3_enc.o lib
64des_enc-sparc.S: asm/des_enc.m4 62des_enc-sparc.S: asm/des_enc.m4
65 m4 -B 8192 asm/des_enc.m4 > des_enc-sparc.S 63 m4 -B 8192 asm/des_enc.m4 > des_enc-sparc.S
66 64
67# ELF 65des-586.s: asm/des-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
68dx86-elf.s: asm/des-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl 66 $(PERL) asm/des-586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
69 (cd asm; $(PERL) des-586.pl elf $(CFLAGS) > ../$@) 67crypt586.s: asm/crypt586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
70yx86-elf.s: asm/crypt586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl 68 $(PERL) asm/crypt586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
71 (cd asm; $(PERL) crypt586.pl elf $(CFLAGS) > ../$@)
72# COFF
73dx86-cof.s: asm/des-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
74 (cd asm; $(PERL) des-586.pl coff $(CFLAGS) > ../$@)
75yx86-cof.s: asm/crypt586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
76 (cd asm; $(PERL) crypt586.pl coff $(CFLAGS) > ../$@)
77# a.out
78dx86-out.s: asm/des-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
79 (cd asm; $(PERL) des-586.pl a.out $(CFLAGS) > ../$@)
80yx86-out.s: asm/crypt586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
81 (cd asm; $(PERL) crypt586.pl a.out $(CFLAGS) > ../$@)
82 69
83files: 70files:
84 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 71 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -156,14 +143,7 @@ des_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
156des_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 143des_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
157des_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 144des_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
158des_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 145des_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
159des_enc.o: des_enc.c des_locl.h ncbc_enc.c 146des_enc.o: des_enc.c des_locl.h ncbc_enc.c spr.h
160des_lib.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
161des_lib.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
162des_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
163des_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
164des_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
165des_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
166des_lib.o: ../../include/openssl/ui_compat.h des_lib.c des_locl.h des_ver.h
167des_old.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 147des_old.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
168des_old.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 148des_old.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
169des_old.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h 149des_old.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
@@ -182,12 +162,13 @@ ecb3_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
182ecb3_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 162ecb3_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
183ecb3_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 163ecb3_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
184ecb3_enc.o: des_locl.h ecb3_enc.c 164ecb3_enc.o: des_locl.h ecb3_enc.c
165ecb_enc.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
185ecb_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 166ecb_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
186ecb_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h 167ecb_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
187ecb_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 168ecb_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
188ecb_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 169ecb_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
189ecb_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 170ecb_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
190ecb_enc.o: des_locl.h ecb_enc.c spr.h 171ecb_enc.o: ../../include/openssl/ui_compat.h des_locl.h des_ver.h ecb_enc.c
191ede_cbcm_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 172ede_cbcm_enc.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
192ede_cbcm_enc.o: ../../include/openssl/e_os2.h 173ede_cbcm_enc.o: ../../include/openssl/e_os2.h
193ede_cbcm_enc.o: ../../include/openssl/opensslconf.h 174ede_cbcm_enc.o: ../../include/openssl/opensslconf.h
@@ -277,11 +258,11 @@ rpc_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
277rpc_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 258rpc_enc.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
278rpc_enc.o: des_locl.h des_ver.h rpc_des.h rpc_enc.c 259rpc_enc.o: des_locl.h des_ver.h rpc_des.h rpc_enc.c
279set_key.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 260set_key.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
280set_key.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h 261set_key.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
281set_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/ossl_typ.h 262set_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
282set_key.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 263set_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
283set_key.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h 264set_key.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
284set_key.o: ../../include/openssl/ui_compat.h des_locl.h set_key.c 265set_key.o: des_locl.h set_key.c
285str2key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h 266str2key.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
286str2key.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h 267str2key.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
287str2key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 268str2key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
diff --git a/src/lib/libssl/src/crypto/des/asm/crypt586.pl b/src/lib/libssl/src/crypto/des/asm/crypt586.pl
index 1d04ed6def..e36f7d44bd 100644
--- a/src/lib/libssl/src/crypto/des/asm/crypt586.pl
+++ b/src/lib/libssl/src/crypto/des/asm/crypt586.pl
@@ -6,7 +6,8 @@
6# things perfect. 6# things perfect.
7# 7#
8 8
9push(@INC,"perlasm","../../perlasm"); 9$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
10push(@INC,"${dir}","${dir}../../perlasm");
10require "x86asm.pl"; 11require "x86asm.pl";
11 12
12&asm_init($ARGV[0],"crypt586.pl"); 13&asm_init($ARGV[0],"crypt586.pl");
@@ -22,7 +23,7 @@ sub fcrypt_body
22 { 23 {
23 local($name,$do_ip)=@_; 24 local($name,$do_ip)=@_;
24 25
25 &function_begin($name,"EXTRN _DES_SPtrans:DWORD"); 26 &function_begin($name);
26 27
27 &comment(""); 28 &comment("");
28 &comment("Load the 2 words"); 29 &comment("Load the 2 words");
diff --git a/src/lib/libssl/src/crypto/des/asm/des-586.pl b/src/lib/libssl/src/crypto/des/asm/des-586.pl
index b75d3c6b3a..5b5f39cebd 100644
--- a/src/lib/libssl/src/crypto/des/asm/des-586.pl
+++ b/src/lib/libssl/src/crypto/des/asm/des-586.pl
@@ -4,7 +4,8 @@
4# Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk> 4# Svend Olaf Mikkelsen <svolaf@inet.uni-c.dk>
5# 5#
6 6
7push(@INC,"perlasm","../../perlasm"); 7$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
8push(@INC,"${dir}","${dir}../../perlasm");
8require "x86asm.pl"; 9require "x86asm.pl";
9require "cbc.pl"; 10require "cbc.pl";
10require "desboth.pl"; 11require "desboth.pl";
@@ -18,29 +19,110 @@ require "desboth.pl";
18 19
19$L="edi"; 20$L="edi";
20$R="esi"; 21$R="esi";
22$trans="ebp";
23$small_footprint=1 if (grep(/\-DOPENSSL_SMALL_FOOTPRINT/,@ARGV));
24# one can discuss setting this variable to 1 unconditionally, as
25# the folded loop is only 3% slower than unrolled, but >7 times smaller
21 26
22&external_label("DES_SPtrans"); 27&public_label("DES_SPtrans");
28
29&DES_encrypt_internal();
30&DES_decrypt_internal();
23&DES_encrypt("DES_encrypt1",1); 31&DES_encrypt("DES_encrypt1",1);
24&DES_encrypt("DES_encrypt2",0); 32&DES_encrypt("DES_encrypt2",0);
25&DES_encrypt3("DES_encrypt3",1); 33&DES_encrypt3("DES_encrypt3",1);
26&DES_encrypt3("DES_decrypt3",0); 34&DES_encrypt3("DES_decrypt3",0);
27&cbc("DES_ncbc_encrypt","DES_encrypt1","DES_encrypt1",0,4,5,3,5,-1); 35&cbc("DES_ncbc_encrypt","DES_encrypt1","DES_encrypt1",0,4,5,3,5,-1);
28&cbc("DES_ede3_cbc_encrypt","DES_encrypt3","DES_decrypt3",0,6,7,3,4,5); 36&cbc("DES_ede3_cbc_encrypt","DES_encrypt3","DES_decrypt3",0,6,7,3,4,5);
37&DES_SPtrans();
29 38
30&asm_finish(); 39&asm_finish();
31 40
41sub DES_encrypt_internal()
42 {
43 &function_begin_B("_x86_DES_encrypt");
44
45 if ($small_footprint)
46 {
47 &lea("edx",&DWP(128,"ecx"));
48 &push("edx");
49 &push("ecx");
50 &set_label("eloop");
51 &D_ENCRYPT(0,$L,$R,0,$trans,"eax","ebx","ecx","edx",&swtmp(0));
52 &comment("");
53 &D_ENCRYPT(1,$R,$L,2,$trans,"eax","ebx","ecx","edx",&swtmp(0));
54 &comment("");
55 &add("ecx",16);
56 &cmp("ecx",&swtmp(1));
57 &mov(&swtmp(0),"ecx");
58 &jb(&label("eloop"));
59 &add("esp",8);
60 }
61 else
62 {
63 &push("ecx");
64 for ($i=0; $i<16; $i+=2)
65 {
66 &comment("Round $i");
67 &D_ENCRYPT($i,$L,$R,$i*2,$trans,"eax","ebx","ecx","edx",&swtmp(0));
68 &comment("Round ".sprintf("%d",$i+1));
69 &D_ENCRYPT($i+1,$R,$L,($i+1)*2,$trans,"eax","ebx","ecx","edx",&swtmp(0));
70 }
71 &add("esp",4);
72 }
73 &ret();
74
75 &function_end_B("_x86_DES_encrypt");
76 }
77
78sub DES_decrypt_internal()
79 {
80 &function_begin_B("_x86_DES_decrypt");
81
82 if ($small_footprint)
83 {
84 &push("ecx");
85 &lea("ecx",&DWP(128,"ecx"));
86 &push("ecx");
87 &set_label("dloop");
88 &D_ENCRYPT(0,$L,$R,-2,$trans,"eax","ebx","ecx","edx",&swtmp(0));
89 &comment("");
90 &D_ENCRYPT(1,$R,$L,-4,$trans,"eax","ebx","ecx","edx",&swtmp(0));
91 &comment("");
92 &sub("ecx",16);
93 &cmp("ecx",&swtmp(1));
94 &mov(&swtmp(0),"ecx");
95 &ja(&label("dloop"));
96 &add("esp",8);
97 }
98 else
99 {
100 &push("ecx");
101 for ($i=15; $i>0; $i-=2)
102 {
103 &comment("Round $i");
104 &D_ENCRYPT(15-$i,$L,$R,$i*2,$trans,"eax","ebx","ecx","edx",&swtmp(0));
105 &comment("Round ".sprintf("%d",$i-1));
106 &D_ENCRYPT(15-$i+1,$R,$L,($i-1)*2,$trans,"eax","ebx","ecx","edx",&swtmp(0));
107 }
108 &add("esp",4);
109 }
110 &ret();
111
112 &function_end_B("_x86_DES_decrypt");
113 }
114
32sub DES_encrypt 115sub DES_encrypt
33 { 116 {
34 local($name,$do_ip)=@_; 117 local($name,$do_ip)=@_;
35 118
36 &function_begin_B($name,"EXTRN _DES_SPtrans:DWORD"); 119 &function_begin_B($name);
37 120
38 &push("esi"); 121 &push("esi");
39 &push("edi"); 122 &push("edi");
40 123
41 &comment(""); 124 &comment("");
42 &comment("Load the 2 words"); 125 &comment("Load the 2 words");
43 $trans="ebp";
44 126
45 if ($do_ip) 127 if ($do_ip)
46 { 128 {
@@ -73,39 +155,20 @@ sub DES_encrypt
73 } 155 }
74 156
75 # PIC-ification:-) 157 # PIC-ification:-)
76 &picmeup($trans,"DES_SPtrans"); 158 &call (&label("pic_point"));
77 #if ($cpp) { &picmeup($trans,"DES_SPtrans"); } 159 &set_label("pic_point");
78 #else { &lea($trans,&DWP("DES_SPtrans")); } 160 &blindpop($trans);
161 &lea ($trans,&DWP(&label("DES_SPtrans")."-".&label("pic_point"),$trans));
79 162
80 &mov( "ecx", &wparam(1) ); 163 &mov( "ecx", &wparam(1) );
81 &cmp("ebx","0");
82 &je(&label("start_decrypt"));
83
84 for ($i=0; $i<16; $i+=2)
85 {
86 &comment("");
87 &comment("Round $i");
88 &D_ENCRYPT($i,$L,$R,$i*2,$trans,"eax","ebx","ecx","edx");
89
90 &comment("");
91 &comment("Round ".sprintf("%d",$i+1));
92 &D_ENCRYPT($i+1,$R,$L,($i+1)*2,$trans,"eax","ebx","ecx","edx");
93 }
94 &jmp(&label("end"));
95 164
96 &set_label("start_decrypt"); 165 &cmp("ebx","0");
97 166 &je(&label("decrypt"));
98 for ($i=15; $i>0; $i-=2) 167 &call("_x86_DES_encrypt");
99 { 168 &jmp(&label("done"));
100 &comment(""); 169 &set_label("decrypt");
101 &comment("Round $i"); 170 &call("_x86_DES_decrypt");
102 &D_ENCRYPT(15-$i,$L,$R,$i*2,$trans,"eax","ebx","ecx","edx"); 171 &set_label("done");
103 &comment("");
104 &comment("Round ".sprintf("%d",$i-1));
105 &D_ENCRYPT(15-$i+1,$R,$L,($i-1)*2,$trans,"eax","ebx","ecx","edx");
106 }
107
108 &set_label("end");
109 172
110 if ($do_ip) 173 if ($do_ip)
111 { 174 {
@@ -139,7 +202,7 @@ sub DES_encrypt
139 202
140sub D_ENCRYPT 203sub D_ENCRYPT
141 { 204 {
142 local($r,$L,$R,$S,$trans,$u,$tmp1,$tmp2,$t)=@_; 205 local($r,$L,$R,$S,$trans,$u,$tmp1,$tmp2,$t,$wp1)=@_;
143 206
144 &mov( $u, &DWP(&n2a($S*4),$tmp2,"",0)); 207 &mov( $u, &DWP(&n2a($S*4),$tmp2,"",0));
145 &xor( $tmp1, $tmp1); 208 &xor( $tmp1, $tmp1);
@@ -166,7 +229,7 @@ sub D_ENCRYPT
166 &and( $t, "0xff" ); 229 &and( $t, "0xff" );
167 &xor( $L, &DWP("0x600",$trans,$tmp1,0)); 230 &xor( $L, &DWP("0x600",$trans,$tmp1,0));
168 &xor( $L, &DWP("0x700",$trans,$tmp2,0)); 231 &xor( $L, &DWP("0x700",$trans,$tmp2,0));
169 &mov( $tmp2, &wparam(1) ); 232 &mov( $tmp2, $wp1 );
170 &xor( $L, &DWP("0x400",$trans,$u,0)); 233 &xor( $L, &DWP("0x400",$trans,$u,0));
171 &xor( $L, &DWP("0x500",$trans,$t,0)); 234 &xor( $L, &DWP("0x500",$trans,$t,0));
172 } 235 }
@@ -249,3 +312,142 @@ sub FP_new
249 &rotr($tt , 4); 312 &rotr($tt , 4);
250 } 313 }
251 314
315sub DES_SPtrans
316 {
317 &set_label("DES_SPtrans",64);
318 &data_word(0x02080800, 0x00080000, 0x02000002, 0x02080802);
319 &data_word(0x02000000, 0x00080802, 0x00080002, 0x02000002);
320 &data_word(0x00080802, 0x02080800, 0x02080000, 0x00000802);
321 &data_word(0x02000802, 0x02000000, 0x00000000, 0x00080002);
322 &data_word(0x00080000, 0x00000002, 0x02000800, 0x00080800);
323 &data_word(0x02080802, 0x02080000, 0x00000802, 0x02000800);
324 &data_word(0x00000002, 0x00000800, 0x00080800, 0x02080002);
325 &data_word(0x00000800, 0x02000802, 0x02080002, 0x00000000);
326 &data_word(0x00000000, 0x02080802, 0x02000800, 0x00080002);
327 &data_word(0x02080800, 0x00080000, 0x00000802, 0x02000800);
328 &data_word(0x02080002, 0x00000800, 0x00080800, 0x02000002);
329 &data_word(0x00080802, 0x00000002, 0x02000002, 0x02080000);
330 &data_word(0x02080802, 0x00080800, 0x02080000, 0x02000802);
331 &data_word(0x02000000, 0x00000802, 0x00080002, 0x00000000);
332 &data_word(0x00080000, 0x02000000, 0x02000802, 0x02080800);
333 &data_word(0x00000002, 0x02080002, 0x00000800, 0x00080802);
334 # nibble 1
335 &data_word(0x40108010, 0x00000000, 0x00108000, 0x40100000);
336 &data_word(0x40000010, 0x00008010, 0x40008000, 0x00108000);
337 &data_word(0x00008000, 0x40100010, 0x00000010, 0x40008000);
338 &data_word(0x00100010, 0x40108000, 0x40100000, 0x00000010);
339 &data_word(0x00100000, 0x40008010, 0x40100010, 0x00008000);
340 &data_word(0x00108010, 0x40000000, 0x00000000, 0x00100010);
341 &data_word(0x40008010, 0x00108010, 0x40108000, 0x40000010);
342 &data_word(0x40000000, 0x00100000, 0x00008010, 0x40108010);
343 &data_word(0x00100010, 0x40108000, 0x40008000, 0x00108010);
344 &data_word(0x40108010, 0x00100010, 0x40000010, 0x00000000);
345 &data_word(0x40000000, 0x00008010, 0x00100000, 0x40100010);
346 &data_word(0x00008000, 0x40000000, 0x00108010, 0x40008010);
347 &data_word(0x40108000, 0x00008000, 0x00000000, 0x40000010);
348 &data_word(0x00000010, 0x40108010, 0x00108000, 0x40100000);
349 &data_word(0x40100010, 0x00100000, 0x00008010, 0x40008000);
350 &data_word(0x40008010, 0x00000010, 0x40100000, 0x00108000);
351 # nibble 2
352 &data_word(0x04000001, 0x04040100, 0x00000100, 0x04000101);
353 &data_word(0x00040001, 0x04000000, 0x04000101, 0x00040100);
354 &data_word(0x04000100, 0x00040000, 0x04040000, 0x00000001);
355 &data_word(0x04040101, 0x00000101, 0x00000001, 0x04040001);
356 &data_word(0x00000000, 0x00040001, 0x04040100, 0x00000100);
357 &data_word(0x00000101, 0x04040101, 0x00040000, 0x04000001);
358 &data_word(0x04040001, 0x04000100, 0x00040101, 0x04040000);
359 &data_word(0x00040100, 0x00000000, 0x04000000, 0x00040101);
360 &data_word(0x04040100, 0x00000100, 0x00000001, 0x00040000);
361 &data_word(0x00000101, 0x00040001, 0x04040000, 0x04000101);
362 &data_word(0x00000000, 0x04040100, 0x00040100, 0x04040001);
363 &data_word(0x00040001, 0x04000000, 0x04040101, 0x00000001);
364 &data_word(0x00040101, 0x04000001, 0x04000000, 0x04040101);
365 &data_word(0x00040000, 0x04000100, 0x04000101, 0x00040100);
366 &data_word(0x04000100, 0x00000000, 0x04040001, 0x00000101);
367 &data_word(0x04000001, 0x00040101, 0x00000100, 0x04040000);
368 # nibble 3
369 &data_word(0x00401008, 0x10001000, 0x00000008, 0x10401008);
370 &data_word(0x00000000, 0x10400000, 0x10001008, 0x00400008);
371 &data_word(0x10401000, 0x10000008, 0x10000000, 0x00001008);
372 &data_word(0x10000008, 0x00401008, 0x00400000, 0x10000000);
373 &data_word(0x10400008, 0x00401000, 0x00001000, 0x00000008);
374 &data_word(0x00401000, 0x10001008, 0x10400000, 0x00001000);
375 &data_word(0x00001008, 0x00000000, 0x00400008, 0x10401000);
376 &data_word(0x10001000, 0x10400008, 0x10401008, 0x00400000);
377 &data_word(0x10400008, 0x00001008, 0x00400000, 0x10000008);
378 &data_word(0x00401000, 0x10001000, 0x00000008, 0x10400000);
379 &data_word(0x10001008, 0x00000000, 0x00001000, 0x00400008);
380 &data_word(0x00000000, 0x10400008, 0x10401000, 0x00001000);
381 &data_word(0x10000000, 0x10401008, 0x00401008, 0x00400000);
382 &data_word(0x10401008, 0x00000008, 0x10001000, 0x00401008);
383 &data_word(0x00400008, 0x00401000, 0x10400000, 0x10001008);
384 &data_word(0x00001008, 0x10000000, 0x10000008, 0x10401000);
385 # nibble 4
386 &data_word(0x08000000, 0x00010000, 0x00000400, 0x08010420);
387 &data_word(0x08010020, 0x08000400, 0x00010420, 0x08010000);
388 &data_word(0x00010000, 0x00000020, 0x08000020, 0x00010400);
389 &data_word(0x08000420, 0x08010020, 0x08010400, 0x00000000);
390 &data_word(0x00010400, 0x08000000, 0x00010020, 0x00000420);
391 &data_word(0x08000400, 0x00010420, 0x00000000, 0x08000020);
392 &data_word(0x00000020, 0x08000420, 0x08010420, 0x00010020);
393 &data_word(0x08010000, 0x00000400, 0x00000420, 0x08010400);
394 &data_word(0x08010400, 0x08000420, 0x00010020, 0x08010000);
395 &data_word(0x00010000, 0x00000020, 0x08000020, 0x08000400);
396 &data_word(0x08000000, 0x00010400, 0x08010420, 0x00000000);
397 &data_word(0x00010420, 0x08000000, 0x00000400, 0x00010020);
398 &data_word(0x08000420, 0x00000400, 0x00000000, 0x08010420);
399 &data_word(0x08010020, 0x08010400, 0x00000420, 0x00010000);
400 &data_word(0x00010400, 0x08010020, 0x08000400, 0x00000420);
401 &data_word(0x00000020, 0x00010420, 0x08010000, 0x08000020);
402 # nibble 5
403 &data_word(0x80000040, 0x00200040, 0x00000000, 0x80202000);
404 &data_word(0x00200040, 0x00002000, 0x80002040, 0x00200000);
405 &data_word(0x00002040, 0x80202040, 0x00202000, 0x80000000);
406 &data_word(0x80002000, 0x80000040, 0x80200000, 0x00202040);
407 &data_word(0x00200000, 0x80002040, 0x80200040, 0x00000000);
408 &data_word(0x00002000, 0x00000040, 0x80202000, 0x80200040);
409 &data_word(0x80202040, 0x80200000, 0x80000000, 0x00002040);
410 &data_word(0x00000040, 0x00202000, 0x00202040, 0x80002000);
411 &data_word(0x00002040, 0x80000000, 0x80002000, 0x00202040);
412 &data_word(0x80202000, 0x00200040, 0x00000000, 0x80002000);
413 &data_word(0x80000000, 0x00002000, 0x80200040, 0x00200000);
414 &data_word(0x00200040, 0x80202040, 0x00202000, 0x00000040);
415 &data_word(0x80202040, 0x00202000, 0x00200000, 0x80002040);
416 &data_word(0x80000040, 0x80200000, 0x00202040, 0x00000000);
417 &data_word(0x00002000, 0x80000040, 0x80002040, 0x80202000);
418 &data_word(0x80200000, 0x00002040, 0x00000040, 0x80200040);
419 # nibble 6
420 &data_word(0x00004000, 0x00000200, 0x01000200, 0x01000004);
421 &data_word(0x01004204, 0x00004004, 0x00004200, 0x00000000);
422 &data_word(0x01000000, 0x01000204, 0x00000204, 0x01004000);
423 &data_word(0x00000004, 0x01004200, 0x01004000, 0x00000204);
424 &data_word(0x01000204, 0x00004000, 0x00004004, 0x01004204);
425 &data_word(0x00000000, 0x01000200, 0x01000004, 0x00004200);
426 &data_word(0x01004004, 0x00004204, 0x01004200, 0x00000004);
427 &data_word(0x00004204, 0x01004004, 0x00000200, 0x01000000);
428 &data_word(0x00004204, 0x01004000, 0x01004004, 0x00000204);
429 &data_word(0x00004000, 0x00000200, 0x01000000, 0x01004004);
430 &data_word(0x01000204, 0x00004204, 0x00004200, 0x00000000);
431 &data_word(0x00000200, 0x01000004, 0x00000004, 0x01000200);
432 &data_word(0x00000000, 0x01000204, 0x01000200, 0x00004200);
433 &data_word(0x00000204, 0x00004000, 0x01004204, 0x01000000);
434 &data_word(0x01004200, 0x00000004, 0x00004004, 0x01004204);
435 &data_word(0x01000004, 0x01004200, 0x01004000, 0x00004004);
436 # nibble 7
437 &data_word(0x20800080, 0x20820000, 0x00020080, 0x00000000);
438 &data_word(0x20020000, 0x00800080, 0x20800000, 0x20820080);
439 &data_word(0x00000080, 0x20000000, 0x00820000, 0x00020080);
440 &data_word(0x00820080, 0x20020080, 0x20000080, 0x20800000);
441 &data_word(0x00020000, 0x00820080, 0x00800080, 0x20020000);
442 &data_word(0x20820080, 0x20000080, 0x00000000, 0x00820000);
443 &data_word(0x20000000, 0x00800000, 0x20020080, 0x20800080);
444 &data_word(0x00800000, 0x00020000, 0x20820000, 0x00000080);
445 &data_word(0x00800000, 0x00020000, 0x20000080, 0x20820080);
446 &data_word(0x00020080, 0x20000000, 0x00000000, 0x00820000);
447 &data_word(0x20800080, 0x20020080, 0x20020000, 0x00800080);
448 &data_word(0x20820000, 0x00000080, 0x00800080, 0x20020000);
449 &data_word(0x20820080, 0x00800000, 0x20800000, 0x20000080);
450 &data_word(0x00820000, 0x00020080, 0x20020080, 0x20800000);
451 &data_word(0x00000080, 0x20820000, 0x00820080, 0x00000000);
452 &data_word(0x20000000, 0x20800080, 0x00020000, 0x00820080);
453 }
diff --git a/src/lib/libssl/src/crypto/des/des-lib.com b/src/lib/libssl/src/crypto/des/des-lib.com
index fc2c35a1ce..348f1c0470 100644
--- a/src/lib/libssl/src/crypto/des/des-lib.com
+++ b/src/lib/libssl/src/crypto/des/des-lib.com
@@ -9,7 +9,7 @@ $! Changes by Richard Levitte <richard@levitte.org>
9$! 9$!
10$! This command files compiles and creates the 10$! This command files compiles and creates the
11$! "[.xxx.EXE.CRYPTO.DES]LIBDES.OLB" library. The "xxx" denotes the machine 11$! "[.xxx.EXE.CRYPTO.DES]LIBDES.OLB" library. The "xxx" denotes the machine
12$! architecture of AXP or VAX. 12$! architecture of ALPHA, IA64 or VAX.
13$! 13$!
14$! It was re-written to try to determine which "C" compiler to try to use 14$! It was re-written to try to determine which "C" compiler to try to use
15$! or the user can specify a compiler in P3. 15$! or the user can specify a compiler in P3.
@@ -45,25 +45,34 @@ $!
45$! 45$!
46$! Check Which Architecture We Are Using. 46$! Check Which Architecture We Are Using.
47$! 47$!
48$ IF (F$GETSYI("CPU").GE.128) 48$ IF (F$GETSYI("CPU").LT.128)
49$ THEN 49$ THEN
50$! 50$!
51$! The Architecture Is AXP. 51$! The Architecture Is VAX
52$! 52$!
53$ ARCH := AXP 53$ ARCH := VAX
54$! 54$!
55$! Else... 55$! Else...
56$! 56$!
57$ ELSE 57$ ELSE
58$! 58$!
59$! The Architecture Is VAX. 59$! The Architecture Is Alpha, IA64 or whatever comes in the future.
60$! 60$!
61$ ARCH := VAX 61$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
62$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
62$! 63$!
63$! End The Architecture Check. 64$! End The Architecture Check.
64$! 65$!
65$ ENDIF 66$ ENDIF
66$! 67$!
68$! Define The OBJ Directory Name.
69$!
70$ OBJ_DIR := SYS$DISK:[--.'ARCH'.OBJ.CRYPTO.DES]
71$!
72$! Define The EXE Directory Name.
73$!
74$ EXE_DIR :== SYS$DISK:[--.'ARCH'.EXE.CRYPTO.DES]
75$!
67$! Check To Make Sure We Have Valid Command Line Parameters. 76$! Check To Make Sure We Have Valid Command Line Parameters.
68$! 77$!
69$ GOSUB CHECK_OPTIONS 78$ GOSUB CHECK_OPTIONS
@@ -72,10 +81,6 @@ $! Tell The User What Kind of Machine We Run On.
72$! 81$!
73$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine." 82$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
74$! 83$!
75$! Define The OBJ Directory Name.
76$!
77$ OBJ_DIR := SYS$DISK:[--.'ARCH'.OBJ.CRYPTO.DES]
78$!
79$! Check To See If The Architecture Specific OBJ Directory Exists. 84$! Check To See If The Architecture Specific OBJ Directory Exists.
80$! 85$!
81$ IF (F$PARSE(OBJ_DIR).EQS."") 86$ IF (F$PARSE(OBJ_DIR).EQS."")
@@ -89,10 +94,6 @@ $! End The Architecture Specific OBJ Directory Check.
89$! 94$!
90$ ENDIF 95$ ENDIF
91$! 96$!
92$! Define The EXE Directory Name.
93$!
94$ EXE_DIR :== SYS$DISK:[--.'ARCH'.EXE.CRYPTO.DES]
95$!
96$! Check To See If The Architecture Specific Directory Exists. 97$! Check To See If The Architecture Specific Directory Exists.
97$! 98$!
98$ IF (F$PARSE(EXE_DIR).EQS."") 99$ IF (F$PARSE(EXE_DIR).EQS."")
@@ -564,7 +565,7 @@ $!
564$ IF (F$SEARCH(OPT_FILE).EQS."") 565$ IF (F$SEARCH(OPT_FILE).EQS."")
565$ THEN 566$ THEN
566$! 567$!
567$! Figure Out If We Need An AXP Or A VAX Linker Option File. 568$! Figure Out If We Need An non-VAX Or A VAX Linker Option File.
568$! 569$!
569$ IF (F$GETSYI("CPU").LT.128) 570$ IF (F$GETSYI("CPU").LT.128)
570$ THEN 571$ THEN
@@ -584,19 +585,19 @@ $! Else...
584$! 585$!
585$ ELSE 586$ ELSE
586$! 587$!
587$! Create The AXP Linker Option File. 588$! Create The non-VAX Linker Option File.
588$! 589$!
589$ CREATE 'OPT_FILE' 590$ CREATE 'OPT_FILE'
590$DECK 591$DECK
591! 592!
592! Default System Options File For AXP To Link Agianst 593! Default System Options File For non-VAX To Link Agianst
593! The Sharable C Runtime Library. 594! The Sharable C Runtime Library.
594! 595!
595SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE 596SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
596SYS$SHARE:CMA$OPEN_RTL/SHARE 597SYS$SHARE:CMA$OPEN_RTL/SHARE
597$EOD 598$EOD
598$! 599$!
599$! End The VAX/AXP DEC C Option File Check. 600$! End The DEC C Option File Check.
600$! 601$!
601$ ENDIF 602$ ENDIF
602$! 603$!
@@ -658,13 +659,13 @@ $! Else...
658$! 659$!
659$ ELSE 660$ ELSE
660$! 661$!
661$! Else, Check To See If P1 Has A Valid Arguement. 662$! Else, Check To See If P1 Has A Valid Argument.
662$! 663$!
663$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."DESTEST").OR.(P1.EQS."SPEED") - 664$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."DESTEST").OR.(P1.EQS."SPEED") -
664 .OR.(P1.EQS."RPW").OR.(P1.EQS."DES").OR.(P1.EQS."DES_OPTS") 665 .OR.(P1.EQS."RPW").OR.(P1.EQS."DES").OR.(P1.EQS."DES_OPTS")
665$ THEN 666$ THEN
666$! 667$!
667$! A Valid Arguement. 668$! A Valid Argument.
668$! 669$!
669$ BUILDALL = P1 670$ BUILDALL = P1
670$! 671$!
@@ -677,7 +678,7 @@ $!
677$ WRITE SYS$OUTPUT "" 678$ WRITE SYS$OUTPUT ""
678$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:" 679$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:"
679$ WRITE SYS$OUTPUT "" 680$ WRITE SYS$OUTPUT ""
680$ WRITE SYS$OUTPUT " ALL : Just Build Everything. 681$ WRITE SYS$OUTPUT " ALL : Just Build Everything."
681$ WRITE SYS$OUTPUT " LIBRARY : To Compile Just The [.xxx.EXE.CRYPTO.DES]LIBDES.OLB Library." 682$ WRITE SYS$OUTPUT " LIBRARY : To Compile Just The [.xxx.EXE.CRYPTO.DES]LIBDES.OLB Library."
682$ WRITE SYS$OUTPUT " DESTEST : To Compile Just The [.xxx.EXE.CRYPTO.DES]DESTEST.EXE Program." 683$ WRITE SYS$OUTPUT " DESTEST : To Compile Just The [.xxx.EXE.CRYPTO.DES]DESTEST.EXE Program."
683$ WRITE SYS$OUTPUT " SPEED : To Compile Just The [.xxx.EXE.CRYPTO.DES]SPEED.EXE Program." 684$ WRITE SYS$OUTPUT " SPEED : To Compile Just The [.xxx.EXE.CRYPTO.DES]SPEED.EXE Program."
@@ -687,15 +688,16 @@ $ WRITE SYS$OUTPUT " DES_OPTS : To Compile Just The [.xxx.EXE.CRYTPO.DES
687$ WRITE SYS$OUTPUT "" 688$ WRITE SYS$OUTPUT ""
688$ WRITE SYS$OUTPUT " Where 'xxx' Stands For: " 689$ WRITE SYS$OUTPUT " Where 'xxx' Stands For: "
689$ WRITE SYS$OUTPUT "" 690$ WRITE SYS$OUTPUT ""
690$ WRITE SYS$OUTPUT " AXP : Alpha Architecture." 691$ WRITE SYS$OUTPUT " ALPHA : Alpha Architecture."
691$ WRITE SYS$OUTPUT " VAX : VAX Architecture." 692$ WRITE SYS$OUTPUT " IA64 : IA64 Architecture."
693$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
692$ WRITE SYS$OUTPUT "" 694$ WRITE SYS$OUTPUT ""
693$! 695$!
694$! Time To EXIT. 696$! Time To EXIT.
695$! 697$!
696$ EXIT 698$ EXIT
697$! 699$!
698$! End The Valid Arguement Check. 700$! End The Valid Argument Check.
699$! 701$!
700$ ENDIF 702$ ENDIF
701$! 703$!
@@ -752,7 +754,7 @@ $! Time To EXIT.
752$! 754$!
753$ EXIT 755$ EXIT
754$! 756$!
755$! End The Valid Arguement Check. 757$! End The Valid Argument Check.
756$! 758$!
757$ ENDIF 759$ ENDIF
758$! 760$!
@@ -817,7 +819,7 @@ $ ELSE
817$! 819$!
818$! Check To See If We Have VAXC Or DECC. 820$! Check To See If We Have VAXC Or DECC.
819$! 821$!
820$ IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."") 822$ IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
821$ THEN 823$ THEN
822$! 824$!
823$! Looks Like DECC, Set To Use DECC. 825$! Looks Like DECC, Set To Use DECC.
@@ -882,7 +884,7 @@ $ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
882$! 884$!
883$! Define The Linker Options File Name. 885$! Define The Linker Options File Name.
884$! 886$!
885$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT" 887$ OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
886$! 888$!
887$! End DECC Check. 889$! End DECC Check.
888$! 890$!
@@ -904,9 +906,9 @@ $!
904$! Compile Using VAXC. 906$! Compile Using VAXC.
905$! 907$!
906$ CC = "CC" 908$ CC = "CC"
907$ IF ARCH.EQS."AXP" 909$ IF ARCH.NES."VAX"
908$ THEN 910$ THEN
909$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!" 911$ WRITE SYS$OUTPUT "There is no VAX C on ''ARCH'!"
910$ EXIT 912$ EXIT
911$ ENDIF 913$ ENDIF
912$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC" 914$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
@@ -919,7 +921,7 @@ $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
919$! 921$!
920$! Define The Linker Options File Name. 922$! Define The Linker Options File Name.
921$! 923$!
922$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT" 924$ OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
923$! 925$!
924$! End VAXC Check 926$! End VAXC Check
925$! 927$!
@@ -944,7 +946,7 @@ $ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + CCEXTRAFLAGS
944$! 946$!
945$! Define The Linker Options File Name. 947$! Define The Linker Options File Name.
946$! 948$!
947$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT" 949$ OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
948$! 950$!
949$! End The GNU C Check. 951$! End The GNU C Check.
950$! 952$!
@@ -976,7 +978,7 @@ $! Show user the result
976$! 978$!
977$ WRITE SYS$OUTPUT "Main Compiling Command: ",CC 979$ WRITE SYS$OUTPUT "Main Compiling Command: ",CC
978$! 980$!
979$! Else The User Entered An Invalid Arguement. 981$! Else The User Entered An Invalid Argument.
980$! 982$!
981$ ELSE 983$ ELSE
982$! 984$!
diff --git a/src/lib/libssl/src/crypto/des/des_enc.c b/src/lib/libssl/src/crypto/des/des_enc.c
index cf71965aca..828feba208 100644
--- a/src/lib/libssl/src/crypto/des/des_enc.c
+++ b/src/lib/libssl/src/crypto/des/des_enc.c
@@ -57,6 +57,7 @@
57 */ 57 */
58 58
59#include "des_locl.h" 59#include "des_locl.h"
60#include "spr.h"
60 61
61void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc) 62void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc)
62 { 63 {
@@ -107,12 +108,10 @@ void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc)
107 D_ENCRYPT(l,r,28); /* 15 */ 108 D_ENCRYPT(l,r,28); /* 15 */
108 D_ENCRYPT(r,l,30); /* 16 */ 109 D_ENCRYPT(r,l,30); /* 16 */
109#else 110#else
110 for (i=0; i<32; i+=8) 111 for (i=0; i<32; i+=4)
111 { 112 {
112 D_ENCRYPT(l,r,i+0); /* 1 */ 113 D_ENCRYPT(l,r,i+0); /* 1 */
113 D_ENCRYPT(r,l,i+2); /* 2 */ 114 D_ENCRYPT(r,l,i+2); /* 2 */
114 D_ENCRYPT(l,r,i+4); /* 3 */
115 D_ENCRYPT(r,l,i+6); /* 4 */
116 } 115 }
117#endif 116#endif
118 } 117 }
@@ -136,12 +135,10 @@ void DES_encrypt1(DES_LONG *data, DES_key_schedule *ks, int enc)
136 D_ENCRYPT(l,r, 2); /* 2 */ 135 D_ENCRYPT(l,r, 2); /* 2 */
137 D_ENCRYPT(r,l, 0); /* 1 */ 136 D_ENCRYPT(r,l, 0); /* 1 */
138#else 137#else
139 for (i=30; i>0; i-=8) 138 for (i=30; i>0; i-=4)
140 { 139 {
141 D_ENCRYPT(l,r,i-0); /* 16 */ 140 D_ENCRYPT(l,r,i-0); /* 16 */
142 D_ENCRYPT(r,l,i-2); /* 15 */ 141 D_ENCRYPT(r,l,i-2); /* 15 */
143 D_ENCRYPT(l,r,i-4); /* 14 */
144 D_ENCRYPT(r,l,i-6); /* 13 */
145 } 142 }
146#endif 143#endif
147 } 144 }
@@ -203,12 +200,10 @@ void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc)
203 D_ENCRYPT(l,r,28); /* 15 */ 200 D_ENCRYPT(l,r,28); /* 15 */
204 D_ENCRYPT(r,l,30); /* 16 */ 201 D_ENCRYPT(r,l,30); /* 16 */
205#else 202#else
206 for (i=0; i<32; i+=8) 203 for (i=0; i<32; i+=4)
207 { 204 {
208 D_ENCRYPT(l,r,i+0); /* 1 */ 205 D_ENCRYPT(l,r,i+0); /* 1 */
209 D_ENCRYPT(r,l,i+2); /* 2 */ 206 D_ENCRYPT(r,l,i+2); /* 2 */
210 D_ENCRYPT(l,r,i+4); /* 3 */
211 D_ENCRYPT(r,l,i+6); /* 4 */
212 } 207 }
213#endif 208#endif
214 } 209 }
@@ -232,12 +227,10 @@ void DES_encrypt2(DES_LONG *data, DES_key_schedule *ks, int enc)
232 D_ENCRYPT(l,r, 2); /* 2 */ 227 D_ENCRYPT(l,r, 2); /* 2 */
233 D_ENCRYPT(r,l, 0); /* 1 */ 228 D_ENCRYPT(r,l, 0); /* 1 */
234#else 229#else
235 for (i=30; i>0; i-=8) 230 for (i=30; i>0; i-=4)
236 { 231 {
237 D_ENCRYPT(l,r,i-0); /* 16 */ 232 D_ENCRYPT(l,r,i-0); /* 16 */
238 D_ENCRYPT(r,l,i-2); /* 15 */ 233 D_ENCRYPT(r,l,i-2); /* 15 */
239 D_ENCRYPT(l,r,i-4); /* 14 */
240 D_ENCRYPT(r,l,i-6); /* 13 */
241 } 234 }
242#endif 235#endif
243 } 236 }
@@ -289,8 +282,6 @@ void DES_decrypt3(DES_LONG *data, DES_key_schedule *ks1,
289 282
290#ifndef DES_DEFAULT_OPTIONS 283#ifndef DES_DEFAULT_OPTIONS
291 284
292#if !defined(OPENSSL_FIPS_DES_ASM)
293
294#undef CBC_ENC_C__DONT_UPDATE_IV 285#undef CBC_ENC_C__DONT_UPDATE_IV
295#include "ncbc_enc.c" /* DES_ncbc_encrypt */ 286#include "ncbc_enc.c" /* DES_ncbc_encrypt */
296 287
@@ -406,6 +397,4 @@ void DES_ede3_cbc_encrypt(const unsigned char *input, unsigned char *output,
406 tin[0]=tin[1]=0; 397 tin[0]=tin[1]=0;
407 } 398 }
408 399
409#endif
410
411#endif /* DES_DEFAULT_OPTIONS */ 400#endif /* DES_DEFAULT_OPTIONS */
diff --git a/src/lib/libssl/src/crypto/des/des_locl.h b/src/lib/libssl/src/crypto/des/des_locl.h
index 4b9ecff233..a3b512e9b0 100644
--- a/src/lib/libssl/src/crypto/des/des_locl.h
+++ b/src/lib/libssl/src/crypto/des/des_locl.h
@@ -61,7 +61,7 @@
61 61
62#include <openssl/e_os2.h> 62#include <openssl/e_os2.h>
63 63
64#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN16) 64#if defined(OPENSSL_SYS_WIN32)
65#ifndef OPENSSL_SYS_MSDOS 65#ifndef OPENSSL_SYS_MSDOS
66#define OPENSSL_SYS_MSDOS 66#define OPENSSL_SYS_MSDOS
67#endif 67#endif
@@ -425,4 +425,8 @@ extern const DES_LONG DES_SPtrans[8][64];
425 425
426void fcrypt_body(DES_LONG *out,DES_key_schedule *ks, 426void fcrypt_body(DES_LONG *out,DES_key_schedule *ks,
427 DES_LONG Eswap0, DES_LONG Eswap1); 427 DES_LONG Eswap0, DES_LONG Eswap1);
428
429#ifdef OPENSSL_SMALL_FOOTPRINT
430#undef DES_UNROLL
431#endif
428#endif 432#endif
diff --git a/src/lib/libssl/src/crypto/des/ecb_enc.c b/src/lib/libssl/src/crypto/des/ecb_enc.c
index 75ae6cf8bb..0684e769b3 100644
--- a/src/lib/libssl/src/crypto/des/ecb_enc.c
+++ b/src/lib/libssl/src/crypto/des/ecb_enc.c
@@ -57,7 +57,53 @@
57 */ 57 */
58 58
59#include "des_locl.h" 59#include "des_locl.h"
60#include "spr.h" 60#include "des_ver.h"
61#include <openssl/opensslv.h>
62#include <openssl/bio.h>
63
64OPENSSL_GLOBAL const char libdes_version[]="libdes" OPENSSL_VERSION_PTEXT;
65OPENSSL_GLOBAL const char DES_version[]="DES" OPENSSL_VERSION_PTEXT;
66
67const char *DES_options(void)
68 {
69 static int init=1;
70 static char buf[32];
71
72 if (init)
73 {
74 const char *ptr,*unroll,*risc,*size;
75
76#ifdef DES_PTR
77 ptr="ptr";
78#else
79 ptr="idx";
80#endif
81#if defined(DES_RISC1) || defined(DES_RISC2)
82#ifdef DES_RISC1
83 risc="risc1";
84#endif
85#ifdef DES_RISC2
86 risc="risc2";
87#endif
88#else
89 risc="cisc";
90#endif
91#ifdef DES_UNROLL
92 unroll="16";
93#else
94 unroll="2";
95#endif
96 if (sizeof(DES_LONG) != sizeof(long))
97 size="int";
98 else
99 size="long";
100 BIO_snprintf(buf,sizeof buf,"des(%s,%s,%s,%s)",ptr,risc,unroll,
101 size);
102 init=0;
103 }
104 return(buf);
105 }
106
61 107
62void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output, 108void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output,
63 DES_key_schedule *ks, int enc) 109 DES_key_schedule *ks, int enc)
diff --git a/src/lib/libssl/src/crypto/des/enc_read.c b/src/lib/libssl/src/crypto/des/enc_read.c
index e7da2ec66b..edb6620d08 100644
--- a/src/lib/libssl/src/crypto/des/enc_read.c
+++ b/src/lib/libssl/src/crypto/des/enc_read.c
@@ -63,7 +63,7 @@
63 63
64/* This has some uglies in it but it works - even over sockets. */ 64/* This has some uglies in it but it works - even over sockets. */
65/*extern int errno;*/ 65/*extern int errno;*/
66OPENSSL_IMPLEMENT_GLOBAL(int,DES_rw_mode)=DES_PCBC_MODE; 66OPENSSL_IMPLEMENT_GLOBAL(int,DES_rw_mode,DES_PCBC_MODE)
67 67
68 68
69/* 69/*
@@ -87,6 +87,9 @@ OPENSSL_IMPLEMENT_GLOBAL(int,DES_rw_mode)=DES_PCBC_MODE;
87int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched, 87int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
88 DES_cblock *iv) 88 DES_cblock *iv)
89 { 89 {
90#if defined(OPENSSL_NO_POSIX_IO)
91 return(0);
92#else
90 /* data to be unencrypted */ 93 /* data to be unencrypted */
91 int net_num=0; 94 int net_num=0;
92 static unsigned char *net=NULL; 95 static unsigned char *net=NULL;
@@ -147,7 +150,7 @@ int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
147 /* first - get the length */ 150 /* first - get the length */
148 while (net_num < HDRSIZE) 151 while (net_num < HDRSIZE)
149 { 152 {
150#ifndef _WIN32 153#ifndef OPENSSL_SYS_WIN32
151 i=read(fd,(void *)&(net[net_num]),HDRSIZE-net_num); 154 i=read(fd,(void *)&(net[net_num]),HDRSIZE-net_num);
152#else 155#else
153 i=_read(fd,(void *)&(net[net_num]),HDRSIZE-net_num); 156 i=_read(fd,(void *)&(net[net_num]),HDRSIZE-net_num);
@@ -173,7 +176,11 @@ int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
173 net_num=0; 176 net_num=0;
174 while (net_num < rnum) 177 while (net_num < rnum)
175 { 178 {
179#ifndef OPENSSL_SYS_WIN32
176 i=read(fd,(void *)&(net[net_num]),rnum-net_num); 180 i=read(fd,(void *)&(net[net_num]),rnum-net_num);
181#else
182 i=_read(fd,(void *)&(net[net_num]),rnum-net_num);
183#endif
177#ifdef EINTR 184#ifdef EINTR
178 if ((i == -1) && (errno == EINTR)) continue; 185 if ((i == -1) && (errno == EINTR)) continue;
179#endif 186#endif
@@ -228,5 +235,6 @@ int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
228 } 235 }
229 } 236 }
230 return num; 237 return num;
238#endif /* OPENSSL_NO_POSIX_IO */
231 } 239 }
232 240
diff --git a/src/lib/libssl/src/crypto/des/enc_writ.c b/src/lib/libssl/src/crypto/des/enc_writ.c
index c2f032c9a6..2353ac1e89 100644
--- a/src/lib/libssl/src/crypto/des/enc_writ.c
+++ b/src/lib/libssl/src/crypto/des/enc_writ.c
@@ -80,6 +80,9 @@
80int DES_enc_write(int fd, const void *_buf, int len, 80int DES_enc_write(int fd, const void *_buf, int len,
81 DES_key_schedule *sched, DES_cblock *iv) 81 DES_key_schedule *sched, DES_cblock *iv)
82 { 82 {
83#if defined(OPENSSL_NO_POSIX_IO)
84 return (-1);
85#else
83#ifdef _LIBC 86#ifdef _LIBC
84 extern unsigned long time(); 87 extern unsigned long time();
85 extern int write(); 88 extern int write();
@@ -172,4 +175,5 @@ int DES_enc_write(int fd, const void *_buf, int len,
172 } 175 }
173 176
174 return(len); 177 return(len);
178#endif /* OPENSSL_NO_POSIX_IO */
175 } 179 }
diff --git a/src/lib/libssl/src/crypto/des/fcrypt_b.c b/src/lib/libssl/src/crypto/des/fcrypt_b.c
index 1390138787..8822816938 100644
--- a/src/lib/libssl/src/crypto/des/fcrypt_b.c
+++ b/src/lib/libssl/src/crypto/des/fcrypt_b.c
@@ -100,12 +100,10 @@ void fcrypt_body(DES_LONG *out, DES_key_schedule *ks, DES_LONG Eswap0,
100#ifndef DES_UNROLL 100#ifndef DES_UNROLL
101 register int i; 101 register int i;
102 102
103 for (i=0; i<32; i+=8) 103 for (i=0; i<32; i+=4)
104 { 104 {
105 D_ENCRYPT(l,r,i+0); /* 1 */ 105 D_ENCRYPT(l,r,i+0); /* 1 */
106 D_ENCRYPT(r,l,i+2); /* 2 */ 106 D_ENCRYPT(r,l,i+2); /* 2 */
107 D_ENCRYPT(l,r,i+4); /* 1 */
108 D_ENCRYPT(r,l,i+6); /* 2 */
109 } 107 }
110#else 108#else
111 D_ENCRYPT(l,r, 0); /* 1 */ 109 D_ENCRYPT(l,r, 0); /* 1 */
diff --git a/src/lib/libssl/src/crypto/des/rpc_des.h b/src/lib/libssl/src/crypto/des/rpc_des.h
index 4cbb4d2dcd..41328d7965 100644
--- a/src/lib/libssl/src/crypto/des/rpc_des.h
+++ b/src/lib/libssl/src/crypto/des/rpc_des.h
@@ -122,10 +122,10 @@ struct desparams {
122/* 122/*
123 * Encrypt an arbitrary sized buffer 123 * Encrypt an arbitrary sized buffer
124 */ 124 */
125#define DESIOCBLOCK _IOWR(d, 6, struct desparams) 125#define DESIOCBLOCK _IOWR('d', 6, struct desparams)
126 126
127/* 127/*
128 * Encrypt of small amount of data, quickly 128 * Encrypt of small amount of data, quickly
129 */ 129 */
130#define DESIOCQUICK _IOWR(d, 7, struct desparams) 130#define DESIOCQUICK _IOWR('d', 7, struct desparams)
131 131
diff --git a/src/lib/libssl/src/crypto/des/set_key.c b/src/lib/libssl/src/crypto/des/set_key.c
index c0806d593c..3004cc3ab3 100644
--- a/src/lib/libssl/src/crypto/des/set_key.c
+++ b/src/lib/libssl/src/crypto/des/set_key.c
@@ -64,12 +64,8 @@
64 * 1.0 First working version 64 * 1.0 First working version
65 */ 65 */
66#include "des_locl.h" 66#include "des_locl.h"
67#ifdef OPENSSL_FIPS
68#include <openssl/fips.h>
69#endif
70
71 67
72OPENSSL_IMPLEMENT_GLOBAL(int,DES_check_key); /* defaults to false */ 68OPENSSL_IMPLEMENT_GLOBAL(int,DES_check_key,0) /* defaults to false */
73 69
74static const unsigned char odd_parity[256]={ 70static const unsigned char odd_parity[256]={
75 1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14, 71 1, 1, 2, 2, 4, 4, 7, 7, 8, 8, 11, 11, 13, 13, 14, 14,
@@ -340,7 +336,7 @@ int DES_set_key_checked(const_DES_cblock *key, DES_key_schedule *schedule)
340 336
341void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule) 337void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule)
342 { 338 {
343 static int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0}; 339 static const int shifts2[16]={0,0,1,1,1,1,1,1,0,1,1,1,1,1,1,0};
344 register DES_LONG c,d,t,s,t2; 340 register DES_LONG c,d,t,s,t2;
345 register const unsigned char *in; 341 register const unsigned char *in;
346 register DES_LONG *k; 342 register DES_LONG *k;
@@ -353,10 +349,6 @@ void DES_set_key_unchecked(const_DES_cblock *key, DES_key_schedule *schedule)
353 k = &schedule->ks->deslong[0]; 349 k = &schedule->ks->deslong[0];
354 in = &(*key)[0]; 350 in = &(*key)[0];
355 351
356#ifdef OPENSSL_FIPS
357 FIPS_selftest_check();
358#endif
359
360 c2l(in,c); 352 c2l(in,c);
361 c2l(in,d); 353 c2l(in,d);
362 354
@@ -413,4 +405,3 @@ void des_fixup_key_parity(des_cblock *key)
413 des_set_odd_parity(key); 405 des_set_odd_parity(key);
414 } 406 }
415*/ 407*/
416
diff --git a/src/lib/libssl/src/crypto/des/xcbc_enc.c b/src/lib/libssl/src/crypto/des/xcbc_enc.c
index dc0c761b71..058cab6bce 100644
--- a/src/lib/libssl/src/crypto/des/xcbc_enc.c
+++ b/src/lib/libssl/src/crypto/des/xcbc_enc.c
@@ -61,7 +61,7 @@
61/* RSA's DESX */ 61/* RSA's DESX */
62 62
63#if 0 /* broken code, preserved just in case anyone specifically looks for this */ 63#if 0 /* broken code, preserved just in case anyone specifically looks for this */
64static unsigned char desx_white_in2out[256]={ 64static const unsigned char desx_white_in2out[256]={
650xBD,0x56,0xEA,0xF2,0xA2,0xF1,0xAC,0x2A,0xB0,0x93,0xD1,0x9C,0x1B,0x33,0xFD,0xD0, 650xBD,0x56,0xEA,0xF2,0xA2,0xF1,0xAC,0x2A,0xB0,0x93,0xD1,0x9C,0x1B,0x33,0xFD,0xD0,
660x30,0x04,0xB6,0xDC,0x7D,0xDF,0x32,0x4B,0xF7,0xCB,0x45,0x9B,0x31,0xBB,0x21,0x5A, 660x30,0x04,0xB6,0xDC,0x7D,0xDF,0x32,0x4B,0xF7,0xCB,0x45,0x9B,0x31,0xBB,0x21,0x5A,
670x41,0x9F,0xE1,0xD9,0x4A,0x4D,0x9E,0xDA,0xA0,0x68,0x2C,0xC3,0x27,0x5F,0x80,0x36, 670x41,0x9F,0xE1,0xD9,0x4A,0x4D,0x9E,0xDA,0xA0,0x68,0x2C,0xC3,0x27,0x5F,0x80,0x36,
diff --git a/src/lib/libssl/src/crypto/dh/Makefile b/src/lib/libssl/src/crypto/dh/Makefile
index d01fa960eb..f23b4f7fde 100644
--- a/src/lib/libssl/src/crypto/dh/Makefile
+++ b/src/lib/libssl/src/crypto/dh/Makefile
@@ -17,8 +17,10 @@ TEST= dhtest.c
17APPS= 17APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= dh_asn1.c dh_gen.c dh_key.c dh_lib.c dh_check.c dh_err.c dh_depr.c 20LIBSRC= dh_asn1.c dh_gen.c dh_key.c dh_lib.c dh_check.c dh_err.c dh_depr.c \
21LIBOBJ= dh_asn1.o dh_gen.o dh_key.o dh_lib.o dh_check.o dh_err.o dh_depr.o 21 dh_ameth.c dh_pmeth.c dh_prn.c
22LIBOBJ= dh_asn1.o dh_gen.o dh_key.o dh_lib.o dh_check.o dh_err.o dh_depr.o \
23 dh_ameth.o dh_pmeth.o dh_prn.o
22 24
23SRC= $(LIBSRC) 25SRC= $(LIBSRC)
24 26
@@ -33,7 +35,7 @@ top:
33all: lib 35all: lib
34 36
35lib: $(LIBOBJ) 37lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 38 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 39 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 40 @touch lib
39 41
@@ -74,6 +76,21 @@ clean:
74 76
75# DO NOT DELETE THIS LINE -- make depend depends on it. 77# DO NOT DELETE THIS LINE -- make depend depends on it.
76 78
79dh_ameth.o: ../../e_os.h ../../include/openssl/asn1.h
80dh_ameth.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
81dh_ameth.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
82dh_ameth.o: ../../include/openssl/dh.h ../../include/openssl/e_os2.h
83dh_ameth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
84dh_ameth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
85dh_ameth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
86dh_ameth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
87dh_ameth.o: ../../include/openssl/opensslconf.h
88dh_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
89dh_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
90dh_ameth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
91dh_ameth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
92dh_ameth.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
93dh_ameth.o: dh_ameth.c
77dh_asn1.o: ../../e_os.h ../../include/openssl/asn1.h 94dh_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
78dh_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 95dh_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
79dh_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 96dh_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
@@ -129,11 +146,35 @@ dh_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
129dh_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 146dh_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
130dh_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 147dh_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
131dh_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h 148dh_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h
132dh_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 149dh_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
133dh_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 150dh_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
134dh_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 151dh_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
135dh_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 152dh_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
136dh_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 153dh_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
137dh_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 154dh_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
138dh_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 155dh_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
139dh_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h dh_lib.c 156dh_lib.o: ../cryptlib.h dh_lib.c
157dh_pmeth.o: ../../e_os.h ../../include/openssl/asn1.h
158dh_pmeth.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
159dh_pmeth.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
160dh_pmeth.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
161dh_pmeth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
162dh_pmeth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
163dh_pmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
164dh_pmeth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
165dh_pmeth.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
166dh_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
167dh_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
168dh_pmeth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
169dh_pmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
170dh_pmeth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h ../evp/evp_locl.h
171dh_pmeth.o: dh_pmeth.c
172dh_prn.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
173dh_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
174dh_prn.o: ../../include/openssl/dh.h ../../include/openssl/e_os2.h
175dh_prn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
176dh_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
177dh_prn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
178dh_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
179dh_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
180dh_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h dh_prn.c
diff --git a/src/lib/libssl/src/crypto/dh/dh.h b/src/lib/libssl/src/crypto/dh/dh.h
index 10475ac4b3..849309a489 100644
--- a/src/lib/libssl/src/crypto/dh/dh.h
+++ b/src/lib/libssl/src/crypto/dh/dh.h
@@ -77,8 +77,6 @@
77# define OPENSSL_DH_MAX_MODULUS_BITS 10000 77# define OPENSSL_DH_MAX_MODULUS_BITS 10000
78#endif 78#endif
79 79
80#define OPENSSL_DH_FIPS_MIN_MODULUS_BITS 1024
81
82#define DH_FLAG_CACHE_MONT_P 0x01 80#define DH_FLAG_CACHE_MONT_P 0x01
83#define DH_FLAG_NO_EXP_CONSTTIME 0x02 /* new with 0.9.7h; the built-in DH 81#define DH_FLAG_NO_EXP_CONSTTIME 0x02 /* new with 0.9.7h; the built-in DH
84 * implementation now uses constant time 82 * implementation now uses constant time
@@ -159,7 +157,6 @@ struct dh_st
159 this for backward compatibility: */ 157 this for backward compatibility: */
160#define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME 158#define DH_CHECK_P_NOT_STRONG_PRIME DH_CHECK_P_NOT_SAFE_PRIME
161 159
162#define DHparams_dup(x) ASN1_dup_of_const(DH,i2d_DHparams,d2i_DHparams,x)
163#define d2i_DHparams_fp(fp,x) (DH *)ASN1_d2i_fp((char *(*)())DH_new, \ 160#define d2i_DHparams_fp(fp,x) (DH *)ASN1_d2i_fp((char *(*)())DH_new, \
164 (char *(*)())d2i_DHparams,(fp),(unsigned char **)(x)) 161 (char *(*)())d2i_DHparams,(fp),(unsigned char **)(x))
165#define i2d_DHparams_fp(fp,x) ASN1_i2d_fp(i2d_DHparams,(fp), \ 162#define i2d_DHparams_fp(fp,x) ASN1_i2d_fp(i2d_DHparams,(fp), \
@@ -167,12 +164,9 @@ struct dh_st
167#define d2i_DHparams_bio(bp,x) ASN1_d2i_bio_of(DH,DH_new,d2i_DHparams,bp,x) 164#define d2i_DHparams_bio(bp,x) ASN1_d2i_bio_of(DH,DH_new,d2i_DHparams,bp,x)
168#define i2d_DHparams_bio(bp,x) ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x) 165#define i2d_DHparams_bio(bp,x) ASN1_i2d_bio_of_const(DH,i2d_DHparams,bp,x)
169 166
170const DH_METHOD *DH_OpenSSL(void); 167DH *DHparams_dup(DH *);
171 168
172#ifdef OPENSSL_FIPS 169const DH_METHOD *DH_OpenSSL(void);
173DH * FIPS_dh_new(void);
174void FIPS_dh_free(DH *dh);
175#endif
176 170
177void DH_set_default_method(const DH_METHOD *meth); 171void DH_set_default_method(const DH_METHOD *meth);
178const DH_METHOD *DH_get_default_method(void); 172const DH_METHOD *DH_get_default_method(void);
@@ -212,6 +206,18 @@ int DHparams_print(BIO *bp, const DH *x);
212int DHparams_print(char *bp, const DH *x); 206int DHparams_print(char *bp, const DH *x);
213#endif 207#endif
214 208
209#define EVP_PKEY_CTX_set_dh_paramgen_prime_len(ctx, len) \
210 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \
211 EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN, len, NULL)
212
213#define EVP_PKEY_CTX_set_dh_paramgen_generator(ctx, gen) \
214 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DH, EVP_PKEY_OP_PARAMGEN, \
215 EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR, gen, NULL)
216
217#define EVP_PKEY_CTRL_DH_PARAMGEN_PRIME_LEN (EVP_PKEY_ALG_CTRL + 1)
218#define EVP_PKEY_CTRL_DH_PARAMGEN_GENERATOR (EVP_PKEY_ALG_CTRL + 2)
219
220
215/* BEGIN ERROR CODES */ 221/* BEGIN ERROR CODES */
216/* The following lines are auto generated by the script mkerr.pl. Any changes 222/* The following lines are auto generated by the script mkerr.pl. Any changes
217 * made after this point may be overwritten when the script is next run. 223 * made after this point may be overwritten when the script is next run.
@@ -222,22 +228,31 @@ void ERR_load_DH_strings(void);
222 228
223/* Function codes. */ 229/* Function codes. */
224#define DH_F_COMPUTE_KEY 102 230#define DH_F_COMPUTE_KEY 102
225#define DH_F_DHPARAMS_PRINT 100
226#define DH_F_DHPARAMS_PRINT_FP 101 231#define DH_F_DHPARAMS_PRINT_FP 101
227#define DH_F_DH_BUILTIN_GENPARAMS 106 232#define DH_F_DH_BUILTIN_GENPARAMS 106
228#define DH_F_DH_COMPUTE_KEY 107
229#define DH_F_DH_GENERATE_KEY 108
230#define DH_F_DH_GENERATE_PARAMETERS 109
231#define DH_F_DH_NEW_METHOD 105 233#define DH_F_DH_NEW_METHOD 105
234#define DH_F_DH_PARAM_DECODE 107
235#define DH_F_DH_PRIV_DECODE 110
236#define DH_F_DH_PRIV_ENCODE 111
237#define DH_F_DH_PUB_DECODE 108
238#define DH_F_DH_PUB_ENCODE 109
239#define DH_F_DO_DH_PRINT 100
232#define DH_F_GENERATE_KEY 103 240#define DH_F_GENERATE_KEY 103
233#define DH_F_GENERATE_PARAMETERS 104 241#define DH_F_GENERATE_PARAMETERS 104
242#define DH_F_PKEY_DH_DERIVE 112
243#define DH_F_PKEY_DH_KEYGEN 113
234 244
235/* Reason codes. */ 245/* Reason codes. */
236#define DH_R_BAD_GENERATOR 101 246#define DH_R_BAD_GENERATOR 101
247#define DH_R_BN_DECODE_ERROR 109
248#define DH_R_BN_ERROR 106
249#define DH_R_DECODE_ERROR 104
237#define DH_R_INVALID_PUBKEY 102 250#define DH_R_INVALID_PUBKEY 102
238#define DH_R_KEY_SIZE_TOO_SMALL 104 251#define DH_R_KEYS_NOT_SET 108
239#define DH_R_MODULUS_TOO_LARGE 103 252#define DH_R_MODULUS_TOO_LARGE 103
253#define DH_R_NO_PARAMETERS_SET 107
240#define DH_R_NO_PRIVATE_VALUE 100 254#define DH_R_NO_PRIVATE_VALUE 100
255#define DH_R_PARAMETER_ENCODING_ERROR 105
241 256
242#ifdef __cplusplus 257#ifdef __cplusplus
243} 258}
diff --git a/src/lib/libssl/src/crypto/dh/dh_asn1.c b/src/lib/libssl/src/crypto/dh/dh_asn1.c
index 76740af2bd..0b4357d605 100644
--- a/src/lib/libssl/src/crypto/dh/dh_asn1.c
+++ b/src/lib/libssl/src/crypto/dh/dh_asn1.c
@@ -3,7 +3,7 @@
3 * project 2000. 3 * project 2000.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 2000 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -64,7 +64,8 @@
64#include <openssl/asn1t.h> 64#include <openssl/asn1t.h>
65 65
66/* Override the default free and new methods */ 66/* Override the default free and new methods */
67static int dh_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 67static int dh_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
68 void *exarg)
68{ 69{
69 if(operation == ASN1_OP_NEW_PRE) { 70 if(operation == ASN1_OP_NEW_PRE) {
70 *pval = (ASN1_VALUE *)DH_new(); 71 *pval = (ASN1_VALUE *)DH_new();
@@ -85,3 +86,8 @@ ASN1_SEQUENCE_cb(DHparams, dh_cb) = {
85} ASN1_SEQUENCE_END_cb(DH, DHparams) 86} ASN1_SEQUENCE_END_cb(DH, DHparams)
86 87
87IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DH, DHparams, DHparams) 88IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DH, DHparams, DHparams)
89
90DH *DHparams_dup(DH *dh)
91 {
92 return ASN1_item_dup(ASN1_ITEM_rptr(DHparams), dh);
93 }
diff --git a/src/lib/libssl/src/crypto/dh/dh_check.c b/src/lib/libssl/src/crypto/dh/dh_check.c
index 316cb9221d..066898174e 100644
--- a/src/lib/libssl/src/crypto/dh/dh_check.c
+++ b/src/lib/libssl/src/crypto/dh/dh_check.c
@@ -70,8 +70,6 @@
70 * should hold. 70 * should hold.
71 */ 71 */
72 72
73#ifndef OPENSSL_FIPS
74
75int DH_check(const DH *dh, int *ret) 73int DH_check(const DH *dh, int *ret)
76 { 74 {
77 int ok=0; 75 int ok=0;
@@ -130,11 +128,11 @@ int DH_check_pub_key(const DH *dh, const BIGNUM *pub_key, int *ret)
130 q=BN_new(); 128 q=BN_new();
131 if (q == NULL) goto err; 129 if (q == NULL) goto err;
132 BN_set_word(q,1); 130 BN_set_word(q,1);
133 if (BN_cmp(pub_key,q) <= 0) 131 if (BN_cmp(pub_key,q)<=0)
134 *ret|=DH_CHECK_PUBKEY_TOO_SMALL; 132 *ret|=DH_CHECK_PUBKEY_TOO_SMALL;
135 BN_copy(q,dh->p); 133 BN_copy(q,dh->p);
136 BN_sub_word(q,1); 134 BN_sub_word(q,1);
137 if (BN_cmp(pub_key,q) >= 0) 135 if (BN_cmp(pub_key,q)>=0)
138 *ret|=DH_CHECK_PUBKEY_TOO_LARGE; 136 *ret|=DH_CHECK_PUBKEY_TOO_LARGE;
139 137
140 ok = 1; 138 ok = 1;
@@ -142,5 +140,3 @@ err:
142 if (q != NULL) BN_free(q); 140 if (q != NULL) BN_free(q);
143 return(ok); 141 return(ok);
144 } 142 }
145
146#endif
diff --git a/src/lib/libssl/src/crypto/dh/dh_err.c b/src/lib/libssl/src/crypto/dh/dh_err.c
index 13263c81c1..d5cf0c22a3 100644
--- a/src/lib/libssl/src/crypto/dh/dh_err.c
+++ b/src/lib/libssl/src/crypto/dh/dh_err.c
@@ -1,6 +1,6 @@
1/* crypto/dh/dh_err.c */ 1/* crypto/dh/dh_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -71,25 +71,34 @@
71static ERR_STRING_DATA DH_str_functs[]= 71static ERR_STRING_DATA DH_str_functs[]=
72 { 72 {
73{ERR_FUNC(DH_F_COMPUTE_KEY), "COMPUTE_KEY"}, 73{ERR_FUNC(DH_F_COMPUTE_KEY), "COMPUTE_KEY"},
74{ERR_FUNC(DH_F_DHPARAMS_PRINT), "DHparams_print"},
75{ERR_FUNC(DH_F_DHPARAMS_PRINT_FP), "DHparams_print_fp"}, 74{ERR_FUNC(DH_F_DHPARAMS_PRINT_FP), "DHparams_print_fp"},
76{ERR_FUNC(DH_F_DH_BUILTIN_GENPARAMS), "DH_BUILTIN_GENPARAMS"}, 75{ERR_FUNC(DH_F_DH_BUILTIN_GENPARAMS), "DH_BUILTIN_GENPARAMS"},
77{ERR_FUNC(DH_F_DH_COMPUTE_KEY), "DH_compute_key"},
78{ERR_FUNC(DH_F_DH_GENERATE_KEY), "DH_generate_key"},
79{ERR_FUNC(DH_F_DH_GENERATE_PARAMETERS), "DH_generate_parameters"},
80{ERR_FUNC(DH_F_DH_NEW_METHOD), "DH_new_method"}, 76{ERR_FUNC(DH_F_DH_NEW_METHOD), "DH_new_method"},
77{ERR_FUNC(DH_F_DH_PARAM_DECODE), "DH_PARAM_DECODE"},
78{ERR_FUNC(DH_F_DH_PRIV_DECODE), "DH_PRIV_DECODE"},
79{ERR_FUNC(DH_F_DH_PRIV_ENCODE), "DH_PRIV_ENCODE"},
80{ERR_FUNC(DH_F_DH_PUB_DECODE), "DH_PUB_DECODE"},
81{ERR_FUNC(DH_F_DH_PUB_ENCODE), "DH_PUB_ENCODE"},
82{ERR_FUNC(DH_F_DO_DH_PRINT), "DO_DH_PRINT"},
81{ERR_FUNC(DH_F_GENERATE_KEY), "GENERATE_KEY"}, 83{ERR_FUNC(DH_F_GENERATE_KEY), "GENERATE_KEY"},
82{ERR_FUNC(DH_F_GENERATE_PARAMETERS), "GENERATE_PARAMETERS"}, 84{ERR_FUNC(DH_F_GENERATE_PARAMETERS), "GENERATE_PARAMETERS"},
85{ERR_FUNC(DH_F_PKEY_DH_DERIVE), "PKEY_DH_DERIVE"},
86{ERR_FUNC(DH_F_PKEY_DH_KEYGEN), "PKEY_DH_KEYGEN"},
83{0,NULL} 87{0,NULL}
84 }; 88 };
85 89
86static ERR_STRING_DATA DH_str_reasons[]= 90static ERR_STRING_DATA DH_str_reasons[]=
87 { 91 {
88{ERR_REASON(DH_R_BAD_GENERATOR) ,"bad generator"}, 92{ERR_REASON(DH_R_BAD_GENERATOR) ,"bad generator"},
93{ERR_REASON(DH_R_BN_DECODE_ERROR) ,"bn decode error"},
94{ERR_REASON(DH_R_BN_ERROR) ,"bn error"},
95{ERR_REASON(DH_R_DECODE_ERROR) ,"decode error"},
89{ERR_REASON(DH_R_INVALID_PUBKEY) ,"invalid public key"}, 96{ERR_REASON(DH_R_INVALID_PUBKEY) ,"invalid public key"},
90{ERR_REASON(DH_R_KEY_SIZE_TOO_SMALL) ,"key size too small"}, 97{ERR_REASON(DH_R_KEYS_NOT_SET) ,"keys not set"},
91{ERR_REASON(DH_R_MODULUS_TOO_LARGE) ,"modulus too large"}, 98{ERR_REASON(DH_R_MODULUS_TOO_LARGE) ,"modulus too large"},
99{ERR_REASON(DH_R_NO_PARAMETERS_SET) ,"no parameters set"},
92{ERR_REASON(DH_R_NO_PRIVATE_VALUE) ,"no private value"}, 100{ERR_REASON(DH_R_NO_PRIVATE_VALUE) ,"no private value"},
101{ERR_REASON(DH_R_PARAMETER_ENCODING_ERROR),"parameter encoding error"},
93{0,NULL} 102{0,NULL}
94 }; 103 };
95 104
diff --git a/src/lib/libssl/src/crypto/dh/dh_gen.c b/src/lib/libssl/src/crypto/dh/dh_gen.c
index 999e1deb40..cfd5b11868 100644
--- a/src/lib/libssl/src/crypto/dh/dh_gen.c
+++ b/src/lib/libssl/src/crypto/dh/dh_gen.c
@@ -66,8 +66,6 @@
66#include <openssl/bn.h> 66#include <openssl/bn.h>
67#include <openssl/dh.h> 67#include <openssl/dh.h>
68 68
69#ifndef OPENSSL_FIPS
70
71static int dh_builtin_genparams(DH *ret, int prime_len, int generator, BN_GENCB *cb); 69static int dh_builtin_genparams(DH *ret, int prime_len, int generator, BN_GENCB *cb);
72 70
73int DH_generate_parameters_ex(DH *ret, int prime_len, int generator, BN_GENCB *cb) 71int DH_generate_parameters_ex(DH *ret, int prime_len, int generator, BN_GENCB *cb)
@@ -175,5 +173,3 @@ err:
175 } 173 }
176 return ok; 174 return ok;
177 } 175 }
178
179#endif
diff --git a/src/lib/libssl/src/crypto/dh/dh_key.c b/src/lib/libssl/src/crypto/dh/dh_key.c
index 79dd331863..e7db440342 100644
--- a/src/lib/libssl/src/crypto/dh/dh_key.c
+++ b/src/lib/libssl/src/crypto/dh/dh_key.c
@@ -62,8 +62,6 @@
62#include <openssl/rand.h> 62#include <openssl/rand.h>
63#include <openssl/dh.h> 63#include <openssl/dh.h>
64 64
65#ifndef OPENSSL_FIPS
66
67static int generate_key(DH *dh); 65static int generate_key(DH *dh);
68static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh); 66static int compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh);
69static int dh_bn_mod_exp(const DH *dh, BIGNUM *r, 67static int dh_bn_mod_exp(const DH *dh, BIGNUM *r,
@@ -263,5 +261,3 @@ static int dh_finish(DH *dh)
263 BN_MONT_CTX_free(dh->method_mont_p); 261 BN_MONT_CTX_free(dh->method_mont_p);
264 return(1); 262 return(1);
265 } 263 }
266
267#endif
diff --git a/src/lib/libssl/src/crypto/dsa/Makefile b/src/lib/libssl/src/crypto/dsa/Makefile
index 2cc45cdc62..8073c4ecfe 100644
--- a/src/lib/libssl/src/crypto/dsa/Makefile
+++ b/src/lib/libssl/src/crypto/dsa/Makefile
@@ -18,14 +18,14 @@ APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= dsa_gen.c dsa_key.c dsa_lib.c dsa_asn1.c dsa_vrf.c dsa_sign.c \ 20LIBSRC= dsa_gen.c dsa_key.c dsa_lib.c dsa_asn1.c dsa_vrf.c dsa_sign.c \
21 dsa_err.c dsa_ossl.c dsa_depr.c dsa_utl.c 21 dsa_err.c dsa_ossl.c dsa_depr.c dsa_ameth.c dsa_pmeth.c dsa_prn.c
22LIBOBJ= dsa_gen.o dsa_key.o dsa_lib.o dsa_asn1.o dsa_vrf.o dsa_sign.o \ 22LIBOBJ= dsa_gen.o dsa_key.o dsa_lib.o dsa_asn1.o dsa_vrf.o dsa_sign.o \
23 dsa_err.o dsa_ossl.o dsa_depr.o dsa_utl.o 23 dsa_err.o dsa_ossl.o dsa_depr.o dsa_ameth.o dsa_pmeth.o dsa_prn.o
24 24
25SRC= $(LIBSRC) 25SRC= $(LIBSRC)
26 26
27EXHEADER= dsa.h 27EXHEADER= dsa.h
28HEADER= $(EXHEADER) 28HEADER= dsa_locl.h $(EXHEADER)
29 29
30ALL= $(GENERAL) $(SRC) $(HEADER) 30ALL= $(GENERAL) $(SRC) $(HEADER)
31 31
@@ -35,7 +35,7 @@ top:
35all: lib 35all: lib
36 36
37lib: $(LIBOBJ) 37lib: $(LIBOBJ)
38 $(ARX) $(LIB) $(LIBOBJ) 38 $(AR) $(LIB) $(LIBOBJ)
39 $(RANLIB) $(LIB) || echo Never mind. 39 $(RANLIB) $(LIB) || echo Never mind.
40 @touch lib 40 @touch lib
41 41
@@ -76,12 +76,27 @@ clean:
76 76
77# DO NOT DELETE THIS LINE -- make depend depends on it. 77# DO NOT DELETE THIS LINE -- make depend depends on it.
78 78
79dsa_ameth.o: ../../e_os.h ../../include/openssl/asn1.h
80dsa_ameth.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
81dsa_ameth.o: ../../include/openssl/buffer.h ../../include/openssl/cms.h
82dsa_ameth.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
83dsa_ameth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
84dsa_ameth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
85dsa_ameth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
86dsa_ameth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
87dsa_ameth.o: ../../include/openssl/objects.h
88dsa_ameth.o: ../../include/openssl/opensslconf.h
89dsa_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
90dsa_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
91dsa_ameth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
92dsa_ameth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
93dsa_ameth.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
94dsa_ameth.o: dsa_ameth.c
79dsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h 95dsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
80dsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 96dsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
81dsa_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 97dsa_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
82dsa_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 98dsa_asn1.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
83dsa_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 99dsa_asn1.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
84dsa_asn1.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
85dsa_asn1.o: ../../include/openssl/opensslconf.h 100dsa_asn1.o: ../../include/openssl/opensslconf.h
86dsa_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 101dsa_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
87dsa_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 102dsa_asn1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
@@ -91,9 +106,8 @@ dsa_depr.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
91dsa_depr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 106dsa_depr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
92dsa_depr.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 107dsa_depr.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
93dsa_depr.o: ../../include/openssl/err.h ../../include/openssl/evp.h 108dsa_depr.o: ../../include/openssl/err.h ../../include/openssl/evp.h
94dsa_depr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 109dsa_depr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
95dsa_depr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 110dsa_depr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
96dsa_depr.o: ../../include/openssl/opensslconf.h
97dsa_depr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 111dsa_depr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
98dsa_depr.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 112dsa_depr.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
99dsa_depr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 113dsa_depr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -110,13 +124,12 @@ dsa_gen.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
110dsa_gen.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 124dsa_gen.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
111dsa_gen.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 125dsa_gen.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
112dsa_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h 126dsa_gen.o: ../../include/openssl/err.h ../../include/openssl/evp.h
113dsa_gen.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 127dsa_gen.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
114dsa_gen.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 128dsa_gen.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
115dsa_gen.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 129dsa_gen.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
116dsa_gen.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h 130dsa_gen.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
117dsa_gen.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 131dsa_gen.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
118dsa_gen.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 132dsa_gen.o: ../../include/openssl/symhacks.h ../cryptlib.h dsa_gen.c dsa_locl.h
119dsa_gen.o: ../cryptlib.h dsa_gen.c
120dsa_key.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h 133dsa_key.o: ../../e_os.h ../../include/openssl/bio.h ../../include/openssl/bn.h
121dsa_key.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 134dsa_key.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
122dsa_key.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 135dsa_key.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
@@ -132,14 +145,14 @@ dsa_lib.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
132dsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 145dsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
133dsa_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 146dsa_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
134dsa_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h 147dsa_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h
135dsa_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 148dsa_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
136dsa_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 149dsa_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
137dsa_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 150dsa_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
138dsa_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 151dsa_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
139dsa_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 152dsa_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
140dsa_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 153dsa_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
141dsa_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 154dsa_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
142dsa_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h dsa_lib.c 155dsa_lib.o: ../cryptlib.h dsa_lib.c
143dsa_ossl.o: ../../e_os.h ../../include/openssl/asn1.h 156dsa_ossl.o: ../../e_os.h ../../include/openssl/asn1.h
144dsa_ossl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 157dsa_ossl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
145dsa_ossl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 158dsa_ossl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -148,40 +161,48 @@ dsa_ossl.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
148dsa_ossl.o: ../../include/openssl/opensslconf.h 161dsa_ossl.o: ../../include/openssl/opensslconf.h
149dsa_ossl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 162dsa_ossl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
150dsa_ossl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 163dsa_ossl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
151dsa_ossl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 164dsa_ossl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
152dsa_ossl.o: ../cryptlib.h dsa_ossl.c 165dsa_ossl.o: ../../include/openssl/symhacks.h ../cryptlib.h dsa_ossl.c
153dsa_sign.o: ../../e_os.h ../../include/openssl/asn1.h 166dsa_pmeth.o: ../../e_os.h ../../include/openssl/asn1.h
154dsa_sign.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 167dsa_pmeth.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
168dsa_pmeth.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
169dsa_pmeth.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
170dsa_pmeth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
171dsa_pmeth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
172dsa_pmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
173dsa_pmeth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
174dsa_pmeth.o: ../../include/openssl/objects.h
175dsa_pmeth.o: ../../include/openssl/opensslconf.h
176dsa_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
177dsa_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
178dsa_pmeth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
179dsa_pmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
180dsa_pmeth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h ../evp/evp_locl.h
181dsa_pmeth.o: dsa_locl.h dsa_pmeth.c
182dsa_prn.o: ../../e_os.h ../../include/openssl/asn1.h
183dsa_prn.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
184dsa_prn.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
185dsa_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
186dsa_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
187dsa_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
188dsa_prn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
189dsa_prn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
190dsa_prn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
191dsa_prn.o: ../cryptlib.h dsa_prn.c
192dsa_sign.o: ../../e_os.h ../../include/openssl/bio.h
155dsa_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 193dsa_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
156dsa_sign.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 194dsa_sign.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
157dsa_sign.o: ../../include/openssl/err.h ../../include/openssl/fips.h 195dsa_sign.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
158dsa_sign.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h 196dsa_sign.o: ../../include/openssl/opensslconf.h
159dsa_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 197dsa_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
160dsa_sign.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 198dsa_sign.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
161dsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 199dsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
162dsa_sign.o: ../cryptlib.h dsa_sign.c 200dsa_sign.o: ../cryptlib.h dsa_sign.c
163dsa_utl.o: ../../e_os.h ../../include/openssl/asn1.h 201dsa_vrf.o: ../../e_os.h ../../include/openssl/bio.h
164dsa_utl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 202dsa_vrf.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
165dsa_utl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 203dsa_vrf.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
166dsa_utl.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h 204dsa_vrf.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
167dsa_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
168dsa_utl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
169dsa_utl.o: ../../include/openssl/engine.h ../../include/openssl/err.h
170dsa_utl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
171dsa_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
172dsa_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
173dsa_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
174dsa_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
175dsa_utl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
176dsa_utl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
177dsa_utl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h dsa_utl.c
178dsa_vrf.o: ../../e_os.h ../../include/openssl/asn1.h
179dsa_vrf.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
180dsa_vrf.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
181dsa_vrf.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
182dsa_vrf.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
183dsa_vrf.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
184dsa_vrf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 205dsa_vrf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
185dsa_vrf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h 206dsa_vrf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
186dsa_vrf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 207dsa_vrf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
187dsa_vrf.o: ../../include/openssl/symhacks.h ../cryptlib.h dsa_vrf.c 208dsa_vrf.o: ../cryptlib.h dsa_vrf.c
diff --git a/src/lib/libssl/src/crypto/dsa/dsa.h b/src/lib/libssl/src/crypto/dsa/dsa.h
index 702c50d6dc..ac50a5c846 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa.h
+++ b/src/lib/libssl/src/crypto/dsa/dsa.h
@@ -88,8 +88,6 @@
88# define OPENSSL_DSA_MAX_MODULUS_BITS 10000 88# define OPENSSL_DSA_MAX_MODULUS_BITS 10000
89#endif 89#endif
90 90
91#define OPENSSL_DSA_FIPS_MIN_MODULUS_BITS 1024
92
93#define DSA_FLAG_CACHE_MONT_P 0x01 91#define DSA_FLAG_CACHE_MONT_P 0x01
94#define DSA_FLAG_NO_EXP_CONSTTIME 0x02 /* new with 0.9.7h; the built-in DSA 92#define DSA_FLAG_NO_EXP_CONSTTIME 0x02 /* new with 0.9.7h; the built-in DSA
95 * implementation now uses constant time 93 * implementation now uses constant time
@@ -99,25 +97,6 @@
99 * be used for all exponents. 97 * be used for all exponents.
100 */ 98 */
101 99
102/* If this flag is set the DSA method is FIPS compliant and can be used
103 * in FIPS mode. This is set in the validated module method. If an
104 * application sets this flag in its own methods it is its reposibility
105 * to ensure the result is compliant.
106 */
107
108#define DSA_FLAG_FIPS_METHOD 0x0400
109
110/* If this flag is set the operations normally disabled in FIPS mode are
111 * permitted it is then the applications responsibility to ensure that the
112 * usage is compliant.
113 */
114
115#define DSA_FLAG_NON_FIPS_ALLOW 0x0400
116
117#ifdef OPENSSL_FIPS
118#define FIPS_DSA_SIZE_T int
119#endif
120
121#ifdef __cplusplus 100#ifdef __cplusplus
122extern "C" { 101extern "C" {
123#endif 102#endif
@@ -139,7 +118,7 @@ struct dsa_method
139 int (*dsa_sign_setup)(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, 118 int (*dsa_sign_setup)(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp,
140 BIGNUM **rp); 119 BIGNUM **rp);
141 int (*dsa_do_verify)(const unsigned char *dgst, int dgst_len, 120 int (*dsa_do_verify)(const unsigned char *dgst, int dgst_len,
142 DSA_SIG *sig, DSA *dsa); 121 DSA_SIG *sig, DSA *dsa);
143 int (*dsa_mod_exp)(DSA *dsa, BIGNUM *rr, BIGNUM *a1, BIGNUM *p1, 122 int (*dsa_mod_exp)(DSA *dsa, BIGNUM *rr, BIGNUM *a1, BIGNUM *p1,
144 BIGNUM *a2, BIGNUM *p2, BIGNUM *m, BN_CTX *ctx, 123 BIGNUM *a2, BIGNUM *p2, BIGNUM *m, BN_CTX *ctx,
145 BN_MONT_CTX *in_mont); 124 BN_MONT_CTX *in_mont);
@@ -152,7 +131,7 @@ struct dsa_method
152 char *app_data; 131 char *app_data;
153 /* If this is non-NULL, it is used to generate DSA parameters */ 132 /* If this is non-NULL, it is used to generate DSA parameters */
154 int (*dsa_paramgen)(DSA *dsa, int bits, 133 int (*dsa_paramgen)(DSA *dsa, int bits,
155 unsigned char *seed, int seed_len, 134 const unsigned char *seed, int seed_len,
156 int *counter_ret, unsigned long *h_ret, 135 int *counter_ret, unsigned long *h_ret,
157 BN_GENCB *cb); 136 BN_GENCB *cb);
158 /* If this is non-NULL, it is used to generate DSA keys */ 137 /* If this is non-NULL, it is used to generate DSA keys */
@@ -186,7 +165,6 @@ struct dsa_st
186 ENGINE *engine; 165 ENGINE *engine;
187 }; 166 };
188 167
189#define DSAparams_dup(x) ASN1_dup_of_const(DSA,i2d_DSAparams,d2i_DSAparams,x)
190#define d2i_DSAparams_fp(fp,x) (DSA *)ASN1_d2i_fp((char *(*)())DSA_new, \ 168#define d2i_DSAparams_fp(fp,x) (DSA *)ASN1_d2i_fp((char *(*)())DSA_new, \
191 (char *(*)())d2i_DSAparams,(fp),(unsigned char **)(x)) 169 (char *(*)())d2i_DSAparams,(fp),(unsigned char **)(x))
192#define i2d_DSAparams_fp(fp,x) ASN1_i2d_fp(i2d_DSAparams,(fp), \ 170#define i2d_DSAparams_fp(fp,x) ASN1_i2d_fp(i2d_DSAparams,(fp), \
@@ -195,6 +173,7 @@ struct dsa_st
195#define i2d_DSAparams_bio(bp,x) ASN1_i2d_bio_of_const(DSA,i2d_DSAparams,bp,x) 173#define i2d_DSAparams_bio(bp,x) ASN1_i2d_bio_of_const(DSA,i2d_DSAparams,bp,x)
196 174
197 175
176DSA *DSAparams_dup(DSA *x);
198DSA_SIG * DSA_SIG_new(void); 177DSA_SIG * DSA_SIG_new(void);
199void DSA_SIG_free(DSA_SIG *a); 178void DSA_SIG_free(DSA_SIG *a);
200int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp); 179int i2d_DSA_SIG(const DSA_SIG *a, unsigned char **pp);
@@ -210,11 +189,6 @@ void DSA_set_default_method(const DSA_METHOD *);
210const DSA_METHOD *DSA_get_default_method(void); 189const DSA_METHOD *DSA_get_default_method(void);
211int DSA_set_method(DSA *dsa, const DSA_METHOD *); 190int DSA_set_method(DSA *dsa, const DSA_METHOD *);
212 191
213#ifdef OPENSSL_FIPS
214DSA * FIPS_dsa_new(void);
215void FIPS_dsa_free (DSA *r);
216#endif
217
218DSA * DSA_new(void); 192DSA * DSA_new(void);
219DSA * DSA_new_method(ENGINE *engine); 193DSA * DSA_new_method(ENGINE *engine);
220void DSA_free (DSA *r); 194void DSA_free (DSA *r);
@@ -246,7 +220,7 @@ DSA * DSA_generate_parameters(int bits,
246 220
247/* New version */ 221/* New version */
248int DSA_generate_parameters_ex(DSA *dsa, int bits, 222int DSA_generate_parameters_ex(DSA *dsa, int bits,
249 unsigned char *seed,int seed_len, 223 const unsigned char *seed,int seed_len,
250 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb); 224 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb);
251 225
252int DSA_generate_key(DSA *a); 226int DSA_generate_key(DSA *a);
@@ -275,10 +249,13 @@ int DSA_print_fp(FILE *bp, const DSA *x, int off);
275DH *DSA_dup_DH(const DSA *r); 249DH *DSA_dup_DH(const DSA *r);
276#endif 250#endif
277 251
278#ifdef OPENSSL_FIPS 252#define EVP_PKEY_CTX_set_dsa_paramgen_bits(ctx, nbits) \
279int FIPS_dsa_sig_encode(unsigned char *out, DSA_SIG *sig); 253 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_DSA, EVP_PKEY_OP_PARAMGEN, \
280int FIPS_dsa_sig_decode(DSA_SIG *sig, const unsigned char *in, int inlen); 254 EVP_PKEY_CTRL_DSA_PARAMGEN_BITS, nbits, NULL)
281#endif 255
256#define EVP_PKEY_CTRL_DSA_PARAMGEN_BITS (EVP_PKEY_ALG_CTRL + 1)
257#define EVP_PKEY_CTRL_DSA_PARAMGEN_Q_BITS (EVP_PKEY_ALG_CTRL + 2)
258#define EVP_PKEY_CTRL_DSA_PARAMGEN_MD (EVP_PKEY_ALG_CTRL + 3)
282 259
283/* BEGIN ERROR CODES */ 260/* BEGIN ERROR CODES */
284/* The following lines are auto generated by the script mkerr.pl. Any changes 261/* The following lines are auto generated by the script mkerr.pl. Any changes
@@ -290,33 +267,39 @@ void ERR_load_DSA_strings(void);
290 267
291/* Function codes. */ 268/* Function codes. */
292#define DSA_F_D2I_DSA_SIG 110 269#define DSA_F_D2I_DSA_SIG 110
270#define DSA_F_DO_DSA_PRINT 104
293#define DSA_F_DSAPARAMS_PRINT 100 271#define DSA_F_DSAPARAMS_PRINT 100
294#define DSA_F_DSAPARAMS_PRINT_FP 101 272#define DSA_F_DSAPARAMS_PRINT_FP 101
295#define DSA_F_DSA_BUILTIN_KEYGEN 119
296#define DSA_F_DSA_BUILTIN_PARAMGEN 118
297#define DSA_F_DSA_DO_SIGN 112 273#define DSA_F_DSA_DO_SIGN 112
298#define DSA_F_DSA_DO_VERIFY 113 274#define DSA_F_DSA_DO_VERIFY 113
299#define DSA_F_DSA_GENERATE_PARAMETERS 117
300#define DSA_F_DSA_NEW_METHOD 103 275#define DSA_F_DSA_NEW_METHOD 103
301#define DSA_F_DSA_PRINT 104 276#define DSA_F_DSA_PARAM_DECODE 119
302#define DSA_F_DSA_PRINT_FP 105 277#define DSA_F_DSA_PRINT_FP 105
303#define DSA_F_DSA_SET_DEFAULT_METHOD 115 278#define DSA_F_DSA_PRIV_DECODE 115
304#define DSA_F_DSA_SET_METHOD 116 279#define DSA_F_DSA_PRIV_ENCODE 116
280#define DSA_F_DSA_PUB_DECODE 117
281#define DSA_F_DSA_PUB_ENCODE 118
305#define DSA_F_DSA_SIGN 106 282#define DSA_F_DSA_SIGN 106
306#define DSA_F_DSA_SIGN_SETUP 107 283#define DSA_F_DSA_SIGN_SETUP 107
307#define DSA_F_DSA_SIG_NEW 109 284#define DSA_F_DSA_SIG_NEW 109
308#define DSA_F_DSA_VERIFY 108 285#define DSA_F_DSA_VERIFY 108
309#define DSA_F_I2D_DSA_SIG 111 286#define DSA_F_I2D_DSA_SIG 111
287#define DSA_F_OLD_DSA_PRIV_DECODE 122
288#define DSA_F_PKEY_DSA_CTRL 120
289#define DSA_F_PKEY_DSA_KEYGEN 121
310#define DSA_F_SIG_CB 114 290#define DSA_F_SIG_CB 114
311 291
312/* Reason codes. */ 292/* Reason codes. */
313#define DSA_R_BAD_Q_VALUE 102 293#define DSA_R_BAD_Q_VALUE 102
294#define DSA_R_BN_DECODE_ERROR 108
295#define DSA_R_BN_ERROR 109
314#define DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 100 296#define DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 100
315#define DSA_R_KEY_SIZE_TOO_SMALL 106 297#define DSA_R_DECODE_ERROR 104
298#define DSA_R_INVALID_DIGEST_TYPE 106
316#define DSA_R_MISSING_PARAMETERS 101 299#define DSA_R_MISSING_PARAMETERS 101
317#define DSA_R_MODULUS_TOO_LARGE 103 300#define DSA_R_MODULUS_TOO_LARGE 103
318#define DSA_R_NON_FIPS_METHOD 104 301#define DSA_R_NO_PARAMETERS_SET 107
319#define DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE 105 302#define DSA_R_PARAMETER_ENCODING_ERROR 105
320 303
321#ifdef __cplusplus 304#ifdef __cplusplus
322} 305}
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_asn1.c b/src/lib/libssl/src/crypto/dsa/dsa_asn1.c
index 0645facb4b..c37460b2d6 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_asn1.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_asn1.c
@@ -3,7 +3,7 @@
3 * project 2000. 3 * project 2000.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 2000 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -61,24 +61,23 @@
61#include <openssl/dsa.h> 61#include <openssl/dsa.h>
62#include <openssl/asn1.h> 62#include <openssl/asn1.h>
63#include <openssl/asn1t.h> 63#include <openssl/asn1t.h>
64#include <openssl/bn.h>
65#ifdef OPENSSL_FIPS
66#include <openssl/fips.h>
67#endif
68
69 64
70/* Override the default new methods */ 65/* Override the default new methods */
71static int sig_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 66static int sig_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
67 void *exarg)
72{ 68{
73 if(operation == ASN1_OP_NEW_PRE) { 69 if(operation == ASN1_OP_NEW_PRE) {
74 DSA_SIG *sig; 70 DSA_SIG *sig;
75 sig = OPENSSL_malloc(sizeof(DSA_SIG)); 71 sig = OPENSSL_malloc(sizeof(DSA_SIG));
72 if (!sig)
73 {
74 DSAerr(DSA_F_SIG_CB, ERR_R_MALLOC_FAILURE);
75 return 0;
76 }
76 sig->r = NULL; 77 sig->r = NULL;
77 sig->s = NULL; 78 sig->s = NULL;
78 *pval = (ASN1_VALUE *)sig; 79 *pval = (ASN1_VALUE *)sig;
79 if(sig) return 2; 80 return 2;
80 DSAerr(DSA_F_SIG_CB, ERR_R_MALLOC_FAILURE);
81 return 0;
82 } 81 }
83 return 1; 82 return 1;
84} 83}
@@ -88,10 +87,11 @@ ASN1_SEQUENCE_cb(DSA_SIG, sig_cb) = {
88 ASN1_SIMPLE(DSA_SIG, s, CBIGNUM) 87 ASN1_SIMPLE(DSA_SIG, s, CBIGNUM)
89} ASN1_SEQUENCE_END_cb(DSA_SIG, DSA_SIG) 88} ASN1_SEQUENCE_END_cb(DSA_SIG, DSA_SIG)
90 89
91IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DSA_SIG,DSA_SIG,DSA_SIG) 90IMPLEMENT_ASN1_FUNCTIONS_const(DSA_SIG)
92 91
93/* Override the default free and new methods */ 92/* Override the default free and new methods */
94static int dsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 93static int dsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
94 void *exarg)
95{ 95{
96 if(operation == ASN1_OP_NEW_PRE) { 96 if(operation == ASN1_OP_NEW_PRE) {
97 *pval = (ASN1_VALUE *)DSA_new(); 97 *pval = (ASN1_VALUE *)DSA_new();
@@ -144,75 +144,7 @@ ASN1_CHOICE_cb(DSAPublicKey, dsa_cb) = {
144 144
145IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DSA, DSAPublicKey, DSAPublicKey) 145IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(DSA, DSAPublicKey, DSAPublicKey)
146 146
147int DSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig, 147DSA *DSAparams_dup(DSA *dsa)
148 unsigned int *siglen, DSA *dsa)
149 {
150 DSA_SIG *s;
151#ifdef OPENSSL_FIPS
152 if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW))
153 {
154 DSAerr(DSA_F_DSA_SIGN, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
155 return 0;
156 }
157#endif
158 s=DSA_do_sign(dgst,dlen,dsa);
159 if (s == NULL)
160 {
161 *siglen=0;
162 return(0);
163 }
164 *siglen=i2d_DSA_SIG(s,&sig);
165 DSA_SIG_free(s);
166 return(1);
167 }
168
169int DSA_size(const DSA *r)
170 {
171 int ret,i;
172 ASN1_INTEGER bs;
173 unsigned char buf[4]; /* 4 bytes looks really small.
174 However, i2d_ASN1_INTEGER() will not look
175 beyond the first byte, as long as the second
176 parameter is NULL. */
177
178 i=BN_num_bits(r->q);
179 bs.length=(i+7)/8;
180 bs.data=buf;
181 bs.type=V_ASN1_INTEGER;
182 /* If the top bit is set the asn1 encoding is 1 larger. */
183 buf[0]=0xff;
184
185 i=i2d_ASN1_INTEGER(&bs,NULL);
186 i+=i; /* r and s */
187 ret=ASN1_object_size(1,i,V_ASN1_SEQUENCE);
188 return(ret);
189 }
190
191/* data has already been hashed (probably with SHA or SHA-1). */
192/* returns
193 * 1: correct signature
194 * 0: incorrect signature
195 * -1: error
196 */
197int DSA_verify(int type, const unsigned char *dgst, int dgst_len,
198 const unsigned char *sigbuf, int siglen, DSA *dsa)
199 { 148 {
200 DSA_SIG *s; 149 return ASN1_item_dup(ASN1_ITEM_rptr(DSAparams), dsa);
201 int ret=-1;
202#ifdef OPENSSL_FIPS
203 if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW))
204 {
205 DSAerr(DSA_F_DSA_VERIFY, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
206 return 0;
207 }
208#endif
209
210 s = DSA_SIG_new();
211 if (s == NULL) return(ret);
212 if (d2i_DSA_SIG(&s,&sigbuf,siglen) == NULL) goto err;
213 ret=DSA_do_verify(dgst,dgst_len,s,dsa);
214err:
215 DSA_SIG_free(s);
216 return(ret);
217 } 150 }
218
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_err.c b/src/lib/libssl/src/crypto/dsa/dsa_err.c
index 872839af94..bba984e92e 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_err.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_err.c
@@ -1,6 +1,6 @@
1/* crypto/dsa/dsa_err.c */ 1/* crypto/dsa/dsa_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -71,23 +71,26 @@
71static ERR_STRING_DATA DSA_str_functs[]= 71static ERR_STRING_DATA DSA_str_functs[]=
72 { 72 {
73{ERR_FUNC(DSA_F_D2I_DSA_SIG), "d2i_DSA_SIG"}, 73{ERR_FUNC(DSA_F_D2I_DSA_SIG), "d2i_DSA_SIG"},
74{ERR_FUNC(DSA_F_DO_DSA_PRINT), "DO_DSA_PRINT"},
74{ERR_FUNC(DSA_F_DSAPARAMS_PRINT), "DSAparams_print"}, 75{ERR_FUNC(DSA_F_DSAPARAMS_PRINT), "DSAparams_print"},
75{ERR_FUNC(DSA_F_DSAPARAMS_PRINT_FP), "DSAparams_print_fp"}, 76{ERR_FUNC(DSA_F_DSAPARAMS_PRINT_FP), "DSAparams_print_fp"},
76{ERR_FUNC(DSA_F_DSA_BUILTIN_KEYGEN), "DSA_BUILTIN_KEYGEN"},
77{ERR_FUNC(DSA_F_DSA_BUILTIN_PARAMGEN), "DSA_BUILTIN_PARAMGEN"},
78{ERR_FUNC(DSA_F_DSA_DO_SIGN), "DSA_do_sign"}, 77{ERR_FUNC(DSA_F_DSA_DO_SIGN), "DSA_do_sign"},
79{ERR_FUNC(DSA_F_DSA_DO_VERIFY), "DSA_do_verify"}, 78{ERR_FUNC(DSA_F_DSA_DO_VERIFY), "DSA_do_verify"},
80{ERR_FUNC(DSA_F_DSA_GENERATE_PARAMETERS), "DSA_generate_parameters"},
81{ERR_FUNC(DSA_F_DSA_NEW_METHOD), "DSA_new_method"}, 79{ERR_FUNC(DSA_F_DSA_NEW_METHOD), "DSA_new_method"},
82{ERR_FUNC(DSA_F_DSA_PRINT), "DSA_print"}, 80{ERR_FUNC(DSA_F_DSA_PARAM_DECODE), "DSA_PARAM_DECODE"},
83{ERR_FUNC(DSA_F_DSA_PRINT_FP), "DSA_print_fp"}, 81{ERR_FUNC(DSA_F_DSA_PRINT_FP), "DSA_print_fp"},
84{ERR_FUNC(DSA_F_DSA_SET_DEFAULT_METHOD), "DSA_set_default_method"}, 82{ERR_FUNC(DSA_F_DSA_PRIV_DECODE), "DSA_PRIV_DECODE"},
85{ERR_FUNC(DSA_F_DSA_SET_METHOD), "DSA_set_method"}, 83{ERR_FUNC(DSA_F_DSA_PRIV_ENCODE), "DSA_PRIV_ENCODE"},
84{ERR_FUNC(DSA_F_DSA_PUB_DECODE), "DSA_PUB_DECODE"},
85{ERR_FUNC(DSA_F_DSA_PUB_ENCODE), "DSA_PUB_ENCODE"},
86{ERR_FUNC(DSA_F_DSA_SIGN), "DSA_sign"}, 86{ERR_FUNC(DSA_F_DSA_SIGN), "DSA_sign"},
87{ERR_FUNC(DSA_F_DSA_SIGN_SETUP), "DSA_sign_setup"}, 87{ERR_FUNC(DSA_F_DSA_SIGN_SETUP), "DSA_sign_setup"},
88{ERR_FUNC(DSA_F_DSA_SIG_NEW), "DSA_SIG_new"}, 88{ERR_FUNC(DSA_F_DSA_SIG_NEW), "DSA_SIG_new"},
89{ERR_FUNC(DSA_F_DSA_VERIFY), "DSA_verify"}, 89{ERR_FUNC(DSA_F_DSA_VERIFY), "DSA_verify"},
90{ERR_FUNC(DSA_F_I2D_DSA_SIG), "i2d_DSA_SIG"}, 90{ERR_FUNC(DSA_F_I2D_DSA_SIG), "i2d_DSA_SIG"},
91{ERR_FUNC(DSA_F_OLD_DSA_PRIV_DECODE), "OLD_DSA_PRIV_DECODE"},
92{ERR_FUNC(DSA_F_PKEY_DSA_CTRL), "PKEY_DSA_CTRL"},
93{ERR_FUNC(DSA_F_PKEY_DSA_KEYGEN), "PKEY_DSA_KEYGEN"},
91{ERR_FUNC(DSA_F_SIG_CB), "SIG_CB"}, 94{ERR_FUNC(DSA_F_SIG_CB), "SIG_CB"},
92{0,NULL} 95{0,NULL}
93 }; 96 };
@@ -95,12 +98,15 @@ static ERR_STRING_DATA DSA_str_functs[]=
95static ERR_STRING_DATA DSA_str_reasons[]= 98static ERR_STRING_DATA DSA_str_reasons[]=
96 { 99 {
97{ERR_REASON(DSA_R_BAD_Q_VALUE) ,"bad q value"}, 100{ERR_REASON(DSA_R_BAD_Q_VALUE) ,"bad q value"},
101{ERR_REASON(DSA_R_BN_DECODE_ERROR) ,"bn decode error"},
102{ERR_REASON(DSA_R_BN_ERROR) ,"bn error"},
98{ERR_REASON(DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE),"data too large for key size"}, 103{ERR_REASON(DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE),"data too large for key size"},
99{ERR_REASON(DSA_R_KEY_SIZE_TOO_SMALL) ,"key size too small"}, 104{ERR_REASON(DSA_R_DECODE_ERROR) ,"decode error"},
105{ERR_REASON(DSA_R_INVALID_DIGEST_TYPE) ,"invalid digest type"},
100{ERR_REASON(DSA_R_MISSING_PARAMETERS) ,"missing parameters"}, 106{ERR_REASON(DSA_R_MISSING_PARAMETERS) ,"missing parameters"},
101{ERR_REASON(DSA_R_MODULUS_TOO_LARGE) ,"modulus too large"}, 107{ERR_REASON(DSA_R_MODULUS_TOO_LARGE) ,"modulus too large"},
102{ERR_REASON(DSA_R_NON_FIPS_METHOD) ,"non fips method"}, 108{ERR_REASON(DSA_R_NO_PARAMETERS_SET) ,"no parameters set"},
103{ERR_REASON(DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE),"operation not allowed in fips mode"}, 109{ERR_REASON(DSA_R_PARAMETER_ENCODING_ERROR),"parameter encoding error"},
104{0,NULL} 110{0,NULL}
105 }; 111 };
106 112
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_gen.c b/src/lib/libssl/src/crypto/dsa/dsa_gen.c
index 6f1728e3cf..0fcd25f8b0 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_gen.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_gen.c
@@ -74,69 +74,88 @@
74#ifndef OPENSSL_NO_SHA 74#ifndef OPENSSL_NO_SHA
75 75
76#include <stdio.h> 76#include <stdio.h>
77#include <time.h>
78#include "cryptlib.h" 77#include "cryptlib.h"
79#include <openssl/evp.h> 78#include <openssl/evp.h>
80#include <openssl/bn.h> 79#include <openssl/bn.h>
81#include <openssl/dsa.h>
82#include <openssl/rand.h> 80#include <openssl/rand.h>
83#include <openssl/sha.h> 81#include <openssl/sha.h>
84 82#include "dsa_locl.h"
85#ifndef OPENSSL_FIPS
86
87static int dsa_builtin_paramgen(DSA *ret, int bits,
88 unsigned char *seed_in, int seed_len,
89 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb);
90 83
91int DSA_generate_parameters_ex(DSA *ret, int bits, 84int DSA_generate_parameters_ex(DSA *ret, int bits,
92 unsigned char *seed_in, int seed_len, 85 const unsigned char *seed_in, int seed_len,
93 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb) 86 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb)
94 { 87 {
95 if(ret->meth->dsa_paramgen) 88 if(ret->meth->dsa_paramgen)
96 return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len, 89 return ret->meth->dsa_paramgen(ret, bits, seed_in, seed_len,
97 counter_ret, h_ret, cb); 90 counter_ret, h_ret, cb);
98 return dsa_builtin_paramgen(ret, bits, seed_in, seed_len, 91 else
99 counter_ret, h_ret, cb); 92 {
93 const EVP_MD *evpmd;
94 size_t qbits = bits >= 2048 ? 256 : 160;
95
96 if (bits >= 2048)
97 {
98 qbits = 256;
99 evpmd = EVP_sha256();
100 }
101 else
102 {
103 qbits = 160;
104 evpmd = EVP_sha1();
105 }
106
107 return dsa_builtin_paramgen(ret, bits, qbits, evpmd,
108 seed_in, seed_len, counter_ret, h_ret, cb);
109 }
100 } 110 }
101 111
102static int dsa_builtin_paramgen(DSA *ret, int bits, 112int dsa_builtin_paramgen(DSA *ret, size_t bits, size_t qbits,
103 unsigned char *seed_in, int seed_len, 113 const EVP_MD *evpmd, const unsigned char *seed_in, size_t seed_len,
104 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb) 114 int *counter_ret, unsigned long *h_ret, BN_GENCB *cb)
105 { 115 {
106 int ok=0; 116 int ok=0;
107 unsigned char seed[SHA_DIGEST_LENGTH]; 117 unsigned char seed[SHA256_DIGEST_LENGTH];
108 unsigned char md[SHA_DIGEST_LENGTH]; 118 unsigned char md[SHA256_DIGEST_LENGTH];
109 unsigned char buf[SHA_DIGEST_LENGTH],buf2[SHA_DIGEST_LENGTH]; 119 unsigned char buf[SHA256_DIGEST_LENGTH],buf2[SHA256_DIGEST_LENGTH];
110 BIGNUM *r0,*W,*X,*c,*test; 120 BIGNUM *r0,*W,*X,*c,*test;
111 BIGNUM *g=NULL,*q=NULL,*p=NULL; 121 BIGNUM *g=NULL,*q=NULL,*p=NULL;
112 BN_MONT_CTX *mont=NULL; 122 BN_MONT_CTX *mont=NULL;
113 int k,n=0,i,b,m=0; 123 int i, k,n=0,b,m=0, qsize = qbits >> 3;
114 int counter=0; 124 int counter=0;
115 int r=0; 125 int r=0;
116 BN_CTX *ctx=NULL; 126 BN_CTX *ctx=NULL;
117 unsigned int h=2; 127 unsigned int h=2;
118 128
119 if (bits < 512) bits=512; 129 if (qsize != SHA_DIGEST_LENGTH && qsize != SHA224_DIGEST_LENGTH &&
120 bits=(bits+63)/64*64; 130 qsize != SHA256_DIGEST_LENGTH)
131 /* invalid q size */
132 return 0;
133
134 if (evpmd == NULL)
135 /* use SHA1 as default */
136 evpmd = EVP_sha1();
137
138 if (bits < 512)
139 bits = 512;
140
141 bits = (bits+63)/64*64;
121 142
122 /* NB: seed_len == 0 is special case: copy generated seed to 143 /* NB: seed_len == 0 is special case: copy generated seed to
123 * seed_in if it is not NULL. 144 * seed_in if it is not NULL.
124 */ 145 */
125 if (seed_len && (seed_len < 20)) 146 if (seed_len && (seed_len < (size_t)qsize))
126 seed_in = NULL; /* seed buffer too small -- ignore */ 147 seed_in = NULL; /* seed buffer too small -- ignore */
127 if (seed_len > 20) 148 if (seed_len > (size_t)qsize)
128 seed_len = 20; /* App. 2.2 of FIPS PUB 186 allows larger SEED, 149 seed_len = qsize; /* App. 2.2 of FIPS PUB 186 allows larger SEED,
129 * but our internal buffers are restricted to 160 bits*/ 150 * but our internal buffers are restricted to 160 bits*/
130 if ((seed_in != NULL) && (seed_len == 20)) 151 if (seed_in != NULL)
131 { 152 memcpy(seed, seed_in, seed_len);
132 memcpy(seed,seed_in,seed_len); 153
133 /* set seed_in to NULL to avoid it being copied back */ 154 if ((ctx=BN_CTX_new()) == NULL)
134 seed_in = NULL; 155 goto err;
135 }
136
137 if ((ctx=BN_CTX_new()) == NULL) goto err;
138 156
139 if ((mont=BN_MONT_CTX_new()) == NULL) goto err; 157 if ((mont=BN_MONT_CTX_new()) == NULL)
158 goto err;
140 159
141 BN_CTX_start(ctx); 160 BN_CTX_start(ctx);
142 r0 = BN_CTX_get(ctx); 161 r0 = BN_CTX_get(ctx);
@@ -163,7 +182,7 @@ static int dsa_builtin_paramgen(DSA *ret, int bits,
163 182
164 if (!seed_len) 183 if (!seed_len)
165 { 184 {
166 RAND_pseudo_bytes(seed,SHA_DIGEST_LENGTH); 185 RAND_pseudo_bytes(seed, qsize);
167 seed_is_random = 1; 186 seed_is_random = 1;
168 } 187 }
169 else 188 else
@@ -171,25 +190,27 @@ static int dsa_builtin_paramgen(DSA *ret, int bits,
171 seed_is_random = 0; 190 seed_is_random = 0;
172 seed_len=0; /* use random seed if 'seed_in' turns out to be bad*/ 191 seed_len=0; /* use random seed if 'seed_in' turns out to be bad*/
173 } 192 }
174 memcpy(buf,seed,SHA_DIGEST_LENGTH); 193 memcpy(buf , seed, qsize);
175 memcpy(buf2,seed,SHA_DIGEST_LENGTH); 194 memcpy(buf2, seed, qsize);
176 /* precompute "SEED + 1" for step 7: */ 195 /* precompute "SEED + 1" for step 7: */
177 for (i=SHA_DIGEST_LENGTH-1; i >= 0; i--) 196 for (i = qsize-1; i >= 0; i--)
178 { 197 {
179 buf[i]++; 198 buf[i]++;
180 if (buf[i] != 0) break; 199 if (buf[i] != 0)
200 break;
181 } 201 }
182 202
183 /* step 2 */ 203 /* step 2 */
184 EVP_Digest(seed,SHA_DIGEST_LENGTH,md,NULL,HASH, NULL); 204 EVP_Digest(seed, qsize, md, NULL, evpmd, NULL);
185 EVP_Digest(buf,SHA_DIGEST_LENGTH,buf2,NULL,HASH, NULL); 205 EVP_Digest(buf, qsize, buf2, NULL, evpmd, NULL);
186 for (i=0; i<SHA_DIGEST_LENGTH; i++) 206 for (i = 0; i < qsize; i++)
187 md[i]^=buf2[i]; 207 md[i]^=buf2[i];
188 208
189 /* step 3 */ 209 /* step 3 */
190 md[0]|=0x80; 210 md[0] |= 0x80;
191 md[SHA_DIGEST_LENGTH-1]|=0x01; 211 md[qsize-1] |= 0x01;
192 if (!BN_bin2bn(md,SHA_DIGEST_LENGTH,q)) goto err; 212 if (!BN_bin2bn(md, qsize, q))
213 goto err;
193 214
194 /* step 4 */ 215 /* step 4 */
195 r = BN_is_prime_fasttest_ex(q, DSS_prime_checks, ctx, 216 r = BN_is_prime_fasttest_ex(q, DSS_prime_checks, ctx,
@@ -224,18 +245,19 @@ static int dsa_builtin_paramgen(DSA *ret, int bits,
224 for (k=0; k<=n; k++) 245 for (k=0; k<=n; k++)
225 { 246 {
226 /* obtain "SEED + offset + k" by incrementing: */ 247 /* obtain "SEED + offset + k" by incrementing: */
227 for (i=SHA_DIGEST_LENGTH-1; i >= 0; i--) 248 for (i = qsize-1; i >= 0; i--)
228 { 249 {
229 buf[i]++; 250 buf[i]++;
230 if (buf[i] != 0) break; 251 if (buf[i] != 0)
252 break;
231 } 253 }
232 254
233 EVP_Digest(buf,SHA_DIGEST_LENGTH,md,NULL,HASH, NULL); 255 EVP_Digest(buf, qsize, md ,NULL, evpmd, NULL);
234 256
235 /* step 8 */ 257 /* step 8 */
236 if (!BN_bin2bn(md,SHA_DIGEST_LENGTH,r0)) 258 if (!BN_bin2bn(md, qsize, r0))
237 goto err; 259 goto err;
238 if (!BN_lshift(r0,r0,160*k)) goto err; 260 if (!BN_lshift(r0,r0,(qsize << 3)*k)) goto err;
239 if (!BN_add(W,W,r0)) goto err; 261 if (!BN_add(W,W,r0)) goto err;
240 } 262 }
241 263
@@ -309,7 +331,6 @@ err:
309 ok=0; 331 ok=0;
310 goto err; 332 goto err;
311 } 333 }
312 if (seed_in != NULL) memcpy(seed_in,seed,20);
313 if (counter_ret != NULL) *counter_ret=counter; 334 if (counter_ret != NULL) *counter_ret=counter;
314 if (h_ret != NULL) *h_ret=h; 335 if (h_ret != NULL) *h_ret=h;
315 } 336 }
@@ -322,4 +343,3 @@ err:
322 return ok; 343 return ok;
323 } 344 }
324#endif 345#endif
325#endif
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_key.c b/src/lib/libssl/src/crypto/dsa/dsa_key.c
index 5e39124230..c4aa86bc6d 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_key.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_key.c
@@ -64,8 +64,6 @@
64#include <openssl/dsa.h> 64#include <openssl/dsa.h>
65#include <openssl/rand.h> 65#include <openssl/rand.h>
66 66
67#ifndef OPENSSL_FIPS
68
69static int dsa_builtin_keygen(DSA *dsa); 67static int dsa_builtin_keygen(DSA *dsa);
70 68
71int DSA_generate_key(DSA *dsa) 69int DSA_generate_key(DSA *dsa)
@@ -128,5 +126,3 @@ err:
128 return(ok); 126 return(ok);
129 } 127 }
130#endif 128#endif
131
132#endif
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_lib.c b/src/lib/libssl/src/crypto/dsa/dsa_lib.c
index 7ac9dc8c89..e9b75902db 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_lib.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_lib.c
@@ -76,14 +76,6 @@ static const DSA_METHOD *default_DSA_method = NULL;
76 76
77void DSA_set_default_method(const DSA_METHOD *meth) 77void DSA_set_default_method(const DSA_METHOD *meth)
78 { 78 {
79#ifdef OPENSSL_FIPS
80 if (FIPS_mode() && !(meth->flags & DSA_FLAG_FIPS_METHOD))
81 {
82 DSAerr(DSA_F_DSA_SET_DEFAULT_METHOD, DSA_R_NON_FIPS_METHOD);
83 return;
84 }
85#endif
86
87 default_DSA_method = meth; 79 default_DSA_method = meth;
88 } 80 }
89 81
@@ -104,13 +96,6 @@ int DSA_set_method(DSA *dsa, const DSA_METHOD *meth)
104 /* NB: The caller is specifically setting a method, so it's not up to us 96 /* NB: The caller is specifically setting a method, so it's not up to us
105 * to deal with which ENGINE it comes from. */ 97 * to deal with which ENGINE it comes from. */
106 const DSA_METHOD *mtmp; 98 const DSA_METHOD *mtmp;
107#ifdef OPENSSL_FIPS
108 if (FIPS_mode() && !(meth->flags & DSA_FLAG_FIPS_METHOD))
109 {
110 DSAerr(DSA_F_DSA_SET_METHOD, DSA_R_NON_FIPS_METHOD);
111 return 0;
112 }
113#endif
114 mtmp = dsa->meth; 99 mtmp = dsa->meth;
115 if (mtmp->finish) mtmp->finish(dsa); 100 if (mtmp->finish) mtmp->finish(dsa);
116#ifndef OPENSSL_NO_ENGINE 101#ifndef OPENSSL_NO_ENGINE
@@ -162,18 +147,6 @@ DSA *DSA_new_method(ENGINE *engine)
162 } 147 }
163 } 148 }
164#endif 149#endif
165#ifdef OPENSSL_FIPS
166 if (FIPS_mode() && !(ret->meth->flags & DSA_FLAG_FIPS_METHOD))
167 {
168 DSAerr(DSA_F_DSA_NEW_METHOD, DSA_R_NON_FIPS_METHOD);
169#ifndef OPENSSL_NO_ENGINE
170 if (ret->engine)
171 ENGINE_finish(ret->engine);
172#endif
173 OPENSSL_free(ret);
174 return NULL;
175 }
176#endif
177 150
178 ret->pad=0; 151 ret->pad=0;
179 ret->version=0; 152 ret->version=0;
@@ -260,6 +233,28 @@ int DSA_up_ref(DSA *r)
260 return ((i > 1) ? 1 : 0); 233 return ((i > 1) ? 1 : 0);
261 } 234 }
262 235
236int DSA_size(const DSA *r)
237 {
238 int ret,i;
239 ASN1_INTEGER bs;
240 unsigned char buf[4]; /* 4 bytes looks really small.
241 However, i2d_ASN1_INTEGER() will not look
242 beyond the first byte, as long as the second
243 parameter is NULL. */
244
245 i=BN_num_bits(r->q);
246 bs.length=(i+7)/8;
247 bs.data=buf;
248 bs.type=V_ASN1_INTEGER;
249 /* If the top bit is set the asn1 encoding is 1 larger. */
250 buf[0]=0xff;
251
252 i=i2d_ASN1_INTEGER(&bs,NULL);
253 i+=i; /* r and s */
254 ret=ASN1_object_size(1,i,V_ASN1_SEQUENCE);
255 return(ret);
256 }
257
263int DSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, 258int DSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
264 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func) 259 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
265 { 260 {
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_ossl.c b/src/lib/libssl/src/crypto/dsa/dsa_ossl.c
index 412cf1d88b..4fead07e80 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_ossl.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_ossl.c
@@ -61,16 +61,15 @@
61#include <stdio.h> 61#include <stdio.h>
62#include "cryptlib.h" 62#include "cryptlib.h"
63#include <openssl/bn.h> 63#include <openssl/bn.h>
64#include <openssl/sha.h>
64#include <openssl/dsa.h> 65#include <openssl/dsa.h>
65#include <openssl/rand.h> 66#include <openssl/rand.h>
66#include <openssl/asn1.h> 67#include <openssl/asn1.h>
67 68
68#ifndef OPENSSL_FIPS
69
70static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa); 69static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa);
71static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp); 70static int dsa_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp);
72static int dsa_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig, 71static int dsa_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig,
73 DSA *dsa); 72 DSA *dsa);
74static int dsa_init(DSA *dsa); 73static int dsa_init(DSA *dsa);
75static int dsa_finish(DSA *dsa); 74static int dsa_finish(DSA *dsa);
76 75
@@ -135,7 +134,7 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
135 BIGNUM m; 134 BIGNUM m;
136 BIGNUM xr; 135 BIGNUM xr;
137 BN_CTX *ctx=NULL; 136 BN_CTX *ctx=NULL;
138 int i,reason=ERR_R_BN_LIB; 137 int reason=ERR_R_BN_LIB;
139 DSA_SIG *ret=NULL; 138 DSA_SIG *ret=NULL;
140 139
141 BN_init(&m); 140 BN_init(&m);
@@ -150,8 +149,9 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
150 s=BN_new(); 149 s=BN_new();
151 if (s == NULL) goto err; 150 if (s == NULL) goto err;
152 151
153 i=BN_num_bytes(dsa->q); /* should be 20 */ 152 /* reject a excessive digest length (currently at most
154 if ((dlen > i) || (dlen > 50)) 153 * dsa-with-SHA256 is supported) */
154 if (dlen > SHA256_DIGEST_LENGTH)
155 { 155 {
156 reason=DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE; 156 reason=DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE;
157 goto err; 157 goto err;
@@ -172,7 +172,14 @@ static DSA_SIG *dsa_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
172 dsa->r=NULL; 172 dsa->r=NULL;
173 } 173 }
174 174
175 if (BN_bin2bn(dgst,dlen,&m) == NULL) goto err; 175
176 if (dlen > BN_num_bytes(dsa->q))
177 /* if the digest length is greater than the size of q use the
178 * BN_num_bits(dsa->q) leftmost bits of the digest, see
179 * fips 186-3, 4.2 */
180 dlen = BN_num_bytes(dsa->q);
181 if (BN_bin2bn(dgst,dlen,&m) == NULL)
182 goto err;
176 183
177 /* Compute s = inv(k) (m + xr) mod q */ 184 /* Compute s = inv(k) (m + xr) mod q */
178 if (!BN_mod_mul(&xr,dsa->priv_key,r,dsa->q,ctx)) goto err;/* s = xr */ 185 if (!BN_mod_mul(&xr,dsa->priv_key,r,dsa->q,ctx)) goto err;/* s = xr */
@@ -283,30 +290,31 @@ err:
283 if (!ret) 290 if (!ret)
284 { 291 {
285 DSAerr(DSA_F_DSA_SIGN_SETUP,ERR_R_BN_LIB); 292 DSAerr(DSA_F_DSA_SIGN_SETUP,ERR_R_BN_LIB);
286 if (kinv != NULL) BN_clear_free(kinv); 293 if (r != NULL)
287 if (r != NULL) BN_clear_free(r); 294 BN_clear_free(r);
288 } 295 }
289 if (ctx_in == NULL) BN_CTX_free(ctx); 296 if (ctx_in == NULL) BN_CTX_free(ctx);
290 if (kinv != NULL) BN_clear_free(kinv);
291 BN_clear_free(&k); 297 BN_clear_free(&k);
292 BN_clear_free(&kq); 298 BN_clear_free(&kq);
293 return(ret); 299 return(ret);
294 } 300 }
295 301
296static int dsa_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig, 302static int dsa_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig,
297 DSA *dsa) 303 DSA *dsa)
298 { 304 {
299 BN_CTX *ctx; 305 BN_CTX *ctx;
300 BIGNUM u1,u2,t1; 306 BIGNUM u1,u2,t1;
301 BN_MONT_CTX *mont=NULL; 307 BN_MONT_CTX *mont=NULL;
302 int ret = -1; 308 int ret = -1, i;
303 if (!dsa->p || !dsa->q || !dsa->g) 309 if (!dsa->p || !dsa->q || !dsa->g)
304 { 310 {
305 DSAerr(DSA_F_DSA_DO_VERIFY,DSA_R_MISSING_PARAMETERS); 311 DSAerr(DSA_F_DSA_DO_VERIFY,DSA_R_MISSING_PARAMETERS);
306 return -1; 312 return -1;
307 } 313 }
308 314
309 if (BN_num_bits(dsa->q) != 160) 315 i = BN_num_bits(dsa->q);
316 /* fips 186-3 allows only different sizes for q */
317 if (i != 160 && i != 224 && i != 256)
310 { 318 {
311 DSAerr(DSA_F_DSA_DO_VERIFY,DSA_R_BAD_Q_VALUE); 319 DSAerr(DSA_F_DSA_DO_VERIFY,DSA_R_BAD_Q_VALUE);
312 return -1; 320 return -1;
@@ -318,6 +326,14 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig,
318 return -1; 326 return -1;
319 } 327 }
320 328
329 /* reject a excessive digest length (currently at most
330 * dsa-with-SHA256 is supported) */
331 if (dgst_len > SHA256_DIGEST_LENGTH)
332 {
333 DSAerr(DSA_F_DSA_DO_VERIFY,DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE);
334 return -1;
335 }
336
321 BN_init(&u1); 337 BN_init(&u1);
322 BN_init(&u2); 338 BN_init(&u2);
323 BN_init(&t1); 339 BN_init(&t1);
@@ -342,6 +358,11 @@ static int dsa_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig,
342 if ((BN_mod_inverse(&u2,sig->s,dsa->q,ctx)) == NULL) goto err; 358 if ((BN_mod_inverse(&u2,sig->s,dsa->q,ctx)) == NULL) goto err;
343 359
344 /* save M in u1 */ 360 /* save M in u1 */
361 if (dgst_len > (i >> 3))
362 /* if the digest length is greater than the size of q use the
363 * BN_num_bits(dsa->q) leftmost bits of the digest, see
364 * fips 186-3, 4.2 */
365 dgst_len = (i >> 3);
345 if (BN_bin2bn(dgst,dgst_len,&u1) == NULL) goto err; 366 if (BN_bin2bn(dgst,dgst_len,&u1) == NULL) goto err;
346 367
347 /* u1 = M * w mod q */ 368 /* u1 = M * w mod q */
@@ -393,4 +414,3 @@ static int dsa_finish(DSA *dsa)
393 return(1); 414 return(1);
394} 415}
395 416
396#endif
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_sign.c b/src/lib/libssl/src/crypto/dsa/dsa_sign.c
index 4cfbbe57a8..17555e5892 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_sign.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_sign.c
@@ -58,38 +58,33 @@
58 58
59/* Original version from Steven Schoch <schoch@sheba.arc.nasa.gov> */ 59/* Original version from Steven Schoch <schoch@sheba.arc.nasa.gov> */
60 60
61#include <stdio.h>
62#include "cryptlib.h" 61#include "cryptlib.h"
63#include <openssl/bn.h>
64#include <openssl/dsa.h> 62#include <openssl/dsa.h>
65#include <openssl/rand.h> 63#include <openssl/rand.h>
66#include <openssl/asn1.h>
67#ifdef OPENSSL_FIPS
68#include <openssl/fips.h>
69#endif
70
71 64
72DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa) 65DSA_SIG * DSA_do_sign(const unsigned char *dgst, int dlen, DSA *dsa)
73 { 66 {
74#ifdef OPENSSL_FIPS
75 if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW))
76 {
77 DSAerr(DSA_F_DSA_DO_SIGN, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
78 return NULL;
79 }
80#endif
81 return dsa->meth->dsa_do_sign(dgst, dlen, dsa); 67 return dsa->meth->dsa_do_sign(dgst, dlen, dsa);
82 } 68 }
83 69
84int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) 70int DSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig,
71 unsigned int *siglen, DSA *dsa)
85 { 72 {
86#ifdef OPENSSL_FIPS 73 DSA_SIG *s;
87 if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW)) 74 RAND_seed(dgst, dlen);
75 s=DSA_do_sign(dgst,dlen,dsa);
76 if (s == NULL)
88 { 77 {
89 DSAerr(DSA_F_DSA_SIGN_SETUP, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE); 78 *siglen=0;
90 return 0; 79 return(0);
91 } 80 }
92#endif 81 *siglen=i2d_DSA_SIG(s,&sig);
82 DSA_SIG_free(s);
83 return(1);
84 }
85
86int DSA_sign_setup(DSA *dsa, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp)
87 {
93 return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp); 88 return dsa->meth->dsa_sign_setup(dsa, ctx_in, kinvp, rp);
94 } 89 }
95 90
diff --git a/src/lib/libssl/src/crypto/dsa/dsa_vrf.c b/src/lib/libssl/src/crypto/dsa/dsa_vrf.c
index c75e423048..226a75ff3f 100644
--- a/src/lib/libssl/src/crypto/dsa/dsa_vrf.c
+++ b/src/lib/libssl/src/crypto/dsa/dsa_vrf.c
@@ -58,27 +58,32 @@
58 58
59/* Original version from Steven Schoch <schoch@sheba.arc.nasa.gov> */ 59/* Original version from Steven Schoch <schoch@sheba.arc.nasa.gov> */
60 60
61#include <stdio.h>
62#include "cryptlib.h" 61#include "cryptlib.h"
63#include <openssl/bn.h>
64#include <openssl/dsa.h> 62#include <openssl/dsa.h>
65#include <openssl/rand.h>
66#include <openssl/asn1.h>
67#ifdef OPENSSL_FIPS
68#include <openssl/fips.h>
69#endif
70
71#include <openssl/asn1_mac.h>
72 63
73int DSA_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig, 64int DSA_do_verify(const unsigned char *dgst, int dgst_len, DSA_SIG *sig,
74 DSA *dsa) 65 DSA *dsa)
75 { 66 {
76#ifdef OPENSSL_FIPS
77 if(FIPS_mode() && !(dsa->flags & DSA_FLAG_NON_FIPS_ALLOW))
78 {
79 DSAerr(DSA_F_DSA_DO_VERIFY, DSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
80 return 0;
81 }
82#endif
83 return dsa->meth->dsa_do_verify(dgst, dgst_len, sig, dsa); 67 return dsa->meth->dsa_do_verify(dgst, dgst_len, sig, dsa);
84 } 68 }
69
70/* data has already been hashed (probably with SHA or SHA-1). */
71/* returns
72 * 1: correct signature
73 * 0: incorrect signature
74 * -1: error
75 */
76int DSA_verify(int type, const unsigned char *dgst, int dgst_len,
77 const unsigned char *sigbuf, int siglen, DSA *dsa)
78 {
79 DSA_SIG *s;
80 int ret=-1;
81
82 s = DSA_SIG_new();
83 if (s == NULL) return(ret);
84 if (d2i_DSA_SIG(&s,&sigbuf,siglen) == NULL) goto err;
85 ret=DSA_do_verify(dgst,dgst_len,s,dsa);
86err:
87 DSA_SIG_free(s);
88 return(ret);
89 }
diff --git a/src/lib/libssl/src/crypto/dsa/dsatest.c b/src/lib/libssl/src/crypto/dsa/dsatest.c
index 912317bb44..edffd24e6b 100644
--- a/src/lib/libssl/src/crypto/dsa/dsatest.c
+++ b/src/lib/libssl/src/crypto/dsa/dsatest.c
@@ -169,7 +169,6 @@ int main(int argc, char **argv)
169 } 169 }
170 BIO_printf(bio_err,"\ncounter=%d h=%ld\n",counter,h); 170 BIO_printf(bio_err,"\ncounter=%d h=%ld\n",counter,h);
171 171
172 if (dsa == NULL) goto end;
173 DSA_print(bio_err,dsa,0); 172 DSA_print(bio_err,dsa,0);
174 if (counter != 105) 173 if (counter != 105)
175 { 174 {
@@ -223,7 +222,7 @@ end:
223 ERR_print_errors(bio_err); 222 ERR_print_errors(bio_err);
224 if (dsa != NULL) DSA_free(dsa); 223 if (dsa != NULL) DSA_free(dsa);
225 CRYPTO_cleanup_all_ex_data(); 224 CRYPTO_cleanup_all_ex_data();
226 ERR_remove_state(0); 225 ERR_remove_thread_state(NULL);
227 ERR_free_strings(); 226 ERR_free_strings();
228 CRYPTO_mem_leaks(bio_err); 227 CRYPTO_mem_leaks(bio_err);
229 if (bio_err != NULL) 228 if (bio_err != NULL)
diff --git a/src/lib/libssl/src/crypto/dso/Makefile b/src/lib/libssl/src/crypto/dso/Makefile
index 52f152888c..fb2709ed63 100644
--- a/src/lib/libssl/src/crypto/dso/Makefile
+++ b/src/lib/libssl/src/crypto/dso/Makefile
@@ -18,9 +18,9 @@ APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= dso_dl.c dso_dlfcn.c dso_err.c dso_lib.c dso_null.c \ 20LIBSRC= dso_dl.c dso_dlfcn.c dso_err.c dso_lib.c dso_null.c \
21 dso_openssl.c dso_win32.c dso_vms.c 21 dso_openssl.c dso_win32.c dso_vms.c dso_beos.c
22LIBOBJ= dso_dl.o dso_dlfcn.o dso_err.o dso_lib.o dso_null.o \ 22LIBOBJ= dso_dl.o dso_dlfcn.o dso_err.o dso_lib.o dso_null.o \
23 dso_openssl.o dso_win32.o dso_vms.o 23 dso_openssl.o dso_win32.o dso_vms.o dso_beos.o
24 24
25SRC= $(LIBSRC) 25SRC= $(LIBSRC)
26 26
@@ -35,7 +35,7 @@ top:
35all: lib 35all: lib
36 36
37lib: $(LIBOBJ) 37lib: $(LIBOBJ)
38 $(ARX) $(LIB) $(LIBOBJ) 38 $(AR) $(LIB) $(LIBOBJ)
39 $(RANLIB) $(LIB) || echo Never mind. 39 $(RANLIB) $(LIB) || echo Never mind.
40 @touch lib 40 @touch lib
41 41
@@ -76,6 +76,14 @@ clean:
76 76
77# DO NOT DELETE THIS LINE -- make depend depends on it. 77# DO NOT DELETE THIS LINE -- make depend depends on it.
78 78
79dso_beos.o: ../../e_os.h ../../include/openssl/bio.h
80dso_beos.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
81dso_beos.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
82dso_beos.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
83dso_beos.o: ../../include/openssl/opensslconf.h
84dso_beos.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
85dso_beos.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
86dso_beos.o: ../../include/openssl/symhacks.h ../cryptlib.h dso_beos.c
79dso_dl.o: ../../e_os.h ../../include/openssl/bio.h 87dso_dl.o: ../../e_os.h ../../include/openssl/bio.h
80dso_dl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 88dso_dl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
81dso_dl.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h 89dso_dl.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
diff --git a/src/lib/libssl/src/crypto/dso/dso.h b/src/lib/libssl/src/crypto/dso/dso.h
index 3e51913a72..839f2e0617 100644
--- a/src/lib/libssl/src/crypto/dso/dso.h
+++ b/src/lib/libssl/src/crypto/dso/dso.h
@@ -170,6 +170,11 @@ typedef struct dso_meth_st
170 /* [De]Initialisation handlers. */ 170 /* [De]Initialisation handlers. */
171 int (*init)(DSO *dso); 171 int (*init)(DSO *dso);
172 int (*finish)(DSO *dso); 172 int (*finish)(DSO *dso);
173
174 /* Return pathname of the module containing location */
175 int (*pathbyaddr)(void *addr,char *path,int sz);
176 /* Perform global symbol lookup, i.e. among *all* modules */
177 void *(*globallookup)(const char *symname);
173 } DSO_METHOD; 178 } DSO_METHOD;
174 179
175/**********************************************************************/ 180/**********************************************************************/
@@ -183,7 +188,7 @@ struct dso_st
183 * for use in the dso_bind handler. All in all, let each 188 * for use in the dso_bind handler. All in all, let each
184 * method control its own destiny. "Handles" and such go in 189 * method control its own destiny. "Handles" and such go in
185 * a STACK. */ 190 * a STACK. */
186 STACK *meth_data; 191 STACK_OF(void) *meth_data;
187 int references; 192 int references;
188 int flags; 193 int flags;
189 /* For use by applications etc ... use this for your bits'n'pieces, 194 /* For use by applications etc ... use this for your bits'n'pieces,
@@ -296,6 +301,30 @@ DSO_METHOD *DSO_METHOD_win32(void);
296/* If VMS is defined, use shared images. If not, return NULL. */ 301/* If VMS is defined, use shared images. If not, return NULL. */
297DSO_METHOD *DSO_METHOD_vms(void); 302DSO_METHOD *DSO_METHOD_vms(void);
298 303
304/* This function writes null-terminated pathname of DSO module
305 * containing 'addr' into 'sz' large caller-provided 'path' and
306 * returns the number of characters [including trailing zero]
307 * written to it. If 'sz' is 0 or negative, 'path' is ignored and
308 * required amount of charachers [including trailing zero] to
309 * accomodate pathname is returned. If 'addr' is NULL, then
310 * pathname of cryptolib itself is returned. Negative or zero
311 * return value denotes error.
312 */
313int DSO_pathbyaddr(void *addr,char *path,int sz);
314
315/* This function should be used with caution! It looks up symbols in
316 * *all* loaded modules and if module gets unloaded by somebody else
317 * attempt to dereference the pointer is doomed to have fatal
318 * consequences. Primary usage for this function is to probe *core*
319 * system functionality, e.g. check if getnameinfo(3) is available
320 * at run-time without bothering about OS-specific details such as
321 * libc.so.versioning or where does it actually reside: in libc
322 * itself or libsocket. */
323void *DSO_global_lookup(const char *name);
324
325/* If BeOS is defined, use shared images. If not, return NULL. */
326DSO_METHOD *DSO_METHOD_beos(void);
327
299/* BEGIN ERROR CODES */ 328/* BEGIN ERROR CODES */
300/* The following lines are auto generated by the script mkerr.pl. Any changes 329/* The following lines are auto generated by the script mkerr.pl. Any changes
301 * made after this point may be overwritten when the script is next run. 330 * made after this point may be overwritten when the script is next run.
@@ -305,6 +334,11 @@ void ERR_load_DSO_strings(void);
305/* Error codes for the DSO functions. */ 334/* Error codes for the DSO functions. */
306 335
307/* Function codes. */ 336/* Function codes. */
337#define DSO_F_BEOS_BIND_FUNC 144
338#define DSO_F_BEOS_BIND_VAR 145
339#define DSO_F_BEOS_LOAD 146
340#define DSO_F_BEOS_NAME_CONVERTER 147
341#define DSO_F_BEOS_UNLOAD 148
308#define DSO_F_DLFCN_BIND_FUNC 100 342#define DSO_F_DLFCN_BIND_FUNC 100
309#define DSO_F_DLFCN_BIND_VAR 101 343#define DSO_F_DLFCN_BIND_VAR 101
310#define DSO_F_DLFCN_LOAD 102 344#define DSO_F_DLFCN_LOAD 102
@@ -324,22 +358,29 @@ void ERR_load_DSO_strings(void);
324#define DSO_F_DSO_FREE 111 358#define DSO_F_DSO_FREE 111
325#define DSO_F_DSO_GET_FILENAME 127 359#define DSO_F_DSO_GET_FILENAME 127
326#define DSO_F_DSO_GET_LOADED_FILENAME 128 360#define DSO_F_DSO_GET_LOADED_FILENAME 128
361#define DSO_F_DSO_GLOBAL_LOOKUP 139
327#define DSO_F_DSO_LOAD 112 362#define DSO_F_DSO_LOAD 112
328#define DSO_F_DSO_MERGE 132 363#define DSO_F_DSO_MERGE 132
329#define DSO_F_DSO_NEW_METHOD 113 364#define DSO_F_DSO_NEW_METHOD 113
365#define DSO_F_DSO_PATHBYADDR 140
330#define DSO_F_DSO_SET_FILENAME 129 366#define DSO_F_DSO_SET_FILENAME 129
331#define DSO_F_DSO_SET_NAME_CONVERTER 122 367#define DSO_F_DSO_SET_NAME_CONVERTER 122
332#define DSO_F_DSO_UP_REF 114 368#define DSO_F_DSO_UP_REF 114
369#define DSO_F_GLOBAL_LOOKUP_FUNC 138
370#define DSO_F_PATHBYADDR 137
333#define DSO_F_VMS_BIND_SYM 115 371#define DSO_F_VMS_BIND_SYM 115
334#define DSO_F_VMS_LOAD 116 372#define DSO_F_VMS_LOAD 116
335#define DSO_F_VMS_MERGER 133 373#define DSO_F_VMS_MERGER 133
336#define DSO_F_VMS_UNLOAD 117 374#define DSO_F_VMS_UNLOAD 117
337#define DSO_F_WIN32_BIND_FUNC 118 375#define DSO_F_WIN32_BIND_FUNC 118
338#define DSO_F_WIN32_BIND_VAR 119 376#define DSO_F_WIN32_BIND_VAR 119
377#define DSO_F_WIN32_GLOBALLOOKUP 142
378#define DSO_F_WIN32_GLOBALLOOKUP_FUNC 143
339#define DSO_F_WIN32_JOINER 135 379#define DSO_F_WIN32_JOINER 135
340#define DSO_F_WIN32_LOAD 120 380#define DSO_F_WIN32_LOAD 120
341#define DSO_F_WIN32_MERGER 134 381#define DSO_F_WIN32_MERGER 134
342#define DSO_F_WIN32_NAME_CONVERTER 125 382#define DSO_F_WIN32_NAME_CONVERTER 125
383#define DSO_F_WIN32_PATHBYADDR 141
343#define DSO_F_WIN32_SPLITTER 136 384#define DSO_F_WIN32_SPLITTER 136
344#define DSO_F_WIN32_UNLOAD 121 385#define DSO_F_WIN32_UNLOAD 121
345 386
diff --git a/src/lib/libssl/src/crypto/dso/dso_dl.c b/src/lib/libssl/src/crypto/dso/dso_dl.c
index 417abb6ea9..fc4236bd9a 100644
--- a/src/lib/libssl/src/crypto/dso/dso_dl.c
+++ b/src/lib/libssl/src/crypto/dso/dso_dl.c
@@ -85,6 +85,8 @@ static int dl_ctrl(DSO *dso, int cmd, long larg, void *parg);
85#endif 85#endif
86static char *dl_name_converter(DSO *dso, const char *filename); 86static char *dl_name_converter(DSO *dso, const char *filename);
87static char *dl_merger(DSO *dso, const char *filespec1, const char *filespec2); 87static char *dl_merger(DSO *dso, const char *filespec1, const char *filespec2);
88static int dl_pathbyaddr(void *addr,char *path,int sz);
89static void *dl_globallookup(const char *name);
88 90
89static DSO_METHOD dso_meth_dl = { 91static DSO_METHOD dso_meth_dl = {
90 "OpenSSL 'dl' shared library method", 92 "OpenSSL 'dl' shared library method",
@@ -101,7 +103,9 @@ static DSO_METHOD dso_meth_dl = {
101 dl_name_converter, 103 dl_name_converter,
102 dl_merger, 104 dl_merger,
103 NULL, /* init */ 105 NULL, /* init */
104 NULL /* finish */ 106 NULL, /* finish */
107 dl_pathbyaddr,
108 dl_globallookup
105 }; 109 };
106 110
107DSO_METHOD *DSO_METHOD_dl(void) 111DSO_METHOD *DSO_METHOD_dl(void)
@@ -350,4 +354,40 @@ static char *dl_name_converter(DSO *dso, const char *filename)
350 return(translated); 354 return(translated);
351 } 355 }
352 356
357static int dl_pathbyaddr(void *addr,char *path,int sz)
358 {
359 struct shl_descriptor inf;
360 int i,len;
361
362 if (addr == NULL)
363 {
364 union { int(*f)(void*,char*,int); void *p; } t =
365 { dl_pathbyaddr };
366 addr = t.p;
367 }
368
369 for (i=-1;shl_get_r(i,&inf)==0;i++)
370 {
371 if (((size_t)addr >= inf.tstart && (size_t)addr < inf.tend) ||
372 ((size_t)addr >= inf.dstart && (size_t)addr < inf.dend))
373 {
374 len = (int)strlen(inf.filename);
375 if (sz <= 0) return len+1;
376 if (len >= sz) len=sz-1;
377 memcpy(path,inf.filename,len);
378 path[len++] = 0;
379 return len;
380 }
381 }
382
383 return -1;
384 }
385
386static void *dl_globallookup(const char *name)
387 {
388 void *ret;
389 shl_t h = NULL;
390
391 return shl_findsym(&h,name,TYPE_UNDEFINED,&ret) ? NULL : ret;
392 }
353#endif /* DSO_DL */ 393#endif /* DSO_DL */
diff --git a/src/lib/libssl/src/crypto/dso/dso_dlfcn.c b/src/lib/libssl/src/crypto/dso/dso_dlfcn.c
index 1fd10104c5..14bd322fb8 100644
--- a/src/lib/libssl/src/crypto/dso/dso_dlfcn.c
+++ b/src/lib/libssl/src/crypto/dso/dso_dlfcn.c
@@ -56,6 +56,16 @@
56 * 56 *
57 */ 57 */
58 58
59/* We need to do this early, because stdio.h includes the header files
60 that handle _GNU_SOURCE and other similar macros. Defining it later
61 is simply too late, because those headers are protected from re-
62 inclusion. */
63#ifdef __linux
64# ifndef _GNU_SOURCE
65# define _GNU_SOURCE /* make sure dladdr is declared */
66# endif
67#endif
68
59#include <stdio.h> 69#include <stdio.h>
60#include "cryptlib.h" 70#include "cryptlib.h"
61#include <openssl/dso.h> 71#include <openssl/dso.h>
@@ -68,7 +78,16 @@ DSO_METHOD *DSO_METHOD_dlfcn(void)
68#else 78#else
69 79
70#ifdef HAVE_DLFCN_H 80#ifdef HAVE_DLFCN_H
71#include <dlfcn.h> 81# ifdef __osf__
82# define __EXTENSIONS__
83# endif
84# include <dlfcn.h>
85# define HAVE_DLINFO 1
86# if defined(_AIX) || defined(__CYGWIN__) || \
87 defined(__SCO_VERSION__) || defined(_SCO_ELF) || \
88 (defined(__OpenBSD__) && !defined(RTLD_SELF))
89# undef HAVE_DLINFO
90# endif
72#endif 91#endif
73 92
74/* Part of the hack in "dlfcn_load" ... */ 93/* Part of the hack in "dlfcn_load" ... */
@@ -87,6 +106,8 @@ static long dlfcn_ctrl(DSO *dso, int cmd, long larg, void *parg);
87static char *dlfcn_name_converter(DSO *dso, const char *filename); 106static char *dlfcn_name_converter(DSO *dso, const char *filename);
88static char *dlfcn_merger(DSO *dso, const char *filespec1, 107static char *dlfcn_merger(DSO *dso, const char *filespec1,
89 const char *filespec2); 108 const char *filespec2);
109static int dlfcn_pathbyaddr(void *addr,char *path,int sz);
110static void *dlfcn_globallookup(const char *name);
90 111
91static DSO_METHOD dso_meth_dlfcn = { 112static DSO_METHOD dso_meth_dlfcn = {
92 "OpenSSL 'dlfcn' shared library method", 113 "OpenSSL 'dlfcn' shared library method",
@@ -103,7 +124,9 @@ static DSO_METHOD dso_meth_dlfcn = {
103 dlfcn_name_converter, 124 dlfcn_name_converter,
104 dlfcn_merger, 125 dlfcn_merger,
105 NULL, /* init */ 126 NULL, /* init */
106 NULL /* finish */ 127 NULL, /* finish */
128 dlfcn_pathbyaddr,
129 dlfcn_globallookup
107 }; 130 };
108 131
109DSO_METHOD *DSO_METHOD_dlfcn(void) 132DSO_METHOD *DSO_METHOD_dlfcn(void)
@@ -163,7 +186,7 @@ static int dlfcn_load(DSO *dso)
163 ERR_add_error_data(4, "filename(", filename, "): ", dlerror()); 186 ERR_add_error_data(4, "filename(", filename, "): ", dlerror());
164 goto err; 187 goto err;
165 } 188 }
166 if(!sk_push(dso->meth_data, (char *)ptr)) 189 if(!sk_void_push(dso->meth_data, (char *)ptr))
167 { 190 {
168 DSOerr(DSO_F_DLFCN_LOAD,DSO_R_STACK_ERROR); 191 DSOerr(DSO_F_DLFCN_LOAD,DSO_R_STACK_ERROR);
169 goto err; 192 goto err;
@@ -188,15 +211,15 @@ static int dlfcn_unload(DSO *dso)
188 DSOerr(DSO_F_DLFCN_UNLOAD,ERR_R_PASSED_NULL_PARAMETER); 211 DSOerr(DSO_F_DLFCN_UNLOAD,ERR_R_PASSED_NULL_PARAMETER);
189 return(0); 212 return(0);
190 } 213 }
191 if(sk_num(dso->meth_data) < 1) 214 if(sk_void_num(dso->meth_data) < 1)
192 return(1); 215 return(1);
193 ptr = (void *)sk_pop(dso->meth_data); 216 ptr = sk_void_pop(dso->meth_data);
194 if(ptr == NULL) 217 if(ptr == NULL)
195 { 218 {
196 DSOerr(DSO_F_DLFCN_UNLOAD,DSO_R_NULL_HANDLE); 219 DSOerr(DSO_F_DLFCN_UNLOAD,DSO_R_NULL_HANDLE);
197 /* Should push the value back onto the stack in 220 /* Should push the value back onto the stack in
198 * case of a retry. */ 221 * case of a retry. */
199 sk_push(dso->meth_data, (char *)ptr); 222 sk_void_push(dso->meth_data, ptr);
200 return(0); 223 return(0);
201 } 224 }
202 /* For now I'm not aware of any errors associated with dlclose() */ 225 /* For now I'm not aware of any errors associated with dlclose() */
@@ -213,12 +236,12 @@ static void *dlfcn_bind_var(DSO *dso, const char *symname)
213 DSOerr(DSO_F_DLFCN_BIND_VAR,ERR_R_PASSED_NULL_PARAMETER); 236 DSOerr(DSO_F_DLFCN_BIND_VAR,ERR_R_PASSED_NULL_PARAMETER);
214 return(NULL); 237 return(NULL);
215 } 238 }
216 if(sk_num(dso->meth_data) < 1) 239 if(sk_void_num(dso->meth_data) < 1)
217 { 240 {
218 DSOerr(DSO_F_DLFCN_BIND_VAR,DSO_R_STACK_ERROR); 241 DSOerr(DSO_F_DLFCN_BIND_VAR,DSO_R_STACK_ERROR);
219 return(NULL); 242 return(NULL);
220 } 243 }
221 ptr = (void *)sk_value(dso->meth_data, sk_num(dso->meth_data) - 1); 244 ptr = sk_void_value(dso->meth_data, sk_void_num(dso->meth_data) - 1);
222 if(ptr == NULL) 245 if(ptr == NULL)
223 { 246 {
224 DSOerr(DSO_F_DLFCN_BIND_VAR,DSO_R_NULL_HANDLE); 247 DSOerr(DSO_F_DLFCN_BIND_VAR,DSO_R_NULL_HANDLE);
@@ -237,32 +260,35 @@ static void *dlfcn_bind_var(DSO *dso, const char *symname)
237static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname) 260static DSO_FUNC_TYPE dlfcn_bind_func(DSO *dso, const char *symname)
238 { 261 {
239 void *ptr; 262 void *ptr;
240 DSO_FUNC_TYPE sym, *tsym = &sym; 263 union {
264 DSO_FUNC_TYPE sym;
265 void *dlret;
266 } u;
241 267
242 if((dso == NULL) || (symname == NULL)) 268 if((dso == NULL) || (symname == NULL))
243 { 269 {
244 DSOerr(DSO_F_DLFCN_BIND_FUNC,ERR_R_PASSED_NULL_PARAMETER); 270 DSOerr(DSO_F_DLFCN_BIND_FUNC,ERR_R_PASSED_NULL_PARAMETER);
245 return(NULL); 271 return(NULL);
246 } 272 }
247 if(sk_num(dso->meth_data) < 1) 273 if(sk_void_num(dso->meth_data) < 1)
248 { 274 {
249 DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_STACK_ERROR); 275 DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_STACK_ERROR);
250 return(NULL); 276 return(NULL);
251 } 277 }
252 ptr = (void *)sk_value(dso->meth_data, sk_num(dso->meth_data) - 1); 278 ptr = sk_void_value(dso->meth_data, sk_void_num(dso->meth_data) - 1);
253 if(ptr == NULL) 279 if(ptr == NULL)
254 { 280 {
255 DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_NULL_HANDLE); 281 DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_NULL_HANDLE);
256 return(NULL); 282 return(NULL);
257 } 283 }
258 *(void **)(tsym) = dlsym(ptr, symname); 284 u.dlret = dlsym(ptr, symname);
259 if(sym == NULL) 285 if(u.dlret == NULL)
260 { 286 {
261 DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_SYM_FAILURE); 287 DSOerr(DSO_F_DLFCN_BIND_FUNC,DSO_R_SYM_FAILURE);
262 ERR_add_error_data(4, "symname(", symname, "): ", dlerror()); 288 ERR_add_error_data(4, "symname(", symname, "): ", dlerror());
263 return(NULL); 289 return(NULL);
264 } 290 }
265 return(sym); 291 return u.sym;
266 } 292 }
267 293
268static char *dlfcn_merger(DSO *dso, const char *filespec1, 294static char *dlfcn_merger(DSO *dso, const char *filespec1,
@@ -278,13 +304,12 @@ static char *dlfcn_merger(DSO *dso, const char *filespec1,
278 } 304 }
279 /* If the first file specification is a rooted path, it rules. 305 /* If the first file specification is a rooted path, it rules.
280 same goes if the second file specification is missing. */ 306 same goes if the second file specification is missing. */
281 if (!filespec2 || filespec1[0] == '/') 307 if (!filespec2 || (filespec1 != NULL && filespec1[0] == '/'))
282 { 308 {
283 merged = OPENSSL_malloc(strlen(filespec1) + 1); 309 merged = OPENSSL_malloc(strlen(filespec1) + 1);
284 if(!merged) 310 if(!merged)
285 { 311 {
286 DSOerr(DSO_F_DLFCN_MERGER, 312 DSOerr(DSO_F_DLFCN_MERGER, ERR_R_MALLOC_FAILURE);
287 ERR_R_MALLOC_FAILURE);
288 return(NULL); 313 return(NULL);
289 } 314 }
290 strcpy(merged, filespec1); 315 strcpy(merged, filespec1);
@@ -310,7 +335,7 @@ static char *dlfcn_merger(DSO *dso, const char *filespec1,
310 { 335 {
311 int spec2len, len; 336 int spec2len, len;
312 337
313 spec2len = (filespec2 ? strlen(filespec2) : 0); 338 spec2len = strlen(filespec2);
314 len = spec2len + (filespec1 ? strlen(filespec1) : 0); 339 len = spec2len + (filespec1 ? strlen(filespec1) : 0);
315 340
316 if(filespec2 && filespec2[spec2len - 1] == '/') 341 if(filespec2 && filespec2[spec2len - 1] == '/')
@@ -332,6 +357,15 @@ static char *dlfcn_merger(DSO *dso, const char *filespec1,
332 return(merged); 357 return(merged);
333 } 358 }
334 359
360#ifdef OPENSSL_SYS_MACOSX
361#define DSO_ext ".dylib"
362#define DSO_extlen 6
363#else
364#define DSO_ext ".so"
365#define DSO_extlen 3
366#endif
367
368
335static char *dlfcn_name_converter(DSO *dso, const char *filename) 369static char *dlfcn_name_converter(DSO *dso, const char *filename)
336 { 370 {
337 char *translated; 371 char *translated;
@@ -342,8 +376,8 @@ static char *dlfcn_name_converter(DSO *dso, const char *filename)
342 transform = (strstr(filename, "/") == NULL); 376 transform = (strstr(filename, "/") == NULL);
343 if(transform) 377 if(transform)
344 { 378 {
345 /* We will convert this to "%s.so" or "lib%s.so" */ 379 /* We will convert this to "%s.so" or "lib%s.so" etc */
346 rsize += 3; /* The length of ".so" */ 380 rsize += DSO_extlen; /* The length of ".so" */
347 if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) 381 if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)
348 rsize += 3; /* The length of "lib" */ 382 rsize += 3; /* The length of "lib" */
349 } 383 }
@@ -357,13 +391,92 @@ static char *dlfcn_name_converter(DSO *dso, const char *filename)
357 if(transform) 391 if(transform)
358 { 392 {
359 if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0) 393 if ((DSO_flags(dso) & DSO_FLAG_NAME_TRANSLATION_EXT_ONLY) == 0)
360 sprintf(translated, "lib%s.so", filename); 394 sprintf(translated, "lib%s" DSO_ext, filename);
361 else 395 else
362 sprintf(translated, "%s.so", filename); 396 sprintf(translated, "%s" DSO_ext, filename);
363 } 397 }
364 else 398 else
365 sprintf(translated, "%s", filename); 399 sprintf(translated, "%s", filename);
366 return(translated); 400 return(translated);
367 } 401 }
368 402
403#ifdef __sgi
404/*
405This is a quote from IRIX manual for dladdr(3c):
406
407 <dlfcn.h> does not contain a prototype for dladdr or definition of
408 Dl_info. The #include <dlfcn.h> in the SYNOPSIS line is traditional,
409 but contains no dladdr prototype and no IRIX library contains an
410 implementation. Write your own declaration based on the code below.
411
412 The following code is dependent on internal interfaces that are not
413 part of the IRIX compatibility guarantee; however, there is no future
414 intention to change this interface, so on a practical level, the code
415 below is safe to use on IRIX.
416*/
417#include <rld_interface.h>
418#ifndef _RLD_INTERFACE_DLFCN_H_DLADDR
419#define _RLD_INTERFACE_DLFCN_H_DLADDR
420typedef struct Dl_info {
421 const char * dli_fname;
422 void * dli_fbase;
423 const char * dli_sname;
424 void * dli_saddr;
425 int dli_version;
426 int dli_reserved1;
427 long dli_reserved[4];
428} Dl_info;
429#else
430typedef struct Dl_info Dl_info;
431#endif
432#define _RLD_DLADDR 14
433
434static int dladdr(void *address, Dl_info *dl)
435{
436 void *v;
437 v = _rld_new_interface(_RLD_DLADDR,address,dl);
438 return (int)v;
439}
440#endif /* __sgi */
441
442static int dlfcn_pathbyaddr(void *addr,char *path,int sz)
443 {
444#ifdef HAVE_DLINFO
445 Dl_info dli;
446 int len;
447
448 if (addr == NULL)
449 {
450 union { int(*f)(void*,char*,int); void *p; } t =
451 { dlfcn_pathbyaddr };
452 addr = t.p;
453 }
454
455 if (dladdr(addr,&dli))
456 {
457 len = (int)strlen(dli.dli_fname);
458 if (sz <= 0) return len+1;
459 if (len >= sz) len=sz-1;
460 memcpy(path,dli.dli_fname,len);
461 path[len++]=0;
462 return len;
463 }
464
465 ERR_add_error_data(4, "dlfcn_pathbyaddr(): ", dlerror());
466#endif
467 return -1;
468 }
469
470static void *dlfcn_globallookup(const char *name)
471 {
472 void *ret = NULL,*handle = dlopen(NULL,RTLD_LAZY);
473
474 if (handle)
475 {
476 ret = dlsym(handle,name);
477 dlclose(handle);
478 }
479
480 return ret;
481 }
369#endif /* DSO_DLFCN */ 482#endif /* DSO_DLFCN */
diff --git a/src/lib/libssl/src/crypto/dso/dso_err.c b/src/lib/libssl/src/crypto/dso/dso_err.c
index a8b0a210de..2bb07c2514 100644
--- a/src/lib/libssl/src/crypto/dso/dso_err.c
+++ b/src/lib/libssl/src/crypto/dso/dso_err.c
@@ -1,6 +1,6 @@
1/* crypto/dso/dso_err.c */ 1/* crypto/dso/dso_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -70,6 +70,11 @@
70 70
71static ERR_STRING_DATA DSO_str_functs[]= 71static ERR_STRING_DATA DSO_str_functs[]=
72 { 72 {
73{ERR_FUNC(DSO_F_BEOS_BIND_FUNC), "BEOS_BIND_FUNC"},
74{ERR_FUNC(DSO_F_BEOS_BIND_VAR), "BEOS_BIND_VAR"},
75{ERR_FUNC(DSO_F_BEOS_LOAD), "BEOS_LOAD"},
76{ERR_FUNC(DSO_F_BEOS_NAME_CONVERTER), "BEOS_NAME_CONVERTER"},
77{ERR_FUNC(DSO_F_BEOS_UNLOAD), "BEOS_UNLOAD"},
73{ERR_FUNC(DSO_F_DLFCN_BIND_FUNC), "DLFCN_BIND_FUNC"}, 78{ERR_FUNC(DSO_F_DLFCN_BIND_FUNC), "DLFCN_BIND_FUNC"},
74{ERR_FUNC(DSO_F_DLFCN_BIND_VAR), "DLFCN_BIND_VAR"}, 79{ERR_FUNC(DSO_F_DLFCN_BIND_VAR), "DLFCN_BIND_VAR"},
75{ERR_FUNC(DSO_F_DLFCN_LOAD), "DLFCN_LOAD"}, 80{ERR_FUNC(DSO_F_DLFCN_LOAD), "DLFCN_LOAD"},
@@ -89,22 +94,29 @@ static ERR_STRING_DATA DSO_str_functs[]=
89{ERR_FUNC(DSO_F_DSO_FREE), "DSO_free"}, 94{ERR_FUNC(DSO_F_DSO_FREE), "DSO_free"},
90{ERR_FUNC(DSO_F_DSO_GET_FILENAME), "DSO_get_filename"}, 95{ERR_FUNC(DSO_F_DSO_GET_FILENAME), "DSO_get_filename"},
91{ERR_FUNC(DSO_F_DSO_GET_LOADED_FILENAME), "DSO_get_loaded_filename"}, 96{ERR_FUNC(DSO_F_DSO_GET_LOADED_FILENAME), "DSO_get_loaded_filename"},
97{ERR_FUNC(DSO_F_DSO_GLOBAL_LOOKUP), "DSO_global_lookup"},
92{ERR_FUNC(DSO_F_DSO_LOAD), "DSO_load"}, 98{ERR_FUNC(DSO_F_DSO_LOAD), "DSO_load"},
93{ERR_FUNC(DSO_F_DSO_MERGE), "DSO_merge"}, 99{ERR_FUNC(DSO_F_DSO_MERGE), "DSO_merge"},
94{ERR_FUNC(DSO_F_DSO_NEW_METHOD), "DSO_new_method"}, 100{ERR_FUNC(DSO_F_DSO_NEW_METHOD), "DSO_new_method"},
101{ERR_FUNC(DSO_F_DSO_PATHBYADDR), "DSO_pathbyaddr"},
95{ERR_FUNC(DSO_F_DSO_SET_FILENAME), "DSO_set_filename"}, 102{ERR_FUNC(DSO_F_DSO_SET_FILENAME), "DSO_set_filename"},
96{ERR_FUNC(DSO_F_DSO_SET_NAME_CONVERTER), "DSO_set_name_converter"}, 103{ERR_FUNC(DSO_F_DSO_SET_NAME_CONVERTER), "DSO_set_name_converter"},
97{ERR_FUNC(DSO_F_DSO_UP_REF), "DSO_up_ref"}, 104{ERR_FUNC(DSO_F_DSO_UP_REF), "DSO_up_ref"},
105{ERR_FUNC(DSO_F_GLOBAL_LOOKUP_FUNC), "GLOBAL_LOOKUP_FUNC"},
106{ERR_FUNC(DSO_F_PATHBYADDR), "PATHBYADDR"},
98{ERR_FUNC(DSO_F_VMS_BIND_SYM), "VMS_BIND_SYM"}, 107{ERR_FUNC(DSO_F_VMS_BIND_SYM), "VMS_BIND_SYM"},
99{ERR_FUNC(DSO_F_VMS_LOAD), "VMS_LOAD"}, 108{ERR_FUNC(DSO_F_VMS_LOAD), "VMS_LOAD"},
100{ERR_FUNC(DSO_F_VMS_MERGER), "VMS_MERGER"}, 109{ERR_FUNC(DSO_F_VMS_MERGER), "VMS_MERGER"},
101{ERR_FUNC(DSO_F_VMS_UNLOAD), "VMS_UNLOAD"}, 110{ERR_FUNC(DSO_F_VMS_UNLOAD), "VMS_UNLOAD"},
102{ERR_FUNC(DSO_F_WIN32_BIND_FUNC), "WIN32_BIND_FUNC"}, 111{ERR_FUNC(DSO_F_WIN32_BIND_FUNC), "WIN32_BIND_FUNC"},
103{ERR_FUNC(DSO_F_WIN32_BIND_VAR), "WIN32_BIND_VAR"}, 112{ERR_FUNC(DSO_F_WIN32_BIND_VAR), "WIN32_BIND_VAR"},
113{ERR_FUNC(DSO_F_WIN32_GLOBALLOOKUP), "WIN32_GLOBALLOOKUP"},
114{ERR_FUNC(DSO_F_WIN32_GLOBALLOOKUP_FUNC), "WIN32_GLOBALLOOKUP_FUNC"},
104{ERR_FUNC(DSO_F_WIN32_JOINER), "WIN32_JOINER"}, 115{ERR_FUNC(DSO_F_WIN32_JOINER), "WIN32_JOINER"},
105{ERR_FUNC(DSO_F_WIN32_LOAD), "WIN32_LOAD"}, 116{ERR_FUNC(DSO_F_WIN32_LOAD), "WIN32_LOAD"},
106{ERR_FUNC(DSO_F_WIN32_MERGER), "WIN32_MERGER"}, 117{ERR_FUNC(DSO_F_WIN32_MERGER), "WIN32_MERGER"},
107{ERR_FUNC(DSO_F_WIN32_NAME_CONVERTER), "WIN32_NAME_CONVERTER"}, 118{ERR_FUNC(DSO_F_WIN32_NAME_CONVERTER), "WIN32_NAME_CONVERTER"},
119{ERR_FUNC(DSO_F_WIN32_PATHBYADDR), "WIN32_PATHBYADDR"},
108{ERR_FUNC(DSO_F_WIN32_SPLITTER), "WIN32_SPLITTER"}, 120{ERR_FUNC(DSO_F_WIN32_SPLITTER), "WIN32_SPLITTER"},
109{ERR_FUNC(DSO_F_WIN32_UNLOAD), "WIN32_UNLOAD"}, 121{ERR_FUNC(DSO_F_WIN32_UNLOAD), "WIN32_UNLOAD"},
110{0,NULL} 122{0,NULL}
diff --git a/src/lib/libssl/src/crypto/dso/dso_lib.c b/src/lib/libssl/src/crypto/dso/dso_lib.c
index 49bdd71309..8a15b794ab 100644
--- a/src/lib/libssl/src/crypto/dso/dso_lib.c
+++ b/src/lib/libssl/src/crypto/dso/dso_lib.c
@@ -107,7 +107,7 @@ DSO *DSO_new_method(DSO_METHOD *meth)
107 return(NULL); 107 return(NULL);
108 } 108 }
109 memset(ret, 0, sizeof(DSO)); 109 memset(ret, 0, sizeof(DSO));
110 ret->meth_data = sk_new_null(); 110 ret->meth_data = sk_void_new_null();
111 if(ret->meth_data == NULL) 111 if(ret->meth_data == NULL)
112 { 112 {
113 /* sk_new doesn't generate any errors so we do */ 113 /* sk_new doesn't generate any errors so we do */
@@ -163,7 +163,7 @@ int DSO_free(DSO *dso)
163 return(0); 163 return(0);
164 } 164 }
165 165
166 sk_free(dso->meth_data); 166 sk_void_free(dso->meth_data);
167 if(dso->filename != NULL) 167 if(dso->filename != NULL)
168 OPENSSL_free(dso->filename); 168 OPENSSL_free(dso->filename);
169 if(dso->loaded_filename != NULL) 169 if(dso->loaded_filename != NULL)
@@ -399,13 +399,6 @@ char *DSO_merge(DSO *dso, const char *filespec1, const char *filespec2)
399 DSOerr(DSO_F_DSO_MERGE,ERR_R_PASSED_NULL_PARAMETER); 399 DSOerr(DSO_F_DSO_MERGE,ERR_R_PASSED_NULL_PARAMETER);
400 return(NULL); 400 return(NULL);
401 } 401 }
402 if(filespec1 == NULL)
403 filespec1 = dso->filename;
404 if(filespec1 == NULL)
405 {
406 DSOerr(DSO_F_DSO_MERGE,DSO_R_NO_FILE_SPECIFICATION);
407 return(NULL);
408 }
409 if((dso->flags & DSO_FLAG_NO_NAME_TRANSLATION) == 0) 402 if((dso->flags & DSO_FLAG_NO_NAME_TRANSLATION) == 0)
410 { 403 {
411 if(dso->merger != NULL) 404 if(dso->merger != NULL)
@@ -464,3 +457,27 @@ const char *DSO_get_loaded_filename(DSO *dso)
464 } 457 }
465 return(dso->loaded_filename); 458 return(dso->loaded_filename);
466 } 459 }
460
461int DSO_pathbyaddr(void *addr,char *path,int sz)
462 {
463 DSO_METHOD *meth = default_DSO_meth;
464 if (meth == NULL) meth = DSO_METHOD_openssl();
465 if (meth->pathbyaddr == NULL)
466 {
467 DSOerr(DSO_F_DSO_PATHBYADDR,DSO_R_UNSUPPORTED);
468 return -1;
469 }
470 return (*meth->pathbyaddr)(addr,path,sz);
471 }
472
473void *DSO_global_lookup(const char *name)
474 {
475 DSO_METHOD *meth = default_DSO_meth;
476 if (meth == NULL) meth = DSO_METHOD_openssl();
477 if (meth->globallookup == NULL)
478 {
479 DSOerr(DSO_F_DSO_GLOBAL_LOOKUP,DSO_R_UNSUPPORTED);
480 return NULL;
481 }
482 return (*meth->globallookup)(name);
483 }
diff --git a/src/lib/libssl/src/crypto/dso/dso_null.c b/src/lib/libssl/src/crypto/dso/dso_null.c
index 4972984651..49d842d1f5 100644
--- a/src/lib/libssl/src/crypto/dso/dso_null.c
+++ b/src/lib/libssl/src/crypto/dso/dso_null.c
@@ -78,7 +78,9 @@ static DSO_METHOD dso_meth_null = {
78 NULL, /* dso_name_converter */ 78 NULL, /* dso_name_converter */
79 NULL, /* dso_merger */ 79 NULL, /* dso_merger */
80 NULL, /* init */ 80 NULL, /* init */
81 NULL /* finish */ 81 NULL, /* finish */
82 NULL, /* pathbyaddr */
83 NULL /* globallookup */
82 }; 84 };
83 85
84DSO_METHOD *DSO_METHOD_null(void) 86DSO_METHOD *DSO_METHOD_null(void)
diff --git a/src/lib/libssl/src/crypto/dso/dso_openssl.c b/src/lib/libssl/src/crypto/dso/dso_openssl.c
index a4395ebffe..b17e8e8e9e 100644
--- a/src/lib/libssl/src/crypto/dso/dso_openssl.c
+++ b/src/lib/libssl/src/crypto/dso/dso_openssl.c
@@ -74,6 +74,8 @@ DSO_METHOD *DSO_METHOD_openssl(void)
74 return(DSO_METHOD_win32()); 74 return(DSO_METHOD_win32());
75#elif defined(DSO_VMS) 75#elif defined(DSO_VMS)
76 return(DSO_METHOD_vms()); 76 return(DSO_METHOD_vms());
77#elif defined(DSO_BEOS)
78 return(DSO_METHOD_beos());
77#else 79#else
78 return(DSO_METHOD_null()); 80 return(DSO_METHOD_null());
79#endif 81#endif
diff --git a/src/lib/libssl/src/crypto/dso/dso_vms.c b/src/lib/libssl/src/crypto/dso/dso_vms.c
index 2c434ee8a6..321512772a 100644
--- a/src/lib/libssl/src/crypto/dso/dso_vms.c
+++ b/src/lib/libssl/src/crypto/dso/dso_vms.c
@@ -215,7 +215,7 @@ static int vms_load(DSO *dso)
215 p->imagename_dsc.dsc$b_class = DSC$K_CLASS_S; 215 p->imagename_dsc.dsc$b_class = DSC$K_CLASS_S;
216 p->imagename_dsc.dsc$a_pointer = p->imagename; 216 p->imagename_dsc.dsc$a_pointer = p->imagename;
217 217
218 if(!sk_push(dso->meth_data, (char *)p)) 218 if(!sk_void_push(dso->meth_data, (char *)p))
219 { 219 {
220 DSOerr(DSO_F_VMS_LOAD,DSO_R_STACK_ERROR); 220 DSOerr(DSO_F_VMS_LOAD,DSO_R_STACK_ERROR);
221 goto err; 221 goto err;
@@ -245,9 +245,9 @@ static int vms_unload(DSO *dso)
245 DSOerr(DSO_F_VMS_UNLOAD,ERR_R_PASSED_NULL_PARAMETER); 245 DSOerr(DSO_F_VMS_UNLOAD,ERR_R_PASSED_NULL_PARAMETER);
246 return(0); 246 return(0);
247 } 247 }
248 if(sk_num(dso->meth_data) < 1) 248 if(sk_void_num(dso->meth_data) < 1)
249 return(1); 249 return(1);
250 p = (DSO_VMS_INTERNAL *)sk_pop(dso->meth_data); 250 p = (DSO_VMS_INTERNAL *)sk_void_pop(dso->meth_data);
251 if(p == NULL) 251 if(p == NULL)
252 { 252 {
253 DSOerr(DSO_F_VMS_UNLOAD,DSO_R_NULL_HANDLE); 253 DSOerr(DSO_F_VMS_UNLOAD,DSO_R_NULL_HANDLE);
@@ -302,13 +302,13 @@ void vms_bind_sym(DSO *dso, const char *symname, void **sym)
302 DSOerr(DSO_F_VMS_BIND_SYM,ERR_R_PASSED_NULL_PARAMETER); 302 DSOerr(DSO_F_VMS_BIND_SYM,ERR_R_PASSED_NULL_PARAMETER);
303 return; 303 return;
304 } 304 }
305 if(sk_num(dso->meth_data) < 1) 305 if(sk_void_num(dso->meth_data) < 1)
306 { 306 {
307 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_STACK_ERROR); 307 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_STACK_ERROR);
308 return; 308 return;
309 } 309 }
310 ptr = (DSO_VMS_INTERNAL *)sk_value(dso->meth_data, 310 ptr = (DSO_VMS_INTERNAL *)sk_void_value(dso->meth_data,
311 sk_num(dso->meth_data) - 1); 311 sk_void_num(dso->meth_data) - 1);
312 if(ptr == NULL) 312 if(ptr == NULL)
313 { 313 {
314 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_NULL_HANDLE); 314 DSOerr(DSO_F_VMS_BIND_SYM,DSO_R_NULL_HANDLE);
diff --git a/src/lib/libssl/src/crypto/dso/dso_win32.c b/src/lib/libssl/src/crypto/dso/dso_win32.c
index fd3dd6a7fe..6fb6c54181 100644
--- a/src/lib/libssl/src/crypto/dso/dso_win32.c
+++ b/src/lib/libssl/src/crypto/dso/dso_win32.c
@@ -96,7 +96,11 @@ static HINSTANCE LoadLibraryA(LPCSTR lpLibFileName)
96#else 96#else
97 fnamw = (WCHAR *)alloca (len_0*sizeof(WCHAR)); 97 fnamw = (WCHAR *)alloca (len_0*sizeof(WCHAR));
98#endif 98#endif
99 if (fnamw == NULL) return NULL; 99 if (fnamw == NULL)
100 {
101 SetLastError(ERROR_NOT_ENOUGH_MEMORY);
102 return NULL;
103 }
100 104
101#if defined(_WIN32_WCE) && _WIN32_WCE>=101 105#if defined(_WIN32_WCE) && _WIN32_WCE>=101
102 if (!MultiByteToWideChar(CP_ACP,0,lpLibFileName,len_0,fnamw,len_0)) 106 if (!MultiByteToWideChar(CP_ACP,0,lpLibFileName,len_0,fnamw,len_0))
@@ -124,6 +128,8 @@ static long win32_ctrl(DSO *dso, int cmd, long larg, void *parg);
124static char *win32_name_converter(DSO *dso, const char *filename); 128static char *win32_name_converter(DSO *dso, const char *filename);
125static char *win32_merger(DSO *dso, const char *filespec1, 129static char *win32_merger(DSO *dso, const char *filespec1,
126 const char *filespec2); 130 const char *filespec2);
131static int win32_pathbyaddr(void *addr,char *path,int sz);
132static void *win32_globallookup(const char *name);
127 133
128static const char *openssl_strnchr(const char *string, int c, size_t len); 134static const char *openssl_strnchr(const char *string, int c, size_t len);
129 135
@@ -142,7 +148,9 @@ static DSO_METHOD dso_meth_win32 = {
142 win32_name_converter, 148 win32_name_converter,
143 win32_merger, 149 win32_merger,
144 NULL, /* init */ 150 NULL, /* init */
145 NULL /* finish */ 151 NULL, /* finish */
152 win32_pathbyaddr,
153 win32_globallookup
146 }; 154 };
147 155
148DSO_METHOD *DSO_METHOD_win32(void) 156DSO_METHOD *DSO_METHOD_win32(void)
@@ -180,7 +188,7 @@ static int win32_load(DSO *dso)
180 goto err; 188 goto err;
181 } 189 }
182 *p = h; 190 *p = h;
183 if(!sk_push(dso->meth_data, (char *)p)) 191 if(!sk_void_push(dso->meth_data, p))
184 { 192 {
185 DSOerr(DSO_F_WIN32_LOAD,DSO_R_STACK_ERROR); 193 DSOerr(DSO_F_WIN32_LOAD,DSO_R_STACK_ERROR);
186 goto err; 194 goto err;
@@ -207,9 +215,9 @@ static int win32_unload(DSO *dso)
207 DSOerr(DSO_F_WIN32_UNLOAD,ERR_R_PASSED_NULL_PARAMETER); 215 DSOerr(DSO_F_WIN32_UNLOAD,ERR_R_PASSED_NULL_PARAMETER);
208 return(0); 216 return(0);
209 } 217 }
210 if(sk_num(dso->meth_data) < 1) 218 if(sk_void_num(dso->meth_data) < 1)
211 return(1); 219 return(1);
212 p = (HINSTANCE *)sk_pop(dso->meth_data); 220 p = sk_void_pop(dso->meth_data);
213 if(p == NULL) 221 if(p == NULL)
214 { 222 {
215 DSOerr(DSO_F_WIN32_UNLOAD,DSO_R_NULL_HANDLE); 223 DSOerr(DSO_F_WIN32_UNLOAD,DSO_R_NULL_HANDLE);
@@ -220,7 +228,7 @@ static int win32_unload(DSO *dso)
220 DSOerr(DSO_F_WIN32_UNLOAD,DSO_R_UNLOAD_FAILED); 228 DSOerr(DSO_F_WIN32_UNLOAD,DSO_R_UNLOAD_FAILED);
221 /* We should push the value back onto the stack in 229 /* We should push the value back onto the stack in
222 * case of a retry. */ 230 * case of a retry. */
223 sk_push(dso->meth_data, (char *)p); 231 sk_void_push(dso->meth_data, p);
224 return(0); 232 return(0);
225 } 233 }
226 /* Cleanup */ 234 /* Cleanup */
@@ -240,12 +248,12 @@ static void *win32_bind_var(DSO *dso, const char *symname)
240 DSOerr(DSO_F_WIN32_BIND_VAR,ERR_R_PASSED_NULL_PARAMETER); 248 DSOerr(DSO_F_WIN32_BIND_VAR,ERR_R_PASSED_NULL_PARAMETER);
241 return(NULL); 249 return(NULL);
242 } 250 }
243 if(sk_num(dso->meth_data) < 1) 251 if(sk_void_num(dso->meth_data) < 1)
244 { 252 {
245 DSOerr(DSO_F_WIN32_BIND_VAR,DSO_R_STACK_ERROR); 253 DSOerr(DSO_F_WIN32_BIND_VAR,DSO_R_STACK_ERROR);
246 return(NULL); 254 return(NULL);
247 } 255 }
248 ptr = (HINSTANCE *)sk_value(dso->meth_data, sk_num(dso->meth_data) - 1); 256 ptr = sk_void_value(dso->meth_data, sk_void_num(dso->meth_data) - 1);
249 if(ptr == NULL) 257 if(ptr == NULL)
250 { 258 {
251 DSOerr(DSO_F_WIN32_BIND_VAR,DSO_R_NULL_HANDLE); 259 DSOerr(DSO_F_WIN32_BIND_VAR,DSO_R_NULL_HANDLE);
@@ -271,12 +279,12 @@ static DSO_FUNC_TYPE win32_bind_func(DSO *dso, const char *symname)
271 DSOerr(DSO_F_WIN32_BIND_FUNC,ERR_R_PASSED_NULL_PARAMETER); 279 DSOerr(DSO_F_WIN32_BIND_FUNC,ERR_R_PASSED_NULL_PARAMETER);
272 return(NULL); 280 return(NULL);
273 } 281 }
274 if(sk_num(dso->meth_data) < 1) 282 if(sk_void_num(dso->meth_data) < 1)
275 { 283 {
276 DSOerr(DSO_F_WIN32_BIND_FUNC,DSO_R_STACK_ERROR); 284 DSOerr(DSO_F_WIN32_BIND_FUNC,DSO_R_STACK_ERROR);
277 return(NULL); 285 return(NULL);
278 } 286 }
279 ptr = (HINSTANCE *)sk_value(dso->meth_data, sk_num(dso->meth_data) - 1); 287 ptr = sk_void_value(dso->meth_data, sk_void_num(dso->meth_data) - 1);
280 if(ptr == NULL) 288 if(ptr == NULL)
281 { 289 {
282 DSOerr(DSO_F_WIN32_BIND_FUNC,DSO_R_NULL_HANDLE); 290 DSOerr(DSO_F_WIN32_BIND_FUNC,DSO_R_NULL_HANDLE);
@@ -327,8 +335,8 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
327 memset(result, 0, sizeof(struct file_st)); 335 memset(result, 0, sizeof(struct file_st));
328 position = IN_DEVICE; 336 position = IN_DEVICE;
329 337
330 if(filename[0] == '\\' && filename[1] == '\\' 338 if((filename[0] == '\\' && filename[1] == '\\')
331 || filename[0] == '/' && filename[1] == '/') 339 || (filename[0] == '/' && filename[1] == '/'))
332 { 340 {
333 position = IN_NODE; 341 position = IN_NODE;
334 filename += 2; 342 filename += 2;
@@ -347,10 +355,11 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
347 DSOerr(DSO_F_WIN32_SPLITTER, 355 DSOerr(DSO_F_WIN32_SPLITTER,
348 DSO_R_INCORRECT_FILE_SYNTAX); 356 DSO_R_INCORRECT_FILE_SYNTAX);
349 /*goto err;*/ 357 /*goto err;*/
358 OPENSSL_free(result);
350 return(NULL); 359 return(NULL);
351 } 360 }
352 result->device = start; 361 result->device = start;
353 result->devicelen = filename - start; 362 result->devicelen = (int)(filename - start);
354 position = IN_FILE; 363 position = IN_FILE;
355 start = ++filename; 364 start = ++filename;
356 result->dir = start; 365 result->dir = start;
@@ -359,7 +368,7 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
359 case '/': 368 case '/':
360 if(position == IN_NODE) 369 if(position == IN_NODE)
361 { 370 {
362 result->nodelen = filename - start; 371 result->nodelen = (int)(filename - start);
363 position = IN_FILE; 372 position = IN_FILE;
364 start = ++filename; 373 start = ++filename;
365 result->dir = start; 374 result->dir = start;
@@ -369,20 +378,20 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
369 position = IN_FILE; 378 position = IN_FILE;
370 filename++; 379 filename++;
371 result->dir = start; 380 result->dir = start;
372 result->dirlen = filename - start; 381 result->dirlen = (int)(filename - start);
373 start = filename; 382 start = filename;
374 } 383 }
375 else 384 else
376 { 385 {
377 filename++; 386 filename++;
378 result->dirlen += filename - start; 387 result->dirlen += (int)(filename - start);
379 start = filename; 388 start = filename;
380 } 389 }
381 break; 390 break;
382 case '\0': 391 case '\0':
383 if(position == IN_NODE) 392 if(position == IN_NODE)
384 { 393 {
385 result->nodelen = filename - start; 394 result->nodelen = (int)(filename - start);
386 } 395 }
387 else 396 else
388 { 397 {
@@ -396,13 +405,13 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
396 result->dirlen = 0; 405 result->dirlen = 0;
397 } 406 }
398 result->dirlen += 407 result->dirlen +=
399 filename - start; 408 (int)(filename - start);
400 } 409 }
401 else 410 else
402 { 411 {
403 result->file = start; 412 result->file = start;
404 result->filelen = 413 result->filelen =
405 filename - start; 414 (int)(filename - start);
406 } 415 }
407 } 416 }
408 } 417 }
@@ -496,7 +505,7 @@ static char *win32_joiner(DSO *dso, const struct file_st *file_split)
496 + file_split->predirlen 505 + file_split->predirlen
497 - (start - file_split->predir); 506 - (start - file_split->predir);
498 strncpy(&result[offset], start, 507 strncpy(&result[offset], start,
499 end - start); offset += end - start; 508 end - start); offset += (int)(end - start);
500 result[offset] = '\\'; offset++; 509 result[offset] = '\\'; offset++;
501 start = end + 1; 510 start = end + 1;
502 } 511 }
@@ -517,7 +526,7 @@ static char *win32_joiner(DSO *dso, const struct file_st *file_split)
517 + file_split->dirlen 526 + file_split->dirlen
518 - (start - file_split->dir); 527 - (start - file_split->dir);
519 strncpy(&result[offset], start, 528 strncpy(&result[offset], start,
520 end - start); offset += end - start; 529 end - start); offset += (int)(end - start);
521 result[offset] = '\\'; offset++; 530 result[offset] = '\\'; offset++;
522 start = end + 1; 531 start = end + 1;
523 } 532 }
@@ -613,6 +622,8 @@ static char *win32_merger(DSO *dso, const char *filespec1, const char *filespec2
613 622
614 merged = win32_joiner(dso, filespec1_split); 623 merged = win32_joiner(dso, filespec1_split);
615 } 624 }
625 OPENSSL_free(filespec1_split);
626 OPENSSL_free(filespec2_split);
616 return(merged); 627 return(merged);
617 } 628 }
618 629
@@ -656,5 +667,178 @@ static const char *openssl_strnchr(const char *string, int c, size_t len)
656 return NULL; 667 return NULL;
657 } 668 }
658 669
670#include <tlhelp32.h>
671#ifdef _WIN32_WCE
672# define DLLNAME "TOOLHELP.DLL"
673#else
674# ifdef MODULEENTRY32
675# undef MODULEENTRY32 /* unmask the ASCII version! */
676# endif
677# define DLLNAME "KERNEL32.DLL"
678#endif
679
680typedef HANDLE (WINAPI *CREATETOOLHELP32SNAPSHOT)(DWORD, DWORD);
681typedef BOOL (WINAPI *CLOSETOOLHELP32SNAPSHOT)(HANDLE);
682typedef BOOL (WINAPI *MODULE32)(HANDLE, MODULEENTRY32 *);
659 683
660#endif /* OPENSSL_SYS_WIN32 */ 684static int win32_pathbyaddr(void *addr,char *path,int sz)
685 {
686 HMODULE dll;
687 HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
688 MODULEENTRY32 me32;
689 CREATETOOLHELP32SNAPSHOT create_snap;
690 CLOSETOOLHELP32SNAPSHOT close_snap;
691 MODULE32 module_first, module_next;
692 int len;
693
694 if (addr == NULL)
695 {
696 union { int(*f)(void*,char*,int); void *p; } t =
697 { win32_pathbyaddr };
698 addr = t.p;
699 }
700
701 dll = LoadLibrary(TEXT(DLLNAME));
702 if (dll == NULL)
703 {
704 DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_UNSUPPORTED);
705 return -1;
706 }
707
708 create_snap = (CREATETOOLHELP32SNAPSHOT)
709 GetProcAddress(dll,"CreateToolhelp32Snapshot");
710 if (create_snap == NULL)
711 {
712 FreeLibrary(dll);
713 DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_UNSUPPORTED);
714 return -1;
715 }
716 /* We take the rest for granted... */
717#ifdef _WIN32_WCE
718 close_snap = (CLOSETOOLHELP32SNAPSHOT)
719 GetProcAddress(dll,"CloseToolhelp32Snapshot");
720#else
721 close_snap = (CLOSETOOLHELP32SNAPSHOT)CloseHandle;
722#endif
723 module_first = (MODULE32)GetProcAddress(dll,"Module32First");
724 module_next = (MODULE32)GetProcAddress(dll,"Module32Next");
725
726 hModuleSnap = (*create_snap)(TH32CS_SNAPMODULE,0);
727 if( hModuleSnap == INVALID_HANDLE_VALUE )
728 {
729 FreeLibrary(dll);
730 DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_UNSUPPORTED);
731 return -1;
732 }
733
734 me32.dwSize = sizeof(me32);
735
736 if(!(*module_first)(hModuleSnap,&me32))
737 {
738 (*close_snap)(hModuleSnap);
739 FreeLibrary(dll);
740 DSOerr(DSO_F_WIN32_PATHBYADDR,DSO_R_FAILURE);
741 return -1;
742 }
743
744 do {
745 if ((BYTE *)addr >= me32.modBaseAddr &&
746 (BYTE *)addr < me32.modBaseAddr+me32.modBaseSize)
747 {
748 (*close_snap)(hModuleSnap);
749 FreeLibrary(dll);
750#ifdef _WIN32_WCE
751# if _WIN32_WCE >= 101
752 return WideCharToMultiByte(CP_ACP,0,me32.szExePath,-1,
753 path,sz,NULL,NULL);
754# else
755 len = (int)wcslen(me32.szExePath);
756 if (sz <= 0) return len+1;
757 if (len >= sz) len=sz-1;
758 for(i=0;i<len;i++)
759 path[i] = (char)me32.szExePath[i];
760 path[len++] = 0;
761 return len;
762# endif
763#else
764 len = (int)strlen(me32.szExePath);
765 if (sz <= 0) return len+1;
766 if (len >= sz) len=sz-1;
767 memcpy(path,me32.szExePath,len);
768 path[len++] = 0;
769 return len;
770#endif
771 }
772 } while((*module_next)(hModuleSnap, &me32));
773
774 (*close_snap)(hModuleSnap);
775 FreeLibrary(dll);
776 return 0;
777 }
778
779static void *win32_globallookup(const char *name)
780 {
781 HMODULE dll;
782 HANDLE hModuleSnap = INVALID_HANDLE_VALUE;
783 MODULEENTRY32 me32;
784 CREATETOOLHELP32SNAPSHOT create_snap;
785 CLOSETOOLHELP32SNAPSHOT close_snap;
786 MODULE32 module_first, module_next;
787 FARPROC ret=NULL;
788
789 dll = LoadLibrary(TEXT(DLLNAME));
790 if (dll == NULL)
791 {
792 DSOerr(DSO_F_WIN32_GLOBALLOOKUP,DSO_R_UNSUPPORTED);
793 return NULL;
794 }
795
796 create_snap = (CREATETOOLHELP32SNAPSHOT)
797 GetProcAddress(dll,"CreateToolhelp32Snapshot");
798 if (create_snap == NULL)
799 {
800 FreeLibrary(dll);
801 DSOerr(DSO_F_WIN32_GLOBALLOOKUP,DSO_R_UNSUPPORTED);
802 return NULL;
803 }
804 /* We take the rest for granted... */
805#ifdef _WIN32_WCE
806 close_snap = (CLOSETOOLHELP32SNAPSHOT)
807 GetProcAddress(dll,"CloseToolhelp32Snapshot");
808#else
809 close_snap = (CLOSETOOLHELP32SNAPSHOT)CloseHandle;
810#endif
811 module_first = (MODULE32)GetProcAddress(dll,"Module32First");
812 module_next = (MODULE32)GetProcAddress(dll,"Module32Next");
813
814 hModuleSnap = (*create_snap)(TH32CS_SNAPMODULE,0);
815 if( hModuleSnap == INVALID_HANDLE_VALUE )
816 {
817 FreeLibrary(dll);
818 DSOerr(DSO_F_WIN32_GLOBALLOOKUP,DSO_R_UNSUPPORTED);
819 return NULL;
820 }
821
822 me32.dwSize = sizeof(me32);
823
824 if (!(*module_first)(hModuleSnap,&me32))
825 {
826 (*close_snap)(hModuleSnap);
827 FreeLibrary(dll);
828 return NULL;
829 }
830
831 do {
832 if ((ret = GetProcAddress(me32.hModule,name)))
833 {
834 (*close_snap)(hModuleSnap);
835 FreeLibrary(dll);
836 return ret;
837 }
838 } while((*module_next)(hModuleSnap,&me32));
839
840 (*close_snap)(hModuleSnap);
841 FreeLibrary(dll);
842 return NULL;
843 }
844#endif /* DSO_WIN32 */
diff --git a/src/lib/libssl/src/crypto/ec/Makefile b/src/lib/libssl/src/crypto/ec/Makefile
index b5bbc9faa1..db380ed16f 100644
--- a/src/lib/libssl/src/crypto/ec/Makefile
+++ b/src/lib/libssl/src/crypto/ec/Makefile
@@ -19,11 +19,11 @@ APPS=
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= ec_lib.c ecp_smpl.c ecp_mont.c ecp_nist.c ec_cvt.c ec_mult.c\ 20LIBSRC= ec_lib.c ecp_smpl.c ecp_mont.c ecp_nist.c ec_cvt.c ec_mult.c\
21 ec_err.c ec_curve.c ec_check.c ec_print.c ec_asn1.c ec_key.c\ 21 ec_err.c ec_curve.c ec_check.c ec_print.c ec_asn1.c ec_key.c\
22 ec2_smpl.c ec2_smpt.c ec2_mult.c 22 ec2_smpl.c ec2_mult.c ec_ameth.c ec_pmeth.c eck_prn.c
23 23
24LIBOBJ= ec_lib.o ecp_smpl.o ecp_mont.o ecp_nist.o ec_cvt.o ec_mult.o\ 24LIBOBJ= ec_lib.o ecp_smpl.o ecp_mont.o ecp_nist.o ec_cvt.o ec_mult.o\
25 ec_err.o ec_curve.o ec_check.o ec_print.o ec_asn1.o ec_key.o\ 25 ec_err.o ec_curve.o ec_check.o ec_print.o ec_asn1.o ec_key.o\
26 ec2_smpl.o ec2_mult.o 26 ec2_smpl.o ec2_mult.o ec_ameth.o ec_pmeth.o eck_prn.o
27 27
28SRC= $(LIBSRC) 28SRC= $(LIBSRC)
29 29
@@ -38,7 +38,7 @@ top:
38all: lib 38all: lib
39 39
40lib: $(LIBOBJ) 40lib: $(LIBOBJ)
41 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
42 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
43 @touch lib 43 @touch lib
44 44
@@ -94,8 +94,22 @@ ec2_smpl.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
94ec2_smpl.o: ../../include/openssl/obj_mac.h ../../include/openssl/opensslconf.h 94ec2_smpl.o: ../../include/openssl/obj_mac.h ../../include/openssl/opensslconf.h
95ec2_smpl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 95ec2_smpl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
96ec2_smpl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 96ec2_smpl.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
97ec2_smpl.o: ../../include/openssl/symhacks.h ec2_smpl.c ec2_smpt.c ec_lcl.h 97ec2_smpl.o: ../../include/openssl/symhacks.h ec2_smpl.c ec_lcl.h
98ec2_smpt.o: ec2_smpt.c 98ec_ameth.o: ../../e_os.h ../../include/openssl/asn1.h
99ec_ameth.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
100ec_ameth.o: ../../include/openssl/buffer.h ../../include/openssl/cms.h
101ec_ameth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
102ec_ameth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
103ec_ameth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
104ec_ameth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
105ec_ameth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
106ec_ameth.o: ../../include/openssl/opensslconf.h
107ec_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
108ec_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
109ec_ameth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
110ec_ameth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
111ec_ameth.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
112ec_ameth.o: ec_ameth.c
99ec_asn1.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 113ec_asn1.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
100ec_asn1.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 114ec_asn1.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
101ec_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 115ec_asn1.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
@@ -160,6 +174,20 @@ ec_mult.o: ../../include/openssl/obj_mac.h ../../include/openssl/opensslconf.h
160ec_mult.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 174ec_mult.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
161ec_mult.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 175ec_mult.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
162ec_mult.o: ../../include/openssl/symhacks.h ec_lcl.h ec_mult.c 176ec_mult.o: ../../include/openssl/symhacks.h ec_lcl.h ec_mult.c
177ec_pmeth.o: ../../e_os.h ../../include/openssl/asn1.h
178ec_pmeth.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
179ec_pmeth.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
180ec_pmeth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
181ec_pmeth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
182ec_pmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
183ec_pmeth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
184ec_pmeth.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
185ec_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
186ec_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
187ec_pmeth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
188ec_pmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
189ec_pmeth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h ../evp/evp_locl.h
190ec_pmeth.o: ec_pmeth.c
163ec_print.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 191ec_print.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
164ec_print.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h 192ec_print.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
165ec_print.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 193ec_print.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
@@ -167,6 +195,16 @@ ec_print.o: ../../include/openssl/obj_mac.h ../../include/openssl/opensslconf.h
167ec_print.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 195ec_print.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
168ec_print.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 196ec_print.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
169ec_print.o: ../../include/openssl/symhacks.h ec_lcl.h ec_print.c 197ec_print.o: ../../include/openssl/symhacks.h ec_lcl.h ec_print.c
198eck_prn.o: ../../e_os.h ../../include/openssl/asn1.h
199eck_prn.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
200eck_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
201eck_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
202eck_prn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
203eck_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
204eck_prn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
205eck_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
206eck_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
207eck_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h eck_prn.c
170ecp_mont.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 208ecp_mont.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
171ecp_mont.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h 209ecp_mont.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
172ecp_mont.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 210ecp_mont.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
diff --git a/src/lib/libssl/src/crypto/ec/ec.h b/src/lib/libssl/src/crypto/ec/ec.h
index 8bc2a235b1..ee7078130c 100644
--- a/src/lib/libssl/src/crypto/ec/ec.h
+++ b/src/lib/libssl/src/crypto/ec/ec.h
@@ -2,8 +2,12 @@
2/* 2/*
3 * Originally written by Bodo Moeller for the OpenSSL project. 3 * Originally written by Bodo Moeller for the OpenSSL project.
4 */ 4 */
5/**
6 * \file crypto/ec/ec.h Include file for the OpenSSL EC functions
7 * \author Originally written by Bodo Moeller for the OpenSSL project
8 */
5/* ==================================================================== 9/* ====================================================================
6 * Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved. 10 * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved.
7 * 11 *
8 * Redistribution and use in source and binary forms, with or without 12 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 13 * modification, are permitted provided that the following conditions
@@ -92,15 +96,21 @@ extern "C" {
92# endif 96# endif
93#endif 97#endif
94 98
95 99
96#ifndef OPENSSL_ECC_MAX_FIELD_BITS 100#ifndef OPENSSL_ECC_MAX_FIELD_BITS
97# define OPENSSL_ECC_MAX_FIELD_BITS 661 101# define OPENSSL_ECC_MAX_FIELD_BITS 661
98#endif 102#endif
99 103
104/** Enum for the point conversion form as defined in X9.62 (ECDSA)
105 * for the encoding of a elliptic curve point (x,y) */
100typedef enum { 106typedef enum {
101 /* values as defined in X9.62 (ECDSA) and elsewhere */ 107 /** the point is encoded as z||x, where the octet z specifies
108 * which solution of the quadratic equation y is */
102 POINT_CONVERSION_COMPRESSED = 2, 109 POINT_CONVERSION_COMPRESSED = 2,
110 /** the point is encoded as z||x||y, where z is the octet 0x02 */
103 POINT_CONVERSION_UNCOMPRESSED = 4, 111 POINT_CONVERSION_UNCOMPRESSED = 4,
112 /** the point is encoded as z||x||y, where the octet z specifies
113 * which solution of the quadratic equation y is */
104 POINT_CONVERSION_HYBRID = 6 114 POINT_CONVERSION_HYBRID = 6
105} point_conversion_form_t; 115} point_conversion_form_t;
106 116
@@ -121,37 +131,129 @@ typedef struct ec_group_st
121typedef struct ec_point_st EC_POINT; 131typedef struct ec_point_st EC_POINT;
122 132
123 133
124/* EC_METHODs for curves over GF(p). 134/********************************************************************/
125 * EC_GFp_simple_method provides the basis for the optimized methods. 135/* EC_METHODs for curves over GF(p) */
136/********************************************************************/
137
138/** Returns the basic GFp ec methods which provides the basis for the
139 * optimized methods.
140 * \return EC_METHOD object
126 */ 141 */
127const EC_METHOD *EC_GFp_simple_method(void); 142const EC_METHOD *EC_GFp_simple_method(void);
143
144/** Returns GFp methods using montgomery multiplication.
145 * \return EC_METHOD object
146 */
128const EC_METHOD *EC_GFp_mont_method(void); 147const EC_METHOD *EC_GFp_mont_method(void);
148
149/** Returns GFp methods using optimized methods for NIST recommended curves
150 * \return EC_METHOD object
151 */
129const EC_METHOD *EC_GFp_nist_method(void); 152const EC_METHOD *EC_GFp_nist_method(void);
130 153
131/* EC_METHOD for curves over GF(2^m). 154
155/********************************************************************/
156/* EC_METHOD for curves over GF(2^m) */
157/********************************************************************/
158
159/** Returns the basic GF2m ec method
160 * \return EC_METHOD object
132 */ 161 */
133const EC_METHOD *EC_GF2m_simple_method(void); 162const EC_METHOD *EC_GF2m_simple_method(void);
134 163
135 164
136EC_GROUP *EC_GROUP_new(const EC_METHOD *); 165/********************************************************************/
137void EC_GROUP_free(EC_GROUP *); 166/* EC_GROUP functions */
138void EC_GROUP_clear_free(EC_GROUP *); 167/********************************************************************/
139int EC_GROUP_copy(EC_GROUP *, const EC_GROUP *);
140EC_GROUP *EC_GROUP_dup(const EC_GROUP *);
141 168
142const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *); 169/** Creates a new EC_GROUP object
143int EC_METHOD_get_field_type(const EC_METHOD *); 170 * \param meth EC_METHOD to use
171 * \return newly created EC_GROUP object or NULL in case of an error.
172 */
173EC_GROUP *EC_GROUP_new(const EC_METHOD *meth);
144 174
145int EC_GROUP_set_generator(EC_GROUP *, const EC_POINT *generator, const BIGNUM *order, const BIGNUM *cofactor); 175/** Frees a EC_GROUP object
146const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *); 176 * \param group EC_GROUP object to be freed.
147int EC_GROUP_get_order(const EC_GROUP *, BIGNUM *order, BN_CTX *); 177 */
148int EC_GROUP_get_cofactor(const EC_GROUP *, BIGNUM *cofactor, BN_CTX *); 178void EC_GROUP_free(EC_GROUP *group);
149 179
150void EC_GROUP_set_curve_name(EC_GROUP *, int nid); 180/** Clears and frees a EC_GROUP object
151int EC_GROUP_get_curve_name(const EC_GROUP *); 181 * \param group EC_GROUP object to be cleared and freed.
182 */
183void EC_GROUP_clear_free(EC_GROUP *group);
152 184
153void EC_GROUP_set_asn1_flag(EC_GROUP *, int flag); 185/** Copies EC_GROUP objects. Note: both EC_GROUPs must use the same EC_METHOD.
154int EC_GROUP_get_asn1_flag(const EC_GROUP *); 186 * \param dst destination EC_GROUP object
187 * \param src source EC_GROUP object
188 * \return 1 on success and 0 if an error occurred.
189 */
190int EC_GROUP_copy(EC_GROUP *dst, const EC_GROUP *src);
191
192/** Creates a new EC_GROUP object and copies the copies the content
193 * form src to the newly created EC_KEY object
194 * \param src source EC_GROUP object
195 * \return newly created EC_GROUP object or NULL in case of an error.
196 */
197EC_GROUP *EC_GROUP_dup(const EC_GROUP *src);
198
199/** Returns the EC_METHOD of the EC_GROUP object.
200 * \param group EC_GROUP object
201 * \return EC_METHOD used in this EC_GROUP object.
202 */
203const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group);
204
205/** Returns the field type of the EC_METHOD.
206 * \param meth EC_METHOD object
207 * \return NID of the underlying field type OID.
208 */
209int EC_METHOD_get_field_type(const EC_METHOD *meth);
210
211/** Sets the generator and it's order/cofactor of a EC_GROUP object.
212 * \param group EC_GROUP object
213 * \param generator EC_POINT object with the generator.
214 * \param order the order of the group generated by the generator.
215 * \param cofactor the index of the sub-group generated by the generator
216 * in the group of all points on the elliptic curve.
217 * \return 1 on success and 0 if an error occured
218 */
219int EC_GROUP_set_generator(EC_GROUP *group, const EC_POINT *generator, const BIGNUM *order, const BIGNUM *cofactor);
220
221/** Returns the generator of a EC_GROUP object.
222 * \param group EC_GROUP object
223 * \return the currently used generator (possibly NULL).
224 */
225const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group);
226
227/** Gets the order of a EC_GROUP
228 * \param group EC_GROUP object
229 * \param order BIGNUM to which the order is copied
230 * \param ctx BN_CTX object (optional)
231 * \return 1 on success and 0 if an error occured
232 */
233int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order, BN_CTX *ctx);
234
235/** Gets the cofactor of a EC_GROUP
236 * \param group EC_GROUP object
237 * \param cofactor BIGNUM to which the cofactor is copied
238 * \param ctx BN_CTX object (optional)
239 * \return 1 on success and 0 if an error occured
240 */
241int EC_GROUP_get_cofactor(const EC_GROUP *group, BIGNUM *cofactor, BN_CTX *ctx);
242
243/** Sets the name of a EC_GROUP object
244 * \param group EC_GROUP object
245 * \param nid NID of the curve name OID
246 */
247void EC_GROUP_set_curve_name(EC_GROUP *group, int nid);
248
249/** Returns the curve name of a EC_GROUP object
250 * \param group EC_GROUP object
251 * \return NID of the curve name OID or 0 if not set.
252 */
253int EC_GROUP_get_curve_name(const EC_GROUP *group);
254
255void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag);
256int EC_GROUP_get_asn1_flag(const EC_GROUP *group);
155 257
156void EC_GROUP_set_point_conversion_form(EC_GROUP *, point_conversion_form_t); 258void EC_GROUP_set_point_conversion_form(EC_GROUP *, point_conversion_form_t);
157point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *); 259point_conversion_form_t EC_GROUP_get_point_conversion_form(const EC_GROUP *);
@@ -160,36 +262,114 @@ unsigned char *EC_GROUP_get0_seed(const EC_GROUP *);
160size_t EC_GROUP_get_seed_len(const EC_GROUP *); 262size_t EC_GROUP_get_seed_len(const EC_GROUP *);
161size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len); 263size_t EC_GROUP_set_seed(EC_GROUP *, const unsigned char *, size_t len);
162 264
163int EC_GROUP_set_curve_GFp(EC_GROUP *, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *); 265/** Sets the parameter of a ec over GFp defined by y^2 = x^3 + a*x + b
164int EC_GROUP_get_curve_GFp(const EC_GROUP *, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *); 266 * \param group EC_GROUP object
165int EC_GROUP_set_curve_GF2m(EC_GROUP *, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *); 267 * \param p BIGNUM with the prime number
166int EC_GROUP_get_curve_GF2m(const EC_GROUP *, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *); 268 * \param a BIGNUM with parameter a of the equation
269 * \param b BIGNUM with parameter b of the equation
270 * \param ctx BN_CTX object (optional)
271 * \return 1 on success and 0 if an error occured
272 */
273int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
274
275/** Gets the parameter of the ec over GFp defined by y^2 = x^3 + a*x + b
276 * \param group EC_GROUP object
277 * \param p BIGNUM for the prime number
278 * \param a BIGNUM for parameter a of the equation
279 * \param b BIGNUM for parameter b of the equation
280 * \param ctx BN_CTX object (optional)
281 * \return 1 on success and 0 if an error occured
282 */
283int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);
284
285/** Sets the parameter of a ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b
286 * \param group EC_GROUP object
287 * \param p BIGNUM with the polynomial defining the underlying field
288 * \param a BIGNUM with parameter a of the equation
289 * \param b BIGNUM with parameter b of the equation
290 * \param ctx BN_CTX object (optional)
291 * \return 1 on success and 0 if an error occured
292 */
293int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
294
295/** Gets the parameter of the ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b
296 * \param group EC_GROUP object
297 * \param p BIGNUM for the polynomial defining the underlying field
298 * \param a BIGNUM for parameter a of the equation
299 * \param b BIGNUM for parameter b of the equation
300 * \param ctx BN_CTX object (optional)
301 * \return 1 on success and 0 if an error occured
302 */
303int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);
167 304
168/* returns the number of bits needed to represent a field element */ 305/** Returns the number of bits needed to represent a field element
169int EC_GROUP_get_degree(const EC_GROUP *); 306 * \param group EC_GROUP object
307 * \return number of bits needed to represent a field element
308 */
309int EC_GROUP_get_degree(const EC_GROUP *group);
170 310
171/* EC_GROUP_check() returns 1 if 'group' defines a valid group, 0 otherwise */ 311/** Checks whether the parameter in the EC_GROUP define a valid ec group
312 * \param group EC_GROUP object
313 * \param ctx BN_CTX object (optional)
314 * \return 1 if group is a valid ec group and 0 otherwise
315 */
172int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx); 316int EC_GROUP_check(const EC_GROUP *group, BN_CTX *ctx);
173/* EC_GROUP_check_discriminant() returns 1 if the discriminant of the
174 * elliptic curve is not zero, 0 otherwise */
175int EC_GROUP_check_discriminant(const EC_GROUP *, BN_CTX *);
176 317
177/* EC_GROUP_cmp() returns 0 if both groups are equal and 1 otherwise */ 318/** Checks whether the discriminant of the elliptic curve is zero or not
178int EC_GROUP_cmp(const EC_GROUP *, const EC_GROUP *, BN_CTX *); 319 * \param group EC_GROUP object
320 * \param ctx BN_CTX object (optional)
321 * \return 1 if the discriminant is not zero and 0 otherwise
322 */
323int EC_GROUP_check_discriminant(const EC_GROUP *group, BN_CTX *ctx);
324
325/** Compares two EC_GROUP objects
326 * \param a first EC_GROUP object
327 * \param b second EC_GROUP object
328 * \param ctx BN_CTX object (optional)
329 * \return 0 if both groups are equal and 1 otherwise
330 */
331int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx);
179 332
180/* EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*() 333/* EC_GROUP_new_GF*() calls EC_GROUP_new() and EC_GROUP_set_GF*()
181 * after choosing an appropriate EC_METHOD */ 334 * after choosing an appropriate EC_METHOD */
182EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *);
183EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *);
184 335
185/* EC_GROUP_new_by_curve_name() creates a EC_GROUP structure 336/** Creates a new EC_GROUP object with the specified parameters defined
186 * specified by a curve name (in form of a NID) */ 337 * over GFp (defined by the equation y^2 = x^3 + a*x + b)
338 * \param p BIGNUM with the prime number
339 * \param a BIGNUM with the parameter a of the equation
340 * \param b BIGNUM with the parameter b of the equation
341 * \param ctx BN_CTX object (optional)
342 * \return newly created EC_GROUP object with the specified parameters
343 */
344EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
345
346/** Creates a new EC_GROUP object with the specified parameters defined
347 * over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b)
348 * \param p BIGNUM with the polynomial defining the underlying field
349 * \param a BIGNUM with the parameter a of the equation
350 * \param b BIGNUM with the parameter b of the equation
351 * \param ctx BN_CTX object (optional)
352 * \return newly created EC_GROUP object with the specified parameters
353 */
354EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
355
356/** Creates a EC_GROUP object with a curve specified by a NID
357 * \param nid NID of the OID of the curve name
358 * \return newly created EC_GROUP object with specified curve or NULL
359 * if an error occurred
360 */
187EC_GROUP *EC_GROUP_new_by_curve_name(int nid); 361EC_GROUP *EC_GROUP_new_by_curve_name(int nid);
188/* handling of internal curves */ 362
363
364/********************************************************************/
365/* handling of internal curves */
366/********************************************************************/
367
189typedef struct { 368typedef struct {
190 int nid; 369 int nid;
191 const char *comment; 370 const char *comment;
192 } EC_builtin_curve; 371 } EC_builtin_curve;
372
193/* EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number 373/* EC_builtin_curves(EC_builtin_curve *r, size_t size) returns number
194 * of all available curves or zero if a error occurred. 374 * of all available curves or zero if a error occurred.
195 * In case r ist not zero nitems EC_builtin_curve structures 375 * In case r ist not zero nitems EC_builtin_curve structures
@@ -197,39 +377,168 @@ typedef struct {
197size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems); 377size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems);
198 378
199 379
200/* EC_POINT functions */ 380/********************************************************************/
381/* EC_POINT functions */
382/********************************************************************/
383
384/** Creates a new EC_POINT object for the specified EC_GROUP
385 * \param group EC_GROUP the underlying EC_GROUP object
386 * \return newly created EC_POINT object or NULL if an error occurred
387 */
388EC_POINT *EC_POINT_new(const EC_GROUP *group);
389
390/** Frees a EC_POINT object
391 * \param point EC_POINT object to be freed
392 */
393void EC_POINT_free(EC_POINT *point);
394
395/** Clears and frees a EC_POINT object
396 * \param point EC_POINT object to be cleared and freed
397 */
398void EC_POINT_clear_free(EC_POINT *point);
399
400/** Copies EC_POINT object
401 * \param dst destination EC_POINT object
402 * \param src source EC_POINT object
403 * \return 1 on success and 0 if an error occured
404 */
405int EC_POINT_copy(EC_POINT *dst, const EC_POINT *src);
201 406
202EC_POINT *EC_POINT_new(const EC_GROUP *); 407/** Creates a new EC_POINT object and copies the content of the supplied
203void EC_POINT_free(EC_POINT *); 408 * EC_POINT
204void EC_POINT_clear_free(EC_POINT *); 409 * \param src source EC_POINT object
205int EC_POINT_copy(EC_POINT *, const EC_POINT *); 410 * \param group underlying the EC_GROUP object
206EC_POINT *EC_POINT_dup(const EC_POINT *, const EC_GROUP *); 411 * \return newly created EC_POINT object or NULL if an error occurred
412 */
413EC_POINT *EC_POINT_dup(const EC_POINT *src, const EC_GROUP *group);
207 414
208const EC_METHOD *EC_POINT_method_of(const EC_POINT *); 415/** Returns the EC_METHOD used in EC_POINT object
209 416 * \param point EC_POINT object
210int EC_POINT_set_to_infinity(const EC_GROUP *, EC_POINT *); 417 * \return the EC_METHOD used
211int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *, EC_POINT *, 418 */
212 const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, BN_CTX *); 419const EC_METHOD *EC_POINT_method_of(const EC_POINT *point);
213int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *, const EC_POINT *, 420
214 BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *); 421/** Sets a point to infinity (neutral element)
215int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *, EC_POINT *, 422 * \param group underlying EC_GROUP object
216 const BIGNUM *x, const BIGNUM *y, BN_CTX *); 423 * \param point EC_POINT to set to infinity
217int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *, const EC_POINT *, 424 * \return 1 on success and 0 if an error occured
218 BIGNUM *x, BIGNUM *y, BN_CTX *); 425 */
219int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *, EC_POINT *, 426int EC_POINT_set_to_infinity(const EC_GROUP *group, EC_POINT *point);
220 const BIGNUM *x, int y_bit, BN_CTX *); 427
221 428/** Sets the jacobian projective coordinates of a EC_POINT over GFp
222int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *, EC_POINT *, 429 * \param group underlying EC_GROUP object
223 const BIGNUM *x, const BIGNUM *y, BN_CTX *); 430 * \param p EC_POINT object
224int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *, const EC_POINT *, 431 * \param x BIGNUM with the x-coordinate
225 BIGNUM *x, BIGNUM *y, BN_CTX *); 432 * \param y BIGNUM with the y-coordinate
226int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *, EC_POINT *, 433 * \param z BIGNUM with the z-coordinate
227 const BIGNUM *x, int y_bit, BN_CTX *); 434 * \param ctx BN_CTX object (optional)
228 435 * \return 1 on success and 0 if an error occured
229size_t EC_POINT_point2oct(const EC_GROUP *, const EC_POINT *, point_conversion_form_t form, 436 */
230 unsigned char *buf, size_t len, BN_CTX *); 437int EC_POINT_set_Jprojective_coordinates_GFp(const EC_GROUP *group, EC_POINT *p,
231int EC_POINT_oct2point(const EC_GROUP *, EC_POINT *, 438 const BIGNUM *x, const BIGNUM *y, const BIGNUM *z, BN_CTX *ctx);
232 const unsigned char *buf, size_t len, BN_CTX *); 439
440/** Gets the jacobian projective coordinates of a EC_POINT over GFp
441 * \param group underlying EC_GROUP object
442 * \param p EC_POINT object
443 * \param x BIGNUM for the x-coordinate
444 * \param y BIGNUM for the y-coordinate
445 * \param z BIGNUM for the z-coordinate
446 * \param ctx BN_CTX object (optional)
447 * \return 1 on success and 0 if an error occured
448 */
449int EC_POINT_get_Jprojective_coordinates_GFp(const EC_GROUP *group,
450 const EC_POINT *p, BIGNUM *x, BIGNUM *y, BIGNUM *z, BN_CTX *ctx);
451
452/** Sets the affine coordinates of a EC_POINT over GFp
453 * \param group underlying EC_GROUP object
454 * \param p EC_POINT object
455 * \param x BIGNUM with the x-coordinate
456 * \param y BIGNUM with the y-coordinate
457 * \param ctx BN_CTX object (optional)
458 * \return 1 on success and 0 if an error occured
459 */
460int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *p,
461 const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx);
462
463/** Gets the affine coordinates of a EC_POINT over GFp
464 * \param group underlying EC_GROUP object
465 * \param p EC_POINT object
466 * \param x BIGNUM for the x-coordinate
467 * \param y BIGNUM for the y-coordinate
468 * \param ctx BN_CTX object (optional)
469 * \return 1 on success and 0 if an error occured
470 */
471int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group,
472 const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx);
473
474/** Sets the x9.62 compressed coordinates of a EC_POINT over GFp
475 * \param group underlying EC_GROUP object
476 * \param p EC_POINT object
477 * \param x BIGNUM with x-coordinate
478 * \param y_bit integer with the y-Bit (either 0 or 1)
479 * \param ctx BN_CTX object (optional)
480 * \return 1 on success and 0 if an error occured
481 */
482int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *p,
483 const BIGNUM *x, int y_bit, BN_CTX *ctx);
484
485/** Sets the affine coordinates of a EC_POINT over GF2m
486 * \param group underlying EC_GROUP object
487 * \param p EC_POINT object
488 * \param x BIGNUM with the x-coordinate
489 * \param y BIGNUM with the y-coordinate
490 * \param ctx BN_CTX object (optional)
491 * \return 1 on success and 0 if an error occured
492 */
493int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p,
494 const BIGNUM *x, const BIGNUM *y, BN_CTX *ctx);
495
496/** Gets the affine coordinates of a EC_POINT over GF2m
497 * \param group underlying EC_GROUP object
498 * \param p EC_POINT object
499 * \param x BIGNUM for the x-coordinate
500 * \param y BIGNUM for the y-coordinate
501 * \param ctx BN_CTX object (optional)
502 * \return 1 on success and 0 if an error occured
503 */
504int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group,
505 const EC_POINT *p, BIGNUM *x, BIGNUM *y, BN_CTX *ctx);
506
507/** Sets the x9.62 compressed coordinates of a EC_POINT over GF2m
508 * \param group underlying EC_GROUP object
509 * \param p EC_POINT object
510 * \param x BIGNUM with x-coordinate
511 * \param y_bit integer with the y-Bit (either 0 or 1)
512 * \param ctx BN_CTX object (optional)
513 * \return 1 on success and 0 if an error occured
514 */
515int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *p,
516 const BIGNUM *x, int y_bit, BN_CTX *ctx);
517
518/** Encodes a EC_POINT object to a octet string
519 * \param group underlying EC_GROUP object
520 * \param p EC_POINT object
521 * \param form point conversion form
522 * \param buf memory buffer for the result. If NULL the function returns
523 * required buffer size.
524 * \param len length of the memory buffer
525 * \param ctx BN_CTX object (optional)
526 * \return the length of the encoded octet string or 0 if an error occurred
527 */
528size_t EC_POINT_point2oct(const EC_GROUP *group, const EC_POINT *p,
529 point_conversion_form_t form,
530 unsigned char *buf, size_t len, BN_CTX *ctx);
531
532/** Decodes a EC_POINT from a octet string
533 * \param group underlying EC_GROUP object
534 * \param p EC_POINT object
535 * \param buf memory buffer with the encoded ec point
536 * \param len length of the encoded ec point
537 * \param ctx BN_CTX object (optional)
538 * \return 1 on success and 0 if an error occured
539 */
540int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *p,
541 const unsigned char *buf, size_t len, BN_CTX *ctx);
233 542
234/* other interfaces to point2oct/oct2point: */ 543/* other interfaces to point2oct/oct2point: */
235BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *, 544BIGNUM *EC_POINT_point2bn(const EC_GROUP *, const EC_POINT *,
@@ -241,29 +550,105 @@ char *EC_POINT_point2hex(const EC_GROUP *, const EC_POINT *,
241EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *, 550EC_POINT *EC_POINT_hex2point(const EC_GROUP *, const char *,
242 EC_POINT *, BN_CTX *); 551 EC_POINT *, BN_CTX *);
243 552
244int EC_POINT_add(const EC_GROUP *, EC_POINT *r, const EC_POINT *a, const EC_POINT *b, BN_CTX *);
245int EC_POINT_dbl(const EC_GROUP *, EC_POINT *r, const EC_POINT *a, BN_CTX *);
246int EC_POINT_invert(const EC_GROUP *, EC_POINT *, BN_CTX *);
247 553
248int EC_POINT_is_at_infinity(const EC_GROUP *, const EC_POINT *); 554/********************************************************************/
249int EC_POINT_is_on_curve(const EC_GROUP *, const EC_POINT *, BN_CTX *); 555/* functions for doing EC_POINT arithmetic */
250int EC_POINT_cmp(const EC_GROUP *, const EC_POINT *a, const EC_POINT *b, BN_CTX *); 556/********************************************************************/
557
558/** Computes the sum of two EC_POINT
559 * \param group underlying EC_GROUP object
560 * \param r EC_POINT object for the result (r = a + b)
561 * \param a EC_POINT object with the first summand
562 * \param b EC_POINT object with the second summand
563 * \param ctx BN_CTX object (optional)
564 * \return 1 on success and 0 if an error occured
565 */
566int EC_POINT_add(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx);
567
568/** Computes the double of a EC_POINT
569 * \param group underlying EC_GROUP object
570 * \param r EC_POINT object for the result (r = 2 * a)
571 * \param a EC_POINT object
572 * \param ctx BN_CTX object (optional)
573 * \return 1 on success and 0 if an error occured
574 */
575int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r, const EC_POINT *a, BN_CTX *ctx);
576
577/** Computes the inverse of a EC_POINT
578 * \param group underlying EC_GROUP object
579 * \param a EC_POINT object to be inverted (it's used for the result as well)
580 * \param ctx BN_CTX object (optional)
581 * \return 1 on success and 0 if an error occured
582 */
583int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a, BN_CTX *ctx);
584
585/** Checks whether the point is the neutral element of the group
586 * \param group the underlying EC_GROUP object
587 * \param p EC_POINT object
588 * \return 1 if the point is the neutral element and 0 otherwise
589 */
590int EC_POINT_is_at_infinity(const EC_GROUP *group, const EC_POINT *p);
591
592/** Checks whether the point is on the curve
593 * \param group underlying EC_GROUP object
594 * \param point EC_POINT object to check
595 * \param ctx BN_CTX object (optional)
596 * \return 1 if point if on the curve and 0 otherwise
597 */
598int EC_POINT_is_on_curve(const EC_GROUP *group, const EC_POINT *point, BN_CTX *ctx);
599
600/** Compares two EC_POINTs
601 * \param group underlying EC_GROUP object
602 * \param a first EC_POINT object
603 * \param b second EC_POINT object
604 * \param ctx BN_CTX object (optional)
605 * \return 0 if both points are equal and a value != 0 otherwise
606 */
607int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a, const EC_POINT *b, BN_CTX *ctx);
251 608
252int EC_POINT_make_affine(const EC_GROUP *, EC_POINT *, BN_CTX *); 609int EC_POINT_make_affine(const EC_GROUP *, EC_POINT *, BN_CTX *);
253int EC_POINTs_make_affine(const EC_GROUP *, size_t num, EC_POINT *[], BN_CTX *); 610int EC_POINTs_make_affine(const EC_GROUP *, size_t num, EC_POINT *[], BN_CTX *);
254 611
612/** Computes r = generator * n sum_{i=0}^num p[i] * m[i]
613 * \param group underlying EC_GROUP object
614 * \param r EC_POINT object for the result
615 * \param n BIGNUM with the multiplier for the group generator (optional)
616 * \param num number futher summands
617 * \param p array of size num of EC_POINT objects
618 * \param m array of size num of BIGNUM objects
619 * \param ctx BN_CTX object (optional)
620 * \return 1 on success and 0 if an error occured
621 */
622int EC_POINTs_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, size_t num, const EC_POINT *p[], const BIGNUM *m[], BN_CTX *ctx);
623
624/** Computes r = generator * n + q * m
625 * \param group underlying EC_GROUP object
626 * \param r EC_POINT object for the result
627 * \param n BIGNUM with the multiplier for the group generator (optional)
628 * \param q EC_POINT object with the first factor of the second summand
629 * \param m BIGNUM with the second factor of the second summand
630 * \param ctx BN_CTX object (optional)
631 * \return 1 on success and 0 if an error occured
632 */
633int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *n, const EC_POINT *q, const BIGNUM *m, BN_CTX *ctx);
255 634
256int EC_POINTs_mul(const EC_GROUP *, EC_POINT *r, const BIGNUM *, size_t num, const EC_POINT *[], const BIGNUM *[], BN_CTX *); 635/** Stores multiples of generator for faster point multiplication
257int EC_POINT_mul(const EC_GROUP *, EC_POINT *r, const BIGNUM *, const EC_POINT *, const BIGNUM *, BN_CTX *); 636 * \param group EC_GROUP object
258 637 * \param ctx BN_CTX object (optional)
259/* EC_GROUP_precompute_mult() stores multiples of generator for faster point multiplication */ 638 * \return 1 on success and 0 if an error occured
260int EC_GROUP_precompute_mult(EC_GROUP *, BN_CTX *); 639 */
261/* EC_GROUP_have_precompute_mult() reports whether such precomputation has been done */ 640int EC_GROUP_precompute_mult(EC_GROUP *group, BN_CTX *ctx);
262int EC_GROUP_have_precompute_mult(const EC_GROUP *);
263 641
642/** Reports whether a precomputation has been done
643 * \param group EC_GROUP object
644 * \return 1 if a pre-computation has been done and 0 otherwise
645 */
646int EC_GROUP_have_precompute_mult(const EC_GROUP *group);
264 647
265 648
266/* ASN1 stuff */ 649/********************************************************************/
650/* ASN1 stuff */
651/********************************************************************/
267 652
268/* EC_GROUP_get_basis_type() returns the NID of the basis type 653/* EC_GROUP_get_basis_type() returns the NID of the basis type
269 * used to represent the field elements */ 654 * used to represent the field elements */
@@ -293,28 +678,96 @@ int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off);
293int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off); 678int ECPKParameters_print_fp(FILE *fp, const EC_GROUP *x, int off);
294#endif 679#endif
295 680
296/* the EC_KEY stuff */ 681
682/********************************************************************/
683/* EC_KEY functions */
684/********************************************************************/
685
297typedef struct ec_key_st EC_KEY; 686typedef struct ec_key_st EC_KEY;
298 687
299/* some values for the encoding_flag */ 688/* some values for the encoding_flag */
300#define EC_PKEY_NO_PARAMETERS 0x001 689#define EC_PKEY_NO_PARAMETERS 0x001
301#define EC_PKEY_NO_PUBKEY 0x002 690#define EC_PKEY_NO_PUBKEY 0x002
302 691
692/** Creates a new EC_KEY object.
693 * \return EC_KEY object or NULL if an error occurred.
694 */
303EC_KEY *EC_KEY_new(void); 695EC_KEY *EC_KEY_new(void);
696
697/** Creates a new EC_KEY object using a named curve as underlying
698 * EC_GROUP object.
699 * \param nid NID of the named curve.
700 * \return EC_KEY object or NULL if an error occurred.
701 */
304EC_KEY *EC_KEY_new_by_curve_name(int nid); 702EC_KEY *EC_KEY_new_by_curve_name(int nid);
305void EC_KEY_free(EC_KEY *); 703
306EC_KEY *EC_KEY_copy(EC_KEY *, const EC_KEY *); 704/** Frees a EC_KEY object.
307EC_KEY *EC_KEY_dup(const EC_KEY *); 705 * \param key EC_KEY object to be freed.
308 706 */
309int EC_KEY_up_ref(EC_KEY *); 707void EC_KEY_free(EC_KEY *key);
310 708
311const EC_GROUP *EC_KEY_get0_group(const EC_KEY *); 709/** Copies a EC_KEY object.
312int EC_KEY_set_group(EC_KEY *, const EC_GROUP *); 710 * \param dst destination EC_KEY object
313const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *); 711 * \param src src EC_KEY object
314int EC_KEY_set_private_key(EC_KEY *, const BIGNUM *); 712 * \return dst or NULL if an error occurred.
315const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *); 713 */
316int EC_KEY_set_public_key(EC_KEY *, const EC_POINT *); 714EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src);
317unsigned EC_KEY_get_enc_flags(const EC_KEY *); 715
716/** Creates a new EC_KEY object and copies the content from src to it.
717 * \param src the source EC_KEY object
718 * \return newly created EC_KEY object or NULL if an error occurred.
719 */
720EC_KEY *EC_KEY_dup(const EC_KEY *src);
721
722/** Increases the internal reference count of a EC_KEY object.
723 * \param key EC_KEY object
724 * \return 1 on success and 0 if an error occurred.
725 */
726int EC_KEY_up_ref(EC_KEY *key);
727
728/** Returns the EC_GROUP object of a EC_KEY object
729 * \param key EC_KEY object
730 * \return the EC_GROUP object (possibly NULL).
731 */
732const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key);
733
734/** Sets the EC_GROUP of a EC_KEY object.
735 * \param key EC_KEY object
736 * \param group EC_GROUP to use in the EC_KEY object (note: the EC_KEY
737 * object will use an own copy of the EC_GROUP).
738 * \return 1 on success and 0 if an error occurred.
739 */
740int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group);
741
742/** Returns the private key of a EC_KEY object.
743 * \param key EC_KEY object
744 * \return a BIGNUM with the private key (possibly NULL).
745 */
746const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key);
747
748/** Sets the private key of a EC_KEY object.
749 * \param key EC_KEY object
750 * \param prv BIGNUM with the private key (note: the EC_KEY object
751 * will use an own copy of the BIGNUM).
752 * \return 1 on success and 0 if an error occurred.
753 */
754int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv);
755
756/** Returns the public key of a EC_KEY object.
757 * \param key the EC_KEY object
758 * \return a EC_POINT object with the public key (possibly NULL)
759 */
760const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key);
761
762/** Sets the public key of a EC_KEY object.
763 * \param key EC_KEY object
764 * \param pub EC_POINT object with the public key (note: the EC_KEY object
765 * will use an own copy of the EC_POINT object).
766 * \return 1 on success and 0 if an error occurred.
767 */
768int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub);
769
770unsigned EC_KEY_get_enc_flags(const EC_KEY *key);
318void EC_KEY_set_enc_flags(EC_KEY *, unsigned int); 771void EC_KEY_set_enc_flags(EC_KEY *, unsigned int);
319point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *); 772point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *);
320void EC_KEY_set_conv_form(EC_KEY *, point_conversion_form_t); 773void EC_KEY_set_conv_form(EC_KEY *, point_conversion_form_t);
@@ -325,31 +778,126 @@ void EC_KEY_insert_key_method_data(EC_KEY *, void *data,
325 void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *)); 778 void *(*dup_func)(void *), void (*free_func)(void *), void (*clear_free_func)(void *));
326/* wrapper functions for the underlying EC_GROUP object */ 779/* wrapper functions for the underlying EC_GROUP object */
327void EC_KEY_set_asn1_flag(EC_KEY *, int); 780void EC_KEY_set_asn1_flag(EC_KEY *, int);
328int EC_KEY_precompute_mult(EC_KEY *, BN_CTX *ctx); 781
329 782/** Creates a table of pre-computed multiples of the generator to
330/* EC_KEY_generate_key() creates a ec private (public) key */ 783 * accelerate further EC_KEY operations.
331int EC_KEY_generate_key(EC_KEY *); 784 * \param key EC_KEY object
332/* EC_KEY_check_key() */ 785 * \param ctx BN_CTX object (optional)
333int EC_KEY_check_key(const EC_KEY *); 786 * \return 1 on success and 0 if an error occurred.
334 787 */
335/* de- and encoding functions for SEC1 ECPrivateKey */ 788int EC_KEY_precompute_mult(EC_KEY *key, BN_CTX *ctx);
336EC_KEY *d2i_ECPrivateKey(EC_KEY **a, const unsigned char **in, long len); 789
337int i2d_ECPrivateKey(EC_KEY *a, unsigned char **out); 790/** Creates a new ec private (and optional a new public) key.
338/* de- and encoding functions for EC parameters */ 791 * \param key EC_KEY object
339EC_KEY *d2i_ECParameters(EC_KEY **a, const unsigned char **in, long len); 792 * \return 1 on success and 0 if an error occurred.
340int i2d_ECParameters(EC_KEY *a, unsigned char **out); 793 */
341/* de- and encoding functions for EC public key 794int EC_KEY_generate_key(EC_KEY *key);
342 * (octet string, not DER -- hence 'o2i' and 'i2o') */ 795
343EC_KEY *o2i_ECPublicKey(EC_KEY **a, const unsigned char **in, long len); 796/** Verifies that a private and/or public key is valid.
344int i2o_ECPublicKey(EC_KEY *a, unsigned char **out); 797 * \param key the EC_KEY object
798 * \return 1 on success and 0 otherwise.
799 */
800int EC_KEY_check_key(const EC_KEY *key);
801
802
803/********************************************************************/
804/* de- and encoding functions for SEC1 ECPrivateKey */
805/********************************************************************/
806
807/** Decodes a private key from a memory buffer.
808 * \param key a pointer to a EC_KEY object which should be used (or NULL)
809 * \param in pointer to memory with the DER encoded private key
810 * \param len length of the DER encoded private key
811 * \return the decoded private key or NULL if an error occurred.
812 */
813EC_KEY *d2i_ECPrivateKey(EC_KEY **key, const unsigned char **in, long len);
814
815/** Encodes a private key object and stores the result in a buffer.
816 * \param key the EC_KEY object to encode
817 * \param out the buffer for the result (if NULL the function returns number
818 * of bytes needed).
819 * \return 1 on success and 0 if an error occurred.
820 */
821int i2d_ECPrivateKey(EC_KEY *key, unsigned char **out);
822
823
824/********************************************************************/
825/* de- and encoding functions for EC parameters */
826/********************************************************************/
827
828/** Decodes ec parameter from a memory buffer.
829 * \param key a pointer to a EC_KEY object which should be used (or NULL)
830 * \param in pointer to memory with the DER encoded ec parameters
831 * \param len length of the DER encoded ec parameters
832 * \return a EC_KEY object with the decoded parameters or NULL if an error
833 * occurred.
834 */
835EC_KEY *d2i_ECParameters(EC_KEY **key, const unsigned char **in, long len);
836
837/** Encodes ec parameter and stores the result in a buffer.
838 * \param key the EC_KEY object with ec paramters to encode
839 * \param out the buffer for the result (if NULL the function returns number
840 * of bytes needed).
841 * \return 1 on success and 0 if an error occurred.
842 */
843int i2d_ECParameters(EC_KEY *key, unsigned char **out);
844
845
846/********************************************************************/
847/* de- and encoding functions for EC public key */
848/* (octet string, not DER -- hence 'o2i' and 'i2o') */
849/********************************************************************/
850
851/** Decodes a ec public key from a octet string.
852 * \param key a pointer to a EC_KEY object which should be used
853 * \param in memory buffer with the encoded public key
854 * \param len length of the encoded public key
855 * \return EC_KEY object with decoded public key or NULL if an error
856 * occurred.
857 */
858EC_KEY *o2i_ECPublicKey(EC_KEY **key, const unsigned char **in, long len);
859
860/** Encodes a ec public key in an octet string.
861 * \param key the EC_KEY object with the public key
862 * \param out the buffer for the result (if NULL the function returns number
863 * of bytes needed).
864 * \return 1 on success and 0 if an error occurred
865 */
866int i2o_ECPublicKey(EC_KEY *key, unsigned char **out);
345 867
346#ifndef OPENSSL_NO_BIO 868#ifndef OPENSSL_NO_BIO
347int ECParameters_print(BIO *bp, const EC_KEY *x); 869/** Prints out the ec parameters on human readable form.
348int EC_KEY_print(BIO *bp, const EC_KEY *x, int off); 870 * \param bp BIO object to which the information is printed
871 * \param key EC_KEY object
872 * \return 1 on success and 0 if an error occurred
873 */
874int ECParameters_print(BIO *bp, const EC_KEY *key);
875
876/** Prints out the contents of a EC_KEY object
877 * \param bp BIO object to which the information is printed
878 * \param key EC_KEY object
879 * \param off line offset
880 * \return 1 on success and 0 if an error occurred
881 */
882int EC_KEY_print(BIO *bp, const EC_KEY *key, int off);
883
349#endif 884#endif
350#ifndef OPENSSL_NO_FP_API 885#ifndef OPENSSL_NO_FP_API
351int ECParameters_print_fp(FILE *fp, const EC_KEY *x); 886/** Prints out the ec parameters on human readable form.
352int EC_KEY_print_fp(FILE *fp, const EC_KEY *x, int off); 887 * \param fp file descriptor to which the information is printed
888 * \param key EC_KEY object
889 * \return 1 on success and 0 if an error occurred
890 */
891int ECParameters_print_fp(FILE *fp, const EC_KEY *key);
892
893/** Prints out the contents of a EC_KEY object
894 * \param fp file descriptor to which the information is printed
895 * \param key EC_KEY object
896 * \param off line offset
897 * \return 1 on success and 0 if an error occurred
898 */
899int EC_KEY_print_fp(FILE *fp, const EC_KEY *key, int off);
900
353#endif 901#endif
354 902
355#define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x) 903#define ECParameters_dup(x) ASN1_dup_of(EC_KEY,i2d_ECParameters,d2i_ECParameters,x)
@@ -362,6 +910,13 @@ int EC_KEY_print_fp(FILE *fp, const EC_KEY *x, int off);
362# endif 910# endif
363#endif 911#endif
364 912
913#define EVP_PKEY_CTX_set_ec_paramgen_curve_nid(ctx, nid) \
914 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_EC, EVP_PKEY_OP_PARAMGEN, \
915 EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID, nid, NULL)
916
917
918#define EVP_PKEY_CTRL_EC_PARAMGEN_CURVE_NID (EVP_PKEY_ALG_CTRL + 1)
919
365/* BEGIN ERROR CODES */ 920/* BEGIN ERROR CODES */
366/* The following lines are auto generated by the script mkerr.pl. Any changes 921/* The following lines are auto generated by the script mkerr.pl. Any changes
367 * made after this point may be overwritten when the script is next run. 922 * made after this point may be overwritten when the script is next run.
@@ -375,6 +930,14 @@ void ERR_load_EC_strings(void);
375#define EC_F_D2I_ECPARAMETERS 144 930#define EC_F_D2I_ECPARAMETERS 144
376#define EC_F_D2I_ECPKPARAMETERS 145 931#define EC_F_D2I_ECPKPARAMETERS 145
377#define EC_F_D2I_ECPRIVATEKEY 146 932#define EC_F_D2I_ECPRIVATEKEY 146
933#define EC_F_DO_EC_KEY_PRINT 221
934#define EC_F_ECKEY_PARAM2TYPE 223
935#define EC_F_ECKEY_PARAM_DECODE 212
936#define EC_F_ECKEY_PRIV_DECODE 213
937#define EC_F_ECKEY_PRIV_ENCODE 214
938#define EC_F_ECKEY_PUB_DECODE 215
939#define EC_F_ECKEY_PUB_ENCODE 216
940#define EC_F_ECKEY_TYPE2PARAM 220
378#define EC_F_ECPARAMETERS_PRINT 147 941#define EC_F_ECPARAMETERS_PRINT 147
379#define EC_F_ECPARAMETERS_PRINT_FP 148 942#define EC_F_ECPARAMETERS_PRINT_FP 148
380#define EC_F_ECPKPARAMETERS_PRINT 149 943#define EC_F_ECPKPARAMETERS_PRINT 149
@@ -448,7 +1011,6 @@ void ERR_load_EC_strings(void);
448#define EC_F_EC_KEY_PRINT 180 1011#define EC_F_EC_KEY_PRINT 180
449#define EC_F_EC_KEY_PRINT_FP 181 1012#define EC_F_EC_KEY_PRINT_FP 181
450#define EC_F_EC_POINTS_MAKE_AFFINE 136 1013#define EC_F_EC_POINTS_MAKE_AFFINE 136
451#define EC_F_EC_POINTS_MUL 138
452#define EC_F_EC_POINT_ADD 112 1014#define EC_F_EC_POINT_ADD 112
453#define EC_F_EC_POINT_CMP 113 1015#define EC_F_EC_POINT_CMP 113
454#define EC_F_EC_POINT_COPY 114 1016#define EC_F_EC_POINT_COPY 114
@@ -479,21 +1041,31 @@ void ERR_load_EC_strings(void);
479#define EC_F_I2D_ECPRIVATEKEY 192 1041#define EC_F_I2D_ECPRIVATEKEY 192
480#define EC_F_I2O_ECPUBLICKEY 151 1042#define EC_F_I2O_ECPUBLICKEY 151
481#define EC_F_O2I_ECPUBLICKEY 152 1043#define EC_F_O2I_ECPUBLICKEY 152
1044#define EC_F_OLD_EC_PRIV_DECODE 222
1045#define EC_F_PKEY_EC_CTRL 197
1046#define EC_F_PKEY_EC_CTRL_STR 198
1047#define EC_F_PKEY_EC_DERIVE 217
1048#define EC_F_PKEY_EC_KEYGEN 199
1049#define EC_F_PKEY_EC_PARAMGEN 219
1050#define EC_F_PKEY_EC_SIGN 218
482 1051
483/* Reason codes. */ 1052/* Reason codes. */
484#define EC_R_ASN1_ERROR 115 1053#define EC_R_ASN1_ERROR 115
485#define EC_R_ASN1_UNKNOWN_FIELD 116 1054#define EC_R_ASN1_UNKNOWN_FIELD 116
486#define EC_R_BUFFER_TOO_SMALL 100 1055#define EC_R_BUFFER_TOO_SMALL 100
487#define EC_R_D2I_ECPKPARAMETERS_FAILURE 117 1056#define EC_R_D2I_ECPKPARAMETERS_FAILURE 117
1057#define EC_R_DECODE_ERROR 142
488#define EC_R_DISCRIMINANT_IS_ZERO 118 1058#define EC_R_DISCRIMINANT_IS_ZERO 118
489#define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119 1059#define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119
490#define EC_R_FIELD_TOO_LARGE 138 1060#define EC_R_FIELD_TOO_LARGE 143
491#define EC_R_GROUP2PKPARAMETERS_FAILURE 120 1061#define EC_R_GROUP2PKPARAMETERS_FAILURE 120
492#define EC_R_I2D_ECPKPARAMETERS_FAILURE 121 1062#define EC_R_I2D_ECPKPARAMETERS_FAILURE 121
493#define EC_R_INCOMPATIBLE_OBJECTS 101 1063#define EC_R_INCOMPATIBLE_OBJECTS 101
494#define EC_R_INVALID_ARGUMENT 112 1064#define EC_R_INVALID_ARGUMENT 112
495#define EC_R_INVALID_COMPRESSED_POINT 110 1065#define EC_R_INVALID_COMPRESSED_POINT 110
496#define EC_R_INVALID_COMPRESSION_BIT 109 1066#define EC_R_INVALID_COMPRESSION_BIT 109
1067#define EC_R_INVALID_CURVE 141
1068#define EC_R_INVALID_DIGEST_TYPE 138
497#define EC_R_INVALID_ENCODING 102 1069#define EC_R_INVALID_ENCODING 102
498#define EC_R_INVALID_FIELD 103 1070#define EC_R_INVALID_FIELD 103
499#define EC_R_INVALID_FORM 104 1071#define EC_R_INVALID_FORM 104
@@ -501,6 +1073,7 @@ void ERR_load_EC_strings(void);
501#define EC_R_INVALID_PENTANOMIAL_BASIS 132 1073#define EC_R_INVALID_PENTANOMIAL_BASIS 132
502#define EC_R_INVALID_PRIVATE_KEY 123 1074#define EC_R_INVALID_PRIVATE_KEY 123
503#define EC_R_INVALID_TRINOMIAL_BASIS 137 1075#define EC_R_INVALID_TRINOMIAL_BASIS 137
1076#define EC_R_KEYS_NOT_SET 140
504#define EC_R_MISSING_PARAMETERS 124 1077#define EC_R_MISSING_PARAMETERS 124
505#define EC_R_MISSING_PRIVATE_KEY 125 1078#define EC_R_MISSING_PRIVATE_KEY 125
506#define EC_R_NOT_A_NIST_PRIME 135 1079#define EC_R_NOT_A_NIST_PRIME 135
@@ -508,6 +1081,7 @@ void ERR_load_EC_strings(void);
508#define EC_R_NOT_IMPLEMENTED 126 1081#define EC_R_NOT_IMPLEMENTED 126
509#define EC_R_NOT_INITIALIZED 111 1082#define EC_R_NOT_INITIALIZED 111
510#define EC_R_NO_FIELD_MOD 133 1083#define EC_R_NO_FIELD_MOD 133
1084#define EC_R_NO_PARAMETERS_SET 139
511#define EC_R_PASSED_NULL_PARAMETER 134 1085#define EC_R_PASSED_NULL_PARAMETER 134
512#define EC_R_PKPARAMETERS2GROUP_FAILURE 127 1086#define EC_R_PKPARAMETERS2GROUP_FAILURE 127
513#define EC_R_POINT_AT_INFINITY 106 1087#define EC_R_POINT_AT_INFINITY 106
diff --git a/src/lib/libssl/src/crypto/ec/ec_err.c b/src/lib/libssl/src/crypto/ec/ec_err.c
index d04c895560..84b4833371 100644
--- a/src/lib/libssl/src/crypto/ec/ec_err.c
+++ b/src/lib/libssl/src/crypto/ec/ec_err.c
@@ -74,6 +74,14 @@ static ERR_STRING_DATA EC_str_functs[]=
74{ERR_FUNC(EC_F_D2I_ECPARAMETERS), "d2i_ECParameters"}, 74{ERR_FUNC(EC_F_D2I_ECPARAMETERS), "d2i_ECParameters"},
75{ERR_FUNC(EC_F_D2I_ECPKPARAMETERS), "d2i_ECPKParameters"}, 75{ERR_FUNC(EC_F_D2I_ECPKPARAMETERS), "d2i_ECPKParameters"},
76{ERR_FUNC(EC_F_D2I_ECPRIVATEKEY), "d2i_ECPrivateKey"}, 76{ERR_FUNC(EC_F_D2I_ECPRIVATEKEY), "d2i_ECPrivateKey"},
77{ERR_FUNC(EC_F_DO_EC_KEY_PRINT), "DO_EC_KEY_PRINT"},
78{ERR_FUNC(EC_F_ECKEY_PARAM2TYPE), "ECKEY_PARAM2TYPE"},
79{ERR_FUNC(EC_F_ECKEY_PARAM_DECODE), "ECKEY_PARAM_DECODE"},
80{ERR_FUNC(EC_F_ECKEY_PRIV_DECODE), "ECKEY_PRIV_DECODE"},
81{ERR_FUNC(EC_F_ECKEY_PRIV_ENCODE), "ECKEY_PRIV_ENCODE"},
82{ERR_FUNC(EC_F_ECKEY_PUB_DECODE), "ECKEY_PUB_DECODE"},
83{ERR_FUNC(EC_F_ECKEY_PUB_ENCODE), "ECKEY_PUB_ENCODE"},
84{ERR_FUNC(EC_F_ECKEY_TYPE2PARAM), "ECKEY_TYPE2PARAM"},
77{ERR_FUNC(EC_F_ECPARAMETERS_PRINT), "ECParameters_print"}, 85{ERR_FUNC(EC_F_ECPARAMETERS_PRINT), "ECParameters_print"},
78{ERR_FUNC(EC_F_ECPARAMETERS_PRINT_FP), "ECParameters_print_fp"}, 86{ERR_FUNC(EC_F_ECPARAMETERS_PRINT_FP), "ECParameters_print_fp"},
79{ERR_FUNC(EC_F_ECPKPARAMETERS_PRINT), "ECPKParameters_print"}, 87{ERR_FUNC(EC_F_ECPKPARAMETERS_PRINT), "ECPKParameters_print"},
@@ -147,7 +155,6 @@ static ERR_STRING_DATA EC_str_functs[]=
147{ERR_FUNC(EC_F_EC_KEY_PRINT), "EC_KEY_print"}, 155{ERR_FUNC(EC_F_EC_KEY_PRINT), "EC_KEY_print"},
148{ERR_FUNC(EC_F_EC_KEY_PRINT_FP), "EC_KEY_print_fp"}, 156{ERR_FUNC(EC_F_EC_KEY_PRINT_FP), "EC_KEY_print_fp"},
149{ERR_FUNC(EC_F_EC_POINTS_MAKE_AFFINE), "EC_POINTs_make_affine"}, 157{ERR_FUNC(EC_F_EC_POINTS_MAKE_AFFINE), "EC_POINTs_make_affine"},
150{ERR_FUNC(EC_F_EC_POINTS_MUL), "EC_POINTs_mul"},
151{ERR_FUNC(EC_F_EC_POINT_ADD), "EC_POINT_add"}, 158{ERR_FUNC(EC_F_EC_POINT_ADD), "EC_POINT_add"},
152{ERR_FUNC(EC_F_EC_POINT_CMP), "EC_POINT_cmp"}, 159{ERR_FUNC(EC_F_EC_POINT_CMP), "EC_POINT_cmp"},
153{ERR_FUNC(EC_F_EC_POINT_COPY), "EC_POINT_copy"}, 160{ERR_FUNC(EC_F_EC_POINT_COPY), "EC_POINT_copy"},
@@ -178,6 +185,13 @@ static ERR_STRING_DATA EC_str_functs[]=
178{ERR_FUNC(EC_F_I2D_ECPRIVATEKEY), "i2d_ECPrivateKey"}, 185{ERR_FUNC(EC_F_I2D_ECPRIVATEKEY), "i2d_ECPrivateKey"},
179{ERR_FUNC(EC_F_I2O_ECPUBLICKEY), "i2o_ECPublicKey"}, 186{ERR_FUNC(EC_F_I2O_ECPUBLICKEY), "i2o_ECPublicKey"},
180{ERR_FUNC(EC_F_O2I_ECPUBLICKEY), "o2i_ECPublicKey"}, 187{ERR_FUNC(EC_F_O2I_ECPUBLICKEY), "o2i_ECPublicKey"},
188{ERR_FUNC(EC_F_OLD_EC_PRIV_DECODE), "OLD_EC_PRIV_DECODE"},
189{ERR_FUNC(EC_F_PKEY_EC_CTRL), "PKEY_EC_CTRL"},
190{ERR_FUNC(EC_F_PKEY_EC_CTRL_STR), "PKEY_EC_CTRL_STR"},
191{ERR_FUNC(EC_F_PKEY_EC_DERIVE), "PKEY_EC_DERIVE"},
192{ERR_FUNC(EC_F_PKEY_EC_KEYGEN), "PKEY_EC_KEYGEN"},
193{ERR_FUNC(EC_F_PKEY_EC_PARAMGEN), "PKEY_EC_PARAMGEN"},
194{ERR_FUNC(EC_F_PKEY_EC_SIGN), "PKEY_EC_SIGN"},
181{0,NULL} 195{0,NULL}
182 }; 196 };
183 197
@@ -187,6 +201,7 @@ static ERR_STRING_DATA EC_str_reasons[]=
187{ERR_REASON(EC_R_ASN1_UNKNOWN_FIELD) ,"asn1 unknown field"}, 201{ERR_REASON(EC_R_ASN1_UNKNOWN_FIELD) ,"asn1 unknown field"},
188{ERR_REASON(EC_R_BUFFER_TOO_SMALL) ,"buffer too small"}, 202{ERR_REASON(EC_R_BUFFER_TOO_SMALL) ,"buffer too small"},
189{ERR_REASON(EC_R_D2I_ECPKPARAMETERS_FAILURE),"d2i ecpkparameters failure"}, 203{ERR_REASON(EC_R_D2I_ECPKPARAMETERS_FAILURE),"d2i ecpkparameters failure"},
204{ERR_REASON(EC_R_DECODE_ERROR) ,"decode error"},
190{ERR_REASON(EC_R_DISCRIMINANT_IS_ZERO) ,"discriminant is zero"}, 205{ERR_REASON(EC_R_DISCRIMINANT_IS_ZERO) ,"discriminant is zero"},
191{ERR_REASON(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE),"ec group new by name failure"}, 206{ERR_REASON(EC_R_EC_GROUP_NEW_BY_NAME_FAILURE),"ec group new by name failure"},
192{ERR_REASON(EC_R_FIELD_TOO_LARGE) ,"field too large"}, 207{ERR_REASON(EC_R_FIELD_TOO_LARGE) ,"field too large"},
@@ -196,6 +211,8 @@ static ERR_STRING_DATA EC_str_reasons[]=
196{ERR_REASON(EC_R_INVALID_ARGUMENT) ,"invalid argument"}, 211{ERR_REASON(EC_R_INVALID_ARGUMENT) ,"invalid argument"},
197{ERR_REASON(EC_R_INVALID_COMPRESSED_POINT),"invalid compressed point"}, 212{ERR_REASON(EC_R_INVALID_COMPRESSED_POINT),"invalid compressed point"},
198{ERR_REASON(EC_R_INVALID_COMPRESSION_BIT),"invalid compression bit"}, 213{ERR_REASON(EC_R_INVALID_COMPRESSION_BIT),"invalid compression bit"},
214{ERR_REASON(EC_R_INVALID_CURVE) ,"invalid curve"},
215{ERR_REASON(EC_R_INVALID_DIGEST_TYPE) ,"invalid digest type"},
199{ERR_REASON(EC_R_INVALID_ENCODING) ,"invalid encoding"}, 216{ERR_REASON(EC_R_INVALID_ENCODING) ,"invalid encoding"},
200{ERR_REASON(EC_R_INVALID_FIELD) ,"invalid field"}, 217{ERR_REASON(EC_R_INVALID_FIELD) ,"invalid field"},
201{ERR_REASON(EC_R_INVALID_FORM) ,"invalid form"}, 218{ERR_REASON(EC_R_INVALID_FORM) ,"invalid form"},
@@ -203,6 +220,7 @@ static ERR_STRING_DATA EC_str_reasons[]=
203{ERR_REASON(EC_R_INVALID_PENTANOMIAL_BASIS),"invalid pentanomial basis"}, 220{ERR_REASON(EC_R_INVALID_PENTANOMIAL_BASIS),"invalid pentanomial basis"},
204{ERR_REASON(EC_R_INVALID_PRIVATE_KEY) ,"invalid private key"}, 221{ERR_REASON(EC_R_INVALID_PRIVATE_KEY) ,"invalid private key"},
205{ERR_REASON(EC_R_INVALID_TRINOMIAL_BASIS),"invalid trinomial basis"}, 222{ERR_REASON(EC_R_INVALID_TRINOMIAL_BASIS),"invalid trinomial basis"},
223{ERR_REASON(EC_R_KEYS_NOT_SET) ,"keys not set"},
206{ERR_REASON(EC_R_MISSING_PARAMETERS) ,"missing parameters"}, 224{ERR_REASON(EC_R_MISSING_PARAMETERS) ,"missing parameters"},
207{ERR_REASON(EC_R_MISSING_PRIVATE_KEY) ,"missing private key"}, 225{ERR_REASON(EC_R_MISSING_PRIVATE_KEY) ,"missing private key"},
208{ERR_REASON(EC_R_NOT_A_NIST_PRIME) ,"not a NIST prime"}, 226{ERR_REASON(EC_R_NOT_A_NIST_PRIME) ,"not a NIST prime"},
@@ -210,6 +228,7 @@ static ERR_STRING_DATA EC_str_reasons[]=
210{ERR_REASON(EC_R_NOT_IMPLEMENTED) ,"not implemented"}, 228{ERR_REASON(EC_R_NOT_IMPLEMENTED) ,"not implemented"},
211{ERR_REASON(EC_R_NOT_INITIALIZED) ,"not initialized"}, 229{ERR_REASON(EC_R_NOT_INITIALIZED) ,"not initialized"},
212{ERR_REASON(EC_R_NO_FIELD_MOD) ,"no field mod"}, 230{ERR_REASON(EC_R_NO_FIELD_MOD) ,"no field mod"},
231{ERR_REASON(EC_R_NO_PARAMETERS_SET) ,"no parameters set"},
213{ERR_REASON(EC_R_PASSED_NULL_PARAMETER) ,"passed null parameter"}, 232{ERR_REASON(EC_R_PASSED_NULL_PARAMETER) ,"passed null parameter"},
214{ERR_REASON(EC_R_PKPARAMETERS2GROUP_FAILURE),"pkparameters2group failure"}, 233{ERR_REASON(EC_R_PKPARAMETERS2GROUP_FAILURE),"pkparameters2group failure"},
215{ERR_REASON(EC_R_POINT_AT_INFINITY) ,"point at infinity"}, 234{ERR_REASON(EC_R_POINT_AT_INFINITY) ,"point at infinity"},
diff --git a/src/lib/libssl/src/crypto/ec/ec_lcl.h b/src/lib/libssl/src/crypto/ec/ec_lcl.h
index fdd7aa2755..3e2c34b0bc 100644
--- a/src/lib/libssl/src/crypto/ec/ec_lcl.h
+++ b/src/lib/libssl/src/crypto/ec/ec_lcl.h
@@ -205,11 +205,14 @@ struct ec_group_st {
205 * irreducible polynomial defining the field. 205 * irreducible polynomial defining the field.
206 */ 206 */
207 207
208 unsigned int poly[5]; /* Field specification for curves over GF(2^m). 208 int poly[6]; /* Field specification for curves over GF(2^m).
209 * The irreducible f(t) is then of the form: 209 * The irreducible f(t) is then of the form:
210 * t^poly[0] + t^poly[1] + ... + t^poly[k] 210 * t^poly[0] + t^poly[1] + ... + t^poly[k]
211 * where m = poly[0] > poly[1] > ... > poly[k] = 0. 211 * where m = poly[0] > poly[1] > ... > poly[k] = 0.
212 */ 212 * The array is terminated with poly[k+1]=-1.
213 * All elliptic curve irreducibles have at most 5
214 * non-zero terms.
215 */
213 216
214 BIGNUM a, b; /* Curve coefficients. 217 BIGNUM a, b; /* Curve coefficients.
215 * (Here the assumption is that BIGNUMs can be used 218 * (Here the assumption is that BIGNUMs can be used
diff --git a/src/lib/libssl/src/crypto/ec/ec_lib.c b/src/lib/libssl/src/crypto/ec/ec_lib.c
index 5af84376c6..dd7da0fcf9 100644
--- a/src/lib/libssl/src/crypto/ec/ec_lib.c
+++ b/src/lib/libssl/src/crypto/ec/ec_lib.c
@@ -79,7 +79,7 @@ EC_GROUP *EC_GROUP_new(const EC_METHOD *meth)
79 79
80 if (meth == NULL) 80 if (meth == NULL)
81 { 81 {
82 ECerr(EC_F_EC_GROUP_NEW, ERR_R_PASSED_NULL_PARAMETER); 82 ECerr(EC_F_EC_GROUP_NEW, EC_R_SLOT_FULL);
83 return NULL; 83 return NULL;
84 } 84 }
85 if (meth->group_init == 0) 85 if (meth->group_init == 0)
@@ -740,7 +740,7 @@ void EC_POINT_clear_free(EC_POINT *point)
740 740
741 if (point->meth->point_clear_finish != 0) 741 if (point->meth->point_clear_finish != 0)
742 point->meth->point_clear_finish(point); 742 point->meth->point_clear_finish(point);
743 else if (point->meth != NULL && point->meth->point_finish != 0) 743 else if (point->meth->point_finish != 0)
744 point->meth->point_finish(point); 744 point->meth->point_finish(point);
745 OPENSSL_cleanse(point, sizeof *point); 745 OPENSSL_cleanse(point, sizeof *point);
746 OPENSSL_free(point); 746 OPENSSL_free(point);
diff --git a/src/lib/libssl/src/crypto/ec/ec_mult.c b/src/lib/libssl/src/crypto/ec/ec_mult.c
index 2ba173ef36..f05df5332e 100644
--- a/src/lib/libssl/src/crypto/ec/ec_mult.c
+++ b/src/lib/libssl/src/crypto/ec/ec_mult.c
@@ -224,6 +224,12 @@ static signed char *compute_wNAF(const BIGNUM *scalar, int w, size_t *ret_len)
224 sign = -1; 224 sign = -1;
225 } 225 }
226 226
227 if (scalar->d == NULL || scalar->top == 0)
228 {
229 ECerr(EC_F_COMPUTE_WNAF, ERR_R_INTERNAL_ERROR);
230 goto err;
231 }
232
227 len = BN_num_bits(scalar); 233 len = BN_num_bits(scalar);
228 r = OPENSSL_malloc(len + 1); /* modified wNAF may be one digit longer than binary representation 234 r = OPENSSL_malloc(len + 1); /* modified wNAF may be one digit longer than binary representation
229 * (*ret_len will be set to the actual length, i.e. at most 235 * (*ret_len will be set to the actual length, i.e. at most
@@ -233,12 +239,6 @@ static signed char *compute_wNAF(const BIGNUM *scalar, int w, size_t *ret_len)
233 ECerr(EC_F_COMPUTE_WNAF, ERR_R_MALLOC_FAILURE); 239 ECerr(EC_F_COMPUTE_WNAF, ERR_R_MALLOC_FAILURE);
234 goto err; 240 goto err;
235 } 241 }
236
237 if (scalar->d == NULL || scalar->top == 0)
238 {
239 ECerr(EC_F_COMPUTE_WNAF, ERR_R_INTERNAL_ERROR);
240 goto err;
241 }
242 window_val = scalar->d[0] & mask; 242 window_val = scalar->d[0] & mask;
243 j = 0; 243 j = 0;
244 while ((window_val != 0) || (j + w + 1 < len)) /* if j+w+1 >= len, window_val will not increase */ 244 while ((window_val != 0) || (j + w + 1 < len)) /* if j+w+1 >= len, window_val will not increase */
@@ -419,7 +419,7 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
419 if (numblocks > pre_comp->numblocks) 419 if (numblocks > pre_comp->numblocks)
420 numblocks = pre_comp->numblocks; 420 numblocks = pre_comp->numblocks;
421 421
422 pre_points_per_block = 1u << (pre_comp->w - 1); 422 pre_points_per_block = (size_t)1 << (pre_comp->w - 1);
423 423
424 /* check that pre_comp looks sane */ 424 /* check that pre_comp looks sane */
425 if (pre_comp->num != (pre_comp->numblocks * pre_points_per_block)) 425 if (pre_comp->num != (pre_comp->numblocks * pre_points_per_block))
@@ -461,7 +461,7 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
461 461
462 bits = i < num ? BN_num_bits(scalars[i]) : BN_num_bits(scalar); 462 bits = i < num ? BN_num_bits(scalars[i]) : BN_num_bits(scalar);
463 wsize[i] = EC_window_bits_for_scalar_size(bits); 463 wsize[i] = EC_window_bits_for_scalar_size(bits);
464 num_val += 1u << (wsize[i] - 1); 464 num_val += (size_t)1 << (wsize[i] - 1);
465 wNAF[i + 1] = NULL; /* make sure we always have a pivot */ 465 wNAF[i + 1] = NULL; /* make sure we always have a pivot */
466 wNAF[i] = compute_wNAF((i < num ? scalars[i] : scalar), wsize[i], &wNAF_len[i]); 466 wNAF[i] = compute_wNAF((i < num ? scalars[i] : scalar), wsize[i], &wNAF_len[i]);
467 if (wNAF[i] == NULL) 467 if (wNAF[i] == NULL)
@@ -600,7 +600,7 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
600 for (i = 0; i < num + num_scalar; i++) 600 for (i = 0; i < num + num_scalar; i++)
601 { 601 {
602 val_sub[i] = v; 602 val_sub[i] = v;
603 for (j = 0; j < (1u << (wsize[i] - 1)); j++) 603 for (j = 0; j < ((size_t)1 << (wsize[i] - 1)); j++)
604 { 604 {
605 *v = EC_POINT_new(group); 605 *v = EC_POINT_new(group);
606 if (*v == NULL) goto err; 606 if (*v == NULL) goto err;
@@ -636,7 +636,7 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
636 if (wsize[i] > 1) 636 if (wsize[i] > 1)
637 { 637 {
638 if (!EC_POINT_dbl(group, tmp, val_sub[i][0], ctx)) goto err; 638 if (!EC_POINT_dbl(group, tmp, val_sub[i][0], ctx)) goto err;
639 for (j = 1; j < (1u << (wsize[i] - 1)); j++) 639 for (j = 1; j < ((size_t)1 << (wsize[i] - 1)); j++)
640 { 640 {
641 if (!EC_POINT_add(group, val_sub[i][j], val_sub[i][j - 1], tmp, ctx)) goto err; 641 if (!EC_POINT_add(group, val_sub[i][j], val_sub[i][j - 1], tmp, ctx)) goto err;
642 } 642 }
@@ -820,7 +820,7 @@ int ec_wNAF_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
820 820
821 numblocks = (bits + blocksize - 1) / blocksize; /* max. number of blocks to use for wNAF splitting */ 821 numblocks = (bits + blocksize - 1) / blocksize; /* max. number of blocks to use for wNAF splitting */
822 822
823 pre_points_per_block = 1u << (w - 1); 823 pre_points_per_block = (size_t)1 << (w - 1);
824 num = pre_points_per_block * numblocks; /* number of points to compute and store */ 824 num = pre_points_per_block * numblocks; /* number of points to compute and store */
825 825
826 points = OPENSSL_malloc(sizeof (EC_POINT*)*(num + 1)); 826 points = OPENSSL_malloc(sizeof (EC_POINT*)*(num + 1));
diff --git a/src/lib/libssl/src/crypto/ec/ecp_nist.c b/src/lib/libssl/src/crypto/ec/ecp_nist.c
index 71893d5eab..2a5682ea41 100644
--- a/src/lib/libssl/src/crypto/ec/ecp_nist.c
+++ b/src/lib/libssl/src/crypto/ec/ecp_nist.c
@@ -112,10 +112,6 @@ const EC_METHOD *EC_GFp_nist_method(void)
112 return &ret; 112 return &ret;
113 } 113 }
114 114
115#if BN_BITS2 == 64
116#define NO_32_BIT_TYPE
117#endif
118
119int ec_GFp_nist_group_copy(EC_GROUP *dest, const EC_GROUP *src) 115int ec_GFp_nist_group_copy(EC_GROUP *dest, const EC_GROUP *src)
120 { 116 {
121 dest->field_mod_func = src->field_mod_func; 117 dest->field_mod_func = src->field_mod_func;
@@ -139,34 +135,12 @@ int ec_GFp_nist_group_set_curve(EC_GROUP *group, const BIGNUM *p,
139 if (BN_ucmp(BN_get0_nist_prime_192(), p) == 0) 135 if (BN_ucmp(BN_get0_nist_prime_192(), p) == 0)
140 group->field_mod_func = BN_nist_mod_192; 136 group->field_mod_func = BN_nist_mod_192;
141 else if (BN_ucmp(BN_get0_nist_prime_224(), p) == 0) 137 else if (BN_ucmp(BN_get0_nist_prime_224(), p) == 0)
142 {
143#ifndef NO_32_BIT_TYPE
144 group->field_mod_func = BN_nist_mod_224; 138 group->field_mod_func = BN_nist_mod_224;
145#else
146 ECerr(EC_F_EC_GFP_NIST_GROUP_SET_CURVE, EC_R_NOT_A_SUPPORTED_NIST_PRIME);
147 goto err;
148#endif
149 }
150 else if (BN_ucmp(BN_get0_nist_prime_256(), p) == 0) 139 else if (BN_ucmp(BN_get0_nist_prime_256(), p) == 0)
151 {
152#ifndef NO_32_BIT_TYPE
153 group->field_mod_func = BN_nist_mod_256; 140 group->field_mod_func = BN_nist_mod_256;
154#else
155 ECerr(EC_F_EC_GFP_NIST_GROUP_SET_CURVE, EC_R_NOT_A_SUPPORTED_NIST_PRIME);
156 goto err;
157#endif
158 }
159 else if (BN_ucmp(BN_get0_nist_prime_384(), p) == 0) 141 else if (BN_ucmp(BN_get0_nist_prime_384(), p) == 0)
160 {
161#ifndef NO_32_BIT_TYPE
162 group->field_mod_func = BN_nist_mod_384; 142 group->field_mod_func = BN_nist_mod_384;
163#else
164 ECerr(EC_F_EC_GFP_NIST_GROUP_SET_CURVE, EC_R_NOT_A_SUPPORTED_NIST_PRIME);
165 goto err;
166#endif
167 }
168 else if (BN_ucmp(BN_get0_nist_prime_521(), p) == 0) 143 else if (BN_ucmp(BN_get0_nist_prime_521(), p) == 0)
169 /* this one works in the NO_32_BIT_TYPE case */
170 group->field_mod_func = BN_nist_mod_521; 144 group->field_mod_func = BN_nist_mod_521;
171 else 145 else
172 { 146 {
diff --git a/src/lib/libssl/src/crypto/ec/ectest.c b/src/lib/libssl/src/crypto/ec/ectest.c
index 6148d553f9..7509cb9c7c 100644
--- a/src/lib/libssl/src/crypto/ec/ectest.c
+++ b/src/lib/libssl/src/crypto/ec/ectest.c
@@ -432,9 +432,7 @@ void prime_field_tests()
432 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 432 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
433 fprintf(stdout, "."); 433 fprintf(stdout, ".");
434 fflush(stdout); 434 fflush(stdout);
435#if 0
436 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; 435 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT;
437#endif
438 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; 436 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT;
439 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 437 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
440 fprintf(stdout, " ok\n"); 438 fprintf(stdout, " ok\n");
@@ -478,9 +476,7 @@ void prime_field_tests()
478 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 476 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
479 fprintf(stdout, "."); 477 fprintf(stdout, ".");
480 fflush(stdout); 478 fflush(stdout);
481#if 0
482 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; 479 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT;
483#endif
484 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; 480 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT;
485 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 481 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
486 fprintf(stdout, " ok\n"); 482 fprintf(stdout, " ok\n");
@@ -525,9 +521,7 @@ void prime_field_tests()
525 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 521 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
526 fprintf(stdout, "."); 522 fprintf(stdout, ".");
527 fflush(stdout); 523 fflush(stdout);
528#if 0
529 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; 524 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT;
530#endif
531 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; 525 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT;
532 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 526 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
533 fprintf(stdout, " ok\n"); 527 fprintf(stdout, " ok\n");
@@ -577,9 +571,7 @@ void prime_field_tests()
577 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 571 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
578 fprintf(stdout, "."); 572 fprintf(stdout, ".");
579 fflush(stdout); 573 fflush(stdout);
580#if 0
581 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; 574 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT;
582#endif
583 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; 575 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT;
584 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 576 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
585 fprintf(stdout, " ok\n"); 577 fprintf(stdout, " ok\n");
@@ -635,9 +627,7 @@ void prime_field_tests()
635 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 627 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
636 fprintf(stdout, "."); 628 fprintf(stdout, ".");
637 fflush(stdout); 629 fflush(stdout);
638#if 0
639 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; 630 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT;
640#endif
641 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; 631 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT;
642 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; 632 if (!EC_POINT_is_at_infinity(group, Q)) ABORT;
643 fprintf(stdout, " ok\n"); 633 fprintf(stdout, " ok\n");
@@ -809,7 +799,7 @@ void prime_field_tests()
809 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; \ 799 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; \
810 fprintf(stdout, "."); \ 800 fprintf(stdout, "."); \
811 fflush(stdout); \ 801 fflush(stdout); \
812 /* if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; */ \ 802 if (!EC_GROUP_precompute_mult(group, ctx)) ABORT; \
813 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; \ 803 if (!EC_POINT_mul(group, Q, z, NULL, NULL, ctx)) ABORT; \
814 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; \ 804 if (!EC_POINT_is_at_infinity(group, Q)) ABORT; \
815 fprintf(stdout, " ok\n"); \ 805 fprintf(stdout, " ok\n"); \
@@ -1336,7 +1326,7 @@ int main(int argc, char *argv[])
1336#endif 1326#endif
1337 CRYPTO_cleanup_all_ex_data(); 1327 CRYPTO_cleanup_all_ex_data();
1338 ERR_free_strings(); 1328 ERR_free_strings();
1339 ERR_remove_state(0); 1329 ERR_remove_thread_state(NULL);
1340 CRYPTO_mem_leaks_fp(stderr); 1330 CRYPTO_mem_leaks_fp(stderr);
1341 1331
1342 return 0; 1332 return 0;
diff --git a/src/lib/libssl/src/crypto/engine/Makefile b/src/lib/libssl/src/crypto/engine/Makefile
index 0cc3722089..9c214824eb 100644
--- a/src/lib/libssl/src/crypto/engine/Makefile
+++ b/src/lib/libssl/src/crypto/engine/Makefile
@@ -20,13 +20,13 @@ LIB=$(TOP)/libcrypto.a
20LIBSRC= eng_err.c eng_lib.c eng_list.c eng_init.c eng_ctrl.c \ 20LIBSRC= eng_err.c eng_lib.c eng_list.c eng_init.c eng_ctrl.c \
21 eng_table.c eng_pkey.c eng_fat.c eng_all.c \ 21 eng_table.c eng_pkey.c eng_fat.c eng_all.c \
22 tb_rsa.c tb_dsa.c tb_ecdsa.c tb_dh.c tb_ecdh.c tb_rand.c tb_store.c \ 22 tb_rsa.c tb_dsa.c tb_ecdsa.c tb_dh.c tb_ecdh.c tb_rand.c tb_store.c \
23 tb_cipher.c tb_digest.c \ 23 tb_cipher.c tb_digest.c tb_pkmeth.c tb_asnmth.c \
24 eng_openssl.c eng_cnf.c eng_dyn.c eng_cryptodev.c eng_padlock.c 24 eng_openssl.c eng_cnf.c eng_dyn.c eng_cryptodev.c
25LIBOBJ= eng_err.o eng_lib.o eng_list.o eng_init.o eng_ctrl.o \ 25LIBOBJ= eng_err.o eng_lib.o eng_list.o eng_init.o eng_ctrl.o \
26 eng_table.o eng_pkey.o eng_fat.o eng_all.o \ 26 eng_table.o eng_pkey.o eng_fat.o eng_all.o \
27 tb_rsa.o tb_dsa.o tb_ecdsa.o tb_dh.o tb_ecdh.o tb_rand.o tb_store.o \ 27 tb_rsa.o tb_dsa.o tb_ecdsa.o tb_dh.o tb_ecdh.o tb_rand.o tb_store.o \
28 tb_cipher.o tb_digest.o \ 28 tb_cipher.o tb_digest.o tb_pkmeth.o tb_asnmth.o \
29 eng_openssl.o eng_cnf.o eng_dyn.o eng_cryptodev.o eng_padlock.o 29 eng_openssl.o eng_cnf.o eng_dyn.o eng_cryptodev.o
30 30
31SRC= $(LIBSRC) 31SRC= $(LIBSRC)
32 32
@@ -41,7 +41,7 @@ top:
41all: lib 41all: lib
42 42
43lib: $(LIBOBJ) 43lib: $(LIBOBJ)
44 $(ARX) $(LIB) $(LIBOBJ) 44 $(AR) $(LIB) $(LIBOBJ)
45 $(RANLIB) $(LIB) || echo Never mind. 45 $(RANLIB) $(LIB) || echo Never mind.
46 @touch lib 46 @touch lib
47 47
@@ -88,35 +88,34 @@ eng_all.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
88eng_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 88eng_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
89eng_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 89eng_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
90eng_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h 90eng_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h
91eng_all.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 91eng_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
92eng_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 92eng_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
93eng_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 93eng_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
94eng_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 94eng_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
95eng_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 95eng_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
96eng_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 96eng_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
97eng_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 97eng_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_all.c eng_int.h
98eng_all.o: ../cryptlib.h eng_all.c eng_int.h
99eng_cnf.o: ../../e_os.h ../../include/openssl/asn1.h 98eng_cnf.o: ../../e_os.h ../../include/openssl/asn1.h
100eng_cnf.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 99eng_cnf.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
101eng_cnf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 100eng_cnf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
102eng_cnf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 101eng_cnf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
103eng_cnf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 102eng_cnf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
104eng_cnf.o: ../../include/openssl/engine.h ../../include/openssl/err.h 103eng_cnf.o: ../../include/openssl/engine.h ../../include/openssl/err.h
105eng_cnf.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 104eng_cnf.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
106eng_cnf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 105eng_cnf.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
107eng_cnf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 106eng_cnf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
108eng_cnf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 107eng_cnf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
109eng_cnf.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 108eng_cnf.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
110eng_cnf.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 109eng_cnf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
111eng_cnf.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 110eng_cnf.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
112eng_cnf.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_cnf.c eng_int.h 111eng_cnf.o: ../cryptlib.h eng_cnf.c eng_int.h
113eng_cryptodev.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 112eng_cryptodev.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
114eng_cryptodev.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 113eng_cryptodev.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
115eng_cryptodev.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 114eng_cryptodev.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
116eng_cryptodev.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 115eng_cryptodev.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
117eng_cryptodev.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 116eng_cryptodev.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
118eng_cryptodev.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 117eng_cryptodev.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
119eng_cryptodev.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 118eng_cryptodev.o: ../../include/openssl/obj_mac.h
120eng_cryptodev.o: ../../include/openssl/objects.h 119eng_cryptodev.o: ../../include/openssl/objects.h
121eng_cryptodev.o: ../../include/openssl/opensslconf.h 120eng_cryptodev.o: ../../include/openssl/opensslconf.h
122eng_cryptodev.o: ../../include/openssl/opensslv.h 121eng_cryptodev.o: ../../include/openssl/opensslv.h
@@ -131,9 +130,8 @@ eng_ctrl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
131eng_ctrl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 130eng_ctrl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
132eng_ctrl.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 131eng_ctrl.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
133eng_ctrl.o: ../../include/openssl/err.h ../../include/openssl/evp.h 132eng_ctrl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
134eng_ctrl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 133eng_ctrl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
135eng_ctrl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 134eng_ctrl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
136eng_ctrl.o: ../../include/openssl/opensslconf.h
137eng_ctrl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 135eng_ctrl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
138eng_ctrl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 136eng_ctrl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
139eng_ctrl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 137eng_ctrl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -145,50 +143,49 @@ eng_dyn.o: ../../include/openssl/crypto.h ../../include/openssl/dso.h
145eng_dyn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 143eng_dyn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
146eng_dyn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 144eng_dyn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
147eng_dyn.o: ../../include/openssl/engine.h ../../include/openssl/err.h 145eng_dyn.o: ../../include/openssl/engine.h ../../include/openssl/err.h
148eng_dyn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 146eng_dyn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
149eng_dyn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 147eng_dyn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
150eng_dyn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 148eng_dyn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
151eng_dyn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 149eng_dyn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
152eng_dyn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 150eng_dyn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
153eng_dyn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 151eng_dyn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
154eng_dyn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 152eng_dyn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
155eng_dyn.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_dyn.c eng_int.h 153eng_dyn.o: ../cryptlib.h eng_dyn.c eng_int.h
156eng_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 154eng_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
157eng_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 155eng_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
158eng_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 156eng_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
159eng_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 157eng_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
160eng_err.o: ../../include/openssl/engine.h ../../include/openssl/err.h 158eng_err.o: ../../include/openssl/engine.h ../../include/openssl/err.h
161eng_err.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 159eng_err.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
162eng_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 160eng_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
163eng_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 161eng_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
164eng_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 162eng_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
165eng_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 163eng_err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
166eng_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 164eng_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
167eng_err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 165eng_err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
168eng_err.o: ../../include/openssl/x509_vfy.h eng_err.c 166eng_err.o: eng_err.c
169eng_fat.o: ../../e_os.h ../../include/openssl/asn1.h 167eng_fat.o: ../../e_os.h ../../include/openssl/asn1.h
170eng_fat.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 168eng_fat.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
171eng_fat.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 169eng_fat.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
172eng_fat.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 170eng_fat.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
173eng_fat.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 171eng_fat.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
174eng_fat.o: ../../include/openssl/engine.h ../../include/openssl/err.h 172eng_fat.o: ../../include/openssl/engine.h ../../include/openssl/err.h
175eng_fat.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 173eng_fat.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
176eng_fat.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 174eng_fat.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
177eng_fat.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 175eng_fat.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
178eng_fat.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 176eng_fat.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
179eng_fat.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 177eng_fat.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
180eng_fat.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 178eng_fat.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
181eng_fat.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 179eng_fat.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
182eng_fat.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_fat.c eng_int.h 180eng_fat.o: ../cryptlib.h eng_fat.c eng_int.h
183eng_init.o: ../../e_os.h ../../include/openssl/asn1.h 181eng_init.o: ../../e_os.h ../../include/openssl/asn1.h
184eng_init.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 182eng_init.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
185eng_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 183eng_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
186eng_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 184eng_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
187eng_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 185eng_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
188eng_init.o: ../../include/openssl/err.h ../../include/openssl/evp.h 186eng_init.o: ../../include/openssl/err.h ../../include/openssl/evp.h
189eng_init.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 187eng_init.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
190eng_init.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 188eng_init.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
191eng_init.o: ../../include/openssl/opensslconf.h
192eng_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 189eng_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
193eng_init.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 190eng_init.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
194eng_init.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 191eng_init.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -200,23 +197,22 @@ eng_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
200eng_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 197eng_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
201eng_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 198eng_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
202eng_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 199eng_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
203eng_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 200eng_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
204eng_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 201eng_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
205eng_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 202eng_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
206eng_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 203eng_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
207eng_lib.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 204eng_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
208eng_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 205eng_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
209eng_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 206eng_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
210eng_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h eng_lib.c 207eng_lib.o: ../cryptlib.h eng_int.h eng_lib.c
211eng_list.o: ../../e_os.h ../../include/openssl/asn1.h 208eng_list.o: ../../e_os.h ../../include/openssl/asn1.h
212eng_list.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 209eng_list.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
213eng_list.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 210eng_list.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
214eng_list.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 211eng_list.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
215eng_list.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 212eng_list.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
216eng_list.o: ../../include/openssl/err.h ../../include/openssl/evp.h 213eng_list.o: ../../include/openssl/err.h ../../include/openssl/evp.h
217eng_list.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 214eng_list.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
218eng_list.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 215eng_list.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
219eng_list.o: ../../include/openssl/opensslconf.h
220eng_list.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 216eng_list.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
221eng_list.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 217eng_list.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
222eng_list.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 218eng_list.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -229,9 +225,8 @@ eng_openssl.o: ../../include/openssl/dsa.h ../../include/openssl/dso.h
229eng_openssl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 225eng_openssl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
230eng_openssl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 226eng_openssl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
231eng_openssl.o: ../../include/openssl/engine.h ../../include/openssl/err.h 227eng_openssl.o: ../../include/openssl/engine.h ../../include/openssl/err.h
232eng_openssl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 228eng_openssl.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
233eng_openssl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 229eng_openssl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
234eng_openssl.o: ../../include/openssl/objects.h
235eng_openssl.o: ../../include/openssl/opensslconf.h 230eng_openssl.o: ../../include/openssl/opensslconf.h
236eng_openssl.o: ../../include/openssl/opensslv.h 231eng_openssl.o: ../../include/openssl/opensslv.h
237eng_openssl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h 232eng_openssl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
@@ -241,31 +236,14 @@ eng_openssl.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
241eng_openssl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 236eng_openssl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
242eng_openssl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 237eng_openssl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
243eng_openssl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_openssl.c 238eng_openssl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_openssl.c
244eng_padlock.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
245eng_padlock.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
246eng_padlock.o: ../../include/openssl/crypto.h ../../include/openssl/dso.h
247eng_padlock.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
248eng_padlock.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
249eng_padlock.o: ../../include/openssl/engine.h ../../include/openssl/err.h
250eng_padlock.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
251eng_padlock.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
252eng_padlock.o: ../../include/openssl/objects.h
253eng_padlock.o: ../../include/openssl/opensslconf.h
254eng_padlock.o: ../../include/openssl/opensslv.h
255eng_padlock.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
256eng_padlock.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
257eng_padlock.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
258eng_padlock.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
259eng_padlock.o: ../../include/openssl/x509_vfy.h eng_padlock.c
260eng_pkey.o: ../../e_os.h ../../include/openssl/asn1.h 239eng_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
261eng_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 240eng_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
262eng_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 241eng_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
263eng_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 242eng_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
264eng_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 243eng_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
265eng_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h 244eng_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
266eng_pkey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 245eng_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
267eng_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 246eng_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
268eng_pkey.o: ../../include/openssl/opensslconf.h
269eng_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 247eng_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
270eng_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 248eng_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
271eng_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 249eng_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -277,8 +255,8 @@ eng_table.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
277eng_table.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 255eng_table.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
278eng_table.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 256eng_table.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
279eng_table.o: ../../include/openssl/err.h ../../include/openssl/evp.h 257eng_table.o: ../../include/openssl/err.h ../../include/openssl/evp.h
280eng_table.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 258eng_table.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
281eng_table.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 259eng_table.o: ../../include/openssl/objects.h
282eng_table.o: ../../include/openssl/opensslconf.h 260eng_table.o: ../../include/openssl/opensslconf.h
283eng_table.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 261eng_table.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
284eng_table.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 262eng_table.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -286,14 +264,29 @@ eng_table.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
286eng_table.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 264eng_table.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
287eng_table.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h 265eng_table.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h
288eng_table.o: eng_table.c 266eng_table.o: eng_table.c
267tb_asnmth.o: ../../e_os.h ../../include/openssl/asn1.h
268tb_asnmth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
269tb_asnmth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
270tb_asnmth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
271tb_asnmth.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
272tb_asnmth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
273tb_asnmth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
274tb_asnmth.o: ../../include/openssl/objects.h
275tb_asnmth.o: ../../include/openssl/opensslconf.h
276tb_asnmth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
277tb_asnmth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
278tb_asnmth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
279tb_asnmth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
280tb_asnmth.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
281tb_asnmth.o: eng_int.h tb_asnmth.c
289tb_cipher.o: ../../e_os.h ../../include/openssl/asn1.h 282tb_cipher.o: ../../e_os.h ../../include/openssl/asn1.h
290tb_cipher.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 283tb_cipher.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
291tb_cipher.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 284tb_cipher.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
292tb_cipher.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 285tb_cipher.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
293tb_cipher.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 286tb_cipher.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
294tb_cipher.o: ../../include/openssl/err.h ../../include/openssl/evp.h 287tb_cipher.o: ../../include/openssl/err.h ../../include/openssl/evp.h
295tb_cipher.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 288tb_cipher.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
296tb_cipher.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 289tb_cipher.o: ../../include/openssl/objects.h
297tb_cipher.o: ../../include/openssl/opensslconf.h 290tb_cipher.o: ../../include/openssl/opensslconf.h
298tb_cipher.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 291tb_cipher.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
299tb_cipher.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 292tb_cipher.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -306,22 +299,22 @@ tb_dh.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
306tb_dh.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 299tb_dh.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
307tb_dh.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 300tb_dh.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
308tb_dh.o: ../../include/openssl/engine.h ../../include/openssl/err.h 301tb_dh.o: ../../include/openssl/engine.h ../../include/openssl/err.h
309tb_dh.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 302tb_dh.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
310tb_dh.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 303tb_dh.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
311tb_dh.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 304tb_dh.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
312tb_dh.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 305tb_dh.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
313tb_dh.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 306tb_dh.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
314tb_dh.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 307tb_dh.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
315tb_dh.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 308tb_dh.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
316tb_dh.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_dh.c 309tb_dh.o: ../cryptlib.h eng_int.h tb_dh.c
317tb_digest.o: ../../e_os.h ../../include/openssl/asn1.h 310tb_digest.o: ../../e_os.h ../../include/openssl/asn1.h
318tb_digest.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 311tb_digest.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
319tb_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 312tb_digest.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
320tb_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 313tb_digest.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
321tb_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 314tb_digest.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
322tb_digest.o: ../../include/openssl/err.h ../../include/openssl/evp.h 315tb_digest.o: ../../include/openssl/err.h ../../include/openssl/evp.h
323tb_digest.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 316tb_digest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
324tb_digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 317tb_digest.o: ../../include/openssl/objects.h
325tb_digest.o: ../../include/openssl/opensslconf.h 318tb_digest.o: ../../include/openssl/opensslconf.h
326tb_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 319tb_digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
327tb_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 320tb_digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -334,78 +327,89 @@ tb_dsa.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
334tb_dsa.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 327tb_dsa.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
335tb_dsa.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 328tb_dsa.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
336tb_dsa.o: ../../include/openssl/engine.h ../../include/openssl/err.h 329tb_dsa.o: ../../include/openssl/engine.h ../../include/openssl/err.h
337tb_dsa.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 330tb_dsa.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
338tb_dsa.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 331tb_dsa.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
339tb_dsa.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 332tb_dsa.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
340tb_dsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 333tb_dsa.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
341tb_dsa.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 334tb_dsa.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
342tb_dsa.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 335tb_dsa.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
343tb_dsa.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 336tb_dsa.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
344tb_dsa.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_dsa.c 337tb_dsa.o: ../cryptlib.h eng_int.h tb_dsa.c
345tb_ecdh.o: ../../e_os.h ../../include/openssl/asn1.h 338tb_ecdh.o: ../../e_os.h ../../include/openssl/asn1.h
346tb_ecdh.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 339tb_ecdh.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
347tb_ecdh.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 340tb_ecdh.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
348tb_ecdh.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 341tb_ecdh.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
349tb_ecdh.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 342tb_ecdh.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
350tb_ecdh.o: ../../include/openssl/err.h ../../include/openssl/evp.h 343tb_ecdh.o: ../../include/openssl/err.h ../../include/openssl/evp.h
351tb_ecdh.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 344tb_ecdh.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
352tb_ecdh.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 345tb_ecdh.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
353tb_ecdh.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 346tb_ecdh.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
354tb_ecdh.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 347tb_ecdh.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
355tb_ecdh.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 348tb_ecdh.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
356tb_ecdh.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 349tb_ecdh.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
357tb_ecdh.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 350tb_ecdh.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_ecdh.c
358tb_ecdh.o: ../cryptlib.h eng_int.h tb_ecdh.c
359tb_ecdsa.o: ../../e_os.h ../../include/openssl/asn1.h 351tb_ecdsa.o: ../../e_os.h ../../include/openssl/asn1.h
360tb_ecdsa.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 352tb_ecdsa.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
361tb_ecdsa.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 353tb_ecdsa.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
362tb_ecdsa.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 354tb_ecdsa.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
363tb_ecdsa.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 355tb_ecdsa.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
364tb_ecdsa.o: ../../include/openssl/err.h ../../include/openssl/evp.h 356tb_ecdsa.o: ../../include/openssl/err.h ../../include/openssl/evp.h
365tb_ecdsa.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 357tb_ecdsa.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
366tb_ecdsa.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 358tb_ecdsa.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
367tb_ecdsa.o: ../../include/openssl/opensslconf.h
368tb_ecdsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 359tb_ecdsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
369tb_ecdsa.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 360tb_ecdsa.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
370tb_ecdsa.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 361tb_ecdsa.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
371tb_ecdsa.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 362tb_ecdsa.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
372tb_ecdsa.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_ecdsa.c 363tb_ecdsa.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_ecdsa.c
364tb_pkmeth.o: ../../e_os.h ../../include/openssl/asn1.h
365tb_pkmeth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
366tb_pkmeth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
367tb_pkmeth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
368tb_pkmeth.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
369tb_pkmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
370tb_pkmeth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
371tb_pkmeth.o: ../../include/openssl/objects.h
372tb_pkmeth.o: ../../include/openssl/opensslconf.h
373tb_pkmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
374tb_pkmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
375tb_pkmeth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
376tb_pkmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
377tb_pkmeth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h
378tb_pkmeth.o: tb_pkmeth.c
373tb_rand.o: ../../e_os.h ../../include/openssl/asn1.h 379tb_rand.o: ../../e_os.h ../../include/openssl/asn1.h
374tb_rand.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 380tb_rand.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
375tb_rand.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 381tb_rand.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
376tb_rand.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 382tb_rand.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
377tb_rand.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 383tb_rand.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
378tb_rand.o: ../../include/openssl/err.h ../../include/openssl/evp.h 384tb_rand.o: ../../include/openssl/err.h ../../include/openssl/evp.h
379tb_rand.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 385tb_rand.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
380tb_rand.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 386tb_rand.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
381tb_rand.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 387tb_rand.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
382tb_rand.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 388tb_rand.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
383tb_rand.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 389tb_rand.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
384tb_rand.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 390tb_rand.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
385tb_rand.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 391tb_rand.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_rand.c
386tb_rand.o: ../cryptlib.h eng_int.h tb_rand.c
387tb_rsa.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 392tb_rsa.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
388tb_rsa.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 393tb_rsa.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
389tb_rsa.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 394tb_rsa.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
390tb_rsa.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 395tb_rsa.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
391tb_rsa.o: ../../include/openssl/engine.h ../../include/openssl/err.h 396tb_rsa.o: ../../include/openssl/engine.h ../../include/openssl/err.h
392tb_rsa.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 397tb_rsa.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
393tb_rsa.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 398tb_rsa.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
394tb_rsa.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 399tb_rsa.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
395tb_rsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 400tb_rsa.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
396tb_rsa.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 401tb_rsa.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
397tb_rsa.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 402tb_rsa.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
398tb_rsa.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 403tb_rsa.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
399tb_rsa.o: ../../include/openssl/x509_vfy.h ../cryptlib.h eng_int.h tb_rsa.c 404tb_rsa.o: ../cryptlib.h eng_int.h tb_rsa.c
400tb_store.o: ../../e_os.h ../../include/openssl/asn1.h 405tb_store.o: ../../e_os.h ../../include/openssl/asn1.h
401tb_store.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 406tb_store.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
402tb_store.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 407tb_store.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
403tb_store.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 408tb_store.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
404tb_store.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 409tb_store.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
405tb_store.o: ../../include/openssl/err.h ../../include/openssl/evp.h 410tb_store.o: ../../include/openssl/err.h ../../include/openssl/evp.h
406tb_store.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 411tb_store.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
407tb_store.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 412tb_store.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
408tb_store.o: ../../include/openssl/opensslconf.h
409tb_store.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 413tb_store.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
410tb_store.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 414tb_store.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
411tb_store.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 415tb_store.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
diff --git a/src/lib/libssl/src/crypto/engine/eng_all.c b/src/lib/libssl/src/crypto/engine/eng_all.c
index d29cd57dc2..22c120454f 100644
--- a/src/lib/libssl/src/crypto/engine/eng_all.c
+++ b/src/lib/libssl/src/crypto/engine/eng_all.c
@@ -61,15 +61,15 @@
61 61
62void ENGINE_load_builtin_engines(void) 62void ENGINE_load_builtin_engines(void)
63 { 63 {
64#if 0
64 /* There's no longer any need for an "openssl" ENGINE unless, one day, 65 /* There's no longer any need for an "openssl" ENGINE unless, one day,
65 * it is the *only* way for standard builtin implementations to be be 66 * it is the *only* way for standard builtin implementations to be be
66 * accessed (ie. it would be possible to statically link binaries with 67 * accessed (ie. it would be possible to statically link binaries with
67 * *no* builtin implementations). */ 68 * *no* builtin implementations). */
68#if 0
69 ENGINE_load_openssl(); 69 ENGINE_load_openssl();
70#endif 70#endif
71#if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK) 71#if !defined(OPENSSL_NO_HW) && (defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV))
72 ENGINE_load_padlock(); 72 ENGINE_load_cryptodev();
73#endif 73#endif
74 ENGINE_load_dynamic(); 74 ENGINE_load_dynamic();
75#ifndef OPENSSL_NO_STATIC_ENGINE 75#ifndef OPENSSL_NO_STATIC_ENGINE
@@ -98,14 +98,15 @@ void ENGINE_load_builtin_engines(void)
98#ifndef OPENSSL_NO_HW_UBSEC 98#ifndef OPENSSL_NO_HW_UBSEC
99 ENGINE_load_ubsec(); 99 ENGINE_load_ubsec();
100#endif 100#endif
101#ifndef OPENSSL_NO_HW_PADLOCK
102 ENGINE_load_padlock();
101#endif 103#endif
102#if !defined(OPENSSL_NO_GMP) && !defined(OPENSSL_NO_HW_GMP)
103 ENGINE_load_gmp();
104#endif 104#endif
105#ifndef OPENSSL_NO_GOST
106 ENGINE_load_gost();
105#endif 107#endif
106#ifndef OPENSSL_NO_HW 108#ifndef OPENSSL_NO_GMP
107#if defined(__OpenBSD__) || defined(__FreeBSD__) 109 ENGINE_load_gmp();
108 ENGINE_load_cryptodev();
109#endif 110#endif
110#if defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_NO_CAPIENG) 111#if defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_NO_CAPIENG)
111 ENGINE_load_capi(); 112 ENGINE_load_capi();
@@ -113,7 +114,7 @@ void ENGINE_load_builtin_engines(void)
113#endif 114#endif
114 } 115 }
115 116
116#if defined(__OpenBSD__) || defined(__FreeBSD__) 117#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV)
117void ENGINE_setup_bsd_cryptodev(void) { 118void ENGINE_setup_bsd_cryptodev(void) {
118 static int bsd_cryptodev_default_loaded = 0; 119 static int bsd_cryptodev_default_loaded = 0;
119 if (!bsd_cryptodev_default_loaded) { 120 if (!bsd_cryptodev_default_loaded) {
diff --git a/src/lib/libssl/src/crypto/engine/eng_cnf.c b/src/lib/libssl/src/crypto/engine/eng_cnf.c
index 08066cea59..95c4070015 100644
--- a/src/lib/libssl/src/crypto/engine/eng_cnf.c
+++ b/src/lib/libssl/src/crypto/engine/eng_cnf.c
@@ -95,7 +95,7 @@ static int int_engine_configure(char *name, char *value, const CONF *cnf)
95 int ret = 0; 95 int ret = 0;
96 long do_init = -1; 96 long do_init = -1;
97 STACK_OF(CONF_VALUE) *ecmds; 97 STACK_OF(CONF_VALUE) *ecmds;
98 CONF_VALUE *ecmd; 98 CONF_VALUE *ecmd = NULL;
99 char *ctrlname, *ctrlvalue; 99 char *ctrlname, *ctrlvalue;
100 ENGINE *e = NULL; 100 ENGINE *e = NULL;
101 int soft = 0; 101 int soft = 0;
@@ -157,7 +157,7 @@ static int int_engine_configure(char *name, char *value, const CONF *cnf)
157 return 1; 157 return 1;
158 } 158 }
159 if (!e) 159 if (!e)
160 return 0; 160 goto err;
161 } 161 }
162 /* Allow "EMPTY" to mean no value: this allows a valid 162 /* Allow "EMPTY" to mean no value: this allows a valid
163 * "value" to be passed to ctrls of type NO_INPUT 163 * "value" to be passed to ctrls of type NO_INPUT
@@ -186,16 +186,27 @@ static int int_engine_configure(char *name, char *value, const CONF *cnf)
186 } 186 }
187 else if (!ENGINE_ctrl_cmd_string(e, 187 else if (!ENGINE_ctrl_cmd_string(e,
188 ctrlname, ctrlvalue, 0)) 188 ctrlname, ctrlvalue, 0))
189 return 0; 189 goto err;
190 } 190 }
191 191
192 192
193 193
194 } 194 }
195 if (e && (do_init == -1) && !int_engine_init(e)) 195 if (e && (do_init == -1) && !int_engine_init(e))
196 {
197 ecmd = NULL;
196 goto err; 198 goto err;
199 }
197 ret = 1; 200 ret = 1;
198 err: 201 err:
202 if (ret != 1)
203 {
204 ENGINEerr(ENGINE_F_INT_ENGINE_CONFIGURE, ENGINE_R_ENGINE_CONFIGURATION_ERROR);
205 if (ecmd)
206 ERR_add_error_data(6, "section=", ecmd->section,
207 ", name=", ecmd->name,
208 ", value=", ecmd->value);
209 }
199 if (e) 210 if (e)
200 ENGINE_free(e); 211 ENGINE_free(e);
201 return ret; 212 return ret;
diff --git a/src/lib/libssl/src/crypto/engine/eng_cryptodev.c b/src/lib/libssl/src/crypto/engine/eng_cryptodev.c
index ab38cd52f0..52f4ca3901 100644
--- a/src/lib/libssl/src/crypto/engine/eng_cryptodev.c
+++ b/src/lib/libssl/src/crypto/engine/eng_cryptodev.c
@@ -32,7 +32,7 @@
32#include <openssl/bn.h> 32#include <openssl/bn.h>
33 33
34#if (defined(__unix__) || defined(unix)) && !defined(USG) && \ 34#if (defined(__unix__) || defined(unix)) && !defined(USG) && \
35 (defined(OpenBSD) || defined(__FreeBSD_version)) 35 (defined(OpenBSD) || defined(__FreeBSD__))
36#include <sys/param.h> 36#include <sys/param.h>
37# if (OpenBSD >= 200112) || ((__FreeBSD_version >= 470101 && __FreeBSD_version < 500000) || __FreeBSD_version >= 500041) 37# if (OpenBSD >= 200112) || ((__FreeBSD_version >= 470101 && __FreeBSD_version < 500000) || __FreeBSD_version >= 500041)
38# define HAVE_CRYPTODEV 38# define HAVE_CRYPTODEV
@@ -55,6 +55,10 @@ ENGINE_load_cryptodev(void)
55 55
56#include <sys/types.h> 56#include <sys/types.h>
57#include <crypto/cryptodev.h> 57#include <crypto/cryptodev.h>
58#include <crypto/dh/dh.h>
59#include <crypto/dsa/dsa.h>
60#include <crypto/err/err.h>
61#include <crypto/rsa/rsa.h>
58#include <sys/ioctl.h> 62#include <sys/ioctl.h>
59#include <errno.h> 63#include <errno.h>
60#include <stdio.h> 64#include <stdio.h>
@@ -68,6 +72,16 @@ ENGINE_load_cryptodev(void)
68struct dev_crypto_state { 72struct dev_crypto_state {
69 struct session_op d_sess; 73 struct session_op d_sess;
70 int d_fd; 74 int d_fd;
75
76#ifdef USE_CRYPTODEV_DIGESTS
77 char dummy_mac_key[HASH_MAX_LEN];
78
79 unsigned char digest_res[HASH_MAX_LEN];
80 char *mac_data;
81 int mac_len;
82
83 int copy;
84#endif
71}; 85};
72 86
73static u_int32_t cryptodev_asymfeat = 0; 87static u_int32_t cryptodev_asymfeat = 0;
@@ -75,15 +89,14 @@ static u_int32_t cryptodev_asymfeat = 0;
75static int get_asym_dev_crypto(void); 89static int get_asym_dev_crypto(void);
76static int open_dev_crypto(void); 90static int open_dev_crypto(void);
77static int get_dev_crypto(void); 91static int get_dev_crypto(void);
78static int cryptodev_max_iv(int cipher);
79static int cryptodev_key_length_valid(int cipher, int len);
80static int cipher_nid_to_cryptodev(int nid);
81static int get_cryptodev_ciphers(const int **cnids); 92static int get_cryptodev_ciphers(const int **cnids);
93#ifdef USE_CRYPTODEV_DIGESTS
82static int get_cryptodev_digests(const int **cnids); 94static int get_cryptodev_digests(const int **cnids);
95#endif
83static int cryptodev_usable_ciphers(const int **nids); 96static int cryptodev_usable_ciphers(const int **nids);
84static int cryptodev_usable_digests(const int **nids); 97static int cryptodev_usable_digests(const int **nids);
85static int cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 98static int cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
86 const unsigned char *in, unsigned int inl); 99 const unsigned char *in, size_t inl);
87static int cryptodev_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 100static int cryptodev_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
88 const unsigned char *iv, int enc); 101 const unsigned char *iv, int enc);
89static int cryptodev_cleanup(EVP_CIPHER_CTX *ctx); 102static int cryptodev_cleanup(EVP_CIPHER_CTX *ctx);
@@ -100,7 +113,7 @@ static int cryptodev_asym(struct crypt_kop *kop, int rlen, BIGNUM *r,
100static int cryptodev_bn_mod_exp(BIGNUM *r, const BIGNUM *a, 113static int cryptodev_bn_mod_exp(BIGNUM *r, const BIGNUM *a,
101 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 114 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
102static int cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I, 115static int cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I,
103 RSA *rsa); 116 RSA *rsa, BN_CTX *ctx);
104static int cryptodev_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx); 117static int cryptodev_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx);
105static int cryptodev_dsa_bn_mod_exp(DSA *dsa, BIGNUM *r, BIGNUM *a, 118static int cryptodev_dsa_bn_mod_exp(DSA *dsa, BIGNUM *r, BIGNUM *a,
106 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx); 119 const BIGNUM *p, const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
@@ -117,7 +130,7 @@ static int cryptodev_mod_exp_dh(const DH *dh, BIGNUM *r, const BIGNUM *a,
117static int cryptodev_dh_compute_key(unsigned char *key, 130static int cryptodev_dh_compute_key(unsigned char *key,
118 const BIGNUM *pub_key, DH *dh); 131 const BIGNUM *pub_key, DH *dh);
119static int cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p, 132static int cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p,
120 void (*f)()); 133 void (*f)(void));
121void ENGINE_load_cryptodev(void); 134void ENGINE_load_cryptodev(void);
122 135
123static const ENGINE_CMD_DEFN cryptodev_defns[] = { 136static const ENGINE_CMD_DEFN cryptodev_defns[] = {
@@ -130,27 +143,34 @@ static struct {
130 int ivmax; 143 int ivmax;
131 int keylen; 144 int keylen;
132} ciphers[] = { 145} ciphers[] = {
146 { CRYPTO_ARC4, NID_rc4, 0, 16, },
133 { CRYPTO_DES_CBC, NID_des_cbc, 8, 8, }, 147 { CRYPTO_DES_CBC, NID_des_cbc, 8, 8, },
134 { CRYPTO_3DES_CBC, NID_des_ede3_cbc, 8, 24, }, 148 { CRYPTO_3DES_CBC, NID_des_ede3_cbc, 8, 24, },
135 { CRYPTO_AES_CBC, NID_aes_128_cbc, 16, 16, }, 149 { CRYPTO_AES_CBC, NID_aes_128_cbc, 16, 16, },
150 { CRYPTO_AES_CBC, NID_aes_192_cbc, 16, 24, },
151 { CRYPTO_AES_CBC, NID_aes_256_cbc, 16, 32, },
136 { CRYPTO_BLF_CBC, NID_bf_cbc, 8, 16, }, 152 { CRYPTO_BLF_CBC, NID_bf_cbc, 8, 16, },
137 { CRYPTO_CAST_CBC, NID_cast5_cbc, 8, 16, }, 153 { CRYPTO_CAST_CBC, NID_cast5_cbc, 8, 16, },
138 { CRYPTO_SKIPJACK_CBC, NID_undef, 0, 0, }, 154 { CRYPTO_SKIPJACK_CBC, NID_undef, 0, 0, },
139 { 0, NID_undef, 0, 0, }, 155 { 0, NID_undef, 0, 0, },
140}; 156};
141 157
158#ifdef USE_CRYPTODEV_DIGESTS
142static struct { 159static struct {
143 int id; 160 int id;
144 int nid; 161 int nid;
162 int keylen;
145} digests[] = { 163} digests[] = {
146 { CRYPTO_SHA1_HMAC, NID_hmacWithSHA1, }, 164 { CRYPTO_MD5_HMAC, NID_hmacWithMD5, 16},
147 { CRYPTO_RIPEMD160_HMAC, NID_ripemd160, }, 165 { CRYPTO_SHA1_HMAC, NID_hmacWithSHA1, 20},
148 { CRYPTO_MD5_KPDK, NID_undef, }, 166 { CRYPTO_RIPEMD160_HMAC, NID_ripemd160, 16/*?*/},
149 { CRYPTO_SHA1_KPDK, NID_undef, }, 167 { CRYPTO_MD5_KPDK, NID_undef, 0},
150 { CRYPTO_MD5, NID_md5, }, 168 { CRYPTO_SHA1_KPDK, NID_undef, 0},
151 { CRYPTO_SHA1, NID_undef, }, 169 { CRYPTO_MD5, NID_md5, 16},
152 { 0, NID_undef, }, 170 { CRYPTO_SHA1, NID_sha1, 20},
171 { 0, NID_undef, 0},
153}; 172};
173#endif
154 174
155/* 175/*
156 * Return a fd if /dev/crypto seems usable, 0 otherwise. 176 * Return a fd if /dev/crypto seems usable, 0 otherwise.
@@ -203,50 +223,6 @@ get_asym_dev_crypto(void)
203} 223}
204 224
205/* 225/*
206 * XXXX this needs to be set for each alg - and determined from
207 * a running card.
208 */
209static int
210cryptodev_max_iv(int cipher)
211{
212 int i;
213
214 for (i = 0; ciphers[i].id; i++)
215 if (ciphers[i].id == cipher)
216 return (ciphers[i].ivmax);
217 return (0);
218}
219
220/*
221 * XXXX this needs to be set for each alg - and determined from
222 * a running card. For now, fake it out - but most of these
223 * for real devices should return 1 for the supported key
224 * sizes the device can handle.
225 */
226static int
227cryptodev_key_length_valid(int cipher, int len)
228{
229 int i;
230
231 for (i = 0; ciphers[i].id; i++)
232 if (ciphers[i].id == cipher)
233 return (ciphers[i].keylen == len);
234 return (0);
235}
236
237/* convert libcrypto nids to cryptodev */
238static int
239cipher_nid_to_cryptodev(int nid)
240{
241 int i;
242
243 for (i = 0; ciphers[i].id; i++)
244 if (ciphers[i].nid == nid)
245 return (ciphers[i].id);
246 return (0);
247}
248
249/*
250 * Find out what ciphers /dev/crypto will let us have a session for. 226 * Find out what ciphers /dev/crypto will let us have a session for.
251 * XXX note, that some of these openssl doesn't deal with yet! 227 * XXX note, that some of these openssl doesn't deal with yet!
252 * returning them here is harmless, as long as we return NULL 228 * returning them here is harmless, as long as we return NULL
@@ -264,7 +240,7 @@ get_cryptodev_ciphers(const int **cnids)
264 return (0); 240 return (0);
265 } 241 }
266 memset(&sess, 0, sizeof(sess)); 242 memset(&sess, 0, sizeof(sess));
267 sess.key = (caddr_t)"123456781234567812345678"; 243 sess.key = (caddr_t)"123456789abcdefghijklmno";
268 244
269 for (i = 0; ciphers[i].id && count < CRYPTO_ALGORITHM_MAX; i++) { 245 for (i = 0; ciphers[i].id && count < CRYPTO_ALGORITHM_MAX; i++) {
270 if (ciphers[i].nid == NID_undef) 246 if (ciphers[i].nid == NID_undef)
@@ -285,6 +261,7 @@ get_cryptodev_ciphers(const int **cnids)
285 return (count); 261 return (count);
286} 262}
287 263
264#ifdef USE_CRYPTODEV_DIGESTS
288/* 265/*
289 * Find out what digests /dev/crypto will let us have a session for. 266 * Find out what digests /dev/crypto will let us have a session for.
290 * XXX note, that some of these openssl doesn't deal with yet! 267 * XXX note, that some of these openssl doesn't deal with yet!
@@ -303,10 +280,12 @@ get_cryptodev_digests(const int **cnids)
303 return (0); 280 return (0);
304 } 281 }
305 memset(&sess, 0, sizeof(sess)); 282 memset(&sess, 0, sizeof(sess));
283 sess.mackey = (caddr_t)"123456789abcdefghijklmno";
306 for (i = 0; digests[i].id && count < CRYPTO_ALGORITHM_MAX; i++) { 284 for (i = 0; digests[i].id && count < CRYPTO_ALGORITHM_MAX; i++) {
307 if (digests[i].nid == NID_undef) 285 if (digests[i].nid == NID_undef)
308 continue; 286 continue;
309 sess.mac = digests[i].id; 287 sess.mac = digests[i].id;
288 sess.mackeylen = digests[i].keylen;
310 sess.cipher = 0; 289 sess.cipher = 0;
311 if (ioctl(fd, CIOCGSESSION, &sess) != -1 && 290 if (ioctl(fd, CIOCGSESSION, &sess) != -1 &&
312 ioctl(fd, CIOCFSESSION, &sess.ses) != -1) 291 ioctl(fd, CIOCFSESSION, &sess.ses) != -1)
@@ -320,6 +299,7 @@ get_cryptodev_digests(const int **cnids)
320 *cnids = NULL; 299 *cnids = NULL;
321 return (count); 300 return (count);
322} 301}
302#endif /* 0 */
323 303
324/* 304/*
325 * Find the useable ciphers|digests from dev/crypto - this is the first 305 * Find the useable ciphers|digests from dev/crypto - this is the first
@@ -351,6 +331,9 @@ cryptodev_usable_ciphers(const int **nids)
351static int 331static int
352cryptodev_usable_digests(const int **nids) 332cryptodev_usable_digests(const int **nids)
353{ 333{
334#ifdef USE_CRYPTODEV_DIGESTS
335 return (get_cryptodev_digests(nids));
336#else
354 /* 337 /*
355 * XXXX just disable all digests for now, because it sucks. 338 * XXXX just disable all digests for now, because it sucks.
356 * we need a better way to decide this - i.e. I may not 339 * we need a better way to decide this - i.e. I may not
@@ -365,16 +348,17 @@ cryptodev_usable_digests(const int **nids)
365 */ 348 */
366 *nids = NULL; 349 *nids = NULL;
367 return (0); 350 return (0);
351#endif
368} 352}
369 353
370static int 354static int
371cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 355cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
372 const unsigned char *in, unsigned int inl) 356 const unsigned char *in, size_t inl)
373{ 357{
374 struct crypt_op cryp; 358 struct crypt_op cryp;
375 struct dev_crypto_state *state = ctx->cipher_data; 359 struct dev_crypto_state *state = ctx->cipher_data;
376 struct session_op *sess = &state->d_sess; 360 struct session_op *sess = &state->d_sess;
377 void *iiv; 361 const void *iiv;
378 unsigned char save_iv[EVP_MAX_IV_LENGTH]; 362 unsigned char save_iv[EVP_MAX_IV_LENGTH];
379 363
380 if (state->d_fd < 0) 364 if (state->d_fd < 0)
@@ -398,7 +382,7 @@ cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
398 if (ctx->cipher->iv_len) { 382 if (ctx->cipher->iv_len) {
399 cryp.iv = (caddr_t) ctx->iv; 383 cryp.iv = (caddr_t) ctx->iv;
400 if (!ctx->encrypt) { 384 if (!ctx->encrypt) {
401 iiv = (void *) in + inl - ctx->cipher->iv_len; 385 iiv = in + inl - ctx->cipher->iv_len;
402 memcpy(save_iv, iiv, ctx->cipher->iv_len); 386 memcpy(save_iv, iiv, ctx->cipher->iv_len);
403 } 387 }
404 } else 388 } else
@@ -413,7 +397,7 @@ cryptodev_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
413 397
414 if (ctx->cipher->iv_len) { 398 if (ctx->cipher->iv_len) {
415 if (ctx->encrypt) 399 if (ctx->encrypt)
416 iiv = (void *) out + inl - ctx->cipher->iv_len; 400 iiv = out + inl - ctx->cipher->iv_len;
417 else 401 else
418 iiv = save_iv; 402 iiv = save_iv;
419 memcpy(ctx->iv, iiv, ctx->cipher->iv_len); 403 memcpy(ctx->iv, iiv, ctx->cipher->iv_len);
@@ -427,23 +411,27 @@ cryptodev_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
427{ 411{
428 struct dev_crypto_state *state = ctx->cipher_data; 412 struct dev_crypto_state *state = ctx->cipher_data;
429 struct session_op *sess = &state->d_sess; 413 struct session_op *sess = &state->d_sess;
430 int cipher; 414 int cipher = -1, i;
431 415
432 if ((cipher = cipher_nid_to_cryptodev(ctx->cipher->nid)) == NID_undef) 416 for (i = 0; ciphers[i].id; i++)
433 return (0); 417 if (ctx->cipher->nid == ciphers[i].nid &&
434 418 ctx->cipher->iv_len <= ciphers[i].ivmax &&
435 if (ctx->cipher->iv_len > cryptodev_max_iv(cipher)) 419 ctx->key_len == ciphers[i].keylen) {
436 return (0); 420 cipher = ciphers[i].id;
421 break;
422 }
437 423
438 if (!cryptodev_key_length_valid(cipher, ctx->key_len)) 424 if (!ciphers[i].id) {
425 state->d_fd = -1;
439 return (0); 426 return (0);
427 }
440 428
441 memset(sess, 0, sizeof(struct session_op)); 429 memset(sess, 0, sizeof(struct session_op));
442 430
443 if ((state->d_fd = get_dev_crypto()) < 0) 431 if ((state->d_fd = get_dev_crypto()) < 0)
444 return (0); 432 return (0);
445 433
446 sess->key = (unsigned char *)key; 434 sess->key = (caddr_t)key;
447 sess->keylen = ctx->key_len; 435 sess->keylen = ctx->key_len;
448 sess->cipher = cipher; 436 sess->cipher = cipher;
449 437
@@ -496,6 +484,20 @@ cryptodev_cleanup(EVP_CIPHER_CTX *ctx)
496 * gets called when libcrypto requests a cipher NID. 484 * gets called when libcrypto requests a cipher NID.
497 */ 485 */
498 486
487/* RC4 */
488const EVP_CIPHER cryptodev_rc4 = {
489 NID_rc4,
490 1, 16, 0,
491 EVP_CIPH_VARIABLE_LENGTH,
492 cryptodev_init_key,
493 cryptodev_cipher,
494 cryptodev_cleanup,
495 sizeof(struct dev_crypto_state),
496 NULL,
497 NULL,
498 NULL
499};
500
499/* DES CBC EVP */ 501/* DES CBC EVP */
500const EVP_CIPHER cryptodev_des_cbc = { 502const EVP_CIPHER cryptodev_des_cbc = {
501 NID_des_cbc, 503 NID_des_cbc,
@@ -563,6 +565,32 @@ const EVP_CIPHER cryptodev_aes_cbc = {
563 NULL 565 NULL
564}; 566};
565 567
568const EVP_CIPHER cryptodev_aes_192_cbc = {
569 NID_aes_192_cbc,
570 16, 24, 16,
571 EVP_CIPH_CBC_MODE,
572 cryptodev_init_key,
573 cryptodev_cipher,
574 cryptodev_cleanup,
575 sizeof(struct dev_crypto_state),
576 EVP_CIPHER_set_asn1_iv,
577 EVP_CIPHER_get_asn1_iv,
578 NULL
579};
580
581const EVP_CIPHER cryptodev_aes_256_cbc = {
582 NID_aes_256_cbc,
583 16, 32, 16,
584 EVP_CIPH_CBC_MODE,
585 cryptodev_init_key,
586 cryptodev_cipher,
587 cryptodev_cleanup,
588 sizeof(struct dev_crypto_state),
589 EVP_CIPHER_set_asn1_iv,
590 EVP_CIPHER_get_asn1_iv,
591 NULL
592};
593
566/* 594/*
567 * Registered by the ENGINE when used to find out how to deal with 595 * Registered by the ENGINE when used to find out how to deal with
568 * a particular NID in the ENGINE. this says what we'll do at the 596 * a particular NID in the ENGINE. this says what we'll do at the
@@ -576,6 +604,9 @@ cryptodev_engine_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
576 return (cryptodev_usable_ciphers(nids)); 604 return (cryptodev_usable_ciphers(nids));
577 605
578 switch (nid) { 606 switch (nid) {
607 case NID_rc4:
608 *cipher = &cryptodev_rc4;
609 break;
579 case NID_des_ede3_cbc: 610 case NID_des_ede3_cbc:
580 *cipher = &cryptodev_3des_cbc; 611 *cipher = &cryptodev_3des_cbc;
581 break; 612 break;
@@ -591,6 +622,12 @@ cryptodev_engine_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
591 case NID_aes_128_cbc: 622 case NID_aes_128_cbc:
592 *cipher = &cryptodev_aes_cbc; 623 *cipher = &cryptodev_aes_cbc;
593 break; 624 break;
625 case NID_aes_192_cbc:
626 *cipher = &cryptodev_aes_192_cbc;
627 break;
628 case NID_aes_256_cbc:
629 *cipher = &cryptodev_aes_256_cbc;
630 break;
594 default: 631 default:
595 *cipher = NULL; 632 *cipher = NULL;
596 break; 633 break;
@@ -598,6 +635,234 @@ cryptodev_engine_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
598 return (*cipher != NULL); 635 return (*cipher != NULL);
599} 636}
600 637
638
639#ifdef USE_CRYPTODEV_DIGESTS
640
641/* convert digest type to cryptodev */
642static int
643digest_nid_to_cryptodev(int nid)
644{
645 int i;
646
647 for (i = 0; digests[i].id; i++)
648 if (digests[i].nid == nid)
649 return (digests[i].id);
650 return (0);
651}
652
653
654static int
655digest_key_length(int nid)
656{
657 int i;
658
659 for (i = 0; digests[i].id; i++)
660 if (digests[i].nid == nid)
661 return digests[i].keylen;
662 return (0);
663}
664
665
666static int cryptodev_digest_init(EVP_MD_CTX *ctx)
667{
668 struct dev_crypto_state *state = ctx->md_data;
669 struct session_op *sess = &state->d_sess;
670 int digest;
671
672 if ((digest = digest_nid_to_cryptodev(ctx->digest->type)) == NID_undef){
673 printf("cryptodev_digest_init: Can't get digest \n");
674 return (0);
675 }
676
677 memset(state, 0, sizeof(struct dev_crypto_state));
678
679 if ((state->d_fd = get_dev_crypto()) < 0) {
680 printf("cryptodev_digest_init: Can't get Dev \n");
681 return (0);
682 }
683
684 sess->mackey = state->dummy_mac_key;
685 sess->mackeylen = digest_key_length(ctx->digest->type);
686 sess->mac = digest;
687
688 if (ioctl(state->d_fd, CIOCGSESSION, sess) < 0) {
689 close(state->d_fd);
690 state->d_fd = -1;
691 printf("cryptodev_digest_init: Open session failed\n");
692 return (0);
693 }
694
695 return (1);
696}
697
698static int cryptodev_digest_update(EVP_MD_CTX *ctx, const void *data,
699 size_t count)
700{
701 struct crypt_op cryp;
702 struct dev_crypto_state *state = ctx->md_data;
703 struct session_op *sess = &state->d_sess;
704
705 if (!data || state->d_fd < 0) {
706 printf("cryptodev_digest_update: illegal inputs \n");
707 return (0);
708 }
709
710 if (!count) {
711 return (0);
712 }
713
714 if (!(ctx->flags & EVP_MD_CTX_FLAG_ONESHOT)) {
715 /* if application doesn't support one buffer */
716 state->mac_data = OPENSSL_realloc(state->mac_data, state->mac_len + count);
717
718 if (!state->mac_data) {
719 printf("cryptodev_digest_update: realloc failed\n");
720 return (0);
721 }
722
723 memcpy(state->mac_data + state->mac_len, data, count);
724 state->mac_len += count;
725
726 return (1);
727 }
728
729 memset(&cryp, 0, sizeof(cryp));
730
731 cryp.ses = sess->ses;
732 cryp.flags = 0;
733 cryp.len = count;
734 cryp.src = (caddr_t) data;
735 cryp.dst = NULL;
736 cryp.mac = (caddr_t) state->digest_res;
737 if (ioctl(state->d_fd, CIOCCRYPT, &cryp) < 0) {
738 printf("cryptodev_digest_update: digest failed\n");
739 return (0);
740 }
741 return (1);
742}
743
744
745static int cryptodev_digest_final(EVP_MD_CTX *ctx, unsigned char *md)
746{
747 struct crypt_op cryp;
748 struct dev_crypto_state *state = ctx->md_data;
749 struct session_op *sess = &state->d_sess;
750
751 int ret = 1;
752
753 if (!md || state->d_fd < 0) {
754 printf("cryptodev_digest_final: illegal input\n");
755 return(0);
756 }
757
758 if (! (ctx->flags & EVP_MD_CTX_FLAG_ONESHOT) ) {
759 /* if application doesn't support one buffer */
760 memset(&cryp, 0, sizeof(cryp));
761
762 cryp.ses = sess->ses;
763 cryp.flags = 0;
764 cryp.len = state->mac_len;
765 cryp.src = state->mac_data;
766 cryp.dst = NULL;
767 cryp.mac = (caddr_t)md;
768
769 if (ioctl(state->d_fd, CIOCCRYPT, &cryp) < 0) {
770 printf("cryptodev_digest_final: digest failed\n");
771 return (0);
772 }
773
774 return 1;
775 }
776
777 memcpy(md, state->digest_res, ctx->digest->md_size);
778
779 return (ret);
780}
781
782
783static int cryptodev_digest_cleanup(EVP_MD_CTX *ctx)
784{
785 int ret = 1;
786 struct dev_crypto_state *state = ctx->md_data;
787 struct session_op *sess = &state->d_sess;
788
789 if (state->d_fd < 0) {
790 printf("cryptodev_digest_cleanup: illegal input\n");
791 return (0);
792 }
793
794 if (state->mac_data) {
795 OPENSSL_free(state->mac_data);
796 state->mac_data = NULL;
797 state->mac_len = 0;
798 }
799
800 if (state->copy)
801 return 1;
802
803 if (ioctl(state->d_fd, CIOCFSESSION, &sess->ses) < 0) {
804 printf("cryptodev_digest_cleanup: failed to close session\n");
805 ret = 0;
806 } else {
807 ret = 1;
808 }
809 close(state->d_fd);
810 state->d_fd = -1;
811
812 return (ret);
813}
814
815static int cryptodev_digest_copy(EVP_MD_CTX *to,const EVP_MD_CTX *from)
816{
817 struct dev_crypto_state *fstate = from->md_data;
818 struct dev_crypto_state *dstate = to->md_data;
819
820 memcpy(dstate, fstate, sizeof(struct dev_crypto_state));
821
822 if (fstate->mac_len != 0) {
823 dstate->mac_data = OPENSSL_malloc(fstate->mac_len);
824 memcpy(dstate->mac_data, fstate->mac_data, fstate->mac_len);
825 }
826
827 dstate->copy = 1;
828
829 return 1;
830}
831
832
833const EVP_MD cryptodev_sha1 = {
834 NID_sha1,
835 NID_undef,
836 SHA_DIGEST_LENGTH,
837 EVP_MD_FLAG_ONESHOT,
838 cryptodev_digest_init,
839 cryptodev_digest_update,
840 cryptodev_digest_final,
841 cryptodev_digest_copy,
842 cryptodev_digest_cleanup,
843 EVP_PKEY_NULL_method,
844 SHA_CBLOCK,
845 sizeof(struct dev_crypto_state),
846};
847
848const EVP_MD cryptodev_md5 = {
849 NID_md5,
850 NID_undef,
851 16 /* MD5_DIGEST_LENGTH */,
852 EVP_MD_FLAG_ONESHOT,
853 cryptodev_digest_init,
854 cryptodev_digest_update,
855 cryptodev_digest_final,
856 cryptodev_digest_copy,
857 cryptodev_digest_cleanup,
858 EVP_PKEY_NULL_method,
859 64 /* MD5_CBLOCK */,
860 sizeof(struct dev_crypto_state),
861};
862
863#endif /* USE_CRYPTODEV_DIGESTS */
864
865
601static int 866static int
602cryptodev_engine_digests(ENGINE *e, const EVP_MD **digest, 867cryptodev_engine_digests(ENGINE *e, const EVP_MD **digest,
603 const int **nids, int nid) 868 const int **nids, int nid)
@@ -606,10 +871,15 @@ cryptodev_engine_digests(ENGINE *e, const EVP_MD **digest,
606 return (cryptodev_usable_digests(nids)); 871 return (cryptodev_usable_digests(nids));
607 872
608 switch (nid) { 873 switch (nid) {
874#ifdef USE_CRYPTODEV_DIGESTS
609 case NID_md5: 875 case NID_md5:
610 *digest = NULL; /* need to make a clean md5 critter */ 876 *digest = &cryptodev_md5;
611 break; 877 break;
878 case NID_sha1:
879 *digest = &cryptodev_sha1;
880 break;
612 default: 881 default:
882#endif /* USE_CRYPTODEV_DIGESTS */
613 *digest = NULL; 883 *digest = NULL;
614 break; 884 break;
615 } 885 }
@@ -625,7 +895,7 @@ static int
625bn2crparam(const BIGNUM *a, struct crparam *crp) 895bn2crparam(const BIGNUM *a, struct crparam *crp)
626{ 896{
627 int i, j, k; 897 int i, j, k;
628 ssize_t words, bytes, bits; 898 ssize_t bytes, bits;
629 u_char *b; 899 u_char *b;
630 900
631 crp->crp_p = NULL; 901 crp->crp_p = NULL;
@@ -637,8 +907,9 @@ bn2crparam(const BIGNUM *a, struct crparam *crp)
637 b = malloc(bytes); 907 b = malloc(bytes);
638 if (b == NULL) 908 if (b == NULL)
639 return (1); 909 return (1);
910 memset(b, 0, bytes);
640 911
641 crp->crp_p = b; 912 crp->crp_p = (caddr_t) b;
642 crp->crp_nbits = bits; 913 crp->crp_nbits = bits;
643 914
644 for (i = 0, j = 0; i < a->top; i++) { 915 for (i = 0, j = 0; i < a->top; i++) {
@@ -681,7 +952,7 @@ zapparams(struct crypt_kop *kop)
681{ 952{
682 int i; 953 int i;
683 954
684 for (i = 0; i <= kop->crk_iparams + kop->crk_oparams; i++) { 955 for (i = 0; i < kop->crk_iparams + kop->crk_oparams; i++) {
685 if (kop->crk_param[i].crp_p) 956 if (kop->crk_param[i].crp_p)
686 free(kop->crk_param[i].crp_p); 957 free(kop->crk_param[i].crp_p);
687 kop->crk_param[i].crp_p = NULL; 958 kop->crk_param[i].crp_p = NULL;
@@ -746,21 +1017,27 @@ cryptodev_bn_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
746 goto err; 1017 goto err;
747 kop.crk_iparams = 3; 1018 kop.crk_iparams = 3;
748 1019
749 if (cryptodev_asym(&kop, BN_num_bytes(m), r, 0, NULL) == -1) { 1020 if (cryptodev_asym(&kop, BN_num_bytes(m), r, 0, NULL)) {
1021 const RSA_METHOD *meth = RSA_PKCS1_SSLeay();
1022 printf("OCF asym process failed, Running in software\n");
1023 ret = meth->bn_mod_exp(r, a, p, m, ctx, in_mont);
1024
1025 } else if (ECANCELED == kop.crk_status) {
750 const RSA_METHOD *meth = RSA_PKCS1_SSLeay(); 1026 const RSA_METHOD *meth = RSA_PKCS1_SSLeay();
1027 printf("OCF hardware operation cancelled. Running in Software\n");
751 ret = meth->bn_mod_exp(r, a, p, m, ctx, in_mont); 1028 ret = meth->bn_mod_exp(r, a, p, m, ctx, in_mont);
752 } 1029 }
1030 /* else cryptodev operation worked ok ==> ret = 1*/
1031
753err: 1032err:
754 zapparams(&kop); 1033 zapparams(&kop);
755 return (ret); 1034 return (ret);
756} 1035}
757 1036
758static int 1037static int
759cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa) 1038cryptodev_rsa_nocrt_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
760{ 1039{
761 int r; 1040 int r;
762 BN_CTX *ctx;
763
764 ctx = BN_CTX_new(); 1041 ctx = BN_CTX_new();
765 r = cryptodev_bn_mod_exp(r0, I, rsa->d, rsa->n, ctx, NULL); 1042 r = cryptodev_bn_mod_exp(r0, I, rsa->d, rsa->n, ctx, NULL);
766 BN_CTX_free(ctx); 1043 BN_CTX_free(ctx);
@@ -795,10 +1072,18 @@ cryptodev_rsa_mod_exp(BIGNUM *r0, const BIGNUM *I, RSA *rsa, BN_CTX *ctx)
795 goto err; 1072 goto err;
796 kop.crk_iparams = 6; 1073 kop.crk_iparams = 6;
797 1074
798 if (cryptodev_asym(&kop, BN_num_bytes(rsa->n), r0, 0, NULL) == -1) { 1075 if (cryptodev_asym(&kop, BN_num_bytes(rsa->n), r0, 0, NULL)) {
1076 const RSA_METHOD *meth = RSA_PKCS1_SSLeay();
1077 printf("OCF asym process failed, running in Software\n");
1078 ret = (*meth->rsa_mod_exp)(r0, I, rsa, ctx);
1079
1080 } else if (ECANCELED == kop.crk_status) {
799 const RSA_METHOD *meth = RSA_PKCS1_SSLeay(); 1081 const RSA_METHOD *meth = RSA_PKCS1_SSLeay();
1082 printf("OCF hardware operation cancelled. Running in Software\n");
800 ret = (*meth->rsa_mod_exp)(r0, I, rsa, ctx); 1083 ret = (*meth->rsa_mod_exp)(r0, I, rsa, ctx);
801 } 1084 }
1085 /* else cryptodev operation worked ok ==> ret = 1*/
1086
802err: 1087err:
803 zapparams(&kop); 1088 zapparams(&kop);
804 return (ret); 1089 return (ret);
@@ -934,7 +1219,8 @@ cryptodev_dsa_verify(const unsigned char *dgst, int dlen,
934 kop.crk_iparams = 7; 1219 kop.crk_iparams = 7;
935 1220
936 if (cryptodev_asym(&kop, 0, NULL, 0, NULL) == 0) { 1221 if (cryptodev_asym(&kop, 0, NULL, 0, NULL) == 0) {
937 dsaret = kop.crk_status; 1222/*OCF success value is 0, if not zero, change dsaret to fail*/
1223 if(0 != kop.crk_status) dsaret = 0;
938 } else { 1224 } else {
939 const DSA_METHOD *meth = DSA_OpenSSL(); 1225 const DSA_METHOD *meth = DSA_OpenSSL();
940 1226
@@ -994,7 +1280,7 @@ cryptodev_dh_compute_key(unsigned char *key, const BIGNUM *pub_key, DH *dh)
994 goto err; 1280 goto err;
995 kop.crk_iparams = 3; 1281 kop.crk_iparams = 3;
996 1282
997 kop.crk_param[3].crp_p = key; 1283 kop.crk_param[3].crp_p = (caddr_t) key;
998 kop.crk_param[3].crp_nbits = keylen * 8; 1284 kop.crk_param[3].crp_nbits = keylen * 8;
999 kop.crk_oparams = 1; 1285 kop.crk_oparams = 1;
1000 1286
@@ -1025,7 +1311,7 @@ static DH_METHOD cryptodev_dh = {
1025 * but I expect we'll want some options soon. 1311 * but I expect we'll want some options soon.
1026 */ 1312 */
1027static int 1313static int
1028cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)()) 1314cryptodev_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)(void))
1029{ 1315{
1030#ifdef HAVE_SYSLOG_R 1316#ifdef HAVE_SYSLOG_R
1031 struct syslog_data sd = SYSLOG_DATA_INIT; 1317 struct syslog_data sd = SYSLOG_DATA_INIT;
diff --git a/src/lib/libssl/src/crypto/engine/eng_ctrl.c b/src/lib/libssl/src/crypto/engine/eng_ctrl.c
index 95b6b455aa..5ce25d92ec 100644
--- a/src/lib/libssl/src/crypto/engine/eng_ctrl.c
+++ b/src/lib/libssl/src/crypto/engine/eng_ctrl.c
@@ -280,7 +280,7 @@ int ENGINE_ctrl_cmd(ENGINE *e, const char *cmd_name,
280 } 280 }
281 /* Force the result of the control command to 0 or 1, for the reasons 281 /* Force the result of the control command to 0 or 1, for the reasons
282 * mentioned before. */ 282 * mentioned before. */
283 if (ENGINE_ctrl(e, num, i, p, f)) 283 if (ENGINE_ctrl(e, num, i, p, f) > 0)
284 return 1; 284 return 1;
285 return 0; 285 return 0;
286 } 286 }
@@ -345,7 +345,7 @@ int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg,
345 * usage of these commands is consistent across applications and 345 * usage of these commands is consistent across applications and
346 * that certain applications don't understand it one way, and 346 * that certain applications don't understand it one way, and
347 * others another. */ 347 * others another. */
348 if(ENGINE_ctrl(e, num, 0, (void *)arg, NULL)) 348 if(ENGINE_ctrl(e, num, 0, (void *)arg, NULL) > 0)
349 return 1; 349 return 1;
350 return 0; 350 return 0;
351 } 351 }
@@ -360,7 +360,7 @@ int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg,
360 if(flags & ENGINE_CMD_FLAG_STRING) 360 if(flags & ENGINE_CMD_FLAG_STRING)
361 { 361 {
362 /* Same explanation as above */ 362 /* Same explanation as above */
363 if(ENGINE_ctrl(e, num, 0, (void *)arg, NULL)) 363 if(ENGINE_ctrl(e, num, 0, (void *)arg, NULL) > 0)
364 return 1; 364 return 1;
365 return 0; 365 return 0;
366 } 366 }
@@ -383,7 +383,7 @@ int ENGINE_ctrl_cmd_string(ENGINE *e, const char *cmd_name, const char *arg,
383 } 383 }
384 /* Force the result of the control command to 0 or 1, for the reasons 384 /* Force the result of the control command to 0 or 1, for the reasons
385 * mentioned before. */ 385 * mentioned before. */
386 if(ENGINE_ctrl(e, num, l, NULL, NULL)) 386 if(ENGINE_ctrl(e, num, l, NULL, NULL) > 0)
387 return 1; 387 return 1;
388 return 0; 388 return 0;
389 } 389 }
diff --git a/src/lib/libssl/src/crypto/engine/eng_dyn.c b/src/lib/libssl/src/crypto/engine/eng_dyn.c
index acb30c34d8..807da7a5eb 100644
--- a/src/lib/libssl/src/crypto/engine/eng_dyn.c
+++ b/src/lib/libssl/src/crypto/engine/eng_dyn.c
@@ -146,14 +146,14 @@ struct st_dynamic_data_ctx
146 * 'dirs' for loading. Default is to use 'dirs' as a fallback. */ 146 * 'dirs' for loading. Default is to use 'dirs' as a fallback. */
147 int dir_load; 147 int dir_load;
148 /* A stack of directories from which ENGINEs could be loaded */ 148 /* A stack of directories from which ENGINEs could be loaded */
149 STACK *dirs; 149 STACK_OF(OPENSSL_STRING) *dirs;
150 }; 150 };
151 151
152/* This is the "ex_data" index we obtain and reserve for use with our context 152/* This is the "ex_data" index we obtain and reserve for use with our context
153 * structure. */ 153 * structure. */
154static int dynamic_ex_data_idx = -1; 154static int dynamic_ex_data_idx = -1;
155 155
156static void int_free_str(void *s) { OPENSSL_free(s); } 156static void int_free_str(char *s) { OPENSSL_free(s); }
157/* Because our ex_data element may or may not get allocated depending on whether 157/* Because our ex_data element may or may not get allocated depending on whether
158 * a "first-use" occurs before the ENGINE is freed, we have a memory leak 158 * a "first-use" occurs before the ENGINE is freed, we have a memory leak
159 * problem to solve. We can't declare a "new" handler for the ex_data as we 159 * problem to solve. We can't declare a "new" handler for the ex_data as we
@@ -174,7 +174,7 @@ static void dynamic_data_ctx_free_func(void *parent, void *ptr,
174 if(ctx->engine_id) 174 if(ctx->engine_id)
175 OPENSSL_free((void*)ctx->engine_id); 175 OPENSSL_free((void*)ctx->engine_id);
176 if(ctx->dirs) 176 if(ctx->dirs)
177 sk_pop_free(ctx->dirs, int_free_str); 177 sk_OPENSSL_STRING_pop_free(ctx->dirs, int_free_str);
178 OPENSSL_free(ctx); 178 OPENSSL_free(ctx);
179 } 179 }
180 } 180 }
@@ -203,7 +203,7 @@ static int dynamic_set_data_ctx(ENGINE *e, dynamic_data_ctx **ctx)
203 c->DYNAMIC_F1 = "v_check"; 203 c->DYNAMIC_F1 = "v_check";
204 c->DYNAMIC_F2 = "bind_engine"; 204 c->DYNAMIC_F2 = "bind_engine";
205 c->dir_load = 1; 205 c->dir_load = 1;
206 c->dirs = sk_new_null(); 206 c->dirs = sk_OPENSSL_STRING_new_null();
207 if(!c->dirs) 207 if(!c->dirs)
208 { 208 {
209 ENGINEerr(ENGINE_F_DYNAMIC_SET_DATA_CTX,ERR_R_MALLOC_FAILURE); 209 ENGINEerr(ENGINE_F_DYNAMIC_SET_DATA_CTX,ERR_R_MALLOC_FAILURE);
@@ -393,7 +393,7 @@ static int dynamic_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f)(void))
393 ERR_R_MALLOC_FAILURE); 393 ERR_R_MALLOC_FAILURE);
394 return 0; 394 return 0;
395 } 395 }
396 sk_insert(ctx->dirs, tmp_str, -1); 396 sk_OPENSSL_STRING_insert(ctx->dirs, tmp_str, -1);
397 } 397 }
398 return 1; 398 return 1;
399 default: 399 default:
@@ -411,11 +411,11 @@ static int int_load(dynamic_data_ctx *ctx)
411 ctx->DYNAMIC_LIBNAME, NULL, 0)) != NULL) 411 ctx->DYNAMIC_LIBNAME, NULL, 0)) != NULL)
412 return 1; 412 return 1;
413 /* If we're not allowed to use 'dirs' or we have none, fail */ 413 /* If we're not allowed to use 'dirs' or we have none, fail */
414 if(!ctx->dir_load || ((num = sk_num(ctx->dirs)) < 1)) 414 if(!ctx->dir_load || (num = sk_OPENSSL_STRING_num(ctx->dirs)) < 1)
415 return 0; 415 return 0;
416 for(loop = 0; loop < num; loop++) 416 for(loop = 0; loop < num; loop++)
417 { 417 {
418 const char *s = sk_value(ctx->dirs, loop); 418 const char *s = sk_OPENSSL_STRING_value(ctx->dirs, loop);
419 char *merge = DSO_merge(ctx->dynamic_dso, ctx->DYNAMIC_LIBNAME, s); 419 char *merge = DSO_merge(ctx->dynamic_dso, ctx->DYNAMIC_LIBNAME, s);
420 if(!merge) 420 if(!merge)
421 return 0; 421 return 0;
diff --git a/src/lib/libssl/src/crypto/engine/eng_err.c b/src/lib/libssl/src/crypto/engine/eng_err.c
index 574ffbb5c0..81c70acfa8 100644
--- a/src/lib/libssl/src/crypto/engine/eng_err.c
+++ b/src/lib/libssl/src/crypto/engine/eng_err.c
@@ -1,6 +1,6 @@
1/* crypto/engine/eng_err.c */ 1/* crypto/engine/eng_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2010 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -86,6 +86,8 @@ static ERR_STRING_DATA ENGINE_str_functs[]=
86{ERR_FUNC(ENGINE_F_ENGINE_GET_DEFAULT_TYPE), "ENGINE_GET_DEFAULT_TYPE"}, 86{ERR_FUNC(ENGINE_F_ENGINE_GET_DEFAULT_TYPE), "ENGINE_GET_DEFAULT_TYPE"},
87{ERR_FUNC(ENGINE_F_ENGINE_GET_DIGEST), "ENGINE_get_digest"}, 87{ERR_FUNC(ENGINE_F_ENGINE_GET_DIGEST), "ENGINE_get_digest"},
88{ERR_FUNC(ENGINE_F_ENGINE_GET_NEXT), "ENGINE_get_next"}, 88{ERR_FUNC(ENGINE_F_ENGINE_GET_NEXT), "ENGINE_get_next"},
89{ERR_FUNC(ENGINE_F_ENGINE_GET_PKEY_ASN1_METH), "ENGINE_get_pkey_asn1_meth"},
90{ERR_FUNC(ENGINE_F_ENGINE_GET_PKEY_METH), "ENGINE_get_pkey_meth"},
89{ERR_FUNC(ENGINE_F_ENGINE_GET_PREV), "ENGINE_get_prev"}, 91{ERR_FUNC(ENGINE_F_ENGINE_GET_PREV), "ENGINE_get_prev"},
90{ERR_FUNC(ENGINE_F_ENGINE_INIT), "ENGINE_init"}, 92{ERR_FUNC(ENGINE_F_ENGINE_INIT), "ENGINE_init"},
91{ERR_FUNC(ENGINE_F_ENGINE_LIST_ADD), "ENGINE_LIST_ADD"}, 93{ERR_FUNC(ENGINE_F_ENGINE_LIST_ADD), "ENGINE_LIST_ADD"},
@@ -124,6 +126,7 @@ static ERR_STRING_DATA ENGINE_str_reasons[]=
124{ERR_REASON(ENGINE_R_DSO_FAILURE) ,"DSO failure"}, 126{ERR_REASON(ENGINE_R_DSO_FAILURE) ,"DSO failure"},
125{ERR_REASON(ENGINE_R_DSO_NOT_FOUND) ,"dso not found"}, 127{ERR_REASON(ENGINE_R_DSO_NOT_FOUND) ,"dso not found"},
126{ERR_REASON(ENGINE_R_ENGINES_SECTION_ERROR),"engines section error"}, 128{ERR_REASON(ENGINE_R_ENGINES_SECTION_ERROR),"engines section error"},
129{ERR_REASON(ENGINE_R_ENGINE_CONFIGURATION_ERROR),"engine configuration error"},
127{ERR_REASON(ENGINE_R_ENGINE_IS_NOT_IN_LIST),"engine is not in the list"}, 130{ERR_REASON(ENGINE_R_ENGINE_IS_NOT_IN_LIST),"engine is not in the list"},
128{ERR_REASON(ENGINE_R_ENGINE_SECTION_ERROR),"engine section error"}, 131{ERR_REASON(ENGINE_R_ENGINE_SECTION_ERROR),"engine section error"},
129{ERR_REASON(ENGINE_R_FAILED_LOADING_PRIVATE_KEY),"failed loading private key"}, 132{ERR_REASON(ENGINE_R_FAILED_LOADING_PRIVATE_KEY),"failed loading private key"},
@@ -150,6 +153,7 @@ static ERR_STRING_DATA ENGINE_str_reasons[]=
150{ERR_REASON(ENGINE_R_RSA_NOT_IMPLEMENTED),"rsa not implemented"}, 153{ERR_REASON(ENGINE_R_RSA_NOT_IMPLEMENTED),"rsa not implemented"},
151{ERR_REASON(ENGINE_R_UNIMPLEMENTED_CIPHER),"unimplemented cipher"}, 154{ERR_REASON(ENGINE_R_UNIMPLEMENTED_CIPHER),"unimplemented cipher"},
152{ERR_REASON(ENGINE_R_UNIMPLEMENTED_DIGEST),"unimplemented digest"}, 155{ERR_REASON(ENGINE_R_UNIMPLEMENTED_DIGEST),"unimplemented digest"},
156{ERR_REASON(ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD),"unimplemented public key method"},
153{ERR_REASON(ENGINE_R_VERSION_INCOMPATIBILITY),"version incompatibility"}, 157{ERR_REASON(ENGINE_R_VERSION_INCOMPATIBILITY),"version incompatibility"},
154{0,NULL} 158{0,NULL}
155 }; 159 };
diff --git a/src/lib/libssl/src/crypto/engine/eng_fat.c b/src/lib/libssl/src/crypto/engine/eng_fat.c
index 27c1662f62..db66e62350 100644
--- a/src/lib/libssl/src/crypto/engine/eng_fat.c
+++ b/src/lib/libssl/src/crypto/engine/eng_fat.c
@@ -89,6 +89,12 @@ int ENGINE_set_default(ENGINE *e, unsigned int flags)
89#endif 89#endif
90 if((flags & ENGINE_METHOD_RAND) && !ENGINE_set_default_RAND(e)) 90 if((flags & ENGINE_METHOD_RAND) && !ENGINE_set_default_RAND(e))
91 return 0; 91 return 0;
92 if((flags & ENGINE_METHOD_PKEY_METHS)
93 && !ENGINE_set_default_pkey_meths(e))
94 return 0;
95 if((flags & ENGINE_METHOD_PKEY_ASN1_METHS)
96 && !ENGINE_set_default_pkey_asn1_meths(e))
97 return 0;
92 return 1; 98 return 1;
93 } 99 }
94 100
@@ -115,6 +121,13 @@ static int int_def_cb(const char *alg, int len, void *arg)
115 *pflags |= ENGINE_METHOD_CIPHERS; 121 *pflags |= ENGINE_METHOD_CIPHERS;
116 else if (!strncmp(alg, "DIGESTS", len)) 122 else if (!strncmp(alg, "DIGESTS", len))
117 *pflags |= ENGINE_METHOD_DIGESTS; 123 *pflags |= ENGINE_METHOD_DIGESTS;
124 else if (!strncmp(alg, "PKEY", len))
125 *pflags |=
126 ENGINE_METHOD_PKEY_METHS|ENGINE_METHOD_PKEY_ASN1_METHS;
127 else if (!strncmp(alg, "PKEY_CRYPTO", len))
128 *pflags |= ENGINE_METHOD_PKEY_METHS;
129 else if (!strncmp(alg, "PKEY_ASN1", len))
130 *pflags |= ENGINE_METHOD_PKEY_ASN1_METHS;
118 else 131 else
119 return 0; 132 return 0;
120 return 1; 133 return 1;
@@ -154,6 +167,7 @@ int ENGINE_register_complete(ENGINE *e)
154 ENGINE_register_ECDSA(e); 167 ENGINE_register_ECDSA(e);
155#endif 168#endif
156 ENGINE_register_RAND(e); 169 ENGINE_register_RAND(e);
170 ENGINE_register_pkey_meths(e);
157 return 1; 171 return 1;
158 } 172 }
159 173
diff --git a/src/lib/libssl/src/crypto/engine/eng_int.h b/src/lib/libssl/src/crypto/engine/eng_int.h
index a66f107a44..451ef8feb8 100644
--- a/src/lib/libssl/src/crypto/engine/eng_int.h
+++ b/src/lib/libssl/src/crypto/engine/eng_int.h
@@ -127,6 +127,8 @@ ENGINE *engine_table_select(ENGINE_TABLE **table, int nid);
127ENGINE *engine_table_select_tmp(ENGINE_TABLE **table, int nid, const char *f, int l); 127ENGINE *engine_table_select_tmp(ENGINE_TABLE **table, int nid, const char *f, int l);
128#define engine_table_select(t,n) engine_table_select_tmp(t,n,__FILE__,__LINE__) 128#define engine_table_select(t,n) engine_table_select_tmp(t,n,__FILE__,__LINE__)
129#endif 129#endif
130typedef void (engine_table_doall_cb)(int nid, STACK_OF(ENGINE) *sk, ENGINE *def, void *arg);
131void engine_table_doall(ENGINE_TABLE *table, engine_table_doall_cb *cb, void *arg);
130 132
131/* Internal versions of API functions that have control over locking. These are 133/* Internal versions of API functions that have control over locking. These are
132 * used between C files when functionality needs to be shared but the caller may 134 * used between C files when functionality needs to be shared but the caller may
@@ -143,6 +145,11 @@ void engine_set_all_null(ENGINE *e);
143/* NB: Bitwise OR-able values for the "flags" variable in ENGINE are now exposed 145/* NB: Bitwise OR-able values for the "flags" variable in ENGINE are now exposed
144 * in engine.h. */ 146 * in engine.h. */
145 147
148/* Free up dynamically allocated public key methods associated with ENGINE */
149
150void engine_pkey_meths_free(ENGINE *e);
151void engine_pkey_asn1_meths_free(ENGINE *e);
152
146/* This is a structure for storing implementations of various crypto 153/* This is a structure for storing implementations of various crypto
147 * algorithms and functions. */ 154 * algorithms and functions. */
148struct engine_st 155struct engine_st
@@ -160,7 +167,10 @@ struct engine_st
160 ENGINE_CIPHERS_PTR ciphers; 167 ENGINE_CIPHERS_PTR ciphers;
161 /* Digest handling is via this callback */ 168 /* Digest handling is via this callback */
162 ENGINE_DIGESTS_PTR digests; 169 ENGINE_DIGESTS_PTR digests;
163 170 /* Public key handling via this callback */
171 ENGINE_PKEY_METHS_PTR pkey_meths;
172 /* ASN1 public key handling via this callback */
173 ENGINE_PKEY_ASN1_METHS_PTR pkey_asn1_meths;
164 174
165 ENGINE_GEN_INT_FUNC_PTR destroy; 175 ENGINE_GEN_INT_FUNC_PTR destroy;
166 176
diff --git a/src/lib/libssl/src/crypto/engine/eng_lib.c b/src/lib/libssl/src/crypto/engine/eng_lib.c
index 5815b867f4..18a6664645 100644
--- a/src/lib/libssl/src/crypto/engine/eng_lib.c
+++ b/src/lib/libssl/src/crypto/engine/eng_lib.c
@@ -125,6 +125,9 @@ int engine_free_util(ENGINE *e, int locked)
125 abort(); 125 abort();
126 } 126 }
127#endif 127#endif
128 /* Free up any dynamically allocated public key methods */
129 engine_pkey_meths_free(e);
130 engine_pkey_asn1_meths_free(e);
128 /* Give the ENGINE a chance to do any structural cleanup corresponding 131 /* Give the ENGINE a chance to do any structural cleanup corresponding
129 * to allocation it did in its constructor (eg. unload error strings) */ 132 * to allocation it did in its constructor (eg. unload error strings) */
130 if(e->destroy) 133 if(e->destroy)
diff --git a/src/lib/libssl/src/crypto/engine/eng_list.c b/src/lib/libssl/src/crypto/engine/eng_list.c
index bd511944ba..27846edb1e 100644
--- a/src/lib/libssl/src/crypto/engine/eng_list.c
+++ b/src/lib/libssl/src/crypto/engine/eng_list.c
@@ -336,6 +336,7 @@ static void engine_cpy(ENGINE *dest, const ENGINE *src)
336 dest->store_meth = src->store_meth; 336 dest->store_meth = src->store_meth;
337 dest->ciphers = src->ciphers; 337 dest->ciphers = src->ciphers;
338 dest->digests = src->digests; 338 dest->digests = src->digests;
339 dest->pkey_meths = src->pkey_meths;
339 dest->destroy = src->destroy; 340 dest->destroy = src->destroy;
340 dest->init = src->init; 341 dest->init = src->init;
341 dest->finish = src->finish; 342 dest->finish = src->finish;
@@ -412,6 +413,7 @@ ENGINE *ENGINE_by_id(const char *id)
412 return iterator; 413 return iterator;
413 } 414 }
414notfound: 415notfound:
416 ENGINE_free(iterator);
415 ENGINEerr(ENGINE_F_ENGINE_BY_ID,ENGINE_R_NO_SUCH_ENGINE); 417 ENGINEerr(ENGINE_F_ENGINE_BY_ID,ENGINE_R_NO_SUCH_ENGINE);
416 ERR_add_error_data(2, "id=", id); 418 ERR_add_error_data(2, "id=", id);
417 return NULL; 419 return NULL;
diff --git a/src/lib/libssl/src/crypto/engine/eng_openssl.c b/src/lib/libssl/src/crypto/engine/eng_openssl.c
index 7c139ae2ef..9abb95cc22 100644
--- a/src/lib/libssl/src/crypto/engine/eng_openssl.c
+++ b/src/lib/libssl/src/crypto/engine/eng_openssl.c
@@ -238,7 +238,7 @@ static int test_rc4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
238 return 1; 238 return 1;
239 } 239 }
240static int test_rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 240static int test_rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
241 const unsigned char *in, unsigned int inl) 241 const unsigned char *in, size_t inl)
242 { 242 {
243#ifdef TEST_ENG_OPENSSL_RC4_P_CIPHER 243#ifdef TEST_ENG_OPENSSL_RC4_P_CIPHER
244 fprintf(stderr, "(TEST_ENG_OPENSSL_RC4) test_cipher() called\n"); 244 fprintf(stderr, "(TEST_ENG_OPENSSL_RC4) test_cipher() called\n");
diff --git a/src/lib/libssl/src/crypto/engine/eng_table.c b/src/lib/libssl/src/crypto/engine/eng_table.c
index 8879a267d1..4fde948185 100644
--- a/src/lib/libssl/src/crypto/engine/eng_table.c
+++ b/src/lib/libssl/src/crypto/engine/eng_table.c
@@ -70,12 +70,22 @@ typedef struct st_engine_pile
70 int uptodate; 70 int uptodate;
71 } ENGINE_PILE; 71 } ENGINE_PILE;
72 72
73DECLARE_LHASH_OF(ENGINE_PILE);
74
73/* The type exposed in eng_int.h */ 75/* The type exposed in eng_int.h */
74struct st_engine_table 76struct st_engine_table
75 { 77 {
76 LHASH piles; 78 LHASH_OF(ENGINE_PILE) piles;
77 }; /* ENGINE_TABLE */ 79 }; /* ENGINE_TABLE */
78 80
81
82typedef struct st_engine_pile_doall
83 {
84 engine_table_doall_cb *cb;
85 void *arg;
86 } ENGINE_PILE_DOALL;
87
88
79/* Global flags (ENGINE_TABLE_FLAG_***). */ 89/* Global flags (ENGINE_TABLE_FLAG_***). */
80static unsigned int table_flags = 0; 90static unsigned int table_flags = 0;
81 91
@@ -84,6 +94,7 @@ unsigned int ENGINE_get_table_flags(void)
84 { 94 {
85 return table_flags; 95 return table_flags;
86 } 96 }
97
87void ENGINE_set_table_flags(unsigned int flags) 98void ENGINE_set_table_flags(unsigned int flags)
88 { 99 {
89 table_flags = flags; 100 table_flags = flags;
@@ -94,19 +105,21 @@ static unsigned long engine_pile_hash(const ENGINE_PILE *c)
94 { 105 {
95 return c->nid; 106 return c->nid;
96 } 107 }
108
97static int engine_pile_cmp(const ENGINE_PILE *a, const ENGINE_PILE *b) 109static int engine_pile_cmp(const ENGINE_PILE *a, const ENGINE_PILE *b)
98 { 110 {
99 return a->nid - b->nid; 111 return a->nid - b->nid;
100 } 112 }
101static IMPLEMENT_LHASH_HASH_FN(engine_pile_hash, const ENGINE_PILE *) 113static IMPLEMENT_LHASH_HASH_FN(engine_pile, ENGINE_PILE)
102static IMPLEMENT_LHASH_COMP_FN(engine_pile_cmp, const ENGINE_PILE *) 114static IMPLEMENT_LHASH_COMP_FN(engine_pile, ENGINE_PILE)
115
103static int int_table_check(ENGINE_TABLE **t, int create) 116static int int_table_check(ENGINE_TABLE **t, int create)
104 { 117 {
105 LHASH *lh; 118 LHASH_OF(ENGINE_PILE) *lh;
119
106 if(*t) return 1; 120 if(*t) return 1;
107 if(!create) return 0; 121 if(!create) return 0;
108 if((lh = lh_new(LHASH_HASH_FN(engine_pile_hash), 122 if((lh = lh_ENGINE_PILE_new()) == NULL)
109 LHASH_COMP_FN(engine_pile_cmp))) == NULL)
110 return 0; 123 return 0;
111 *t = (ENGINE_TABLE *)lh; 124 *t = (ENGINE_TABLE *)lh;
112 return 1; 125 return 1;
@@ -130,7 +143,7 @@ int engine_table_register(ENGINE_TABLE **table, ENGINE_CLEANUP_CB *cleanup,
130 while(num_nids--) 143 while(num_nids--)
131 { 144 {
132 tmplate.nid = *nids; 145 tmplate.nid = *nids;
133 fnd = lh_retrieve(&(*table)->piles, &tmplate); 146 fnd = lh_ENGINE_PILE_retrieve(&(*table)->piles, &tmplate);
134 if(!fnd) 147 if(!fnd)
135 { 148 {
136 fnd = OPENSSL_malloc(sizeof(ENGINE_PILE)); 149 fnd = OPENSSL_malloc(sizeof(ENGINE_PILE));
@@ -144,7 +157,7 @@ int engine_table_register(ENGINE_TABLE **table, ENGINE_CLEANUP_CB *cleanup,
144 goto end; 157 goto end;
145 } 158 }
146 fnd->funct = NULL; 159 fnd->funct = NULL;
147 lh_insert(&(*table)->piles, fnd); 160 (void)lh_ENGINE_PILE_insert(&(*table)->piles, fnd);
148 } 161 }
149 /* A registration shouldn't add duplciate entries */ 162 /* A registration shouldn't add duplciate entries */
150 (void)sk_ENGINE_delete_ptr(fnd->sk, e); 163 (void)sk_ENGINE_delete_ptr(fnd->sk, e);
@@ -173,7 +186,7 @@ end:
173 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); 186 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
174 return ret; 187 return ret;
175 } 188 }
176static void int_unregister_cb(ENGINE_PILE *pile, ENGINE *e) 189static void int_unregister_cb_doall_arg(ENGINE_PILE *pile, ENGINE *e)
177 { 190 {
178 int n; 191 int n;
179 /* Iterate the 'c->sk' stack removing any occurance of 'e' */ 192 /* Iterate the 'c->sk' stack removing any occurance of 'e' */
@@ -188,31 +201,35 @@ static void int_unregister_cb(ENGINE_PILE *pile, ENGINE *e)
188 pile->funct = NULL; 201 pile->funct = NULL;
189 } 202 }
190 } 203 }
191static IMPLEMENT_LHASH_DOALL_ARG_FN(int_unregister_cb,ENGINE_PILE *,ENGINE *) 204static IMPLEMENT_LHASH_DOALL_ARG_FN(int_unregister_cb, ENGINE_PILE, ENGINE)
205
192void engine_table_unregister(ENGINE_TABLE **table, ENGINE *e) 206void engine_table_unregister(ENGINE_TABLE **table, ENGINE *e)
193 { 207 {
194 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); 208 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
195 if(int_table_check(table, 0)) 209 if(int_table_check(table, 0))
196 lh_doall_arg(&(*table)->piles, 210 lh_ENGINE_PILE_doall_arg(&(*table)->piles,
197 LHASH_DOALL_ARG_FN(int_unregister_cb), e); 211 LHASH_DOALL_ARG_FN(int_unregister_cb),
212 ENGINE, e);
198 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); 213 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
199 } 214 }
200 215
201static void int_cleanup_cb(ENGINE_PILE *p) 216static void int_cleanup_cb_doall(ENGINE_PILE *p)
202 { 217 {
203 sk_ENGINE_free(p->sk); 218 sk_ENGINE_free(p->sk);
204 if(p->funct) 219 if(p->funct)
205 engine_unlocked_finish(p->funct, 0); 220 engine_unlocked_finish(p->funct, 0);
206 OPENSSL_free(p); 221 OPENSSL_free(p);
207 } 222 }
208static IMPLEMENT_LHASH_DOALL_FN(int_cleanup_cb,ENGINE_PILE *) 223static IMPLEMENT_LHASH_DOALL_FN(int_cleanup_cb, ENGINE_PILE)
224
209void engine_table_cleanup(ENGINE_TABLE **table) 225void engine_table_cleanup(ENGINE_TABLE **table)
210 { 226 {
211 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); 227 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
212 if(*table) 228 if(*table)
213 { 229 {
214 lh_doall(&(*table)->piles, LHASH_DOALL_FN(int_cleanup_cb)); 230 lh_ENGINE_PILE_doall(&(*table)->piles,
215 lh_free(&(*table)->piles); 231 LHASH_DOALL_FN(int_cleanup_cb));
232 lh_ENGINE_PILE_free(&(*table)->piles);
216 *table = NULL; 233 *table = NULL;
217 } 234 }
218 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); 235 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
@@ -237,12 +254,13 @@ ENGINE *engine_table_select_tmp(ENGINE_TABLE **table, int nid, const char *f, in
237#endif 254#endif
238 return NULL; 255 return NULL;
239 } 256 }
257 ERR_set_mark();
240 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE); 258 CRYPTO_w_lock(CRYPTO_LOCK_ENGINE);
241 /* Check again inside the lock otherwise we could race against cleanup 259 /* Check again inside the lock otherwise we could race against cleanup
242 * operations. But don't worry about a fprintf(stderr). */ 260 * operations. But don't worry about a fprintf(stderr). */
243 if(!int_table_check(table, 0)) goto end; 261 if(!int_table_check(table, 0)) goto end;
244 tmplate.nid = nid; 262 tmplate.nid = nid;
245 fnd = lh_retrieve(&(*table)->piles, &tmplate); 263 fnd = lh_ENGINE_PILE_retrieve(&(*table)->piles, &tmplate);
246 if(!fnd) goto end; 264 if(!fnd) goto end;
247 if(fnd->funct && engine_unlocked_init(fnd->funct)) 265 if(fnd->funct && engine_unlocked_init(fnd->funct))
248 { 266 {
@@ -310,6 +328,24 @@ end:
310 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE); 328 CRYPTO_w_unlock(CRYPTO_LOCK_ENGINE);
311 /* Whatever happened, any failed init()s are not failures in this 329 /* Whatever happened, any failed init()s are not failures in this
312 * context, so clear our error state. */ 330 * context, so clear our error state. */
313 ERR_clear_error(); 331 ERR_pop_to_mark();
314 return ret; 332 return ret;
315 } 333 }
334
335/* Table enumeration */
336
337static void int_cb_doall_arg(ENGINE_PILE *pile, ENGINE_PILE_DOALL *dall)
338 {
339 dall->cb(pile->nid, pile->sk, pile->funct, dall->arg);
340 }
341static IMPLEMENT_LHASH_DOALL_ARG_FN(int_cb, ENGINE_PILE,ENGINE_PILE_DOALL)
342
343void engine_table_doall(ENGINE_TABLE *table, engine_table_doall_cb *cb,
344 void *arg)
345 {
346 ENGINE_PILE_DOALL dall;
347 dall.cb = cb;
348 dall.arg = arg;
349 lh_ENGINE_PILE_doall_arg(&table->piles, LHASH_DOALL_ARG_FN(int_cb),
350 ENGINE_PILE_DOALL, &dall);
351 }
diff --git a/src/lib/libssl/src/crypto/engine/engine.h b/src/lib/libssl/src/crypto/engine/engine.h
index f503595ece..7fbd95f634 100644
--- a/src/lib/libssl/src/crypto/engine/engine.h
+++ b/src/lib/libssl/src/crypto/engine/engine.h
@@ -88,16 +88,15 @@
88#include <openssl/ecdsa.h> 88#include <openssl/ecdsa.h>
89#endif 89#endif
90#include <openssl/rand.h> 90#include <openssl/rand.h>
91#include <openssl/store.h>
92#include <openssl/ui.h> 91#include <openssl/ui.h>
93#include <openssl/err.h> 92#include <openssl/err.h>
94#endif 93#endif
95 94
96#include <openssl/x509.h>
97
98#include <openssl/ossl_typ.h> 95#include <openssl/ossl_typ.h>
99#include <openssl/symhacks.h> 96#include <openssl/symhacks.h>
100 97
98#include <openssl/x509.h>
99
101#ifdef __cplusplus 100#ifdef __cplusplus
102extern "C" { 101extern "C" {
103#endif 102#endif
@@ -113,6 +112,8 @@ extern "C" {
113#define ENGINE_METHOD_CIPHERS (unsigned int)0x0040 112#define ENGINE_METHOD_CIPHERS (unsigned int)0x0040
114#define ENGINE_METHOD_DIGESTS (unsigned int)0x0080 113#define ENGINE_METHOD_DIGESTS (unsigned int)0x0080
115#define ENGINE_METHOD_STORE (unsigned int)0x0100 114#define ENGINE_METHOD_STORE (unsigned int)0x0100
115#define ENGINE_METHOD_PKEY_METHS (unsigned int)0x0200
116#define ENGINE_METHOD_PKEY_ASN1_METHS (unsigned int)0x0400
116/* Obvious all-or-nothing cases. */ 117/* Obvious all-or-nothing cases. */
117#define ENGINE_METHOD_ALL (unsigned int)0xFFFF 118#define ENGINE_METHOD_ALL (unsigned int)0xFFFF
118#define ENGINE_METHOD_NONE (unsigned int)0x0000 119#define ENGINE_METHOD_NONE (unsigned int)0x0000
@@ -297,7 +298,8 @@ typedef int (*ENGINE_SSL_CLIENT_CERT_PTR)(ENGINE *, SSL *ssl,
297 * parameter is non-NULL it is set to the size of the returned array. */ 298 * parameter is non-NULL it is set to the size of the returned array. */
298typedef int (*ENGINE_CIPHERS_PTR)(ENGINE *, const EVP_CIPHER **, const int **, int); 299typedef int (*ENGINE_CIPHERS_PTR)(ENGINE *, const EVP_CIPHER **, const int **, int);
299typedef int (*ENGINE_DIGESTS_PTR)(ENGINE *, const EVP_MD **, const int **, int); 300typedef int (*ENGINE_DIGESTS_PTR)(ENGINE *, const EVP_MD **, const int **, int);
300 301typedef int (*ENGINE_PKEY_METHS_PTR)(ENGINE *, EVP_PKEY_METHOD **, const int **, int);
302typedef int (*ENGINE_PKEY_ASN1_METHS_PTR)(ENGINE *, EVP_PKEY_ASN1_METHOD **, const int **, int);
301/* STRUCTURE functions ... all of these functions deal with pointers to ENGINE 303/* STRUCTURE functions ... all of these functions deal with pointers to ENGINE
302 * structures where the pointers have a "structural reference". This means that 304 * structures where the pointers have a "structural reference". This means that
303 * their reference is to allowed access to the structure but it does not imply 305 * their reference is to allowed access to the structure but it does not imply
@@ -329,19 +331,20 @@ void ENGINE_load_aep(void);
329void ENGINE_load_atalla(void); 331void ENGINE_load_atalla(void);
330void ENGINE_load_chil(void); 332void ENGINE_load_chil(void);
331void ENGINE_load_cswift(void); 333void ENGINE_load_cswift(void);
332#ifndef OPENSSL_NO_GMP
333void ENGINE_load_gmp(void);
334#endif
335void ENGINE_load_nuron(void); 334void ENGINE_load_nuron(void);
336void ENGINE_load_sureware(void); 335void ENGINE_load_sureware(void);
337void ENGINE_load_ubsec(void); 336void ENGINE_load_ubsec(void);
338#endif
339void ENGINE_load_cryptodev(void);
340void ENGINE_load_padlock(void); 337void ENGINE_load_padlock(void);
341void ENGINE_load_builtin_engines(void);
342#ifndef OPENSSL_NO_CAPIENG
343void ENGINE_load_capi(void); 338void ENGINE_load_capi(void);
339#ifndef OPENSSL_NO_GMP
340void ENGINE_load_gmp(void);
341#endif
342#ifndef OPENSSL_NO_GOST
343void ENGINE_load_gost(void);
344#endif
344#endif 345#endif
346void ENGINE_load_cryptodev(void);
347void ENGINE_load_builtin_engines(void);
345 348
346/* Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation 349/* Get and set global flags (ENGINE_TABLE_FLAG_***) for the implementation
347 * "registry" handling. */ 350 * "registry" handling. */
@@ -392,6 +395,14 @@ int ENGINE_register_digests(ENGINE *e);
392void ENGINE_unregister_digests(ENGINE *e); 395void ENGINE_unregister_digests(ENGINE *e);
393void ENGINE_register_all_digests(void); 396void ENGINE_register_all_digests(void);
394 397
398int ENGINE_register_pkey_meths(ENGINE *e);
399void ENGINE_unregister_pkey_meths(ENGINE *e);
400void ENGINE_register_all_pkey_meths(void);
401
402int ENGINE_register_pkey_asn1_meths(ENGINE *e);
403void ENGINE_unregister_pkey_asn1_meths(ENGINE *e);
404void ENGINE_register_all_pkey_asn1_meths(void);
405
395/* These functions register all support from the above categories. Note, use of 406/* These functions register all support from the above categories. Note, use of
396 * these functions can result in static linkage of code your application may not 407 * these functions can result in static linkage of code your application may not
397 * need. If you only need a subset of functionality, consider using more 408 * need. If you only need a subset of functionality, consider using more
@@ -471,6 +482,8 @@ int ENGINE_set_load_ssl_client_cert_function(ENGINE *e,
471 ENGINE_SSL_CLIENT_CERT_PTR loadssl_f); 482 ENGINE_SSL_CLIENT_CERT_PTR loadssl_f);
472int ENGINE_set_ciphers(ENGINE *e, ENGINE_CIPHERS_PTR f); 483int ENGINE_set_ciphers(ENGINE *e, ENGINE_CIPHERS_PTR f);
473int ENGINE_set_digests(ENGINE *e, ENGINE_DIGESTS_PTR f); 484int ENGINE_set_digests(ENGINE *e, ENGINE_DIGESTS_PTR f);
485int ENGINE_set_pkey_meths(ENGINE *e, ENGINE_PKEY_METHS_PTR f);
486int ENGINE_set_pkey_asn1_meths(ENGINE *e, ENGINE_PKEY_ASN1_METHS_PTR f);
474int ENGINE_set_flags(ENGINE *e, int flags); 487int ENGINE_set_flags(ENGINE *e, int flags);
475int ENGINE_set_cmd_defns(ENGINE *e, const ENGINE_CMD_DEFN *defns); 488int ENGINE_set_cmd_defns(ENGINE *e, const ENGINE_CMD_DEFN *defns);
476/* These functions allow control over any per-structure ENGINE data. */ 489/* These functions allow control over any per-structure ENGINE data. */
@@ -507,8 +520,16 @@ ENGINE_LOAD_KEY_PTR ENGINE_get_load_pubkey_function(const ENGINE *e);
507ENGINE_SSL_CLIENT_CERT_PTR ENGINE_get_ssl_client_cert_function(const ENGINE *e); 520ENGINE_SSL_CLIENT_CERT_PTR ENGINE_get_ssl_client_cert_function(const ENGINE *e);
508ENGINE_CIPHERS_PTR ENGINE_get_ciphers(const ENGINE *e); 521ENGINE_CIPHERS_PTR ENGINE_get_ciphers(const ENGINE *e);
509ENGINE_DIGESTS_PTR ENGINE_get_digests(const ENGINE *e); 522ENGINE_DIGESTS_PTR ENGINE_get_digests(const ENGINE *e);
523ENGINE_PKEY_METHS_PTR ENGINE_get_pkey_meths(const ENGINE *e);
524ENGINE_PKEY_ASN1_METHS_PTR ENGINE_get_pkey_asn1_meths(const ENGINE *e);
510const EVP_CIPHER *ENGINE_get_cipher(ENGINE *e, int nid); 525const EVP_CIPHER *ENGINE_get_cipher(ENGINE *e, int nid);
511const EVP_MD *ENGINE_get_digest(ENGINE *e, int nid); 526const EVP_MD *ENGINE_get_digest(ENGINE *e, int nid);
527const EVP_PKEY_METHOD *ENGINE_get_pkey_meth(ENGINE *e, int nid);
528const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth(ENGINE *e, int nid);
529const EVP_PKEY_ASN1_METHOD *ENGINE_get_pkey_asn1_meth_str(ENGINE *e,
530 const char *str, int len);
531const EVP_PKEY_ASN1_METHOD *ENGINE_pkey_asn1_find_str(ENGINE **pe,
532 const char *str, int len);
512const ENGINE_CMD_DEFN *ENGINE_get_cmd_defns(const ENGINE *e); 533const ENGINE_CMD_DEFN *ENGINE_get_cmd_defns(const ENGINE *e);
513int ENGINE_get_flags(const ENGINE *e); 534int ENGINE_get_flags(const ENGINE *e);
514 535
@@ -560,6 +581,8 @@ ENGINE *ENGINE_get_default_RAND(void);
560 * ciphering or digesting corresponding to "nid". */ 581 * ciphering or digesting corresponding to "nid". */
561ENGINE *ENGINE_get_cipher_engine(int nid); 582ENGINE *ENGINE_get_cipher_engine(int nid);
562ENGINE *ENGINE_get_digest_engine(int nid); 583ENGINE *ENGINE_get_digest_engine(int nid);
584ENGINE *ENGINE_get_pkey_meth_engine(int nid);
585ENGINE *ENGINE_get_pkey_asn1_meth_engine(int nid);
563 586
564/* This sets a new default ENGINE structure for performing RSA 587/* This sets a new default ENGINE structure for performing RSA
565 * operations. If the result is non-zero (success) then the ENGINE 588 * operations. If the result is non-zero (success) then the ENGINE
@@ -575,6 +598,8 @@ int ENGINE_set_default_DH(ENGINE *e);
575int ENGINE_set_default_RAND(ENGINE *e); 598int ENGINE_set_default_RAND(ENGINE *e);
576int ENGINE_set_default_ciphers(ENGINE *e); 599int ENGINE_set_default_ciphers(ENGINE *e);
577int ENGINE_set_default_digests(ENGINE *e); 600int ENGINE_set_default_digests(ENGINE *e);
601int ENGINE_set_default_pkey_meths(ENGINE *e);
602int ENGINE_set_default_pkey_asn1_meths(ENGINE *e);
578 603
579/* The combination "set" - the flags are bitwise "OR"d from the 604/* The combination "set" - the flags are bitwise "OR"d from the
580 * ENGINE_METHOD_*** defines above. As with the "ENGINE_register_complete()" 605 * ENGINE_METHOD_*** defines above. As with the "ENGINE_register_complete()"
@@ -703,7 +728,7 @@ typedef int (*dynamic_bind_engine)(ENGINE *e, const char *id,
703 * values. */ 728 * values. */
704void *ENGINE_get_static_state(void); 729void *ENGINE_get_static_state(void);
705 730
706#if defined(__OpenBSD__) || defined(__FreeBSD__) 731#if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV)
707void ENGINE_setup_bsd_cryptodev(void); 732void ENGINE_setup_bsd_cryptodev(void);
708#endif 733#endif
709 734
@@ -732,13 +757,15 @@ void ERR_load_ENGINE_strings(void);
732#define ENGINE_F_ENGINE_GET_DEFAULT_TYPE 177 757#define ENGINE_F_ENGINE_GET_DEFAULT_TYPE 177
733#define ENGINE_F_ENGINE_GET_DIGEST 186 758#define ENGINE_F_ENGINE_GET_DIGEST 186
734#define ENGINE_F_ENGINE_GET_NEXT 115 759#define ENGINE_F_ENGINE_GET_NEXT 115
760#define ENGINE_F_ENGINE_GET_PKEY_ASN1_METH 193
761#define ENGINE_F_ENGINE_GET_PKEY_METH 192
735#define ENGINE_F_ENGINE_GET_PREV 116 762#define ENGINE_F_ENGINE_GET_PREV 116
736#define ENGINE_F_ENGINE_INIT 119 763#define ENGINE_F_ENGINE_INIT 119
737#define ENGINE_F_ENGINE_LIST_ADD 120 764#define ENGINE_F_ENGINE_LIST_ADD 120
738#define ENGINE_F_ENGINE_LIST_REMOVE 121 765#define ENGINE_F_ENGINE_LIST_REMOVE 121
739#define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 150 766#define ENGINE_F_ENGINE_LOAD_PRIVATE_KEY 150
740#define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 151 767#define ENGINE_F_ENGINE_LOAD_PUBLIC_KEY 151
741#define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 192 768#define ENGINE_F_ENGINE_LOAD_SSL_CLIENT_CERT 194
742#define ENGINE_F_ENGINE_NEW 122 769#define ENGINE_F_ENGINE_NEW 122
743#define ENGINE_F_ENGINE_REMOVE 123 770#define ENGINE_F_ENGINE_REMOVE 123
744#define ENGINE_F_ENGINE_SET_DEFAULT_STRING 189 771#define ENGINE_F_ENGINE_SET_DEFAULT_STRING 189
@@ -767,6 +794,7 @@ void ERR_load_ENGINE_strings(void);
767#define ENGINE_R_DSO_FAILURE 104 794#define ENGINE_R_DSO_FAILURE 104
768#define ENGINE_R_DSO_NOT_FOUND 132 795#define ENGINE_R_DSO_NOT_FOUND 132
769#define ENGINE_R_ENGINES_SECTION_ERROR 148 796#define ENGINE_R_ENGINES_SECTION_ERROR 148
797#define ENGINE_R_ENGINE_CONFIGURATION_ERROR 102
770#define ENGINE_R_ENGINE_IS_NOT_IN_LIST 105 798#define ENGINE_R_ENGINE_IS_NOT_IN_LIST 105
771#define ENGINE_R_ENGINE_SECTION_ERROR 149 799#define ENGINE_R_ENGINE_SECTION_ERROR 149
772#define ENGINE_R_FAILED_LOADING_PRIVATE_KEY 128 800#define ENGINE_R_FAILED_LOADING_PRIVATE_KEY 128
@@ -793,6 +821,7 @@ void ERR_load_ENGINE_strings(void);
793#define ENGINE_R_RSA_NOT_IMPLEMENTED 141 821#define ENGINE_R_RSA_NOT_IMPLEMENTED 141
794#define ENGINE_R_UNIMPLEMENTED_CIPHER 146 822#define ENGINE_R_UNIMPLEMENTED_CIPHER 146
795#define ENGINE_R_UNIMPLEMENTED_DIGEST 147 823#define ENGINE_R_UNIMPLEMENTED_DIGEST 147
824#define ENGINE_R_UNIMPLEMENTED_PUBLIC_KEY_METHOD 101
796#define ENGINE_R_VERSION_INCOMPATIBILITY 145 825#define ENGINE_R_VERSION_INCOMPATIBILITY 145
797 826
798#ifdef __cplusplus 827#ifdef __cplusplus
diff --git a/src/lib/libssl/src/crypto/engine/enginetest.c b/src/lib/libssl/src/crypto/engine/enginetest.c
index e3834611db..f4d70e7e0a 100644
--- a/src/lib/libssl/src/crypto/engine/enginetest.c
+++ b/src/lib/libssl/src/crypto/engine/enginetest.c
@@ -276,7 +276,7 @@ end:
276 ENGINE_cleanup(); 276 ENGINE_cleanup();
277 CRYPTO_cleanup_all_ex_data(); 277 CRYPTO_cleanup_all_ex_data();
278 ERR_free_strings(); 278 ERR_free_strings();
279 ERR_remove_state(0); 279 ERR_remove_thread_state(NULL);
280 CRYPTO_mem_leaks_fp(stderr); 280 CRYPTO_mem_leaks_fp(stderr);
281 return to_return; 281 return to_return;
282 } 282 }
diff --git a/src/lib/libssl/src/crypto/err/Makefile b/src/lib/libssl/src/crypto/err/Makefile
index 91d1379d41..862b23ba17 100644
--- a/src/lib/libssl/src/crypto/err/Makefile
+++ b/src/lib/libssl/src/crypto/err/Makefile
@@ -17,8 +17,8 @@ TEST=
17APPS= 17APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC=err.c err_def.c err_all.c err_prn.c err_str.c err_bio.c 20LIBSRC=err.c err_all.c err_prn.c
21LIBOBJ=err.o err_def.o err_all.o err_prn.o err_str.o err_bio.o 21LIBOBJ=err.o err_all.o err_prn.o
22 22
23SRC= $(LIBSRC) 23SRC= $(LIBSRC)
24 24
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -83,37 +83,24 @@ err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
83err.o: ../cryptlib.h err.c 83err.o: ../cryptlib.h err.c
84err_all.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 84err_all.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
85err_all.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 85err_all.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
86err_all.o: ../../include/openssl/cms.h ../../include/openssl/comp.h
86err_all.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 87err_all.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
87err_all.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h 88err_all.o: ../../include/openssl/dh.h ../../include/openssl/dsa.h
88err_all.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h 89err_all.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
89err_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 90err_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
90err_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 91err_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
91err_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h 92err_all.o: ../../include/openssl/err.h ../../include/openssl/evp.h
92err_all.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 93err_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
93err_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 94err_all.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
94err_all.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 95err_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
95err_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 96err_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem2.h
96err_all.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h 97err_all.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
97err_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 98err_all.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
98err_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 99err_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
99err_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 100err_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
100err_all.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h 101err_all.o: ../../include/openssl/ts.h ../../include/openssl/ui.h
101err_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 102err_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
102err_all.o: ../../include/openssl/x509v3.h err_all.c 103err_all.o: ../../include/openssl/x509v3.h err_all.c
103err_bio.o: ../../e_os.h ../../include/openssl/bio.h
104err_bio.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
105err_bio.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
106err_bio.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
107err_bio.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
108err_bio.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
109err_bio.o: ../../include/openssl/symhacks.h ../cryptlib.h err_bio.c
110err_def.o: ../../e_os.h ../../include/openssl/bio.h
111err_def.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
112err_def.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
113err_def.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
114err_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
115err_def.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
116err_def.o: ../../include/openssl/symhacks.h ../cryptlib.h err_def.c
117err_prn.o: ../../e_os.h ../../include/openssl/bio.h 104err_prn.o: ../../e_os.h ../../include/openssl/bio.h
118err_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 105err_prn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
119err_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 106err_prn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
@@ -121,10 +108,3 @@ err_prn.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
121err_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 108err_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
122err_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 109err_prn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
123err_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h err_prn.c 110err_prn.o: ../../include/openssl/symhacks.h ../cryptlib.h err_prn.c
124err_str.o: ../../e_os.h ../../include/openssl/bio.h
125err_str.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
126err_str.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
127err_str.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
128err_str.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
129err_str.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
130err_str.o: ../../include/openssl/symhacks.h ../cryptlib.h err_str.c
diff --git a/src/lib/libssl/src/crypto/err/err.c b/src/lib/libssl/src/crypto/err/err.c
index 292404a2fb..69713a6e2f 100644
--- a/src/lib/libssl/src/crypto/err/err.c
+++ b/src/lib/libssl/src/crypto/err/err.c
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -119,9 +119,507 @@
119#include <openssl/bio.h> 119#include <openssl/bio.h>
120#include <openssl/err.h> 120#include <openssl/err.h>
121 121
122static unsigned long get_error_values(int inc,int top, 122DECLARE_LHASH_OF(ERR_STRING_DATA);
123 const char **file,int *line, 123DECLARE_LHASH_OF(ERR_STATE);
124 const char **data,int *flags); 124
125static void err_load_strings(int lib, ERR_STRING_DATA *str);
126
127static void ERR_STATE_free(ERR_STATE *s);
128#ifndef OPENSSL_NO_ERR
129static ERR_STRING_DATA ERR_str_libraries[]=
130 {
131{ERR_PACK(ERR_LIB_NONE,0,0) ,"unknown library"},
132{ERR_PACK(ERR_LIB_SYS,0,0) ,"system library"},
133{ERR_PACK(ERR_LIB_BN,0,0) ,"bignum routines"},
134{ERR_PACK(ERR_LIB_RSA,0,0) ,"rsa routines"},
135{ERR_PACK(ERR_LIB_DH,0,0) ,"Diffie-Hellman routines"},
136{ERR_PACK(ERR_LIB_EVP,0,0) ,"digital envelope routines"},
137{ERR_PACK(ERR_LIB_BUF,0,0) ,"memory buffer routines"},
138{ERR_PACK(ERR_LIB_OBJ,0,0) ,"object identifier routines"},
139{ERR_PACK(ERR_LIB_PEM,0,0) ,"PEM routines"},
140{ERR_PACK(ERR_LIB_DSA,0,0) ,"dsa routines"},
141{ERR_PACK(ERR_LIB_X509,0,0) ,"x509 certificate routines"},
142{ERR_PACK(ERR_LIB_ASN1,0,0) ,"asn1 encoding routines"},
143{ERR_PACK(ERR_LIB_CONF,0,0) ,"configuration file routines"},
144{ERR_PACK(ERR_LIB_CRYPTO,0,0) ,"common libcrypto routines"},
145{ERR_PACK(ERR_LIB_EC,0,0) ,"elliptic curve routines"},
146{ERR_PACK(ERR_LIB_SSL,0,0) ,"SSL routines"},
147{ERR_PACK(ERR_LIB_BIO,0,0) ,"BIO routines"},
148{ERR_PACK(ERR_LIB_PKCS7,0,0) ,"PKCS7 routines"},
149{ERR_PACK(ERR_LIB_X509V3,0,0) ,"X509 V3 routines"},
150{ERR_PACK(ERR_LIB_PKCS12,0,0) ,"PKCS12 routines"},
151{ERR_PACK(ERR_LIB_RAND,0,0) ,"random number generator"},
152{ERR_PACK(ERR_LIB_DSO,0,0) ,"DSO support routines"},
153{ERR_PACK(ERR_LIB_TS,0,0) ,"time stamp routines"},
154{ERR_PACK(ERR_LIB_ENGINE,0,0) ,"engine routines"},
155{ERR_PACK(ERR_LIB_OCSP,0,0) ,"OCSP routines"},
156{ERR_PACK(ERR_LIB_FIPS,0,0) ,"FIPS routines"},
157{ERR_PACK(ERR_LIB_CMS,0,0) ,"CMS routines"},
158{ERR_PACK(ERR_LIB_HMAC,0,0) ,"HMAC routines"},
159{0,NULL},
160 };
161
162static ERR_STRING_DATA ERR_str_functs[]=
163 {
164 {ERR_PACK(0,SYS_F_FOPEN,0), "fopen"},
165 {ERR_PACK(0,SYS_F_CONNECT,0), "connect"},
166 {ERR_PACK(0,SYS_F_GETSERVBYNAME,0), "getservbyname"},
167 {ERR_PACK(0,SYS_F_SOCKET,0), "socket"},
168 {ERR_PACK(0,SYS_F_IOCTLSOCKET,0), "ioctlsocket"},
169 {ERR_PACK(0,SYS_F_BIND,0), "bind"},
170 {ERR_PACK(0,SYS_F_LISTEN,0), "listen"},
171 {ERR_PACK(0,SYS_F_ACCEPT,0), "accept"},
172#ifdef OPENSSL_SYS_WINDOWS
173 {ERR_PACK(0,SYS_F_WSASTARTUP,0), "WSAstartup"},
174#endif
175 {ERR_PACK(0,SYS_F_OPENDIR,0), "opendir"},
176 {ERR_PACK(0,SYS_F_FREAD,0), "fread"},
177 {0,NULL},
178 };
179
180static ERR_STRING_DATA ERR_str_reasons[]=
181 {
182{ERR_R_SYS_LIB ,"system lib"},
183{ERR_R_BN_LIB ,"BN lib"},
184{ERR_R_RSA_LIB ,"RSA lib"},
185{ERR_R_DH_LIB ,"DH lib"},
186{ERR_R_EVP_LIB ,"EVP lib"},
187{ERR_R_BUF_LIB ,"BUF lib"},
188{ERR_R_OBJ_LIB ,"OBJ lib"},
189{ERR_R_PEM_LIB ,"PEM lib"},
190{ERR_R_DSA_LIB ,"DSA lib"},
191{ERR_R_X509_LIB ,"X509 lib"},
192{ERR_R_ASN1_LIB ,"ASN1 lib"},
193{ERR_R_CONF_LIB ,"CONF lib"},
194{ERR_R_CRYPTO_LIB ,"CRYPTO lib"},
195{ERR_R_EC_LIB ,"EC lib"},
196{ERR_R_SSL_LIB ,"SSL lib"},
197{ERR_R_BIO_LIB ,"BIO lib"},
198{ERR_R_PKCS7_LIB ,"PKCS7 lib"},
199{ERR_R_X509V3_LIB ,"X509V3 lib"},
200{ERR_R_PKCS12_LIB ,"PKCS12 lib"},
201{ERR_R_RAND_LIB ,"RAND lib"},
202{ERR_R_DSO_LIB ,"DSO lib"},
203{ERR_R_ENGINE_LIB ,"ENGINE lib"},
204{ERR_R_OCSP_LIB ,"OCSP lib"},
205{ERR_R_TS_LIB ,"TS lib"},
206
207{ERR_R_NESTED_ASN1_ERROR ,"nested asn1 error"},
208{ERR_R_BAD_ASN1_OBJECT_HEADER ,"bad asn1 object header"},
209{ERR_R_BAD_GET_ASN1_OBJECT_CALL ,"bad get asn1 object call"},
210{ERR_R_EXPECTING_AN_ASN1_SEQUENCE ,"expecting an asn1 sequence"},
211{ERR_R_ASN1_LENGTH_MISMATCH ,"asn1 length mismatch"},
212{ERR_R_MISSING_ASN1_EOS ,"missing asn1 eos"},
213
214{ERR_R_FATAL ,"fatal"},
215{ERR_R_MALLOC_FAILURE ,"malloc failure"},
216{ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED ,"called a function you should not call"},
217{ERR_R_PASSED_NULL_PARAMETER ,"passed a null parameter"},
218{ERR_R_INTERNAL_ERROR ,"internal error"},
219{ERR_R_DISABLED ,"called a function that was disabled at compile-time"},
220
221{0,NULL},
222 };
223#endif
224
225
226/* Define the predeclared (but externally opaque) "ERR_FNS" type */
227struct st_ERR_FNS
228 {
229 /* Works on the "error_hash" string table */
230 LHASH_OF(ERR_STRING_DATA) *(*cb_err_get)(int create);
231 void (*cb_err_del)(void);
232 ERR_STRING_DATA *(*cb_err_get_item)(const ERR_STRING_DATA *);
233 ERR_STRING_DATA *(*cb_err_set_item)(ERR_STRING_DATA *);
234 ERR_STRING_DATA *(*cb_err_del_item)(ERR_STRING_DATA *);
235 /* Works on the "thread_hash" error-state table */
236 LHASH_OF(ERR_STATE) *(*cb_thread_get)(int create);
237 void (*cb_thread_release)(LHASH_OF(ERR_STATE) **hash);
238 ERR_STATE *(*cb_thread_get_item)(const ERR_STATE *);
239 ERR_STATE *(*cb_thread_set_item)(ERR_STATE *);
240 void (*cb_thread_del_item)(const ERR_STATE *);
241 /* Returns the next available error "library" numbers */
242 int (*cb_get_next_lib)(void);
243 };
244
245/* Predeclarations of the "err_defaults" functions */
246static LHASH_OF(ERR_STRING_DATA) *int_err_get(int create);
247static void int_err_del(void);
248static ERR_STRING_DATA *int_err_get_item(const ERR_STRING_DATA *);
249static ERR_STRING_DATA *int_err_set_item(ERR_STRING_DATA *);
250static ERR_STRING_DATA *int_err_del_item(ERR_STRING_DATA *);
251static LHASH_OF(ERR_STATE) *int_thread_get(int create);
252static void int_thread_release(LHASH_OF(ERR_STATE) **hash);
253static ERR_STATE *int_thread_get_item(const ERR_STATE *);
254static ERR_STATE *int_thread_set_item(ERR_STATE *);
255static void int_thread_del_item(const ERR_STATE *);
256static int int_err_get_next_lib(void);
257/* The static ERR_FNS table using these defaults functions */
258static const ERR_FNS err_defaults =
259 {
260 int_err_get,
261 int_err_del,
262 int_err_get_item,
263 int_err_set_item,
264 int_err_del_item,
265 int_thread_get,
266 int_thread_release,
267 int_thread_get_item,
268 int_thread_set_item,
269 int_thread_del_item,
270 int_err_get_next_lib
271 };
272
273/* The replacable table of ERR_FNS functions we use at run-time */
274static const ERR_FNS *err_fns = NULL;
275
276/* Eg. rather than using "err_get()", use "ERRFN(err_get)()". */
277#define ERRFN(a) err_fns->cb_##a
278
279/* The internal state used by "err_defaults" - as such, the setting, reading,
280 * creating, and deleting of this data should only be permitted via the
281 * "err_defaults" functions. This way, a linked module can completely defer all
282 * ERR state operation (together with requisite locking) to the implementations
283 * and state in the loading application. */
284static LHASH_OF(ERR_STRING_DATA) *int_error_hash = NULL;
285static LHASH_OF(ERR_STATE) *int_thread_hash = NULL;
286static int int_thread_hash_references = 0;
287static int int_err_library_number= ERR_LIB_USER;
288
289/* Internal function that checks whether "err_fns" is set and if not, sets it to
290 * the defaults. */
291static void err_fns_check(void)
292 {
293 if (err_fns) return;
294
295 CRYPTO_w_lock(CRYPTO_LOCK_ERR);
296 if (!err_fns)
297 err_fns = &err_defaults;
298 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
299 }
300
301/* API functions to get or set the underlying ERR functions. */
302
303const ERR_FNS *ERR_get_implementation(void)
304 {
305 err_fns_check();
306 return err_fns;
307 }
308
309int ERR_set_implementation(const ERR_FNS *fns)
310 {
311 int ret = 0;
312
313 CRYPTO_w_lock(CRYPTO_LOCK_ERR);
314 /* It's too late if 'err_fns' is non-NULL. BTW: not much point setting
315 * an error is there?! */
316 if (!err_fns)
317 {
318 err_fns = fns;
319 ret = 1;
320 }
321 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
322 return ret;
323 }
324
325/* These are the callbacks provided to "lh_new()" when creating the LHASH tables
326 * internal to the "err_defaults" implementation. */
327
328static unsigned long get_error_values(int inc,int top,const char **file,int *line,
329 const char **data,int *flags);
330
331/* The internal functions used in the "err_defaults" implementation */
332
333static unsigned long err_string_data_hash(const ERR_STRING_DATA *a)
334 {
335 unsigned long ret,l;
336
337 l=a->error;
338 ret=l^ERR_GET_LIB(l)^ERR_GET_FUNC(l);
339 return(ret^ret%19*13);
340 }
341static IMPLEMENT_LHASH_HASH_FN(err_string_data, ERR_STRING_DATA)
342
343static int err_string_data_cmp(const ERR_STRING_DATA *a,
344 const ERR_STRING_DATA *b)
345 {
346 return (int)(a->error - b->error);
347 }
348static IMPLEMENT_LHASH_COMP_FN(err_string_data, ERR_STRING_DATA)
349
350static LHASH_OF(ERR_STRING_DATA) *int_err_get(int create)
351 {
352 LHASH_OF(ERR_STRING_DATA) *ret = NULL;
353
354 CRYPTO_w_lock(CRYPTO_LOCK_ERR);
355 if (!int_error_hash && create)
356 {
357 CRYPTO_push_info("int_err_get (err.c)");
358 int_error_hash = lh_ERR_STRING_DATA_new();
359 CRYPTO_pop_info();
360 }
361 if (int_error_hash)
362 ret = int_error_hash;
363 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
364
365 return ret;
366 }
367
368static void int_err_del(void)
369 {
370 CRYPTO_w_lock(CRYPTO_LOCK_ERR);
371 if (int_error_hash)
372 {
373 lh_ERR_STRING_DATA_free(int_error_hash);
374 int_error_hash = NULL;
375 }
376 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
377 }
378
379static ERR_STRING_DATA *int_err_get_item(const ERR_STRING_DATA *d)
380 {
381 ERR_STRING_DATA *p;
382 LHASH_OF(ERR_STRING_DATA) *hash;
383
384 err_fns_check();
385 hash = ERRFN(err_get)(0);
386 if (!hash)
387 return NULL;
388
389 CRYPTO_r_lock(CRYPTO_LOCK_ERR);
390 p = lh_ERR_STRING_DATA_retrieve(hash, d);
391 CRYPTO_r_unlock(CRYPTO_LOCK_ERR);
392
393 return p;
394 }
395
396static ERR_STRING_DATA *int_err_set_item(ERR_STRING_DATA *d)
397 {
398 ERR_STRING_DATA *p;
399 LHASH_OF(ERR_STRING_DATA) *hash;
400
401 err_fns_check();
402 hash = ERRFN(err_get)(1);
403 if (!hash)
404 return NULL;
405
406 CRYPTO_w_lock(CRYPTO_LOCK_ERR);
407 p = lh_ERR_STRING_DATA_insert(hash, d);
408 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
409
410 return p;
411 }
412
413static ERR_STRING_DATA *int_err_del_item(ERR_STRING_DATA *d)
414 {
415 ERR_STRING_DATA *p;
416 LHASH_OF(ERR_STRING_DATA) *hash;
417
418 err_fns_check();
419 hash = ERRFN(err_get)(0);
420 if (!hash)
421 return NULL;
422
423 CRYPTO_w_lock(CRYPTO_LOCK_ERR);
424 p = lh_ERR_STRING_DATA_delete(hash, d);
425 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
426
427 return p;
428 }
429
430static unsigned long err_state_hash(const ERR_STATE *a)
431 {
432 return CRYPTO_THREADID_hash(&a->tid) * 13;
433 }
434static IMPLEMENT_LHASH_HASH_FN(err_state, ERR_STATE)
435
436static int err_state_cmp(const ERR_STATE *a, const ERR_STATE *b)
437 {
438 return CRYPTO_THREADID_cmp(&a->tid, &b->tid);
439 }
440static IMPLEMENT_LHASH_COMP_FN(err_state, ERR_STATE)
441
442static LHASH_OF(ERR_STATE) *int_thread_get(int create)
443 {
444 LHASH_OF(ERR_STATE) *ret = NULL;
445
446 CRYPTO_w_lock(CRYPTO_LOCK_ERR);
447 if (!int_thread_hash && create)
448 {
449 CRYPTO_push_info("int_thread_get (err.c)");
450 int_thread_hash = lh_ERR_STATE_new();
451 CRYPTO_pop_info();
452 }
453 if (int_thread_hash)
454 {
455 int_thread_hash_references++;
456 ret = int_thread_hash;
457 }
458 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
459 return ret;
460 }
461
462static void int_thread_release(LHASH_OF(ERR_STATE) **hash)
463 {
464 int i;
465
466 if (hash == NULL || *hash == NULL)
467 return;
468
469 i = CRYPTO_add(&int_thread_hash_references, -1, CRYPTO_LOCK_ERR);
470
471#ifdef REF_PRINT
472 fprintf(stderr,"%4d:%s\n",int_thread_hash_references,"ERR");
473#endif
474 if (i > 0) return;
475#ifdef REF_CHECK
476 if (i < 0)
477 {
478 fprintf(stderr,"int_thread_release, bad reference count\n");
479 abort(); /* ok */
480 }
481#endif
482 *hash = NULL;
483 }
484
485static ERR_STATE *int_thread_get_item(const ERR_STATE *d)
486 {
487 ERR_STATE *p;
488 LHASH_OF(ERR_STATE) *hash;
489
490 err_fns_check();
491 hash = ERRFN(thread_get)(0);
492 if (!hash)
493 return NULL;
494
495 CRYPTO_r_lock(CRYPTO_LOCK_ERR);
496 p = lh_ERR_STATE_retrieve(hash, d);
497 CRYPTO_r_unlock(CRYPTO_LOCK_ERR);
498
499 ERRFN(thread_release)(&hash);
500 return p;
501 }
502
503static ERR_STATE *int_thread_set_item(ERR_STATE *d)
504 {
505 ERR_STATE *p;
506 LHASH_OF(ERR_STATE) *hash;
507
508 err_fns_check();
509 hash = ERRFN(thread_get)(1);
510 if (!hash)
511 return NULL;
512
513 CRYPTO_w_lock(CRYPTO_LOCK_ERR);
514 p = lh_ERR_STATE_insert(hash, d);
515 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
516
517 ERRFN(thread_release)(&hash);
518 return p;
519 }
520
521static void int_thread_del_item(const ERR_STATE *d)
522 {
523 ERR_STATE *p;
524 LHASH_OF(ERR_STATE) *hash;
525
526 err_fns_check();
527 hash = ERRFN(thread_get)(0);
528 if (!hash)
529 return;
530
531 CRYPTO_w_lock(CRYPTO_LOCK_ERR);
532 p = lh_ERR_STATE_delete(hash, d);
533 /* make sure we don't leak memory */
534 if (int_thread_hash_references == 1
535 && int_thread_hash && lh_ERR_STATE_num_items(int_thread_hash) == 0)
536 {
537 lh_ERR_STATE_free(int_thread_hash);
538 int_thread_hash = NULL;
539 }
540 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
541
542 ERRFN(thread_release)(&hash);
543 if (p)
544 ERR_STATE_free(p);
545 }
546
547static int int_err_get_next_lib(void)
548 {
549 int ret;
550
551 CRYPTO_w_lock(CRYPTO_LOCK_ERR);
552 ret = int_err_library_number++;
553 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
554
555 return ret;
556 }
557
558
559#ifndef OPENSSL_NO_ERR
560#define NUM_SYS_STR_REASONS 127
561#define LEN_SYS_STR_REASON 32
562
563static ERR_STRING_DATA SYS_str_reasons[NUM_SYS_STR_REASONS + 1];
564/* SYS_str_reasons is filled with copies of strerror() results at
565 * initialization.
566 * 'errno' values up to 127 should cover all usual errors,
567 * others will be displayed numerically by ERR_error_string.
568 * It is crucial that we have something for each reason code
569 * that occurs in ERR_str_reasons, or bogus reason strings
570 * will be returned for SYSerr(), which always gets an errno
571 * value and never one of those 'standard' reason codes. */
572
573static void build_SYS_str_reasons(void)
574 {
575 /* OPENSSL_malloc cannot be used here, use static storage instead */
576 static char strerror_tab[NUM_SYS_STR_REASONS][LEN_SYS_STR_REASON];
577 int i;
578 static int init = 1;
579
580 CRYPTO_r_lock(CRYPTO_LOCK_ERR);
581 if (!init)
582 {
583 CRYPTO_r_unlock(CRYPTO_LOCK_ERR);
584 return;
585 }
586
587 CRYPTO_r_unlock(CRYPTO_LOCK_ERR);
588 CRYPTO_w_lock(CRYPTO_LOCK_ERR);
589 if (!init)
590 {
591 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
592 return;
593 }
594
595 for (i = 1; i <= NUM_SYS_STR_REASONS; i++)
596 {
597 ERR_STRING_DATA *str = &SYS_str_reasons[i - 1];
598
599 str->error = (unsigned long)i;
600 if (str->string == NULL)
601 {
602 char (*dest)[LEN_SYS_STR_REASON] = &(strerror_tab[i - 1]);
603 char *src = strerror(i);
604 if (src != NULL)
605 {
606 strncpy(*dest, src, sizeof *dest);
607 (*dest)[sizeof *dest - 1] = '\0';
608 str->string = *dest;
609 }
610 }
611 if (str->string == NULL)
612 str->string = "unknown";
613 }
614
615 /* Now we still have SYS_str_reasons[NUM_SYS_STR_REASONS] = {0, NULL},
616 * as required by ERR_load_strings. */
617
618 init = 0;
619
620 CRYPTO_w_unlock(CRYPTO_LOCK_ERR);
621 }
622#endif
125 623
126#define err_clear_data(p,i) \ 624#define err_clear_data(p,i) \
127 do { \ 625 do { \
@@ -143,6 +641,68 @@ static unsigned long get_error_values(int inc,int top,
143 (p)->err_line[i]= -1; \ 641 (p)->err_line[i]= -1; \
144 } while(0) 642 } while(0)
145 643
644static void ERR_STATE_free(ERR_STATE *s)
645 {
646 int i;
647
648 if (s == NULL)
649 return;
650
651 for (i=0; i<ERR_NUM_ERRORS; i++)
652 {
653 err_clear_data(s,i);
654 }
655 OPENSSL_free(s);
656 }
657
658void ERR_load_ERR_strings(void)
659 {
660 err_fns_check();
661#ifndef OPENSSL_NO_ERR
662 err_load_strings(0,ERR_str_libraries);
663 err_load_strings(0,ERR_str_reasons);
664 err_load_strings(ERR_LIB_SYS,ERR_str_functs);
665 build_SYS_str_reasons();
666 err_load_strings(ERR_LIB_SYS,SYS_str_reasons);
667#endif
668 }
669
670static void err_load_strings(int lib, ERR_STRING_DATA *str)
671 {
672 while (str->error)
673 {
674 if (lib)
675 str->error|=ERR_PACK(lib,0,0);
676 ERRFN(err_set_item)(str);
677 str++;
678 }
679 }
680
681void ERR_load_strings(int lib, ERR_STRING_DATA *str)
682 {
683 ERR_load_ERR_strings();
684 err_load_strings(lib, str);
685 }
686
687void ERR_unload_strings(int lib, ERR_STRING_DATA *str)
688 {
689 while (str->error)
690 {
691 if (lib)
692 str->error|=ERR_PACK(lib,0,0);
693 ERRFN(err_del_item)(str);
694 str++;
695 }
696 }
697
698void ERR_free_strings(void)
699 {
700 err_fns_check();
701 ERRFN(err_del)();
702 }
703
704/********************************************************/
705
146void ERR_put_error(int lib, int func, int reason, const char *file, 706void ERR_put_error(int lib, int func, int reason, const char *file,
147 int line) 707 int line)
148 { 708 {
@@ -297,6 +857,196 @@ static unsigned long get_error_values(int inc, int top, const char **file, int *
297 return ret; 857 return ret;
298 } 858 }
299 859
860void ERR_error_string_n(unsigned long e, char *buf, size_t len)
861 {
862 char lsbuf[64], fsbuf[64], rsbuf[64];
863 const char *ls,*fs,*rs;
864 unsigned long l,f,r;
865
866 l=ERR_GET_LIB(e);
867 f=ERR_GET_FUNC(e);
868 r=ERR_GET_REASON(e);
869
870 ls=ERR_lib_error_string(e);
871 fs=ERR_func_error_string(e);
872 rs=ERR_reason_error_string(e);
873
874 if (ls == NULL)
875 BIO_snprintf(lsbuf, sizeof(lsbuf), "lib(%lu)", l);
876 if (fs == NULL)
877 BIO_snprintf(fsbuf, sizeof(fsbuf), "func(%lu)", f);
878 if (rs == NULL)
879 BIO_snprintf(rsbuf, sizeof(rsbuf), "reason(%lu)", r);
880
881 BIO_snprintf(buf, len,"error:%08lX:%s:%s:%s", e, ls?ls:lsbuf,
882 fs?fs:fsbuf, rs?rs:rsbuf);
883 if (strlen(buf) == len-1)
884 {
885 /* output may be truncated; make sure we always have 5
886 * colon-separated fields, i.e. 4 colons ... */
887#define NUM_COLONS 4
888 if (len > NUM_COLONS) /* ... if possible */
889 {
890 int i;
891 char *s = buf;
892
893 for (i = 0; i < NUM_COLONS; i++)
894 {
895 char *colon = strchr(s, ':');
896 if (colon == NULL || colon > &buf[len-1] - NUM_COLONS + i)
897 {
898 /* set colon no. i at last possible position
899 * (buf[len-1] is the terminating 0)*/
900 colon = &buf[len-1] - NUM_COLONS + i;
901 *colon = ':';
902 }
903 s = colon + 1;
904 }
905 }
906 }
907 }
908
909/* BAD for multi-threading: uses a local buffer if ret == NULL */
910/* ERR_error_string_n should be used instead for ret != NULL
911 * as ERR_error_string cannot know how large the buffer is */
912char *ERR_error_string(unsigned long e, char *ret)
913 {
914 static char buf[256];
915
916 if (ret == NULL) ret=buf;
917 ERR_error_string_n(e, ret, 256);
918
919 return ret;
920 }
921
922LHASH_OF(ERR_STRING_DATA) *ERR_get_string_table(void)
923 {
924 err_fns_check();
925 return ERRFN(err_get)(0);
926 }
927
928LHASH_OF(ERR_STATE) *ERR_get_err_state_table(void)
929 {
930 err_fns_check();
931 return ERRFN(thread_get)(0);
932 }
933
934void ERR_release_err_state_table(LHASH_OF(ERR_STATE) **hash)
935 {
936 err_fns_check();
937 ERRFN(thread_release)(hash);
938 }
939
940const char *ERR_lib_error_string(unsigned long e)
941 {
942 ERR_STRING_DATA d,*p;
943 unsigned long l;
944
945 err_fns_check();
946 l=ERR_GET_LIB(e);
947 d.error=ERR_PACK(l,0,0);
948 p=ERRFN(err_get_item)(&d);
949 return((p == NULL)?NULL:p->string);
950 }
951
952const char *ERR_func_error_string(unsigned long e)
953 {
954 ERR_STRING_DATA d,*p;
955 unsigned long l,f;
956
957 err_fns_check();
958 l=ERR_GET_LIB(e);
959 f=ERR_GET_FUNC(e);
960 d.error=ERR_PACK(l,f,0);
961 p=ERRFN(err_get_item)(&d);
962 return((p == NULL)?NULL:p->string);
963 }
964
965const char *ERR_reason_error_string(unsigned long e)
966 {
967 ERR_STRING_DATA d,*p=NULL;
968 unsigned long l,r;
969
970 err_fns_check();
971 l=ERR_GET_LIB(e);
972 r=ERR_GET_REASON(e);
973 d.error=ERR_PACK(l,0,r);
974 p=ERRFN(err_get_item)(&d);
975 if (!p)
976 {
977 d.error=ERR_PACK(0,0,r);
978 p=ERRFN(err_get_item)(&d);
979 }
980 return((p == NULL)?NULL:p->string);
981 }
982
983void ERR_remove_thread_state(const CRYPTO_THREADID *id)
984 {
985 ERR_STATE tmp;
986
987 if (id)
988 CRYPTO_THREADID_cpy(&tmp.tid, id);
989 else
990 CRYPTO_THREADID_current(&tmp.tid);
991 err_fns_check();
992 /* thread_del_item automatically destroys the LHASH if the number of
993 * items reaches zero. */
994 ERRFN(thread_del_item)(&tmp);
995 }
996
997#ifndef OPENSSL_NO_DEPRECATED
998void ERR_remove_state(unsigned long pid)
999 {
1000 ERR_remove_thread_state(NULL);
1001 }
1002#endif
1003
1004ERR_STATE *ERR_get_state(void)
1005 {
1006 static ERR_STATE fallback;
1007 ERR_STATE *ret,tmp,*tmpp=NULL;
1008 int i;
1009 CRYPTO_THREADID tid;
1010
1011 err_fns_check();
1012 CRYPTO_THREADID_current(&tid);
1013 CRYPTO_THREADID_cpy(&tmp.tid, &tid);
1014 ret=ERRFN(thread_get_item)(&tmp);
1015
1016 /* ret == the error state, if NULL, make a new one */
1017 if (ret == NULL)
1018 {
1019 ret=(ERR_STATE *)OPENSSL_malloc(sizeof(ERR_STATE));
1020 if (ret == NULL) return(&fallback);
1021 CRYPTO_THREADID_cpy(&ret->tid, &tid);
1022 ret->top=0;
1023 ret->bottom=0;
1024 for (i=0; i<ERR_NUM_ERRORS; i++)
1025 {
1026 ret->err_data[i]=NULL;
1027 ret->err_data_flags[i]=0;
1028 }
1029 tmpp = ERRFN(thread_set_item)(ret);
1030 /* To check if insertion failed, do a get. */
1031 if (ERRFN(thread_get_item)(ret) != ret)
1032 {
1033 ERR_STATE_free(ret); /* could not insert it */
1034 return(&fallback);
1035 }
1036 /* If a race occured in this function and we came second, tmpp
1037 * is the first one that we just replaced. */
1038 if (tmpp)
1039 ERR_STATE_free(tmpp);
1040 }
1041 return ret;
1042 }
1043
1044int ERR_get_next_error_library(void)
1045 {
1046 err_fns_check();
1047 return ERRFN(get_next_lib)();
1048 }
1049
300void ERR_set_error_data(char *data, int flags) 1050void ERR_set_error_data(char *data, int flags)
301 { 1051 {
302 ERR_STATE *es; 1052 ERR_STATE *es;
@@ -383,34 +1133,3 @@ int ERR_pop_to_mark(void)
383 es->err_flags[es->top]&=~ERR_FLAG_MARK; 1133 es->err_flags[es->top]&=~ERR_FLAG_MARK;
384 return 1; 1134 return 1;
385 } 1135 }
386
387#ifdef OPENSSL_FIPS
388
389static ERR_STATE *fget_state(void)
390 {
391 static ERR_STATE fstate;
392 return &fstate;
393 }
394
395ERR_STATE *(*get_state_func)(void) = fget_state;
396void (*remove_state_func)(unsigned long pid);
397
398ERR_STATE *ERR_get_state(void)
399 {
400 return get_state_func();
401 }
402
403void int_ERR_set_state_func(ERR_STATE *(*get_func)(void),
404 void (*remove_func)(unsigned long pid))
405 {
406 get_state_func = get_func;
407 remove_state_func = remove_func;
408 }
409
410void ERR_remove_state(unsigned long pid)
411 {
412 if (remove_state_func)
413 remove_state_func(pid);
414 }
415
416#endif
diff --git a/src/lib/libssl/src/crypto/err/err.h b/src/lib/libssl/src/crypto/err/err.h
index dcac415231..b9f8c16d47 100644
--- a/src/lib/libssl/src/crypto/err/err.h
+++ b/src/lib/libssl/src/crypto/err/err.h
@@ -55,6 +55,59 @@
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ====================================================================
59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60 *
61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions
63 * are met:
64 *
65 * 1. Redistributions of source code must retain the above copyright
66 * notice, this list of conditions and the following disclaimer.
67 *
68 * 2. Redistributions in binary form must reproduce the above copyright
69 * notice, this list of conditions and the following disclaimer in
70 * the documentation and/or other materials provided with the
71 * distribution.
72 *
73 * 3. All advertising materials mentioning features or use of this
74 * software must display the following acknowledgment:
75 * "This product includes software developed by the OpenSSL Project
76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77 *
78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79 * endorse or promote products derived from this software without
80 * prior written permission. For written permission, please contact
81 * openssl-core@openssl.org.
82 *
83 * 5. Products derived from this software may not be called "OpenSSL"
84 * nor may "OpenSSL" appear in their names without prior written
85 * permission of the OpenSSL Project.
86 *
87 * 6. Redistributions of any form whatsoever must retain the following
88 * acknowledgment:
89 * "This product includes software developed by the OpenSSL Project
90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91 *
92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103 * OF THE POSSIBILITY OF SUCH DAMAGE.
104 * ====================================================================
105 *
106 * This product includes cryptographic software written by Eric Young
107 * (eay@cryptsoft.com). This product includes software written by Tim
108 * Hudson (tjh@cryptsoft.com).
109 *
110 */
58 111
59#ifndef HEADER_ERR_H 112#ifndef HEADER_ERR_H
60#define HEADER_ERR_H 113#define HEADER_ERR_H
@@ -94,7 +147,7 @@ extern "C" {
94#define ERR_NUM_ERRORS 16 147#define ERR_NUM_ERRORS 16
95typedef struct err_state_st 148typedef struct err_state_st
96 { 149 {
97 unsigned long pid; 150 CRYPTO_THREADID tid;
98 int err_flags[ERR_NUM_ERRORS]; 151 int err_flags[ERR_NUM_ERRORS];
99 unsigned long err_buffer[ERR_NUM_ERRORS]; 152 unsigned long err_buffer[ERR_NUM_ERRORS];
100 char *err_data[ERR_NUM_ERRORS]; 153 char *err_data[ERR_NUM_ERRORS];
@@ -142,7 +195,9 @@ typedef struct err_state_st
142#define ERR_LIB_STORE 44 195#define ERR_LIB_STORE 44
143#define ERR_LIB_FIPS 45 196#define ERR_LIB_FIPS 45
144#define ERR_LIB_CMS 46 197#define ERR_LIB_CMS 46
145#define ERR_LIB_JPAKE 47 198#define ERR_LIB_TS 47
199#define ERR_LIB_HMAC 48
200#define ERR_LIB_JPAKE 49
146 201
147#define ERR_LIB_USER 128 202#define ERR_LIB_USER 128
148 203
@@ -176,6 +231,8 @@ typedef struct err_state_st
176#define STOREerr(f,r) ERR_PUT_error(ERR_LIB_STORE,(f),(r),__FILE__,__LINE__) 231#define STOREerr(f,r) ERR_PUT_error(ERR_LIB_STORE,(f),(r),__FILE__,__LINE__)
177#define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),__FILE__,__LINE__) 232#define FIPSerr(f,r) ERR_PUT_error(ERR_LIB_FIPS,(f),(r),__FILE__,__LINE__)
178#define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),__FILE__,__LINE__) 233#define CMSerr(f,r) ERR_PUT_error(ERR_LIB_CMS,(f),(r),__FILE__,__LINE__)
234#define TSerr(f,r) ERR_PUT_error(ERR_LIB_TS,(f),(r),__FILE__,__LINE__)
235#define HMACerr(f,r) ERR_PUT_error(ERR_LIB_HMAC,(f),(r),__FILE__,__LINE__)
179#define JPAKEerr(f,r) ERR_PUT_error(ERR_LIB_JPAKE,(f),(r),__FILE__,__LINE__) 236#define JPAKEerr(f,r) ERR_PUT_error(ERR_LIB_JPAKE,(f),(r),__FILE__,__LINE__)
180 237
181/* Borland C seems too stupid to be able to shift and do longs in 238/* Borland C seems too stupid to be able to shift and do longs in
@@ -232,6 +289,7 @@ typedef struct err_state_st
232#define ERR_R_ECDSA_LIB ERR_LIB_ECDSA /* 42 */ 289#define ERR_R_ECDSA_LIB ERR_LIB_ECDSA /* 42 */
233#define ERR_R_ECDH_LIB ERR_LIB_ECDH /* 43 */ 290#define ERR_R_ECDH_LIB ERR_LIB_ECDH /* 43 */
234#define ERR_R_STORE_LIB ERR_LIB_STORE /* 44 */ 291#define ERR_R_STORE_LIB ERR_LIB_STORE /* 44 */
292#define ERR_R_TS_LIB ERR_LIB_TS /* 45 */
235 293
236#define ERR_R_NESTED_ASN1_ERROR 58 294#define ERR_R_NESTED_ASN1_ERROR 58
237#define ERR_R_BAD_ASN1_OBJECT_HEADER 59 295#define ERR_R_BAD_ASN1_OBJECT_HEADER 59
@@ -294,13 +352,16 @@ void ERR_load_ERR_strings(void);
294void ERR_load_crypto_strings(void); 352void ERR_load_crypto_strings(void);
295void ERR_free_strings(void); 353void ERR_free_strings(void);
296 354
355void ERR_remove_thread_state(const CRYPTO_THREADID *tid);
356#ifndef OPENSSL_NO_DEPRECATED
297void ERR_remove_state(unsigned long pid); /* if zero we look it up */ 357void ERR_remove_state(unsigned long pid); /* if zero we look it up */
358#endif
298ERR_STATE *ERR_get_state(void); 359ERR_STATE *ERR_get_state(void);
299 360
300#ifndef OPENSSL_NO_LHASH 361#ifndef OPENSSL_NO_LHASH
301LHASH *ERR_get_string_table(void); 362LHASH_OF(ERR_STRING_DATA) *ERR_get_string_table(void);
302LHASH *ERR_get_err_state_table(void); 363LHASH_OF(ERR_STATE) *ERR_get_err_state_table(void);
303void ERR_release_err_state_table(LHASH **hash); 364void ERR_release_err_state_table(LHASH_OF(ERR_STATE) **hash);
304#endif 365#endif
305 366
306int ERR_get_next_error_library(void); 367int ERR_get_next_error_library(void);
@@ -308,12 +369,6 @@ int ERR_get_next_error_library(void);
308int ERR_set_mark(void); 369int ERR_set_mark(void);
309int ERR_pop_to_mark(void); 370int ERR_pop_to_mark(void);
310 371
311#ifdef OPENSSL_FIPS
312void int_ERR_set_state_func(ERR_STATE *(*get_func)(void),
313 void (*remove_func)(unsigned long pid));
314void int_ERR_lib_init(void);
315#endif
316
317/* Already defined in ossl_typ.h */ 372/* Already defined in ossl_typ.h */
318/* typedef struct st_ERR_FNS ERR_FNS; */ 373/* typedef struct st_ERR_FNS ERR_FNS; */
319/* An application can use this function and provide the return value to loaded 374/* An application can use this function and provide the return value to loaded
diff --git a/src/lib/libssl/src/crypto/err/err_all.c b/src/lib/libssl/src/crypto/err/err_all.c
index f21a5276ed..fc049e8e88 100644
--- a/src/lib/libssl/src/crypto/err/err_all.c
+++ b/src/lib/libssl/src/crypto/err/err_all.c
@@ -64,6 +64,7 @@
64#endif 64#endif
65#include <openssl/buffer.h> 65#include <openssl/buffer.h>
66#include <openssl/bio.h> 66#include <openssl/bio.h>
67#include <openssl/comp.h>
67#ifndef OPENSSL_NO_RSA 68#ifndef OPENSSL_NO_RSA
68#include <openssl/rsa.h> 69#include <openssl/rsa.h>
69#endif 70#endif
@@ -94,16 +95,14 @@
94#include <openssl/ui.h> 95#include <openssl/ui.h>
95#include <openssl/ocsp.h> 96#include <openssl/ocsp.h>
96#include <openssl/err.h> 97#include <openssl/err.h>
97#ifdef OPENSSL_FIPS 98#include <openssl/ts.h>
98#include <openssl/fips.h>
99#endif
100
101#ifndef OPENSSL_NO_CMS 99#ifndef OPENSSL_NO_CMS
102#include <openssl/cms.h> 100#include <openssl/cms.h>
103#endif 101#endif
104#ifndef OPENSSL_NO_JPAKE 102#ifndef OPENSSL_NO_JPAKE
105#include <openssl/jpake.h> 103#include <openssl/jpake.h>
106#endif 104#endif
105#include <openssl/comp.h>
107 106
108void ERR_load_crypto_strings(void) 107void ERR_load_crypto_strings(void)
109 { 108 {
@@ -127,6 +126,7 @@ void ERR_load_crypto_strings(void)
127 ERR_load_ASN1_strings(); 126 ERR_load_ASN1_strings();
128 ERR_load_CONF_strings(); 127 ERR_load_CONF_strings();
129 ERR_load_CRYPTO_strings(); 128 ERR_load_CRYPTO_strings();
129 ERR_load_COMP_strings();
130#ifndef OPENSSL_NO_EC 130#ifndef OPENSSL_NO_EC
131 ERR_load_EC_strings(); 131 ERR_load_EC_strings();
132#endif 132#endif
@@ -143,19 +143,18 @@ void ERR_load_crypto_strings(void)
143 ERR_load_PKCS12_strings(); 143 ERR_load_PKCS12_strings();
144 ERR_load_RAND_strings(); 144 ERR_load_RAND_strings();
145 ERR_load_DSO_strings(); 145 ERR_load_DSO_strings();
146 ERR_load_TS_strings();
146#ifndef OPENSSL_NO_ENGINE 147#ifndef OPENSSL_NO_ENGINE
147 ERR_load_ENGINE_strings(); 148 ERR_load_ENGINE_strings();
148#endif 149#endif
149 ERR_load_OCSP_strings(); 150 ERR_load_OCSP_strings();
150 ERR_load_UI_strings(); 151 ERR_load_UI_strings();
151#ifdef OPENSSL_FIPS
152 ERR_load_FIPS_strings();
153#endif
154#ifndef OPENSSL_NO_CMS 152#ifndef OPENSSL_NO_CMS
155 ERR_load_CMS_strings(); 153 ERR_load_CMS_strings();
156#endif 154#endif
157#ifndef OPENSSL_NO_JPAKE 155#ifndef OPENSSL_NO_JPAKE
158 ERR_load_JPAKE_strings(); 156 ERR_load_JPAKE_strings();
159#endif 157#endif
158 ERR_load_COMP_strings();
160#endif 159#endif
161 } 160 }
diff --git a/src/lib/libssl/src/crypto/err/err_prn.c b/src/lib/libssl/src/crypto/err/err_prn.c
index 4cdf342fa6..a0168ac8ed 100644
--- a/src/lib/libssl/src/crypto/err/err_prn.c
+++ b/src/lib/libssl/src/crypto/err/err_prn.c
@@ -72,21 +72,29 @@ void ERR_print_errors_cb(int (*cb)(const char *str, size_t len, void *u),
72 const char *file,*data; 72 const char *file,*data;
73 int line,flags; 73 int line,flags;
74 unsigned long es; 74 unsigned long es;
75 CRYPTO_THREADID cur;
75 76
76 es=CRYPTO_thread_id(); 77 CRYPTO_THREADID_current(&cur);
78 es=CRYPTO_THREADID_hash(&cur);
77 while ((l=ERR_get_error_line_data(&file,&line,&data,&flags)) != 0) 79 while ((l=ERR_get_error_line_data(&file,&line,&data,&flags)) != 0)
78 { 80 {
79 ERR_error_string_n(l, buf, sizeof buf); 81 ERR_error_string_n(l, buf, sizeof buf);
80 BIO_snprintf(buf2, sizeof(buf2), "%lu:%s:%s:%d:%s\n", es, buf, 82 BIO_snprintf(buf2, sizeof(buf2), "%lu:%s:%s:%d:%s\n", es, buf,
81 file, line, (flags & ERR_TXT_STRING) ? data : ""); 83 file, line, (flags & ERR_TXT_STRING) ? data : "");
82 cb(buf2, strlen(buf2), u); 84 if (cb(buf2, strlen(buf2), u) <= 0)
85 break; /* abort outputting the error report */
83 } 86 }
84 } 87 }
85 88
86#ifndef OPENSSL_NO_FP_API 89#ifndef OPENSSL_NO_FP_API
87static int print_fp(const char *str, size_t len, void *fp) 90static int print_fp(const char *str, size_t len, void *fp)
88 { 91 {
89 return fwrite(str, 1, len, fp); 92 BIO bio;
93
94 BIO_set(&bio,BIO_s_file());
95 BIO_set_fp(&bio,fp,BIO_NOCLOSE);
96
97 return BIO_printf(&bio, "%s", str);
90 } 98 }
91void ERR_print_errors_fp(FILE *fp) 99void ERR_print_errors_fp(FILE *fp)
92 { 100 {
@@ -94,64 +102,13 @@ void ERR_print_errors_fp(FILE *fp)
94 } 102 }
95#endif 103#endif
96 104
97void ERR_error_string_n(unsigned long e, char *buf, size_t len) 105static int print_bio(const char *str, size_t len, void *bp)
98 { 106 {
99 char lsbuf[64], fsbuf[64], rsbuf[64]; 107 return BIO_write((BIO *)bp, str, len);
100 const char *ls,*fs,*rs;
101 unsigned long l,f,r;
102
103 l=ERR_GET_LIB(e);
104 f=ERR_GET_FUNC(e);
105 r=ERR_GET_REASON(e);
106
107 ls=ERR_lib_error_string(e);
108 fs=ERR_func_error_string(e);
109 rs=ERR_reason_error_string(e);
110
111 if (ls == NULL)
112 BIO_snprintf(lsbuf, sizeof(lsbuf), "lib(%lu)", l);
113 if (fs == NULL)
114 BIO_snprintf(fsbuf, sizeof(fsbuf), "func(%lu)", f);
115 if (rs == NULL)
116 BIO_snprintf(rsbuf, sizeof(rsbuf), "reason(%lu)", r);
117
118 BIO_snprintf(buf, len,"error:%08lX:%s:%s:%s", e, ls?ls:lsbuf,
119 fs?fs:fsbuf, rs?rs:rsbuf);
120 if (strlen(buf) == len-1)
121 {
122 /* output may be truncated; make sure we always have 5
123 * colon-separated fields, i.e. 4 colons ... */
124#define NUM_COLONS 4
125 if (len > NUM_COLONS) /* ... if possible */
126 {
127 int i;
128 char *s = buf;
129
130 for (i = 0; i < NUM_COLONS; i++)
131 {
132 char *colon = strchr(s, ':');
133 if (colon == NULL || colon > &buf[len-1] - NUM_COLONS + i)
134 {
135 /* set colon no. i at last possible position
136 * (buf[len-1] is the terminating 0)*/
137 colon = &buf[len-1] - NUM_COLONS + i;
138 *colon = ':';
139 }
140 s = colon + 1;
141 }
142 }
143 }
144 } 108 }
145 109void ERR_print_errors(BIO *bp)
146/* BAD for multi-threading: uses a local buffer if ret == NULL */
147/* ERR_error_string_n should be used instead for ret != NULL
148 * as ERR_error_string cannot know how large the buffer is */
149char *ERR_error_string(unsigned long e, char *ret)
150 { 110 {
151 static char buf[256]; 111 ERR_print_errors_cb(print_bio, bp);
152
153 if (ret == NULL) ret=buf;
154 ERR_error_string_n(e, ret, 256);
155
156 return ret;
157 } 112 }
113
114
diff --git a/src/lib/libssl/src/crypto/err/openssl.ec b/src/lib/libssl/src/crypto/err/openssl.ec
index 868826624d..e0554b4342 100644
--- a/src/lib/libssl/src/crypto/err/openssl.ec
+++ b/src/lib/libssl/src/crypto/err/openssl.ec
@@ -31,13 +31,15 @@ L COMP crypto/comp/comp.h crypto/comp/comp_err.c
31L ECDSA crypto/ecdsa/ecdsa.h crypto/ecdsa/ecs_err.c 31L ECDSA crypto/ecdsa/ecdsa.h crypto/ecdsa/ecs_err.c
32L ECDH crypto/ecdh/ecdh.h crypto/ecdh/ech_err.c 32L ECDH crypto/ecdh/ecdh.h crypto/ecdh/ech_err.c
33L STORE crypto/store/store.h crypto/store/str_err.c 33L STORE crypto/store/store.h crypto/store/str_err.c
34L FIPS fips/fips.h crypto/fips_err.h 34L TS crypto/ts/ts.h crypto/ts/ts_err.c
35L HMAC crypto/hmac/hmac.h crypto/hmac/hmac_err.c
35L CMS crypto/cms/cms.h crypto/cms/cms_err.c 36L CMS crypto/cms/cms.h crypto/cms/cms_err.c
36L JPAKE crypto/jpake/jpake.h crypto/jpake/jpake_err.c 37L JPAKE crypto/jpake/jpake.h crypto/jpake/jpake_err.c
37 38
38# additional header files to be scanned for function names 39# additional header files to be scanned for function names
39L NONE crypto/x509/x509_vfy.h NONE 40L NONE crypto/x509/x509_vfy.h NONE
40L NONE crypto/ec/ec_lcl.h NONE 41L NONE crypto/ec/ec_lcl.h NONE
42L NONE crypto/asn1/asn_lcl.h NONE
41L NONE crypto/cms/cms_lcl.h NONE 43L NONE crypto/cms/cms_lcl.h NONE
42 44
43 45
@@ -71,6 +73,11 @@ R SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071
71R SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080 73R SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080
72R SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 74R SSL_R_TLSV1_ALERT_USER_CANCELLED 1090
73R SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100 75R SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100
76R SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110
77R SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111
78R SSL_R_TLSV1_UNRECOGNIZED_NAME 1112
79R SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113
80R SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114
74 81
75R RSAREF_R_CONTENT_ENCODING 0x0400 82R RSAREF_R_CONTENT_ENCODING 0x0400
76R RSAREF_R_DATA 0x0401 83R RSAREF_R_DATA 0x0401
diff --git a/src/lib/libssl/src/crypto/evp/Makefile b/src/lib/libssl/src/crypto/evp/Makefile
index c204f84c1d..82825e5299 100644
--- a/src/lib/libssl/src/crypto/evp/Makefile
+++ b/src/lib/libssl/src/crypto/evp/Makefile
@@ -18,34 +18,34 @@ TESTDATA=evptests.txt
18APPS= 18APPS=
19 19
20LIB=$(TOP)/libcrypto.a 20LIB=$(TOP)/libcrypto.a
21LIBSRC= encode.c digest.c dig_eng.c evp_enc.c evp_key.c evp_acnf.c evp_cnf.c \ 21LIBSRC= encode.c digest.c evp_enc.c evp_key.c evp_acnf.c \
22 e_des.c e_bf.c e_idea.c e_des3.c e_camellia.c\ 22 e_des.c e_bf.c e_idea.c e_des3.c e_camellia.c\
23 e_rc4.c e_aes.c names.c e_seed.c \ 23 e_rc4.c e_aes.c names.c e_seed.c \
24 e_xcbc_d.c e_rc2.c e_cast.c e_rc5.c enc_min.c \ 24 e_xcbc_d.c e_rc2.c e_cast.c e_rc5.c \
25 m_null.c m_md2.c m_md4.c m_md5.c m_sha.c m_sha1.c \ 25 m_null.c m_md2.c m_md4.c m_md5.c m_sha.c m_sha1.c m_wp.c \
26 m_dss.c m_dss1.c m_mdc2.c m_ripemd.c m_ecdsa.c\ 26 m_dss.c m_dss1.c m_mdc2.c m_ripemd.c m_ecdsa.c\
27 p_open.c p_seal.c p_sign.c p_verify.c p_lib.c p_enc.c p_dec.c \ 27 p_open.c p_seal.c p_sign.c p_verify.c p_lib.c p_enc.c p_dec.c \
28 bio_md.c bio_b64.c bio_enc.c evp_err.c e_null.c \ 28 bio_md.c bio_b64.c bio_enc.c evp_err.c e_null.c \
29 c_all.c c_allc.c c_alld.c evp_lib.c bio_ok.c \ 29 c_all.c c_allc.c c_alld.c evp_lib.c bio_ok.c \
30 evp_pkey.c evp_pbe.c p5_crpt.c p5_crpt2.c \ 30 evp_pkey.c evp_pbe.c p5_crpt.c p5_crpt2.c \
31 e_old.c 31 e_old.c pmeth_lib.c pmeth_fn.c pmeth_gn.c m_sigver.c
32 32
33LIBOBJ= encode.o digest.o dig_eng.o evp_enc.o evp_key.o evp_acnf.o evp_cnf.o \ 33LIBOBJ= encode.o digest.o evp_enc.o evp_key.o evp_acnf.o \
34 e_des.o e_bf.o e_idea.o e_des3.o e_camellia.o\ 34 e_des.o e_bf.o e_idea.o e_des3.o e_camellia.o\
35 e_rc4.o e_aes.o names.o e_seed.o \ 35 e_rc4.o e_aes.o names.o e_seed.o \
36 e_xcbc_d.o e_rc2.o e_cast.o e_rc5.o enc_min.o \ 36 e_xcbc_d.o e_rc2.o e_cast.o e_rc5.o \
37 m_null.o m_md2.o m_md4.o m_md5.o m_sha.o m_sha1.o \ 37 m_null.o m_md2.o m_md4.o m_md5.o m_sha.o m_sha1.o m_wp.o \
38 m_dss.o m_dss1.o m_mdc2.o m_ripemd.o m_ecdsa.o\ 38 m_dss.o m_dss1.o m_mdc2.o m_ripemd.o m_ecdsa.o\
39 p_open.o p_seal.o p_sign.o p_verify.o p_lib.o p_enc.o p_dec.o \ 39 p_open.o p_seal.o p_sign.o p_verify.o p_lib.o p_enc.o p_dec.o \
40 bio_md.o bio_b64.o bio_enc.o evp_err.o e_null.o \ 40 bio_md.o bio_b64.o bio_enc.o evp_err.o e_null.o \
41 c_all.o c_allc.o c_alld.o evp_lib.o bio_ok.o \ 41 c_all.o c_allc.o c_alld.o evp_lib.o bio_ok.o \
42 evp_pkey.o evp_pbe.o p5_crpt.o p5_crpt2.o \ 42 evp_pkey.o evp_pbe.o p5_crpt.o p5_crpt2.o \
43 e_old.o 43 e_old.o pmeth_lib.o pmeth_fn.o pmeth_gn.o m_sigver.o
44 44
45SRC= $(LIBSRC) 45SRC= $(LIBSRC)
46 46
47EXHEADER= evp.h 47EXHEADER= evp.h
48HEADER= $(EXHEADER) 48HEADER= evp_locl.h $(EXHEADER)
49 49
50ALL= $(GENERAL) $(SRC) $(HEADER) 50ALL= $(GENERAL) $(SRC) $(HEADER)
51 51
@@ -55,7 +55,7 @@ top:
55all: lib 55all: lib
56 56
57lib: $(LIBOBJ) 57lib: $(LIBOBJ)
58 $(ARX) $(LIB) $(LIBOBJ) 58 $(AR) $(LIB) $(LIBOBJ)
59 $(RANLIB) $(LIB) || echo Never mind. 59 $(RANLIB) $(LIB) || echo Never mind.
60 @touch lib 60 @touch lib
61 61
@@ -101,201 +101,185 @@ bio_b64.o: ../../e_os.h ../../include/openssl/asn1.h
101bio_b64.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 101bio_b64.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
102bio_b64.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 102bio_b64.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
103bio_b64.o: ../../include/openssl/err.h ../../include/openssl/evp.h 103bio_b64.o: ../../include/openssl/err.h ../../include/openssl/evp.h
104bio_b64.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 104bio_b64.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
105bio_b64.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 105bio_b64.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
106bio_b64.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 106bio_b64.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
107bio_b64.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 107bio_b64.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
108bio_b64.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 108bio_b64.o: ../../include/openssl/symhacks.h ../cryptlib.h bio_b64.c
109bio_b64.o: ../cryptlib.h bio_b64.c
110bio_enc.o: ../../e_os.h ../../include/openssl/asn1.h 109bio_enc.o: ../../e_os.h ../../include/openssl/asn1.h
111bio_enc.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 110bio_enc.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
112bio_enc.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 111bio_enc.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
113bio_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h 112bio_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h
114bio_enc.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 113bio_enc.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
115bio_enc.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 114bio_enc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
116bio_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 115bio_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
117bio_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 116bio_enc.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
118bio_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 117bio_enc.o: ../../include/openssl/symhacks.h ../cryptlib.h bio_enc.c
119bio_enc.o: ../cryptlib.h bio_enc.c
120bio_md.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 118bio_md.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
121bio_md.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 119bio_md.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
122bio_md.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 120bio_md.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
123bio_md.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 121bio_md.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
124bio_md.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 122bio_md.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
125bio_md.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 123bio_md.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
126bio_md.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 124bio_md.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
127bio_md.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 125bio_md.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
128bio_md.o: ../../include/openssl/symhacks.h ../cryptlib.h bio_md.c 126bio_md.o: ../cryptlib.h bio_md.c
129bio_ok.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 127bio_ok.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
130bio_ok.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 128bio_ok.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
131bio_ok.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 129bio_ok.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
132bio_ok.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 130bio_ok.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
133bio_ok.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 131bio_ok.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
134bio_ok.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 132bio_ok.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
135bio_ok.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 133bio_ok.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
136bio_ok.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 134bio_ok.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
137bio_ok.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 135bio_ok.o: ../../include/openssl/symhacks.h ../cryptlib.h bio_ok.c
138bio_ok.o: ../cryptlib.h bio_ok.c
139c_all.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 136c_all.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
140c_all.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 137c_all.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
141c_all.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 138c_all.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
142c_all.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 139c_all.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
143c_all.o: ../../include/openssl/engine.h ../../include/openssl/err.h 140c_all.o: ../../include/openssl/engine.h ../../include/openssl/err.h
144c_all.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 141c_all.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
145c_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 142c_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
146c_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 143c_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
147c_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 144c_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
148c_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 145c_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
149c_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 146c_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
150c_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 147c_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
151c_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h c_all.c 148c_all.o: ../cryptlib.h c_all.c
152c_allc.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 149c_allc.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
153c_allc.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 150c_allc.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
154c_allc.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 151c_allc.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
155c_allc.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 152c_allc.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
156c_allc.o: ../../include/openssl/err.h ../../include/openssl/evp.h 153c_allc.o: ../../include/openssl/err.h ../../include/openssl/evp.h
157c_allc.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 154c_allc.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
158c_allc.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 155c_allc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
159c_allc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 156c_allc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
160c_allc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h 157c_allc.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
161c_allc.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 158c_allc.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
162c_allc.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 159c_allc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
163c_allc.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 160c_allc.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
164c_allc.o: ../../include/openssl/x509_vfy.h ../cryptlib.h c_allc.c 161c_allc.o: ../cryptlib.h c_allc.c
165c_alld.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 162c_alld.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
166c_alld.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 163c_alld.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
167c_alld.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 164c_alld.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
168c_alld.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 165c_alld.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
169c_alld.o: ../../include/openssl/err.h ../../include/openssl/evp.h 166c_alld.o: ../../include/openssl/err.h ../../include/openssl/evp.h
170c_alld.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 167c_alld.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
171c_alld.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 168c_alld.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
172c_alld.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 169c_alld.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
173c_alld.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h 170c_alld.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
174c_alld.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 171c_alld.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
175c_alld.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 172c_alld.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
176c_alld.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 173c_alld.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
177c_alld.o: ../../include/openssl/x509_vfy.h ../cryptlib.h c_alld.c 174c_alld.o: ../cryptlib.h c_alld.c
178dig_eng.o: ../../e_os.h ../../include/openssl/asn1.h
179dig_eng.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
180dig_eng.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
181dig_eng.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
182dig_eng.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
183dig_eng.o: ../../include/openssl/err.h ../../include/openssl/evp.h
184dig_eng.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
185dig_eng.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
186dig_eng.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
187dig_eng.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
188dig_eng.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
189dig_eng.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
190dig_eng.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
191dig_eng.o: ../cryptlib.h dig_eng.c evp_locl.h
192digest.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 175digest.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
193digest.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 176digest.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
194digest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 177digest.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
195digest.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 178digest.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
196digest.o: ../../include/openssl/engine.h ../../include/openssl/err.h 179digest.o: ../../include/openssl/engine.h ../../include/openssl/err.h
197digest.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 180digest.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
198digest.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 181digest.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
199digest.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 182digest.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
200digest.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 183digest.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
201digest.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 184digest.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
202digest.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 185digest.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
203digest.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 186digest.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
204digest.o: ../../include/openssl/x509_vfy.h ../cryptlib.h digest.c evp_locl.h 187digest.o: ../cryptlib.h digest.c
205e_aes.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h 188e_aes.o: ../../include/openssl/aes.h ../../include/openssl/asn1.h
206e_aes.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 189e_aes.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
207e_aes.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 190e_aes.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
208e_aes.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 191e_aes.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
209e_aes.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 192e_aes.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
210e_aes.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 193e_aes.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
211e_aes.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 194e_aes.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
212e_aes.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 195e_aes.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h e_aes.c
213e_aes.o: ../../include/openssl/symhacks.h e_aes.c evp_locl.h 196e_aes.o: evp_locl.h
214e_bf.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 197e_bf.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
215e_bf.o: ../../include/openssl/blowfish.h ../../include/openssl/buffer.h 198e_bf.o: ../../include/openssl/blowfish.h ../../include/openssl/buffer.h
216e_bf.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 199e_bf.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
217e_bf.o: ../../include/openssl/err.h ../../include/openssl/evp.h 200e_bf.o: ../../include/openssl/err.h ../../include/openssl/evp.h
218e_bf.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 201e_bf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
219e_bf.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 202e_bf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
220e_bf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 203e_bf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
221e_bf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 204e_bf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
222e_bf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 205e_bf.o: ../../include/openssl/symhacks.h ../cryptlib.h e_bf.c evp_locl.h
223e_bf.o: ../cryptlib.h e_bf.c evp_locl.h 206e_camellia.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
224e_camellia.o: ../../include/openssl/opensslconf.h e_camellia.c 207e_camellia.o: ../../include/openssl/camellia.h ../../include/openssl/crypto.h
208e_camellia.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
209e_camellia.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
210e_camellia.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
211e_camellia.o: ../../include/openssl/opensslconf.h
212e_camellia.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
213e_camellia.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
214e_camellia.o: ../../include/openssl/symhacks.h e_camellia.c evp_locl.h
225e_cast.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 215e_cast.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
226e_cast.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h 216e_cast.o: ../../include/openssl/buffer.h ../../include/openssl/cast.h
227e_cast.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 217e_cast.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
228e_cast.o: ../../include/openssl/err.h ../../include/openssl/evp.h 218e_cast.o: ../../include/openssl/err.h ../../include/openssl/evp.h
229e_cast.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 219e_cast.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
230e_cast.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 220e_cast.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
231e_cast.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 221e_cast.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
232e_cast.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 222e_cast.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
233e_cast.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 223e_cast.o: ../../include/openssl/symhacks.h ../cryptlib.h e_cast.c evp_locl.h
234e_cast.o: ../cryptlib.h e_cast.c evp_locl.h
235e_des.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 224e_des.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
236e_des.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 225e_des.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
237e_des.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 226e_des.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
238e_des.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 227e_des.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
239e_des.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 228e_des.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
240e_des.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 229e_des.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
241e_des.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 230e_des.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
242e_des.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 231e_des.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
243e_des.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 232e_des.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
244e_des.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 233e_des.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
245e_des.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 234e_des.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_des.c evp_locl.h
246e_des.o: ../cryptlib.h e_des.c evp_locl.h
247e_des3.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 235e_des3.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
248e_des3.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 236e_des3.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
249e_des3.o: ../../include/openssl/des.h ../../include/openssl/des_old.h 237e_des3.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
250e_des3.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 238e_des3.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
251e_des3.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 239e_des3.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
252e_des3.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 240e_des3.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
253e_des3.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 241e_des3.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
254e_des3.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 242e_des3.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
255e_des3.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 243e_des3.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
256e_des3.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 244e_des3.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
257e_des3.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h 245e_des3.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_des3.c evp_locl.h
258e_des3.o: ../cryptlib.h e_des3.c evp_locl.h
259e_idea.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 246e_idea.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
260e_idea.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 247e_idea.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
261e_idea.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 248e_idea.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
262e_idea.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 249e_idea.o: ../../include/openssl/evp.h ../../include/openssl/idea.h
263e_idea.o: ../../include/openssl/idea.h ../../include/openssl/lhash.h 250e_idea.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
264e_idea.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 251e_idea.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
265e_idea.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 252e_idea.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
266e_idea.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 253e_idea.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
267e_idea.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 254e_idea.o: ../../include/openssl/symhacks.h ../cryptlib.h e_idea.c evp_locl.h
268e_idea.o: ../cryptlib.h e_idea.c evp_locl.h
269e_null.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 255e_null.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
270e_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 256e_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
271e_null.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 257e_null.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
272e_null.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 258e_null.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
273e_null.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 259e_null.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
274e_null.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 260e_null.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
275e_null.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 261e_null.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
276e_null.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 262e_null.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
277e_null.o: ../../include/openssl/symhacks.h ../cryptlib.h e_null.c 263e_null.o: ../cryptlib.h e_null.c
278e_old.o: e_old.c 264e_old.o: e_old.c
279e_rc2.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 265e_rc2.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
280e_rc2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 266e_rc2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
281e_rc2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 267e_rc2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
282e_rc2.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 268e_rc2.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
283e_rc2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 269e_rc2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
284e_rc2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 270e_rc2.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
285e_rc2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 271e_rc2.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc2.h
286e_rc2.o: ../../include/openssl/rc2.h ../../include/openssl/safestack.h 272e_rc2.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
287e_rc2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 273e_rc2.o: ../../include/openssl/symhacks.h ../cryptlib.h e_rc2.c evp_locl.h
288e_rc2.o: ../cryptlib.h e_rc2.c evp_locl.h
289e_rc4.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 274e_rc4.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
290e_rc4.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 275e_rc4.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
291e_rc4.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 276e_rc4.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
292e_rc4.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 277e_rc4.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
293e_rc4.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 278e_rc4.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
294e_rc4.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 279e_rc4.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
295e_rc4.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 280e_rc4.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rc4.h
296e_rc4.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h 281e_rc4.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
297e_rc4.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 282e_rc4.o: ../../include/openssl/symhacks.h ../cryptlib.h e_rc4.c
298e_rc4.o: ../cryptlib.h e_rc4.c evp_locl.h
299e_rc5.o: ../../e_os.h ../../include/openssl/bio.h 283e_rc5.o: ../../e_os.h ../../include/openssl/bio.h
300e_rc5.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 284e_rc5.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
301e_rc5.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 285e_rc5.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
@@ -306,256 +290,221 @@ e_rc5.o: ../../include/openssl/symhacks.h ../cryptlib.h e_rc5.c
306e_seed.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 290e_seed.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
307e_seed.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 291e_seed.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
308e_seed.o: ../../include/openssl/err.h ../../include/openssl/evp.h 292e_seed.o: ../../include/openssl/err.h ../../include/openssl/evp.h
309e_seed.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 293e_seed.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
310e_seed.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 294e_seed.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
311e_seed.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 295e_seed.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
312e_seed.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 296e_seed.o: ../../include/openssl/safestack.h ../../include/openssl/seed.h
313e_seed.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 297e_seed.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
314e_seed.o: e_seed.c 298e_seed.o: e_seed.c evp_locl.h
315e_xcbc_d.o: ../../e_os.h ../../include/openssl/asn1.h 299e_xcbc_d.o: ../../e_os.h ../../include/openssl/asn1.h
316e_xcbc_d.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 300e_xcbc_d.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
317e_xcbc_d.o: ../../include/openssl/crypto.h ../../include/openssl/des.h 301e_xcbc_d.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
318e_xcbc_d.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h 302e_xcbc_d.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
319e_xcbc_d.o: ../../include/openssl/err.h ../../include/openssl/evp.h 303e_xcbc_d.o: ../../include/openssl/err.h ../../include/openssl/evp.h
320e_xcbc_d.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 304e_xcbc_d.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
321e_xcbc_d.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 305e_xcbc_d.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
322e_xcbc_d.o: ../../include/openssl/opensslconf.h
323e_xcbc_d.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 306e_xcbc_d.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
324e_xcbc_d.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 307e_xcbc_d.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
325e_xcbc_d.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h 308e_xcbc_d.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
326e_xcbc_d.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_xcbc_d.c 309e_xcbc_d.o: ../../include/openssl/ui_compat.h ../cryptlib.h e_xcbc_d.c
327enc_min.o: ../../e_os.h ../../include/openssl/asn1.h 310e_xcbc_d.o: evp_locl.h
328enc_min.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
329enc_min.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
330enc_min.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
331enc_min.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
332enc_min.o: ../../include/openssl/err.h ../../include/openssl/evp.h
333enc_min.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
334enc_min.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
335enc_min.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
336enc_min.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
337enc_min.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
338enc_min.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
339enc_min.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
340enc_min.o: ../../include/openssl/x509_vfy.h ../cryptlib.h enc_min.c evp_locl.h
341encode.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 311encode.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
342encode.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 312encode.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
343encode.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 313encode.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
344encode.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 314encode.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
345encode.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 315encode.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
346encode.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 316encode.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
347encode.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 317encode.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
348encode.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 318encode.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
349encode.o: ../../include/openssl/symhacks.h ../cryptlib.h encode.c 319encode.o: ../cryptlib.h encode.c
350evp_acnf.o: ../../e_os.h ../../include/openssl/asn1.h 320evp_acnf.o: ../../e_os.h ../../include/openssl/asn1.h
351evp_acnf.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 321evp_acnf.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
352evp_acnf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 322evp_acnf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
353evp_acnf.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 323evp_acnf.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
354evp_acnf.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 324evp_acnf.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
355evp_acnf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 325evp_acnf.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
356evp_acnf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 326evp_acnf.o: ../../include/openssl/opensslconf.h
357evp_acnf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 327evp_acnf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
358evp_acnf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 328evp_acnf.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
359evp_acnf.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_acnf.c 329evp_acnf.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_acnf.c
360evp_cnf.o: ../../e_os.h ../../include/openssl/asn1.h
361evp_cnf.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
362evp_cnf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
363evp_cnf.o: ../../include/openssl/dso.h ../../include/openssl/e_os2.h
364evp_cnf.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
365evp_cnf.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
366evp_cnf.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
367evp_cnf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
368evp_cnf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
369evp_cnf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
370evp_cnf.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
371evp_cnf.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
372evp_cnf.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
373evp_cnf.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
374evp_cnf.o: ../cryptlib.h evp_cnf.c
375evp_enc.o: ../../e_os.h ../../include/openssl/asn1.h 330evp_enc.o: ../../e_os.h ../../include/openssl/asn1.h
376evp_enc.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 331evp_enc.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
377evp_enc.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 332evp_enc.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
378evp_enc.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 333evp_enc.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
379evp_enc.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 334evp_enc.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
380evp_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h 335evp_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h
381evp_enc.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 336evp_enc.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
382evp_enc.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 337evp_enc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
383evp_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 338evp_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
384evp_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 339evp_enc.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
385evp_enc.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 340evp_enc.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
386evp_enc.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 341evp_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
387evp_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 342evp_enc.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
388evp_enc.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_enc.c evp_locl.h 343evp_enc.o: ../cryptlib.h evp_enc.c evp_locl.h
389evp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 344evp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
390evp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 345evp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
391evp_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h 346evp_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h
392evp_err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 347evp_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
393evp_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 348evp_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
394evp_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 349evp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
395evp_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 350evp_err.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
396evp_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 351evp_err.o: ../../include/openssl/symhacks.h evp_err.c
397evp_err.o: evp_err.c
398evp_key.o: ../../e_os.h ../../include/openssl/asn1.h 352evp_key.o: ../../e_os.h ../../include/openssl/asn1.h
399evp_key.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 353evp_key.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
400evp_key.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 354evp_key.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
401evp_key.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 355evp_key.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
402evp_key.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 356evp_key.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
403evp_key.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 357evp_key.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
404evp_key.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 358evp_key.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
405evp_key.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 359evp_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
406evp_key.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 360evp_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
407evp_key.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 361evp_key.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
408evp_key.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 362evp_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
409evp_key.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h 363evp_key.o: ../../include/openssl/ui.h ../../include/openssl/x509.h
410evp_key.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 364evp_key.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_key.c
411evp_key.o: ../cryptlib.h evp_key.c
412evp_lib.o: ../../e_os.h ../../include/openssl/asn1.h 365evp_lib.o: ../../e_os.h ../../include/openssl/asn1.h
413evp_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 366evp_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
414evp_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 367evp_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
415evp_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 368evp_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
416evp_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 369evp_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
417evp_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 370evp_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
418evp_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 371evp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
419evp_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 372evp_lib.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
420evp_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 373evp_lib.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_lib.c
421evp_lib.o: ../cryptlib.h evp_lib.c
422evp_pbe.o: ../../e_os.h ../../include/openssl/asn1.h 374evp_pbe.o: ../../e_os.h ../../include/openssl/asn1.h
423evp_pbe.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 375evp_pbe.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
424evp_pbe.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 376evp_pbe.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
425evp_pbe.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 377evp_pbe.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
426evp_pbe.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 378evp_pbe.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
427evp_pbe.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 379evp_pbe.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
428evp_pbe.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 380evp_pbe.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
429evp_pbe.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 381evp_pbe.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
430evp_pbe.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 382evp_pbe.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
431evp_pbe.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 383evp_pbe.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
432evp_pbe.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 384evp_pbe.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
433evp_pbe.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 385evp_pbe.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
434evp_pbe.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_pbe.c 386evp_pbe.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_pbe.c
435evp_pkey.o: ../../e_os.h ../../include/openssl/asn1.h 387evp_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
436evp_pkey.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 388evp_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
437evp_pkey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 389evp_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
438evp_pkey.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
439evp_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 390evp_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
440evp_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 391evp_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
441evp_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 392evp_pkey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
442evp_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 393evp_pkey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
443evp_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 394evp_pkey.o: ../../include/openssl/opensslconf.h
444evp_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 395evp_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
445evp_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 396evp_pkey.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
446evp_pkey.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 397evp_pkey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
447evp_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 398evp_pkey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
448evp_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 399evp_pkey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
449evp_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_pkey.c 400evp_pkey.o: ../asn1/asn1_locl.h ../cryptlib.h evp_pkey.c
450m_dss.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 401m_dss.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
451m_dss.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 402m_dss.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
452m_dss.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 403m_dss.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
453m_dss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 404m_dss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
454m_dss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 405m_dss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
455m_dss.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 406m_dss.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
456m_dss.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 407m_dss.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
457m_dss.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 408m_dss.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
458m_dss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 409m_dss.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
459m_dss.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 410m_dss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
460m_dss.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 411m_dss.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
461m_dss.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 412m_dss.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
462m_dss.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_dss.c 413m_dss.o: ../cryptlib.h m_dss.c
463m_dss1.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 414m_dss1.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
464m_dss1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 415m_dss1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
465m_dss1.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 416m_dss1.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
466m_dss1.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 417m_dss1.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
467m_dss1.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 418m_dss1.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
468m_dss1.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 419m_dss1.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
469m_dss1.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 420m_dss1.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
470m_dss1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 421m_dss1.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
471m_dss1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 422m_dss1.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
472m_dss1.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 423m_dss1.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
473m_dss1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 424m_dss1.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
474m_dss1.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 425m_dss1.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
475m_dss1.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_dss1.c 426m_dss1.o: ../cryptlib.h m_dss1.c
476m_ecdsa.o: ../../e_os.h ../../include/openssl/asn1.h 427m_ecdsa.o: ../../e_os.h ../../include/openssl/asn1.h
477m_ecdsa.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 428m_ecdsa.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
478m_ecdsa.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 429m_ecdsa.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
479m_ecdsa.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 430m_ecdsa.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
480m_ecdsa.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 431m_ecdsa.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
481m_ecdsa.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 432m_ecdsa.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
482m_ecdsa.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 433m_ecdsa.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
483m_ecdsa.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 434m_ecdsa.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
484m_ecdsa.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 435m_ecdsa.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
485m_ecdsa.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 436m_ecdsa.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
486m_ecdsa.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 437m_ecdsa.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
487m_ecdsa.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 438m_ecdsa.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
488m_ecdsa.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_ecdsa.c 439m_ecdsa.o: ../cryptlib.h m_ecdsa.c
489m_md2.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 440m_md2.o: ../../e_os.h ../../include/openssl/bio.h
490m_md2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 441m_md2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
491m_md2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 442m_md2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
492m_md2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 443m_md2.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
493m_md2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
494m_md2.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
495m_md2.o: ../../include/openssl/md2.h ../../include/openssl/obj_mac.h
496m_md2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
497m_md2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 444m_md2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
498m_md2.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 445m_md2.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
499m_md2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 446m_md2.o: ../../include/openssl/symhacks.h ../cryptlib.h m_md2.c
500m_md2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
501m_md2.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
502m_md2.o: ../cryptlib.h evp_locl.h m_md2.c
503m_md4.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 447m_md4.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
504m_md4.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 448m_md4.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
505m_md4.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 449m_md4.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
506m_md4.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 450m_md4.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
507m_md4.o: ../../include/openssl/err.h ../../include/openssl/evp.h 451m_md4.o: ../../include/openssl/err.h ../../include/openssl/evp.h
508m_md4.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 452m_md4.o: ../../include/openssl/lhash.h ../../include/openssl/md4.h
509m_md4.o: ../../include/openssl/md4.h ../../include/openssl/obj_mac.h 453m_md4.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
510m_md4.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 454m_md4.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
511m_md4.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 455m_md4.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
512m_md4.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 456m_md4.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
513m_md4.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 457m_md4.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
514m_md4.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 458m_md4.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
515m_md4.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 459m_md4.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_md4.c
516m_md4.o: ../cryptlib.h evp_locl.h m_md4.c
517m_md5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 460m_md5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
518m_md5.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 461m_md5.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
519m_md5.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 462m_md5.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
520m_md5.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 463m_md5.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
521m_md5.o: ../../include/openssl/err.h ../../include/openssl/evp.h 464m_md5.o: ../../include/openssl/err.h ../../include/openssl/evp.h
522m_md5.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 465m_md5.o: ../../include/openssl/lhash.h ../../include/openssl/md5.h
523m_md5.o: ../../include/openssl/md5.h ../../include/openssl/obj_mac.h 466m_md5.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
524m_md5.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 467m_md5.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
525m_md5.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 468m_md5.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
526m_md5.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 469m_md5.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
527m_md5.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 470m_md5.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
528m_md5.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 471m_md5.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
529m_md5.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 472m_md5.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_md5.c
530m_md5.o: ../cryptlib.h evp_locl.h m_md5.c 473m_mdc2.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
531m_mdc2.o: ../../e_os.h ../../include/openssl/bio.h
532m_mdc2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 474m_mdc2.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
533m_mdc2.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 475m_mdc2.o: ../../include/openssl/des.h ../../include/openssl/des_old.h
534m_mdc2.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h 476m_mdc2.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
535m_mdc2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 477m_mdc2.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
536m_mdc2.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 478m_mdc2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
537m_mdc2.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_locl.h m_mdc2.c 479m_mdc2.o: ../../include/openssl/lhash.h ../../include/openssl/mdc2.h
480m_mdc2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
481m_mdc2.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
482m_mdc2.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
483m_mdc2.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
484m_mdc2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
485m_mdc2.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
486m_mdc2.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
487m_mdc2.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_mdc2.c
538m_null.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 488m_null.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
539m_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 489m_null.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
540m_null.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 490m_null.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
541m_null.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 491m_null.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
542m_null.o: ../../include/openssl/err.h ../../include/openssl/evp.h 492m_null.o: ../../include/openssl/err.h ../../include/openssl/evp.h
543m_null.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 493m_null.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
544m_null.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 494m_null.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
545m_null.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 495m_null.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
546m_null.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 496m_null.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
547m_null.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 497m_null.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
548m_null.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 498m_null.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
549m_null.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 499m_null.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_null.c
550m_null.o: ../cryptlib.h m_null.c
551m_ripemd.o: ../../e_os.h ../../include/openssl/asn1.h 500m_ripemd.o: ../../e_os.h ../../include/openssl/asn1.h
552m_ripemd.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 501m_ripemd.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
553m_ripemd.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 502m_ripemd.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
554m_ripemd.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 503m_ripemd.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
555m_ripemd.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 504m_ripemd.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
556m_ripemd.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 505m_ripemd.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
557m_ripemd.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 506m_ripemd.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
558m_ripemd.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 507m_ripemd.o: ../../include/openssl/opensslconf.h
559m_ripemd.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 508m_ripemd.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
560m_ripemd.o: ../../include/openssl/pkcs7.h ../../include/openssl/ripemd.h 509m_ripemd.o: ../../include/openssl/pkcs7.h ../../include/openssl/ripemd.h
561m_ripemd.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 510m_ripemd.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
@@ -567,62 +516,87 @@ m_sha.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
567m_sha.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 516m_sha.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
568m_sha.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 517m_sha.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
569m_sha.o: ../../include/openssl/err.h ../../include/openssl/evp.h 518m_sha.o: ../../include/openssl/err.h ../../include/openssl/evp.h
570m_sha.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 519m_sha.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
571m_sha.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 520m_sha.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
572m_sha.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 521m_sha.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
573m_sha.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 522m_sha.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
574m_sha.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 523m_sha.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
575m_sha.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 524m_sha.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
576m_sha.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 525m_sha.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
577m_sha.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_locl.h m_sha.c 526m_sha.o: ../cryptlib.h m_sha.c
578m_sha1.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 527m_sha1.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
579m_sha1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 528m_sha1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
580m_sha1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 529m_sha1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
581m_sha1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 530m_sha1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
582m_sha1.o: ../../include/openssl/err.h ../../include/openssl/evp.h 531m_sha1.o: ../../include/openssl/err.h ../../include/openssl/evp.h
583m_sha1.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 532m_sha1.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
584m_sha1.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 533m_sha1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
585m_sha1.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 534m_sha1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
586m_sha1.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 535m_sha1.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
587m_sha1.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 536m_sha1.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
588m_sha1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 537m_sha1.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
589m_sha1.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 538m_sha1.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
590m_sha1.o: ../../include/openssl/x509_vfy.h ../cryptlib.h m_sha1.c 539m_sha1.o: ../cryptlib.h m_sha1.c
540m_sigver.o: ../../e_os.h ../../include/openssl/asn1.h
541m_sigver.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
542m_sigver.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
543m_sigver.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
544m_sigver.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
545m_sigver.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
546m_sigver.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
547m_sigver.o: ../../include/openssl/opensslconf.h
548m_sigver.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
549m_sigver.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
550m_sigver.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
551m_sigver.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
552m_sigver.o: ../../include/openssl/x509_vfy.h ../cryptlib.h evp_locl.h
553m_sigver.o: m_sigver.c
554m_wp.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
555m_wp.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
556m_wp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
557m_wp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
558m_wp.o: ../../include/openssl/err.h ../../include/openssl/evp.h
559m_wp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
560m_wp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
561m_wp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
562m_wp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
563m_wp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
564m_wp.o: ../../include/openssl/symhacks.h ../../include/openssl/whrlpool.h
565m_wp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
566m_wp.o: ../cryptlib.h m_wp.c
591names.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 567names.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
592names.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 568names.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
593names.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 569names.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
594names.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 570names.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
595names.o: ../../include/openssl/err.h ../../include/openssl/evp.h 571names.o: ../../include/openssl/err.h ../../include/openssl/evp.h
596names.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 572names.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
597names.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 573names.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
598names.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 574names.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
599names.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 575names.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
600names.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 576names.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
601names.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 577names.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
602names.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 578names.o: ../../include/openssl/x509_vfy.h ../cryptlib.h names.c
603names.o: ../cryptlib.h names.c
604p5_crpt.o: ../../e_os.h ../../include/openssl/asn1.h 579p5_crpt.o: ../../e_os.h ../../include/openssl/asn1.h
605p5_crpt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 580p5_crpt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
606p5_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 581p5_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
607p5_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 582p5_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
608p5_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 583p5_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
609p5_crpt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 584p5_crpt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
610p5_crpt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 585p5_crpt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
611p5_crpt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 586p5_crpt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
612p5_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 587p5_crpt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
613p5_crpt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 588p5_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
614p5_crpt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 589p5_crpt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
615p5_crpt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 590p5_crpt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
616p5_crpt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p5_crpt.c 591p5_crpt.o: ../cryptlib.h p5_crpt.c
617p5_crpt2.o: ../../e_os.h ../../include/openssl/asn1.h 592p5_crpt2.o: ../../e_os.h ../../include/openssl/asn1.h
618p5_crpt2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 593p5_crpt2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
619p5_crpt2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 594p5_crpt2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
620p5_crpt2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 595p5_crpt2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
621p5_crpt2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 596p5_crpt2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
622p5_crpt2.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 597p5_crpt2.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h
623p5_crpt2.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h 598p5_crpt2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
624p5_crpt2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 599p5_crpt2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
625p5_crpt2.o: ../../include/openssl/opensslconf.h
626p5_crpt2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 600p5_crpt2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
627p5_crpt2.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 601p5_crpt2.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
628p5_crpt2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 602p5_crpt2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -633,37 +607,35 @@ p_dec.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
633p_dec.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 607p_dec.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
634p_dec.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 608p_dec.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
635p_dec.o: ../../include/openssl/err.h ../../include/openssl/evp.h 609p_dec.o: ../../include/openssl/err.h ../../include/openssl/evp.h
636p_dec.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 610p_dec.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
637p_dec.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 611p_dec.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
638p_dec.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 612p_dec.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
639p_dec.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 613p_dec.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
640p_dec.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 614p_dec.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
641p_dec.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 615p_dec.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
642p_dec.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 616p_dec.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
643p_dec.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 617p_dec.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_dec.c
644p_dec.o: ../cryptlib.h p_dec.c
645p_enc.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 618p_enc.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
646p_enc.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 619p_enc.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
647p_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 620p_enc.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
648p_enc.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 621p_enc.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
649p_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h 622p_enc.o: ../../include/openssl/err.h ../../include/openssl/evp.h
650p_enc.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 623p_enc.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
651p_enc.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 624p_enc.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
652p_enc.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 625p_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
653p_enc.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 626p_enc.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
654p_enc.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 627p_enc.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
655p_enc.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 628p_enc.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
656p_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 629p_enc.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
657p_enc.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 630p_enc.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_enc.c
658p_enc.o: ../cryptlib.h p_enc.c
659p_lib.o: ../../e_os.h ../../include/openssl/asn1.h 631p_lib.o: ../../e_os.h ../../include/openssl/asn1.h
660p_lib.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h 632p_lib.o: ../../include/openssl/asn1_mac.h ../../include/openssl/bio.h
661p_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 633p_lib.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
662p_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h 634p_lib.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
663p_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 635p_lib.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
664p_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 636p_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
665p_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 637p_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
666p_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 638p_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
667p_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 639p_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
668p_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 640p_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
669p_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 641p_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -671,57 +643,91 @@ p_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
671p_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 643p_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
672p_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 644p_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
673p_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 645p_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
674p_lib.o: ../cryptlib.h p_lib.c 646p_lib.o: ../asn1/asn1_locl.h ../cryptlib.h p_lib.c
675p_open.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 647p_open.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
676p_open.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 648p_open.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
677p_open.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 649p_open.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
678p_open.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 650p_open.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
679p_open.o: ../../include/openssl/err.h ../../include/openssl/evp.h 651p_open.o: ../../include/openssl/err.h ../../include/openssl/evp.h
680p_open.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 652p_open.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
681p_open.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 653p_open.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
682p_open.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 654p_open.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
683p_open.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 655p_open.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
684p_open.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 656p_open.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
685p_open.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 657p_open.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
686p_open.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 658p_open.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
687p_open.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_open.c 659p_open.o: ../cryptlib.h p_open.c
688p_seal.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 660p_seal.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
689p_seal.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 661p_seal.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
690p_seal.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 662p_seal.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
691p_seal.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 663p_seal.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
692p_seal.o: ../../include/openssl/err.h ../../include/openssl/evp.h 664p_seal.o: ../../include/openssl/err.h ../../include/openssl/evp.h
693p_seal.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 665p_seal.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
694p_seal.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 666p_seal.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
695p_seal.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 667p_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
696p_seal.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 668p_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
697p_seal.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 669p_seal.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
698p_seal.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 670p_seal.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
699p_seal.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 671p_seal.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
700p_seal.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 672p_seal.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_seal.c
701p_seal.o: ../cryptlib.h p_seal.c
702p_sign.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 673p_sign.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
703p_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 674p_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
704p_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 675p_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
705p_sign.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 676p_sign.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
706p_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h 677p_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h
707p_sign.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 678p_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
708p_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 679p_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
709p_sign.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 680p_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
710p_sign.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 681p_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
711p_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 682p_sign.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
712p_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 683p_sign.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
713p_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 684p_sign.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_sign.c
714p_sign.o: ../cryptlib.h p_sign.c
715p_verify.o: ../../e_os.h ../../include/openssl/asn1.h 685p_verify.o: ../../e_os.h ../../include/openssl/asn1.h
716p_verify.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 686p_verify.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
717p_verify.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 687p_verify.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
718p_verify.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 688p_verify.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
719p_verify.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 689p_verify.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
720p_verify.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 690p_verify.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
721p_verify.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 691p_verify.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
722p_verify.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 692p_verify.o: ../../include/openssl/opensslconf.h
723p_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 693p_verify.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
724p_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 694p_verify.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
725p_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 695p_verify.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
726p_verify.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 696p_verify.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
727p_verify.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_verify.c 697p_verify.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p_verify.c
698pmeth_fn.o: ../../e_os.h ../../include/openssl/asn1.h
699pmeth_fn.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
700pmeth_fn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
701pmeth_fn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
702pmeth_fn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
703pmeth_fn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
704pmeth_fn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
705pmeth_fn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
706pmeth_fn.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_locl.h
707pmeth_fn.o: pmeth_fn.c
708pmeth_gn.o: ../../e_os.h ../../include/openssl/asn1.h
709pmeth_gn.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
710pmeth_gn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
711pmeth_gn.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
712pmeth_gn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
713pmeth_gn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
714pmeth_gn.o: ../../include/openssl/opensslconf.h
715pmeth_gn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
716pmeth_gn.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
717pmeth_gn.o: ../../include/openssl/symhacks.h ../cryptlib.h evp_locl.h
718pmeth_gn.o: pmeth_gn.c
719pmeth_lib.o: ../../e_os.h ../../include/openssl/asn1.h
720pmeth_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
721pmeth_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
722pmeth_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
723pmeth_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
724pmeth_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
725pmeth_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
726pmeth_lib.o: ../../include/openssl/objects.h
727pmeth_lib.o: ../../include/openssl/opensslconf.h
728pmeth_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
729pmeth_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
730pmeth_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
731pmeth_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
732pmeth_lib.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
733pmeth_lib.o: evp_locl.h pmeth_lib.c
diff --git a/src/lib/libssl/src/crypto/evp/bio_b64.c b/src/lib/libssl/src/crypto/evp/bio_b64.c
index fa5cbc7eb1..72a2a67277 100644
--- a/src/lib/libssl/src/crypto/evp/bio_b64.c
+++ b/src/lib/libssl/src/crypto/evp/bio_b64.c
@@ -64,7 +64,7 @@
64 64
65static int b64_write(BIO *h, const char *buf, int num); 65static int b64_write(BIO *h, const char *buf, int num);
66static int b64_read(BIO *h, char *buf, int size); 66static int b64_read(BIO *h, char *buf, int size);
67/*static int b64_puts(BIO *h, const char *str); */ 67static int b64_puts(BIO *h, const char *str);
68/*static int b64_gets(BIO *h, char *str, int size); */ 68/*static int b64_gets(BIO *h, char *str, int size); */
69static long b64_ctrl(BIO *h, int cmd, long arg1, void *arg2); 69static long b64_ctrl(BIO *h, int cmd, long arg1, void *arg2);
70static int b64_new(BIO *h); 70static int b64_new(BIO *h);
@@ -96,7 +96,7 @@ static BIO_METHOD methods_b64=
96 BIO_TYPE_BASE64,"base64 encoding", 96 BIO_TYPE_BASE64,"base64 encoding",
97 b64_write, 97 b64_write,
98 b64_read, 98 b64_read,
99 NULL, /* b64_puts, */ 99 b64_puts,
100 NULL, /* b64_gets, */ 100 NULL, /* b64_gets, */
101 b64_ctrl, 101 b64_ctrl,
102 b64_new, 102 b64_new,
@@ -127,6 +127,7 @@ static int b64_new(BIO *bi)
127 bi->init=1; 127 bi->init=1;
128 bi->ptr=(char *)ctx; 128 bi->ptr=(char *)ctx;
129 bi->flags=0; 129 bi->flags=0;
130 bi->num = 0;
130 return(1); 131 return(1);
131 } 132 }
132 133
@@ -151,6 +152,8 @@ static int b64_read(BIO *b, char *out, int outl)
151 152
152 if ((ctx == NULL) || (b->next_bio == NULL)) return(0); 153 if ((ctx == NULL) || (b->next_bio == NULL)) return(0);
153 154
155 BIO_clear_retry_flags(b);
156
154 if (ctx->encode != B64_DECODE) 157 if (ctx->encode != B64_DECODE)
155 { 158 {
156 ctx->encode=B64_DECODE; 159 ctx->encode=B64_DECODE;
@@ -163,6 +166,7 @@ static int b64_read(BIO *b, char *out, int outl)
163 /* First check if there are bytes decoded/encoded */ 166 /* First check if there are bytes decoded/encoded */
164 if (ctx->buf_len > 0) 167 if (ctx->buf_len > 0)
165 { 168 {
169 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
166 i=ctx->buf_len-ctx->buf_off; 170 i=ctx->buf_len-ctx->buf_off;
167 if (i > outl) i=outl; 171 if (i > outl) i=outl;
168 OPENSSL_assert(ctx->buf_off+i < (int)sizeof(ctx->buf)); 172 OPENSSL_assert(ctx->buf_off+i < (int)sizeof(ctx->buf));
@@ -184,7 +188,6 @@ static int b64_read(BIO *b, char *out, int outl)
184 ret_code=0; 188 ret_code=0;
185 while (outl > 0) 189 while (outl > 0)
186 { 190 {
187
188 if (ctx->cont <= 0) 191 if (ctx->cont <= 0)
189 break; 192 break;
190 193
@@ -195,7 +198,7 @@ static int b64_read(BIO *b, char *out, int outl)
195 { 198 {
196 ret_code=i; 199 ret_code=i;
197 200
198 /* Should be continue next time we are called? */ 201 /* Should we continue next time we are called? */
199 if (!BIO_should_retry(b->next_bio)) 202 if (!BIO_should_retry(b->next_bio))
200 { 203 {
201 ctx->cont=i; 204 ctx->cont=i;
@@ -285,19 +288,27 @@ static int b64_read(BIO *b, char *out, int outl)
285 continue; 288 continue;
286 } 289 }
287 else 290 else
291 {
288 ctx->tmp_len=0; 292 ctx->tmp_len=0;
289 } 293 }
290 /* If buffer isn't full and we can retry then 294 }
291 * restart to read in more data.
292 */
293 else if ((i < B64_BLOCK_SIZE) && (ctx->cont > 0)) 295 else if ((i < B64_BLOCK_SIZE) && (ctx->cont > 0))
296 {
297 /* If buffer isn't full and we can retry then
298 * restart to read in more data.
299 */
294 continue; 300 continue;
301 }
295 302
296 if (BIO_get_flags(b) & BIO_FLAGS_BASE64_NO_NL) 303 if (BIO_get_flags(b) & BIO_FLAGS_BASE64_NO_NL)
297 { 304 {
298 int z,jj; 305 int z,jj;
299 306
307#if 0
300 jj=(i>>2)<<2; 308 jj=(i>>2)<<2;
309#else
310 jj = i & ~3; /* process per 4 */
311#endif
301 z=EVP_DecodeBlock((unsigned char *)ctx->buf, 312 z=EVP_DecodeBlock((unsigned char *)ctx->buf,
302 (unsigned char *)ctx->tmp,jj); 313 (unsigned char *)ctx->tmp,jj);
303 if (jj > 2) 314 if (jj > 2)
@@ -313,18 +324,15 @@ static int b64_read(BIO *b, char *out, int outl)
313 * number consumed */ 324 * number consumed */
314 if (jj != i) 325 if (jj != i)
315 { 326 {
316 memcpy((unsigned char *)ctx->tmp, 327 memmove(ctx->tmp, &ctx->tmp[jj], i-jj);
317 (unsigned char *)&(ctx->tmp[jj]),i-jj);
318 ctx->tmp_len=i-jj; 328 ctx->tmp_len=i-jj;
319 } 329 }
320 ctx->buf_len=0; 330 ctx->buf_len=0;
321 if (z > 0) 331 if (z > 0)
322 { 332 {
323 ctx->buf_len=z; 333 ctx->buf_len=z;
324 i=1;
325 } 334 }
326 else 335 i=z;
327 i=z;
328 } 336 }
329 else 337 else
330 { 338 {
@@ -357,14 +365,16 @@ static int b64_read(BIO *b, char *out, int outl)
357 outl-=i; 365 outl-=i;
358 out+=i; 366 out+=i;
359 } 367 }
360 BIO_clear_retry_flags(b); 368 /* BIO_clear_retry_flags(b); */
361 BIO_copy_next_retry(b); 369 BIO_copy_next_retry(b);
362 return((ret == 0)?ret_code:ret); 370 return((ret == 0)?ret_code:ret);
363 } 371 }
364 372
365static int b64_write(BIO *b, const char *in, int inl) 373static int b64_write(BIO *b, const char *in, int inl)
366 { 374 {
367 int ret=inl,n,i; 375 int ret=0;
376 int n;
377 int i;
368 BIO_B64_CTX *ctx; 378 BIO_B64_CTX *ctx;
369 379
370 ctx=(BIO_B64_CTX *)b->ptr; 380 ctx=(BIO_B64_CTX *)b->ptr;
@@ -379,6 +389,9 @@ static int b64_write(BIO *b, const char *in, int inl)
379 EVP_EncodeInit(&(ctx->base64)); 389 EVP_EncodeInit(&(ctx->base64));
380 } 390 }
381 391
392 OPENSSL_assert(ctx->buf_off < (int)sizeof(ctx->buf));
393 OPENSSL_assert(ctx->buf_len <= (int)sizeof(ctx->buf));
394 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
382 n=ctx->buf_len-ctx->buf_off; 395 n=ctx->buf_len-ctx->buf_off;
383 while (n > 0) 396 while (n > 0)
384 { 397 {
@@ -388,7 +401,10 @@ static int b64_write(BIO *b, const char *in, int inl)
388 BIO_copy_next_retry(b); 401 BIO_copy_next_retry(b);
389 return(i); 402 return(i);
390 } 403 }
404 OPENSSL_assert(i <= n);
391 ctx->buf_off+=i; 405 ctx->buf_off+=i;
406 OPENSSL_assert(ctx->buf_off <= (int)sizeof(ctx->buf));
407 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
392 n-=i; 408 n-=i;
393 } 409 }
394 /* at this point all pending data has been written */ 410 /* at this point all pending data has been written */
@@ -405,18 +421,19 @@ static int b64_write(BIO *b, const char *in, int inl)
405 { 421 {
406 if (ctx->tmp_len > 0) 422 if (ctx->tmp_len > 0)
407 { 423 {
424 OPENSSL_assert(ctx->tmp_len <= 3);
408 n=3-ctx->tmp_len; 425 n=3-ctx->tmp_len;
409 /* There's a teoretical possibility for this */ 426 /* There's a theoretical possibility for this */
410 if (n > inl) 427 if (n > inl)
411 n=inl; 428 n=inl;
412 memcpy(&(ctx->tmp[ctx->tmp_len]),in,n); 429 memcpy(&(ctx->tmp[ctx->tmp_len]),in,n);
413 ctx->tmp_len+=n; 430 ctx->tmp_len+=n;
431 ret += n;
414 if (ctx->tmp_len < 3) 432 if (ctx->tmp_len < 3)
415 break; 433 break;
416 ctx->buf_len=EVP_EncodeBlock( 434 ctx->buf_len=EVP_EncodeBlock((unsigned char *)ctx->buf,(unsigned char *)ctx->tmp,ctx->tmp_len);
417 (unsigned char *)ctx->buf, 435 OPENSSL_assert(ctx->buf_len <= (int)sizeof(ctx->buf));
418 (unsigned char *)ctx->tmp, 436 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
419 ctx->tmp_len);
420 /* Since we're now done using the temporary 437 /* Since we're now done using the temporary
421 buffer, the length should be 0'd */ 438 buffer, the length should be 0'd */
422 ctx->tmp_len=0; 439 ctx->tmp_len=0;
@@ -425,14 +442,16 @@ static int b64_write(BIO *b, const char *in, int inl)
425 { 442 {
426 if (n < 3) 443 if (n < 3)
427 { 444 {
428 memcpy(&(ctx->tmp[0]),in,n); 445 memcpy(ctx->tmp,in,n);
429 ctx->tmp_len=n; 446 ctx->tmp_len=n;
447 ret += n;
430 break; 448 break;
431 } 449 }
432 n-=n%3; 450 n-=n%3;
433 ctx->buf_len=EVP_EncodeBlock( 451 ctx->buf_len=EVP_EncodeBlock((unsigned char *)ctx->buf,(const unsigned char *)in,n);
434 (unsigned char *)ctx->buf, 452 OPENSSL_assert(ctx->buf_len <= (int)sizeof(ctx->buf));
435 (unsigned char *)in,n); 453 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
454 ret += n;
436 } 455 }
437 } 456 }
438 else 457 else
@@ -440,6 +459,9 @@ static int b64_write(BIO *b, const char *in, int inl)
440 EVP_EncodeUpdate(&(ctx->base64), 459 EVP_EncodeUpdate(&(ctx->base64),
441 (unsigned char *)ctx->buf,&ctx->buf_len, 460 (unsigned char *)ctx->buf,&ctx->buf_len,
442 (unsigned char *)in,n); 461 (unsigned char *)in,n);
462 OPENSSL_assert(ctx->buf_len <= (int)sizeof(ctx->buf));
463 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
464 ret += n;
443 } 465 }
444 inl-=n; 466 inl-=n;
445 in+=n; 467 in+=n;
@@ -454,8 +476,11 @@ static int b64_write(BIO *b, const char *in, int inl)
454 BIO_copy_next_retry(b); 476 BIO_copy_next_retry(b);
455 return((ret == 0)?i:ret); 477 return((ret == 0)?i:ret);
456 } 478 }
479 OPENSSL_assert(i <= n);
457 n-=i; 480 n-=i;
458 ctx->buf_off+=i; 481 ctx->buf_off+=i;
482 OPENSSL_assert(ctx->buf_off <= (int)sizeof(ctx->buf));
483 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
459 } 484 }
460 ctx->buf_len=0; 485 ctx->buf_len=0;
461 ctx->buf_off=0; 486 ctx->buf_off=0;
@@ -486,6 +511,7 @@ static long b64_ctrl(BIO *b, int cmd, long num, void *ptr)
486 ret=BIO_ctrl(b->next_bio,cmd,num,ptr); 511 ret=BIO_ctrl(b->next_bio,cmd,num,ptr);
487 break; 512 break;
488 case BIO_CTRL_WPENDING: /* More to write in buffer */ 513 case BIO_CTRL_WPENDING: /* More to write in buffer */
514 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
489 ret=ctx->buf_len-ctx->buf_off; 515 ret=ctx->buf_len-ctx->buf_off;
490 if ((ret == 0) && (ctx->encode != B64_NONE) 516 if ((ret == 0) && (ctx->encode != B64_NONE)
491 && (ctx->base64.num != 0)) 517 && (ctx->base64.num != 0))
@@ -494,6 +520,7 @@ static long b64_ctrl(BIO *b, int cmd, long num, void *ptr)
494 ret=BIO_ctrl(b->next_bio,cmd,num,ptr); 520 ret=BIO_ctrl(b->next_bio,cmd,num,ptr);
495 break; 521 break;
496 case BIO_CTRL_PENDING: /* More to read in buffer */ 522 case BIO_CTRL_PENDING: /* More to read in buffer */
523 OPENSSL_assert(ctx->buf_len >= ctx->buf_off);
497 ret=ctx->buf_len-ctx->buf_off; 524 ret=ctx->buf_len-ctx->buf_off;
498 if (ret <= 0) 525 if (ret <= 0)
499 ret=BIO_ctrl(b->next_bio,cmd,num,ptr); 526 ret=BIO_ctrl(b->next_bio,cmd,num,ptr);
@@ -565,3 +592,7 @@ static long b64_callback_ctrl(BIO *b, int cmd, bio_info_cb *fp)
565 return(ret); 592 return(ret);
566 } 593 }
567 594
595static int b64_puts(BIO *b, const char *str)
596 {
597 return b64_write(b,str,strlen(str));
598 }
diff --git a/src/lib/libssl/src/crypto/evp/bio_enc.c b/src/lib/libssl/src/crypto/evp/bio_enc.c
index f6ac94c6e1..b6efb5fbc4 100644
--- a/src/lib/libssl/src/crypto/evp/bio_enc.c
+++ b/src/lib/libssl/src/crypto/evp/bio_enc.c
@@ -361,8 +361,10 @@ again:
361 case BIO_CTRL_DUP: 361 case BIO_CTRL_DUP:
362 dbio=(BIO *)ptr; 362 dbio=(BIO *)ptr;
363 dctx=(BIO_ENC_CTX *)dbio->ptr; 363 dctx=(BIO_ENC_CTX *)dbio->ptr;
364 memcpy(&(dctx->cipher),&(ctx->cipher),sizeof(ctx->cipher)); 364 EVP_CIPHER_CTX_init(&dctx->cipher);
365 dbio->init=1; 365 ret = EVP_CIPHER_CTX_copy(&dctx->cipher,&ctx->cipher);
366 if (ret)
367 dbio->init=1;
366 break; 368 break;
367 default: 369 default:
368 ret=BIO_ctrl(b->next_bio,cmd,num,ptr); 370 ret=BIO_ctrl(b->next_bio,cmd,num,ptr);
diff --git a/src/lib/libssl/src/crypto/evp/bio_md.c b/src/lib/libssl/src/crypto/evp/bio_md.c
index ed5c1135fd..9841e32e1a 100644
--- a/src/lib/libssl/src/crypto/evp/bio_md.c
+++ b/src/lib/libssl/src/crypto/evp/bio_md.c
@@ -130,8 +130,8 @@ static int md_read(BIO *b, char *out, int outl)
130 { 130 {
131 if (ret > 0) 131 if (ret > 0)
132 { 132 {
133 EVP_DigestUpdate(ctx,(unsigned char *)out, 133 if (EVP_DigestUpdate(ctx,(unsigned char *)out,
134 (unsigned int)ret); 134 (unsigned int)ret)<=0) return (-1);
135 } 135 }
136 } 136 }
137 BIO_clear_retry_flags(b); 137 BIO_clear_retry_flags(b);
@@ -157,8 +157,11 @@ static int md_write(BIO *b, const char *in, int inl)
157 (unsigned int)ret); 157 (unsigned int)ret);
158 } 158 }
159 } 159 }
160 BIO_clear_retry_flags(b); 160 if(b->next_bio != NULL)
161 BIO_copy_next_retry(b); 161 {
162 BIO_clear_retry_flags(b);
163 BIO_copy_next_retry(b);
164 }
162 return(ret); 165 return(ret);
163 } 166 }
164 167
@@ -194,6 +197,7 @@ static long md_ctrl(BIO *b, int cmd, long num, void *ptr)
194 case BIO_C_GET_MD_CTX: 197 case BIO_C_GET_MD_CTX:
195 pctx=ptr; 198 pctx=ptr;
196 *pctx=ctx; 199 *pctx=ctx;
200 b->init = 1;
197 break; 201 break;
198 case BIO_C_SET_MD_CTX: 202 case BIO_C_SET_MD_CTX:
199 if (b->init) 203 if (b->init)
@@ -249,7 +253,9 @@ static int md_gets(BIO *bp, char *buf, int size)
249 ctx=bp->ptr; 253 ctx=bp->ptr;
250 if (size < ctx->digest->md_size) 254 if (size < ctx->digest->md_size)
251 return(0); 255 return(0);
252 EVP_DigestFinal_ex(ctx,(unsigned char *)buf,&ret); 256 if (EVP_DigestFinal_ex(ctx,(unsigned char *)buf,&ret)<=0)
257 return -1;
258
253 return((int)ret); 259 return((int)ret);
254 } 260 }
255 261
diff --git a/src/lib/libssl/src/crypto/evp/c_all.c b/src/lib/libssl/src/crypto/evp/c_all.c
index a5da52e62d..766c4cecdf 100644
--- a/src/lib/libssl/src/crypto/evp/c_all.c
+++ b/src/lib/libssl/src/crypto/evp/c_all.c
@@ -83,7 +83,7 @@ void OPENSSL_add_all_algorithms_noconf(void)
83 OpenSSL_add_all_ciphers(); 83 OpenSSL_add_all_ciphers();
84 OpenSSL_add_all_digests(); 84 OpenSSL_add_all_digests();
85#ifndef OPENSSL_NO_ENGINE 85#ifndef OPENSSL_NO_ENGINE
86# if defined(__OpenBSD__) || defined(__FreeBSD__) 86# if defined(__OpenBSD__) || defined(__FreeBSD__) || defined(HAVE_CRYPTODEV)
87 ENGINE_setup_bsd_cryptodev(); 87 ENGINE_setup_bsd_cryptodev();
88# endif 88# endif
89#endif 89#endif
diff --git a/src/lib/libssl/src/crypto/evp/c_allc.c b/src/lib/libssl/src/crypto/evp/c_allc.c
index 7054d8125d..c5f9268378 100644
--- a/src/lib/libssl/src/crypto/evp/c_allc.c
+++ b/src/lib/libssl/src/crypto/evp/c_allc.c
@@ -71,6 +71,8 @@ void OpenSSL_add_all_ciphers(void)
71 EVP_add_cipher(EVP_des_cfb8()); 71 EVP_add_cipher(EVP_des_cfb8());
72 EVP_add_cipher(EVP_des_ede_cfb()); 72 EVP_add_cipher(EVP_des_ede_cfb());
73 EVP_add_cipher(EVP_des_ede3_cfb()); 73 EVP_add_cipher(EVP_des_ede3_cfb());
74 EVP_add_cipher(EVP_des_ede3_cfb1());
75 EVP_add_cipher(EVP_des_ede3_cfb8());
74 76
75 EVP_add_cipher(EVP_des_ofb()); 77 EVP_add_cipher(EVP_des_ofb());
76 EVP_add_cipher(EVP_des_ede_ofb()); 78 EVP_add_cipher(EVP_des_ede_ofb());
@@ -219,7 +221,4 @@ void OpenSSL_add_all_ciphers(void)
219 EVP_add_cipher_alias(SN_camellia_256_cbc,"CAMELLIA256"); 221 EVP_add_cipher_alias(SN_camellia_256_cbc,"CAMELLIA256");
220 EVP_add_cipher_alias(SN_camellia_256_cbc,"camellia256"); 222 EVP_add_cipher_alias(SN_camellia_256_cbc,"camellia256");
221#endif 223#endif
222
223 PKCS12_PBE_add();
224 PKCS5_PBE_add();
225 } 224 }
diff --git a/src/lib/libssl/src/crypto/evp/c_alld.c b/src/lib/libssl/src/crypto/evp/c_alld.c
index d270b0ee03..311e1fe2f8 100644
--- a/src/lib/libssl/src/crypto/evp/c_alld.c
+++ b/src/lib/libssl/src/crypto/evp/c_alld.c
@@ -64,9 +64,6 @@
64 64
65void OpenSSL_add_all_digests(void) 65void OpenSSL_add_all_digests(void)
66 { 66 {
67#ifndef OPENSSL_NO_MD2
68 EVP_add_digest(EVP_md2());
69#endif
70#ifndef OPENSSL_NO_MD4 67#ifndef OPENSSL_NO_MD4
71 EVP_add_digest(EVP_md4()); 68 EVP_add_digest(EVP_md4());
72#endif 69#endif
@@ -81,7 +78,7 @@ void OpenSSL_add_all_digests(void)
81 EVP_add_digest(EVP_dss()); 78 EVP_add_digest(EVP_dss());
82#endif 79#endif
83#endif 80#endif
84#ifndef OPENSSL_NO_SHA 81#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1)
85 EVP_add_digest(EVP_sha1()); 82 EVP_add_digest(EVP_sha1());
86 EVP_add_digest_alias(SN_sha1,"ssl3-sha1"); 83 EVP_add_digest_alias(SN_sha1,"ssl3-sha1");
87 EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA); 84 EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA);
@@ -111,4 +108,7 @@ void OpenSSL_add_all_digests(void)
111 EVP_add_digest(EVP_sha384()); 108 EVP_add_digest(EVP_sha384());
112 EVP_add_digest(EVP_sha512()); 109 EVP_add_digest(EVP_sha512());
113#endif 110#endif
111#ifndef OPENSSL_NO_WHIRLPOOL
112 EVP_add_digest(EVP_whirlpool());
113#endif
114 } 114 }
diff --git a/src/lib/libssl/src/crypto/evp/digest.c b/src/lib/libssl/src/crypto/evp/digest.c
index 3bc2d1295c..982ba2b136 100644
--- a/src/lib/libssl/src/crypto/evp/digest.c
+++ b/src/lib/libssl/src/crypto/evp/digest.c
@@ -116,7 +116,6 @@
116#ifndef OPENSSL_NO_ENGINE 116#ifndef OPENSSL_NO_ENGINE
117#include <openssl/engine.h> 117#include <openssl/engine.h>
118#endif 118#endif
119#include "evp_locl.h"
120 119
121void EVP_MD_CTX_init(EVP_MD_CTX *ctx) 120void EVP_MD_CTX_init(EVP_MD_CTX *ctx)
122 { 121 {
@@ -127,7 +126,8 @@ EVP_MD_CTX *EVP_MD_CTX_create(void)
127 { 126 {
128 EVP_MD_CTX *ctx=OPENSSL_malloc(sizeof *ctx); 127 EVP_MD_CTX *ctx=OPENSSL_malloc(sizeof *ctx);
129 128
130 EVP_MD_CTX_init(ctx); 129 if (ctx)
130 EVP_MD_CTX_init(ctx);
131 131
132 return ctx; 132 return ctx;
133 } 133 }
@@ -138,77 +138,18 @@ int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type)
138 return EVP_DigestInit_ex(ctx, type, NULL); 138 return EVP_DigestInit_ex(ctx, type, NULL);
139 } 139 }
140 140
141#ifdef OPENSSL_FIPS 141int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
142
143/* The purpose of these is to trap programs that attempt to use non FIPS
144 * algorithms in FIPS mode and ignore the errors.
145 */
146
147static int bad_init(EVP_MD_CTX *ctx)
148 { FIPS_ERROR_IGNORED("Digest init"); return 0;}
149
150static int bad_update(EVP_MD_CTX *ctx,const void *data,size_t count)
151 { FIPS_ERROR_IGNORED("Digest update"); return 0;}
152
153static int bad_final(EVP_MD_CTX *ctx,unsigned char *md)
154 { FIPS_ERROR_IGNORED("Digest Final"); return 0;}
155
156static const EVP_MD bad_md =
157 { 142 {
158 0, 143 EVP_MD_CTX_clear_flags(ctx,EVP_MD_CTX_FLAG_CLEANED);
159 0,
160 0,
161 0,
162 bad_init,
163 bad_update,
164 bad_final,
165 NULL,
166 NULL,
167 NULL,
168 0,
169 {0,0,0,0},
170 };
171
172#endif
173
174#ifndef OPENSSL_NO_ENGINE 144#ifndef OPENSSL_NO_ENGINE
175 145 /* Whether it's nice or not, "Inits" can be used on "Final"'d contexts
176#ifdef OPENSSL_FIPS 146 * so this context may already have an ENGINE! Try to avoid releasing
177 147 * the previous handle, re-querying for an ENGINE, and having a
178static int do_engine_null(ENGINE *impl) { return 0;} 148 * reinitialisation, when it may all be unecessary. */
179static int do_evp_md_engine_null(EVP_MD_CTX *ctx, 149 if (ctx->engine && ctx->digest && (!type ||
180 const EVP_MD **ptype, ENGINE *impl) 150 (type && (type->type == ctx->digest->type))))
181 { return 1; } 151 goto skip_to_init;
182 152 if (type)
183static int (*do_engine_init)(ENGINE *impl)
184 = do_engine_null;
185
186static int (*do_engine_finish)(ENGINE *impl)
187 = do_engine_null;
188
189static int (*do_evp_md_engine)
190 (EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl)
191 = do_evp_md_engine_null;
192
193void int_EVP_MD_set_engine_callbacks(
194 int (*eng_md_init)(ENGINE *impl),
195 int (*eng_md_fin)(ENGINE *impl),
196 int (*eng_md_evp)
197 (EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl))
198 {
199 do_engine_init = eng_md_init;
200 do_engine_finish = eng_md_fin;
201 do_evp_md_engine = eng_md_evp;
202 }
203
204#else
205
206#define do_engine_init ENGINE_init
207#define do_engine_finish ENGINE_finish
208
209static int do_evp_md_engine(EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl)
210 {
211 if (*ptype)
212 { 153 {
213 /* Ensure an ENGINE left lying around from last time is cleared 154 /* Ensure an ENGINE left lying around from last time is cleared
214 * (the previous check attempted to avoid this if the same 155 * (the previous check attempted to avoid this if the same
@@ -219,25 +160,26 @@ static int do_evp_md_engine(EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl)
219 { 160 {
220 if (!ENGINE_init(impl)) 161 if (!ENGINE_init(impl))
221 { 162 {
222 EVPerr(EVP_F_DO_EVP_MD_ENGINE,EVP_R_INITIALIZATION_ERROR); 163 EVPerr(EVP_F_EVP_DIGESTINIT_EX,EVP_R_INITIALIZATION_ERROR);
223 return 0; 164 return 0;
224 } 165 }
225 } 166 }
226 else 167 else
227 /* Ask if an ENGINE is reserved for this job */ 168 /* Ask if an ENGINE is reserved for this job */
228 impl = ENGINE_get_digest_engine((*ptype)->type); 169 impl = ENGINE_get_digest_engine(type->type);
229 if(impl) 170 if(impl)
230 { 171 {
231 /* There's an ENGINE for this job ... (apparently) */ 172 /* There's an ENGINE for this job ... (apparently) */
232 const EVP_MD *d = ENGINE_get_digest(impl, (*ptype)->type); 173 const EVP_MD *d = ENGINE_get_digest(impl, type->type);
233 if(!d) 174 if(!d)
234 { 175 {
235 /* Same comment from evp_enc.c */ 176 /* Same comment from evp_enc.c */
236 EVPerr(EVP_F_DO_EVP_MD_ENGINE,EVP_R_INITIALIZATION_ERROR); 177 EVPerr(EVP_F_EVP_DIGESTINIT_EX,EVP_R_INITIALIZATION_ERROR);
178 ENGINE_finish(impl);
237 return 0; 179 return 0;
238 } 180 }
239 /* We'll use the ENGINE's private digest definition */ 181 /* We'll use the ENGINE's private digest definition */
240 *ptype = d; 182 type = d;
241 /* Store the ENGINE functional reference so we know 183 /* Store the ENGINE functional reference so we know
242 * 'type' came from an ENGINE and we need to release 184 * 'type' came from an ENGINE and we need to release
243 * it when done. */ 185 * it when done. */
@@ -249,71 +191,46 @@ static int do_evp_md_engine(EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl)
249 else 191 else
250 if(!ctx->digest) 192 if(!ctx->digest)
251 { 193 {
252 EVPerr(EVP_F_DO_EVP_MD_ENGINE,EVP_R_NO_DIGEST_SET); 194 EVPerr(EVP_F_EVP_DIGESTINIT_EX,EVP_R_NO_DIGEST_SET);
253 return 0; 195 return 0;
254 } 196 }
255 return 1;
256 }
257
258#endif
259
260#endif
261
262int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl)
263 {
264 M_EVP_MD_CTX_clear_flags(ctx,EVP_MD_CTX_FLAG_CLEANED);
265#ifdef OPENSSL_FIPS
266 if(FIPS_selftest_failed())
267 {
268 FIPSerr(FIPS_F_EVP_DIGESTINIT_EX,FIPS_R_FIPS_SELFTEST_FAILED);
269 ctx->digest = &bad_md;
270 return 0;
271 }
272#endif
273#ifndef OPENSSL_NO_ENGINE
274 /* Whether it's nice or not, "Inits" can be used on "Final"'d contexts
275 * so this context may already have an ENGINE! Try to avoid releasing
276 * the previous handle, re-querying for an ENGINE, and having a
277 * reinitialisation, when it may all be unecessary. */
278 if (ctx->engine && ctx->digest && (!type ||
279 (type && (type->type == ctx->digest->type))))
280 goto skip_to_init;
281 if (!do_evp_md_engine(ctx, &type, impl))
282 return 0;
283#endif 197#endif
284 if (ctx->digest != type) 198 if (ctx->digest != type)
285 { 199 {
286#ifdef OPENSSL_FIPS 200 if (ctx->digest && ctx->digest->ctx_size)
287 if (FIPS_mode()) 201 OPENSSL_free(ctx->md_data);
202 ctx->digest=type;
203 if (!(ctx->flags & EVP_MD_CTX_FLAG_NO_INIT) && type->ctx_size)
288 { 204 {
289 if (!(type->flags & EVP_MD_FLAG_FIPS) 205 ctx->update = type->update;
290 && !(ctx->flags & EVP_MD_CTX_FLAG_NON_FIPS_ALLOW)) 206 ctx->md_data=OPENSSL_malloc(type->ctx_size);
207 if (ctx->md_data == NULL)
291 { 208 {
292 EVPerr(EVP_F_EVP_DIGESTINIT_EX, EVP_R_DISABLED_FOR_FIPS); 209 EVPerr(EVP_F_EVP_DIGESTINIT_EX,
293 ctx->digest = &bad_md; 210 ERR_R_MALLOC_FAILURE);
294 return 0; 211 return 0;
295 } 212 }
296 } 213 }
297#endif
298 if (ctx->digest && ctx->digest->ctx_size)
299 OPENSSL_free(ctx->md_data);
300 ctx->digest=type;
301 if (type->ctx_size)
302 ctx->md_data=OPENSSL_malloc(type->ctx_size);
303 } 214 }
304#ifndef OPENSSL_NO_ENGINE 215#ifndef OPENSSL_NO_ENGINE
305 skip_to_init: 216skip_to_init:
306#endif 217#endif
218 if (ctx->pctx)
219 {
220 int r;
221 r = EVP_PKEY_CTX_ctrl(ctx->pctx, -1, EVP_PKEY_OP_TYPE_SIG,
222 EVP_PKEY_CTRL_DIGESTINIT, 0, ctx);
223 if (r <= 0 && (r != -2))
224 return 0;
225 }
226 if (ctx->flags & EVP_MD_CTX_FLAG_NO_INIT)
227 return 1;
307 return ctx->digest->init(ctx); 228 return ctx->digest->init(ctx);
308 } 229 }
309 230
310int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *data, 231int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *data, size_t count)
311 size_t count)
312 { 232 {
313#ifdef OPENSSL_FIPS 233 return ctx->update(ctx,data,count);
314 FIPS_selftest_check();
315#endif
316 return ctx->digest->update(ctx,data,count);
317 } 234 }
318 235
319/* The caller can assume that this removes any secret data from the context */ 236/* The caller can assume that this removes any secret data from the context */
@@ -329,9 +246,6 @@ int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size)
329int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size) 246int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size)
330 { 247 {
331 int ret; 248 int ret;
332#ifdef OPENSSL_FIPS
333 FIPS_selftest_check();
334#endif
335 249
336 OPENSSL_assert(ctx->digest->md_size <= EVP_MAX_MD_SIZE); 250 OPENSSL_assert(ctx->digest->md_size <= EVP_MAX_MD_SIZE);
337 ret=ctx->digest->final(ctx,md); 251 ret=ctx->digest->final(ctx,md);
@@ -340,7 +254,7 @@ int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md, unsigned int *size)
340 if (ctx->digest->cleanup) 254 if (ctx->digest->cleanup)
341 { 255 {
342 ctx->digest->cleanup(ctx); 256 ctx->digest->cleanup(ctx);
343 M_EVP_MD_CTX_set_flags(ctx,EVP_MD_CTX_FLAG_CLEANED); 257 EVP_MD_CTX_set_flags(ctx,EVP_MD_CTX_FLAG_CLEANED);
344 } 258 }
345 memset(ctx->md_data,0,ctx->digest->ctx_size); 259 memset(ctx->md_data,0,ctx->digest->ctx_size);
346 return ret; 260 return ret;
@@ -362,7 +276,7 @@ int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in)
362 } 276 }
363#ifndef OPENSSL_NO_ENGINE 277#ifndef OPENSSL_NO_ENGINE
364 /* Make sure it's safe to copy a digest context using an ENGINE */ 278 /* Make sure it's safe to copy a digest context using an ENGINE */
365 if (in->engine && !do_engine_init(in->engine)) 279 if (in->engine && !ENGINE_init(in->engine))
366 { 280 {
367 EVPerr(EVP_F_EVP_MD_CTX_COPY_EX,ERR_R_ENGINE_LIB); 281 EVPerr(EVP_F_EVP_MD_CTX_COPY_EX,ERR_R_ENGINE_LIB);
368 return 0; 282 return 0;
@@ -372,19 +286,40 @@ int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out, const EVP_MD_CTX *in)
372 if (out->digest == in->digest) 286 if (out->digest == in->digest)
373 { 287 {
374 tmp_buf = out->md_data; 288 tmp_buf = out->md_data;
375 M_EVP_MD_CTX_set_flags(out,EVP_MD_CTX_FLAG_REUSE); 289 EVP_MD_CTX_set_flags(out,EVP_MD_CTX_FLAG_REUSE);
376 } 290 }
377 else tmp_buf = NULL; 291 else tmp_buf = NULL;
378 EVP_MD_CTX_cleanup(out); 292 EVP_MD_CTX_cleanup(out);
379 memcpy(out,in,sizeof *out); 293 memcpy(out,in,sizeof *out);
380 294
381 if (out->digest->ctx_size) 295 if (in->md_data && out->digest->ctx_size)
382 { 296 {
383 if (tmp_buf) out->md_data = tmp_buf; 297 if (tmp_buf)
384 else out->md_data=OPENSSL_malloc(out->digest->ctx_size); 298 out->md_data = tmp_buf;
299 else
300 {
301 out->md_data=OPENSSL_malloc(out->digest->ctx_size);
302 if (!out->md_data)
303 {
304 EVPerr(EVP_F_EVP_MD_CTX_COPY_EX,ERR_R_MALLOC_FAILURE);
305 return 0;
306 }
307 }
385 memcpy(out->md_data,in->md_data,out->digest->ctx_size); 308 memcpy(out->md_data,in->md_data,out->digest->ctx_size);
386 } 309 }
387 310
311 out->update = in->update;
312
313 if (in->pctx)
314 {
315 out->pctx = EVP_PKEY_CTX_dup(in->pctx);
316 if (!out->pctx)
317 {
318 EVP_MD_CTX_cleanup(out);
319 return 0;
320 }
321 }
322
388 if (out->digest->copy) 323 if (out->digest->copy)
389 return out->digest->copy(out,in); 324 return out->digest->copy(out,in);
390 325
@@ -398,7 +333,7 @@ int EVP_Digest(const void *data, size_t count,
398 int ret; 333 int ret;
399 334
400 EVP_MD_CTX_init(&ctx); 335 EVP_MD_CTX_init(&ctx);
401 M_EVP_MD_CTX_set_flags(&ctx,EVP_MD_CTX_FLAG_ONESHOT); 336 EVP_MD_CTX_set_flags(&ctx,EVP_MD_CTX_FLAG_ONESHOT);
402 ret=EVP_DigestInit_ex(&ctx, type, impl) 337 ret=EVP_DigestInit_ex(&ctx, type, impl)
403 && EVP_DigestUpdate(&ctx, data, count) 338 && EVP_DigestUpdate(&ctx, data, count)
404 && EVP_DigestFinal_ex(&ctx, md, size); 339 && EVP_DigestFinal_ex(&ctx, md, size);
@@ -420,19 +355,21 @@ int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx)
420 * because sometimes only copies of the context are ever finalised. 355 * because sometimes only copies of the context are ever finalised.
421 */ 356 */
422 if (ctx->digest && ctx->digest->cleanup 357 if (ctx->digest && ctx->digest->cleanup
423 && !M_EVP_MD_CTX_test_flags(ctx,EVP_MD_CTX_FLAG_CLEANED)) 358 && !EVP_MD_CTX_test_flags(ctx,EVP_MD_CTX_FLAG_CLEANED))
424 ctx->digest->cleanup(ctx); 359 ctx->digest->cleanup(ctx);
425 if (ctx->digest && ctx->digest->ctx_size && ctx->md_data 360 if (ctx->digest && ctx->digest->ctx_size && ctx->md_data
426 && !M_EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_REUSE)) 361 && !EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_REUSE))
427 { 362 {
428 OPENSSL_cleanse(ctx->md_data,ctx->digest->ctx_size); 363 OPENSSL_cleanse(ctx->md_data,ctx->digest->ctx_size);
429 OPENSSL_free(ctx->md_data); 364 OPENSSL_free(ctx->md_data);
430 } 365 }
366 if (ctx->pctx)
367 EVP_PKEY_CTX_free(ctx->pctx);
431#ifndef OPENSSL_NO_ENGINE 368#ifndef OPENSSL_NO_ENGINE
432 if(ctx->engine) 369 if(ctx->engine)
433 /* The EVP_MD we used belongs to an ENGINE, release the 370 /* The EVP_MD we used belongs to an ENGINE, release the
434 * functional reference we held for this reason. */ 371 * functional reference we held for this reason. */
435 do_engine_finish(ctx->engine); 372 ENGINE_finish(ctx->engine);
436#endif 373#endif
437 memset(ctx,'\0',sizeof *ctx); 374 memset(ctx,'\0',sizeof *ctx);
438 375
diff --git a/src/lib/libssl/src/crypto/evp/e_aes.c b/src/lib/libssl/src/crypto/evp/e_aes.c
index c9a5ee8d75..bd6c0a3a62 100644
--- a/src/lib/libssl/src/crypto/evp/e_aes.c
+++ b/src/lib/libssl/src/crypto/evp/e_aes.c
@@ -69,29 +69,32 @@ typedef struct
69 69
70IMPLEMENT_BLOCK_CIPHER(aes_128, ks, AES, EVP_AES_KEY, 70IMPLEMENT_BLOCK_CIPHER(aes_128, ks, AES, EVP_AES_KEY,
71 NID_aes_128, 16, 16, 16, 128, 71 NID_aes_128, 16, 16, 16, 128,
72 EVP_CIPH_FLAG_FIPS|EVP_CIPH_FLAG_DEFAULT_ASN1, 72 0, aes_init_key, NULL,
73 aes_init_key, 73 EVP_CIPHER_set_asn1_iv,
74 NULL, NULL, NULL, NULL) 74 EVP_CIPHER_get_asn1_iv,
75 NULL)
75IMPLEMENT_BLOCK_CIPHER(aes_192, ks, AES, EVP_AES_KEY, 76IMPLEMENT_BLOCK_CIPHER(aes_192, ks, AES, EVP_AES_KEY,
76 NID_aes_192, 16, 24, 16, 128, 77 NID_aes_192, 16, 24, 16, 128,
77 EVP_CIPH_FLAG_FIPS|EVP_CIPH_FLAG_DEFAULT_ASN1, 78 0, aes_init_key, NULL,
78 aes_init_key, 79 EVP_CIPHER_set_asn1_iv,
79 NULL, NULL, NULL, NULL) 80 EVP_CIPHER_get_asn1_iv,
81 NULL)
80IMPLEMENT_BLOCK_CIPHER(aes_256, ks, AES, EVP_AES_KEY, 82IMPLEMENT_BLOCK_CIPHER(aes_256, ks, AES, EVP_AES_KEY,
81 NID_aes_256, 16, 32, 16, 128, 83 NID_aes_256, 16, 32, 16, 128,
82 EVP_CIPH_FLAG_FIPS|EVP_CIPH_FLAG_DEFAULT_ASN1, 84 0, aes_init_key, NULL,
83 aes_init_key, 85 EVP_CIPHER_set_asn1_iv,
84 NULL, NULL, NULL, NULL) 86 EVP_CIPHER_get_asn1_iv,
87 NULL)
85 88
86#define IMPLEMENT_AES_CFBR(ksize,cbits,flags) IMPLEMENT_CFBR(aes,AES,EVP_AES_KEY,ks,ksize,cbits,16,flags) 89#define IMPLEMENT_AES_CFBR(ksize,cbits) IMPLEMENT_CFBR(aes,AES,EVP_AES_KEY,ks,ksize,cbits,16)
87 90
88IMPLEMENT_AES_CFBR(128,1,EVP_CIPH_FLAG_FIPS) 91IMPLEMENT_AES_CFBR(128,1)
89IMPLEMENT_AES_CFBR(192,1,EVP_CIPH_FLAG_FIPS) 92IMPLEMENT_AES_CFBR(192,1)
90IMPLEMENT_AES_CFBR(256,1,EVP_CIPH_FLAG_FIPS) 93IMPLEMENT_AES_CFBR(256,1)
91 94
92IMPLEMENT_AES_CFBR(128,8,EVP_CIPH_FLAG_FIPS) 95IMPLEMENT_AES_CFBR(128,8)
93IMPLEMENT_AES_CFBR(192,8,EVP_CIPH_FLAG_FIPS) 96IMPLEMENT_AES_CFBR(192,8)
94IMPLEMENT_AES_CFBR(256,8,EVP_CIPH_FLAG_FIPS) 97IMPLEMENT_AES_CFBR(256,8)
95 98
96static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 99static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
97 const unsigned char *iv, int enc) 100 const unsigned char *iv, int enc)
diff --git a/src/lib/libssl/src/crypto/evp/e_des.c b/src/lib/libssl/src/crypto/evp/e_des.c
index 04376df232..ca009f2c52 100644
--- a/src/lib/libssl/src/crypto/evp/e_des.c
+++ b/src/lib/libssl/src/crypto/evp/e_des.c
@@ -72,7 +72,7 @@ static int des_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr);
72/* Because of various casts and different names can't use IMPLEMENT_BLOCK_CIPHER */ 72/* Because of various casts and different names can't use IMPLEMENT_BLOCK_CIPHER */
73 73
74static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 74static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
75 const unsigned char *in, unsigned int inl) 75 const unsigned char *in, size_t inl)
76{ 76{
77 BLOCK_CIPHER_ecb_loop() 77 BLOCK_CIPHER_ecb_loop()
78 DES_ecb_encrypt((DES_cblock *)(in + i), (DES_cblock *)(out + i), ctx->cipher_data, ctx->encrypt); 78 DES_ecb_encrypt((DES_cblock *)(in + i), (DES_cblock *)(out + i), ctx->cipher_data, ctx->encrypt);
@@ -80,24 +80,52 @@ static int des_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
80} 80}
81 81
82static int des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 82static int des_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
83 const unsigned char *in, unsigned int inl) 83 const unsigned char *in, size_t inl)
84{ 84{
85 DES_ofb64_encrypt(in, out, (long)inl, ctx->cipher_data, (DES_cblock *)ctx->iv, &ctx->num); 85 while(inl>=EVP_MAXCHUNK)
86 {
87 DES_ofb64_encrypt(in, out, (long)EVP_MAXCHUNK, ctx->cipher_data,
88 (DES_cblock *)ctx->iv, &ctx->num);
89 inl-=EVP_MAXCHUNK;
90 in +=EVP_MAXCHUNK;
91 out+=EVP_MAXCHUNK;
92 }
93 if (inl)
94 DES_ofb64_encrypt(in, out, (long)inl, ctx->cipher_data,
95 (DES_cblock *)ctx->iv, &ctx->num);
86 return 1; 96 return 1;
87} 97}
88 98
89static int des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 99static int des_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
90 const unsigned char *in, unsigned int inl) 100 const unsigned char *in, size_t inl)
91{ 101{
92 DES_ncbc_encrypt(in, out, (long)inl, ctx->cipher_data, 102 while(inl>=EVP_MAXCHUNK)
93 (DES_cblock *)ctx->iv, ctx->encrypt); 103 {
104 DES_ncbc_encrypt(in, out, (long)EVP_MAXCHUNK, ctx->cipher_data,
105 (DES_cblock *)ctx->iv, ctx->encrypt);
106 inl-=EVP_MAXCHUNK;
107 in +=EVP_MAXCHUNK;
108 out+=EVP_MAXCHUNK;
109 }
110 if (inl)
111 DES_ncbc_encrypt(in, out, (long)inl, ctx->cipher_data,
112 (DES_cblock *)ctx->iv, ctx->encrypt);
94 return 1; 113 return 1;
95} 114}
96 115
97static int des_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 116static int des_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
98 const unsigned char *in, unsigned int inl) 117 const unsigned char *in, size_t inl)
99{ 118{
100 DES_cfb64_encrypt(in, out, (long)inl, ctx->cipher_data, 119 while(inl>=EVP_MAXCHUNK)
120 {
121 DES_cfb64_encrypt(in,out, (long)EVP_MAXCHUNK, ctx->cipher_data,
122 (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt);
123 inl-=EVP_MAXCHUNK;
124 in +=EVP_MAXCHUNK;
125 out+=EVP_MAXCHUNK;
126 }
127 if (inl)
128 DES_cfb64_encrypt(in, out, (long)inl, ctx->cipher_data,
101 (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt); 129 (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt);
102 return 1; 130 return 1;
103} 131}
@@ -105,45 +133,62 @@ static int des_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
105/* Although we have a CFB-r implementation for DES, it doesn't pack the right 133/* Although we have a CFB-r implementation for DES, it doesn't pack the right
106 way, so wrap it here */ 134 way, so wrap it here */
107static int des_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 135static int des_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
108 const unsigned char *in, unsigned int inl) 136 const unsigned char *in, size_t inl)
109 { 137 {
110 unsigned int n; 138 size_t n,chunk=EVP_MAXCHUNK/8;
111 unsigned char c[1],d[1]; 139 unsigned char c[1],d[1];
112 140
113 for(n=0 ; n < inl ; ++n) 141 if (inl<chunk) chunk=inl;
142
143 while (inl && inl>=chunk)
114 { 144 {
115 c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0; 145 for(n=0 ; n < chunk*8; ++n)
116 DES_cfb_encrypt(c,d,1,1,ctx->cipher_data,(DES_cblock *)ctx->iv, 146 {
147 c[0]=(in[n/8]&(1 << (7-n%8))) ? 0x80 : 0;
148 DES_cfb_encrypt(c,d,1,1,ctx->cipher_data,(DES_cblock *)ctx->iv,
117 ctx->encrypt); 149 ctx->encrypt);
118 out[n/8]=(out[n/8]&~(0x80 >> (n%8)))|((d[0]&0x80) >> (n%8)); 150 out[n/8]=(out[n/8]&~(0x80 >> (unsigned int)(n%8))) |
151 ((d[0]&0x80) >> (unsigned int)(n%8));
152 }
153 inl-=chunk;
154 in +=chunk;
155 out+=chunk;
156 if (inl<chunk) chunk=inl;
119 } 157 }
158
120 return 1; 159 return 1;
121 } 160 }
122 161
123static int des_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 162static int des_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
124 const unsigned char *in, unsigned int inl) 163 const unsigned char *in, size_t inl)
125 { 164 {
126 DES_cfb_encrypt(in,out,8,inl,ctx->cipher_data,(DES_cblock *)ctx->iv, 165 while (inl>=EVP_MAXCHUNK)
127 ctx->encrypt); 166 {
167 DES_cfb_encrypt(in,out,8,(long)EVP_MAXCHUNK,ctx->cipher_data,
168 (DES_cblock *)ctx->iv,ctx->encrypt);
169 inl-=EVP_MAXCHUNK;
170 in +=EVP_MAXCHUNK;
171 out+=EVP_MAXCHUNK;
172 }
173 if (inl)
174 DES_cfb_encrypt(in,out,8,(long)inl,ctx->cipher_data,
175 (DES_cblock *)ctx->iv,ctx->encrypt);
128 return 1; 176 return 1;
129 } 177 }
130 178
131BLOCK_CIPHER_defs(des, DES_key_schedule, NID_des, 8, 8, 8, 64, 179BLOCK_CIPHER_defs(des, DES_key_schedule, NID_des, 8, 8, 8, 64,
132 EVP_CIPH_RAND_KEY, 180 EVP_CIPH_RAND_KEY, des_init_key, NULL,
133 des_init_key, NULL,
134 EVP_CIPHER_set_asn1_iv, 181 EVP_CIPHER_set_asn1_iv,
135 EVP_CIPHER_get_asn1_iv, 182 EVP_CIPHER_get_asn1_iv,
136 des_ctrl) 183 des_ctrl)
137 184
138BLOCK_CIPHER_def_cfb(des,DES_key_schedule,NID_des,8,8,1, 185BLOCK_CIPHER_def_cfb(des,DES_key_schedule,NID_des,8,8,1,
139 EVP_CIPH_RAND_KEY, 186 EVP_CIPH_RAND_KEY, des_init_key,NULL,
140 des_init_key, NULL,
141 EVP_CIPHER_set_asn1_iv, 187 EVP_CIPHER_set_asn1_iv,
142 EVP_CIPHER_get_asn1_iv,des_ctrl) 188 EVP_CIPHER_get_asn1_iv,des_ctrl)
143 189
144BLOCK_CIPHER_def_cfb(des,DES_key_schedule,NID_des,8,8,8, 190BLOCK_CIPHER_def_cfb(des,DES_key_schedule,NID_des,8,8,8,
145 EVP_CIPH_RAND_KEY, 191 EVP_CIPH_RAND_KEY,des_init_key,NULL,
146 des_init_key,NULL,
147 EVP_CIPHER_set_asn1_iv, 192 EVP_CIPHER_set_asn1_iv,
148 EVP_CIPHER_get_asn1_iv,des_ctrl) 193 EVP_CIPHER_get_asn1_iv,des_ctrl)
149 194
diff --git a/src/lib/libssl/src/crypto/evp/e_des3.c b/src/lib/libssl/src/crypto/evp/e_des3.c
index f910af19b1..3232cfe024 100644
--- a/src/lib/libssl/src/crypto/evp/e_des3.c
+++ b/src/lib/libssl/src/crypto/evp/e_des3.c
@@ -85,7 +85,7 @@ typedef struct
85/* Because of various casts and different args can't use IMPLEMENT_BLOCK_CIPHER */ 85/* Because of various casts and different args can't use IMPLEMENT_BLOCK_CIPHER */
86 86
87static int des_ede_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 87static int des_ede_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
88 const unsigned char *in, unsigned int inl) 88 const unsigned char *in, size_t inl)
89{ 89{
90 BLOCK_CIPHER_ecb_loop() 90 BLOCK_CIPHER_ecb_loop()
91 DES_ecb3_encrypt((const_DES_cblock *)(in + i), 91 DES_ecb3_encrypt((const_DES_cblock *)(in + i),
@@ -97,48 +97,80 @@ static int des_ede_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
97} 97}
98 98
99static int des_ede_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 99static int des_ede_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
100 const unsigned char *in, unsigned int inl) 100 const unsigned char *in, size_t inl)
101{ 101{
102 DES_ede3_ofb64_encrypt(in, out, (long)inl, 102 if (inl>=EVP_MAXCHUNK)
103 {
104 DES_ede3_ofb64_encrypt(in, out, (long)EVP_MAXCHUNK,
103 &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, 105 &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3,
104 (DES_cblock *)ctx->iv, &ctx->num); 106 (DES_cblock *)ctx->iv, &ctx->num);
107 inl-=EVP_MAXCHUNK;
108 in +=EVP_MAXCHUNK;
109 out+=EVP_MAXCHUNK;
110 }
111 if (inl)
112 DES_ede3_ofb64_encrypt(in, out, (long)inl,
113 &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3,
114 (DES_cblock *)ctx->iv, &ctx->num);
115
105 return 1; 116 return 1;
106} 117}
107 118
108static int des_ede_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 119static int des_ede_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
109 const unsigned char *in, unsigned int inl) 120 const unsigned char *in, size_t inl)
110{ 121{
111#ifdef KSSL_DEBUG 122#ifdef KSSL_DEBUG
112 { 123 {
113 int i; 124 int i;
114 printf("des_ede_cbc_cipher(ctx=%lx, buflen=%d)\n", (unsigned long)ctx, ctx->buf_len); 125 char *cp;
126 printf("des_ede_cbc_cipher(ctx=%lx, buflen=%d)\n", ctx, ctx->buf_len);
115 printf("\t iv= "); 127 printf("\t iv= ");
116 for(i=0;i<8;i++) 128 for(i=0;i<8;i++)
117 printf("%02X",ctx->iv[i]); 129 printf("%02X",ctx->iv[i]);
118 printf("\n"); 130 printf("\n");
119 } 131 }
120#endif /* KSSL_DEBUG */ 132#endif /* KSSL_DEBUG */
121 DES_ede3_cbc_encrypt(in, out, (long)inl, 133 if (inl>=EVP_MAXCHUNK)
134 {
135 DES_ede3_cbc_encrypt(in, out, (long)EVP_MAXCHUNK,
122 &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, 136 &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3,
123 (DES_cblock *)ctx->iv, ctx->encrypt); 137 (DES_cblock *)ctx->iv, ctx->encrypt);
138 inl-=EVP_MAXCHUNK;
139 in +=EVP_MAXCHUNK;
140 out+=EVP_MAXCHUNK;
141 }
142 if (inl)
143 DES_ede3_cbc_encrypt(in, out, (long)inl,
144 &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3,
145 (DES_cblock *)ctx->iv, ctx->encrypt);
124 return 1; 146 return 1;
125} 147}
126 148
127static int des_ede_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 149static int des_ede_cfb64_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
128 const unsigned char *in, unsigned int inl) 150 const unsigned char *in, size_t inl)
129{ 151{
130 DES_ede3_cfb64_encrypt(in, out, (long)inl, 152 if (inl>=EVP_MAXCHUNK)
153 {
154 DES_ede3_cfb64_encrypt(in, out, (long)EVP_MAXCHUNK,
131 &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3, 155 &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3,
132 (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt); 156 (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt);
157 inl-=EVP_MAXCHUNK;
158 in +=EVP_MAXCHUNK;
159 out+=EVP_MAXCHUNK;
160 }
161 if (inl)
162 DES_ede3_cfb64_encrypt(in, out, (long)inl,
163 &data(ctx)->ks1, &data(ctx)->ks2, &data(ctx)->ks3,
164 (DES_cblock *)ctx->iv, &ctx->num, ctx->encrypt);
133 return 1; 165 return 1;
134} 166}
135 167
136/* Although we have a CFB-r implementation for 3-DES, it doesn't pack the right 168/* Although we have a CFB-r implementation for 3-DES, it doesn't pack the right
137 way, so wrap it here */ 169 way, so wrap it here */
138static int des_ede3_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 170static int des_ede3_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
139 const unsigned char *in, unsigned int inl) 171 const unsigned char *in, size_t inl)
140 { 172 {
141 unsigned int n; 173 size_t n;
142 unsigned char c[1],d[1]; 174 unsigned char c[1],d[1];
143 175
144 for(n=0 ; n < inl ; ++n) 176 for(n=0 ; n < inl ; ++n)
@@ -147,25 +179,36 @@ static int des_ede3_cfb1_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
147 DES_ede3_cfb_encrypt(c,d,1,1, 179 DES_ede3_cfb_encrypt(c,d,1,1,
148 &data(ctx)->ks1,&data(ctx)->ks2,&data(ctx)->ks3, 180 &data(ctx)->ks1,&data(ctx)->ks2,&data(ctx)->ks3,
149 (DES_cblock *)ctx->iv,ctx->encrypt); 181 (DES_cblock *)ctx->iv,ctx->encrypt);
150 out[n/8]=(out[n/8]&~(0x80 >> (n%8)))|((d[0]&0x80) >> (n%8)); 182 out[n/8]=(out[n/8]&~(0x80 >> (unsigned int)(n%8))) |
183 ((d[0]&0x80) >> (unsigned int)(n%8));
151 } 184 }
152 185
153 return 1; 186 return 1;
154 } 187 }
155 188
156static int des_ede3_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 189static int des_ede3_cfb8_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
157 const unsigned char *in, unsigned int inl) 190 const unsigned char *in, size_t inl)
158 { 191 {
159 DES_ede3_cfb_encrypt(in,out,8,inl, 192 while (inl>=EVP_MAXCHUNK)
193 {
194 DES_ede3_cfb_encrypt(in,out,8,(long)EVP_MAXCHUNK,
160 &data(ctx)->ks1,&data(ctx)->ks2,&data(ctx)->ks3, 195 &data(ctx)->ks1,&data(ctx)->ks2,&data(ctx)->ks3,
161 (DES_cblock *)ctx->iv,ctx->encrypt); 196 (DES_cblock *)ctx->iv,ctx->encrypt);
197 inl-=EVP_MAXCHUNK;
198 in +=EVP_MAXCHUNK;
199 out+=EVP_MAXCHUNK;
200 }
201 if (inl)
202 DES_ede3_cfb_encrypt(in,out,8,(long)inl,
203 &data(ctx)->ks1,&data(ctx)->ks2,&data(ctx)->ks3,
204 (DES_cblock *)ctx->iv,ctx->encrypt);
162 return 1; 205 return 1;
163 } 206 }
164 207
165BLOCK_CIPHER_defs(des_ede, DES_EDE_KEY, NID_des_ede, 8, 16, 8, 64, 208BLOCK_CIPHER_defs(des_ede, DES_EDE_KEY, NID_des_ede, 8, 16, 8, 64,
166 EVP_CIPH_RAND_KEY|EVP_CIPH_FLAG_FIPS|EVP_CIPH_FLAG_DEFAULT_ASN1, 209 EVP_CIPH_RAND_KEY, des_ede_init_key, NULL,
167 des_ede_init_key, 210 EVP_CIPHER_set_asn1_iv,
168 NULL, NULL, NULL, 211 EVP_CIPHER_get_asn1_iv,
169 des3_ctrl) 212 des3_ctrl)
170 213
171#define des_ede3_cfb64_cipher des_ede_cfb64_cipher 214#define des_ede3_cfb64_cipher des_ede_cfb64_cipher
@@ -174,21 +217,21 @@ BLOCK_CIPHER_defs(des_ede, DES_EDE_KEY, NID_des_ede, 8, 16, 8, 64,
174#define des_ede3_ecb_cipher des_ede_ecb_cipher 217#define des_ede3_ecb_cipher des_ede_ecb_cipher
175 218
176BLOCK_CIPHER_defs(des_ede3, DES_EDE_KEY, NID_des_ede3, 8, 24, 8, 64, 219BLOCK_CIPHER_defs(des_ede3, DES_EDE_KEY, NID_des_ede3, 8, 24, 8, 64,
177 EVP_CIPH_RAND_KEY|EVP_CIPH_FLAG_FIPS|EVP_CIPH_FLAG_DEFAULT_ASN1, 220 EVP_CIPH_RAND_KEY, des_ede3_init_key, NULL,
178 des_ede3_init_key, 221 EVP_CIPHER_set_asn1_iv,
179 NULL, NULL, NULL, 222 EVP_CIPHER_get_asn1_iv,
180 des3_ctrl) 223 des3_ctrl)
181 224
182BLOCK_CIPHER_def_cfb(des_ede3,DES_EDE_KEY,NID_des_ede3,24,8,1, 225BLOCK_CIPHER_def_cfb(des_ede3,DES_EDE_KEY,NID_des_ede3,24,8,1,
183 EVP_CIPH_RAND_KEY|EVP_CIPH_FLAG_FIPS|EVP_CIPH_FLAG_DEFAULT_ASN1, 226 EVP_CIPH_RAND_KEY, des_ede3_init_key,NULL,
184 des_ede3_init_key, 227 EVP_CIPHER_set_asn1_iv,
185 NULL, NULL, NULL, 228 EVP_CIPHER_get_asn1_iv,
186 des3_ctrl) 229 des3_ctrl)
187 230
188BLOCK_CIPHER_def_cfb(des_ede3,DES_EDE_KEY,NID_des_ede3,24,8,8, 231BLOCK_CIPHER_def_cfb(des_ede3,DES_EDE_KEY,NID_des_ede3,24,8,8,
189 EVP_CIPH_RAND_KEY|EVP_CIPH_FLAG_FIPS|EVP_CIPH_FLAG_DEFAULT_ASN1, 232 EVP_CIPH_RAND_KEY, des_ede3_init_key,NULL,
190 des_ede3_init_key, 233 EVP_CIPHER_set_asn1_iv,
191 NULL, NULL, NULL, 234 EVP_CIPHER_get_asn1_iv,
192 des3_ctrl) 235 des3_ctrl)
193 236
194static int des_ede_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 237static int des_ede_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
@@ -215,7 +258,7 @@ static int des_ede3_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
215#ifdef KSSL_DEBUG 258#ifdef KSSL_DEBUG
216 { 259 {
217 int i; 260 int i;
218 printf("des_ede3_init_key(ctx=%lx)\n", (unsigned long)ctx); 261 printf("des_ede3_init_key(ctx=%lx)\n", ctx);
219 printf("\tKEY= "); 262 printf("\tKEY= ");
220 for(i=0;i<24;i++) printf("%02X",key[i]); printf("\n"); 263 for(i=0;i<24;i++) printf("%02X",key[i]); printf("\n");
221 printf("\t IV= "); 264 printf("\t IV= ");
diff --git a/src/lib/libssl/src/crypto/evp/e_idea.c b/src/lib/libssl/src/crypto/evp/e_idea.c
index 48c33a774a..806b080360 100644
--- a/src/lib/libssl/src/crypto/evp/e_idea.c
+++ b/src/lib/libssl/src/crypto/evp/e_idea.c
@@ -73,7 +73,7 @@ static int idea_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
73 */ 73 */
74 74
75static int idea_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 75static int idea_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
76 const unsigned char *in, unsigned int inl) 76 const unsigned char *in, size_t inl)
77{ 77{
78 BLOCK_CIPHER_ecb_loop() 78 BLOCK_CIPHER_ecb_loop()
79 idea_ecb_encrypt(in + i, out + i, ctx->cipher_data); 79 idea_ecb_encrypt(in + i, out + i, ctx->cipher_data);
diff --git a/src/lib/libssl/src/crypto/evp/e_null.c b/src/lib/libssl/src/crypto/evp/e_null.c
index 0872d733e4..7cf50e1416 100644
--- a/src/lib/libssl/src/crypto/evp/e_null.c
+++ b/src/lib/libssl/src/crypto/evp/e_null.c
@@ -64,12 +64,12 @@
64static int null_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 64static int null_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
65 const unsigned char *iv,int enc); 65 const unsigned char *iv,int enc);
66static int null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 66static int null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
67 const unsigned char *in, unsigned int inl); 67 const unsigned char *in, size_t inl);
68static const EVP_CIPHER n_cipher= 68static const EVP_CIPHER n_cipher=
69 { 69 {
70 NID_undef, 70 NID_undef,
71 1,0,0, 71 1,0,0,
72 EVP_CIPH_FLAG_FIPS, 72 0,
73 null_init_key, 73 null_init_key,
74 null_cipher, 74 null_cipher,
75 NULL, 75 NULL,
@@ -93,10 +93,10 @@ static int null_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
93 } 93 }
94 94
95static int null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 95static int null_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
96 const unsigned char *in, unsigned int inl) 96 const unsigned char *in, size_t inl)
97 { 97 {
98 if (in != out) 98 if (in != out)
99 memcpy((char *)out,(const char *)in,(size_t)inl); 99 memcpy((char *)out,(const char *)in,inl);
100 return 1; 100 return 1;
101 } 101 }
102 102
diff --git a/src/lib/libssl/src/crypto/evp/e_rc2.c b/src/lib/libssl/src/crypto/evp/e_rc2.c
index d37726ffae..f78d781129 100644
--- a/src/lib/libssl/src/crypto/evp/e_rc2.c
+++ b/src/lib/libssl/src/crypto/evp/e_rc2.c
@@ -223,6 +223,11 @@ static int rc2_ctrl(EVP_CIPHER_CTX *c, int type, int arg, void *ptr)
223 return 1; 223 return 1;
224 } 224 }
225 return 0; 225 return 0;
226#ifdef PBE_PRF_TEST
227 case EVP_CTRL_PBE_PRF_NID:
228 *(int *)ptr = NID_hmacWithMD5;
229 return 1;
230#endif
226 231
227 default: 232 default:
228 return -1; 233 return -1;
diff --git a/src/lib/libssl/src/crypto/evp/e_rc4.c b/src/lib/libssl/src/crypto/evp/e_rc4.c
index 55baad7446..8b5175e0fd 100644
--- a/src/lib/libssl/src/crypto/evp/e_rc4.c
+++ b/src/lib/libssl/src/crypto/evp/e_rc4.c
@@ -64,7 +64,6 @@
64#include <openssl/evp.h> 64#include <openssl/evp.h>
65#include <openssl/objects.h> 65#include <openssl/objects.h>
66#include <openssl/rc4.h> 66#include <openssl/rc4.h>
67#include "evp_locl.h"
68 67
69/* FIXME: surely this is available elsewhere? */ 68/* FIXME: surely this is available elsewhere? */
70#define EVP_RC4_KEY_SIZE 16 69#define EVP_RC4_KEY_SIZE 16
@@ -79,7 +78,7 @@ typedef struct
79static int rc4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 78static int rc4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
80 const unsigned char *iv,int enc); 79 const unsigned char *iv,int enc);
81static int rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 80static int rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
82 const unsigned char *in, unsigned int inl); 81 const unsigned char *in, size_t inl);
83static const EVP_CIPHER r4_cipher= 82static const EVP_CIPHER r4_cipher=
84 { 83 {
85 NID_rc4, 84 NID_rc4,
@@ -129,7 +128,7 @@ static int rc4_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
129 } 128 }
130 129
131static int rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 130static int rc4_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
132 const unsigned char *in, unsigned int inl) 131 const unsigned char *in, size_t inl)
133 { 132 {
134 RC4(&data(ctx)->ks,inl,in,out); 133 RC4(&data(ctx)->ks,inl,in,out);
135 return 1; 134 return 1;
diff --git a/src/lib/libssl/src/crypto/evp/e_xcbc_d.c b/src/lib/libssl/src/crypto/evp/e_xcbc_d.c
index 8832da2433..250e88c8c5 100644
--- a/src/lib/libssl/src/crypto/evp/e_xcbc_d.c
+++ b/src/lib/libssl/src/crypto/evp/e_xcbc_d.c
@@ -63,12 +63,13 @@
63 63
64#include <openssl/evp.h> 64#include <openssl/evp.h>
65#include <openssl/objects.h> 65#include <openssl/objects.h>
66#include "evp_locl.h"
66#include <openssl/des.h> 67#include <openssl/des.h>
67 68
68static int desx_cbc_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 69static int desx_cbc_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
69 const unsigned char *iv,int enc); 70 const unsigned char *iv,int enc);
70static int desx_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 71static int desx_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
71 const unsigned char *in, unsigned int inl); 72 const unsigned char *in, size_t inl);
72 73
73 74
74typedef struct 75typedef struct
@@ -113,13 +114,25 @@ static int desx_cbc_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
113 } 114 }
114 115
115static int desx_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, 116static int desx_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
116 const unsigned char *in, unsigned int inl) 117 const unsigned char *in, size_t inl)
117 { 118 {
118 DES_xcbc_encrypt(in,out,inl,&data(ctx)->ks, 119 while (inl>=EVP_MAXCHUNK)
120 {
121 DES_xcbc_encrypt(in,out,(long)EVP_MAXCHUNK,&data(ctx)->ks,
119 (DES_cblock *)&(ctx->iv[0]), 122 (DES_cblock *)&(ctx->iv[0]),
120 &data(ctx)->inw, 123 &data(ctx)->inw,
121 &data(ctx)->outw, 124 &data(ctx)->outw,
122 ctx->encrypt); 125 ctx->encrypt);
126 inl-=EVP_MAXCHUNK;
127 in +=EVP_MAXCHUNK;
128 out+=EVP_MAXCHUNK;
129 }
130 if (inl)
131 DES_xcbc_encrypt(in,out,(long)inl,&data(ctx)->ks,
132 (DES_cblock *)&(ctx->iv[0]),
133 &data(ctx)->inw,
134 &data(ctx)->outw,
135 ctx->encrypt);
123 return 1; 136 return 1;
124 } 137 }
125#endif 138#endif
diff --git a/src/lib/libssl/src/crypto/evp/encode.c b/src/lib/libssl/src/crypto/evp/encode.c
index 5921f0d710..b42c747249 100644
--- a/src/lib/libssl/src/crypto/evp/encode.c
+++ b/src/lib/libssl/src/crypto/evp/encode.c
@@ -85,7 +85,7 @@
85#define CHUNKS_PER_LINE (64/4) 85#define CHUNKS_PER_LINE (64/4)
86#define CHAR_PER_LINE (64+1) 86#define CHAR_PER_LINE (64+1)
87 87
88static unsigned char data_bin2ascii[65]="ABCDEFGHIJKLMNOPQRSTUVWXYZ\ 88static const unsigned char data_bin2ascii[65]="ABCDEFGHIJKLMNOPQRSTUVWXYZ\
89abcdefghijklmnopqrstuvwxyz0123456789+/"; 89abcdefghijklmnopqrstuvwxyz0123456789+/";
90 90
91/* 0xF0 is a EOLN 91/* 0xF0 is a EOLN
@@ -102,7 +102,7 @@ abcdefghijklmnopqrstuvwxyz0123456789+/";
102#define B64_ERROR 0xFF 102#define B64_ERROR 0xFF
103#define B64_NOT_BASE64(a) (((a)|0x13) == 0xF3) 103#define B64_NOT_BASE64(a) (((a)|0x13) == 0xF3)
104 104
105static unsigned char data_ascii2bin[128]={ 105static const unsigned char data_ascii2bin[128]={
106 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 106 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
107 0xFF,0xE0,0xF0,0xFF,0xFF,0xF1,0xFF,0xFF, 107 0xFF,0xE0,0xF0,0xFF,0xFF,0xF1,0xFF,0xFF,
108 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 108 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
diff --git a/src/lib/libssl/src/crypto/evp/evp.h b/src/lib/libssl/src/crypto/evp/evp.h
index 79c097181f..9f9795e2d9 100644
--- a/src/lib/libssl/src/crypto/evp/evp.h
+++ b/src/lib/libssl/src/crypto/evp/evp.h
@@ -75,10 +75,6 @@
75#include <openssl/bio.h> 75#include <openssl/bio.h>
76#endif 76#endif
77 77
78#ifdef OPENSSL_FIPS
79#include <openssl/fips.h>
80#endif
81
82/* 78/*
83#define EVP_RC2_KEY_SIZE 16 79#define EVP_RC2_KEY_SIZE 16
84#define EVP_RC4_KEY_SIZE 16 80#define EVP_RC4_KEY_SIZE 16
@@ -119,6 +115,7 @@
119#define EVP_PKEY_DSA4 NID_dsaWithSHA1_2 115#define EVP_PKEY_DSA4 NID_dsaWithSHA1_2
120#define EVP_PKEY_DH NID_dhKeyAgreement 116#define EVP_PKEY_DH NID_dhKeyAgreement
121#define EVP_PKEY_EC NID_X9_62_id_ecPublicKey 117#define EVP_PKEY_EC NID_X9_62_id_ecPublicKey
118#define EVP_PKEY_HMAC NID_hmac
122 119
123#ifdef __cplusplus 120#ifdef __cplusplus
124extern "C" { 121extern "C" {
@@ -132,6 +129,8 @@ struct evp_pkey_st
132 int type; 129 int type;
133 int save_type; 130 int save_type;
134 int references; 131 int references;
132 const EVP_PKEY_ASN1_METHOD *ameth;
133 ENGINE *engine;
135 union { 134 union {
136 char *ptr; 135 char *ptr;
137#ifndef OPENSSL_NO_RSA 136#ifndef OPENSSL_NO_RSA
@@ -156,73 +155,6 @@ struct evp_pkey_st
156#define EVP_PKEY_MO_ENCRYPT 0x0004 155#define EVP_PKEY_MO_ENCRYPT 0x0004
157#define EVP_PKEY_MO_DECRYPT 0x0008 156#define EVP_PKEY_MO_DECRYPT 0x0008
158 157
159#if 0
160/* This structure is required to tie the message digest and signing together.
161 * The lookup can be done by md/pkey_method, oid, oid/pkey_method, or
162 * oid, md and pkey.
163 * This is required because for various smart-card perform the digest and
164 * signing/verification on-board. To handle this case, the specific
165 * EVP_MD and EVP_PKEY_METHODs need to be closely associated.
166 * When a PKEY is created, it will have a EVP_PKEY_METHOD associated with it.
167 * This can either be software or a token to provide the required low level
168 * routines.
169 */
170typedef struct evp_pkey_md_st
171 {
172 int oid;
173 EVP_MD *md;
174 EVP_PKEY_METHOD *pkey;
175 } EVP_PKEY_MD;
176
177#define EVP_rsa_md2() \
178 EVP_PKEY_MD_add(NID_md2WithRSAEncryption,\
179 EVP_rsa_pkcs1(),EVP_md2())
180#define EVP_rsa_md5() \
181 EVP_PKEY_MD_add(NID_md5WithRSAEncryption,\
182 EVP_rsa_pkcs1(),EVP_md5())
183#define EVP_rsa_sha0() \
184 EVP_PKEY_MD_add(NID_shaWithRSAEncryption,\
185 EVP_rsa_pkcs1(),EVP_sha())
186#define EVP_rsa_sha1() \
187 EVP_PKEY_MD_add(NID_sha1WithRSAEncryption,\
188 EVP_rsa_pkcs1(),EVP_sha1())
189#define EVP_rsa_ripemd160() \
190 EVP_PKEY_MD_add(NID_ripemd160WithRSA,\
191 EVP_rsa_pkcs1(),EVP_ripemd160())
192#define EVP_rsa_mdc2() \
193 EVP_PKEY_MD_add(NID_mdc2WithRSA,\
194 EVP_rsa_octet_string(),EVP_mdc2())
195#define EVP_dsa_sha() \
196 EVP_PKEY_MD_add(NID_dsaWithSHA,\
197 EVP_dsa(),EVP_sha())
198#define EVP_dsa_sha1() \
199 EVP_PKEY_MD_add(NID_dsaWithSHA1,\
200 EVP_dsa(),EVP_sha1())
201
202typedef struct evp_pkey_method_st
203 {
204 char *name;
205 int flags;
206 int type; /* RSA, DSA, an SSLeay specific constant */
207 int oid; /* For the pub-key type */
208 int encrypt_oid; /* pub/priv key encryption */
209
210 int (*sign)();
211 int (*verify)();
212 struct {
213 int (*set)(); /* get and/or set the underlying type */
214 int (*get)();
215 int (*encrypt)();
216 int (*decrypt)();
217 int (*i2d)();
218 int (*d2i)();
219 int (*dup)();
220 } pub,priv;
221 int (*set_asn1_parameters)();
222 int (*get_asn1_parameters)();
223 } EVP_PKEY_METHOD;
224#endif
225
226#ifndef EVP_MD 158#ifndef EVP_MD
227struct env_md_st 159struct env_md_st
228 { 160 {
@@ -245,6 +177,8 @@ struct env_md_st
245 int required_pkey_type[5]; /*EVP_PKEY_xxx */ 177 int required_pkey_type[5]; /*EVP_PKEY_xxx */
246 int block_size; 178 int block_size;
247 int ctx_size; /* how big does the ctx->md_data need to be */ 179 int ctx_size; /* how big does the ctx->md_data need to be */
180 /* control function */
181 int (*md_ctrl)(EVP_MD_CTX *ctx, int cmd, int p1, void *p2);
248 } /* EVP_MD */; 182 } /* EVP_MD */;
249 183
250typedef int evp_sign_method(int type,const unsigned char *m, 184typedef int evp_sign_method(int type,const unsigned char *m,
@@ -254,18 +188,42 @@ typedef int evp_verify_method(int type,const unsigned char *m,
254 unsigned int m_length,const unsigned char *sigbuf, 188 unsigned int m_length,const unsigned char *sigbuf,
255 unsigned int siglen, void *key); 189 unsigned int siglen, void *key);
256 190
257typedef struct
258 {
259 EVP_MD_CTX *mctx;
260 void *key;
261 } EVP_MD_SVCTX;
262
263#define EVP_MD_FLAG_ONESHOT 0x0001 /* digest can only handle a single 191#define EVP_MD_FLAG_ONESHOT 0x0001 /* digest can only handle a single
264 * block */ 192 * block */
265 193
266#define EVP_MD_FLAG_FIPS 0x0400 /* Note if suitable for use in FIPS mode */ 194#define EVP_MD_FLAG_PKEY_DIGEST 0x0002 /* digest is a "clone" digest used
195 * which is a copy of an existing
196 * one for a specific public key type.
197 * EVP_dss1() etc */
198
199/* Digest uses EVP_PKEY_METHOD for signing instead of MD specific signing */
200
201#define EVP_MD_FLAG_PKEY_METHOD_SIGNATURE 0x0004
202
203/* DigestAlgorithmIdentifier flags... */
204
205#define EVP_MD_FLAG_DIGALGID_MASK 0x0018
267 206
268#define EVP_MD_FLAG_SVCTX 0x0800 /* pass EVP_MD_SVCTX to sign/verify */ 207/* NULL or absent parameter accepted. Use NULL */
208
209#define EVP_MD_FLAG_DIGALGID_NULL 0x0000
210
211/* NULL or absent parameter accepted. Use NULL for PKCS#1 otherwise absent */
212
213#define EVP_MD_FLAG_DIGALGID_ABSENT 0x0008
214
215/* Custom handling via ctrl */
216
217#define EVP_MD_FLAG_DIGALGID_CUSTOM 0x0018
218
219/* Digest ctrls */
220
221#define EVP_MD_CTRL_DIGALGID 0x1
222#define EVP_MD_CTRL_MICALG 0x2
223
224/* Minimum Algorithm specific ctrl value */
225
226#define EVP_MD_CTRL_ALG_CTRL 0x1000
269 227
270#define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0} 228#define EVP_PKEY_NULL_method NULL,NULL,{0,0,0,0}
271 229
@@ -307,6 +265,10 @@ struct env_md_ctx_st
307 ENGINE *engine; /* functional reference if 'digest' is ENGINE-provided */ 265 ENGINE *engine; /* functional reference if 'digest' is ENGINE-provided */
308 unsigned long flags; 266 unsigned long flags;
309 void *md_data; 267 void *md_data;
268 /* Public key context for sign/verify */
269 EVP_PKEY_CTX *pctx;
270 /* Update function: usually copied from EVP_MD */
271 int (*update)(EVP_MD_CTX *ctx,const void *data,size_t count);
310 } /* EVP_MD_CTX */; 272 } /* EVP_MD_CTX */;
311 273
312/* values for EVP_MD_CTX flags */ 274/* values for EVP_MD_CTX flags */
@@ -317,17 +279,23 @@ struct env_md_ctx_st
317 * cleaned */ 279 * cleaned */
318#define EVP_MD_CTX_FLAG_REUSE 0x0004 /* Don't free up ctx->md_data 280#define EVP_MD_CTX_FLAG_REUSE 0x0004 /* Don't free up ctx->md_data
319 * in EVP_MD_CTX_cleanup */ 281 * in EVP_MD_CTX_cleanup */
282/* FIPS and pad options are ignored in 1.0.0, definitions are here
283 * so we don't accidentally reuse the values for other purposes.
284 */
285
320#define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008 /* Allow use of non FIPS digest 286#define EVP_MD_CTX_FLAG_NON_FIPS_ALLOW 0x0008 /* Allow use of non FIPS digest
321 * in FIPS mode */ 287 * in FIPS mode */
322 288
289/* The following PAD options are also currently ignored in 1.0.0, digest
290 * parameters are handled through EVP_DigestSign*() and EVP_DigestVerify*()
291 * instead.
292 */
323#define EVP_MD_CTX_FLAG_PAD_MASK 0xF0 /* RSA mode to use */ 293#define EVP_MD_CTX_FLAG_PAD_MASK 0xF0 /* RSA mode to use */
324#define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00 /* PKCS#1 v1.5 mode */ 294#define EVP_MD_CTX_FLAG_PAD_PKCS1 0x00 /* PKCS#1 v1.5 mode */
325#define EVP_MD_CTX_FLAG_PAD_X931 0x10 /* X9.31 mode */ 295#define EVP_MD_CTX_FLAG_PAD_X931 0x10 /* X9.31 mode */
326#define EVP_MD_CTX_FLAG_PAD_PSS 0x20 /* PSS mode */ 296#define EVP_MD_CTX_FLAG_PAD_PSS 0x20 /* PSS mode */
327#define M_EVP_MD_CTX_FLAG_PSS_SALT(ctx) \ 297
328 ((ctx->flags>>16) &0xFFFF) /* seed length */ 298#define EVP_MD_CTX_FLAG_NO_INIT 0x0100 /* Don't initialize md_data */
329#define EVP_MD_CTX_FLAG_PSS_MDLEN 0xFFFF /* salt len same as digest */
330#define EVP_MD_CTX_FLAG_PSS_MREC 0xFFFE /* salt max or auto recovered */
331 299
332struct evp_cipher_st 300struct evp_cipher_st
333 { 301 {
@@ -339,7 +307,7 @@ struct evp_cipher_st
339 int (*init)(EVP_CIPHER_CTX *ctx, const unsigned char *key, 307 int (*init)(EVP_CIPHER_CTX *ctx, const unsigned char *key,
340 const unsigned char *iv, int enc); /* init key */ 308 const unsigned char *iv, int enc); /* init key */
341 int (*do_cipher)(EVP_CIPHER_CTX *ctx, unsigned char *out, 309 int (*do_cipher)(EVP_CIPHER_CTX *ctx, unsigned char *out,
342 const unsigned char *in, unsigned int inl);/* encrypt/decrypt data */ 310 const unsigned char *in, size_t inl);/* encrypt/decrypt data */
343 int (*cleanup)(EVP_CIPHER_CTX *); /* cleanup ctx */ 311 int (*cleanup)(EVP_CIPHER_CTX *); /* cleanup ctx */
344 int ctx_size; /* how big ctx->cipher_data needs to be */ 312 int ctx_size; /* how big ctx->cipher_data needs to be */
345 int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *); /* Populate a ASN1_TYPE with parameters */ 313 int (*set_asn1_parameters)(EVP_CIPHER_CTX *, ASN1_TYPE *); /* Populate a ASN1_TYPE with parameters */
@@ -357,7 +325,7 @@ struct evp_cipher_st
357#define EVP_CIPH_CBC_MODE 0x2 325#define EVP_CIPH_CBC_MODE 0x2
358#define EVP_CIPH_CFB_MODE 0x3 326#define EVP_CIPH_CFB_MODE 0x3
359#define EVP_CIPH_OFB_MODE 0x4 327#define EVP_CIPH_OFB_MODE 0x4
360#define EVP_CIPH_MODE 0x7 328#define EVP_CIPH_MODE 0xF0007
361/* Set if variable length cipher */ 329/* Set if variable length cipher */
362#define EVP_CIPH_VARIABLE_LENGTH 0x8 330#define EVP_CIPH_VARIABLE_LENGTH 0x8
363/* Set if the iv handling should be done by the cipher itself */ 331/* Set if the iv handling should be done by the cipher itself */
@@ -372,10 +340,8 @@ struct evp_cipher_st
372#define EVP_CIPH_NO_PADDING 0x100 340#define EVP_CIPH_NO_PADDING 0x100
373/* cipher handles random key generation */ 341/* cipher handles random key generation */
374#define EVP_CIPH_RAND_KEY 0x200 342#define EVP_CIPH_RAND_KEY 0x200
375/* Note if suitable for use in FIPS mode */ 343/* cipher has its own additional copying logic */
376#define EVP_CIPH_FLAG_FIPS 0x400 344#define EVP_CIPH_CUSTOM_COPY 0x400
377/* Allow non FIPS cipher in FIPS mode */
378#define EVP_CIPH_FLAG_NON_FIPS_ALLOW 0x800
379/* Allow use default ASN1 get/set iv */ 345/* Allow use default ASN1 get/set iv */
380#define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000 346#define EVP_CIPH_FLAG_DEFAULT_ASN1 0x1000
381/* Buffer length in bits not bytes: CFB1 mode only */ 347/* Buffer length in bits not bytes: CFB1 mode only */
@@ -390,6 +356,8 @@ struct evp_cipher_st
390#define EVP_CTRL_GET_RC5_ROUNDS 0x4 356#define EVP_CTRL_GET_RC5_ROUNDS 0x4
391#define EVP_CTRL_SET_RC5_ROUNDS 0x5 357#define EVP_CTRL_SET_RC5_ROUNDS 0x5
392#define EVP_CTRL_RAND_KEY 0x6 358#define EVP_CTRL_RAND_KEY 0x6
359#define EVP_CTRL_PBE_PRF_NID 0x7
360#define EVP_CTRL_COPY 0x8
393 361
394typedef struct evp_cipher_info_st 362typedef struct evp_cipher_info_st
395 { 363 {
@@ -462,26 +430,15 @@ typedef int (EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
462#define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a)) 430#define EVP_get_cipherbynid(a) EVP_get_cipherbyname(OBJ_nid2sn(a))
463#define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a)) 431#define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a))
464 432
465/* Macros to reduce FIPS dependencies: do NOT use in applications */
466#define M_EVP_MD_size(e) ((e)->md_size)
467#define M_EVP_MD_block_size(e) ((e)->block_size)
468#define M_EVP_MD_CTX_set_flags(ctx,flgs) ((ctx)->flags|=(flgs))
469#define M_EVP_MD_CTX_clear_flags(ctx,flgs) ((ctx)->flags&=~(flgs))
470#define M_EVP_MD_CTX_test_flags(ctx,flgs) ((ctx)->flags&(flgs))
471#define M_EVP_MD_type(e) ((e)->type)
472#define M_EVP_MD_CTX_type(e) M_EVP_MD_type(M_EVP_MD_CTX_md(e))
473#define M_EVP_MD_CTX_md(e) ((e)->digest)
474
475#define M_EVP_CIPHER_CTX_set_flags(ctx,flgs) ((ctx)->flags|=(flgs))
476
477int EVP_MD_type(const EVP_MD *md); 433int EVP_MD_type(const EVP_MD *md);
478#define EVP_MD_nid(e) EVP_MD_type(e) 434#define EVP_MD_nid(e) EVP_MD_type(e)
479#define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e)) 435#define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e))
480int EVP_MD_pkey_type(const EVP_MD *md); 436int EVP_MD_pkey_type(const EVP_MD *md);
481int EVP_MD_size(const EVP_MD *md); 437int EVP_MD_size(const EVP_MD *md);
482int EVP_MD_block_size(const EVP_MD *md); 438int EVP_MD_block_size(const EVP_MD *md);
439unsigned long EVP_MD_flags(const EVP_MD *md);
483 440
484const EVP_MD * EVP_MD_CTX_md(const EVP_MD_CTX *ctx); 441const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx);
485#define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e)) 442#define EVP_MD_CTX_size(e) EVP_MD_size(EVP_MD_CTX_md(e))
486#define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e)) 443#define EVP_MD_CTX_block_size(e) EVP_MD_block_size(EVP_MD_CTX_md(e))
487#define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e)) 444#define EVP_MD_CTX_type(e) EVP_MD_type(EVP_MD_CTX_md(e))
@@ -499,6 +456,7 @@ int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx);
499int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx); 456int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx);
500int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx); 457int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx);
501int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx); 458int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx);
459int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in);
502void * EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx); 460void * EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx);
503void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data); 461void EVP_CIPHER_CTX_set_app_data(EVP_CIPHER_CTX *ctx, void *data);
504#define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c)) 462#define EVP_CIPHER_CTX_type(c) EVP_CIPHER_type(EVP_CIPHER_CTX_cipher(c))
@@ -516,6 +474,8 @@ unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx);
516#define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c) 474#define EVP_VerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
517#define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e) 475#define EVP_OpenUpdate(a,b,c,d,e) EVP_DecryptUpdate(a,b,c,d,e)
518#define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e) 476#define EVP_SealUpdate(a,b,c,d,e) EVP_EncryptUpdate(a,b,c,d,e)
477#define EVP_DigestSignUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
478#define EVP_DigestVerifyUpdate(a,b,c) EVP_DigestUpdate(a,b,c)
519 479
520#ifdef CONST_STRICT 480#ifdef CONST_STRICT
521void BIO_set_md(BIO *,const EVP_MD *md); 481void BIO_set_md(BIO *,const EVP_MD *md);
@@ -562,6 +522,7 @@ int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
562int EVP_DigestFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s); 522int EVP_DigestFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s);
563 523
564int EVP_read_pw_string(char *buf,int length,const char *prompt,int verify); 524int EVP_read_pw_string(char *buf,int length,const char *prompt,int verify);
525int EVP_read_pw_string_min(char *buf,int minlen,int maxlen,const char *prompt,int verify);
565void EVP_set_pw_prompt(const char *prompt); 526void EVP_set_pw_prompt(const char *prompt);
566char * EVP_get_pw_prompt(void); 527char * EVP_get_pw_prompt(void);
567 528
@@ -608,6 +569,16 @@ int EVP_SignFinal(EVP_MD_CTX *ctx,unsigned char *md,unsigned int *s,
608int EVP_VerifyFinal(EVP_MD_CTX *ctx,const unsigned char *sigbuf, 569int EVP_VerifyFinal(EVP_MD_CTX *ctx,const unsigned char *sigbuf,
609 unsigned int siglen,EVP_PKEY *pkey); 570 unsigned int siglen,EVP_PKEY *pkey);
610 571
572int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
573 const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
574int EVP_DigestSignFinal(EVP_MD_CTX *ctx,
575 unsigned char *sigret, size_t *siglen);
576
577int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
578 const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
579int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx,
580 unsigned char *sig, size_t siglen);
581
611int EVP_OpenInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type, 582int EVP_OpenInit(EVP_CIPHER_CTX *ctx,const EVP_CIPHER *type,
612 const unsigned char *ek, int ekl, const unsigned char *iv, 583 const unsigned char *ek, int ekl, const unsigned char *iv,
613 EVP_PKEY *priv); 584 EVP_PKEY *priv);
@@ -680,6 +651,9 @@ const EVP_MD *EVP_mdc2(void);
680#ifndef OPENSSL_NO_RIPEMD 651#ifndef OPENSSL_NO_RIPEMD
681const EVP_MD *EVP_ripemd160(void); 652const EVP_MD *EVP_ripemd160(void);
682#endif 653#endif
654#ifndef OPENSSL_NO_WHIRLPOOL
655const EVP_MD *EVP_whirlpool(void);
656#endif
683const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */ 657const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */
684#ifndef OPENSSL_NO_DES 658#ifndef OPENSSL_NO_DES
685const EVP_CIPHER *EVP_des_ecb(void); 659const EVP_CIPHER *EVP_des_ecb(void);
@@ -847,16 +821,31 @@ const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
847const EVP_MD *EVP_get_digestbyname(const char *name); 821const EVP_MD *EVP_get_digestbyname(const char *name);
848void EVP_cleanup(void); 822void EVP_cleanup(void);
849 823
850int EVP_PKEY_decrypt(unsigned char *dec_key, 824void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph,
825 const char *from, const char *to, void *x), void *arg);
826void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph,
827 const char *from, const char *to, void *x), void *arg);
828
829void EVP_MD_do_all(void (*fn)(const EVP_MD *ciph,
830 const char *from, const char *to, void *x), void *arg);
831void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *ciph,
832 const char *from, const char *to, void *x), void *arg);
833
834int EVP_PKEY_decrypt_old(unsigned char *dec_key,
851 const unsigned char *enc_key,int enc_key_len, 835 const unsigned char *enc_key,int enc_key_len,
852 EVP_PKEY *private_key); 836 EVP_PKEY *private_key);
853int EVP_PKEY_encrypt(unsigned char *enc_key, 837int EVP_PKEY_encrypt_old(unsigned char *enc_key,
854 const unsigned char *key,int key_len, 838 const unsigned char *key,int key_len,
855 EVP_PKEY *pub_key); 839 EVP_PKEY *pub_key);
856int EVP_PKEY_type(int type); 840int EVP_PKEY_type(int type);
841int EVP_PKEY_id(const EVP_PKEY *pkey);
842int EVP_PKEY_base_id(const EVP_PKEY *pkey);
857int EVP_PKEY_bits(EVP_PKEY *pkey); 843int EVP_PKEY_bits(EVP_PKEY *pkey);
858int EVP_PKEY_size(EVP_PKEY *pkey); 844int EVP_PKEY_size(EVP_PKEY *pkey);
859int EVP_PKEY_assign(EVP_PKEY *pkey,int type,char *key); 845int EVP_PKEY_set_type(EVP_PKEY *pkey,int type);
846int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len);
847int EVP_PKEY_assign(EVP_PKEY *pkey,int type,void *key);
848void * EVP_PKEY_get0(EVP_PKEY *pkey);
860 849
861#ifndef OPENSSL_NO_RSA 850#ifndef OPENSSL_NO_RSA
862struct rsa_st; 851struct rsa_st;
@@ -899,6 +888,15 @@ int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b);
899 888
900int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b); 889int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b);
901 890
891int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey,
892 int indent, ASN1_PCTX *pctx);
893int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey,
894 int indent, ASN1_PCTX *pctx);
895int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey,
896 int indent, ASN1_PCTX *pctx);
897
898int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid);
899
902int EVP_CIPHER_type(const EVP_CIPHER *ctx); 900int EVP_CIPHER_type(const EVP_CIPHER *ctx);
903 901
904/* calls methods */ 902/* calls methods */
@@ -916,6 +914,10 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
916int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, 914int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
917 const unsigned char *salt, int saltlen, int iter, 915 const unsigned char *salt, int saltlen, int iter,
918 int keylen, unsigned char *out); 916 int keylen, unsigned char *out);
917int PKCS5_PBKDF2_HMAC(const char *pass, int passlen,
918 const unsigned char *salt, int saltlen, int iter,
919 const EVP_MD *digest,
920 int keylen, unsigned char *out);
919int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 921int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
920 ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md, 922 ASN1_TYPE *param, const EVP_CIPHER *cipher, const EVP_MD *md,
921 int en_de); 923 int en_de);
@@ -924,27 +926,260 @@ void PKCS5_PBE_add(void);
924 926
925int EVP_PBE_CipherInit (ASN1_OBJECT *pbe_obj, const char *pass, int passlen, 927int EVP_PBE_CipherInit (ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
926 ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de); 928 ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de);
929
930/* PBE type */
931
932/* Can appear as the outermost AlgorithmIdentifier */
933#define EVP_PBE_TYPE_OUTER 0x0
934/* Is an PRF type OID */
935#define EVP_PBE_TYPE_PRF 0x1
936
937int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, int md_nid,
938 EVP_PBE_KEYGEN *keygen);
927int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, 939int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md,
928 EVP_PBE_KEYGEN *keygen); 940 EVP_PBE_KEYGEN *keygen);
941int EVP_PBE_find(int type, int pbe_nid,
942 int *pcnid, int *pmnid, EVP_PBE_KEYGEN **pkeygen);
929void EVP_PBE_cleanup(void); 943void EVP_PBE_cleanup(void);
930 944
931#ifdef OPENSSL_FIPS 945#define ASN1_PKEY_ALIAS 0x1
932#ifndef OPENSSL_NO_ENGINE 946#define ASN1_PKEY_DYNAMIC 0x2
933void int_EVP_MD_set_engine_callbacks( 947#define ASN1_PKEY_SIGPARAM_NULL 0x4
934 int (*eng_md_init)(ENGINE *impl), 948
935 int (*eng_md_fin)(ENGINE *impl), 949#define ASN1_PKEY_CTRL_PKCS7_SIGN 0x1
936 int (*eng_md_evp) 950#define ASN1_PKEY_CTRL_PKCS7_ENCRYPT 0x2
937 (EVP_MD_CTX *ctx, const EVP_MD **ptype, ENGINE *impl)); 951#define ASN1_PKEY_CTRL_DEFAULT_MD_NID 0x3
938void int_EVP_MD_init_engine_callbacks(void); 952#define ASN1_PKEY_CTRL_CMS_SIGN 0x5
939void int_EVP_CIPHER_set_engine_callbacks( 953#define ASN1_PKEY_CTRL_CMS_ENVELOPE 0x7
940 int (*eng_ciph_fin)(ENGINE *impl), 954
941 int (*eng_ciph_evp) 955int EVP_PKEY_asn1_get_count(void);
942 (EVP_CIPHER_CTX *ctx, const EVP_CIPHER **pciph, ENGINE *impl)); 956const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_get0(int idx);
943void int_EVP_CIPHER_init_engine_callbacks(void); 957const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find(ENGINE **pe, int type);
944#endif 958const EVP_PKEY_ASN1_METHOD *EVP_PKEY_asn1_find_str(ENGINE **pe,
945#endif 959 const char *str, int len);
960int EVP_PKEY_asn1_add0(const EVP_PKEY_ASN1_METHOD *ameth);
961int EVP_PKEY_asn1_add_alias(int to, int from);
962int EVP_PKEY_asn1_get0_info(int *ppkey_id, int *pkey_base_id, int *ppkey_flags,
963 const char **pinfo, const char **ppem_str,
964 const EVP_PKEY_ASN1_METHOD *ameth);
965
966const EVP_PKEY_ASN1_METHOD* EVP_PKEY_get0_asn1(EVP_PKEY *pkey);
967EVP_PKEY_ASN1_METHOD* EVP_PKEY_asn1_new(int id, int flags,
968 const char *pem_str, const char *info);
969void EVP_PKEY_asn1_copy(EVP_PKEY_ASN1_METHOD *dst,
970 const EVP_PKEY_ASN1_METHOD *src);
971void EVP_PKEY_asn1_free(EVP_PKEY_ASN1_METHOD *ameth);
972void EVP_PKEY_asn1_set_public(EVP_PKEY_ASN1_METHOD *ameth,
973 int (*pub_decode)(EVP_PKEY *pk, X509_PUBKEY *pub),
974 int (*pub_encode)(X509_PUBKEY *pub, const EVP_PKEY *pk),
975 int (*pub_cmp)(const EVP_PKEY *a, const EVP_PKEY *b),
976 int (*pub_print)(BIO *out, const EVP_PKEY *pkey, int indent,
977 ASN1_PCTX *pctx),
978 int (*pkey_size)(const EVP_PKEY *pk),
979 int (*pkey_bits)(const EVP_PKEY *pk));
980void EVP_PKEY_asn1_set_private(EVP_PKEY_ASN1_METHOD *ameth,
981 int (*priv_decode)(EVP_PKEY *pk, PKCS8_PRIV_KEY_INFO *p8inf),
982 int (*priv_encode)(PKCS8_PRIV_KEY_INFO *p8, const EVP_PKEY *pk),
983 int (*priv_print)(BIO *out, const EVP_PKEY *pkey, int indent,
984 ASN1_PCTX *pctx));
985void EVP_PKEY_asn1_set_param(EVP_PKEY_ASN1_METHOD *ameth,
986 int (*param_decode)(EVP_PKEY *pkey,
987 const unsigned char **pder, int derlen),
988 int (*param_encode)(const EVP_PKEY *pkey, unsigned char **pder),
989 int (*param_missing)(const EVP_PKEY *pk),
990 int (*param_copy)(EVP_PKEY *to, const EVP_PKEY *from),
991 int (*param_cmp)(const EVP_PKEY *a, const EVP_PKEY *b),
992 int (*param_print)(BIO *out, const EVP_PKEY *pkey, int indent,
993 ASN1_PCTX *pctx));
994
995void EVP_PKEY_asn1_set_free(EVP_PKEY_ASN1_METHOD *ameth,
996 void (*pkey_free)(EVP_PKEY *pkey));
997void EVP_PKEY_asn1_set_ctrl(EVP_PKEY_ASN1_METHOD *ameth,
998 int (*pkey_ctrl)(EVP_PKEY *pkey, int op,
999 long arg1, void *arg2));
1000
1001
1002#define EVP_PKEY_OP_UNDEFINED 0
1003#define EVP_PKEY_OP_PARAMGEN (1<<1)
1004#define EVP_PKEY_OP_KEYGEN (1<<2)
1005#define EVP_PKEY_OP_SIGN (1<<3)
1006#define EVP_PKEY_OP_VERIFY (1<<4)
1007#define EVP_PKEY_OP_VERIFYRECOVER (1<<5)
1008#define EVP_PKEY_OP_SIGNCTX (1<<6)
1009#define EVP_PKEY_OP_VERIFYCTX (1<<7)
1010#define EVP_PKEY_OP_ENCRYPT (1<<8)
1011#define EVP_PKEY_OP_DECRYPT (1<<9)
1012#define EVP_PKEY_OP_DERIVE (1<<10)
1013
1014#define EVP_PKEY_OP_TYPE_SIG \
1015 (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \
1016 | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)
1017
1018#define EVP_PKEY_OP_TYPE_CRYPT \
1019 (EVP_PKEY_OP_ENCRYPT | EVP_PKEY_OP_DECRYPT)
1020
1021#define EVP_PKEY_OP_TYPE_NOGEN \
1022 (EVP_PKEY_OP_SIG | EVP_PKEY_OP_CRYPT | EVP_PKEY_OP_DERIVE)
1023
1024#define EVP_PKEY_OP_TYPE_GEN \
1025 (EVP_PKEY_OP_PARAMGEN | EVP_PKEY_OP_KEYGEN)
1026
1027#define EVP_PKEY_CTX_set_signature_md(ctx, md) \
1028 EVP_PKEY_CTX_ctrl(ctx, -1, EVP_PKEY_OP_TYPE_SIG, \
1029 EVP_PKEY_CTRL_MD, 0, (void *)md)
1030
1031#define EVP_PKEY_CTRL_MD 1
1032#define EVP_PKEY_CTRL_PEER_KEY 2
1033
1034#define EVP_PKEY_CTRL_PKCS7_ENCRYPT 3
1035#define EVP_PKEY_CTRL_PKCS7_DECRYPT 4
1036
1037#define EVP_PKEY_CTRL_PKCS7_SIGN 5
1038
1039#define EVP_PKEY_CTRL_SET_MAC_KEY 6
1040
1041#define EVP_PKEY_CTRL_DIGESTINIT 7
1042
1043/* Used by GOST key encryption in TLS */
1044#define EVP_PKEY_CTRL_SET_IV 8
1045
1046#define EVP_PKEY_CTRL_CMS_ENCRYPT 9
1047#define EVP_PKEY_CTRL_CMS_DECRYPT 10
1048#define EVP_PKEY_CTRL_CMS_SIGN 11
1049
1050#define EVP_PKEY_ALG_CTRL 0x1000
1051
1052
1053#define EVP_PKEY_FLAG_AUTOARGLEN 2
1054
1055const EVP_PKEY_METHOD *EVP_PKEY_meth_find(int type);
1056EVP_PKEY_METHOD* EVP_PKEY_meth_new(int id, int flags);
1057void EVP_PKEY_meth_free(EVP_PKEY_METHOD *pmeth);
1058int EVP_PKEY_meth_add0(const EVP_PKEY_METHOD *pmeth);
1059
1060EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
1061EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int id, ENGINE *e);
1062EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *ctx);
1063void EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
1064
1065int EVP_PKEY_CTX_ctrl(EVP_PKEY_CTX *ctx, int keytype, int optype,
1066 int cmd, int p1, void *p2);
1067int EVP_PKEY_CTX_ctrl_str(EVP_PKEY_CTX *ctx, const char *type,
1068 const char *value);
1069
1070int EVP_PKEY_CTX_get_operation(EVP_PKEY_CTX *ctx);
1071void EVP_PKEY_CTX_set0_keygen_info(EVP_PKEY_CTX *ctx, int *dat, int datlen);
1072
1073EVP_PKEY *EVP_PKEY_new_mac_key(int type, ENGINE *e,
1074 unsigned char *key, int keylen);
1075
1076void EVP_PKEY_CTX_set_data(EVP_PKEY_CTX *ctx, void *data);
1077void *EVP_PKEY_CTX_get_data(EVP_PKEY_CTX *ctx);
1078EVP_PKEY *EVP_PKEY_CTX_get0_pkey(EVP_PKEY_CTX *ctx);
1079
1080EVP_PKEY *EVP_PKEY_CTX_get0_peerkey(EVP_PKEY_CTX *ctx);
1081
1082void EVP_PKEY_CTX_set_app_data(EVP_PKEY_CTX *ctx, void *data);
1083void *EVP_PKEY_CTX_get_app_data(EVP_PKEY_CTX *ctx);
1084
1085int EVP_PKEY_sign_init(EVP_PKEY_CTX *ctx);
1086int EVP_PKEY_sign(EVP_PKEY_CTX *ctx,
1087 unsigned char *sig, size_t *siglen,
1088 const unsigned char *tbs, size_t tbslen);
1089int EVP_PKEY_verify_init(EVP_PKEY_CTX *ctx);
1090int EVP_PKEY_verify(EVP_PKEY_CTX *ctx,
1091 const unsigned char *sig, size_t siglen,
1092 const unsigned char *tbs, size_t tbslen);
1093int EVP_PKEY_verify_recover_init(EVP_PKEY_CTX *ctx);
1094int EVP_PKEY_verify_recover(EVP_PKEY_CTX *ctx,
1095 unsigned char *rout, size_t *routlen,
1096 const unsigned char *sig, size_t siglen);
1097int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx);
1098int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx,
1099 unsigned char *out, size_t *outlen,
1100 const unsigned char *in, size_t inlen);
1101int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx);
1102int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx,
1103 unsigned char *out, size_t *outlen,
1104 const unsigned char *in, size_t inlen);
1105
1106int EVP_PKEY_derive_init(EVP_PKEY_CTX *ctx);
1107int EVP_PKEY_derive_set_peer(EVP_PKEY_CTX *ctx, EVP_PKEY *peer);
1108int EVP_PKEY_derive(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen);
1109
1110typedef int EVP_PKEY_gen_cb(EVP_PKEY_CTX *ctx);
1111
1112int EVP_PKEY_paramgen_init(EVP_PKEY_CTX *ctx);
1113int EVP_PKEY_paramgen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
1114int EVP_PKEY_keygen_init(EVP_PKEY_CTX *ctx);
1115int EVP_PKEY_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY **ppkey);
1116
1117void EVP_PKEY_CTX_set_cb(EVP_PKEY_CTX *ctx, EVP_PKEY_gen_cb *cb);
1118EVP_PKEY_gen_cb *EVP_PKEY_CTX_get_cb(EVP_PKEY_CTX *ctx);
1119
1120int EVP_PKEY_CTX_get_keygen_info(EVP_PKEY_CTX *ctx, int idx);
1121
1122void EVP_PKEY_meth_set_init(EVP_PKEY_METHOD *pmeth,
1123 int (*init)(EVP_PKEY_CTX *ctx));
1124
1125void EVP_PKEY_meth_set_copy(EVP_PKEY_METHOD *pmeth,
1126 int (*copy)(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src));
1127
1128void EVP_PKEY_meth_set_cleanup(EVP_PKEY_METHOD *pmeth,
1129 void (*cleanup)(EVP_PKEY_CTX *ctx));
1130
1131void EVP_PKEY_meth_set_paramgen(EVP_PKEY_METHOD *pmeth,
1132 int (*paramgen_init)(EVP_PKEY_CTX *ctx),
1133 int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey));
1134
1135void EVP_PKEY_meth_set_keygen(EVP_PKEY_METHOD *pmeth,
1136 int (*keygen_init)(EVP_PKEY_CTX *ctx),
1137 int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey));
946 1138
947void EVP_add_alg_module(void); 1139void EVP_PKEY_meth_set_sign(EVP_PKEY_METHOD *pmeth,
1140 int (*sign_init)(EVP_PKEY_CTX *ctx),
1141 int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
1142 const unsigned char *tbs, size_t tbslen));
1143
1144void EVP_PKEY_meth_set_verify(EVP_PKEY_METHOD *pmeth,
1145 int (*verify_init)(EVP_PKEY_CTX *ctx),
1146 int (*verify)(EVP_PKEY_CTX *ctx, const unsigned char *sig, size_t siglen,
1147 const unsigned char *tbs, size_t tbslen));
1148
1149void EVP_PKEY_meth_set_verify_recover(EVP_PKEY_METHOD *pmeth,
1150 int (*verify_recover_init)(EVP_PKEY_CTX *ctx),
1151 int (*verify_recover)(EVP_PKEY_CTX *ctx,
1152 unsigned char *sig, size_t *siglen,
1153 const unsigned char *tbs, size_t tbslen));
1154
1155void EVP_PKEY_meth_set_signctx(EVP_PKEY_METHOD *pmeth,
1156 int (*signctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx),
1157 int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
1158 EVP_MD_CTX *mctx));
1159
1160void EVP_PKEY_meth_set_verifyctx(EVP_PKEY_METHOD *pmeth,
1161 int (*verifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx),
1162 int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig,int siglen,
1163 EVP_MD_CTX *mctx));
1164
1165void EVP_PKEY_meth_set_encrypt(EVP_PKEY_METHOD *pmeth,
1166 int (*encrypt_init)(EVP_PKEY_CTX *ctx),
1167 int (*encryptfn)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
1168 const unsigned char *in, size_t inlen));
1169
1170void EVP_PKEY_meth_set_decrypt(EVP_PKEY_METHOD *pmeth,
1171 int (*decrypt_init)(EVP_PKEY_CTX *ctx),
1172 int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
1173 const unsigned char *in, size_t inlen));
1174
1175void EVP_PKEY_meth_set_derive(EVP_PKEY_METHOD *pmeth,
1176 int (*derive_init)(EVP_PKEY_CTX *ctx),
1177 int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen));
1178
1179void EVP_PKEY_meth_set_ctrl(EVP_PKEY_METHOD *pmeth,
1180 int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2),
1181 int (*ctrl_str)(EVP_PKEY_CTX *ctx,
1182 const char *type, const char *value));
948 1183
949/* BEGIN ERROR CODES */ 1184/* BEGIN ERROR CODES */
950/* The following lines are auto generated by the script mkerr.pl. Any changes 1185/* The following lines are auto generated by the script mkerr.pl. Any changes
@@ -956,46 +1191,66 @@ void ERR_load_EVP_strings(void);
956 1191
957/* Function codes. */ 1192/* Function codes. */
958#define EVP_F_AES_INIT_KEY 133 1193#define EVP_F_AES_INIT_KEY 133
959#define EVP_F_ALG_MODULE_INIT 138
960#define EVP_F_CAMELLIA_INIT_KEY 159 1194#define EVP_F_CAMELLIA_INIT_KEY 159
961#define EVP_F_D2I_PKEY 100 1195#define EVP_F_D2I_PKEY 100
962#define EVP_F_DO_EVP_ENC_ENGINE 140 1196#define EVP_F_DO_SIGVER_INIT 161
963#define EVP_F_DO_EVP_ENC_ENGINE_FULL 141
964#define EVP_F_DO_EVP_MD_ENGINE 139
965#define EVP_F_DO_EVP_MD_ENGINE_FULL 142
966#define EVP_F_DSAPKEY2PKCS8 134 1197#define EVP_F_DSAPKEY2PKCS8 134
967#define EVP_F_DSA_PKEY2PKCS8 135 1198#define EVP_F_DSA_PKEY2PKCS8 135
968#define EVP_F_ECDSA_PKEY2PKCS8 129 1199#define EVP_F_ECDSA_PKEY2PKCS8 129
969#define EVP_F_ECKEY_PKEY2PKCS8 132 1200#define EVP_F_ECKEY_PKEY2PKCS8 132
970#define EVP_F_EVP_CIPHERINIT 137
971#define EVP_F_EVP_CIPHERINIT_EX 123 1201#define EVP_F_EVP_CIPHERINIT_EX 123
1202#define EVP_F_EVP_CIPHER_CTX_COPY 163
972#define EVP_F_EVP_CIPHER_CTX_CTRL 124 1203#define EVP_F_EVP_CIPHER_CTX_CTRL 124
973#define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122 1204#define EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH 122
974#define EVP_F_EVP_DECRYPTFINAL_EX 101 1205#define EVP_F_EVP_DECRYPTFINAL_EX 101
975#define EVP_F_EVP_DIGESTINIT 136
976#define EVP_F_EVP_DIGESTINIT_EX 128 1206#define EVP_F_EVP_DIGESTINIT_EX 128
977#define EVP_F_EVP_ENCRYPTFINAL_EX 127 1207#define EVP_F_EVP_ENCRYPTFINAL_EX 127
978#define EVP_F_EVP_MD_CTX_COPY_EX 110 1208#define EVP_F_EVP_MD_CTX_COPY_EX 110
1209#define EVP_F_EVP_MD_SIZE 162
979#define EVP_F_EVP_OPENINIT 102 1210#define EVP_F_EVP_OPENINIT 102
980#define EVP_F_EVP_PBE_ALG_ADD 115 1211#define EVP_F_EVP_PBE_ALG_ADD 115
1212#define EVP_F_EVP_PBE_ALG_ADD_TYPE 160
981#define EVP_F_EVP_PBE_CIPHERINIT 116 1213#define EVP_F_EVP_PBE_CIPHERINIT 116
982#define EVP_F_EVP_PKCS82PKEY 111 1214#define EVP_F_EVP_PKCS82PKEY 111
1215#define EVP_F_EVP_PKCS82PKEY_BROKEN 136
983#define EVP_F_EVP_PKEY2PKCS8_BROKEN 113 1216#define EVP_F_EVP_PKEY2PKCS8_BROKEN 113
984#define EVP_F_EVP_PKEY_COPY_PARAMETERS 103 1217#define EVP_F_EVP_PKEY_COPY_PARAMETERS 103
1218#define EVP_F_EVP_PKEY_CTX_CTRL 137
1219#define EVP_F_EVP_PKEY_CTX_CTRL_STR 150
1220#define EVP_F_EVP_PKEY_CTX_DUP 156
985#define EVP_F_EVP_PKEY_DECRYPT 104 1221#define EVP_F_EVP_PKEY_DECRYPT 104
1222#define EVP_F_EVP_PKEY_DECRYPT_INIT 138
1223#define EVP_F_EVP_PKEY_DECRYPT_OLD 151
1224#define EVP_F_EVP_PKEY_DERIVE 153
1225#define EVP_F_EVP_PKEY_DERIVE_INIT 154
1226#define EVP_F_EVP_PKEY_DERIVE_SET_PEER 155
986#define EVP_F_EVP_PKEY_ENCRYPT 105 1227#define EVP_F_EVP_PKEY_ENCRYPT 105
1228#define EVP_F_EVP_PKEY_ENCRYPT_INIT 139
1229#define EVP_F_EVP_PKEY_ENCRYPT_OLD 152
987#define EVP_F_EVP_PKEY_GET1_DH 119 1230#define EVP_F_EVP_PKEY_GET1_DH 119
988#define EVP_F_EVP_PKEY_GET1_DSA 120 1231#define EVP_F_EVP_PKEY_GET1_DSA 120
989#define EVP_F_EVP_PKEY_GET1_ECDSA 130 1232#define EVP_F_EVP_PKEY_GET1_ECDSA 130
990#define EVP_F_EVP_PKEY_GET1_EC_KEY 131 1233#define EVP_F_EVP_PKEY_GET1_EC_KEY 131
991#define EVP_F_EVP_PKEY_GET1_RSA 121 1234#define EVP_F_EVP_PKEY_GET1_RSA 121
1235#define EVP_F_EVP_PKEY_KEYGEN 146
1236#define EVP_F_EVP_PKEY_KEYGEN_INIT 147
992#define EVP_F_EVP_PKEY_NEW 106 1237#define EVP_F_EVP_PKEY_NEW 106
1238#define EVP_F_EVP_PKEY_PARAMGEN 148
1239#define EVP_F_EVP_PKEY_PARAMGEN_INIT 149
1240#define EVP_F_EVP_PKEY_SIGN 140
1241#define EVP_F_EVP_PKEY_SIGN_INIT 141
1242#define EVP_F_EVP_PKEY_VERIFY 142
1243#define EVP_F_EVP_PKEY_VERIFY_INIT 143
1244#define EVP_F_EVP_PKEY_VERIFY_RECOVER 144
1245#define EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT 145
993#define EVP_F_EVP_RIJNDAEL 126 1246#define EVP_F_EVP_RIJNDAEL 126
994#define EVP_F_EVP_SIGNFINAL 107 1247#define EVP_F_EVP_SIGNFINAL 107
995#define EVP_F_EVP_VERIFYFINAL 108 1248#define EVP_F_EVP_VERIFYFINAL 108
1249#define EVP_F_INT_CTX_NEW 157
996#define EVP_F_PKCS5_PBE_KEYIVGEN 117 1250#define EVP_F_PKCS5_PBE_KEYIVGEN 117
997#define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118 1251#define EVP_F_PKCS5_V2_PBE_KEYIVGEN 118
998#define EVP_F_PKCS8_SET_BROKEN 112 1252#define EVP_F_PKCS8_SET_BROKEN 112
1253#define EVP_F_PKEY_SET_TYPE 158
999#define EVP_F_RC2_MAGIC_TO_METH 109 1254#define EVP_F_RC2_MAGIC_TO_METH 109
1000#define EVP_F_RC5_CTRL 125 1255#define EVP_F_RC5_CTRL 125
1001 1256
@@ -1007,41 +1262,52 @@ void ERR_load_EVP_strings(void);
1007#define EVP_R_BAD_KEY_LENGTH 137 1262#define EVP_R_BAD_KEY_LENGTH 137
1008#define EVP_R_BN_DECODE_ERROR 112 1263#define EVP_R_BN_DECODE_ERROR 112
1009#define EVP_R_BN_PUBKEY_ERROR 113 1264#define EVP_R_BN_PUBKEY_ERROR 113
1265#define EVP_R_BUFFER_TOO_SMALL 155
1010#define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157 1266#define EVP_R_CAMELLIA_KEY_SETUP_FAILED 157
1011#define EVP_R_CIPHER_PARAMETER_ERROR 122 1267#define EVP_R_CIPHER_PARAMETER_ERROR 122
1268#define EVP_R_COMMAND_NOT_SUPPORTED 147
1012#define EVP_R_CTRL_NOT_IMPLEMENTED 132 1269#define EVP_R_CTRL_NOT_IMPLEMENTED 132
1013#define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133 1270#define EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED 133
1014#define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138 1271#define EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH 138
1015#define EVP_R_DECODE_ERROR 114 1272#define EVP_R_DECODE_ERROR 114
1016#define EVP_R_DIFFERENT_KEY_TYPES 101 1273#define EVP_R_DIFFERENT_KEY_TYPES 101
1017#define EVP_R_DISABLED_FOR_FIPS 144 1274#define EVP_R_DIFFERENT_PARAMETERS 153
1018#define EVP_R_ENCODE_ERROR 115 1275#define EVP_R_ENCODE_ERROR 115
1019#define EVP_R_ERROR_LOADING_SECTION 145
1020#define EVP_R_ERROR_SETTING_FIPS_MODE 146
1021#define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119 1276#define EVP_R_EVP_PBE_CIPHERINIT_ERROR 119
1022#define EVP_R_EXPECTING_AN_RSA_KEY 127 1277#define EVP_R_EXPECTING_AN_RSA_KEY 127
1023#define EVP_R_EXPECTING_A_DH_KEY 128 1278#define EVP_R_EXPECTING_A_DH_KEY 128
1024#define EVP_R_EXPECTING_A_DSA_KEY 129 1279#define EVP_R_EXPECTING_A_DSA_KEY 129
1025#define EVP_R_EXPECTING_A_ECDSA_KEY 141 1280#define EVP_R_EXPECTING_A_ECDSA_KEY 141
1026#define EVP_R_EXPECTING_A_EC_KEY 142 1281#define EVP_R_EXPECTING_A_EC_KEY 142
1027#define EVP_R_FIPS_MODE_NOT_SUPPORTED 147
1028#define EVP_R_INITIALIZATION_ERROR 134 1282#define EVP_R_INITIALIZATION_ERROR 134
1029#define EVP_R_INPUT_NOT_INITIALIZED 111 1283#define EVP_R_INPUT_NOT_INITIALIZED 111
1030#define EVP_R_INVALID_FIPS_MODE 148 1284#define EVP_R_INVALID_DIGEST 152
1031#define EVP_R_INVALID_KEY_LENGTH 130 1285#define EVP_R_INVALID_KEY_LENGTH 130
1286#define EVP_R_INVALID_OPERATION 148
1032#define EVP_R_IV_TOO_LARGE 102 1287#define EVP_R_IV_TOO_LARGE 102
1033#define EVP_R_KEYGEN_FAILURE 120 1288#define EVP_R_KEYGEN_FAILURE 120
1289#define EVP_R_MESSAGE_DIGEST_IS_NULL 159
1290#define EVP_R_METHOD_NOT_SUPPORTED 144
1034#define EVP_R_MISSING_PARAMETERS 103 1291#define EVP_R_MISSING_PARAMETERS 103
1035#define EVP_R_NO_CIPHER_SET 131 1292#define EVP_R_NO_CIPHER_SET 131
1293#define EVP_R_NO_DEFAULT_DIGEST 158
1036#define EVP_R_NO_DIGEST_SET 139 1294#define EVP_R_NO_DIGEST_SET 139
1037#define EVP_R_NO_DSA_PARAMETERS 116 1295#define EVP_R_NO_DSA_PARAMETERS 116
1296#define EVP_R_NO_KEY_SET 154
1297#define EVP_R_NO_OPERATION_SET 149
1038#define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104 1298#define EVP_R_NO_SIGN_FUNCTION_CONFIGURED 104
1039#define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105 1299#define EVP_R_NO_VERIFY_FUNCTION_CONFIGURED 105
1300#define EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 150
1301#define EVP_R_OPERATON_NOT_INITIALIZED 151
1040#define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117 1302#define EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE 117
1303#define EVP_R_PRIVATE_KEY_DECODE_ERROR 145
1304#define EVP_R_PRIVATE_KEY_ENCODE_ERROR 146
1041#define EVP_R_PUBLIC_KEY_NOT_RSA 106 1305#define EVP_R_PUBLIC_KEY_NOT_RSA 106
1042#define EVP_R_UNKNOWN_OPTION 149 1306#define EVP_R_UNKNOWN_CIPHER 160
1307#define EVP_R_UNKNOWN_DIGEST 161
1043#define EVP_R_UNKNOWN_PBE_ALGORITHM 121 1308#define EVP_R_UNKNOWN_PBE_ALGORITHM 121
1044#define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135 1309#define EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS 135
1310#define EVP_R_UNSUPPORTED_ALGORITHM 156
1045#define EVP_R_UNSUPPORTED_CIPHER 107 1311#define EVP_R_UNSUPPORTED_CIPHER 107
1046#define EVP_R_UNSUPPORTED_KEYLENGTH 123 1312#define EVP_R_UNSUPPORTED_KEYLENGTH 123
1047#define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124 1313#define EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION 124
@@ -1051,7 +1317,6 @@ void ERR_load_EVP_strings(void);
1051#define EVP_R_UNSUPPORTED_SALT_TYPE 126 1317#define EVP_R_UNSUPPORTED_SALT_TYPE 126
1052#define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109 1318#define EVP_R_WRONG_FINAL_BLOCK_LENGTH 109
1053#define EVP_R_WRONG_PUBLIC_KEY_TYPE 110 1319#define EVP_R_WRONG_PUBLIC_KEY_TYPE 110
1054#define EVP_R_SEED_KEY_SETUP_FAILED 162
1055 1320
1056#ifdef __cplusplus 1321#ifdef __cplusplus
1057} 1322}
diff --git a/src/lib/libssl/src/crypto/evp/evp_enc.c b/src/lib/libssl/src/crypto/evp/evp_enc.c
index 30e0ca4d9f..bead6a2170 100644
--- a/src/lib/libssl/src/crypto/evp/evp_enc.c
+++ b/src/lib/libssl/src/crypto/evp/evp_enc.c
@@ -66,16 +66,14 @@
66#endif 66#endif
67#include "evp_locl.h" 67#include "evp_locl.h"
68 68
69#ifdef OPENSSL_FIPS
70 #define M_do_cipher(ctx, out, in, inl) \
71 EVP_Cipher(ctx,out,in,inl)
72#else
73 #define M_do_cipher(ctx, out, in, inl) \
74 ctx->cipher->do_cipher(ctx,out,in,inl)
75#endif
76
77const char EVP_version[]="EVP" OPENSSL_VERSION_PTEXT; 69const char EVP_version[]="EVP" OPENSSL_VERSION_PTEXT;
78 70
71void EVP_CIPHER_CTX_init(EVP_CIPHER_CTX *ctx)
72 {
73 memset(ctx,0,sizeof(EVP_CIPHER_CTX));
74 /* ctx->cipher=NULL; */
75 }
76
79EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void) 77EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void)
80 { 78 {
81 EVP_CIPHER_CTX *ctx=OPENSSL_malloc(sizeof *ctx); 79 EVP_CIPHER_CTX *ctx=OPENSSL_malloc(sizeof *ctx);
@@ -92,6 +90,144 @@ int EVP_CipherInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher,
92 return EVP_CipherInit_ex(ctx,cipher,NULL,key,iv,enc); 90 return EVP_CipherInit_ex(ctx,cipher,NULL,key,iv,enc);
93 } 91 }
94 92
93int EVP_CipherInit_ex(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *cipher, ENGINE *impl,
94 const unsigned char *key, const unsigned char *iv, int enc)
95 {
96 if (enc == -1)
97 enc = ctx->encrypt;
98 else
99 {
100 if (enc)
101 enc = 1;
102 ctx->encrypt = enc;
103 }
104#ifndef OPENSSL_NO_ENGINE
105 /* Whether it's nice or not, "Inits" can be used on "Final"'d contexts
106 * so this context may already have an ENGINE! Try to avoid releasing
107 * the previous handle, re-querying for an ENGINE, and having a
108 * reinitialisation, when it may all be unecessary. */
109 if (ctx->engine && ctx->cipher && (!cipher ||
110 (cipher && (cipher->nid == ctx->cipher->nid))))
111 goto skip_to_init;
112#endif
113 if (cipher)
114 {
115 /* Ensure a context left lying around from last time is cleared
116 * (the previous check attempted to avoid this if the same
117 * ENGINE and EVP_CIPHER could be used). */
118 EVP_CIPHER_CTX_cleanup(ctx);
119
120 /* Restore encrypt field: it is zeroed by cleanup */
121 ctx->encrypt = enc;
122#ifndef OPENSSL_NO_ENGINE
123 if(impl)
124 {
125 if (!ENGINE_init(impl))
126 {
127 EVPerr(EVP_F_EVP_CIPHERINIT_EX, EVP_R_INITIALIZATION_ERROR);
128 return 0;
129 }
130 }
131 else
132 /* Ask if an ENGINE is reserved for this job */
133 impl = ENGINE_get_cipher_engine(cipher->nid);
134 if(impl)
135 {
136 /* There's an ENGINE for this job ... (apparently) */
137 const EVP_CIPHER *c = ENGINE_get_cipher(impl, cipher->nid);
138 if(!c)
139 {
140 /* One positive side-effect of US's export
141 * control history, is that we should at least
142 * be able to avoid using US mispellings of
143 * "initialisation"? */
144 EVPerr(EVP_F_EVP_CIPHERINIT_EX, EVP_R_INITIALIZATION_ERROR);
145 return 0;
146 }
147 /* We'll use the ENGINE's private cipher definition */
148 cipher = c;
149 /* Store the ENGINE functional reference so we know
150 * 'cipher' came from an ENGINE and we need to release
151 * it when done. */
152 ctx->engine = impl;
153 }
154 else
155 ctx->engine = NULL;
156#endif
157
158 ctx->cipher=cipher;
159 if (ctx->cipher->ctx_size)
160 {
161 ctx->cipher_data=OPENSSL_malloc(ctx->cipher->ctx_size);
162 if (!ctx->cipher_data)
163 {
164 EVPerr(EVP_F_EVP_CIPHERINIT_EX, ERR_R_MALLOC_FAILURE);
165 return 0;
166 }
167 }
168 else
169 {
170 ctx->cipher_data = NULL;
171 }
172 ctx->key_len = cipher->key_len;
173 ctx->flags = 0;
174 if(ctx->cipher->flags & EVP_CIPH_CTRL_INIT)
175 {
176 if(!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_INIT, 0, NULL))
177 {
178 EVPerr(EVP_F_EVP_CIPHERINIT_EX, EVP_R_INITIALIZATION_ERROR);
179 return 0;
180 }
181 }
182 }
183 else if(!ctx->cipher)
184 {
185 EVPerr(EVP_F_EVP_CIPHERINIT_EX, EVP_R_NO_CIPHER_SET);
186 return 0;
187 }
188#ifndef OPENSSL_NO_ENGINE
189skip_to_init:
190#endif
191 /* we assume block size is a power of 2 in *cryptUpdate */
192 OPENSSL_assert(ctx->cipher->block_size == 1
193 || ctx->cipher->block_size == 8
194 || ctx->cipher->block_size == 16);
195
196 if(!(EVP_CIPHER_CTX_flags(ctx) & EVP_CIPH_CUSTOM_IV)) {
197 switch(EVP_CIPHER_CTX_mode(ctx)) {
198
199 case EVP_CIPH_STREAM_CIPHER:
200 case EVP_CIPH_ECB_MODE:
201 break;
202
203 case EVP_CIPH_CFB_MODE:
204 case EVP_CIPH_OFB_MODE:
205
206 ctx->num = 0;
207
208 case EVP_CIPH_CBC_MODE:
209
210 OPENSSL_assert(EVP_CIPHER_CTX_iv_length(ctx) <=
211 (int)sizeof(ctx->iv));
212 if(iv) memcpy(ctx->oiv, iv, EVP_CIPHER_CTX_iv_length(ctx));
213 memcpy(ctx->iv, ctx->oiv, EVP_CIPHER_CTX_iv_length(ctx));
214 break;
215
216 default:
217 return 0;
218 break;
219 }
220 }
221
222 if(key || (ctx->cipher->flags & EVP_CIPH_ALWAYS_CALL_INIT)) {
223 if(!ctx->cipher->init(ctx,key,iv,enc)) return 0;
224 }
225 ctx->buf_len=0;
226 ctx->final_used=0;
227 ctx->block_mask=ctx->cipher->block_size-1;
228 return 1;
229 }
230
95int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl, 231int EVP_CipherUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
96 const unsigned char *in, int inl) 232 const unsigned char *in, int inl)
97 { 233 {
@@ -151,7 +287,7 @@ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
151 287
152 if(ctx->buf_len == 0 && (inl&(ctx->block_mask)) == 0) 288 if(ctx->buf_len == 0 && (inl&(ctx->block_mask)) == 0)
153 { 289 {
154 if(M_do_cipher(ctx,out,in,inl)) 290 if(ctx->cipher->do_cipher(ctx,out,in,inl))
155 { 291 {
156 *outl=inl; 292 *outl=inl;
157 return 1; 293 return 1;
@@ -178,7 +314,7 @@ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
178 { 314 {
179 j=bl-i; 315 j=bl-i;
180 memcpy(&(ctx->buf[i]),in,j); 316 memcpy(&(ctx->buf[i]),in,j);
181 if(!M_do_cipher(ctx,out,ctx->buf,bl)) return 0; 317 if(!ctx->cipher->do_cipher(ctx,out,ctx->buf,bl)) return 0;
182 inl-=j; 318 inl-=j;
183 in+=j; 319 in+=j;
184 out+=bl; 320 out+=bl;
@@ -191,7 +327,7 @@ int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl,
191 inl-=i; 327 inl-=i;
192 if (inl > 0) 328 if (inl > 0)
193 { 329 {
194 if(!M_do_cipher(ctx,out,in,inl)) return 0; 330 if(!ctx->cipher->do_cipher(ctx,out,in,inl)) return 0;
195 *outl+=inl; 331 *outl+=inl;
196 } 332 }
197 333
@@ -235,7 +371,7 @@ int EVP_EncryptFinal_ex(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl)
235 n=b-bl; 371 n=b-bl;
236 for (i=bl; i<b; i++) 372 for (i=bl; i<b; i++)
237 ctx->buf[i]=n; 373 ctx->buf[i]=n;
238 ret=M_do_cipher(ctx,out,ctx->buf,b); 374 ret=ctx->cipher->do_cipher(ctx,out,ctx->buf,b);
239 375
240 376
241 if(ret) 377 if(ret)
@@ -357,6 +493,28 @@ void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *ctx)
357 } 493 }
358 } 494 }
359 495
496int EVP_CIPHER_CTX_cleanup(EVP_CIPHER_CTX *c)
497 {
498 if (c->cipher != NULL)
499 {
500 if(c->cipher->cleanup && !c->cipher->cleanup(c))
501 return 0;
502 /* Cleanse cipher context data */
503 if (c->cipher_data)
504 OPENSSL_cleanse(c->cipher_data, c->cipher->ctx_size);
505 }
506 if (c->cipher_data)
507 OPENSSL_free(c->cipher_data);
508#ifndef OPENSSL_NO_ENGINE
509 if (c->engine)
510 /* The EVP_CIPHER we used belongs to an ENGINE, release the
511 * functional reference we held for this reason. */
512 ENGINE_finish(c->engine);
513#endif
514 memset(c,0,sizeof(EVP_CIPHER_CTX));
515 return 1;
516 }
517
360int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *c, int keylen) 518int EVP_CIPHER_CTX_set_key_length(EVP_CIPHER_CTX *c, int keylen)
361 { 519 {
362 if(c->cipher->flags & EVP_CIPH_CUSTOM_KEY_LENGTH) 520 if(c->cipher->flags & EVP_CIPH_CUSTOM_KEY_LENGTH)
@@ -378,6 +536,27 @@ int EVP_CIPHER_CTX_set_padding(EVP_CIPHER_CTX *ctx, int pad)
378 return 1; 536 return 1;
379 } 537 }
380 538
539int EVP_CIPHER_CTX_ctrl(EVP_CIPHER_CTX *ctx, int type, int arg, void *ptr)
540{
541 int ret;
542 if(!ctx->cipher) {
543 EVPerr(EVP_F_EVP_CIPHER_CTX_CTRL, EVP_R_NO_CIPHER_SET);
544 return 0;
545 }
546
547 if(!ctx->cipher->ctrl) {
548 EVPerr(EVP_F_EVP_CIPHER_CTX_CTRL, EVP_R_CTRL_NOT_IMPLEMENTED);
549 return 0;
550 }
551
552 ret = ctx->cipher->ctrl(ctx, type, arg, ptr);
553 if(ret == -1) {
554 EVPerr(EVP_F_EVP_CIPHER_CTX_CTRL, EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED);
555 return 0;
556 }
557 return ret;
558}
559
381int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key) 560int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key)
382 { 561 {
383 if (ctx->cipher->flags & EVP_CIPH_RAND_KEY) 562 if (ctx->cipher->flags & EVP_CIPH_RAND_KEY)
@@ -387,54 +566,38 @@ int EVP_CIPHER_CTX_rand_key(EVP_CIPHER_CTX *ctx, unsigned char *key)
387 return 1; 566 return 1;
388 } 567 }
389 568
390#ifndef OPENSSL_NO_ENGINE 569int EVP_CIPHER_CTX_copy(EVP_CIPHER_CTX *out, const EVP_CIPHER_CTX *in)
391
392#ifdef OPENSSL_FIPS
393
394static int do_evp_enc_engine_full(EVP_CIPHER_CTX *ctx, const EVP_CIPHER **pcipher, ENGINE *impl)
395 { 570 {
396 if(impl) 571 if ((in == NULL) || (in->cipher == NULL))
397 { 572 {
398 if (!ENGINE_init(impl)) 573 EVPerr(EVP_F_EVP_CIPHER_CTX_COPY,EVP_R_INPUT_NOT_INITIALIZED);
399 { 574 return 0;
400 EVPerr(EVP_F_DO_EVP_ENC_ENGINE_FULL, EVP_R_INITIALIZATION_ERROR);
401 return 0;
402 }
403 } 575 }
404 else 576#ifndef OPENSSL_NO_ENGINE
405 /* Ask if an ENGINE is reserved for this job */ 577 /* Make sure it's safe to copy a cipher context using an ENGINE */
406 impl = ENGINE_get_cipher_engine((*pcipher)->nid); 578 if (in->engine && !ENGINE_init(in->engine))
407 if(impl) 579 {
580 EVPerr(EVP_F_EVP_CIPHER_CTX_COPY,ERR_R_ENGINE_LIB);
581 return 0;
582 }
583#endif
584
585 EVP_CIPHER_CTX_cleanup(out);
586 memcpy(out,in,sizeof *out);
587
588 if (in->cipher_data && in->cipher->ctx_size)
408 { 589 {
409 /* There's an ENGINE for this job ... (apparently) */ 590 out->cipher_data=OPENSSL_malloc(in->cipher->ctx_size);
410 const EVP_CIPHER *c = ENGINE_get_cipher(impl, (*pcipher)->nid); 591 if (!out->cipher_data)
411 if(!c)
412 { 592 {
413 /* One positive side-effect of US's export 593 EVPerr(EVP_F_EVP_CIPHER_CTX_COPY,ERR_R_MALLOC_FAILURE);
414 * control history, is that we should at least
415 * be able to avoid using US mispellings of
416 * "initialisation"? */
417 EVPerr(EVP_F_DO_EVP_ENC_ENGINE_FULL, EVP_R_INITIALIZATION_ERROR);
418 return 0; 594 return 0;
419 } 595 }
420 /* We'll use the ENGINE's private cipher definition */ 596 memcpy(out->cipher_data,in->cipher_data,in->cipher->ctx_size);
421 *pcipher = c;
422 /* Store the ENGINE functional reference so we know
423 * 'cipher' came from an ENGINE and we need to release
424 * it when done. */
425 ctx->engine = impl;
426 } 597 }
427 else
428 ctx->engine = NULL;
429 return 1;
430 }
431 598
432void int_EVP_CIPHER_init_engine_callbacks(void) 599 if (in->cipher->flags & EVP_CIPH_CUSTOM_COPY)
433 { 600 return in->cipher->ctrl((EVP_CIPHER_CTX *)in, EVP_CTRL_COPY, 0, out);
434 int_EVP_CIPHER_set_engine_callbacks( 601 return 1;
435 ENGINE_finish, do_evp_enc_engine_full);
436 } 602 }
437 603
438#endif
439
440#endif
diff --git a/src/lib/libssl/src/crypto/evp/evp_err.c b/src/lib/libssl/src/crypto/evp/evp_err.c
index b5b900d4fe..d8bfec0959 100644
--- a/src/lib/libssl/src/crypto/evp/evp_err.c
+++ b/src/lib/libssl/src/crypto/evp/evp_err.c
@@ -1,6 +1,6 @@
1/* crypto/evp/evp_err.c */ 1/* crypto/evp/evp_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -71,46 +71,66 @@
71static ERR_STRING_DATA EVP_str_functs[]= 71static ERR_STRING_DATA EVP_str_functs[]=
72 { 72 {
73{ERR_FUNC(EVP_F_AES_INIT_KEY), "AES_INIT_KEY"}, 73{ERR_FUNC(EVP_F_AES_INIT_KEY), "AES_INIT_KEY"},
74{ERR_FUNC(EVP_F_ALG_MODULE_INIT), "ALG_MODULE_INIT"},
75{ERR_FUNC(EVP_F_CAMELLIA_INIT_KEY), "CAMELLIA_INIT_KEY"}, 74{ERR_FUNC(EVP_F_CAMELLIA_INIT_KEY), "CAMELLIA_INIT_KEY"},
76{ERR_FUNC(EVP_F_D2I_PKEY), "D2I_PKEY"}, 75{ERR_FUNC(EVP_F_D2I_PKEY), "D2I_PKEY"},
77{ERR_FUNC(EVP_F_DO_EVP_ENC_ENGINE), "DO_EVP_ENC_ENGINE"}, 76{ERR_FUNC(EVP_F_DO_SIGVER_INIT), "DO_SIGVER_INIT"},
78{ERR_FUNC(EVP_F_DO_EVP_ENC_ENGINE_FULL), "DO_EVP_ENC_ENGINE_FULL"},
79{ERR_FUNC(EVP_F_DO_EVP_MD_ENGINE), "DO_EVP_MD_ENGINE"},
80{ERR_FUNC(EVP_F_DO_EVP_MD_ENGINE_FULL), "DO_EVP_MD_ENGINE_FULL"},
81{ERR_FUNC(EVP_F_DSAPKEY2PKCS8), "DSAPKEY2PKCS8"}, 77{ERR_FUNC(EVP_F_DSAPKEY2PKCS8), "DSAPKEY2PKCS8"},
82{ERR_FUNC(EVP_F_DSA_PKEY2PKCS8), "DSA_PKEY2PKCS8"}, 78{ERR_FUNC(EVP_F_DSA_PKEY2PKCS8), "DSA_PKEY2PKCS8"},
83{ERR_FUNC(EVP_F_ECDSA_PKEY2PKCS8), "ECDSA_PKEY2PKCS8"}, 79{ERR_FUNC(EVP_F_ECDSA_PKEY2PKCS8), "ECDSA_PKEY2PKCS8"},
84{ERR_FUNC(EVP_F_ECKEY_PKEY2PKCS8), "ECKEY_PKEY2PKCS8"}, 80{ERR_FUNC(EVP_F_ECKEY_PKEY2PKCS8), "ECKEY_PKEY2PKCS8"},
85{ERR_FUNC(EVP_F_EVP_CIPHERINIT), "EVP_CipherInit"},
86{ERR_FUNC(EVP_F_EVP_CIPHERINIT_EX), "EVP_CipherInit_ex"}, 81{ERR_FUNC(EVP_F_EVP_CIPHERINIT_EX), "EVP_CipherInit_ex"},
82{ERR_FUNC(EVP_F_EVP_CIPHER_CTX_COPY), "EVP_CIPHER_CTX_copy"},
87{ERR_FUNC(EVP_F_EVP_CIPHER_CTX_CTRL), "EVP_CIPHER_CTX_ctrl"}, 83{ERR_FUNC(EVP_F_EVP_CIPHER_CTX_CTRL), "EVP_CIPHER_CTX_ctrl"},
88{ERR_FUNC(EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH), "EVP_CIPHER_CTX_set_key_length"}, 84{ERR_FUNC(EVP_F_EVP_CIPHER_CTX_SET_KEY_LENGTH), "EVP_CIPHER_CTX_set_key_length"},
89{ERR_FUNC(EVP_F_EVP_DECRYPTFINAL_EX), "EVP_DecryptFinal_ex"}, 85{ERR_FUNC(EVP_F_EVP_DECRYPTFINAL_EX), "EVP_DecryptFinal_ex"},
90{ERR_FUNC(EVP_F_EVP_DIGESTINIT), "EVP_DigestInit"},
91{ERR_FUNC(EVP_F_EVP_DIGESTINIT_EX), "EVP_DigestInit_ex"}, 86{ERR_FUNC(EVP_F_EVP_DIGESTINIT_EX), "EVP_DigestInit_ex"},
92{ERR_FUNC(EVP_F_EVP_ENCRYPTFINAL_EX), "EVP_EncryptFinal_ex"}, 87{ERR_FUNC(EVP_F_EVP_ENCRYPTFINAL_EX), "EVP_EncryptFinal_ex"},
93{ERR_FUNC(EVP_F_EVP_MD_CTX_COPY_EX), "EVP_MD_CTX_copy_ex"}, 88{ERR_FUNC(EVP_F_EVP_MD_CTX_COPY_EX), "EVP_MD_CTX_copy_ex"},
89{ERR_FUNC(EVP_F_EVP_MD_SIZE), "EVP_MD_SIZE"},
94{ERR_FUNC(EVP_F_EVP_OPENINIT), "EVP_OpenInit"}, 90{ERR_FUNC(EVP_F_EVP_OPENINIT), "EVP_OpenInit"},
95{ERR_FUNC(EVP_F_EVP_PBE_ALG_ADD), "EVP_PBE_alg_add"}, 91{ERR_FUNC(EVP_F_EVP_PBE_ALG_ADD), "EVP_PBE_alg_add"},
92{ERR_FUNC(EVP_F_EVP_PBE_ALG_ADD_TYPE), "EVP_PBE_alg_add_type"},
96{ERR_FUNC(EVP_F_EVP_PBE_CIPHERINIT), "EVP_PBE_CipherInit"}, 93{ERR_FUNC(EVP_F_EVP_PBE_CIPHERINIT), "EVP_PBE_CipherInit"},
97{ERR_FUNC(EVP_F_EVP_PKCS82PKEY), "EVP_PKCS82PKEY"}, 94{ERR_FUNC(EVP_F_EVP_PKCS82PKEY), "EVP_PKCS82PKEY"},
95{ERR_FUNC(EVP_F_EVP_PKCS82PKEY_BROKEN), "EVP_PKCS82PKEY_BROKEN"},
98{ERR_FUNC(EVP_F_EVP_PKEY2PKCS8_BROKEN), "EVP_PKEY2PKCS8_broken"}, 96{ERR_FUNC(EVP_F_EVP_PKEY2PKCS8_BROKEN), "EVP_PKEY2PKCS8_broken"},
99{ERR_FUNC(EVP_F_EVP_PKEY_COPY_PARAMETERS), "EVP_PKEY_copy_parameters"}, 97{ERR_FUNC(EVP_F_EVP_PKEY_COPY_PARAMETERS), "EVP_PKEY_copy_parameters"},
98{ERR_FUNC(EVP_F_EVP_PKEY_CTX_CTRL), "EVP_PKEY_CTX_ctrl"},
99{ERR_FUNC(EVP_F_EVP_PKEY_CTX_CTRL_STR), "EVP_PKEY_CTX_ctrl_str"},
100{ERR_FUNC(EVP_F_EVP_PKEY_CTX_DUP), "EVP_PKEY_CTX_dup"},
100{ERR_FUNC(EVP_F_EVP_PKEY_DECRYPT), "EVP_PKEY_decrypt"}, 101{ERR_FUNC(EVP_F_EVP_PKEY_DECRYPT), "EVP_PKEY_decrypt"},
102{ERR_FUNC(EVP_F_EVP_PKEY_DECRYPT_INIT), "EVP_PKEY_decrypt_init"},
103{ERR_FUNC(EVP_F_EVP_PKEY_DECRYPT_OLD), "EVP_PKEY_decrypt_old"},
104{ERR_FUNC(EVP_F_EVP_PKEY_DERIVE), "EVP_PKEY_derive"},
105{ERR_FUNC(EVP_F_EVP_PKEY_DERIVE_INIT), "EVP_PKEY_derive_init"},
106{ERR_FUNC(EVP_F_EVP_PKEY_DERIVE_SET_PEER), "EVP_PKEY_derive_set_peer"},
101{ERR_FUNC(EVP_F_EVP_PKEY_ENCRYPT), "EVP_PKEY_encrypt"}, 107{ERR_FUNC(EVP_F_EVP_PKEY_ENCRYPT), "EVP_PKEY_encrypt"},
108{ERR_FUNC(EVP_F_EVP_PKEY_ENCRYPT_INIT), "EVP_PKEY_encrypt_init"},
109{ERR_FUNC(EVP_F_EVP_PKEY_ENCRYPT_OLD), "EVP_PKEY_encrypt_old"},
102{ERR_FUNC(EVP_F_EVP_PKEY_GET1_DH), "EVP_PKEY_get1_DH"}, 110{ERR_FUNC(EVP_F_EVP_PKEY_GET1_DH), "EVP_PKEY_get1_DH"},
103{ERR_FUNC(EVP_F_EVP_PKEY_GET1_DSA), "EVP_PKEY_get1_DSA"}, 111{ERR_FUNC(EVP_F_EVP_PKEY_GET1_DSA), "EVP_PKEY_get1_DSA"},
104{ERR_FUNC(EVP_F_EVP_PKEY_GET1_ECDSA), "EVP_PKEY_GET1_ECDSA"}, 112{ERR_FUNC(EVP_F_EVP_PKEY_GET1_ECDSA), "EVP_PKEY_GET1_ECDSA"},
105{ERR_FUNC(EVP_F_EVP_PKEY_GET1_EC_KEY), "EVP_PKEY_get1_EC_KEY"}, 113{ERR_FUNC(EVP_F_EVP_PKEY_GET1_EC_KEY), "EVP_PKEY_get1_EC_KEY"},
106{ERR_FUNC(EVP_F_EVP_PKEY_GET1_RSA), "EVP_PKEY_get1_RSA"}, 114{ERR_FUNC(EVP_F_EVP_PKEY_GET1_RSA), "EVP_PKEY_get1_RSA"},
115{ERR_FUNC(EVP_F_EVP_PKEY_KEYGEN), "EVP_PKEY_keygen"},
116{ERR_FUNC(EVP_F_EVP_PKEY_KEYGEN_INIT), "EVP_PKEY_keygen_init"},
107{ERR_FUNC(EVP_F_EVP_PKEY_NEW), "EVP_PKEY_new"}, 117{ERR_FUNC(EVP_F_EVP_PKEY_NEW), "EVP_PKEY_new"},
118{ERR_FUNC(EVP_F_EVP_PKEY_PARAMGEN), "EVP_PKEY_paramgen"},
119{ERR_FUNC(EVP_F_EVP_PKEY_PARAMGEN_INIT), "EVP_PKEY_paramgen_init"},
120{ERR_FUNC(EVP_F_EVP_PKEY_SIGN), "EVP_PKEY_sign"},
121{ERR_FUNC(EVP_F_EVP_PKEY_SIGN_INIT), "EVP_PKEY_sign_init"},
122{ERR_FUNC(EVP_F_EVP_PKEY_VERIFY), "EVP_PKEY_verify"},
123{ERR_FUNC(EVP_F_EVP_PKEY_VERIFY_INIT), "EVP_PKEY_verify_init"},
124{ERR_FUNC(EVP_F_EVP_PKEY_VERIFY_RECOVER), "EVP_PKEY_verify_recover"},
125{ERR_FUNC(EVP_F_EVP_PKEY_VERIFY_RECOVER_INIT), "EVP_PKEY_verify_recover_init"},
108{ERR_FUNC(EVP_F_EVP_RIJNDAEL), "EVP_RIJNDAEL"}, 126{ERR_FUNC(EVP_F_EVP_RIJNDAEL), "EVP_RIJNDAEL"},
109{ERR_FUNC(EVP_F_EVP_SIGNFINAL), "EVP_SignFinal"}, 127{ERR_FUNC(EVP_F_EVP_SIGNFINAL), "EVP_SignFinal"},
110{ERR_FUNC(EVP_F_EVP_VERIFYFINAL), "EVP_VerifyFinal"}, 128{ERR_FUNC(EVP_F_EVP_VERIFYFINAL), "EVP_VerifyFinal"},
129{ERR_FUNC(EVP_F_INT_CTX_NEW), "INT_CTX_NEW"},
111{ERR_FUNC(EVP_F_PKCS5_PBE_KEYIVGEN), "PKCS5_PBE_keyivgen"}, 130{ERR_FUNC(EVP_F_PKCS5_PBE_KEYIVGEN), "PKCS5_PBE_keyivgen"},
112{ERR_FUNC(EVP_F_PKCS5_V2_PBE_KEYIVGEN), "PKCS5_v2_PBE_keyivgen"}, 131{ERR_FUNC(EVP_F_PKCS5_V2_PBE_KEYIVGEN), "PKCS5_v2_PBE_keyivgen"},
113{ERR_FUNC(EVP_F_PKCS8_SET_BROKEN), "PKCS8_set_broken"}, 132{ERR_FUNC(EVP_F_PKCS8_SET_BROKEN), "PKCS8_set_broken"},
133{ERR_FUNC(EVP_F_PKEY_SET_TYPE), "PKEY_SET_TYPE"},
114{ERR_FUNC(EVP_F_RC2_MAGIC_TO_METH), "RC2_MAGIC_TO_METH"}, 134{ERR_FUNC(EVP_F_RC2_MAGIC_TO_METH), "RC2_MAGIC_TO_METH"},
115{ERR_FUNC(EVP_F_RC5_CTRL), "RC5_CTRL"}, 135{ERR_FUNC(EVP_F_RC5_CTRL), "RC5_CTRL"},
116{0,NULL} 136{0,NULL}
@@ -125,42 +145,52 @@ static ERR_STRING_DATA EVP_str_reasons[]=
125{ERR_REASON(EVP_R_BAD_KEY_LENGTH) ,"bad key length"}, 145{ERR_REASON(EVP_R_BAD_KEY_LENGTH) ,"bad key length"},
126{ERR_REASON(EVP_R_BN_DECODE_ERROR) ,"bn decode error"}, 146{ERR_REASON(EVP_R_BN_DECODE_ERROR) ,"bn decode error"},
127{ERR_REASON(EVP_R_BN_PUBKEY_ERROR) ,"bn pubkey error"}, 147{ERR_REASON(EVP_R_BN_PUBKEY_ERROR) ,"bn pubkey error"},
148{ERR_REASON(EVP_R_BUFFER_TOO_SMALL) ,"buffer too small"},
128{ERR_REASON(EVP_R_CAMELLIA_KEY_SETUP_FAILED),"camellia key setup failed"}, 149{ERR_REASON(EVP_R_CAMELLIA_KEY_SETUP_FAILED),"camellia key setup failed"},
129{ERR_REASON(EVP_R_CIPHER_PARAMETER_ERROR),"cipher parameter error"}, 150{ERR_REASON(EVP_R_CIPHER_PARAMETER_ERROR),"cipher parameter error"},
151{ERR_REASON(EVP_R_COMMAND_NOT_SUPPORTED) ,"command not supported"},
130{ERR_REASON(EVP_R_CTRL_NOT_IMPLEMENTED) ,"ctrl not implemented"}, 152{ERR_REASON(EVP_R_CTRL_NOT_IMPLEMENTED) ,"ctrl not implemented"},
131{ERR_REASON(EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED),"ctrl operation not implemented"}, 153{ERR_REASON(EVP_R_CTRL_OPERATION_NOT_IMPLEMENTED),"ctrl operation not implemented"},
132{ERR_REASON(EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH),"data not multiple of block length"}, 154{ERR_REASON(EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH),"data not multiple of block length"},
133{ERR_REASON(EVP_R_DECODE_ERROR) ,"decode error"}, 155{ERR_REASON(EVP_R_DECODE_ERROR) ,"decode error"},
134{ERR_REASON(EVP_R_DIFFERENT_KEY_TYPES) ,"different key types"}, 156{ERR_REASON(EVP_R_DIFFERENT_KEY_TYPES) ,"different key types"},
135{ERR_REASON(EVP_R_DISABLED_FOR_FIPS) ,"disabled for fips"}, 157{ERR_REASON(EVP_R_DIFFERENT_PARAMETERS) ,"different parameters"},
136{ERR_REASON(EVP_R_ENCODE_ERROR) ,"encode error"}, 158{ERR_REASON(EVP_R_ENCODE_ERROR) ,"encode error"},
137{ERR_REASON(EVP_R_ERROR_LOADING_SECTION) ,"error loading section"},
138{ERR_REASON(EVP_R_ERROR_SETTING_FIPS_MODE),"error setting fips mode"},
139{ERR_REASON(EVP_R_EVP_PBE_CIPHERINIT_ERROR),"evp pbe cipherinit error"}, 159{ERR_REASON(EVP_R_EVP_PBE_CIPHERINIT_ERROR),"evp pbe cipherinit error"},
140{ERR_REASON(EVP_R_EXPECTING_AN_RSA_KEY) ,"expecting an rsa key"}, 160{ERR_REASON(EVP_R_EXPECTING_AN_RSA_KEY) ,"expecting an rsa key"},
141{ERR_REASON(EVP_R_EXPECTING_A_DH_KEY) ,"expecting a dh key"}, 161{ERR_REASON(EVP_R_EXPECTING_A_DH_KEY) ,"expecting a dh key"},
142{ERR_REASON(EVP_R_EXPECTING_A_DSA_KEY) ,"expecting a dsa key"}, 162{ERR_REASON(EVP_R_EXPECTING_A_DSA_KEY) ,"expecting a dsa key"},
143{ERR_REASON(EVP_R_EXPECTING_A_ECDSA_KEY) ,"expecting a ecdsa key"}, 163{ERR_REASON(EVP_R_EXPECTING_A_ECDSA_KEY) ,"expecting a ecdsa key"},
144{ERR_REASON(EVP_R_EXPECTING_A_EC_KEY) ,"expecting a ec key"}, 164{ERR_REASON(EVP_R_EXPECTING_A_EC_KEY) ,"expecting a ec key"},
145{ERR_REASON(EVP_R_FIPS_MODE_NOT_SUPPORTED),"fips mode not supported"},
146{ERR_REASON(EVP_R_INITIALIZATION_ERROR) ,"initialization error"}, 165{ERR_REASON(EVP_R_INITIALIZATION_ERROR) ,"initialization error"},
147{ERR_REASON(EVP_R_INPUT_NOT_INITIALIZED) ,"input not initialized"}, 166{ERR_REASON(EVP_R_INPUT_NOT_INITIALIZED) ,"input not initialized"},
148{ERR_REASON(EVP_R_INVALID_FIPS_MODE) ,"invalid fips mode"}, 167{ERR_REASON(EVP_R_INVALID_DIGEST) ,"invalid digest"},
149{ERR_REASON(EVP_R_INVALID_KEY_LENGTH) ,"invalid key length"}, 168{ERR_REASON(EVP_R_INVALID_KEY_LENGTH) ,"invalid key length"},
169{ERR_REASON(EVP_R_INVALID_OPERATION) ,"invalid operation"},
150{ERR_REASON(EVP_R_IV_TOO_LARGE) ,"iv too large"}, 170{ERR_REASON(EVP_R_IV_TOO_LARGE) ,"iv too large"},
151{ERR_REASON(EVP_R_KEYGEN_FAILURE) ,"keygen failure"}, 171{ERR_REASON(EVP_R_KEYGEN_FAILURE) ,"keygen failure"},
172{ERR_REASON(EVP_R_MESSAGE_DIGEST_IS_NULL),"message digest is null"},
173{ERR_REASON(EVP_R_METHOD_NOT_SUPPORTED) ,"method not supported"},
152{ERR_REASON(EVP_R_MISSING_PARAMETERS) ,"missing parameters"}, 174{ERR_REASON(EVP_R_MISSING_PARAMETERS) ,"missing parameters"},
153{ERR_REASON(EVP_R_NO_CIPHER_SET) ,"no cipher set"}, 175{ERR_REASON(EVP_R_NO_CIPHER_SET) ,"no cipher set"},
176{ERR_REASON(EVP_R_NO_DEFAULT_DIGEST) ,"no default digest"},
154{ERR_REASON(EVP_R_NO_DIGEST_SET) ,"no digest set"}, 177{ERR_REASON(EVP_R_NO_DIGEST_SET) ,"no digest set"},
155{ERR_REASON(EVP_R_NO_DSA_PARAMETERS) ,"no dsa parameters"}, 178{ERR_REASON(EVP_R_NO_DSA_PARAMETERS) ,"no dsa parameters"},
179{ERR_REASON(EVP_R_NO_KEY_SET) ,"no key set"},
180{ERR_REASON(EVP_R_NO_OPERATION_SET) ,"no operation set"},
156{ERR_REASON(EVP_R_NO_SIGN_FUNCTION_CONFIGURED),"no sign function configured"}, 181{ERR_REASON(EVP_R_NO_SIGN_FUNCTION_CONFIGURED),"no sign function configured"},
157{ERR_REASON(EVP_R_NO_VERIFY_FUNCTION_CONFIGURED),"no verify function configured"}, 182{ERR_REASON(EVP_R_NO_VERIFY_FUNCTION_CONFIGURED),"no verify function configured"},
183{ERR_REASON(EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE),"operation not supported for this keytype"},
184{ERR_REASON(EVP_R_OPERATON_NOT_INITIALIZED),"operaton not initialized"},
158{ERR_REASON(EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE),"pkcs8 unknown broken type"}, 185{ERR_REASON(EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE),"pkcs8 unknown broken type"},
186{ERR_REASON(EVP_R_PRIVATE_KEY_DECODE_ERROR),"private key decode error"},
187{ERR_REASON(EVP_R_PRIVATE_KEY_ENCODE_ERROR),"private key encode error"},
159{ERR_REASON(EVP_R_PUBLIC_KEY_NOT_RSA) ,"public key not rsa"}, 188{ERR_REASON(EVP_R_PUBLIC_KEY_NOT_RSA) ,"public key not rsa"},
160{ERR_REASON(EVP_R_SEED_KEY_SETUP_FAILED) ,"seed key setup failed"}, 189{ERR_REASON(EVP_R_UNKNOWN_CIPHER) ,"unknown cipher"},
161{ERR_REASON(EVP_R_UNKNOWN_OPTION) ,"unknown option"}, 190{ERR_REASON(EVP_R_UNKNOWN_DIGEST) ,"unknown digest"},
162{ERR_REASON(EVP_R_UNKNOWN_PBE_ALGORITHM) ,"unknown pbe algorithm"}, 191{ERR_REASON(EVP_R_UNKNOWN_PBE_ALGORITHM) ,"unknown pbe algorithm"},
163{ERR_REASON(EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS),"unsuported number of rounds"}, 192{ERR_REASON(EVP_R_UNSUPORTED_NUMBER_OF_ROUNDS),"unsuported number of rounds"},
193{ERR_REASON(EVP_R_UNSUPPORTED_ALGORITHM) ,"unsupported algorithm"},
164{ERR_REASON(EVP_R_UNSUPPORTED_CIPHER) ,"unsupported cipher"}, 194{ERR_REASON(EVP_R_UNSUPPORTED_CIPHER) ,"unsupported cipher"},
165{ERR_REASON(EVP_R_UNSUPPORTED_KEYLENGTH) ,"unsupported keylength"}, 195{ERR_REASON(EVP_R_UNSUPPORTED_KEYLENGTH) ,"unsupported keylength"},
166{ERR_REASON(EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION),"unsupported key derivation function"}, 196{ERR_REASON(EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION),"unsupported key derivation function"},
diff --git a/src/lib/libssl/src/crypto/evp/evp_key.c b/src/lib/libssl/src/crypto/evp/evp_key.c
index 361ea69ab6..839d6a3a16 100644
--- a/src/lib/libssl/src/crypto/evp/evp_key.c
+++ b/src/lib/libssl/src/crypto/evp/evp_key.c
@@ -90,6 +90,11 @@ char *EVP_get_pw_prompt(void)
90 * this function will fail */ 90 * this function will fail */
91int EVP_read_pw_string(char *buf, int len, const char *prompt, int verify) 91int EVP_read_pw_string(char *buf, int len, const char *prompt, int verify)
92 { 92 {
93 return EVP_read_pw_string_min(buf, 0, len, prompt, verify);
94 }
95
96int EVP_read_pw_string_min(char *buf, int min, int len, const char *prompt, int verify)
97 {
93 int ret; 98 int ret;
94 char buff[BUFSIZ]; 99 char buff[BUFSIZ];
95 UI *ui; 100 UI *ui;
@@ -97,10 +102,10 @@ int EVP_read_pw_string(char *buf, int len, const char *prompt, int verify)
97 if ((prompt == NULL) && (prompt_string[0] != '\0')) 102 if ((prompt == NULL) && (prompt_string[0] != '\0'))
98 prompt=prompt_string; 103 prompt=prompt_string;
99 ui = UI_new(); 104 ui = UI_new();
100 UI_add_input_string(ui,prompt,0,buf,0,(len>=BUFSIZ)?BUFSIZ-1:len); 105 UI_add_input_string(ui,prompt,0,buf,min,(len>=BUFSIZ)?BUFSIZ-1:len);
101 if (verify) 106 if (verify)
102 UI_add_verify_string(ui,prompt,0, 107 UI_add_verify_string(ui,prompt,0,
103 buff,0,(len>=BUFSIZ)?BUFSIZ-1:len,buf); 108 buff,min,(len>=BUFSIZ)?BUFSIZ-1:len,buf);
104 ret = UI_process(ui); 109 ret = UI_process(ui);
105 UI_free(ui); 110 UI_free(ui);
106 OPENSSL_cleanse(buff,BUFSIZ); 111 OPENSSL_cleanse(buff,BUFSIZ);
diff --git a/src/lib/libssl/src/crypto/evp/evp_lib.c b/src/lib/libssl/src/crypto/evp/evp_lib.c
index 174cf6c594..40951a04f0 100644
--- a/src/lib/libssl/src/crypto/evp/evp_lib.c
+++ b/src/lib/libssl/src/crypto/evp/evp_lib.c
@@ -67,8 +67,6 @@ int EVP_CIPHER_param_to_asn1(EVP_CIPHER_CTX *c, ASN1_TYPE *type)
67 67
68 if (c->cipher->set_asn1_parameters != NULL) 68 if (c->cipher->set_asn1_parameters != NULL)
69 ret=c->cipher->set_asn1_parameters(c,type); 69 ret=c->cipher->set_asn1_parameters(c,type);
70 else if (c->cipher->flags & EVP_CIPH_FLAG_DEFAULT_ASN1)
71 ret=EVP_CIPHER_set_asn1_iv(c, type);
72 else 70 else
73 ret=-1; 71 ret=-1;
74 return(ret); 72 return(ret);
@@ -80,8 +78,6 @@ int EVP_CIPHER_asn1_to_param(EVP_CIPHER_CTX *c, ASN1_TYPE *type)
80 78
81 if (c->cipher->get_asn1_parameters != NULL) 79 if (c->cipher->get_asn1_parameters != NULL)
82 ret=c->cipher->get_asn1_parameters(c,type); 80 ret=c->cipher->get_asn1_parameters(c,type);
83 else if (c->cipher->flags & EVP_CIPH_FLAG_DEFAULT_ASN1)
84 ret=EVP_CIPHER_get_asn1_iv(c, type);
85 else 81 else
86 ret=-1; 82 ret=-1;
87 return(ret); 83 return(ret);
@@ -163,6 +159,12 @@ int EVP_CIPHER_type(const EVP_CIPHER *ctx)
163 159
164 return NID_des_cfb64; 160 return NID_des_cfb64;
165 161
162 case NID_des_ede3_cfb64:
163 case NID_des_ede3_cfb8:
164 case NID_des_ede3_cfb1:
165
166 return NID_des_cfb64;
167
166 default: 168 default:
167 /* Check it has an OID and it is valid */ 169 /* Check it has an OID and it is valid */
168 otmp = OBJ_nid2obj(nid); 170 otmp = OBJ_nid2obj(nid);
@@ -182,6 +184,11 @@ int EVP_CIPHER_CTX_block_size(const EVP_CIPHER_CTX *ctx)
182 return ctx->cipher->block_size; 184 return ctx->cipher->block_size;
183 } 185 }
184 186
187int EVP_Cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl)
188 {
189 return ctx->cipher->do_cipher(ctx,out,in,inl);
190 }
191
185const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx) 192const EVP_CIPHER *EVP_CIPHER_CTX_cipher(const EVP_CIPHER_CTX *ctx)
186 { 193 {
187 return ctx->cipher; 194 return ctx->cipher;
@@ -192,6 +199,11 @@ unsigned long EVP_CIPHER_flags(const EVP_CIPHER *cipher)
192 return cipher->flags; 199 return cipher->flags;
193 } 200 }
194 201
202unsigned long EVP_CIPHER_CTX_flags(const EVP_CIPHER_CTX *ctx)
203 {
204 return ctx->cipher->flags;
205 }
206
195void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx) 207void *EVP_CIPHER_CTX_get_app_data(const EVP_CIPHER_CTX *ctx)
196 { 208 {
197 return ctx->app_data; 209 return ctx->app_data;
@@ -207,6 +219,11 @@ int EVP_CIPHER_iv_length(const EVP_CIPHER *cipher)
207 return cipher->iv_len; 219 return cipher->iv_len;
208 } 220 }
209 221
222int EVP_CIPHER_CTX_iv_length(const EVP_CIPHER_CTX *ctx)
223 {
224 return ctx->cipher->iv_len;
225 }
226
210int EVP_CIPHER_key_length(const EVP_CIPHER *cipher) 227int EVP_CIPHER_key_length(const EVP_CIPHER *cipher)
211 { 228 {
212 return cipher->key_len; 229 return cipher->key_len;
@@ -217,6 +234,11 @@ int EVP_CIPHER_CTX_key_length(const EVP_CIPHER_CTX *ctx)
217 return ctx->key_len; 234 return ctx->key_len;
218 } 235 }
219 236
237int EVP_CIPHER_nid(const EVP_CIPHER *cipher)
238 {
239 return cipher->nid;
240 }
241
220int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx) 242int EVP_CIPHER_CTX_nid(const EVP_CIPHER_CTX *ctx)
221 { 243 {
222 return ctx->cipher->nid; 244 return ctx->cipher->nid;
@@ -239,11 +261,23 @@ int EVP_MD_pkey_type(const EVP_MD *md)
239 261
240int EVP_MD_size(const EVP_MD *md) 262int EVP_MD_size(const EVP_MD *md)
241 { 263 {
264 if (!md)
265 {
266 EVPerr(EVP_F_EVP_MD_SIZE, EVP_R_MESSAGE_DIGEST_IS_NULL);
267 return -1;
268 }
242 return md->md_size; 269 return md->md_size;
243 } 270 }
244 271
245const EVP_MD * EVP_MD_CTX_md(const EVP_MD_CTX *ctx) 272unsigned long EVP_MD_flags(const EVP_MD *md)
273 {
274 return md->flags;
275 }
276
277const EVP_MD *EVP_MD_CTX_md(const EVP_MD_CTX *ctx)
246 { 278 {
279 if (!ctx)
280 return NULL;
247 return ctx->digest; 281 return ctx->digest;
248 } 282 }
249 283
diff --git a/src/lib/libssl/src/crypto/evp/evp_locl.h b/src/lib/libssl/src/crypto/evp/evp_locl.h
index eabcc96f30..292d74c188 100644
--- a/src/lib/libssl/src/crypto/evp/evp_locl.h
+++ b/src/lib/libssl/src/crypto/evp/evp_locl.h
@@ -61,38 +61,66 @@
61/* Wrapper functions for each cipher mode */ 61/* Wrapper functions for each cipher mode */
62 62
63#define BLOCK_CIPHER_ecb_loop() \ 63#define BLOCK_CIPHER_ecb_loop() \
64 unsigned int i, bl; \ 64 size_t i, bl; \
65 bl = ctx->cipher->block_size;\ 65 bl = ctx->cipher->block_size;\
66 if(inl < bl) return 1;\ 66 if(inl < bl) return 1;\
67 inl -= bl; \ 67 inl -= bl; \
68 for(i=0; i <= inl; i+=bl) 68 for(i=0; i <= inl; i+=bl)
69 69
70#define BLOCK_CIPHER_func_ecb(cname, cprefix, kstruct, ksched) \ 70#define BLOCK_CIPHER_func_ecb(cname, cprefix, kstruct, ksched) \
71static int cname##_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) \ 71static int cname##_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \
72{\ 72{\
73 BLOCK_CIPHER_ecb_loop() \ 73 BLOCK_CIPHER_ecb_loop() \
74 cprefix##_ecb_encrypt(in + i, out + i, &((kstruct *)ctx->cipher_data)->ksched, ctx->encrypt);\ 74 cprefix##_ecb_encrypt(in + i, out + i, &((kstruct *)ctx->cipher_data)->ksched, ctx->encrypt);\
75 return 1;\ 75 return 1;\
76} 76}
77 77
78#define EVP_MAXCHUNK ((size_t)1<<(sizeof(long)*8-2))
79
78#define BLOCK_CIPHER_func_ofb(cname, cprefix, cbits, kstruct, ksched) \ 80#define BLOCK_CIPHER_func_ofb(cname, cprefix, cbits, kstruct, ksched) \
79static int cname##_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) \ 81static int cname##_ofb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \
80{\ 82{\
81 cprefix##_ofb##cbits##_encrypt(in, out, (long)inl, &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, &ctx->num);\ 83 while(inl>=EVP_MAXCHUNK)\
84 {\
85 cprefix##_ofb##cbits##_encrypt(in, out, (long)EVP_MAXCHUNK, &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, &ctx->num);\
86 inl-=EVP_MAXCHUNK;\
87 in +=EVP_MAXCHUNK;\
88 out+=EVP_MAXCHUNK;\
89 }\
90 if (inl)\
91 cprefix##_ofb##cbits##_encrypt(in, out, (long)inl, &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, &ctx->num);\
82 return 1;\ 92 return 1;\
83} 93}
84 94
85#define BLOCK_CIPHER_func_cbc(cname, cprefix, kstruct, ksched) \ 95#define BLOCK_CIPHER_func_cbc(cname, cprefix, kstruct, ksched) \
86static int cname##_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) \ 96static int cname##_cbc_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \
87{\ 97{\
88 cprefix##_cbc_encrypt(in, out, (long)inl, &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, ctx->encrypt);\ 98 while(inl>=EVP_MAXCHUNK) \
99 {\
100 cprefix##_cbc_encrypt(in, out, (long)EVP_MAXCHUNK, &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, ctx->encrypt);\
101 inl-=EVP_MAXCHUNK;\
102 in +=EVP_MAXCHUNK;\
103 out+=EVP_MAXCHUNK;\
104 }\
105 if (inl)\
106 cprefix##_cbc_encrypt(in, out, (long)inl, &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, ctx->encrypt);\
89 return 1;\ 107 return 1;\
90} 108}
91 109
92#define BLOCK_CIPHER_func_cfb(cname, cprefix, cbits, kstruct, ksched) \ 110#define BLOCK_CIPHER_func_cfb(cname, cprefix, cbits, kstruct, ksched) \
93static int cname##_cfb##cbits##_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, unsigned int inl) \ 111static int cname##_cfb##cbits##_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out, const unsigned char *in, size_t inl) \
94{\ 112{\
95 cprefix##_cfb##cbits##_encrypt(in, out, (long)((cbits==1) && !(ctx->flags & EVP_CIPH_FLAG_LENGTH_BITS) ?inl*8:inl), &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, &ctx->num, ctx->encrypt);\ 113 size_t chunk=EVP_MAXCHUNK;\
114 if (cbits==1) chunk>>=3;\
115 if (inl<chunk) chunk=inl;\
116 while(inl && inl>=chunk)\
117 {\
118 cprefix##_cfb##cbits##_encrypt(in, out, (long)((cbits==1) && !(ctx->flags & EVP_CIPH_FLAG_LENGTH_BITS) ?inl*8:inl), &((kstruct *)ctx->cipher_data)->ksched, ctx->iv, &ctx->num, ctx->encrypt);\
119 inl-=chunk;\
120 in +=chunk;\
121 out+=chunk;\
122 if(inl<chunk) chunk=inl;\
123 }\
96 return 1;\ 124 return 1;\
97} 125}
98 126
@@ -139,10 +167,10 @@ BLOCK_CIPHER_def1(cname, ofb##cbits, ofb, OFB, kstruct, nid, 1, \
139 get_asn1, ctrl) 167 get_asn1, ctrl)
140 168
141#define BLOCK_CIPHER_def_ecb(cname, kstruct, nid, block_size, key_len, \ 169#define BLOCK_CIPHER_def_ecb(cname, kstruct, nid, block_size, key_len, \
142 iv_len, flags, init_key, cleanup, set_asn1, \ 170 flags, init_key, cleanup, set_asn1, \
143 get_asn1, ctrl) \ 171 get_asn1, ctrl) \
144BLOCK_CIPHER_def1(cname, ecb, ecb, ECB, kstruct, nid, block_size, key_len, \ 172BLOCK_CIPHER_def1(cname, ecb, ecb, ECB, kstruct, nid, block_size, key_len, \
145 iv_len, flags, init_key, cleanup, set_asn1, get_asn1, ctrl) 173 0, flags, init_key, cleanup, set_asn1, get_asn1, ctrl)
146 174
147#define BLOCK_CIPHER_defs(cname, kstruct, \ 175#define BLOCK_CIPHER_defs(cname, kstruct, \
148 nid, block_size, key_len, iv_len, cbits, flags, \ 176 nid, block_size, key_len, iv_len, cbits, flags, \
@@ -153,7 +181,7 @@ BLOCK_CIPHER_def_cfb(cname, kstruct, nid, key_len, iv_len, cbits, \
153 flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \ 181 flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \
154BLOCK_CIPHER_def_ofb(cname, kstruct, nid, key_len, iv_len, cbits, \ 182BLOCK_CIPHER_def_ofb(cname, kstruct, nid, key_len, iv_len, cbits, \
155 flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \ 183 flags, init_key, cleanup, set_asn1, get_asn1, ctrl) \
156BLOCK_CIPHER_def_ecb(cname, kstruct, nid, block_size, key_len, iv_len, flags, \ 184BLOCK_CIPHER_def_ecb(cname, kstruct, nid, block_size, key_len, flags, \
157 init_key, cleanup, set_asn1, get_asn1, ctrl) 185 init_key, cleanup, set_asn1, get_asn1, ctrl)
158 186
159 187
@@ -226,27 +254,92 @@ const EVP_CIPHER *EVP_##cname##_ecb(void) { return &cname##_ecb; }
226 254
227#define EVP_C_DATA(kstruct, ctx) ((kstruct *)(ctx)->cipher_data) 255#define EVP_C_DATA(kstruct, ctx) ((kstruct *)(ctx)->cipher_data)
228 256
229#define IMPLEMENT_CFBR(cipher,cprefix,kstruct,ksched,keysize,cbits,iv_len,fl) \ 257#define IMPLEMENT_CFBR(cipher,cprefix,kstruct,ksched,keysize,cbits,iv_len) \
230 BLOCK_CIPHER_func_cfb(cipher##_##keysize,cprefix,cbits,kstruct,ksched) \ 258 BLOCK_CIPHER_func_cfb(cipher##_##keysize,cprefix,cbits,kstruct,ksched) \
231 BLOCK_CIPHER_def_cfb(cipher##_##keysize,kstruct, \ 259 BLOCK_CIPHER_def_cfb(cipher##_##keysize,kstruct, \
232 NID_##cipher##_##keysize, keysize/8, iv_len, cbits, \ 260 NID_##cipher##_##keysize, keysize/8, iv_len, cbits, \
233 (fl)|EVP_CIPH_FLAG_DEFAULT_ASN1, \ 261 0, cipher##_init_key, NULL, \
234 cipher##_init_key, NULL, NULL, NULL, NULL) 262 EVP_CIPHER_set_asn1_iv, \
235 263 EVP_CIPHER_get_asn1_iv, \
236#ifdef OPENSSL_FIPS 264 NULL)
237#define RC2_set_key private_RC2_set_key 265
238#define RC4_set_key private_RC4_set_key 266struct evp_pkey_ctx_st
239#define CAST_set_key private_CAST_set_key 267 {
240#define RC5_32_set_key private_RC5_32_set_key 268 /* Method associated with this operation */
241#define BF_set_key private_BF_set_key 269 const EVP_PKEY_METHOD *pmeth;
242#define Camellia_set_key private_Camellia_set_key 270 /* Engine that implements this method or NULL if builtin */
243#define idea_set_encrypt_key private_idea_set_encrypt_key 271 ENGINE *engine;
244 272 /* Key: may be NULL */
245#define MD5_Init private_MD5_Init 273 EVP_PKEY *pkey;
246#define MD4_Init private_MD4_Init 274 /* Peer key for key agreement, may be NULL */
247#define MD2_Init private_MD2_Init 275 EVP_PKEY *peerkey;
248#define MDC2_Init private_MDC2_Init 276 /* Actual operation */
249#define SHA_Init private_SHA_Init 277 int operation;
250 278 /* Algorithm specific data */
251#endif 279 void *data;
280 /* Application specific data */
281 void *app_data;
282 /* Keygen callback */
283 EVP_PKEY_gen_cb *pkey_gencb;
284 /* implementation specific keygen data */
285 int *keygen_info;
286 int keygen_info_count;
287 } /* EVP_PKEY_CTX */;
288
289#define EVP_PKEY_FLAG_DYNAMIC 1
290
291struct evp_pkey_method_st
292 {
293 int pkey_id;
294 int flags;
295
296 int (*init)(EVP_PKEY_CTX *ctx);
297 int (*copy)(EVP_PKEY_CTX *dst, EVP_PKEY_CTX *src);
298 void (*cleanup)(EVP_PKEY_CTX *ctx);
299
300 int (*paramgen_init)(EVP_PKEY_CTX *ctx);
301 int (*paramgen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey);
302
303 int (*keygen_init)(EVP_PKEY_CTX *ctx);
304 int (*keygen)(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey);
305
306 int (*sign_init)(EVP_PKEY_CTX *ctx);
307 int (*sign)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
308 const unsigned char *tbs, size_t tbslen);
309
310 int (*verify_init)(EVP_PKEY_CTX *ctx);
311 int (*verify)(EVP_PKEY_CTX *ctx,
312 const unsigned char *sig, size_t siglen,
313 const unsigned char *tbs, size_t tbslen);
314
315 int (*verify_recover_init)(EVP_PKEY_CTX *ctx);
316 int (*verify_recover)(EVP_PKEY_CTX *ctx,
317 unsigned char *rout, size_t *routlen,
318 const unsigned char *sig, size_t siglen);
319
320 int (*signctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx);
321 int (*signctx)(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
322 EVP_MD_CTX *mctx);
323
324 int (*verifyctx_init)(EVP_PKEY_CTX *ctx, EVP_MD_CTX *mctx);
325 int (*verifyctx)(EVP_PKEY_CTX *ctx, const unsigned char *sig,int siglen,
326 EVP_MD_CTX *mctx);
327
328 int (*encrypt_init)(EVP_PKEY_CTX *ctx);
329 int (*encrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
330 const unsigned char *in, size_t inlen);
331
332 int (*decrypt_init)(EVP_PKEY_CTX *ctx);
333 int (*decrypt)(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen,
334 const unsigned char *in, size_t inlen);
335
336 int (*derive_init)(EVP_PKEY_CTX *ctx);
337 int (*derive)(EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen);
338
339 int (*ctrl)(EVP_PKEY_CTX *ctx, int type, int p1, void *p2);
340 int (*ctrl_str)(EVP_PKEY_CTX *ctx, const char *type, const char *value);
341
342
343 } /* EVP_PKEY_METHOD */;
252 344
345void evp_pkey_set_cb_translate(BN_GENCB *cb, EVP_PKEY_CTX *ctx);
diff --git a/src/lib/libssl/src/crypto/evp/evp_pbe.c b/src/lib/libssl/src/crypto/evp/evp_pbe.c
index 5e830be65f..c9d932d205 100644
--- a/src/lib/libssl/src/crypto/evp/evp_pbe.c
+++ b/src/lib/libssl/src/crypto/evp/evp_pbe.c
@@ -3,7 +3,7 @@
3 * project 1999. 3 * project 1999.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -59,79 +59,253 @@
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include <openssl/evp.h> 61#include <openssl/evp.h>
62#include <openssl/pkcs12.h>
62#include <openssl/x509.h> 63#include <openssl/x509.h>
63 64
64/* Password based encryption (PBE) functions */ 65/* Password based encryption (PBE) functions */
65 66
66static STACK *pbe_algs; 67DECLARE_STACK_OF(EVP_PBE_CTL)
68static STACK_OF(EVP_PBE_CTL) *pbe_algs;
67 69
68/* Setup a cipher context from a PBE algorithm */ 70/* Setup a cipher context from a PBE algorithm */
69 71
70typedef struct { 72typedef struct
71int pbe_nid; 73 {
72const EVP_CIPHER *cipher; 74 int pbe_type;
73const EVP_MD *md; 75 int pbe_nid;
74EVP_PBE_KEYGEN *keygen; 76 int cipher_nid;
75} EVP_PBE_CTL; 77 int md_nid;
78 EVP_PBE_KEYGEN *keygen;
79 } EVP_PBE_CTL;
76 80
77int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen, 81static const EVP_PBE_CTL builtin_pbe[] =
78 ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de) 82 {
79{ 83 {EVP_PBE_TYPE_OUTER, NID_pbeWithMD2AndDES_CBC,
84 NID_des_cbc, NID_md2, PKCS5_PBE_keyivgen},
85 {EVP_PBE_TYPE_OUTER, NID_pbeWithMD5AndDES_CBC,
86 NID_des_cbc, NID_md5, PKCS5_PBE_keyivgen},
87 {EVP_PBE_TYPE_OUTER, NID_pbeWithSHA1AndRC2_CBC,
88 NID_rc2_64_cbc, NID_sha1, PKCS5_PBE_keyivgen},
80 89
81 EVP_PBE_CTL *pbetmp, pbelu; 90 {EVP_PBE_TYPE_OUTER, NID_pbe_WithSHA1And128BitRC4,
82 int i; 91 NID_rc4, NID_sha1, PKCS12_PBE_keyivgen},
83 pbelu.pbe_nid = OBJ_obj2nid(pbe_obj); 92 {EVP_PBE_TYPE_OUTER, NID_pbe_WithSHA1And40BitRC4,
84 if (pbelu.pbe_nid != NID_undef) i = sk_find(pbe_algs, (char *)&pbelu); 93 NID_rc4_40, NID_sha1, PKCS12_PBE_keyivgen},
85 else i = -1; 94 {EVP_PBE_TYPE_OUTER, NID_pbe_WithSHA1And3_Key_TripleDES_CBC,
95 NID_des_ede3_cbc, NID_sha1, PKCS12_PBE_keyivgen},
96 {EVP_PBE_TYPE_OUTER, NID_pbe_WithSHA1And2_Key_TripleDES_CBC,
97 NID_des_ede_cbc, NID_sha1, PKCS12_PBE_keyivgen},
98 {EVP_PBE_TYPE_OUTER, NID_pbe_WithSHA1And128BitRC2_CBC,
99 NID_rc2_cbc, NID_sha1, PKCS12_PBE_keyivgen},
100 {EVP_PBE_TYPE_OUTER, NID_pbe_WithSHA1And40BitRC2_CBC,
101 NID_rc2_40_cbc, NID_sha1, PKCS12_PBE_keyivgen},
102
103#ifndef OPENSSL_NO_HMAC
104 {EVP_PBE_TYPE_OUTER, NID_pbes2, -1, -1, PKCS5_v2_PBE_keyivgen},
105#endif
106 {EVP_PBE_TYPE_OUTER, NID_pbeWithMD2AndRC2_CBC,
107 NID_rc2_64_cbc, NID_md2, PKCS5_PBE_keyivgen},
108 {EVP_PBE_TYPE_OUTER, NID_pbeWithMD5AndRC2_CBC,
109 NID_rc2_64_cbc, NID_md5, PKCS5_PBE_keyivgen},
110 {EVP_PBE_TYPE_OUTER, NID_pbeWithSHA1AndDES_CBC,
111 NID_des_cbc, NID_sha1, PKCS5_PBE_keyivgen},
112
113
114 {EVP_PBE_TYPE_PRF, NID_hmacWithSHA1, -1, NID_sha1, 0},
115 {EVP_PBE_TYPE_PRF, NID_hmacWithMD5, -1, NID_md5, 0},
116 {EVP_PBE_TYPE_PRF, NID_hmacWithSHA224, -1, NID_sha224, 0},
117 {EVP_PBE_TYPE_PRF, NID_hmacWithSHA256, -1, NID_sha256, 0},
118 {EVP_PBE_TYPE_PRF, NID_hmacWithSHA384, -1, NID_sha384, 0},
119 {EVP_PBE_TYPE_PRF, NID_hmacWithSHA512, -1, NID_sha512, 0},
120 {EVP_PBE_TYPE_PRF, NID_id_HMACGostR3411_94, -1, NID_id_GostR3411_94, 0},
121 };
122
123#ifdef TEST
124int main(int argc, char **argv)
125 {
126 int i, nid_md, nid_cipher;
127 EVP_PBE_CTL *tpbe, *tpbe2;
128 /*OpenSSL_add_all_algorithms();*/
129
130 for (i = 0; i < sizeof(builtin_pbe)/sizeof(EVP_PBE_CTL); i++)
131 {
132 tpbe = builtin_pbe + i;
133 fprintf(stderr, "%d %d %s ", tpbe->pbe_type, tpbe->pbe_nid,
134 OBJ_nid2sn(tpbe->pbe_nid));
135 if (EVP_PBE_find(tpbe->pbe_type, tpbe->pbe_nid,
136 &nid_cipher ,&nid_md,0))
137 fprintf(stderr, "Found %s %s\n",
138 OBJ_nid2sn(nid_cipher),
139 OBJ_nid2sn(nid_md));
140 else
141 fprintf(stderr, "Find ERROR!!\n");
142 }
143
144 return 0;
145 }
146#endif
147
148
149
150int EVP_PBE_CipherInit(ASN1_OBJECT *pbe_obj, const char *pass, int passlen,
151 ASN1_TYPE *param, EVP_CIPHER_CTX *ctx, int en_de)
152 {
153 const EVP_CIPHER *cipher;
154 const EVP_MD *md;
155 int cipher_nid, md_nid;
156 EVP_PBE_KEYGEN *keygen;
86 157
87 if (i == -1) { 158 if (!EVP_PBE_find(EVP_PBE_TYPE_OUTER, OBJ_obj2nid(pbe_obj),
159 &cipher_nid, &md_nid, &keygen))
160 {
88 char obj_tmp[80]; 161 char obj_tmp[80];
89 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM); 162 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_PBE_ALGORITHM);
90 if (!pbe_obj) BUF_strlcpy (obj_tmp, "NULL", sizeof obj_tmp); 163 if (!pbe_obj) BUF_strlcpy (obj_tmp, "NULL", sizeof obj_tmp);
91 else i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj); 164 else i2t_ASN1_OBJECT(obj_tmp, sizeof obj_tmp, pbe_obj);
92 ERR_add_error_data(2, "TYPE=", obj_tmp); 165 ERR_add_error_data(2, "TYPE=", obj_tmp);
93 return 0; 166 return 0;
94 } 167 }
95 if(!pass) passlen = 0; 168
96 else if (passlen == -1) passlen = strlen(pass); 169 if(!pass)
97 pbetmp = (EVP_PBE_CTL *)sk_value (pbe_algs, i); 170 passlen = 0;
98 i = (*pbetmp->keygen)(ctx, pass, passlen, param, pbetmp->cipher, 171 else if (passlen == -1)
99 pbetmp->md, en_de); 172 passlen = strlen(pass);
100 if (!i) { 173
174 if (cipher_nid == -1)
175 cipher = NULL;
176 else
177 {
178 cipher = EVP_get_cipherbynid(cipher_nid);
179 if (!cipher)
180 {
181 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_CIPHER);
182 return 0;
183 }
184 }
185
186 if (md_nid == -1)
187 md = NULL;
188 else
189 {
190 md = EVP_get_digestbynid(md_nid);
191 if (!md)
192 {
193 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_UNKNOWN_DIGEST);
194 return 0;
195 }
196 }
197
198 if (!keygen(ctx, pass, passlen, param, cipher, md, en_de))
199 {
101 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_KEYGEN_FAILURE); 200 EVPerr(EVP_F_EVP_PBE_CIPHERINIT,EVP_R_KEYGEN_FAILURE);
102 return 0; 201 return 0;
103 } 202 }
104 return 1; 203 return 1;
105} 204}
106 205
107static int pbe_cmp(const char * const *a, const char * const *b) 206DECLARE_OBJ_BSEARCH_CMP_FN(EVP_PBE_CTL, EVP_PBE_CTL, pbe2);
108{ 207
109 const EVP_PBE_CTL * const *pbe1 = (const EVP_PBE_CTL * const *) a, 208static int pbe2_cmp(const EVP_PBE_CTL *pbe1, const EVP_PBE_CTL *pbe2)
110 * const *pbe2 = (const EVP_PBE_CTL * const *)b; 209 {
111 return ((*pbe1)->pbe_nid - (*pbe2)->pbe_nid); 210 int ret = pbe1->pbe_type - pbe2->pbe_type;
112} 211 if (ret)
212 return ret;
213 else
214 return pbe1->pbe_nid - pbe2->pbe_nid;
215 }
216
217IMPLEMENT_OBJ_BSEARCH_CMP_FN(EVP_PBE_CTL, EVP_PBE_CTL, pbe2);
218
219static int pbe_cmp(const EVP_PBE_CTL * const *a, const EVP_PBE_CTL * const *b)
220 {
221 int ret = (*a)->pbe_type - (*b)->pbe_type;
222 if (ret)
223 return ret;
224 else
225 return (*a)->pbe_nid - (*b)->pbe_nid;
226 }
113 227
114/* Add a PBE algorithm */ 228/* Add a PBE algorithm */
115 229
116int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md, 230int EVP_PBE_alg_add_type(int pbe_type, int pbe_nid, int cipher_nid, int md_nid,
117 EVP_PBE_KEYGEN *keygen) 231 EVP_PBE_KEYGEN *keygen)
118{ 232 {
119 EVP_PBE_CTL *pbe_tmp; 233 EVP_PBE_CTL *pbe_tmp;
120 if (!pbe_algs) pbe_algs = sk_new(pbe_cmp); 234 if (!pbe_algs)
121 if (!(pbe_tmp = (EVP_PBE_CTL*) OPENSSL_malloc (sizeof(EVP_PBE_CTL)))) { 235 pbe_algs = sk_EVP_PBE_CTL_new(pbe_cmp);
122 EVPerr(EVP_F_EVP_PBE_ALG_ADD,ERR_R_MALLOC_FAILURE); 236 if (!(pbe_tmp = (EVP_PBE_CTL*) OPENSSL_malloc (sizeof(EVP_PBE_CTL))))
237 {
238 EVPerr(EVP_F_EVP_PBE_ALG_ADD_TYPE,ERR_R_MALLOC_FAILURE);
123 return 0; 239 return 0;
124 } 240 }
125 pbe_tmp->pbe_nid = nid; 241 pbe_tmp->pbe_type = pbe_type;
126 pbe_tmp->cipher = cipher; 242 pbe_tmp->pbe_nid = pbe_nid;
127 pbe_tmp->md = md; 243 pbe_tmp->cipher_nid = cipher_nid;
244 pbe_tmp->md_nid = md_nid;
128 pbe_tmp->keygen = keygen; 245 pbe_tmp->keygen = keygen;
129 sk_push (pbe_algs, (char *)pbe_tmp); 246
247
248 sk_EVP_PBE_CTL_push (pbe_algs, pbe_tmp);
130 return 1; 249 return 1;
131} 250 }
251
252int EVP_PBE_alg_add(int nid, const EVP_CIPHER *cipher, const EVP_MD *md,
253 EVP_PBE_KEYGEN *keygen)
254 {
255 int cipher_nid, md_nid;
256 if (cipher)
257 cipher_nid = EVP_CIPHER_type(cipher);
258 else
259 cipher_nid = -1;
260 if (md)
261 md_nid = EVP_MD_type(md);
262 else
263 md_nid = -1;
264
265 return EVP_PBE_alg_add_type(EVP_PBE_TYPE_OUTER, nid,
266 cipher_nid, md_nid, keygen);
267 }
268
269int EVP_PBE_find(int type, int pbe_nid,
270 int *pcnid, int *pmnid, EVP_PBE_KEYGEN **pkeygen)
271 {
272 EVP_PBE_CTL *pbetmp = NULL, pbelu;
273 int i;
274 if (pbe_nid == NID_undef)
275 return 0;
276
277 pbelu.pbe_type = type;
278 pbelu.pbe_nid = pbe_nid;
279
280 if (pbe_algs)
281 {
282 i = sk_EVP_PBE_CTL_find(pbe_algs, &pbelu);
283 if (i != -1)
284 pbetmp = sk_EVP_PBE_CTL_value (pbe_algs, i);
285 }
286 if (pbetmp == NULL)
287 {
288 pbetmp = OBJ_bsearch_pbe2(&pbelu, builtin_pbe,
289 sizeof(builtin_pbe)/sizeof(EVP_PBE_CTL));
290 }
291 if (pbetmp == NULL)
292 return 0;
293 if (pcnid)
294 *pcnid = pbetmp->cipher_nid;
295 if (pmnid)
296 *pmnid = pbetmp->md_nid;
297 if (pkeygen)
298 *pkeygen = pbetmp->keygen;
299 return 1;
300 }
301
302static void free_evp_pbe_ctl(EVP_PBE_CTL *pbe)
303 {
304 OPENSSL_freeFunc(pbe);
305 }
132 306
133void EVP_PBE_cleanup(void) 307void EVP_PBE_cleanup(void)
134{ 308 {
135 sk_pop_free(pbe_algs, OPENSSL_freeFunc); 309 sk_EVP_PBE_CTL_pop_free(pbe_algs, free_evp_pbe_ctl);
136 pbe_algs = NULL; 310 pbe_algs = NULL;
137} 311 }
diff --git a/src/lib/libssl/src/crypto/evp/evp_pkey.c b/src/lib/libssl/src/crypto/evp/evp_pkey.c
index 10d9e9e772..ceebf69284 100644
--- a/src/lib/libssl/src/crypto/evp/evp_pkey.c
+++ b/src/lib/libssl/src/crypto/evp/evp_pkey.c
@@ -3,7 +3,7 @@
3 * project 1999. 3 * project 1999.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 1999-2002 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -61,287 +61,52 @@
61#include "cryptlib.h" 61#include "cryptlib.h"
62#include <openssl/x509.h> 62#include <openssl/x509.h>
63#include <openssl/rand.h> 63#include <openssl/rand.h>
64#ifndef OPENSSL_NO_RSA 64#include "asn1_locl.h"
65#include <openssl/rsa.h>
66#endif
67#ifndef OPENSSL_NO_DSA
68#include <openssl/dsa.h>
69#endif
70#include <openssl/bn.h>
71
72#ifndef OPENSSL_NO_DSA
73static int dsa_pkey2pkcs8(PKCS8_PRIV_KEY_INFO *p8inf, EVP_PKEY *pkey);
74#endif
75#ifndef OPENSSL_NO_EC
76static int eckey_pkey2pkcs8(PKCS8_PRIV_KEY_INFO *p8inf, EVP_PKEY *pkey);
77#endif
78 65
79/* Extract a private key from a PKCS8 structure */ 66/* Extract a private key from a PKCS8 structure */
80 67
81EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8) 68EVP_PKEY *EVP_PKCS82PKEY(PKCS8_PRIV_KEY_INFO *p8)
82{ 69{
83 EVP_PKEY *pkey = NULL; 70 EVP_PKEY *pkey = NULL;
84#ifndef OPENSSL_NO_RSA 71 ASN1_OBJECT *algoid;
85 RSA *rsa = NULL;
86#endif
87#ifndef OPENSSL_NO_DSA
88 DSA *dsa = NULL;
89 ASN1_TYPE *t1, *t2;
90 ASN1_INTEGER *privkey;
91 STACK_OF(ASN1_TYPE) *ndsa = NULL;
92#endif
93#ifndef OPENSSL_NO_EC
94 EC_KEY *eckey = NULL;
95 const unsigned char *p_tmp;
96#endif
97#if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_EC)
98 ASN1_TYPE *param = NULL;
99 BN_CTX *ctx = NULL;
100 int plen;
101#endif
102 X509_ALGOR *a;
103 const unsigned char *p;
104 const unsigned char *cp;
105 int pkeylen;
106 int nid;
107 char obj_tmp[80]; 72 char obj_tmp[80];
108 73
109 if(p8->pkey->type == V_ASN1_OCTET_STRING) { 74 if (!PKCS8_pkey_get0(&algoid, NULL, NULL, NULL, p8))
110 p8->broken = PKCS8_OK; 75 return NULL;
111 p = p8->pkey->value.octet_string->data; 76
112 pkeylen = p8->pkey->value.octet_string->length;
113 } else {
114 p8->broken = PKCS8_NO_OCTET;
115 p = p8->pkey->value.sequence->data;
116 pkeylen = p8->pkey->value.sequence->length;
117 }
118 if (!(pkey = EVP_PKEY_new())) { 77 if (!(pkey = EVP_PKEY_new())) {
119 EVPerr(EVP_F_EVP_PKCS82PKEY,ERR_R_MALLOC_FAILURE); 78 EVPerr(EVP_F_EVP_PKCS82PKEY,ERR_R_MALLOC_FAILURE);
120 return NULL; 79 return NULL;
121 } 80 }
122 a = p8->pkeyalg;
123 nid = OBJ_obj2nid(a->algorithm);
124 switch(nid)
125 {
126#ifndef OPENSSL_NO_RSA
127 case NID_rsaEncryption:
128 cp = p;
129 if (!(rsa = d2i_RSAPrivateKey (NULL,&cp, pkeylen))) {
130 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
131 return NULL;
132 }
133 EVP_PKEY_assign_RSA (pkey, rsa);
134 break;
135#endif
136#ifndef OPENSSL_NO_DSA
137 case NID_dsa:
138 /* PKCS#8 DSA is weird: you just get a private key integer
139 * and parameters in the AlgorithmIdentifier the pubkey must
140 * be recalculated.
141 */
142
143 /* Check for broken DSA PKCS#8, UGH! */
144 if(*p == (V_ASN1_SEQUENCE|V_ASN1_CONSTRUCTED)) {
145 if(!(ndsa = ASN1_seq_unpack_ASN1_TYPE(p, pkeylen,
146 d2i_ASN1_TYPE,
147 ASN1_TYPE_free))) {
148 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
149 goto dsaerr;
150 }
151 if(sk_ASN1_TYPE_num(ndsa) != 2 ) {
152 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
153 goto dsaerr;
154 }
155 /* Handle Two broken types:
156 * SEQUENCE {parameters, priv_key}
157 * SEQUENCE {pub_key, priv_key}
158 */
159
160 t1 = sk_ASN1_TYPE_value(ndsa, 0);
161 t2 = sk_ASN1_TYPE_value(ndsa, 1);
162 if(t1->type == V_ASN1_SEQUENCE) {
163 p8->broken = PKCS8_EMBEDDED_PARAM;
164 param = t1;
165 } else if(a->parameter->type == V_ASN1_SEQUENCE) {
166 p8->broken = PKCS8_NS_DB;
167 param = a->parameter;
168 } else {
169 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
170 goto dsaerr;
171 }
172
173 if(t2->type != V_ASN1_INTEGER) {
174 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
175 goto dsaerr;
176 }
177 privkey = t2->value.integer;
178 } else {
179 if (!(privkey=d2i_ASN1_INTEGER (NULL, &p, pkeylen))) {
180 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
181 goto dsaerr;
182 }
183 param = p8->pkeyalg->parameter;
184 }
185 if (!param || (param->type != V_ASN1_SEQUENCE)) {
186 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
187 goto dsaerr;
188 }
189 cp = p = param->value.sequence->data;
190 plen = param->value.sequence->length;
191 if (!(dsa = d2i_DSAparams (NULL, &cp, plen))) {
192 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
193 goto dsaerr;
194 }
195 /* We have parameters now set private key */
196 if (!(dsa->priv_key = ASN1_INTEGER_to_BN(privkey, NULL))) {
197 EVPerr(EVP_F_EVP_PKCS82PKEY,EVP_R_BN_DECODE_ERROR);
198 goto dsaerr;
199 }
200 /* Calculate public key (ouch!) */
201 if (!(dsa->pub_key = BN_new())) {
202 EVPerr(EVP_F_EVP_PKCS82PKEY,ERR_R_MALLOC_FAILURE);
203 goto dsaerr;
204 }
205 if (!(ctx = BN_CTX_new())) {
206 EVPerr(EVP_F_EVP_PKCS82PKEY,ERR_R_MALLOC_FAILURE);
207 goto dsaerr;
208 }
209
210 if (!BN_mod_exp(dsa->pub_key, dsa->g,
211 dsa->priv_key, dsa->p, ctx)) {
212
213 EVPerr(EVP_F_EVP_PKCS82PKEY,EVP_R_BN_PUBKEY_ERROR);
214 goto dsaerr;
215 }
216 81
217 EVP_PKEY_assign_DSA(pkey, dsa); 82 if (!EVP_PKEY_set_type(pkey, OBJ_obj2nid(algoid)))
218 BN_CTX_free (ctx);
219 if(ndsa) sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
220 else ASN1_INTEGER_free(privkey);
221 break;
222 dsaerr:
223 BN_CTX_free (ctx);
224 sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
225 DSA_free(dsa);
226 EVP_PKEY_free(pkey);
227 return NULL;
228 break;
229#endif
230#ifndef OPENSSL_NO_EC
231 case NID_X9_62_id_ecPublicKey:
232 p_tmp = p;
233 /* extract the ec parameters */
234 param = p8->pkeyalg->parameter;
235
236 if (!param || ((param->type != V_ASN1_SEQUENCE) &&
237 (param->type != V_ASN1_OBJECT)))
238 { 83 {
239 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR); 84 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM);
240 goto ecerr; 85 i2t_ASN1_OBJECT(obj_tmp, 80, algoid);
86 ERR_add_error_data(2, "TYPE=", obj_tmp);
87 goto error;
241 } 88 }
242 89
243 if (param->type == V_ASN1_SEQUENCE) 90 if (pkey->ameth->priv_decode)
244 { 91 {
245 cp = p = param->value.sequence->data; 92 if (!pkey->ameth->priv_decode(pkey, p8))
246 plen = param->value.sequence->length;
247
248 if (!(eckey = d2i_ECParameters(NULL, &cp, plen)))
249 { 93 {
250 EVPerr(EVP_F_EVP_PKCS82PKEY, 94 EVPerr(EVP_F_EVP_PKCS82PKEY,
251 EVP_R_DECODE_ERROR); 95 EVP_R_PRIVATE_KEY_DECODE_ERROR);
252 goto ecerr; 96 goto error;
253 } 97 }
254 } 98 }
255 else 99 else
256 { 100 {
257 EC_GROUP *group; 101 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_METHOD_NOT_SUPPORTED);
258 cp = p = param->value.object->data; 102 goto error;
259 plen = param->value.object->length;
260
261 /* type == V_ASN1_OBJECT => the parameters are given
262 * by an asn1 OID
263 */
264 if ((eckey = EC_KEY_new()) == NULL)
265 {
266 EVPerr(EVP_F_EVP_PKCS82PKEY,
267 ERR_R_MALLOC_FAILURE);
268 goto ecerr;
269 }
270 group = EC_GROUP_new_by_curve_name(OBJ_obj2nid(a->parameter->value.object));
271 if (group == NULL)
272 goto ecerr;
273 EC_GROUP_set_asn1_flag(group, OPENSSL_EC_NAMED_CURVE);
274 if (EC_KEY_set_group(eckey, group) == 0)
275 goto ecerr;
276 EC_GROUP_free(group);
277 }
278
279 /* We have parameters now set private key */
280 if (!d2i_ECPrivateKey(&eckey, &p_tmp, pkeylen))
281 {
282 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_DECODE_ERROR);
283 goto ecerr;
284 }
285
286 /* calculate public key (if necessary) */
287 if (EC_KEY_get0_public_key(eckey) == NULL)
288 {
289 const BIGNUM *priv_key;
290 const EC_GROUP *group;
291 EC_POINT *pub_key;
292 /* the public key was not included in the SEC1 private
293 * key => calculate the public key */
294 group = EC_KEY_get0_group(eckey);
295 pub_key = EC_POINT_new(group);
296 if (pub_key == NULL)
297 {
298 EVPerr(EVP_F_EVP_PKCS82PKEY, ERR_R_EC_LIB);
299 goto ecerr;
300 }
301 if (!EC_POINT_copy(pub_key, EC_GROUP_get0_generator(group)))
302 {
303 EC_POINT_free(pub_key);
304 EVPerr(EVP_F_EVP_PKCS82PKEY, ERR_R_EC_LIB);
305 goto ecerr;
306 }
307 priv_key = EC_KEY_get0_private_key(eckey);
308 if (!EC_POINT_mul(group, pub_key, priv_key, NULL, NULL, ctx))
309 {
310 EC_POINT_free(pub_key);
311 EVPerr(EVP_F_EVP_PKCS82PKEY, ERR_R_EC_LIB);
312 goto ecerr;
313 }
314 if (EC_KEY_set_public_key(eckey, pub_key) == 0)
315 {
316 EC_POINT_free(pub_key);
317 EVPerr(EVP_F_EVP_PKCS82PKEY, ERR_R_EC_LIB);
318 goto ecerr;
319 }
320 EC_POINT_free(pub_key);
321 } 103 }
322 104
323 EVP_PKEY_assign_EC_KEY(pkey, eckey);
324 if (ctx)
325 BN_CTX_free(ctx);
326 break;
327ecerr:
328 if (ctx)
329 BN_CTX_free(ctx);
330 if (eckey)
331 EC_KEY_free(eckey);
332 if (pkey)
333 EVP_PKEY_free(pkey);
334 return NULL;
335#endif
336 default:
337 EVPerr(EVP_F_EVP_PKCS82PKEY, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM);
338 if (!a->algorithm) BUF_strlcpy (obj_tmp, "NULL", sizeof obj_tmp);
339 else i2t_ASN1_OBJECT(obj_tmp, 80, a->algorithm);
340 ERR_add_error_data(2, "TYPE=", obj_tmp);
341 EVP_PKEY_free (pkey);
342 return NULL;
343 }
344 return pkey; 105 return pkey;
106
107 error:
108 EVP_PKEY_free (pkey);
109 return NULL;
345} 110}
346 111
347PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey) 112PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey)
@@ -360,59 +125,37 @@ PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken)
360 return NULL; 125 return NULL;
361 } 126 }
362 p8->broken = broken; 127 p8->broken = broken;
363 if (!ASN1_INTEGER_set(p8->version, 0)) {
364 EVPerr(EVP_F_EVP_PKEY2PKCS8_BROKEN,ERR_R_MALLOC_FAILURE);
365 PKCS8_PRIV_KEY_INFO_free (p8);
366 return NULL;
367 }
368 if (!(p8->pkeyalg->parameter = ASN1_TYPE_new ())) {
369 EVPerr(EVP_F_EVP_PKEY2PKCS8_BROKEN,ERR_R_MALLOC_FAILURE);
370 PKCS8_PRIV_KEY_INFO_free (p8);
371 return NULL;
372 }
373 p8->pkey->type = V_ASN1_OCTET_STRING;
374 switch (EVP_PKEY_type(pkey->type)) {
375#ifndef OPENSSL_NO_RSA
376 case EVP_PKEY_RSA:
377 128
378 if(p8->broken == PKCS8_NO_OCTET) p8->pkey->type = V_ASN1_SEQUENCE; 129 if (pkey->ameth)
379 130 {
380 p8->pkeyalg->algorithm = OBJ_nid2obj(NID_rsaEncryption); 131 if (pkey->ameth->priv_encode)
381 p8->pkeyalg->parameter->type = V_ASN1_NULL; 132 {
382 if (!ASN1_pack_string_of (EVP_PKEY,pkey, i2d_PrivateKey, 133 if (!pkey->ameth->priv_encode(p8, pkey))
383 &p8->pkey->value.octet_string)) { 134 {
384 EVPerr(EVP_F_EVP_PKEY2PKCS8_BROKEN,ERR_R_MALLOC_FAILURE); 135 EVPerr(EVP_F_EVP_PKEY2PKCS8_BROKEN,
385 PKCS8_PRIV_KEY_INFO_free (p8); 136 EVP_R_PRIVATE_KEY_ENCODE_ERROR);
386 return NULL; 137 goto error;
387 } 138 }
388 break; 139 }
389#endif 140 else
390#ifndef OPENSSL_NO_DSA 141 {
391 case EVP_PKEY_DSA: 142 EVPerr(EVP_F_EVP_PKEY2PKCS8_BROKEN,
392 if(!dsa_pkey2pkcs8(p8, pkey)) { 143 EVP_R_METHOD_NOT_SUPPORTED);
393 PKCS8_PRIV_KEY_INFO_free (p8); 144 goto error;
394 return NULL; 145 }
395 } 146 }
396 147 else
397 break;
398#endif
399#ifndef OPENSSL_NO_EC
400 case EVP_PKEY_EC:
401 if (!eckey_pkey2pkcs8(p8, pkey))
402 { 148 {
403 PKCS8_PRIV_KEY_INFO_free(p8); 149 EVPerr(EVP_F_EVP_PKEY2PKCS8_BROKEN,
404 return(NULL); 150 EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM);
151 goto error;
405 } 152 }
406 break;
407#endif
408 default:
409 EVPerr(EVP_F_EVP_PKEY2PKCS8_BROKEN, EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM);
410 PKCS8_PRIV_KEY_INFO_free (p8);
411 return NULL;
412 }
413 RAND_add(p8->pkey->value.octet_string->data, 153 RAND_add(p8->pkey->value.octet_string->data,
414 p8->pkey->value.octet_string->length, 0.0); 154 p8->pkey->value.octet_string->length, 0.0);
415 return p8; 155 return p8;
156 error:
157 PKCS8_PRIV_KEY_INFO_free(p8);
158 return NULL;
416} 159}
417 160
418PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken) 161PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken)
@@ -436,301 +179,6 @@ PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken)
436 } 179 }
437} 180}
438 181
439#ifndef OPENSSL_NO_DSA
440static int dsa_pkey2pkcs8(PKCS8_PRIV_KEY_INFO *p8, EVP_PKEY *pkey)
441{
442 ASN1_STRING *params = NULL;
443 ASN1_INTEGER *prkey = NULL;
444 ASN1_TYPE *ttmp = NULL;
445 STACK_OF(ASN1_TYPE) *ndsa = NULL;
446 unsigned char *p = NULL, *q;
447 int len;
448
449 p8->pkeyalg->algorithm = OBJ_nid2obj(NID_dsa);
450 len = i2d_DSAparams (pkey->pkey.dsa, NULL);
451 if (!(p = OPENSSL_malloc(len))) {
452 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
453 goto err;
454 }
455 q = p;
456 i2d_DSAparams (pkey->pkey.dsa, &q);
457 if (!(params = ASN1_STRING_new())) {
458 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
459 goto err;
460 }
461 if (!ASN1_STRING_set(params, p, len)) {
462 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
463 goto err;
464 }
465 OPENSSL_free(p);
466 p = NULL;
467 /* Get private key into integer */
468 if (!(prkey = BN_to_ASN1_INTEGER (pkey->pkey.dsa->priv_key, NULL))) {
469 EVPerr(EVP_F_DSA_PKEY2PKCS8,EVP_R_ENCODE_ERROR);
470 goto err;
471 }
472
473 switch(p8->broken) {
474
475 case PKCS8_OK:
476 case PKCS8_NO_OCTET:
477
478 if (!ASN1_pack_string_of(ASN1_INTEGER,prkey, i2d_ASN1_INTEGER,
479 &p8->pkey->value.octet_string)) {
480 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
481 goto err;
482 }
483
484 M_ASN1_INTEGER_free (prkey);
485 prkey = NULL;
486 p8->pkeyalg->parameter->value.sequence = params;
487 params = NULL;
488 p8->pkeyalg->parameter->type = V_ASN1_SEQUENCE;
489
490 break;
491
492 case PKCS8_NS_DB:
493
494 p8->pkeyalg->parameter->value.sequence = params;
495 params = NULL;
496 p8->pkeyalg->parameter->type = V_ASN1_SEQUENCE;
497 if (!(ndsa = sk_ASN1_TYPE_new_null())) {
498 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
499 goto err;
500 }
501 if (!(ttmp = ASN1_TYPE_new())) {
502 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
503 goto err;
504 }
505 if (!(ttmp->value.integer =
506 BN_to_ASN1_INTEGER(pkey->pkey.dsa->pub_key, NULL))) {
507 EVPerr(EVP_F_DSA_PKEY2PKCS8,EVP_R_ENCODE_ERROR);
508 goto err;
509 }
510 ttmp->type = V_ASN1_INTEGER;
511 if (!sk_ASN1_TYPE_push(ndsa, ttmp)) {
512 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
513 goto err;
514 }
515
516 if (!(ttmp = ASN1_TYPE_new())) {
517 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
518 goto err;
519 }
520 ttmp->value.integer = prkey;
521 prkey = NULL;
522 ttmp->type = V_ASN1_INTEGER;
523 if (!sk_ASN1_TYPE_push(ndsa, ttmp)) {
524 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
525 goto err;
526 }
527 ttmp = NULL;
528
529 if (!(p8->pkey->value.octet_string = ASN1_OCTET_STRING_new())) {
530 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
531 goto err;
532 }
533
534 if (!ASN1_seq_pack_ASN1_TYPE(ndsa, i2d_ASN1_TYPE,
535 &p8->pkey->value.octet_string->data,
536 &p8->pkey->value.octet_string->length)) {
537
538 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
539 goto err;
540 }
541 sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
542 break;
543
544 case PKCS8_EMBEDDED_PARAM:
545
546 p8->pkeyalg->parameter->type = V_ASN1_NULL;
547 if (!(ndsa = sk_ASN1_TYPE_new_null())) {
548 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
549 goto err;
550 }
551 if (!(ttmp = ASN1_TYPE_new())) {
552 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
553 goto err;
554 }
555 ttmp->value.sequence = params;
556 params = NULL;
557 ttmp->type = V_ASN1_SEQUENCE;
558 if (!sk_ASN1_TYPE_push(ndsa, ttmp)) {
559 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
560 goto err;
561 }
562
563 if (!(ttmp = ASN1_TYPE_new())) {
564 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
565 goto err;
566 }
567 ttmp->value.integer = prkey;
568 prkey = NULL;
569 ttmp->type = V_ASN1_INTEGER;
570 if (!sk_ASN1_TYPE_push(ndsa, ttmp)) {
571 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
572 goto err;
573 }
574 ttmp = NULL;
575
576 if (!(p8->pkey->value.octet_string = ASN1_OCTET_STRING_new())) {
577 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
578 goto err;
579 }
580
581 if (!ASN1_seq_pack_ASN1_TYPE(ndsa, i2d_ASN1_TYPE,
582 &p8->pkey->value.octet_string->data,
583 &p8->pkey->value.octet_string->length)) {
584
585 EVPerr(EVP_F_DSA_PKEY2PKCS8,ERR_R_MALLOC_FAILURE);
586 goto err;
587 }
588 sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
589 break;
590 }
591 return 1;
592err:
593 if (p != NULL) OPENSSL_free(p);
594 if (params != NULL) ASN1_STRING_free(params);
595 if (prkey != NULL) M_ASN1_INTEGER_free(prkey);
596 if (ttmp != NULL) ASN1_TYPE_free(ttmp);
597 if (ndsa != NULL) sk_ASN1_TYPE_pop_free(ndsa, ASN1_TYPE_free);
598 return 0;
599}
600#endif
601
602#ifndef OPENSSL_NO_EC
603static int eckey_pkey2pkcs8(PKCS8_PRIV_KEY_INFO *p8, EVP_PKEY *pkey)
604{
605 EC_KEY *ec_key;
606 const EC_GROUP *group;
607 unsigned char *p, *pp;
608 int nid, i, ret = 0;
609 unsigned int tmp_flags, old_flags;
610
611 ec_key = pkey->pkey.ec;
612 if (ec_key == NULL || (group = EC_KEY_get0_group(ec_key)) == NULL)
613 {
614 EVPerr(EVP_F_ECKEY_PKEY2PKCS8, EVP_R_MISSING_PARAMETERS);
615 return 0;
616 }
617
618 /* set the ec parameters OID */
619 if (p8->pkeyalg->algorithm)
620 ASN1_OBJECT_free(p8->pkeyalg->algorithm);
621
622 p8->pkeyalg->algorithm = OBJ_nid2obj(NID_X9_62_id_ecPublicKey);
623
624 /* set the ec parameters */
625
626 if (p8->pkeyalg->parameter)
627 {
628 ASN1_TYPE_free(p8->pkeyalg->parameter);
629 p8->pkeyalg->parameter = NULL;
630 }
631
632 if ((p8->pkeyalg->parameter = ASN1_TYPE_new()) == NULL)
633 {
634 EVPerr(EVP_F_ECKEY_PKEY2PKCS8, ERR_R_MALLOC_FAILURE);
635 return 0;
636 }
637
638 if (EC_GROUP_get_asn1_flag(group)
639 && (nid = EC_GROUP_get_curve_name(group)))
640 {
641 /* we have a 'named curve' => just set the OID */
642 p8->pkeyalg->parameter->type = V_ASN1_OBJECT;
643 p8->pkeyalg->parameter->value.object = OBJ_nid2obj(nid);
644 }
645 else /* explicit parameters */
646 {
647 if ((i = i2d_ECParameters(ec_key, NULL)) == 0)
648 {
649 EVPerr(EVP_F_ECKEY_PKEY2PKCS8, ERR_R_EC_LIB);
650 return 0;
651 }
652 if ((p = (unsigned char *) OPENSSL_malloc(i)) == NULL)
653 {
654 EVPerr(EVP_F_ECKEY_PKEY2PKCS8, ERR_R_MALLOC_FAILURE);
655 return 0;
656 }
657 pp = p;
658 if (!i2d_ECParameters(ec_key, &pp))
659 {
660 EVPerr(EVP_F_ECKEY_PKEY2PKCS8, ERR_R_EC_LIB);
661 OPENSSL_free(p);
662 return 0;
663 }
664 p8->pkeyalg->parameter->type = V_ASN1_SEQUENCE;
665 if ((p8->pkeyalg->parameter->value.sequence
666 = ASN1_STRING_new()) == NULL)
667 {
668 EVPerr(EVP_F_ECKEY_PKEY2PKCS8, ERR_R_ASN1_LIB);
669 OPENSSL_free(p);
670 return 0;
671 }
672 ASN1_STRING_set(p8->pkeyalg->parameter->value.sequence, p, i);
673 OPENSSL_free(p);
674 }
675
676 /* set the private key */
677
678 /* do not include the parameters in the SEC1 private key
679 * see PKCS#11 12.11 */
680 old_flags = EC_KEY_get_enc_flags(pkey->pkey.ec);
681 tmp_flags = old_flags | EC_PKEY_NO_PARAMETERS;
682 EC_KEY_set_enc_flags(pkey->pkey.ec, tmp_flags);
683 i = i2d_ECPrivateKey(pkey->pkey.ec, NULL);
684 if (!i)
685 {
686 EC_KEY_set_enc_flags(pkey->pkey.ec, old_flags);
687 EVPerr(EVP_F_ECKEY_PKEY2PKCS8, ERR_R_EC_LIB);
688 return 0;
689 }
690 p = (unsigned char *) OPENSSL_malloc(i);
691 if (!p)
692 {
693 EC_KEY_set_enc_flags(pkey->pkey.ec, old_flags);
694 EVPerr(EVP_F_ECKEY_PKEY2PKCS8, ERR_R_MALLOC_FAILURE);
695 return 0;
696 }
697 pp = p;
698 if (!i2d_ECPrivateKey(pkey->pkey.ec, &pp))
699 {
700 EC_KEY_set_enc_flags(pkey->pkey.ec, old_flags);
701 EVPerr(EVP_F_ECKEY_PKEY2PKCS8, ERR_R_EC_LIB);
702 OPENSSL_free(p);
703 return 0;
704 }
705 /* restore old encoding flags */
706 EC_KEY_set_enc_flags(pkey->pkey.ec, old_flags);
707
708 switch(p8->broken) {
709
710 case PKCS8_OK:
711 p8->pkey->value.octet_string = ASN1_OCTET_STRING_new();
712 if (!p8->pkey->value.octet_string ||
713 !M_ASN1_OCTET_STRING_set(p8->pkey->value.octet_string,
714 (const void *)p, i))
715
716 {
717 EVPerr(EVP_F_ECKEY_PKEY2PKCS8, ERR_R_MALLOC_FAILURE);
718 }
719 else
720 ret = 1;
721 break;
722 case PKCS8_NO_OCTET: /* RSA specific */
723 case PKCS8_NS_DB: /* DSA specific */
724 case PKCS8_EMBEDDED_PARAM: /* DSA specific */
725 default:
726 EVPerr(EVP_F_ECKEY_PKEY2PKCS8,EVP_R_ENCODE_ERROR);
727 }
728 OPENSSL_cleanse(p, (size_t)i);
729 OPENSSL_free(p);
730 return ret;
731}
732#endif
733
734/* EVP_PKEY attribute functions */ 182/* EVP_PKEY attribute functions */
735 183
736int EVP_PKEY_get_attr_count(const EVP_PKEY *key) 184int EVP_PKEY_get_attr_count(const EVP_PKEY *key)
diff --git a/src/lib/libssl/src/crypto/evp/evp_test.c b/src/lib/libssl/src/crypto/evp/evp_test.c
index 436be20bf1..902efac975 100644
--- a/src/lib/libssl/src/crypto/evp/evp_test.c
+++ b/src/lib/libssl/src/crypto/evp/evp_test.c
@@ -153,8 +153,8 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
153 153
154 if(kn != c->key_len) 154 if(kn != c->key_len)
155 { 155 {
156 fprintf(stderr,"Key length doesn't match, got %d expected %d\n",kn, 156 fprintf(stderr,"Key length doesn't match, got %d expected %lu\n",kn,
157 c->key_len); 157 (unsigned long)c->key_len);
158 test1_exit(5); 158 test1_exit(5);
159 } 159 }
160 EVP_CIPHER_CTX_init(&ctx); 160 EVP_CIPHER_CTX_init(&ctx);
@@ -441,7 +441,7 @@ int main(int argc,char **argv)
441#endif 441#endif
442 EVP_cleanup(); 442 EVP_cleanup();
443 CRYPTO_cleanup_all_ex_data(); 443 CRYPTO_cleanup_all_ex_data();
444 ERR_remove_state(0); 444 ERR_remove_thread_state(NULL);
445 ERR_free_strings(); 445 ERR_free_strings();
446 CRYPTO_mem_leaks_fp(stderr); 446 CRYPTO_mem_leaks_fp(stderr);
447 447
diff --git a/src/lib/libssl/src/crypto/evp/m_dss.c b/src/lib/libssl/src/crypto/evp/m_dss.c
index 6b0c0aa7a3..48c2689504 100644
--- a/src/lib/libssl/src/crypto/evp/m_dss.c
+++ b/src/lib/libssl/src/crypto/evp/m_dss.c
@@ -81,7 +81,7 @@ static const EVP_MD dsa_md=
81 NID_dsaWithSHA, 81 NID_dsaWithSHA,
82 NID_dsaWithSHA, 82 NID_dsaWithSHA,
83 SHA_DIGEST_LENGTH, 83 SHA_DIGEST_LENGTH,
84 EVP_MD_FLAG_FIPS, 84 EVP_MD_FLAG_PKEY_DIGEST,
85 init, 85 init,
86 update, 86 update,
87 final, 87 final,
diff --git a/src/lib/libssl/src/crypto/evp/m_dss1.c b/src/lib/libssl/src/crypto/evp/m_dss1.c
index da8babc147..4f03fb70e0 100644
--- a/src/lib/libssl/src/crypto/evp/m_dss1.c
+++ b/src/lib/libssl/src/crypto/evp/m_dss1.c
@@ -68,8 +68,6 @@
68#include <openssl/dsa.h> 68#include <openssl/dsa.h>
69#endif 69#endif
70 70
71#ifndef OPENSSL_FIPS
72
73static int init(EVP_MD_CTX *ctx) 71static int init(EVP_MD_CTX *ctx)
74 { return SHA1_Init(ctx->md_data); } 72 { return SHA1_Init(ctx->md_data); }
75 73
@@ -84,7 +82,7 @@ static const EVP_MD dss1_md=
84 NID_dsa, 82 NID_dsa,
85 NID_dsaWithSHA1, 83 NID_dsaWithSHA1,
86 SHA_DIGEST_LENGTH, 84 SHA_DIGEST_LENGTH,
87 0, 85 EVP_MD_FLAG_PKEY_DIGEST,
88 init, 86 init,
89 update, 87 update,
90 final, 88 final,
@@ -100,4 +98,3 @@ const EVP_MD *EVP_dss1(void)
100 return(&dss1_md); 98 return(&dss1_md);
101 } 99 }
102#endif 100#endif
103#endif
diff --git a/src/lib/libssl/src/crypto/evp/m_md2.c b/src/lib/libssl/src/crypto/evp/m_md2.c
index 8eee6236ba..5ce849f161 100644
--- a/src/lib/libssl/src/crypto/evp/m_md2.c
+++ b/src/lib/libssl/src/crypto/evp/m_md2.c
@@ -58,7 +58,6 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "evp_locl.h"
62 61
63#ifndef OPENSSL_NO_MD2 62#ifndef OPENSSL_NO_MD2
64 63
diff --git a/src/lib/libssl/src/crypto/evp/m_md4.c b/src/lib/libssl/src/crypto/evp/m_md4.c
index 5cd2ab5ade..1e0b7c5b42 100644
--- a/src/lib/libssl/src/crypto/evp/m_md4.c
+++ b/src/lib/libssl/src/crypto/evp/m_md4.c
@@ -58,7 +58,6 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "evp_locl.h"
62 61
63#ifndef OPENSSL_NO_MD4 62#ifndef OPENSSL_NO_MD4
64 63
diff --git a/src/lib/libssl/src/crypto/evp/m_md5.c b/src/lib/libssl/src/crypto/evp/m_md5.c
index 6455829671..63c142119e 100644
--- a/src/lib/libssl/src/crypto/evp/m_md5.c
+++ b/src/lib/libssl/src/crypto/evp/m_md5.c
@@ -62,7 +62,6 @@
62#ifndef OPENSSL_NO_MD5 62#ifndef OPENSSL_NO_MD5
63 63
64#include <openssl/evp.h> 64#include <openssl/evp.h>
65#include "evp_locl.h"
66#include <openssl/objects.h> 65#include <openssl/objects.h>
67#include <openssl/x509.h> 66#include <openssl/x509.h>
68#include <openssl/md5.h> 67#include <openssl/md5.h>
diff --git a/src/lib/libssl/src/crypto/evp/m_mdc2.c b/src/lib/libssl/src/crypto/evp/m_mdc2.c
index 9f9bcf06ed..b08d559803 100644
--- a/src/lib/libssl/src/crypto/evp/m_mdc2.c
+++ b/src/lib/libssl/src/crypto/evp/m_mdc2.c
@@ -58,7 +58,6 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "evp_locl.h"
62 61
63#ifndef OPENSSL_NO_MDC2 62#ifndef OPENSSL_NO_MDC2
64 63
@@ -66,7 +65,9 @@
66#include <openssl/objects.h> 65#include <openssl/objects.h>
67#include <openssl/x509.h> 66#include <openssl/x509.h>
68#include <openssl/mdc2.h> 67#include <openssl/mdc2.h>
68#ifndef OPENSSL_NO_RSA
69#include <openssl/rsa.h> 69#include <openssl/rsa.h>
70#endif
70 71
71static int init(EVP_MD_CTX *ctx) 72static int init(EVP_MD_CTX *ctx)
72 { return MDC2_Init(ctx->md_data); } 73 { return MDC2_Init(ctx->md_data); }
diff --git a/src/lib/libssl/src/crypto/evp/m_sha.c b/src/lib/libssl/src/crypto/evp/m_sha.c
index 3f30dfc579..acccc8f92d 100644
--- a/src/lib/libssl/src/crypto/evp/m_sha.c
+++ b/src/lib/libssl/src/crypto/evp/m_sha.c
@@ -58,7 +58,6 @@
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include "evp_locl.h"
62 61
63#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA0) 62#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA0)
64 63
diff --git a/src/lib/libssl/src/crypto/evp/m_sha1.c b/src/lib/libssl/src/crypto/evp/m_sha1.c
index 471ec30be0..9a2790fdea 100644
--- a/src/lib/libssl/src/crypto/evp/m_sha1.c
+++ b/src/lib/libssl/src/crypto/evp/m_sha1.c
@@ -68,8 +68,6 @@
68#include <openssl/rsa.h> 68#include <openssl/rsa.h>
69#endif 69#endif
70 70
71#ifndef OPENSSL_FIPS
72
73static int init(EVP_MD_CTX *ctx) 71static int init(EVP_MD_CTX *ctx)
74 { return SHA1_Init(ctx->md_data); } 72 { return SHA1_Init(ctx->md_data); }
75 73
@@ -84,7 +82,7 @@ static const EVP_MD sha1_md=
84 NID_sha1, 82 NID_sha1,
85 NID_sha1WithRSAEncryption, 83 NID_sha1WithRSAEncryption,
86 SHA_DIGEST_LENGTH, 84 SHA_DIGEST_LENGTH,
87 0, 85 EVP_MD_FLAG_PKEY_METHOD_SIGNATURE|EVP_MD_FLAG_DIGALGID_ABSENT,
88 init, 86 init,
89 update, 87 update,
90 final, 88 final,
@@ -99,6 +97,7 @@ const EVP_MD *EVP_sha1(void)
99 { 97 {
100 return(&sha1_md); 98 return(&sha1_md);
101 } 99 }
100#endif
102 101
103#ifndef OPENSSL_NO_SHA256 102#ifndef OPENSSL_NO_SHA256
104static int init224(EVP_MD_CTX *ctx) 103static int init224(EVP_MD_CTX *ctx)
@@ -120,7 +119,7 @@ static const EVP_MD sha224_md=
120 NID_sha224, 119 NID_sha224,
121 NID_sha224WithRSAEncryption, 120 NID_sha224WithRSAEncryption,
122 SHA224_DIGEST_LENGTH, 121 SHA224_DIGEST_LENGTH,
123 0, 122 EVP_MD_FLAG_PKEY_METHOD_SIGNATURE|EVP_MD_FLAG_DIGALGID_ABSENT,
124 init224, 123 init224,
125 update256, 124 update256,
126 final256, 125 final256,
@@ -139,7 +138,7 @@ static const EVP_MD sha256_md=
139 NID_sha256, 138 NID_sha256,
140 NID_sha256WithRSAEncryption, 139 NID_sha256WithRSAEncryption,
141 SHA256_DIGEST_LENGTH, 140 SHA256_DIGEST_LENGTH,
142 0, 141 EVP_MD_FLAG_PKEY_METHOD_SIGNATURE|EVP_MD_FLAG_DIGALGID_ABSENT,
143 init256, 142 init256,
144 update256, 143 update256,
145 final256, 144 final256,
@@ -170,7 +169,7 @@ static const EVP_MD sha384_md=
170 NID_sha384, 169 NID_sha384,
171 NID_sha384WithRSAEncryption, 170 NID_sha384WithRSAEncryption,
172 SHA384_DIGEST_LENGTH, 171 SHA384_DIGEST_LENGTH,
173 0, 172 EVP_MD_FLAG_PKEY_METHOD_SIGNATURE|EVP_MD_FLAG_DIGALGID_ABSENT,
174 init384, 173 init384,
175 update512, 174 update512,
176 final512, 175 final512,
@@ -189,7 +188,7 @@ static const EVP_MD sha512_md=
189 NID_sha512, 188 NID_sha512,
190 NID_sha512WithRSAEncryption, 189 NID_sha512WithRSAEncryption,
191 SHA512_DIGEST_LENGTH, 190 SHA512_DIGEST_LENGTH,
192 0, 191 EVP_MD_FLAG_PKEY_METHOD_SIGNATURE|EVP_MD_FLAG_DIGALGID_ABSENT,
193 init512, 192 init512,
194 update512, 193 update512,
195 final512, 194 final512,
@@ -203,7 +202,3 @@ static const EVP_MD sha512_md=
203const EVP_MD *EVP_sha512(void) 202const EVP_MD *EVP_sha512(void)
204 { return(&sha512_md); } 203 { return(&sha512_md); }
205#endif /* ifndef OPENSSL_NO_SHA512 */ 204#endif /* ifndef OPENSSL_NO_SHA512 */
206
207#endif
208
209#endif
diff --git a/src/lib/libssl/src/crypto/evp/names.c b/src/lib/libssl/src/crypto/evp/names.c
index e2e04c3570..f2869f5c78 100644
--- a/src/lib/libssl/src/crypto/evp/names.c
+++ b/src/lib/libssl/src/crypto/evp/names.c
@@ -66,35 +66,32 @@ int EVP_add_cipher(const EVP_CIPHER *c)
66 { 66 {
67 int r; 67 int r;
68 68
69#ifdef OPENSSL_FIPS
70 OPENSSL_init();
71#endif
72
73 r=OBJ_NAME_add(OBJ_nid2sn(c->nid),OBJ_NAME_TYPE_CIPHER_METH,(const char *)c); 69 r=OBJ_NAME_add(OBJ_nid2sn(c->nid),OBJ_NAME_TYPE_CIPHER_METH,(const char *)c);
74 if (r == 0) return(0); 70 if (r == 0) return(0);
71 check_defer(c->nid);
75 r=OBJ_NAME_add(OBJ_nid2ln(c->nid),OBJ_NAME_TYPE_CIPHER_METH,(const char *)c); 72 r=OBJ_NAME_add(OBJ_nid2ln(c->nid),OBJ_NAME_TYPE_CIPHER_METH,(const char *)c);
76 return(r); 73 return(r);
77 } 74 }
78 75
76
79int EVP_add_digest(const EVP_MD *md) 77int EVP_add_digest(const EVP_MD *md)
80 { 78 {
81 int r; 79 int r;
82 const char *name; 80 const char *name;
83 81
84#ifdef OPENSSL_FIPS
85 OPENSSL_init();
86#endif
87 name=OBJ_nid2sn(md->type); 82 name=OBJ_nid2sn(md->type);
88 r=OBJ_NAME_add(name,OBJ_NAME_TYPE_MD_METH,(const char *)md); 83 r=OBJ_NAME_add(name,OBJ_NAME_TYPE_MD_METH,(const char *)md);
89 if (r == 0) return(0); 84 if (r == 0) return(0);
85 check_defer(md->type);
90 r=OBJ_NAME_add(OBJ_nid2ln(md->type),OBJ_NAME_TYPE_MD_METH,(const char *)md); 86 r=OBJ_NAME_add(OBJ_nid2ln(md->type),OBJ_NAME_TYPE_MD_METH,(const char *)md);
91 if (r == 0) return(0); 87 if (r == 0) return(0);
92 88
93 if (md->type != md->pkey_type) 89 if (md->pkey_type && md->type != md->pkey_type)
94 { 90 {
95 r=OBJ_NAME_add(OBJ_nid2sn(md->pkey_type), 91 r=OBJ_NAME_add(OBJ_nid2sn(md->pkey_type),
96 OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,name); 92 OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,name);
97 if (r == 0) return(0); 93 if (r == 0) return(0);
94 check_defer(md->pkey_type);
98 r=OBJ_NAME_add(OBJ_nid2ln(md->pkey_type), 95 r=OBJ_NAME_add(OBJ_nid2ln(md->pkey_type),
99 OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,name); 96 OBJ_NAME_TYPE_MD_METH|OBJ_NAME_ALIAS,name);
100 } 97 }
@@ -127,4 +124,78 @@ void EVP_cleanup(void)
127 OBJ_NAME_cleanup(-1); 124 OBJ_NAME_cleanup(-1);
128 125
129 EVP_PBE_cleanup(); 126 EVP_PBE_cleanup();
127 if (obj_cleanup_defer == 2)
128 {
129 obj_cleanup_defer = 0;
130 OBJ_cleanup();
131 }
132 OBJ_sigid_free();
133 }
134
135struct doall_cipher
136 {
137 void *arg;
138 void (*fn)(const EVP_CIPHER *ciph,
139 const char *from, const char *to, void *arg);
140 };
141
142static void do_all_cipher_fn(const OBJ_NAME *nm, void *arg)
143 {
144 struct doall_cipher *dc = arg;
145 if (nm->alias)
146 dc->fn(NULL, nm->name, nm->data, dc->arg);
147 else
148 dc->fn((const EVP_CIPHER *)nm->data, nm->name, NULL, dc->arg);
149 }
150
151void EVP_CIPHER_do_all(void (*fn)(const EVP_CIPHER *ciph,
152 const char *from, const char *to, void *x), void *arg)
153 {
154 struct doall_cipher dc;
155 dc.fn = fn;
156 dc.arg = arg;
157 OBJ_NAME_do_all(OBJ_NAME_TYPE_CIPHER_METH, do_all_cipher_fn, &dc);
158 }
159
160void EVP_CIPHER_do_all_sorted(void (*fn)(const EVP_CIPHER *ciph,
161 const char *from, const char *to, void *x), void *arg)
162 {
163 struct doall_cipher dc;
164 dc.fn = fn;
165 dc.arg = arg;
166 OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_CIPHER_METH, do_all_cipher_fn,&dc);
167 }
168
169struct doall_md
170 {
171 void *arg;
172 void (*fn)(const EVP_MD *ciph,
173 const char *from, const char *to, void *arg);
174 };
175
176static void do_all_md_fn(const OBJ_NAME *nm, void *arg)
177 {
178 struct doall_md *dc = arg;
179 if (nm->alias)
180 dc->fn(NULL, nm->name, nm->data, dc->arg);
181 else
182 dc->fn((const EVP_MD *)nm->data, nm->name, NULL, dc->arg);
183 }
184
185void EVP_MD_do_all(void (*fn)(const EVP_MD *md,
186 const char *from, const char *to, void *x), void *arg)
187 {
188 struct doall_md dc;
189 dc.fn = fn;
190 dc.arg = arg;
191 OBJ_NAME_do_all(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc);
192 }
193
194void EVP_MD_do_all_sorted(void (*fn)(const EVP_MD *md,
195 const char *from, const char *to, void *x), void *arg)
196 {
197 struct doall_md dc;
198 dc.fn = fn;
199 dc.arg = arg;
200 OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_MD_METH, do_all_md_fn, &dc);
130 } 201 }
diff --git a/src/lib/libssl/src/crypto/evp/p5_crpt.c b/src/lib/libssl/src/crypto/evp/p5_crpt.c
index 2a265fdee2..7ecfa8dad9 100644
--- a/src/lib/libssl/src/crypto/evp/p5_crpt.c
+++ b/src/lib/libssl/src/crypto/evp/p5_crpt.c
@@ -62,42 +62,11 @@
62#include <openssl/x509.h> 62#include <openssl/x509.h>
63#include <openssl/evp.h> 63#include <openssl/evp.h>
64 64
65/* PKCS#5 v1.5 compatible PBE functions: see PKCS#5 v2.0 for more info. 65/* Doesn't do anything now: Builtin PBE algorithms in static table.
66 */ 66 */
67 67
68void PKCS5_PBE_add(void) 68void PKCS5_PBE_add(void)
69{ 69{
70#ifndef OPENSSL_NO_DES
71# ifndef OPENSSL_NO_MD5
72EVP_PBE_alg_add(NID_pbeWithMD5AndDES_CBC, EVP_des_cbc(), EVP_md5(),
73 PKCS5_PBE_keyivgen);
74# endif
75# ifndef OPENSSL_NO_MD2
76EVP_PBE_alg_add(NID_pbeWithMD2AndDES_CBC, EVP_des_cbc(), EVP_md2(),
77 PKCS5_PBE_keyivgen);
78# endif
79# ifndef OPENSSL_NO_SHA
80EVP_PBE_alg_add(NID_pbeWithSHA1AndDES_CBC, EVP_des_cbc(), EVP_sha1(),
81 PKCS5_PBE_keyivgen);
82# endif
83#endif
84#ifndef OPENSSL_NO_RC2
85# ifndef OPENSSL_NO_MD5
86EVP_PBE_alg_add(NID_pbeWithMD5AndRC2_CBC, EVP_rc2_64_cbc(), EVP_md5(),
87 PKCS5_PBE_keyivgen);
88# endif
89# ifndef OPENSSL_NO_MD2
90EVP_PBE_alg_add(NID_pbeWithMD2AndRC2_CBC, EVP_rc2_64_cbc(), EVP_md2(),
91 PKCS5_PBE_keyivgen);
92# endif
93# ifndef OPENSSL_NO_SHA
94EVP_PBE_alg_add(NID_pbeWithSHA1AndRC2_CBC, EVP_rc2_64_cbc(), EVP_sha1(),
95 PKCS5_PBE_keyivgen);
96# endif
97#endif
98#ifndef OPENSSL_NO_HMAC
99EVP_PBE_alg_add(NID_pbes2, NULL, NULL, PKCS5_v2_PBE_keyivgen);
100#endif
101} 70}
102 71
103int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen, 72int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen,
@@ -112,6 +81,7 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen,
112 int saltlen, iter; 81 int saltlen, iter;
113 unsigned char *salt; 82 unsigned char *salt;
114 const unsigned char *pbuf; 83 const unsigned char *pbuf;
84 int mdsize;
115 85
116 /* Extract useful info from parameter */ 86 /* Extract useful info from parameter */
117 if (param == NULL || param->type != V_ASN1_SEQUENCE || 87 if (param == NULL || param->type != V_ASN1_SEQUENCE ||
@@ -140,9 +110,12 @@ int PKCS5_PBE_keyivgen(EVP_CIPHER_CTX *cctx, const char *pass, int passlen,
140 EVP_DigestUpdate(&ctx, salt, saltlen); 110 EVP_DigestUpdate(&ctx, salt, saltlen);
141 PBEPARAM_free(pbe); 111 PBEPARAM_free(pbe);
142 EVP_DigestFinal_ex(&ctx, md_tmp, NULL); 112 EVP_DigestFinal_ex(&ctx, md_tmp, NULL);
113 mdsize = EVP_MD_size(md);
114 if (mdsize < 0)
115 return 0;
143 for (i = 1; i < iter; i++) { 116 for (i = 1; i < iter; i++) {
144 EVP_DigestInit_ex(&ctx, md, NULL); 117 EVP_DigestInit_ex(&ctx, md, NULL);
145 EVP_DigestUpdate(&ctx, md_tmp, EVP_MD_size(md)); 118 EVP_DigestUpdate(&ctx, md_tmp, mdsize);
146 EVP_DigestFinal_ex (&ctx, md_tmp, NULL); 119 EVP_DigestFinal_ex (&ctx, md_tmp, NULL);
147 } 120 }
148 EVP_MD_CTX_cleanup(&ctx); 121 EVP_MD_CTX_cleanup(&ctx);
diff --git a/src/lib/libssl/src/crypto/evp/p5_crpt2.c b/src/lib/libssl/src/crypto/evp/p5_crpt2.c
index 6bec77baf9..334379f310 100644
--- a/src/lib/libssl/src/crypto/evp/p5_crpt2.c
+++ b/src/lib/libssl/src/crypto/evp/p5_crpt2.c
@@ -3,7 +3,7 @@
3 * project 1999. 3 * project 1999.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -71,28 +71,38 @@
71#endif 71#endif
72 72
73/* This is an implementation of PKCS#5 v2.0 password based encryption key 73/* This is an implementation of PKCS#5 v2.0 password based encryption key
74 * derivation function PBKDF2 using the only currently defined function HMAC 74 * derivation function PBKDF2.
75 * with SHA1. Verified against test vectors posted by Peter Gutmann 75 * SHA1 version verified against test vectors posted by Peter Gutmann
76 * <pgut001@cs.auckland.ac.nz> to the PKCS-TNG <pkcs-tng@rsa.com> mailing list. 76 * <pgut001@cs.auckland.ac.nz> to the PKCS-TNG <pkcs-tng@rsa.com> mailing list.
77 */ 77 */
78 78
79int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen, 79int PKCS5_PBKDF2_HMAC(const char *pass, int passlen,
80 const unsigned char *salt, int saltlen, int iter, 80 const unsigned char *salt, int saltlen, int iter,
81 const EVP_MD *digest,
81 int keylen, unsigned char *out) 82 int keylen, unsigned char *out)
82{ 83 {
83 unsigned char digtmp[SHA_DIGEST_LENGTH], *p, itmp[4]; 84 unsigned char digtmp[EVP_MAX_MD_SIZE], *p, itmp[4];
84 int cplen, j, k, tkeylen; 85 int cplen, j, k, tkeylen, mdlen;
85 unsigned long i = 1; 86 unsigned long i = 1;
86 HMAC_CTX hctx; 87 HMAC_CTX hctx;
87 88
89 mdlen = EVP_MD_size(digest);
90 if (mdlen < 0)
91 return 0;
92
88 HMAC_CTX_init(&hctx); 93 HMAC_CTX_init(&hctx);
89 p = out; 94 p = out;
90 tkeylen = keylen; 95 tkeylen = keylen;
91 if(!pass) passlen = 0; 96 if(!pass)
92 else if(passlen == -1) passlen = strlen(pass); 97 passlen = 0;
93 while(tkeylen) { 98 else if(passlen == -1)
94 if(tkeylen > SHA_DIGEST_LENGTH) cplen = SHA_DIGEST_LENGTH; 99 passlen = strlen(pass);
95 else cplen = tkeylen; 100 while(tkeylen)
101 {
102 if(tkeylen > mdlen)
103 cplen = mdlen;
104 else
105 cplen = tkeylen;
96 /* We are unlikely to ever use more than 256 blocks (5120 bits!) 106 /* We are unlikely to ever use more than 256 blocks (5120 bits!)
97 * but just in case... 107 * but just in case...
98 */ 108 */
@@ -100,20 +110,22 @@ int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
100 itmp[1] = (unsigned char)((i >> 16) & 0xff); 110 itmp[1] = (unsigned char)((i >> 16) & 0xff);
101 itmp[2] = (unsigned char)((i >> 8) & 0xff); 111 itmp[2] = (unsigned char)((i >> 8) & 0xff);
102 itmp[3] = (unsigned char)(i & 0xff); 112 itmp[3] = (unsigned char)(i & 0xff);
103 HMAC_Init_ex(&hctx, pass, passlen, EVP_sha1(), NULL); 113 HMAC_Init_ex(&hctx, pass, passlen, digest, NULL);
104 HMAC_Update(&hctx, salt, saltlen); 114 HMAC_Update(&hctx, salt, saltlen);
105 HMAC_Update(&hctx, itmp, 4); 115 HMAC_Update(&hctx, itmp, 4);
106 HMAC_Final(&hctx, digtmp, NULL); 116 HMAC_Final(&hctx, digtmp, NULL);
107 memcpy(p, digtmp, cplen); 117 memcpy(p, digtmp, cplen);
108 for(j = 1; j < iter; j++) { 118 for(j = 1; j < iter; j++)
109 HMAC(EVP_sha1(), pass, passlen, 119 {
110 digtmp, SHA_DIGEST_LENGTH, digtmp, NULL); 120 HMAC(digest, pass, passlen,
111 for(k = 0; k < cplen; k++) p[k] ^= digtmp[k]; 121 digtmp, mdlen, digtmp, NULL);
112 } 122 for(k = 0; k < cplen; k++)
123 p[k] ^= digtmp[k];
124 }
113 tkeylen-= cplen; 125 tkeylen-= cplen;
114 i++; 126 i++;
115 p+= cplen; 127 p+= cplen;
116 } 128 }
117 HMAC_CTX_cleanup(&hctx); 129 HMAC_CTX_cleanup(&hctx);
118#ifdef DEBUG_PKCS5V2 130#ifdef DEBUG_PKCS5V2
119 fprintf(stderr, "Password:\n"); 131 fprintf(stderr, "Password:\n");
@@ -125,7 +137,15 @@ int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
125 h__dump (out, keylen); 137 h__dump (out, keylen);
126#endif 138#endif
127 return 1; 139 return 1;
128} 140 }
141
142int PKCS5_PBKDF2_HMAC_SHA1(const char *pass, int passlen,
143 const unsigned char *salt, int saltlen, int iter,
144 int keylen, unsigned char *out)
145 {
146 return PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, iter, EVP_sha1(),
147 keylen, out);
148 }
129 149
130#ifdef DO_TEST 150#ifdef DO_TEST
131main() 151main()
@@ -155,6 +175,8 @@ int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
155 PBE2PARAM *pbe2 = NULL; 175 PBE2PARAM *pbe2 = NULL;
156 const EVP_CIPHER *cipher; 176 const EVP_CIPHER *cipher;
157 PBKDF2PARAM *kdf = NULL; 177 PBKDF2PARAM *kdf = NULL;
178 const EVP_MD *prfmd;
179 int prf_nid, hmac_md_nid;
158 180
159 if (param == NULL || param->type != V_ASN1_SEQUENCE || 181 if (param == NULL || param->type != V_ASN1_SEQUENCE ||
160 param->value.sequence == NULL) { 182 param->value.sequence == NULL) {
@@ -180,8 +202,7 @@ int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
180 /* lets see if we recognise the encryption algorithm. 202 /* lets see if we recognise the encryption algorithm.
181 */ 203 */
182 204
183 cipher = EVP_get_cipherbyname( 205 cipher = EVP_get_cipherbyobj(pbe2->encryption->algorithm);
184 OBJ_nid2sn(OBJ_obj2nid(pbe2->encryption->algorithm)));
185 206
186 if(!cipher) { 207 if(!cipher) {
187 EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN, 208 EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN,
@@ -226,10 +247,23 @@ int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
226 goto err; 247 goto err;
227 } 248 }
228 249
229 if(kdf->prf && (OBJ_obj2nid(kdf->prf->algorithm) != NID_hmacWithSHA1)) { 250 if (kdf->prf)
251 prf_nid = OBJ_obj2nid(kdf->prf->algorithm);
252 else
253 prf_nid = NID_hmacWithSHA1;
254
255 if (!EVP_PBE_find(EVP_PBE_TYPE_PRF, prf_nid, NULL, &hmac_md_nid, 0))
256 {
230 EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN, EVP_R_UNSUPPORTED_PRF); 257 EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN, EVP_R_UNSUPPORTED_PRF);
231 goto err; 258 goto err;
232 } 259 }
260
261 prfmd = EVP_get_digestbynid(hmac_md_nid);
262 if (prfmd == NULL)
263 {
264 EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN, EVP_R_UNSUPPORTED_PRF);
265 goto err;
266 }
233 267
234 if(kdf->salt->type != V_ASN1_OCTET_STRING) { 268 if(kdf->salt->type != V_ASN1_OCTET_STRING) {
235 EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN, 269 EVPerr(EVP_F_PKCS5_V2_PBE_KEYIVGEN,
@@ -241,7 +275,9 @@ int PKCS5_v2_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
241 salt = kdf->salt->value.octet_string->data; 275 salt = kdf->salt->value.octet_string->data;
242 saltlen = kdf->salt->value.octet_string->length; 276 saltlen = kdf->salt->value.octet_string->length;
243 iter = ASN1_INTEGER_get(kdf->iter); 277 iter = ASN1_INTEGER_get(kdf->iter);
244 PKCS5_PBKDF2_HMAC_SHA1(pass, passlen, salt, saltlen, iter, keylen, key); 278 if(!PKCS5_PBKDF2_HMAC(pass, passlen, salt, saltlen, iter, prfmd,
279 keylen, key))
280 goto err;
245 EVP_CipherInit_ex(ctx, NULL, NULL, key, NULL, en_de); 281 EVP_CipherInit_ex(ctx, NULL, NULL, key, NULL, en_de);
246 OPENSSL_cleanse(key, keylen); 282 OPENSSL_cleanse(key, keylen);
247 PBKDF2PARAM_free(kdf); 283 PBKDF2PARAM_free(kdf);
diff --git a/src/lib/libssl/src/crypto/evp/p_dec.c b/src/lib/libssl/src/crypto/evp/p_dec.c
index f64901f653..4201dcbad9 100644
--- a/src/lib/libssl/src/crypto/evp/p_dec.c
+++ b/src/lib/libssl/src/crypto/evp/p_dec.c
@@ -66,7 +66,7 @@
66#include <openssl/objects.h> 66#include <openssl/objects.h>
67#include <openssl/x509.h> 67#include <openssl/x509.h>
68 68
69int EVP_PKEY_decrypt(unsigned char *key, const unsigned char *ek, int ekl, 69int EVP_PKEY_decrypt_old(unsigned char *key, const unsigned char *ek, int ekl,
70 EVP_PKEY *priv) 70 EVP_PKEY *priv)
71 { 71 {
72 int ret= -1; 72 int ret= -1;
@@ -75,7 +75,7 @@ int EVP_PKEY_decrypt(unsigned char *key, const unsigned char *ek, int ekl,
75 if (priv->type != EVP_PKEY_RSA) 75 if (priv->type != EVP_PKEY_RSA)
76 { 76 {
77#endif 77#endif
78 EVPerr(EVP_F_EVP_PKEY_DECRYPT,EVP_R_PUBLIC_KEY_NOT_RSA); 78 EVPerr(EVP_F_EVP_PKEY_DECRYPT_OLD,EVP_R_PUBLIC_KEY_NOT_RSA);
79#ifndef OPENSSL_NO_RSA 79#ifndef OPENSSL_NO_RSA
80 goto err; 80 goto err;
81 } 81 }
diff --git a/src/lib/libssl/src/crypto/evp/p_enc.c b/src/lib/libssl/src/crypto/evp/p_enc.c
index c2dfdc52ad..b5a3a84c41 100644
--- a/src/lib/libssl/src/crypto/evp/p_enc.c
+++ b/src/lib/libssl/src/crypto/evp/p_enc.c
@@ -66,7 +66,7 @@
66#include <openssl/objects.h> 66#include <openssl/objects.h>
67#include <openssl/x509.h> 67#include <openssl/x509.h>
68 68
69int EVP_PKEY_encrypt(unsigned char *ek, const unsigned char *key, int key_len, 69int EVP_PKEY_encrypt_old(unsigned char *ek, const unsigned char *key, int key_len,
70 EVP_PKEY *pubk) 70 EVP_PKEY *pubk)
71 { 71 {
72 int ret=0; 72 int ret=0;
@@ -75,7 +75,7 @@ int EVP_PKEY_encrypt(unsigned char *ek, const unsigned char *key, int key_len,
75 if (pubk->type != EVP_PKEY_RSA) 75 if (pubk->type != EVP_PKEY_RSA)
76 { 76 {
77#endif 77#endif
78 EVPerr(EVP_F_EVP_PKEY_ENCRYPT,EVP_R_PUBLIC_KEY_NOT_RSA); 78 EVPerr(EVP_F_EVP_PKEY_ENCRYPT_OLD,EVP_R_PUBLIC_KEY_NOT_RSA);
79#ifndef OPENSSL_NO_RSA 79#ifndef OPENSSL_NO_RSA
80 goto err; 80 goto err;
81 } 81 }
diff --git a/src/lib/libssl/src/crypto/evp/p_lib.c b/src/lib/libssl/src/crypto/evp/p_lib.c
index 22155ecf62..1916c61699 100644
--- a/src/lib/libssl/src/crypto/evp/p_lib.c
+++ b/src/lib/libssl/src/crypto/evp/p_lib.c
@@ -74,66 +74,26 @@
74#include <openssl/dh.h> 74#include <openssl/dh.h>
75#endif 75#endif
76 76
77#ifndef OPENSSL_NO_ENGINE
78#include <openssl/engine.h>
79#endif
80
81#include "asn1_locl.h"
82
77static void EVP_PKEY_free_it(EVP_PKEY *x); 83static void EVP_PKEY_free_it(EVP_PKEY *x);
78 84
79int EVP_PKEY_bits(EVP_PKEY *pkey) 85int EVP_PKEY_bits(EVP_PKEY *pkey)
80 { 86 {
81 if (0) 87 if (pkey && pkey->ameth && pkey->ameth->pkey_bits)
82 return 0; 88 return pkey->ameth->pkey_bits(pkey);
83#ifndef OPENSSL_NO_RSA 89 return 0;
84 else if (pkey->type == EVP_PKEY_RSA)
85 return(BN_num_bits(pkey->pkey.rsa->n));
86#endif
87#ifndef OPENSSL_NO_DSA
88 else if (pkey->type == EVP_PKEY_DSA)
89 return(BN_num_bits(pkey->pkey.dsa->p));
90#endif
91#ifndef OPENSSL_NO_EC
92 else if (pkey->type == EVP_PKEY_EC)
93 {
94 BIGNUM *order = BN_new();
95 const EC_GROUP *group;
96 int ret;
97
98 if (!order)
99 {
100 ERR_clear_error();
101 return 0;
102 }
103 group = EC_KEY_get0_group(pkey->pkey.ec);
104 if (!EC_GROUP_get_order(group, order, NULL))
105 {
106 ERR_clear_error();
107 return 0;
108 }
109
110 ret = BN_num_bits(order);
111 BN_free(order);
112 return ret;
113 }
114#endif
115 return(0);
116 } 90 }
117 91
118int EVP_PKEY_size(EVP_PKEY *pkey) 92int EVP_PKEY_size(EVP_PKEY *pkey)
119 { 93 {
120 if (pkey == NULL) 94 if (pkey && pkey->ameth && pkey->ameth->pkey_size)
121 return(0); 95 return pkey->ameth->pkey_size(pkey);
122#ifndef OPENSSL_NO_RSA 96 return 0;
123 if (pkey->type == EVP_PKEY_RSA)
124 return(RSA_size(pkey->pkey.rsa));
125 else
126#endif
127#ifndef OPENSSL_NO_DSA
128 if (pkey->type == EVP_PKEY_DSA)
129 return(DSA_size(pkey->pkey.dsa));
130#endif
131#ifndef OPENSSL_NO_ECDSA
132 if (pkey->type == EVP_PKEY_EC)
133 return(ECDSA_size(pkey->pkey.ec));
134#endif
135
136 return(0);
137 } 97 }
138 98
139int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode) 99int EVP_PKEY_save_parameters(EVP_PKEY *pkey, int mode)
@@ -174,88 +134,26 @@ int EVP_PKEY_copy_parameters(EVP_PKEY *to, const EVP_PKEY *from)
174 EVPerr(EVP_F_EVP_PKEY_COPY_PARAMETERS,EVP_R_MISSING_PARAMETERS); 134 EVPerr(EVP_F_EVP_PKEY_COPY_PARAMETERS,EVP_R_MISSING_PARAMETERS);
175 goto err; 135 goto err;
176 } 136 }
177#ifndef OPENSSL_NO_DSA 137 if (from->ameth && from->ameth->param_copy)
178 if (to->type == EVP_PKEY_DSA) 138 return from->ameth->param_copy(to, from);
179 {
180 BIGNUM *a;
181
182 if ((a=BN_dup(from->pkey.dsa->p)) == NULL) goto err;
183 if (to->pkey.dsa->p != NULL) BN_free(to->pkey.dsa->p);
184 to->pkey.dsa->p=a;
185
186 if ((a=BN_dup(from->pkey.dsa->q)) == NULL) goto err;
187 if (to->pkey.dsa->q != NULL) BN_free(to->pkey.dsa->q);
188 to->pkey.dsa->q=a;
189
190 if ((a=BN_dup(from->pkey.dsa->g)) == NULL) goto err;
191 if (to->pkey.dsa->g != NULL) BN_free(to->pkey.dsa->g);
192 to->pkey.dsa->g=a;
193 }
194#endif
195#ifndef OPENSSL_NO_EC
196 if (to->type == EVP_PKEY_EC)
197 {
198 EC_GROUP *group = EC_GROUP_dup(EC_KEY_get0_group(from->pkey.ec));
199 if (group == NULL)
200 goto err;
201 if (EC_KEY_set_group(to->pkey.ec, group) == 0)
202 goto err;
203 EC_GROUP_free(group);
204 }
205#endif
206 return(1);
207err: 139err:
208 return(0); 140 return 0;
209 } 141 }
210 142
211int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey) 143int EVP_PKEY_missing_parameters(const EVP_PKEY *pkey)
212 { 144 {
213#ifndef OPENSSL_NO_DSA 145 if (pkey->ameth && pkey->ameth->param_missing)
214 if (pkey->type == EVP_PKEY_DSA) 146 return pkey->ameth->param_missing(pkey);
215 { 147 return 0;
216 DSA *dsa;
217
218 dsa=pkey->pkey.dsa;
219 if ((dsa->p == NULL) || (dsa->q == NULL) || (dsa->g == NULL))
220 return(1);
221 }
222#endif
223#ifndef OPENSSL_NO_EC
224 if (pkey->type == EVP_PKEY_EC)
225 {
226 if (EC_KEY_get0_group(pkey->pkey.ec) == NULL)
227 return(1);
228 }
229#endif
230
231 return(0);
232 } 148 }
233 149
234int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b) 150int EVP_PKEY_cmp_parameters(const EVP_PKEY *a, const EVP_PKEY *b)
235 { 151 {
236#ifndef OPENSSL_NO_DSA 152 if (a->type != b->type)
237 if ((a->type == EVP_PKEY_DSA) && (b->type == EVP_PKEY_DSA)) 153 return -1;
238 { 154 if (a->ameth && a->ameth->param_cmp)
239 if ( BN_cmp(a->pkey.dsa->p,b->pkey.dsa->p) || 155 return a->ameth->param_cmp(a, b);
240 BN_cmp(a->pkey.dsa->q,b->pkey.dsa->q) || 156 return -2;
241 BN_cmp(a->pkey.dsa->g,b->pkey.dsa->g))
242 return(0);
243 else
244 return(1);
245 }
246#endif
247#ifndef OPENSSL_NO_EC
248 if (a->type == EVP_PKEY_EC && b->type == EVP_PKEY_EC)
249 {
250 const EC_GROUP *group_a = EC_KEY_get0_group(a->pkey.ec),
251 *group_b = EC_KEY_get0_group(b->pkey.ec);
252 if (EC_GROUP_cmp(group_a, group_b, NULL))
253 return 0;
254 else
255 return 1;
256 }
257#endif
258 return(-1);
259 } 157 }
260 158
261int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b) 159int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b)
@@ -263,51 +161,22 @@ int EVP_PKEY_cmp(const EVP_PKEY *a, const EVP_PKEY *b)
263 if (a->type != b->type) 161 if (a->type != b->type)
264 return -1; 162 return -1;
265 163
266 if (EVP_PKEY_cmp_parameters(a, b) == 0) 164 if (a->ameth)
267 return 0;
268
269 switch (a->type)
270 { 165 {
271#ifndef OPENSSL_NO_RSA 166 int ret;
272 case EVP_PKEY_RSA: 167 /* Compare parameters if the algorithm has them */
273 if (BN_cmp(b->pkey.rsa->n,a->pkey.rsa->n) != 0 168 if (a->ameth->param_cmp)
274 || BN_cmp(b->pkey.rsa->e,a->pkey.rsa->e) != 0)
275 return 0;
276 break;
277#endif
278#ifndef OPENSSL_NO_DSA
279 case EVP_PKEY_DSA:
280 if (BN_cmp(b->pkey.dsa->pub_key,a->pkey.dsa->pub_key) != 0)
281 return 0;
282 break;
283#endif
284#ifndef OPENSSL_NO_EC
285 case EVP_PKEY_EC:
286 {
287 int r;
288 const EC_GROUP *group = EC_KEY_get0_group(b->pkey.ec);
289 const EC_POINT *pa = EC_KEY_get0_public_key(a->pkey.ec),
290 *pb = EC_KEY_get0_public_key(b->pkey.ec);
291 r = EC_POINT_cmp(group, pa, pb, NULL);
292 if (r != 0)
293 { 169 {
294 if (r == 1) 170 ret = a->ameth->param_cmp(a, b);
295 return 0; 171 if (ret <= 0)
296 else 172 return ret;
297 return -2;
298 } 173 }
299 } 174
300 break; 175 if (a->ameth->pub_cmp)
301#endif 176 return a->ameth->pub_cmp(a, b);
302#ifndef OPENSSL_NO_DH
303 case EVP_PKEY_DH:
304 return -2;
305#endif
306 default:
307 return -2;
308 } 177 }
309 178
310 return 1; 179 return -2;
311 } 180 }
312 181
313EVP_PKEY *EVP_PKEY_new(void) 182EVP_PKEY *EVP_PKEY_new(void)
@@ -321,22 +190,87 @@ EVP_PKEY *EVP_PKEY_new(void)
321 return(NULL); 190 return(NULL);
322 } 191 }
323 ret->type=EVP_PKEY_NONE; 192 ret->type=EVP_PKEY_NONE;
193 ret->save_type=EVP_PKEY_NONE;
324 ret->references=1; 194 ret->references=1;
195 ret->ameth=NULL;
196 ret->engine=NULL;
325 ret->pkey.ptr=NULL; 197 ret->pkey.ptr=NULL;
326 ret->attributes=NULL; 198 ret->attributes=NULL;
327 ret->save_parameters=1; 199 ret->save_parameters=1;
328 return(ret); 200 return(ret);
329 } 201 }
330 202
331int EVP_PKEY_assign(EVP_PKEY *pkey, int type, char *key) 203/* Setup a public key ASN1 method and ENGINE from a NID or a string.
204 * If pkey is NULL just return 1 or 0 if the algorithm exists.
205 */
206
207static int pkey_set_type(EVP_PKEY *pkey, int type, const char *str, int len)
332 { 208 {
333 if (pkey == NULL) return(0); 209 const EVP_PKEY_ASN1_METHOD *ameth;
334 if (pkey->pkey.ptr != NULL) 210 ENGINE *e = NULL;
335 EVP_PKEY_free_it(pkey); 211 if (pkey)
336 pkey->type=EVP_PKEY_type(type); 212 {
337 pkey->save_type=type; 213 if (pkey->pkey.ptr)
214 EVP_PKEY_free_it(pkey);
215 /* If key type matches and a method exists then this
216 * lookup has succeeded once so just indicate success.
217 */
218 if ((type == pkey->save_type) && pkey->ameth)
219 return 1;
220#ifndef OPENSSL_NO_ENGINE
221 /* If we have an ENGINE release it */
222 if (pkey->engine)
223 {
224 ENGINE_finish(pkey->engine);
225 pkey->engine = NULL;
226 }
227#endif
228 }
229 if (str)
230 ameth = EVP_PKEY_asn1_find_str(&e, str, len);
231 else
232 ameth = EVP_PKEY_asn1_find(&e, type);
233#ifndef OPENSSL_NO_ENGINE
234 if (!pkey && e)
235 ENGINE_finish(e);
236#endif
237 if (!ameth)
238 {
239 EVPerr(EVP_F_PKEY_SET_TYPE, EVP_R_UNSUPPORTED_ALGORITHM);
240 return 0;
241 }
242 if (pkey)
243 {
244 pkey->ameth = ameth;
245 pkey->engine = e;
246
247 pkey->type = pkey->ameth->pkey_id;
248 pkey->save_type=type;
249 }
250 return 1;
251 }
252
253int EVP_PKEY_set_type(EVP_PKEY *pkey, int type)
254 {
255 return pkey_set_type(pkey, type, NULL, -1);
256 }
257
258int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len)
259 {
260 return pkey_set_type(pkey, EVP_PKEY_NONE, str, len);
261 }
262
263int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key)
264 {
265 if (!EVP_PKEY_set_type(pkey, type))
266 return 0;
338 pkey->pkey.ptr=key; 267 pkey->pkey.ptr=key;
339 return(key != NULL); 268 return (key != NULL);
269 }
270
271void *EVP_PKEY_get0(EVP_PKEY *pkey)
272 {
273 return pkey->pkey.ptr;
340 } 274 }
341 275
342#ifndef OPENSSL_NO_RSA 276#ifndef OPENSSL_NO_RSA
@@ -425,24 +359,29 @@ DH *EVP_PKEY_get1_DH(EVP_PKEY *pkey)
425 359
426int EVP_PKEY_type(int type) 360int EVP_PKEY_type(int type)
427 { 361 {
428 switch (type) 362 int ret;
429 { 363 const EVP_PKEY_ASN1_METHOD *ameth;
430 case EVP_PKEY_RSA: 364 ENGINE *e;
431 case EVP_PKEY_RSA2: 365 ameth = EVP_PKEY_asn1_find(&e, type);
432 return(EVP_PKEY_RSA); 366 if (ameth)
433 case EVP_PKEY_DSA: 367 ret = ameth->pkey_id;
434 case EVP_PKEY_DSA1: 368 else
435 case EVP_PKEY_DSA2: 369 ret = NID_undef;
436 case EVP_PKEY_DSA3: 370#ifndef OPENSSL_NO_ENGINE
437 case EVP_PKEY_DSA4: 371 if (e)
438 return(EVP_PKEY_DSA); 372 ENGINE_finish(e);
439 case EVP_PKEY_DH: 373#endif
440 return(EVP_PKEY_DH); 374 return ret;
441 case EVP_PKEY_EC: 375 }
442 return(EVP_PKEY_EC); 376
443 default: 377int EVP_PKEY_id(const EVP_PKEY *pkey)
444 return(NID_undef); 378 {
445 } 379 return pkey->type;
380 }
381
382int EVP_PKEY_base_id(const EVP_PKEY *pkey)
383 {
384 return EVP_PKEY_type(pkey->type);
446 } 385 }
447 386
448void EVP_PKEY_free(EVP_PKEY *x) 387void EVP_PKEY_free(EVP_PKEY *x)
@@ -471,32 +410,57 @@ void EVP_PKEY_free(EVP_PKEY *x)
471 410
472static void EVP_PKEY_free_it(EVP_PKEY *x) 411static void EVP_PKEY_free_it(EVP_PKEY *x)
473 { 412 {
474 switch (x->type) 413 if (x->ameth && x->ameth->pkey_free)
414 x->ameth->pkey_free(x);
415#ifndef OPENSSL_NO_ENGINE
416 if (x->engine)
475 { 417 {
476#ifndef OPENSSL_NO_RSA 418 ENGINE_finish(x->engine);
477 case EVP_PKEY_RSA: 419 x->engine = NULL;
478 case EVP_PKEY_RSA2:
479 RSA_free(x->pkey.rsa);
480 break;
481#endif
482#ifndef OPENSSL_NO_DSA
483 case EVP_PKEY_DSA:
484 case EVP_PKEY_DSA2:
485 case EVP_PKEY_DSA3:
486 case EVP_PKEY_DSA4:
487 DSA_free(x->pkey.dsa);
488 break;
489#endif
490#ifndef OPENSSL_NO_EC
491 case EVP_PKEY_EC:
492 EC_KEY_free(x->pkey.ec);
493 break;
494#endif
495#ifndef OPENSSL_NO_DH
496 case EVP_PKEY_DH:
497 DH_free(x->pkey.dh);
498 break;
499#endif
500 } 420 }
421#endif
422 }
423
424static int unsup_alg(BIO *out, const EVP_PKEY *pkey, int indent,
425 const char *kstr)
426 {
427 BIO_indent(out, indent, 128);
428 BIO_printf(out, "%s algorithm \"%s\" unsupported\n",
429 kstr, OBJ_nid2ln(pkey->type));
430 return 1;
431 }
432
433int EVP_PKEY_print_public(BIO *out, const EVP_PKEY *pkey,
434 int indent, ASN1_PCTX *pctx)
435 {
436 if (pkey->ameth && pkey->ameth->pub_print)
437 return pkey->ameth->pub_print(out, pkey, indent, pctx);
438
439 return unsup_alg(out, pkey, indent, "Public Key");
440 }
441
442int EVP_PKEY_print_private(BIO *out, const EVP_PKEY *pkey,
443 int indent, ASN1_PCTX *pctx)
444 {
445 if (pkey->ameth && pkey->ameth->priv_print)
446 return pkey->ameth->priv_print(out, pkey, indent, pctx);
447
448 return unsup_alg(out, pkey, indent, "Private Key");
449 }
450
451int EVP_PKEY_print_params(BIO *out, const EVP_PKEY *pkey,
452 int indent, ASN1_PCTX *pctx)
453 {
454 if (pkey->ameth && pkey->ameth->param_print)
455 return pkey->ameth->param_print(out, pkey, indent, pctx);
456 return unsup_alg(out, pkey, indent, "Parameters");
457 }
458
459int EVP_PKEY_get_default_digest_nid(EVP_PKEY *pkey, int *pnid)
460 {
461 if (!pkey->ameth || !pkey->ameth->pkey_ctrl)
462 return -2;
463 return pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_DEFAULT_MD_NID,
464 0, pnid);
501 } 465 }
502 466
diff --git a/src/lib/libssl/src/crypto/evp/p_open.c b/src/lib/libssl/src/crypto/evp/p_open.c
index 9935206d0f..53a59a295c 100644
--- a/src/lib/libssl/src/crypto/evp/p_open.c
+++ b/src/lib/libssl/src/crypto/evp/p_open.c
@@ -95,7 +95,7 @@ int EVP_OpenInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
95 goto err; 95 goto err;
96 } 96 }
97 97
98 i=EVP_PKEY_decrypt(key,ek,ekl,priv); 98 i=EVP_PKEY_decrypt_old(key,ek,ekl,priv);
99 if ((i <= 0) || !EVP_CIPHER_CTX_set_key_length(ctx, i)) 99 if ((i <= 0) || !EVP_CIPHER_CTX_set_key_length(ctx, i))
100 { 100 {
101 /* ERROR */ 101 /* ERROR */
diff --git a/src/lib/libssl/src/crypto/evp/p_seal.c b/src/lib/libssl/src/crypto/evp/p_seal.c
index 8cc8fcb0bd..d8324526e7 100644
--- a/src/lib/libssl/src/crypto/evp/p_seal.c
+++ b/src/lib/libssl/src/crypto/evp/p_seal.c
@@ -87,7 +87,7 @@ int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type, unsigned char **ek
87 87
88 for (i=0; i<npubk; i++) 88 for (i=0; i<npubk; i++)
89 { 89 {
90 ekl[i]=EVP_PKEY_encrypt(ek[i],key,EVP_CIPHER_CTX_key_length(ctx), 90 ekl[i]=EVP_PKEY_encrypt_old(ek[i],key,EVP_CIPHER_CTX_key_length(ctx),
91 pubk[i]); 91 pubk[i]);
92 if (ekl[i] <= 0) return(-1); 92 if (ekl[i] <= 0) return(-1);
93 } 93 }
diff --git a/src/lib/libssl/src/crypto/evp/p_sign.c b/src/lib/libssl/src/crypto/evp/p_sign.c
index bf41a0db68..8df6d48a7e 100644
--- a/src/lib/libssl/src/crypto/evp/p_sign.c
+++ b/src/lib/libssl/src/crypto/evp/p_sign.c
@@ -84,6 +84,32 @@ int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, unsigned int *siglen,
84 MS_STATIC EVP_MD_CTX tmp_ctx; 84 MS_STATIC EVP_MD_CTX tmp_ctx;
85 85
86 *siglen=0; 86 *siglen=0;
87 EVP_MD_CTX_init(&tmp_ctx);
88 EVP_MD_CTX_copy_ex(&tmp_ctx,ctx);
89 EVP_DigestFinal_ex(&tmp_ctx,&(m[0]),&m_len);
90 EVP_MD_CTX_cleanup(&tmp_ctx);
91
92 if (ctx->digest->flags & EVP_MD_FLAG_PKEY_METHOD_SIGNATURE)
93 {
94 EVP_PKEY_CTX *pkctx = NULL;
95 size_t sltmp = (size_t)EVP_PKEY_size(pkey);
96 i = 0;
97 pkctx = EVP_PKEY_CTX_new(pkey, NULL);
98 if (!pkctx)
99 goto err;
100 if (EVP_PKEY_sign_init(pkctx) <= 0)
101 goto err;
102 if (EVP_PKEY_CTX_set_signature_md(pkctx, ctx->digest) <= 0)
103 goto err;
104 if (EVP_PKEY_sign(pkctx, sigret, &sltmp, m, m_len) <= 0)
105 goto err;
106 *siglen = sltmp;
107 i = 1;
108 err:
109 EVP_PKEY_CTX_free(pkctx);
110 return i;
111 }
112
87 for (i=0; i<4; i++) 113 for (i=0; i<4; i++)
88 { 114 {
89 v=ctx->digest->required_pkey_type[i]; 115 v=ctx->digest->required_pkey_type[i];
@@ -99,28 +125,13 @@ int EVP_SignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, unsigned int *siglen,
99 EVPerr(EVP_F_EVP_SIGNFINAL,EVP_R_WRONG_PUBLIC_KEY_TYPE); 125 EVPerr(EVP_F_EVP_SIGNFINAL,EVP_R_WRONG_PUBLIC_KEY_TYPE);
100 return(0); 126 return(0);
101 } 127 }
128
102 if (ctx->digest->sign == NULL) 129 if (ctx->digest->sign == NULL)
103 { 130 {
104 EVPerr(EVP_F_EVP_SIGNFINAL,EVP_R_NO_SIGN_FUNCTION_CONFIGURED); 131 EVPerr(EVP_F_EVP_SIGNFINAL,EVP_R_NO_SIGN_FUNCTION_CONFIGURED);
105 return(0); 132 return(0);
106 } 133 }
107 EVP_MD_CTX_init(&tmp_ctx); 134 return(ctx->digest->sign(ctx->digest->type,m,m_len,sigret,siglen,
108 EVP_MD_CTX_copy_ex(&tmp_ctx,ctx); 135 pkey->pkey.ptr));
109 if (ctx->digest->flags & EVP_MD_FLAG_SVCTX)
110 {
111 EVP_MD_SVCTX sctmp;
112 sctmp.mctx = &tmp_ctx;
113 sctmp.key = pkey->pkey.ptr;
114 i = ctx->digest->sign(ctx->digest->type,
115 NULL, -1, sigret, siglen, &sctmp);
116 }
117 else
118 {
119 EVP_DigestFinal_ex(&tmp_ctx,&(m[0]),&m_len);
120 i = ctx->digest->sign(ctx->digest->type,m,m_len,sigret,siglen,
121 pkey->pkey.ptr);
122 }
123 EVP_MD_CTX_cleanup(&tmp_ctx);
124 return i;
125 } 136 }
126 137
diff --git a/src/lib/libssl/src/crypto/evp/p_verify.c b/src/lib/libssl/src/crypto/evp/p_verify.c
index 2d46dffe7e..8db46412f3 100644
--- a/src/lib/libssl/src/crypto/evp/p_verify.c
+++ b/src/lib/libssl/src/crypto/evp/p_verify.c
@@ -70,6 +70,28 @@ int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf,
70 int i,ok=0,v; 70 int i,ok=0,v;
71 MS_STATIC EVP_MD_CTX tmp_ctx; 71 MS_STATIC EVP_MD_CTX tmp_ctx;
72 72
73 EVP_MD_CTX_init(&tmp_ctx);
74 EVP_MD_CTX_copy_ex(&tmp_ctx,ctx);
75 EVP_DigestFinal_ex(&tmp_ctx,&(m[0]),&m_len);
76 EVP_MD_CTX_cleanup(&tmp_ctx);
77
78 if (ctx->digest->flags & EVP_MD_FLAG_PKEY_METHOD_SIGNATURE)
79 {
80 EVP_PKEY_CTX *pkctx = NULL;
81 i = -1;
82 pkctx = EVP_PKEY_CTX_new(pkey, NULL);
83 if (!pkctx)
84 goto err;
85 if (EVP_PKEY_verify_init(pkctx) <= 0)
86 goto err;
87 if (EVP_PKEY_CTX_set_signature_md(pkctx, ctx->digest) <= 0)
88 goto err;
89 i = EVP_PKEY_verify(pkctx, sigbuf, siglen, m, m_len);
90 err:
91 EVP_PKEY_CTX_free(pkctx);
92 return i;
93 }
94
73 for (i=0; i<4; i++) 95 for (i=0; i<4; i++)
74 { 96 {
75 v=ctx->digest->required_pkey_type[i]; 97 v=ctx->digest->required_pkey_type[i];
@@ -85,29 +107,13 @@ int EVP_VerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sigbuf,
85 EVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_WRONG_PUBLIC_KEY_TYPE); 107 EVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_WRONG_PUBLIC_KEY_TYPE);
86 return(-1); 108 return(-1);
87 } 109 }
88 if (ctx->digest->verify == NULL) 110 if (ctx->digest->verify == NULL)
89 { 111 {
90 EVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_NO_VERIFY_FUNCTION_CONFIGURED); 112 EVPerr(EVP_F_EVP_VERIFYFINAL,EVP_R_NO_VERIFY_FUNCTION_CONFIGURED);
91 return(0); 113 return(0);
92 } 114 }
93 115
94 EVP_MD_CTX_init(&tmp_ctx); 116 return(ctx->digest->verify(ctx->digest->type,m,m_len,
95 EVP_MD_CTX_copy_ex(&tmp_ctx,ctx); 117 sigbuf,siglen,pkey->pkey.ptr));
96 if (ctx->digest->flags & EVP_MD_FLAG_SVCTX)
97 {
98 EVP_MD_SVCTX sctmp;
99 sctmp.mctx = &tmp_ctx;
100 sctmp.key = pkey->pkey.ptr;
101 i = ctx->digest->verify(ctx->digest->type,
102 NULL, -1, sigbuf, siglen, &sctmp);
103 }
104 else
105 {
106 EVP_DigestFinal_ex(&tmp_ctx,&(m[0]),&m_len);
107 i = ctx->digest->verify(ctx->digest->type,m,m_len,
108 sigbuf,siglen,pkey->pkey.ptr);
109 }
110 EVP_MD_CTX_cleanup(&tmp_ctx);
111 return i;
112 } 118 }
113 119
diff --git a/src/lib/libssl/src/crypto/ex_data.c b/src/lib/libssl/src/crypto/ex_data.c
index 3b11e7a556..e2bc8298d0 100644
--- a/src/lib/libssl/src/crypto/ex_data.c
+++ b/src/lib/libssl/src/crypto/ex_data.c
@@ -245,18 +245,21 @@ typedef struct st_ex_class_item {
245static int ex_class = CRYPTO_EX_INDEX_USER; 245static int ex_class = CRYPTO_EX_INDEX_USER;
246 246
247/* The global hash table of EX_CLASS_ITEM items */ 247/* The global hash table of EX_CLASS_ITEM items */
248static LHASH *ex_data = NULL; 248DECLARE_LHASH_OF(EX_CLASS_ITEM);
249static LHASH_OF(EX_CLASS_ITEM) *ex_data = NULL;
249 250
250/* The callbacks required in the "ex_data" hash table */ 251/* The callbacks required in the "ex_data" hash table */
251static unsigned long ex_hash_cb(const void *a_void) 252static unsigned long ex_class_item_hash(const EX_CLASS_ITEM *a)
252 { 253 {
253 return ((const EX_CLASS_ITEM *)a_void)->class_index; 254 return a->class_index;
254 } 255 }
255static int ex_cmp_cb(const void *a_void, const void *b_void) 256static IMPLEMENT_LHASH_HASH_FN(ex_class_item, EX_CLASS_ITEM)
257
258static int ex_class_item_cmp(const EX_CLASS_ITEM *a, const EX_CLASS_ITEM *b)
256 { 259 {
257 return (((const EX_CLASS_ITEM *)a_void)->class_index - 260 return a->class_index - b->class_index;
258 ((const EX_CLASS_ITEM *)b_void)->class_index);
259 } 261 }
262static IMPLEMENT_LHASH_COMP_FN(ex_class_item, EX_CLASS_ITEM)
260 263
261/* Internal functions used by the "impl_default" implementation to access the 264/* Internal functions used by the "impl_default" implementation to access the
262 * state */ 265 * state */
@@ -265,7 +268,8 @@ static int ex_data_check(void)
265 { 268 {
266 int toret = 1; 269 int toret = 1;
267 CRYPTO_w_lock(CRYPTO_LOCK_EX_DATA); 270 CRYPTO_w_lock(CRYPTO_LOCK_EX_DATA);
268 if(!ex_data && ((ex_data = lh_new(ex_hash_cb, ex_cmp_cb)) == NULL)) 271 if(!ex_data
272 && (ex_data = lh_EX_CLASS_ITEM_new()) == NULL)
269 toret = 0; 273 toret = 0;
270 CRYPTO_w_unlock(CRYPTO_LOCK_EX_DATA); 274 CRYPTO_w_unlock(CRYPTO_LOCK_EX_DATA);
271 return toret; 275 return toret;
@@ -298,7 +302,7 @@ static EX_CLASS_ITEM *def_get_class(int class_index)
298 EX_DATA_CHECK(return NULL;) 302 EX_DATA_CHECK(return NULL;)
299 d.class_index = class_index; 303 d.class_index = class_index;
300 CRYPTO_w_lock(CRYPTO_LOCK_EX_DATA); 304 CRYPTO_w_lock(CRYPTO_LOCK_EX_DATA);
301 p = lh_retrieve(ex_data, &d); 305 p = lh_EX_CLASS_ITEM_retrieve(ex_data, &d);
302 if(!p) 306 if(!p)
303 { 307 {
304 gen = OPENSSL_malloc(sizeof(EX_CLASS_ITEM)); 308 gen = OPENSSL_malloc(sizeof(EX_CLASS_ITEM));
@@ -313,7 +317,7 @@ static EX_CLASS_ITEM *def_get_class(int class_index)
313 { 317 {
314 /* Because we're inside the ex_data lock, the 318 /* Because we're inside the ex_data lock, the
315 * return value from the insert will be NULL */ 319 * return value from the insert will be NULL */
316 lh_insert(ex_data, gen); 320 (void)lh_EX_CLASS_ITEM_insert(ex_data, gen);
317 p = gen; 321 p = gen;
318 } 322 }
319 } 323 }
@@ -375,8 +379,8 @@ static int int_new_class(void)
375static void int_cleanup(void) 379static void int_cleanup(void)
376 { 380 {
377 EX_DATA_CHECK(return;) 381 EX_DATA_CHECK(return;)
378 lh_doall(ex_data, def_cleanup_cb); 382 lh_EX_CLASS_ITEM_doall(ex_data, def_cleanup_cb);
379 lh_free(ex_data); 383 lh_EX_CLASS_ITEM_free(ex_data);
380 ex_data = NULL; 384 ex_data = NULL;
381 impl = NULL; 385 impl = NULL;
382 } 386 }
@@ -452,7 +456,7 @@ static int int_dup_ex_data(int class_index, CRYPTO_EX_DATA *to,
452 return 0; 456 return 0;
453 CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA); 457 CRYPTO_r_lock(CRYPTO_LOCK_EX_DATA);
454 mx = sk_CRYPTO_EX_DATA_FUNCS_num(item->meth); 458 mx = sk_CRYPTO_EX_DATA_FUNCS_num(item->meth);
455 j = sk_num(from->sk); 459 j = sk_void_num(from->sk);
456 if(j < mx) 460 if(j < mx)
457 mx = j; 461 mx = j;
458 if(mx > 0) 462 if(mx > 0)
@@ -523,7 +527,7 @@ skip:
523 OPENSSL_free(storage); 527 OPENSSL_free(storage);
524 if(ad->sk) 528 if(ad->sk)
525 { 529 {
526 sk_free(ad->sk); 530 sk_void_free(ad->sk);
527 ad->sk=NULL; 531 ad->sk=NULL;
528 } 532 }
529 } 533 }
@@ -596,24 +600,24 @@ int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val)
596 600
597 if (ad->sk == NULL) 601 if (ad->sk == NULL)
598 { 602 {
599 if ((ad->sk=sk_new_null()) == NULL) 603 if ((ad->sk=sk_void_new_null()) == NULL)
600 { 604 {
601 CRYPTOerr(CRYPTO_F_CRYPTO_SET_EX_DATA,ERR_R_MALLOC_FAILURE); 605 CRYPTOerr(CRYPTO_F_CRYPTO_SET_EX_DATA,ERR_R_MALLOC_FAILURE);
602 return(0); 606 return(0);
603 } 607 }
604 } 608 }
605 i=sk_num(ad->sk); 609 i=sk_void_num(ad->sk);
606 610
607 while (i <= idx) 611 while (i <= idx)
608 { 612 {
609 if (!sk_push(ad->sk,NULL)) 613 if (!sk_void_push(ad->sk,NULL))
610 { 614 {
611 CRYPTOerr(CRYPTO_F_CRYPTO_SET_EX_DATA,ERR_R_MALLOC_FAILURE); 615 CRYPTOerr(CRYPTO_F_CRYPTO_SET_EX_DATA,ERR_R_MALLOC_FAILURE);
612 return(0); 616 return(0);
613 } 617 }
614 i++; 618 i++;
615 } 619 }
616 sk_set(ad->sk,idx,val); 620 sk_void_set(ad->sk,idx,val);
617 return(1); 621 return(1);
618 } 622 }
619 623
@@ -623,10 +627,10 @@ void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx)
623 { 627 {
624 if (ad->sk == NULL) 628 if (ad->sk == NULL)
625 return(0); 629 return(0);
626 else if (idx >= sk_num(ad->sk)) 630 else if (idx >= sk_void_num(ad->sk))
627 return(0); 631 return(0);
628 else 632 else
629 return(sk_value(ad->sk,idx)); 633 return(sk_void_value(ad->sk,idx));
630 } 634 }
631 635
632IMPLEMENT_STACK_OF(CRYPTO_EX_DATA_FUNCS) 636IMPLEMENT_STACK_OF(CRYPTO_EX_DATA_FUNCS)
diff --git a/src/lib/libssl/src/crypto/hmac/Makefile b/src/lib/libssl/src/crypto/hmac/Makefile
index 5cfa37d99c..0e91709f64 100644
--- a/src/lib/libssl/src/crypto/hmac/Makefile
+++ b/src/lib/libssl/src/crypto/hmac/Makefile
@@ -17,8 +17,8 @@ TEST=hmactest.c
17APPS= 17APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC=hmac.c 20LIBSRC=hmac.c hm_ameth.c hm_pmeth.c
21LIBOBJ=hmac.o 21LIBOBJ=hmac.o hm_ameth.o hm_pmeth.o
22 22
23SRC= $(LIBSRC) 23SRC= $(LIBSRC)
24 24
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -74,13 +74,37 @@ clean:
74 74
75# DO NOT DELETE THIS LINE -- make depend depends on it. 75# DO NOT DELETE THIS LINE -- make depend depends on it.
76 76
77hm_ameth.o: ../../e_os.h ../../include/openssl/asn1.h
78hm_ameth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
79hm_ameth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
80hm_ameth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
81hm_ameth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
82hm_ameth.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
83hm_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
84hm_ameth.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
85hm_ameth.o: ../../include/openssl/symhacks.h ../asn1/asn1_locl.h ../cryptlib.h
86hm_ameth.o: hm_ameth.c
87hm_pmeth.o: ../../e_os.h ../../include/openssl/asn1.h
88hm_pmeth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
89hm_pmeth.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
90hm_pmeth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
91hm_pmeth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
92hm_pmeth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
93hm_pmeth.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h
94hm_pmeth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
95hm_pmeth.o: ../../include/openssl/opensslconf.h
96hm_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
97hm_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
98hm_pmeth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
99hm_pmeth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
100hm_pmeth.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
101hm_pmeth.o: ../cryptlib.h ../evp/evp_locl.h hm_pmeth.c
77hmac.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 102hmac.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
78hmac.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 103hmac.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
79hmac.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 104hmac.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
80hmac.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 105hmac.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h
81hmac.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h 106hmac.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
82hmac.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 107hmac.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
83hmac.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 108hmac.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
84hmac.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 109hmac.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
85hmac.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 110hmac.o: ../../include/openssl/symhacks.h ../cryptlib.h hmac.c
86hmac.o: ../cryptlib.h hmac.c
diff --git a/src/lib/libssl/src/crypto/hmac/hmac.c b/src/lib/libssl/src/crypto/hmac/hmac.c
index cbc1c76a57..45015fe754 100644
--- a/src/lib/libssl/src/crypto/hmac/hmac.c
+++ b/src/lib/libssl/src/crypto/hmac/hmac.c
@@ -61,9 +61,7 @@
61#include "cryptlib.h" 61#include "cryptlib.h"
62#include <openssl/hmac.h> 62#include <openssl/hmac.h>
63 63
64#ifndef OPENSSL_FIPS 64int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
65
66void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
67 const EVP_MD *md, ENGINE *impl) 65 const EVP_MD *md, ENGINE *impl)
68 { 66 {
69 int i,j,reset=0; 67 int i,j,reset=0;
@@ -84,10 +82,13 @@ void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
84 OPENSSL_assert(j <= (int)sizeof(ctx->key)); 82 OPENSSL_assert(j <= (int)sizeof(ctx->key));
85 if (j < len) 83 if (j < len)
86 { 84 {
87 EVP_DigestInit_ex(&ctx->md_ctx,md, impl); 85 if (!EVP_DigestInit_ex(&ctx->md_ctx,md, impl))
88 EVP_DigestUpdate(&ctx->md_ctx,key,len); 86 goto err;
89 EVP_DigestFinal_ex(&(ctx->md_ctx),ctx->key, 87 if (!EVP_DigestUpdate(&ctx->md_ctx,key,len))
90 &ctx->key_length); 88 goto err;
89 if (!EVP_DigestFinal_ex(&(ctx->md_ctx),ctx->key,
90 &ctx->key_length))
91 goto err;
91 } 92 }
92 else 93 else
93 { 94 {
@@ -104,31 +105,38 @@ void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
104 { 105 {
105 for (i=0; i<HMAC_MAX_MD_CBLOCK; i++) 106 for (i=0; i<HMAC_MAX_MD_CBLOCK; i++)
106 pad[i]=0x36^ctx->key[i]; 107 pad[i]=0x36^ctx->key[i];
107 EVP_DigestInit_ex(&ctx->i_ctx,md, impl); 108 if (!EVP_DigestInit_ex(&ctx->i_ctx,md, impl))
108 EVP_DigestUpdate(&ctx->i_ctx,pad,EVP_MD_block_size(md)); 109 goto err;
110 if (!EVP_DigestUpdate(&ctx->i_ctx,pad,EVP_MD_block_size(md)))
111 goto err;
109 112
110 for (i=0; i<HMAC_MAX_MD_CBLOCK; i++) 113 for (i=0; i<HMAC_MAX_MD_CBLOCK; i++)
111 pad[i]=0x5c^ctx->key[i]; 114 pad[i]=0x5c^ctx->key[i];
112 EVP_DigestInit_ex(&ctx->o_ctx,md, impl); 115 if (!EVP_DigestInit_ex(&ctx->o_ctx,md, impl))
113 EVP_DigestUpdate(&ctx->o_ctx,pad,EVP_MD_block_size(md)); 116 goto err;
117 if (!EVP_DigestUpdate(&ctx->o_ctx,pad,EVP_MD_block_size(md)))
118 goto err;
114 } 119 }
115 EVP_MD_CTX_copy_ex(&ctx->md_ctx,&ctx->i_ctx); 120 if (!EVP_MD_CTX_copy_ex(&ctx->md_ctx,&ctx->i_ctx))
121 goto err;
122 return 1;
123 err:
124 return 0;
116 } 125 }
117 126
118void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, 127int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md)
119 const EVP_MD *md)
120 { 128 {
121 if(key && md) 129 if(key && md)
122 HMAC_CTX_init(ctx); 130 HMAC_CTX_init(ctx);
123 HMAC_Init_ex(ctx,key,len,md, NULL); 131 return HMAC_Init_ex(ctx,key,len,md, NULL);
124 } 132 }
125 133
126void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len) 134int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len)
127 { 135 {
128 EVP_DigestUpdate(&ctx->md_ctx,data,len); 136 return EVP_DigestUpdate(&ctx->md_ctx,data,len);
129 } 137 }
130 138
131void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len) 139int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len)
132 { 140 {
133 int j; 141 int j;
134 unsigned int i; 142 unsigned int i;
@@ -136,10 +144,17 @@ void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len)
136 144
137 j=EVP_MD_block_size(ctx->md); 145 j=EVP_MD_block_size(ctx->md);
138 146
139 EVP_DigestFinal_ex(&ctx->md_ctx,buf,&i); 147 if (!EVP_DigestFinal_ex(&ctx->md_ctx,buf,&i))
140 EVP_MD_CTX_copy_ex(&ctx->md_ctx,&ctx->o_ctx); 148 goto err;
141 EVP_DigestUpdate(&ctx->md_ctx,buf,i); 149 if (!EVP_MD_CTX_copy_ex(&ctx->md_ctx,&ctx->o_ctx))
142 EVP_DigestFinal_ex(&ctx->md_ctx,md,len); 150 goto err;
151 if (!EVP_DigestUpdate(&ctx->md_ctx,buf,i))
152 goto err;
153 if (!EVP_DigestFinal_ex(&ctx->md_ctx,md,len))
154 goto err;
155 return 1;
156 err:
157 return 0;
143 } 158 }
144 159
145void HMAC_CTX_init(HMAC_CTX *ctx) 160void HMAC_CTX_init(HMAC_CTX *ctx)
@@ -149,6 +164,22 @@ void HMAC_CTX_init(HMAC_CTX *ctx)
149 EVP_MD_CTX_init(&ctx->md_ctx); 164 EVP_MD_CTX_init(&ctx->md_ctx);
150 } 165 }
151 166
167int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx)
168 {
169 if (!EVP_MD_CTX_copy(&dctx->i_ctx, &sctx->i_ctx))
170 goto err;
171 if (!EVP_MD_CTX_copy(&dctx->o_ctx, &sctx->o_ctx))
172 goto err;
173 if (!EVP_MD_CTX_copy(&dctx->md_ctx, &sctx->md_ctx))
174 goto err;
175 memcpy(dctx->key, sctx->key, HMAC_MAX_MD_CBLOCK);
176 dctx->key_length = sctx->key_length;
177 dctx->md = sctx->md;
178 return 1;
179 err:
180 return 0;
181 }
182
152void HMAC_CTX_cleanup(HMAC_CTX *ctx) 183void HMAC_CTX_cleanup(HMAC_CTX *ctx)
153 { 184 {
154 EVP_MD_CTX_cleanup(&ctx->i_ctx); 185 EVP_MD_CTX_cleanup(&ctx->i_ctx);
@@ -166,11 +197,16 @@ unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
166 197
167 if (md == NULL) md=m; 198 if (md == NULL) md=m;
168 HMAC_CTX_init(&c); 199 HMAC_CTX_init(&c);
169 HMAC_Init(&c,key,key_len,evp_md); 200 if (!HMAC_Init(&c,key,key_len,evp_md))
170 HMAC_Update(&c,d,n); 201 goto err;
171 HMAC_Final(&c,md,md_len); 202 if (!HMAC_Update(&c,d,n))
203 goto err;
204 if (!HMAC_Final(&c,md,md_len))
205 goto err;
172 HMAC_CTX_cleanup(&c); 206 HMAC_CTX_cleanup(&c);
173 return(md); 207 return md;
208 err:
209 return NULL;
174 } 210 }
175 211
176void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags) 212void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags)
@@ -179,5 +215,3 @@ void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags)
179 EVP_MD_CTX_set_flags(&ctx->o_ctx, flags); 215 EVP_MD_CTX_set_flags(&ctx->o_ctx, flags);
180 EVP_MD_CTX_set_flags(&ctx->md_ctx, flags); 216 EVP_MD_CTX_set_flags(&ctx->md_ctx, flags);
181 } 217 }
182
183#endif
diff --git a/src/lib/libssl/src/crypto/hmac/hmac.h b/src/lib/libssl/src/crypto/hmac/hmac.h
index fc38ffb52b..1be0022190 100644
--- a/src/lib/libssl/src/crypto/hmac/hmac.h
+++ b/src/lib/libssl/src/crypto/hmac/hmac.h
@@ -90,15 +90,16 @@ void HMAC_CTX_cleanup(HMAC_CTX *ctx);
90 90
91#define HMAC_cleanup(ctx) HMAC_CTX_cleanup(ctx) /* deprecated */ 91#define HMAC_cleanup(ctx) HMAC_CTX_cleanup(ctx) /* deprecated */
92 92
93void HMAC_Init(HMAC_CTX *ctx, const void *key, int len, 93int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
94 const EVP_MD *md); /* deprecated */ 94 const EVP_MD *md); /* deprecated */
95void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, 95int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len,
96 const EVP_MD *md, ENGINE *impl); 96 const EVP_MD *md, ENGINE *impl);
97void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len); 97int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len);
98void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len); 98int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len);
99unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, 99unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len,
100 const unsigned char *d, size_t n, unsigned char *md, 100 const unsigned char *d, size_t n, unsigned char *md,
101 unsigned int *md_len); 101 unsigned int *md_len);
102int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx);
102 103
103void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); 104void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags);
104 105
diff --git a/src/lib/libssl/src/crypto/idea/Makefile b/src/lib/libssl/src/crypto/idea/Makefile
index 55c0d4dbff..b2e7add666 100644
--- a/src/lib/libssl/src/crypto/idea/Makefile
+++ b/src/lib/libssl/src/crypto/idea/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -82,9 +82,5 @@ i_ecb.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h
82i_ecb.o: ../../include/openssl/opensslv.h i_ecb.c idea_lcl.h 82i_ecb.o: ../../include/openssl/opensslv.h i_ecb.c idea_lcl.h
83i_ofb64.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h 83i_ofb64.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h
84i_ofb64.o: i_ofb64.c idea_lcl.h 84i_ofb64.o: i_ofb64.c idea_lcl.h
85i_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 85i_skey.o: ../../include/openssl/idea.h ../../include/openssl/opensslconf.h
86i_skey.o: ../../include/openssl/fips.h ../../include/openssl/idea.h
87i_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
88i_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
89i_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
90i_skey.o: i_skey.c idea_lcl.h 86i_skey.o: i_skey.c idea_lcl.h
diff --git a/src/lib/libssl/src/crypto/idea/idea.h b/src/lib/libssl/src/crypto/idea/idea.h
index a137d4cbce..5782e54b0f 100644
--- a/src/lib/libssl/src/crypto/idea/idea.h
+++ b/src/lib/libssl/src/crypto/idea/idea.h
@@ -83,11 +83,8 @@ typedef struct idea_key_st
83const char *idea_options(void); 83const char *idea_options(void);
84void idea_ecb_encrypt(const unsigned char *in, unsigned char *out, 84void idea_ecb_encrypt(const unsigned char *in, unsigned char *out,
85 IDEA_KEY_SCHEDULE *ks); 85 IDEA_KEY_SCHEDULE *ks);
86#ifdef OPENSSL_FIPS
87void private_idea_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks);
88#endif
89void idea_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks); 86void idea_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks);
90void idea_set_decrypt_key(const IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk); 87void idea_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk);
91void idea_cbc_encrypt(const unsigned char *in, unsigned char *out, 88void idea_cbc_encrypt(const unsigned char *in, unsigned char *out,
92 long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,int enc); 89 long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,int enc);
93void idea_cfb64_encrypt(const unsigned char *in, unsigned char *out, 90void idea_cfb64_encrypt(const unsigned char *in, unsigned char *out,
diff --git a/src/lib/libssl/src/crypto/install.com b/src/lib/libssl/src/crypto/install.com
index ffad1f97a7..ad3e4d48c7 100644
--- a/src/lib/libssl/src/crypto/install.com
+++ b/src/lib/libssl/src/crypto/install.com
@@ -3,15 +3,26 @@ $!
3$! Author: Richard Levitte <richard@levitte.org> 3$! Author: Richard Levitte <richard@levitte.org>
4$! Time of creation: 22-MAY-1998 10:13 4$! Time of creation: 22-MAY-1998 10:13
5$! 5$!
6$! Changes by Zoltan Arpadffy <zoli@polarhome.com>
7$!
6$! P1 root of the directory tree 8$! P1 root of the directory tree
7$! 9$!
8$ IF P1 .EQS. "" 10$ IF P1 .EQS. ""
9$ THEN 11$ THEN
10$ WRITE SYS$OUTPUT "First argument missing." 12$ WRITE SYS$OUTPUT "First argument missing."
11$ WRITE SYS$OUTPUT "Should be the directory where you want things installed." 13$ WRITE SYS$OUTPUT -
14 "It should be the directory where you want things installed."
12$ EXIT 15$ EXIT
13$ ENDIF 16$ ENDIF
14$ 17$
18$ IF (F$GETSYI("CPU").LT.128)
19$ THEN
20$ ARCH := VAX
21$ ELSE
22$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
23$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
24$ ENDIF
25$
15$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0" 26$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
16$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY") 27$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
17$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") - 28$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
@@ -19,30 +30,28 @@ $ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
19$ ROOT = ROOT_DEV + "[" + ROOT_DIR 30$ ROOT = ROOT_DEV + "[" + ROOT_DIR
20$ 31$
21$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC 32$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
22$ DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB] 33$ DEFINE/NOLOG WRK_SSLLIB WRK_SSLROOT:['ARCH'_LIB]
23$ DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB]
24$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE] 34$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE]
25$ 35$
26$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN - 36$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
27 CREATE/DIR/LOG WRK_SSLROOT:[000000] 37 CREATE/DIR/LOG WRK_SSLROOT:[000000]
28$ IF F$PARSE("WRK_SSLVLIB:") .EQS. "" THEN - 38$ IF F$PARSE("WRK_SSLLIB:") .EQS. "" THEN -
29 CREATE/DIR/LOG WRK_SSLVLIB: 39 CREATE/DIR/LOG WRK_SSLLIB:
30$ IF F$PARSE("WRK_SSLALIB:") .EQS. "" THEN -
31 CREATE/DIR/LOG WRK_SSLALIB:
32$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN - 40$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN -
33 CREATE/DIR/LOG WRK_SSLINCLUDE: 41 CREATE/DIR/LOG WRK_SSLINCLUDE:
34$ 42$
35$ SDIRS := ,- 43$ SDIRS := ,-
44 _'ARCH',-
36 OBJECTS,- 45 OBJECTS,-
37 MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,- 46 MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,WHRLPOOL,-
38 DES,AES,RC2,RC4,RC5,IDEA,BF,CAST,CAMELLIA,SEED,- 47 DES,AES,RC2,RC4,RC5,IDEA,BF,CAST,CAMELLIA,SEED,-
39 BN,EC,RSA,DSA,ECDSA,DH,ECDH,DSO,ENGINE,- 48 BN,EC,RSA,DSA,ECDSA,DH,ECDH,DSO,ENGINE,-
40 BUFFER,BIO,STACK,LHASH,RAND,ERR,- 49 BUFFER,BIO,STACK,LHASH,RAND,ERR,-
41 EVP,ASN1,PEM,X509,X509V3,CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,- 50 EVP,ASN1,PEM,X509,X509V3,CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,-
42 UI,KRB5,- 51 UI,KRB5,-
43 STORE,PQUEUE,JPAKE 52 STORE,CMS,PQUEUE,TS,JPAKE
44$ EXHEADER_ := crypto.h,tmdiff.h,opensslv.h,opensslconf.h,ebcdic.h,- 53$ EXHEADER_ := crypto.h,opensslv.h,ebcdic.h,symhacks.h,ossl_typ.h
45 symhacks.h,ossl_typ.h 54$ EXHEADER__'ARCH' := opensslconf.h
46$ EXHEADER_OBJECTS := objects.h,obj_mac.h 55$ EXHEADER_OBJECTS := objects.h,obj_mac.h
47$ EXHEADER_MD2 := md2.h 56$ EXHEADER_MD2 := md2.h
48$ EXHEADER_MD4 := md4.h 57$ EXHEADER_MD4 := md4.h
@@ -51,6 +60,7 @@ $ EXHEADER_SHA := sha.h
51$ EXHEADER_MDC2 := mdc2.h 60$ EXHEADER_MDC2 := mdc2.h
52$ EXHEADER_HMAC := hmac.h 61$ EXHEADER_HMAC := hmac.h
53$ EXHEADER_RIPEMD := ripemd.h 62$ EXHEADER_RIPEMD := ripemd.h
63$ EXHEADER_WHRLPOOL := whrlpool.h
54$ EXHEADER_DES := des.h,des_old.h 64$ EXHEADER_DES := des.h,des_old.h
55$ EXHEADER_AES := aes.h 65$ EXHEADER_AES := aes.h
56$ EXHEADER_RC2 := rc2.h 66$ EXHEADER_RC2 := rc2.h
@@ -61,6 +71,7 @@ $ EXHEADER_BF := blowfish.h
61$ EXHEADER_CAST := cast.h 71$ EXHEADER_CAST := cast.h
62$ EXHEADER_CAMELLIA := camellia.h 72$ EXHEADER_CAMELLIA := camellia.h
63$ EXHEADER_SEED := seed.h 73$ EXHEADER_SEED := seed.h
74$ EXHEADER_MODES := modes.h
64$ EXHEADER_BN := bn.h 75$ EXHEADER_BN := bn.h
65$ EXHEADER_EC := ec.h 76$ EXHEADER_EC := ec.h
66$ EXHEADER_RSA := rsa.h 77$ EXHEADER_RSA := rsa.h
@@ -91,12 +102,13 @@ $ EXHEADER_UI := ui.h,ui_compat.h
91$ EXHEADER_KRB5 := krb5_asn.h 102$ EXHEADER_KRB5 := krb5_asn.h
92$! EXHEADER_STORE := store.h,str_compat.h 103$! EXHEADER_STORE := store.h,str_compat.h
93$ EXHEADER_STORE := store.h 104$ EXHEADER_STORE := store.h
94$ EXHEADER_PQUEUE := pqueue.h,pq_compat.h 105$ EXHEADER_CMS := cms.h
106$ EXHEADER_PQUEUE := pqueue.h
107$ EXHEADER_TS := ts.h
95$ EXHEADER_JPAKE := jpake.h 108$ EXHEADER_JPAKE := jpake.h
96$ LIBS := LIBCRYPTO 109$ LIBS := LIBCRYPTO
97$ 110$
98$ VEXE_DIR := [-.VAX.EXE.CRYPTO] 111$ EXE_DIR := [-.'ARCH'.EXE.CRYPTO]
99$ AEXE_DIR := [-.AXP.EXE.CRYPTO]
100$ 112$
101$ I = 0 113$ I = 0
102$ LOOP_SDIRS: 114$ LOOP_SDIRS:
@@ -108,7 +120,12 @@ $ IF D .EQS. ""
108$ THEN 120$ THEN
109$ COPY 'tmp' WRK_SSLINCLUDE: /LOG 121$ COPY 'tmp' WRK_SSLINCLUDE: /LOG
110$ ELSE 122$ ELSE
111$ COPY [.'D']'tmp' WRK_SSLINCLUDE: /LOG 123$ IF D .EQS. "_''ARCH'"
124$ THEN
125$ COPY [-.'ARCH'.CRYPTO]'tmp' WRK_SSLINCLUDE: /LOG
126$ ELSE
127$ COPY [.'D']'tmp' WRK_SSLINCLUDE: /LOG
128$ ENDIF
112$ ENDIF 129$ ENDIF
113$ SET FILE/PROT=WORLD:RE WRK_SSLINCLUDE:'tmp' 130$ SET FILE/PROT=WORLD:RE WRK_SSLINCLUDE:'tmp'
114$ GOTO LOOP_SDIRS 131$ GOTO LOOP_SDIRS
@@ -120,27 +137,16 @@ $ E = F$EDIT(F$ELEMENT(I, ",", LIBS),"TRIM")
120$ I = I + 1 137$ I = I + 1
121$ IF E .EQS. "," THEN GOTO LOOP_LIB_END 138$ IF E .EQS. "," THEN GOTO LOOP_LIB_END
122$ SET NOON 139$ SET NOON
123$ IF F$SEARCH(VEXE_DIR+E+".OLB") .NES. "" 140$ IF F$SEARCH(EXE_DIR+E+".OLB") .NES. ""
124$ THEN
125$ COPY 'VEXE_DIR''E'.OLB WRK_SSLVLIB:'E'.OLB/log
126$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.OLB
127$ ENDIF
128$ ! Preparing for the time when we have shareable images
129$ IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. ""
130$ THEN
131$ COPY 'VEXE_DIR''E'.EXE WRK_SSLVLIB:'E'.EXE/log
132$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.EXE
133$ ENDIF
134$ IF F$SEARCH(AEXE_DIR+E+".OLB") .NES. ""
135$ THEN 141$ THEN
136$ COPY 'AEXE_DIR''E'.OLB WRK_SSLALIB:'E'.OLB/log 142$ COPY 'EXE_DIR''E'.OLB WRK_SSLLIB:'E'.OLB/log
137$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.OLB 143$ SET FILE/PROT=W:RE WRK_SSLLIB:'E'.OLB
138$ ENDIF 144$ ENDIF
139$ ! Preparing for the time when we have shareable images 145$ ! Preparing for the time when we have shareable images
140$ IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. "" 146$ IF F$SEARCH(EXE_DIR+E+".EXE") .NES. ""
141$ THEN 147$ THEN
142$ COPY 'AEXE_DIR''E'.EXE WRK_SSLALIB:'E'.EXE/log 148$ COPY 'EXE_DIR''E'.EXE WRK_SSLLIB:'E'.EXE/log
143$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.EXE 149$ SET FILE/PROT=W:RE WRK_SSLLIB:'E'.EXE
144$ ENDIF 150$ ENDIF
145$ SET ON 151$ SET ON
146$ GOTO LOOP_LIB 152$ GOTO LOOP_LIB
diff --git a/src/lib/libssl/src/crypto/krb5/Makefile b/src/lib/libssl/src/crypto/krb5/Makefile
index 8efb9e8910..14077390d6 100644
--- a/src/lib/libssl/src/crypto/krb5/Makefile
+++ b/src/lib/libssl/src/crypto/krb5/Makefile
@@ -34,7 +34,7 @@ top:
34all: lib 34all: lib
35 35
36lib: $(LIBOBJ) 36lib: $(LIBOBJ)
37 $(ARX) $(LIB) $(LIBOBJ) 37 $(AR) $(LIB) $(LIBOBJ)
38 $(RANLIB) $(LIB) || echo Never mind. 38 $(RANLIB) $(LIB) || echo Never mind.
39 @touch lib 39 @touch lib
40 40
diff --git a/src/lib/libssl/src/crypto/lhash/Makefile b/src/lib/libssl/src/crypto/lhash/Makefile
index 35f0932971..82bddac474 100644
--- a/src/lib/libssl/src/crypto/lhash/Makefile
+++ b/src/lib/libssl/src/crypto/lhash/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
diff --git a/src/lib/libssl/src/crypto/lhash/lh_stats.c b/src/lib/libssl/src/crypto/lhash/lh_stats.c
index 5aa7766aa6..815615e338 100644
--- a/src/lib/libssl/src/crypto/lhash/lh_stats.c
+++ b/src/lib/libssl/src/crypto/lhash/lh_stats.c
@@ -139,7 +139,7 @@ void lh_node_usage_stats(LHASH *lh, FILE *out)
139#else 139#else
140 140
141#ifndef OPENSSL_NO_FP_API 141#ifndef OPENSSL_NO_FP_API
142void lh_stats(const LHASH *lh, FILE *fp) 142void lh_stats(const _LHASH *lh, FILE *fp)
143 { 143 {
144 BIO *bp; 144 BIO *bp;
145 145
@@ -151,7 +151,7 @@ void lh_stats(const LHASH *lh, FILE *fp)
151end:; 151end:;
152 } 152 }
153 153
154void lh_node_stats(const LHASH *lh, FILE *fp) 154void lh_node_stats(const _LHASH *lh, FILE *fp)
155 { 155 {
156 BIO *bp; 156 BIO *bp;
157 157
@@ -163,7 +163,7 @@ void lh_node_stats(const LHASH *lh, FILE *fp)
163end:; 163end:;
164 } 164 }
165 165
166void lh_node_usage_stats(const LHASH *lh, FILE *fp) 166void lh_node_usage_stats(const _LHASH *lh, FILE *fp)
167 { 167 {
168 BIO *bp; 168 BIO *bp;
169 169
@@ -177,7 +177,7 @@ end:;
177 177
178#endif 178#endif
179 179
180void lh_stats_bio(const LHASH *lh, BIO *out) 180void lh_stats_bio(const _LHASH *lh, BIO *out)
181 { 181 {
182 BIO_printf(out,"num_items = %lu\n",lh->num_items); 182 BIO_printf(out,"num_items = %lu\n",lh->num_items);
183 BIO_printf(out,"num_nodes = %u\n",lh->num_nodes); 183 BIO_printf(out,"num_nodes = %u\n",lh->num_nodes);
@@ -205,7 +205,7 @@ void lh_stats_bio(const LHASH *lh, BIO *out)
205#endif 205#endif
206 } 206 }
207 207
208void lh_node_stats_bio(const LHASH *lh, BIO *out) 208void lh_node_stats_bio(const _LHASH *lh, BIO *out)
209 { 209 {
210 LHASH_NODE *n; 210 LHASH_NODE *n;
211 unsigned int i,num; 211 unsigned int i,num;
@@ -218,7 +218,7 @@ void lh_node_stats_bio(const LHASH *lh, BIO *out)
218 } 218 }
219 } 219 }
220 220
221void lh_node_usage_stats_bio(const LHASH *lh, BIO *out) 221void lh_node_usage_stats_bio(const _LHASH *lh, BIO *out)
222 { 222 {
223 LHASH_NODE *n; 223 LHASH_NODE *n;
224 unsigned long num; 224 unsigned long num;
diff --git a/src/lib/libssl/src/crypto/lhash/lhash.c b/src/lib/libssl/src/crypto/lhash/lhash.c
index 04ea80203c..47f748081b 100644
--- a/src/lib/libssl/src/crypto/lhash/lhash.c
+++ b/src/lib/libssl/src/crypto/lhash/lhash.c
@@ -107,18 +107,18 @@ const char lh_version[]="lhash" OPENSSL_VERSION_PTEXT;
107#define UP_LOAD (2*LH_LOAD_MULT) /* load times 256 (default 2) */ 107#define UP_LOAD (2*LH_LOAD_MULT) /* load times 256 (default 2) */
108#define DOWN_LOAD (LH_LOAD_MULT) /* load times 256 (default 1) */ 108#define DOWN_LOAD (LH_LOAD_MULT) /* load times 256 (default 1) */
109 109
110static void expand(LHASH *lh); 110static void expand(_LHASH *lh);
111static void contract(LHASH *lh); 111static void contract(_LHASH *lh);
112static LHASH_NODE **getrn(LHASH *lh, const void *data, unsigned long *rhash); 112static LHASH_NODE **getrn(_LHASH *lh, const void *data, unsigned long *rhash);
113 113
114LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c) 114_LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c)
115 { 115 {
116 LHASH *ret; 116 _LHASH *ret;
117 int i; 117 int i;
118 118
119 if ((ret=(LHASH *)OPENSSL_malloc(sizeof(LHASH))) == NULL) 119 if ((ret=OPENSSL_malloc(sizeof(_LHASH))) == NULL)
120 goto err0; 120 goto err0;
121 if ((ret->b=(LHASH_NODE **)OPENSSL_malloc(sizeof(LHASH_NODE *)*MIN_NODES)) == NULL) 121 if ((ret->b=OPENSSL_malloc(sizeof(LHASH_NODE *)*MIN_NODES)) == NULL)
122 goto err1; 122 goto err1;
123 for (i=0; i<MIN_NODES; i++) 123 for (i=0; i<MIN_NODES; i++)
124 ret->b[i]=NULL; 124 ret->b[i]=NULL;
@@ -154,7 +154,7 @@ err0:
154 return(NULL); 154 return(NULL);
155 } 155 }
156 156
157void lh_free(LHASH *lh) 157void lh_free(_LHASH *lh)
158 { 158 {
159 unsigned int i; 159 unsigned int i;
160 LHASH_NODE *n,*nn; 160 LHASH_NODE *n,*nn;
@@ -176,7 +176,7 @@ void lh_free(LHASH *lh)
176 OPENSSL_free(lh); 176 OPENSSL_free(lh);
177 } 177 }
178 178
179void *lh_insert(LHASH *lh, void *data) 179void *lh_insert(_LHASH *lh, void *data)
180 { 180 {
181 unsigned long hash; 181 unsigned long hash;
182 LHASH_NODE *nn,**rn; 182 LHASH_NODE *nn,**rn;
@@ -214,7 +214,7 @@ void *lh_insert(LHASH *lh, void *data)
214 return(ret); 214 return(ret);
215 } 215 }
216 216
217void *lh_delete(LHASH *lh, const void *data) 217void *lh_delete(_LHASH *lh, const void *data)
218 { 218 {
219 unsigned long hash; 219 unsigned long hash;
220 LHASH_NODE *nn,**rn; 220 LHASH_NODE *nn,**rn;
@@ -245,7 +245,7 @@ void *lh_delete(LHASH *lh, const void *data)
245 return(ret); 245 return(ret);
246 } 246 }
247 247
248void *lh_retrieve(LHASH *lh, const void *data) 248void *lh_retrieve(_LHASH *lh, const void *data)
249 { 249 {
250 unsigned long hash; 250 unsigned long hash;
251 LHASH_NODE **rn; 251 LHASH_NODE **rn;
@@ -267,12 +267,15 @@ void *lh_retrieve(LHASH *lh, const void *data)
267 return(ret); 267 return(ret);
268 } 268 }
269 269
270static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func, 270static void doall_util_fn(_LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
271 LHASH_DOALL_ARG_FN_TYPE func_arg, void *arg) 271 LHASH_DOALL_ARG_FN_TYPE func_arg, void *arg)
272 { 272 {
273 int i; 273 int i;
274 LHASH_NODE *a,*n; 274 LHASH_NODE *a,*n;
275 275
276 if (lh == NULL)
277 return;
278
276 /* reverse the order so we search from 'top to bottom' 279 /* reverse the order so we search from 'top to bottom'
277 * We were having memory leaks otherwise */ 280 * We were having memory leaks otherwise */
278 for (i=lh->num_nodes-1; i>=0; i--) 281 for (i=lh->num_nodes-1; i>=0; i--)
@@ -282,6 +285,8 @@ static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
282 { 285 {
283 /* 28/05/91 - eay - n added so items can be deleted 286 /* 28/05/91 - eay - n added so items can be deleted
284 * via lh_doall */ 287 * via lh_doall */
288 /* 22/05/08 - ben - eh? since a is not passed,
289 * this should not be needed */
285 n=a->next; 290 n=a->next;
286 if(use_arg) 291 if(use_arg)
287 func_arg(a->data,arg); 292 func_arg(a->data,arg);
@@ -292,17 +297,17 @@ static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
292 } 297 }
293 } 298 }
294 299
295void lh_doall(LHASH *lh, LHASH_DOALL_FN_TYPE func) 300void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func)
296 { 301 {
297 doall_util_fn(lh, 0, func, (LHASH_DOALL_ARG_FN_TYPE)0, NULL); 302 doall_util_fn(lh, 0, func, (LHASH_DOALL_ARG_FN_TYPE)0, NULL);
298 } 303 }
299 304
300void lh_doall_arg(LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg) 305void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg)
301 { 306 {
302 doall_util_fn(lh, 1, (LHASH_DOALL_FN_TYPE)0, func, arg); 307 doall_util_fn(lh, 1, (LHASH_DOALL_FN_TYPE)0, func, arg);
303 } 308 }
304 309
305static void expand(LHASH *lh) 310static void expand(_LHASH *lh)
306 { 311 {
307 LHASH_NODE **n,**n1,**n2,*np; 312 LHASH_NODE **n,**n1,**n2,*np;
308 unsigned int p,i,j; 313 unsigned int p,i,j;
@@ -358,7 +363,7 @@ static void expand(LHASH *lh)
358 } 363 }
359 } 364 }
360 365
361static void contract(LHASH *lh) 366static void contract(_LHASH *lh)
362 { 367 {
363 LHASH_NODE **n,*n1,*np; 368 LHASH_NODE **n,*n1,*np;
364 369
@@ -397,7 +402,7 @@ static void contract(LHASH *lh)
397 } 402 }
398 } 403 }
399 404
400static LHASH_NODE **getrn(LHASH *lh, const void *data, unsigned long *rhash) 405static LHASH_NODE **getrn(_LHASH *lh, const void *data, unsigned long *rhash)
401 { 406 {
402 LHASH_NODE **ret,*n1; 407 LHASH_NODE **ret,*n1;
403 unsigned long hash,nn; 408 unsigned long hash,nn;
@@ -464,7 +469,7 @@ unsigned long lh_strhash(const char *c)
464 return((ret>>16)^ret); 469 return((ret>>16)^ret);
465 } 470 }
466 471
467unsigned long lh_num_items(const LHASH *lh) 472unsigned long lh_num_items(const _LHASH *lh)
468 { 473 {
469 return lh ? lh->num_items : 0; 474 return lh ? lh->num_items : 0;
470 } 475 }
diff --git a/src/lib/libssl/src/crypto/lhash/lhash.h b/src/lib/libssl/src/crypto/lhash/lhash.h
index d392d0cd80..e7d8763591 100644
--- a/src/lib/libssl/src/crypto/lhash/lhash.h
+++ b/src/lib/libssl/src/crypto/lhash/lhash.h
@@ -98,42 +98,42 @@ typedef void (*LHASH_DOALL_ARG_FN_TYPE)(void *, void *);
98 * macros if the functions are strictly internal. */ 98 * macros if the functions are strictly internal. */
99 99
100/* First: "hash" functions */ 100/* First: "hash" functions */
101#define DECLARE_LHASH_HASH_FN(f_name,o_type) \ 101#define DECLARE_LHASH_HASH_FN(name, o_type) \
102 unsigned long f_name##_LHASH_HASH(const void *); 102 unsigned long name##_LHASH_HASH(const void *);
103#define IMPLEMENT_LHASH_HASH_FN(f_name,o_type) \ 103#define IMPLEMENT_LHASH_HASH_FN(name, o_type) \
104 unsigned long f_name##_LHASH_HASH(const void *arg) { \ 104 unsigned long name##_LHASH_HASH(const void *arg) { \
105 o_type a = (o_type)arg; \ 105 const o_type *a = arg; \
106 return f_name(a); } 106 return name##_hash(a); }
107#define LHASH_HASH_FN(f_name) f_name##_LHASH_HASH 107#define LHASH_HASH_FN(name) name##_LHASH_HASH
108 108
109/* Second: "compare" functions */ 109/* Second: "compare" functions */
110#define DECLARE_LHASH_COMP_FN(f_name,o_type) \ 110#define DECLARE_LHASH_COMP_FN(name, o_type) \
111 int f_name##_LHASH_COMP(const void *, const void *); 111 int name##_LHASH_COMP(const void *, const void *);
112#define IMPLEMENT_LHASH_COMP_FN(f_name,o_type) \ 112#define IMPLEMENT_LHASH_COMP_FN(name, o_type) \
113 int f_name##_LHASH_COMP(const void *arg1, const void *arg2) { \ 113 int name##_LHASH_COMP(const void *arg1, const void *arg2) { \
114 o_type a = (o_type)arg1; \ 114 const o_type *a = arg1; \
115 o_type b = (o_type)arg2; \ 115 const o_type *b = arg2; \
116 return f_name(a,b); } 116 return name##_cmp(a,b); }
117#define LHASH_COMP_FN(f_name) f_name##_LHASH_COMP 117#define LHASH_COMP_FN(name) name##_LHASH_COMP
118 118
119/* Third: "doall" functions */ 119/* Third: "doall" functions */
120#define DECLARE_LHASH_DOALL_FN(f_name,o_type) \ 120#define DECLARE_LHASH_DOALL_FN(name, o_type) \
121 void f_name##_LHASH_DOALL(void *); 121 void name##_LHASH_DOALL(void *);
122#define IMPLEMENT_LHASH_DOALL_FN(f_name,o_type) \ 122#define IMPLEMENT_LHASH_DOALL_FN(name, o_type) \
123 void f_name##_LHASH_DOALL(void *arg) { \ 123 void name##_LHASH_DOALL(void *arg) { \
124 o_type a = (o_type)arg; \ 124 o_type *a = arg; \
125 f_name(a); } 125 name##_doall(a); }
126#define LHASH_DOALL_FN(f_name) f_name##_LHASH_DOALL 126#define LHASH_DOALL_FN(name) name##_LHASH_DOALL
127 127
128/* Fourth: "doall_arg" functions */ 128/* Fourth: "doall_arg" functions */
129#define DECLARE_LHASH_DOALL_ARG_FN(f_name,o_type,a_type) \ 129#define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \
130 void f_name##_LHASH_DOALL_ARG(void *, void *); 130 void name##_LHASH_DOALL_ARG(void *, void *);
131#define IMPLEMENT_LHASH_DOALL_ARG_FN(f_name,o_type,a_type) \ 131#define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \
132 void f_name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \ 132 void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \
133 o_type a = (o_type)arg1; \ 133 o_type *a = arg1; \
134 a_type b = (a_type)arg2; \ 134 a_type *b = arg2; \
135 f_name(a,b); } 135 name##_doall_arg(a, b); }
136#define LHASH_DOALL_ARG_FN(f_name) f_name##_LHASH_DOALL_ARG 136#define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG
137 137
138typedef struct lhash_st 138typedef struct lhash_st
139 { 139 {
@@ -163,7 +163,8 @@ typedef struct lhash_st
163 unsigned long num_hash_comps; 163 unsigned long num_hash_comps;
164 164
165 int error; 165 int error;
166 } LHASH; 166 } _LHASH; /* Do not use _LHASH directly, use LHASH_OF
167 * and friends */
167 168
168#define LH_LOAD_MULT 256 169#define LH_LOAD_MULT 256
169 170
@@ -171,27 +172,67 @@ typedef struct lhash_st
171 * in lh_insert(). */ 172 * in lh_insert(). */
172#define lh_error(lh) ((lh)->error) 173#define lh_error(lh) ((lh)->error)
173 174
174LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c); 175_LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c);
175void lh_free(LHASH *lh); 176void lh_free(_LHASH *lh);
176void *lh_insert(LHASH *lh, void *data); 177void *lh_insert(_LHASH *lh, void *data);
177void *lh_delete(LHASH *lh, const void *data); 178void *lh_delete(_LHASH *lh, const void *data);
178void *lh_retrieve(LHASH *lh, const void *data); 179void *lh_retrieve(_LHASH *lh, const void *data);
179void lh_doall(LHASH *lh, LHASH_DOALL_FN_TYPE func); 180void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func);
180void lh_doall_arg(LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg); 181void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg);
181unsigned long lh_strhash(const char *c); 182unsigned long lh_strhash(const char *c);
182unsigned long lh_num_items(const LHASH *lh); 183unsigned long lh_num_items(const _LHASH *lh);
183 184
184#ifndef OPENSSL_NO_FP_API 185#ifndef OPENSSL_NO_FP_API
185void lh_stats(const LHASH *lh, FILE *out); 186void lh_stats(const _LHASH *lh, FILE *out);
186void lh_node_stats(const LHASH *lh, FILE *out); 187void lh_node_stats(const _LHASH *lh, FILE *out);
187void lh_node_usage_stats(const LHASH *lh, FILE *out); 188void lh_node_usage_stats(const _LHASH *lh, FILE *out);
188#endif 189#endif
189 190
190#ifndef OPENSSL_NO_BIO 191#ifndef OPENSSL_NO_BIO
191void lh_stats_bio(const LHASH *lh, BIO *out); 192void lh_stats_bio(const _LHASH *lh, BIO *out);
192void lh_node_stats_bio(const LHASH *lh, BIO *out); 193void lh_node_stats_bio(const _LHASH *lh, BIO *out);
193void lh_node_usage_stats_bio(const LHASH *lh, BIO *out); 194void lh_node_usage_stats_bio(const _LHASH *lh, BIO *out);
194#endif 195#endif
196
197/* Type checking... */
198
199#define LHASH_OF(type) struct lhash_st_##type
200
201#define DECLARE_LHASH_OF(type) LHASH_OF(type) { int dummy; }
202
203#define CHECKED_LHASH_OF(type,lh) \
204 ((_LHASH *)CHECKED_PTR_OF(LHASH_OF(type),lh))
205
206/* Define wrapper functions. */
207#define LHM_lh_new(type, name) \
208 ((LHASH_OF(type) *)lh_new(LHASH_HASH_FN(name), LHASH_COMP_FN(name)))
209#define LHM_lh_error(type, lh) \
210 lh_error(CHECKED_LHASH_OF(type,lh))
211#define LHM_lh_insert(type, lh, inst) \
212 ((type *)lh_insert(CHECKED_LHASH_OF(type, lh), \
213 CHECKED_PTR_OF(type, inst)))
214#define LHM_lh_retrieve(type, lh, inst) \
215 ((type *)lh_retrieve(CHECKED_LHASH_OF(type, lh), \
216 CHECKED_PTR_OF(type, inst)))
217#define LHM_lh_delete(type, lh, inst) \
218 ((type *)lh_delete(CHECKED_LHASH_OF(type, lh), \
219 CHECKED_PTR_OF(type, inst)))
220#define LHM_lh_doall(type, lh,fn) lh_doall(CHECKED_LHASH_OF(type, lh), fn)
221#define LHM_lh_doall_arg(type, lh, fn, arg_type, arg) \
222 lh_doall_arg(CHECKED_LHASH_OF(type, lh), fn, CHECKED_PTR_OF(arg_type, arg))
223#define LHM_lh_num_items(type, lh) lh_num_items(CHECKED_LHASH_OF(type, lh))
224#define LHM_lh_down_load(type, lh) (CHECKED_LHASH_OF(type, lh)->down_load)
225#define LHM_lh_node_stats_bio(type, lh, out) \
226 lh_node_stats_bio(CHECKED_LHASH_OF(type, lh), out)
227#define LHM_lh_node_usage_stats_bio(type, lh, out) \
228 lh_node_usage_stats_bio(CHECKED_LHASH_OF(type, lh), out)
229#define LHM_lh_stats_bio(type, lh, out) \
230 lh_stats_bio(CHECKED_LHASH_OF(type, lh), out)
231#define LHM_lh_free(type, lh) lh_free(CHECKED_LHASH_OF(type, lh))
232
233DECLARE_LHASH_OF(OPENSSL_STRING);
234DECLARE_LHASH_OF(OPENSSL_CSTRING);
235
195#ifdef __cplusplus 236#ifdef __cplusplus
196} 237}
197#endif 238#endif
diff --git a/src/lib/libssl/src/crypto/md2/Makefile b/src/lib/libssl/src/crypto/md2/Makefile
index 7f43321ab2..17f878aeb7 100644
--- a/src/lib/libssl/src/crypto/md2/Makefile
+++ b/src/lib/libssl/src/crypto/md2/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -74,9 +74,7 @@ clean:
74 74
75# DO NOT DELETE THIS LINE -- make depend depends on it. 75# DO NOT DELETE THIS LINE -- make depend depends on it.
76 76
77md2_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 77md2_dgst.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
78md2_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
79md2_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
80md2_dgst.o: ../../include/openssl/md2.h ../../include/openssl/opensslconf.h 78md2_dgst.o: ../../include/openssl/md2.h ../../include/openssl/opensslconf.h
81md2_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 79md2_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
82md2_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 80md2_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
diff --git a/src/lib/libssl/src/crypto/md2/md2.h b/src/lib/libssl/src/crypto/md2/md2.h
index d59c9f2593..a46120e7d4 100644
--- a/src/lib/libssl/src/crypto/md2/md2.h
+++ b/src/lib/libssl/src/crypto/md2/md2.h
@@ -81,9 +81,6 @@ typedef struct MD2state_st
81 } MD2_CTX; 81 } MD2_CTX;
82 82
83const char *MD2_options(void); 83const char *MD2_options(void);
84#ifdef OPENSSL_FIPS
85int private_MD2_Init(MD2_CTX *c);
86#endif
87int MD2_Init(MD2_CTX *c); 84int MD2_Init(MD2_CTX *c);
88int MD2_Update(MD2_CTX *c, const unsigned char *data, size_t len); 85int MD2_Update(MD2_CTX *c, const unsigned char *data, size_t len);
89int MD2_Final(unsigned char *md, MD2_CTX *c); 86int MD2_Final(unsigned char *md, MD2_CTX *c);
diff --git a/src/lib/libssl/src/crypto/md2/md2_dgst.c b/src/lib/libssl/src/crypto/md2/md2_dgst.c
index cc4eeaf7a7..c57b3da288 100644
--- a/src/lib/libssl/src/crypto/md2/md2_dgst.c
+++ b/src/lib/libssl/src/crypto/md2/md2_dgst.c
@@ -62,11 +62,6 @@
62#include <openssl/md2.h> 62#include <openssl/md2.h>
63#include <openssl/opensslv.h> 63#include <openssl/opensslv.h>
64#include <openssl/crypto.h> 64#include <openssl/crypto.h>
65#ifdef OPENSSL_FIPS
66#include <openssl/fips.h>
67#endif
68
69#include <openssl/err.h>
70 65
71const char MD2_version[]="MD2" OPENSSL_VERSION_PTEXT; 66const char MD2_version[]="MD2" OPENSSL_VERSION_PTEXT;
72 67
@@ -78,7 +73,7 @@ const char MD2_version[]="MD2" OPENSSL_VERSION_PTEXT;
78static void md2_block(MD2_CTX *c, const unsigned char *d); 73static void md2_block(MD2_CTX *c, const unsigned char *d);
79/* The magic S table - I have converted it to hex since it is 74/* The magic S table - I have converted it to hex since it is
80 * basically just a random byte string. */ 75 * basically just a random byte string. */
81static MD2_INT S[256]={ 76static const MD2_INT S[256]={
82 0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01, 77 0x29, 0x2E, 0x43, 0xC9, 0xA2, 0xD8, 0x7C, 0x01,
83 0x3D, 0x36, 0x54, 0xA1, 0xEC, 0xF0, 0x06, 0x13, 78 0x3D, 0x36, 0x54, 0xA1, 0xEC, 0xF0, 0x06, 0x13,
84 0x62, 0xA7, 0x05, 0xF3, 0xC0, 0xC7, 0x73, 0x8C, 79 0x62, 0xA7, 0x05, 0xF3, 0xC0, 0xC7, 0x73, 0x8C,
@@ -121,7 +116,7 @@ const char *MD2_options(void)
121 return("md2(int)"); 116 return("md2(int)");
122 } 117 }
123 118
124FIPS_NON_FIPS_MD_Init(MD2) 119int MD2_Init(MD2_CTX *c)
125 { 120 {
126 c->num=0; 121 c->num=0;
127 memset(c->state,0,sizeof c->state); 122 memset(c->state,0,sizeof c->state);
diff --git a/src/lib/libssl/src/crypto/md32_common.h b/src/lib/libssl/src/crypto/md32_common.h
index 61bcd9786f..1cb783944e 100644
--- a/src/lib/libssl/src/crypto/md32_common.h
+++ b/src/lib/libssl/src/crypto/md32_common.h
@@ -241,11 +241,11 @@
241#ifndef PEDANTIC 241#ifndef PEDANTIC
242# if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) 242# if defined(__GNUC__) && __GNUC__>=2 && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM)
243# if defined(__s390x__) 243# if defined(__s390x__)
244# define HOST_c2l(c,l) ({ asm ("lrv %0,0(%1)" \ 244# define HOST_c2l(c,l) ({ asm ("lrv %0,%1" \
245 :"=r"(l) : "r"(c)); \ 245 :"=d"(l) :"m"(*(const unsigned int *)(c)));\
246 (c)+=4; (l); }) 246 (c)+=4; (l); })
247# define HOST_l2c(l,c) ({ asm ("strv %0,0(%1)" \ 247# define HOST_l2c(l,c) ({ asm ("strv %1,%0" \
248 : : "r"(l),"r"(c) : "memory"); \ 248 :"=m"(*(unsigned int *)(c)) :"d"(l));\
249 (c)+=4; (l); }) 249 (c)+=4; (l); })
250# endif 250# endif
251# endif 251# endif
@@ -293,7 +293,7 @@ int HASH_UPDATE (HASH_CTX *c, const void *data_, size_t len)
293 * Wei Dai <weidai@eskimo.com> for pointing it out. */ 293 * Wei Dai <weidai@eskimo.com> for pointing it out. */
294 if (l < c->Nl) /* overflow */ 294 if (l < c->Nl) /* overflow */
295 c->Nh++; 295 c->Nh++;
296 c->Nh+=(len>>29); /* might cause compiler warning on 16-bit */ 296 c->Nh+=(HASH_LONG)(len>>29); /* might cause compiler warning on 16-bit */
297 c->Nl=l; 297 c->Nl=l;
298 298
299 n = c->num; 299 n = c->num;
@@ -331,7 +331,7 @@ int HASH_UPDATE (HASH_CTX *c, const void *data_, size_t len)
331 if (len != 0) 331 if (len != 0)
332 { 332 {
333 p = (unsigned char *)c->data; 333 p = (unsigned char *)c->data;
334 c->num = len; 334 c->num = (unsigned int)len;
335 memcpy (p,data,len); 335 memcpy (p,data,len);
336 } 336 }
337 return 1; 337 return 1;
diff --git a/src/lib/libssl/src/crypto/md4/Makefile b/src/lib/libssl/src/crypto/md4/Makefile
index 0bc4896585..c94a1398ed 100644
--- a/src/lib/libssl/src/crypto/md4/Makefile
+++ b/src/lib/libssl/src/crypto/md4/Makefile
@@ -34,7 +34,7 @@ top:
34all: lib 34all: lib
35 35
36lib: $(LIBOBJ) 36lib: $(LIBOBJ)
37 $(ARX) $(LIB) $(LIBOBJ) 37 $(AR) $(LIB) $(LIBOBJ)
38 $(RANLIB) $(LIB) || echo Never mind. 38 $(RANLIB) $(LIB) || echo Never mind.
39 @touch lib 39 @touch lib
40 40
@@ -69,19 +69,16 @@ depend:
69dclean: 69dclean:
70 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new 70 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
71 mv -f Makefile.new $(MAKEFILE) 71 mv -f Makefile.new $(MAKEFILE)
72 rm -f ../../include/openssl/$(EXHEADER) ../../test/$(TEST) ../../apps/$(APPS)
72 73
73clean: 74clean:
74 rm -f asm/mx86unix.cpp *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff 75 rm -f asm/mx86unix.cpp *.o asm/*.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
75 76
76# DO NOT DELETE THIS LINE -- make depend depends on it. 77# DO NOT DELETE THIS LINE -- make depend depends on it.
77 78
78md4_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 79md4_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/md4.h
79md4_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 80md4_dgst.o: ../../include/openssl/opensslconf.h
80md4_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 81md4_dgst.o: ../../include/openssl/opensslv.h ../md32_common.h md4_dgst.c
81md4_dgst.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h
82md4_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
83md4_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
84md4_dgst.o: ../../include/openssl/symhacks.h ../md32_common.h md4_dgst.c
85md4_dgst.o: md4_locl.h 82md4_dgst.o: md4_locl.h
86md4_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 83md4_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
87md4_one.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h 84md4_one.o: ../../include/openssl/md4.h ../../include/openssl/opensslconf.h
diff --git a/src/lib/libssl/src/crypto/md4/md4.h b/src/lib/libssl/src/crypto/md4/md4.h
index ba1fe4a6ee..c3ed9b3f75 100644
--- a/src/lib/libssl/src/crypto/md4/md4.h
+++ b/src/lib/libssl/src/crypto/md4/md4.h
@@ -77,7 +77,7 @@ extern "C" {
77 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 77 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
78 */ 78 */
79 79
80#if defined(OPENSSL_SYS_WIN16) || defined(__LP32__) 80#if defined(__LP32__)
81#define MD4_LONG unsigned long 81#define MD4_LONG unsigned long
82#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) 82#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__)
83#define MD4_LONG unsigned long 83#define MD4_LONG unsigned long
@@ -105,9 +105,6 @@ typedef struct MD4state_st
105 unsigned int num; 105 unsigned int num;
106 } MD4_CTX; 106 } MD4_CTX;
107 107
108#ifdef OPENSSL_FIPS
109int private_MD4_Init(MD4_CTX *c);
110#endif
111int MD4_Init(MD4_CTX *c); 108int MD4_Init(MD4_CTX *c);
112int MD4_Update(MD4_CTX *c, const void *data, size_t len); 109int MD4_Update(MD4_CTX *c, const void *data, size_t len);
113int MD4_Final(unsigned char *md, MD4_CTX *c); 110int MD4_Final(unsigned char *md, MD4_CTX *c);
diff --git a/src/lib/libssl/src/crypto/md4/md4_dgst.c b/src/lib/libssl/src/crypto/md4/md4_dgst.c
index 0f5448601d..e0c42e8596 100644
--- a/src/lib/libssl/src/crypto/md4/md4_dgst.c
+++ b/src/lib/libssl/src/crypto/md4/md4_dgst.c
@@ -59,11 +59,6 @@
59#include <stdio.h> 59#include <stdio.h>
60#include "md4_locl.h" 60#include "md4_locl.h"
61#include <openssl/opensslv.h> 61#include <openssl/opensslv.h>
62#include <openssl/err.h>
63#ifdef OPENSSL_FIPS
64#include <openssl/fips.h>
65#endif
66
67 62
68const char MD4_version[]="MD4" OPENSSL_VERSION_PTEXT; 63const char MD4_version[]="MD4" OPENSSL_VERSION_PTEXT;
69 64
@@ -75,15 +70,13 @@ const char MD4_version[]="MD4" OPENSSL_VERSION_PTEXT;
75#define INIT_DATA_C (unsigned long)0x98badcfeL 70#define INIT_DATA_C (unsigned long)0x98badcfeL
76#define INIT_DATA_D (unsigned long)0x10325476L 71#define INIT_DATA_D (unsigned long)0x10325476L
77 72
78FIPS_NON_FIPS_MD_Init(MD4) 73int MD4_Init(MD4_CTX *c)
79 { 74 {
75 memset (c,0,sizeof(*c));
80 c->A=INIT_DATA_A; 76 c->A=INIT_DATA_A;
81 c->B=INIT_DATA_B; 77 c->B=INIT_DATA_B;
82 c->C=INIT_DATA_C; 78 c->C=INIT_DATA_C;
83 c->D=INIT_DATA_D; 79 c->D=INIT_DATA_D;
84 c->Nl=0;
85 c->Nh=0;
86 c->num=0;
87 return 1; 80 return 1;
88 } 81 }
89 82
diff --git a/src/lib/libssl/src/crypto/md5/Makefile b/src/lib/libssl/src/crypto/md5/Makefile
index 3c450fcfc0..9858d53d31 100644
--- a/src/lib/libssl/src/crypto/md5/Makefile
+++ b/src/lib/libssl/src/crypto/md5/Makefile
@@ -38,21 +38,19 @@ top:
38all: lib 38all: lib
39 39
40lib: $(LIBOBJ) 40lib: $(LIBOBJ)
41 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
42 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
43 @touch lib 43 @touch lib
44 44
45# ELF 45md5-586.s: asm/md5-586.pl ../perlasm/x86asm.pl
46mx86-elf.s: asm/md5-586.pl ../perlasm/x86asm.pl 46 $(PERL) asm/md5-586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
47 (cd asm; $(PERL) md5-586.pl elf $(CFLAGS) > ../$@)
48# COFF
49mx86-cof.s: asm/md5-586.pl ../perlasm/x86asm.pl
50 (cd asm; $(PERL) md5-586.pl coff $(CFLAGS) > ../$@)
51# a.out
52mx86-out.s: asm/md5-586.pl ../perlasm/x86asm.pl
53 (cd asm; $(PERL) md5-586.pl a.out $(CFLAGS) > ../$@)
54 47
55md5-x86_64.s: asm/md5-x86_64.pl; $(PERL) asm/md5-x86_64.pl $@ 48md5-x86_64.s: asm/md5-x86_64.pl
49 $(PERL) asm/md5-x86_64.pl $(PERLASM_SCHEME) > $@
50
51md5-ia64.s: asm/md5-ia64.S
52 $(CC) $(CFLAGS) -E asm/md5-ia64.S | \
53 $(PERL) -ne 's/;\s+/;\n/g; print;' > $@
56 54
57files: 55files:
58 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 56 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -91,13 +89,9 @@ clean:
91 89
92# DO NOT DELETE THIS LINE -- make depend depends on it. 90# DO NOT DELETE THIS LINE -- make depend depends on it.
93 91
94md5_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 92md5_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/md5.h
95md5_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 93md5_dgst.o: ../../include/openssl/opensslconf.h
96md5_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 94md5_dgst.o: ../../include/openssl/opensslv.h ../md32_common.h md5_dgst.c
97md5_dgst.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h
98md5_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
99md5_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
100md5_dgst.o: ../../include/openssl/symhacks.h ../md32_common.h md5_dgst.c
101md5_dgst.o: md5_locl.h 95md5_dgst.o: md5_locl.h
102md5_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 96md5_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
103md5_one.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h 97md5_one.o: ../../include/openssl/md5.h ../../include/openssl/opensslconf.h
diff --git a/src/lib/libssl/src/crypto/md5/asm/md5-586.pl b/src/lib/libssl/src/crypto/md5/asm/md5-586.pl
index 76ac235f7d..6cb66bb499 100644
--- a/src/lib/libssl/src/crypto/md5/asm/md5-586.pl
+++ b/src/lib/libssl/src/crypto/md5/asm/md5-586.pl
@@ -7,7 +7,8 @@
7 7
8$normal=0; 8$normal=0;
9 9
10push(@INC,"perlasm","../../perlasm"); 10$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
11push(@INC,"${dir}","${dir}../../perlasm");
11require "x86asm.pl"; 12require "x86asm.pl";
12 13
13&asm_init($ARGV[0],$0); 14&asm_init($ARGV[0],$0);
diff --git a/src/lib/libssl/src/crypto/md5/md5.h b/src/lib/libssl/src/crypto/md5/md5.h
index 0761f84a27..4cbf84386b 100644
--- a/src/lib/libssl/src/crypto/md5/md5.h
+++ b/src/lib/libssl/src/crypto/md5/md5.h
@@ -77,7 +77,7 @@ extern "C" {
77 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 77 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
78 */ 78 */
79 79
80#if defined(OPENSSL_SYS_WIN16) || defined(__LP32__) 80#if defined(__LP32__)
81#define MD5_LONG unsigned long 81#define MD5_LONG unsigned long
82#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) 82#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__)
83#define MD5_LONG unsigned long 83#define MD5_LONG unsigned long
@@ -105,9 +105,6 @@ typedef struct MD5state_st
105 unsigned int num; 105 unsigned int num;
106 } MD5_CTX; 106 } MD5_CTX;
107 107
108#ifdef OPENSSL_FIPS
109int private_MD5_Init(MD5_CTX *c);
110#endif
111int MD5_Init(MD5_CTX *c); 108int MD5_Init(MD5_CTX *c);
112int MD5_Update(MD5_CTX *c, const void *data, size_t len); 109int MD5_Update(MD5_CTX *c, const void *data, size_t len);
113int MD5_Final(unsigned char *md, MD5_CTX *c); 110int MD5_Final(unsigned char *md, MD5_CTX *c);
diff --git a/src/lib/libssl/src/crypto/md5/md5_dgst.c b/src/lib/libssl/src/crypto/md5/md5_dgst.c
index 47bb9020ee..beace632e3 100644
--- a/src/lib/libssl/src/crypto/md5/md5_dgst.c
+++ b/src/lib/libssl/src/crypto/md5/md5_dgst.c
@@ -59,11 +59,6 @@
59#include <stdio.h> 59#include <stdio.h>
60#include "md5_locl.h" 60#include "md5_locl.h"
61#include <openssl/opensslv.h> 61#include <openssl/opensslv.h>
62#include <openssl/err.h>
63#ifdef OPENSSL_FIPS
64#include <openssl/fips.h>
65#endif
66
67 62
68const char MD5_version[]="MD5" OPENSSL_VERSION_PTEXT; 63const char MD5_version[]="MD5" OPENSSL_VERSION_PTEXT;
69 64
@@ -75,15 +70,13 @@ const char MD5_version[]="MD5" OPENSSL_VERSION_PTEXT;
75#define INIT_DATA_C (unsigned long)0x98badcfeL 70#define INIT_DATA_C (unsigned long)0x98badcfeL
76#define INIT_DATA_D (unsigned long)0x10325476L 71#define INIT_DATA_D (unsigned long)0x10325476L
77 72
78FIPS_NON_FIPS_MD_Init(MD5) 73int MD5_Init(MD5_CTX *c)
79 { 74 {
75 memset (c,0,sizeof(*c));
80 c->A=INIT_DATA_A; 76 c->A=INIT_DATA_A;
81 c->B=INIT_DATA_B; 77 c->B=INIT_DATA_B;
82 c->C=INIT_DATA_C; 78 c->C=INIT_DATA_C;
83 c->D=INIT_DATA_D; 79 c->D=INIT_DATA_D;
84 c->Nl=0;
85 c->Nh=0;
86 c->num=0;
87 return 1; 80 return 1;
88 } 81 }
89 82
diff --git a/src/lib/libssl/src/crypto/md5/md5_locl.h b/src/lib/libssl/src/crypto/md5/md5_locl.h
index 84e81b960d..968d577995 100644
--- a/src/lib/libssl/src/crypto/md5/md5_locl.h
+++ b/src/lib/libssl/src/crypto/md5/md5_locl.h
@@ -69,6 +69,8 @@
69# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__INTEL__) || \ 69# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__INTEL__) || \
70 defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64) 70 defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64)
71# define md5_block_data_order md5_block_asm_data_order 71# define md5_block_data_order md5_block_asm_data_order
72# elif defined(__ia64) || defined(__ia64__) || defined(_M_IA64)
73# define md5_block_data_order md5_block_asm_data_order
72# endif 74# endif
73#endif 75#endif
74 76
diff --git a/src/lib/libssl/src/crypto/mdc2/Makefile b/src/lib/libssl/src/crypto/mdc2/Makefile
index ea25688d88..1d064f17a6 100644
--- a/src/lib/libssl/src/crypto/mdc2/Makefile
+++ b/src/lib/libssl/src/crypto/mdc2/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
diff --git a/src/lib/libssl/src/crypto/mdc2/mdc2.h b/src/lib/libssl/src/crypto/mdc2/mdc2.h
index 7e1354116a..72778a5212 100644
--- a/src/lib/libssl/src/crypto/mdc2/mdc2.h
+++ b/src/lib/libssl/src/crypto/mdc2/mdc2.h
@@ -80,9 +80,7 @@ typedef struct mdc2_ctx_st
80 int pad_type; /* either 1 or 2, default 1 */ 80 int pad_type; /* either 1 or 2, default 1 */
81 } MDC2_CTX; 81 } MDC2_CTX;
82 82
83#ifdef OPENSSL_FIPS 83
84int private_MDC2_Init(MDC2_CTX *c);
85#endif
86int MDC2_Init(MDC2_CTX *c); 84int MDC2_Init(MDC2_CTX *c);
87int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len); 85int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len);
88int MDC2_Final(unsigned char *md, MDC2_CTX *c); 86int MDC2_Final(unsigned char *md, MDC2_CTX *c);
diff --git a/src/lib/libssl/src/crypto/mem.c b/src/lib/libssl/src/crypto/mem.c
index 00ebaf0b9b..6f80dd33eb 100644
--- a/src/lib/libssl/src/crypto/mem.c
+++ b/src/lib/libssl/src/crypto/mem.c
@@ -101,7 +101,7 @@ static void (*free_locked_func)(void *) = free;
101 101
102/* may be changed as long as 'allow_customize_debug' is set */ 102/* may be changed as long as 'allow_customize_debug' is set */
103/* XXX use correct function pointer types */ 103/* XXX use correct function pointer types */
104#if defined(CRYPTO_MDEBUG) && !defined(OPENSSL_FIPS) 104#ifdef CRYPTO_MDEBUG
105/* use default functions from mem_dbg.c */ 105/* use default functions from mem_dbg.c */
106static void (*malloc_debug_func)(void *,int,const char *,int,int) 106static void (*malloc_debug_func)(void *,int,const char *,int,int)
107 = CRYPTO_dbg_malloc; 107 = CRYPTO_dbg_malloc;
@@ -110,14 +110,6 @@ static void (*realloc_debug_func)(void *,void *,int,const char *,int,int)
110static void (*free_debug_func)(void *,int) = CRYPTO_dbg_free; 110static void (*free_debug_func)(void *,int) = CRYPTO_dbg_free;
111static void (*set_debug_options_func)(long) = CRYPTO_dbg_set_options; 111static void (*set_debug_options_func)(long) = CRYPTO_dbg_set_options;
112static long (*get_debug_options_func)(void) = CRYPTO_dbg_get_options; 112static long (*get_debug_options_func)(void) = CRYPTO_dbg_get_options;
113
114static int (*push_info_func)(const char *info, const char *file, int line)
115 = CRYPTO_dbg_push_info;
116static int (*pop_info_func)(void)
117 = CRYPTO_dbg_pop_info;
118static int (*remove_all_info_func)(void)
119 = CRYPTO_dbg_remove_all_info;
120
121#else 113#else
122/* applications can use CRYPTO_malloc_debug_init() to select above case 114/* applications can use CRYPTO_malloc_debug_init() to select above case
123 * at run-time */ 115 * at run-time */
@@ -127,13 +119,6 @@ static void (*realloc_debug_func)(void *,void *,int,const char *,int,int)
127static void (*free_debug_func)(void *,int) = NULL; 119static void (*free_debug_func)(void *,int) = NULL;
128static void (*set_debug_options_func)(long) = NULL; 120static void (*set_debug_options_func)(long) = NULL;
129static long (*get_debug_options_func)(void) = NULL; 121static long (*get_debug_options_func)(void) = NULL;
130
131
132static int (*push_info_func)(const char *info, const char *file, int line)
133 = NULL;
134static int (*pop_info_func)(void) = NULL;
135static int (*remove_all_info_func)(void) = NULL;
136
137#endif 122#endif
138 123
139 124
@@ -209,15 +194,6 @@ int CRYPTO_set_mem_debug_functions(void (*m)(void *,int,const char *,int,int),
209 return 1; 194 return 1;
210 } 195 }
211 196
212void CRYPTO_set_mem_info_functions(
213 int (*push_info_fn)(const char *info, const char *file, int line),
214 int (*pop_info_fn)(void),
215 int (*remove_all_info_fn)(void))
216 {
217 push_info_func = push_info_fn;
218 pop_info_func = pop_info_fn;
219 remove_all_info_func = remove_all_info_fn;
220 }
221 197
222void CRYPTO_get_mem_functions(void *(**m)(size_t), void *(**r)(void *, size_t), 198void CRYPTO_get_mem_functions(void *(**m)(size_t), void *(**r)(void *, size_t),
223 void (**f)(void *)) 199 void (**f)(void *))
@@ -274,7 +250,6 @@ void CRYPTO_get_mem_debug_functions(void (**m)(void *,int,const char *,int,int),
274void *CRYPTO_malloc_locked(int num, const char *file, int line) 250void *CRYPTO_malloc_locked(int num, const char *file, int line)
275 { 251 {
276 void *ret = NULL; 252 void *ret = NULL;
277 extern unsigned char cleanse_ctr;
278 253
279 if (num <= 0) return NULL; 254 if (num <= 0) return NULL;
280 255
@@ -291,11 +266,15 @@ void *CRYPTO_malloc_locked(int num, const char *file, int line)
291 if (malloc_debug_func != NULL) 266 if (malloc_debug_func != NULL)
292 malloc_debug_func(ret, num, file, line, 1); 267 malloc_debug_func(ret, num, file, line, 1);
293 268
269#ifndef OPENSSL_CPUID_OBJ
294 /* Create a dependency on the value of 'cleanse_ctr' so our memory 270 /* Create a dependency on the value of 'cleanse_ctr' so our memory
295 * sanitisation function can't be optimised out. NB: We only do 271 * sanitisation function can't be optimised out. NB: We only do
296 * this for >2Kb so the overhead doesn't bother us. */ 272 * this for >2Kb so the overhead doesn't bother us. */
297 if(ret && (num > 2048)) 273 if(ret && (num > 2048))
274 { extern unsigned char cleanse_ctr;
298 ((unsigned char *)ret)[0] = cleanse_ctr; 275 ((unsigned char *)ret)[0] = cleanse_ctr;
276 }
277#endif
299 278
300 return ret; 279 return ret;
301 } 280 }
@@ -315,7 +294,6 @@ void CRYPTO_free_locked(void *str)
315void *CRYPTO_malloc(int num, const char *file, int line) 294void *CRYPTO_malloc(int num, const char *file, int line)
316 { 295 {
317 void *ret = NULL; 296 void *ret = NULL;
318 extern unsigned char cleanse_ctr;
319 297
320 if (num <= 0) return NULL; 298 if (num <= 0) return NULL;
321 299
@@ -332,12 +310,23 @@ void *CRYPTO_malloc(int num, const char *file, int line)
332 if (malloc_debug_func != NULL) 310 if (malloc_debug_func != NULL)
333 malloc_debug_func(ret, num, file, line, 1); 311 malloc_debug_func(ret, num, file, line, 1);
334 312
313#ifndef OPENSSL_CPUID_OBJ
335 /* Create a dependency on the value of 'cleanse_ctr' so our memory 314 /* Create a dependency on the value of 'cleanse_ctr' so our memory
336 * sanitisation function can't be optimised out. NB: We only do 315 * sanitisation function can't be optimised out. NB: We only do
337 * this for >2Kb so the overhead doesn't bother us. */ 316 * this for >2Kb so the overhead doesn't bother us. */
338 if(ret && (num > 2048)) 317 if(ret && (num > 2048))
318 { extern unsigned char cleanse_ctr;
339 ((unsigned char *)ret)[0] = cleanse_ctr; 319 ((unsigned char *)ret)[0] = cleanse_ctr;
320 }
321#endif
322
323 return ret;
324 }
325char *CRYPTO_strdup(const char *str, const char *file, int line)
326 {
327 char *ret = CRYPTO_malloc(strlen(str)+1, file, line);
340 328
329 strcpy(ret, str);
341 return ret; 330 return ret;
342 } 331 }
343 332
@@ -423,24 +412,3 @@ long CRYPTO_get_mem_debug_options(void)
423 return get_debug_options_func(); 412 return get_debug_options_func();
424 return 0; 413 return 0;
425 } 414 }
426
427int CRYPTO_push_info_(const char *info, const char *file, int line)
428 {
429 if (push_info_func)
430 return push_info_func(info, file, line);
431 return 1;
432 }
433
434int CRYPTO_pop_info(void)
435 {
436 if (pop_info_func)
437 return pop_info_func();
438 return 1;
439 }
440
441int CRYPTO_remove_all_info(void)
442 {
443 if (remove_all_info_func)
444 return remove_all_info_func();
445 return 1;
446 }
diff --git a/src/lib/libssl/src/crypto/mem_dbg.c b/src/lib/libssl/src/crypto/mem_dbg.c
index dfeb084799..ac793397f1 100644
--- a/src/lib/libssl/src/crypto/mem_dbg.c
+++ b/src/lib/libssl/src/crypto/mem_dbg.c
@@ -55,6 +55,59 @@
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ====================================================================
59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60 *
61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions
63 * are met:
64 *
65 * 1. Redistributions of source code must retain the above copyright
66 * notice, this list of conditions and the following disclaimer.
67 *
68 * 2. Redistributions in binary form must reproduce the above copyright
69 * notice, this list of conditions and the following disclaimer in
70 * the documentation and/or other materials provided with the
71 * distribution.
72 *
73 * 3. All advertising materials mentioning features or use of this
74 * software must display the following acknowledgment:
75 * "This product includes software developed by the OpenSSL Project
76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77 *
78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79 * endorse or promote products derived from this software without
80 * prior written permission. For written permission, please contact
81 * openssl-core@openssl.org.
82 *
83 * 5. Products derived from this software may not be called "OpenSSL"
84 * nor may "OpenSSL" appear in their names without prior written
85 * permission of the OpenSSL Project.
86 *
87 * 6. Redistributions of any form whatsoever must retain the following
88 * acknowledgment:
89 * "This product includes software developed by the OpenSSL Project
90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91 *
92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103 * OF THE POSSIBILITY OF SUCH DAMAGE.
104 * ====================================================================
105 *
106 * This product includes cryptographic software written by Eric Young
107 * (eay@cryptsoft.com). This product includes software written by Tim
108 * Hudson (tjh@cryptsoft.com).
109 *
110 */
58 111
59#include <stdio.h> 112#include <stdio.h>
60#include <stdlib.h> 113#include <stdlib.h>
@@ -81,8 +134,11 @@ static int mh_mode=CRYPTO_MEM_CHECK_OFF;
81 */ 134 */
82 135
83static unsigned long order = 0; /* number of memory requests */ 136static unsigned long order = 0; /* number of memory requests */
84static LHASH *mh=NULL; /* hash-table of memory requests (address as key); 137
85 * access requires MALLOC2 lock */ 138DECLARE_LHASH_OF(MEM);
139static LHASH_OF(MEM) *mh=NULL; /* hash-table of memory requests
140 * (address as key); access requires
141 * MALLOC2 lock */
86 142
87 143
88typedef struct app_mem_info_st 144typedef struct app_mem_info_st
@@ -93,8 +149,8 @@ typedef struct app_mem_info_st
93 * CRYPTO_pop_info() to pop an entry, 149 * CRYPTO_pop_info() to pop an entry,
94 * CRYPTO_remove_all_info() to pop all entries. 150 * CRYPTO_remove_all_info() to pop all entries.
95 */ 151 */
96 { 152 {
97 unsigned long thread; 153 CRYPTO_THREADID threadid;
98 const char *file; 154 const char *file;
99 int line; 155 int line;
100 const char *info; 156 const char *info;
@@ -104,10 +160,13 @@ typedef struct app_mem_info_st
104 160
105static void app_info_free(APP_INFO *); 161static void app_info_free(APP_INFO *);
106 162
107static LHASH *amih=NULL; /* hash-table with those app_mem_info_st's 163DECLARE_LHASH_OF(APP_INFO);
108 * that are at the top of their thread's stack 164static LHASH_OF(APP_INFO) *amih=NULL; /* hash-table with those
109 * (with `thread' as key); 165 * app_mem_info_st's that are at
110 * access requires MALLOC2 lock */ 166 * the top of their thread's
167 * stack (with `thread' as key);
168 * access requires MALLOC2
169 * lock */
111 170
112typedef struct mem_st 171typedef struct mem_st
113/* memory-block description */ 172/* memory-block description */
@@ -116,7 +175,7 @@ typedef struct mem_st
116 int num; 175 int num;
117 const char *file; 176 const char *file;
118 int line; 177 int line;
119 unsigned long thread; 178 CRYPTO_THREADID threadid;
120 unsigned long order; 179 unsigned long order;
121 time_t time; 180 time_t time;
122 APP_INFO *app_info; 181 APP_INFO *app_info;
@@ -136,11 +195,11 @@ static unsigned int num_disable = 0; /* num_disable > 0
136 * iff 195 * iff
137 * mh_mode == CRYPTO_MEM_CHECK_ON (w/o ..._ENABLE) 196 * mh_mode == CRYPTO_MEM_CHECK_ON (w/o ..._ENABLE)
138 */ 197 */
139static unsigned long disabling_thread = 0; /* Valid iff num_disable > 0. 198
140 * CRYPTO_LOCK_MALLOC2 is locked 199/* Valid iff num_disable > 0. CRYPTO_LOCK_MALLOC2 is locked exactly in this
141 * exactly in this case (by the 200 * case (by the thread named in disabling_thread).
142 * thread named in disabling_thread). 201 */
143 */ 202static CRYPTO_THREADID disabling_threadid;
144 203
145static void app_info_free(APP_INFO *inf) 204static void app_info_free(APP_INFO *inf)
146 { 205 {
@@ -177,7 +236,9 @@ int CRYPTO_mem_ctrl(int mode)
177 case CRYPTO_MEM_CHECK_DISABLE: /* aka MemCheck_off() */ 236 case CRYPTO_MEM_CHECK_DISABLE: /* aka MemCheck_off() */
178 if (mh_mode & CRYPTO_MEM_CHECK_ON) 237 if (mh_mode & CRYPTO_MEM_CHECK_ON)
179 { 238 {
180 if (!num_disable || (disabling_thread != CRYPTO_thread_id())) /* otherwise we already have the MALLOC2 lock */ 239 CRYPTO_THREADID cur;
240 CRYPTO_THREADID_current(&cur);
241 if (!num_disable || CRYPTO_THREADID_cmp(&disabling_threadid, &cur)) /* otherwise we already have the MALLOC2 lock */
181 { 242 {
182 /* Long-time lock CRYPTO_LOCK_MALLOC2 must not be claimed while 243 /* Long-time lock CRYPTO_LOCK_MALLOC2 must not be claimed while
183 * we're holding CRYPTO_LOCK_MALLOC, or we'll deadlock if 244 * we're holding CRYPTO_LOCK_MALLOC, or we'll deadlock if
@@ -195,7 +256,7 @@ int CRYPTO_mem_ctrl(int mode)
195 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC2); 256 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC2);
196 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC); 257 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC);
197 mh_mode &= ~CRYPTO_MEM_CHECK_ENABLE; 258 mh_mode &= ~CRYPTO_MEM_CHECK_ENABLE;
198 disabling_thread=CRYPTO_thread_id(); 259 CRYPTO_THREADID_cpy(&disabling_threadid, &cur);
199 } 260 }
200 num_disable++; 261 num_disable++;
201 } 262 }
@@ -228,10 +289,12 @@ int CRYPTO_is_mem_check_on(void)
228 289
229 if (mh_mode & CRYPTO_MEM_CHECK_ON) 290 if (mh_mode & CRYPTO_MEM_CHECK_ON)
230 { 291 {
292 CRYPTO_THREADID cur;
293 CRYPTO_THREADID_current(&cur);
231 CRYPTO_r_lock(CRYPTO_LOCK_MALLOC); 294 CRYPTO_r_lock(CRYPTO_LOCK_MALLOC);
232 295
233 ret = (mh_mode & CRYPTO_MEM_CHECK_ENABLE) 296 ret = (mh_mode & CRYPTO_MEM_CHECK_ENABLE)
234 || (disabling_thread != CRYPTO_thread_id()); 297 || CRYPTO_THREADID_cmp(&disabling_threadid, &cur);
235 298
236 CRYPTO_r_unlock(CRYPTO_LOCK_MALLOC); 299 CRYPTO_r_unlock(CRYPTO_LOCK_MALLOC);
237 } 300 }
@@ -249,49 +312,49 @@ long CRYPTO_dbg_get_options(void)
249 return options; 312 return options;
250 } 313 }
251 314
252/* static int mem_cmp(MEM *a, MEM *b) */ 315static int mem_cmp(const MEM *a, const MEM *b)
253static int mem_cmp(const void *a_void, const void *b_void)
254 { 316 {
255#ifdef _WIN64 317#ifdef _WIN64
256 const char *a=(const char *)((const MEM *)a_void)->addr, 318 const char *ap=(const char *)a->addr,
257 *b=(const char *)((const MEM *)b_void)->addr; 319 *bp=(const char *)b->addr;
258 if (a==b) return 0; 320 if (ap==bp) return 0;
259 else if (a>b) return 1; 321 else if (ap>bp) return 1;
260 else return -1; 322 else return -1;
261#else 323#else
262 return((const char *)((const MEM *)a_void)->addr 324 return (const char *)a->addr - (const char *)b->addr;
263 - (const char *)((const MEM *)b_void)->addr);
264#endif 325#endif
265 } 326 }
327static IMPLEMENT_LHASH_COMP_FN(mem, MEM)
266 328
267/* static unsigned long mem_hash(MEM *a) */ 329static unsigned long mem_hash(const MEM *a)
268static unsigned long mem_hash(const void *a_void)
269 { 330 {
270 unsigned long ret; 331 unsigned long ret;
271 332
272 ret=(unsigned long)((const MEM *)a_void)->addr; 333 ret=(unsigned long)a->addr;
273 334
274 ret=ret*17851+(ret>>14)*7+(ret>>4)*251; 335 ret=ret*17851+(ret>>14)*7+(ret>>4)*251;
275 return(ret); 336 return(ret);
276 } 337 }
338static IMPLEMENT_LHASH_HASH_FN(mem, MEM)
277 339
278/* static int app_info_cmp(APP_INFO *a, APP_INFO *b) */ 340/* static int app_info_cmp(APP_INFO *a, APP_INFO *b) */
279static int app_info_cmp(const void *a_void, const void *b_void) 341static int app_info_cmp(const void *a_void, const void *b_void)
280 { 342 {
281 return(((const APP_INFO *)a_void)->thread 343 return CRYPTO_THREADID_cmp(&((const APP_INFO *)a_void)->threadid,
282 != ((const APP_INFO *)b_void)->thread); 344 &((const APP_INFO *)b_void)->threadid);
283 } 345 }
346static IMPLEMENT_LHASH_COMP_FN(app_info, APP_INFO)
284 347
285/* static unsigned long app_info_hash(APP_INFO *a) */ 348static unsigned long app_info_hash(const APP_INFO *a)
286static unsigned long app_info_hash(const void *a_void)
287 { 349 {
288 unsigned long ret; 350 unsigned long ret;
289 351
290 ret=(unsigned long)((const APP_INFO *)a_void)->thread; 352 ret = CRYPTO_THREADID_hash(&a->threadid);
291 353 /* This is left in as a "who am I to question legacy?" measure */
292 ret=ret*17851+(ret>>14)*7+(ret>>4)*251; 354 ret=ret*17851+(ret>>14)*7+(ret>>4)*251;
293 return(ret); 355 return(ret);
294 } 356 }
357static IMPLEMENT_LHASH_HASH_FN(app_info, APP_INFO)
295 358
296static APP_INFO *pop_info(void) 359static APP_INFO *pop_info(void)
297 { 360 {
@@ -300,21 +363,22 @@ static APP_INFO *pop_info(void)
300 363
301 if (amih != NULL) 364 if (amih != NULL)
302 { 365 {
303 tmp.thread=CRYPTO_thread_id(); 366 CRYPTO_THREADID_current(&tmp.threadid);
304 if ((ret=(APP_INFO *)lh_delete(amih,&tmp)) != NULL) 367 if ((ret=lh_APP_INFO_delete(amih,&tmp)) != NULL)
305 { 368 {
306 APP_INFO *next=ret->next; 369 APP_INFO *next=ret->next;
307 370
308 if (next != NULL) 371 if (next != NULL)
309 { 372 {
310 next->references++; 373 next->references++;
311 lh_insert(amih,(char *)next); 374 (void)lh_APP_INFO_insert(amih,next);
312 } 375 }
313#ifdef LEVITTE_DEBUG_MEM 376#ifdef LEVITTE_DEBUG_MEM
314 if (ret->thread != tmp.thread) 377 if (CRYPTO_THREADID_cmp(&ret->threadid, &tmp.threadid))
315 { 378 {
316 fprintf(stderr, "pop_info(): deleted info has other thread ID (%lu) than the current thread (%lu)!!!!\n", 379 fprintf(stderr, "pop_info(): deleted info has other thread ID (%lu) than the current thread (%lu)!!!!\n",
317 ret->thread, tmp.thread); 380 CRYPTO_THREADID_hash(&ret->threadid),
381 CRYPTO_THREADID_hash(&tmp.threadid));
318 abort(); 382 abort();
319 } 383 }
320#endif 384#endif
@@ -330,7 +394,7 @@ static APP_INFO *pop_info(void)
330 return(ret); 394 return(ret);
331 } 395 }
332 396
333int CRYPTO_dbg_push_info(const char *info, const char *file, int line) 397int CRYPTO_push_info_(const char *info, const char *file, int line)
334 { 398 {
335 APP_INFO *ami, *amim; 399 APP_INFO *ami, *amim;
336 int ret=0; 400 int ret=0;
@@ -346,7 +410,7 @@ int CRYPTO_dbg_push_info(const char *info, const char *file, int line)
346 } 410 }
347 if (amih == NULL) 411 if (amih == NULL)
348 { 412 {
349 if ((amih=lh_new(app_info_hash, app_info_cmp)) == NULL) 413 if ((amih=lh_APP_INFO_new()) == NULL)
350 { 414 {
351 OPENSSL_free(ami); 415 OPENSSL_free(ami);
352 ret=0; 416 ret=0;
@@ -354,20 +418,21 @@ int CRYPTO_dbg_push_info(const char *info, const char *file, int line)
354 } 418 }
355 } 419 }
356 420
357 ami->thread=CRYPTO_thread_id(); 421 CRYPTO_THREADID_current(&ami->threadid);
358 ami->file=file; 422 ami->file=file;
359 ami->line=line; 423 ami->line=line;
360 ami->info=info; 424 ami->info=info;
361 ami->references=1; 425 ami->references=1;
362 ami->next=NULL; 426 ami->next=NULL;
363 427
364 if ((amim=(APP_INFO *)lh_insert(amih,(char *)ami)) != NULL) 428 if ((amim=lh_APP_INFO_insert(amih,ami)) != NULL)
365 { 429 {
366#ifdef LEVITTE_DEBUG_MEM 430#ifdef LEVITTE_DEBUG_MEM
367 if (ami->thread != amim->thread) 431 if (CRYPTO_THREADID_cmp(&ami->threadid, &amim->threadid))
368 { 432 {
369 fprintf(stderr, "CRYPTO_push_info(): previous info has other thread ID (%lu) than the current thread (%lu)!!!!\n", 433 fprintf(stderr, "CRYPTO_push_info(): previous info has other thread ID (%lu) than the current thread (%lu)!!!!\n",
370 amim->thread, ami->thread); 434 CRYPTO_THREADID_hash(&amim->threadid),
435 CRYPTO_THREADID_hash(&ami->threadid));
371 abort(); 436 abort();
372 } 437 }
373#endif 438#endif
@@ -380,7 +445,7 @@ int CRYPTO_dbg_push_info(const char *info, const char *file, int line)
380 return(ret); 445 return(ret);
381 } 446 }
382 447
383int CRYPTO_dbg_pop_info(void) 448int CRYPTO_pop_info(void)
384 { 449 {
385 int ret=0; 450 int ret=0;
386 451
@@ -395,7 +460,7 @@ int CRYPTO_dbg_pop_info(void)
395 return(ret); 460 return(ret);
396 } 461 }
397 462
398int CRYPTO_dbg_remove_all_info(void) 463int CRYPTO_remove_all_info(void)
399 { 464 {
400 int ret=0; 465 int ret=0;
401 466
@@ -439,7 +504,7 @@ void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line,
439 } 504 }
440 if (mh == NULL) 505 if (mh == NULL)
441 { 506 {
442 if ((mh=lh_new(mem_hash, mem_cmp)) == NULL) 507 if ((mh=lh_MEM_new()) == NULL)
443 { 508 {
444 OPENSSL_free(addr); 509 OPENSSL_free(addr);
445 OPENSSL_free(m); 510 OPENSSL_free(m);
@@ -453,9 +518,9 @@ void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line,
453 m->line=line; 518 m->line=line;
454 m->num=num; 519 m->num=num;
455 if (options & V_CRYPTO_MDEBUG_THREAD) 520 if (options & V_CRYPTO_MDEBUG_THREAD)
456 m->thread=CRYPTO_thread_id(); 521 CRYPTO_THREADID_current(&m->threadid);
457 else 522 else
458 m->thread=0; 523 memset(&m->threadid, 0, sizeof(m->threadid));
459 524
460 if (order == break_order_num) 525 if (order == break_order_num)
461 { 526 {
@@ -464,7 +529,7 @@ void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line,
464 } 529 }
465 m->order=order++; 530 m->order=order++;
466#ifdef LEVITTE_DEBUG_MEM 531#ifdef LEVITTE_DEBUG_MEM
467 fprintf(stderr, "LEVITTE_DEBUG_MEM: [%5d] %c 0x%p (%d)\n", 532 fprintf(stderr, "LEVITTE_DEBUG_MEM: [%5ld] %c 0x%p (%d)\n",
468 m->order, 533 m->order,
469 (before_p & 128) ? '*' : '+', 534 (before_p & 128) ? '*' : '+',
470 m->addr, m->num); 535 m->addr, m->num);
@@ -474,16 +539,16 @@ void CRYPTO_dbg_malloc(void *addr, int num, const char *file, int line,
474 else 539 else
475 m->time=0; 540 m->time=0;
476 541
477 tmp.thread=CRYPTO_thread_id(); 542 CRYPTO_THREADID_current(&tmp.threadid);
478 m->app_info=NULL; 543 m->app_info=NULL;
479 if (amih != NULL 544 if (amih != NULL
480 && (amim=(APP_INFO *)lh_retrieve(amih,(char *)&tmp)) != NULL) 545 && (amim=lh_APP_INFO_retrieve(amih,&tmp)) != NULL)
481 { 546 {
482 m->app_info = amim; 547 m->app_info = amim;
483 amim->references++; 548 amim->references++;
484 } 549 }
485 550
486 if ((mm=(MEM *)lh_insert(mh,(char *)m)) != NULL) 551 if ((mm=lh_MEM_insert(mh, m)) != NULL)
487 { 552 {
488 /* Not good, but don't sweat it */ 553 /* Not good, but don't sweat it */
489 if (mm->app_info != NULL) 554 if (mm->app_info != NULL)
@@ -516,11 +581,11 @@ void CRYPTO_dbg_free(void *addr, int before_p)
516 MemCheck_off(); /* make sure we hold MALLOC2 lock */ 581 MemCheck_off(); /* make sure we hold MALLOC2 lock */
517 582
518 m.addr=addr; 583 m.addr=addr;
519 mp=(MEM *)lh_delete(mh,(char *)&m); 584 mp=lh_MEM_delete(mh,&m);
520 if (mp != NULL) 585 if (mp != NULL)
521 { 586 {
522#ifdef LEVITTE_DEBUG_MEM 587#ifdef LEVITTE_DEBUG_MEM
523 fprintf(stderr, "LEVITTE_DEBUG_MEM: [%5d] - 0x%p (%d)\n", 588 fprintf(stderr, "LEVITTE_DEBUG_MEM: [%5ld] - 0x%p (%d)\n",
524 mp->order, mp->addr, mp->num); 589 mp->order, mp->addr, mp->num);
525#endif 590#endif
526 if (mp->app_info != NULL) 591 if (mp->app_info != NULL)
@@ -566,18 +631,18 @@ void CRYPTO_dbg_realloc(void *addr1, void *addr2, int num,
566 MemCheck_off(); /* make sure we hold MALLOC2 lock */ 631 MemCheck_off(); /* make sure we hold MALLOC2 lock */
567 632
568 m.addr=addr1; 633 m.addr=addr1;
569 mp=(MEM *)lh_delete(mh,(char *)&m); 634 mp=lh_MEM_delete(mh,&m);
570 if (mp != NULL) 635 if (mp != NULL)
571 { 636 {
572#ifdef LEVITTE_DEBUG_MEM 637#ifdef LEVITTE_DEBUG_MEM
573 fprintf(stderr, "LEVITTE_DEBUG_MEM: [%5d] * 0x%p (%d) -> 0x%p (%d)\n", 638 fprintf(stderr, "LEVITTE_DEBUG_MEM: [%5ld] * 0x%p (%d) -> 0x%p (%d)\n",
574 mp->order, 639 mp->order,
575 mp->addr, mp->num, 640 mp->addr, mp->num,
576 addr2, num); 641 addr2, num);
577#endif 642#endif
578 mp->addr=addr2; 643 mp->addr=addr2;
579 mp->num=num; 644 mp->num=num;
580 lh_insert(mh,(char *)mp); 645 (void)lh_MEM_insert(mh,mp);
581 } 646 }
582 647
583 MemCheck_on(); /* release MALLOC2 lock 648 MemCheck_on(); /* release MALLOC2 lock
@@ -596,14 +661,14 @@ typedef struct mem_leak_st
596 long bytes; 661 long bytes;
597 } MEM_LEAK; 662 } MEM_LEAK;
598 663
599static void print_leak(const MEM *m, MEM_LEAK *l) 664static void print_leak_doall_arg(const MEM *m, MEM_LEAK *l)
600 { 665 {
601 char buf[1024]; 666 char buf[1024];
602 char *bufp = buf; 667 char *bufp = buf;
603 APP_INFO *amip; 668 APP_INFO *amip;
604 int ami_cnt; 669 int ami_cnt;
605 struct tm *lcl = NULL; 670 struct tm *lcl = NULL;
606 unsigned long ti; 671 CRYPTO_THREADID ti;
607 672
608#define BUF_REMAIN (sizeof buf - (size_t)(bufp - buf)) 673#define BUF_REMAIN (sizeof buf - (size_t)(bufp - buf))
609 674
@@ -625,7 +690,8 @@ static void print_leak(const MEM *m, MEM_LEAK *l)
625 690
626 if (options & V_CRYPTO_MDEBUG_THREAD) 691 if (options & V_CRYPTO_MDEBUG_THREAD)
627 { 692 {
628 BIO_snprintf(bufp, BUF_REMAIN, "thread=%lu, ", m->thread); 693 BIO_snprintf(bufp, BUF_REMAIN, "thread=%lu, ",
694 CRYPTO_THREADID_hash(&m->threadid));
629 bufp += strlen(bufp); 695 bufp += strlen(bufp);
630 } 696 }
631 697
@@ -642,8 +708,8 @@ static void print_leak(const MEM *m, MEM_LEAK *l)
642 ami_cnt=0; 708 ami_cnt=0;
643 if (!amip) 709 if (!amip)
644 return; 710 return;
645 ti=amip->thread; 711 CRYPTO_THREADID_cpy(&ti, &amip->threadid);
646 712
647 do 713 do
648 { 714 {
649 int buf_len; 715 int buf_len;
@@ -653,7 +719,8 @@ static void print_leak(const MEM *m, MEM_LEAK *l)
653 memset(buf,'>',ami_cnt); 719 memset(buf,'>',ami_cnt);
654 BIO_snprintf(buf + ami_cnt, sizeof buf - ami_cnt, 720 BIO_snprintf(buf + ami_cnt, sizeof buf - ami_cnt,
655 " thread=%lu, file=%s, line=%d, info=\"", 721 " thread=%lu, file=%s, line=%d, info=\"",
656 amip->thread, amip->file, amip->line); 722 CRYPTO_THREADID_hash(&amip->threadid), amip->file,
723 amip->line);
657 buf_len=strlen(buf); 724 buf_len=strlen(buf);
658 info_len=strlen(amip->info); 725 info_len=strlen(amip->info);
659 if (128 - buf_len - 3 < info_len) 726 if (128 - buf_len - 3 < info_len)
@@ -673,8 +740,8 @@ static void print_leak(const MEM *m, MEM_LEAK *l)
673 740
674 amip = amip->next; 741 amip = amip->next;
675 } 742 }
676 while(amip && amip->thread == ti); 743 while(amip && !CRYPTO_THREADID_cmp(&amip->threadid, &ti));
677 744
678#ifdef LEVITTE_DEBUG_MEM 745#ifdef LEVITTE_DEBUG_MEM
679 if (amip) 746 if (amip)
680 { 747 {
@@ -684,7 +751,7 @@ static void print_leak(const MEM *m, MEM_LEAK *l)
684#endif 751#endif
685 } 752 }
686 753
687static IMPLEMENT_LHASH_DOALL_ARG_FN(print_leak, const MEM *, MEM_LEAK *) 754static IMPLEMENT_LHASH_DOALL_ARG_FN(print_leak, const MEM, MEM_LEAK)
688 755
689void CRYPTO_mem_leaks(BIO *b) 756void CRYPTO_mem_leaks(BIO *b)
690 { 757 {
@@ -699,12 +766,15 @@ void CRYPTO_mem_leaks(BIO *b)
699 ml.bytes=0; 766 ml.bytes=0;
700 ml.chunks=0; 767 ml.chunks=0;
701 if (mh != NULL) 768 if (mh != NULL)
702 lh_doall_arg(mh, LHASH_DOALL_ARG_FN(print_leak), 769 lh_MEM_doall_arg(mh, LHASH_DOALL_ARG_FN(print_leak), MEM_LEAK,
703 (char *)&ml); 770 &ml);
704 if (ml.chunks != 0) 771 if (ml.chunks != 0)
705 { 772 {
706 BIO_printf(b,"%ld bytes leaked in %d chunks\n", 773 BIO_printf(b,"%ld bytes leaked in %d chunks\n",
707 ml.bytes,ml.chunks); 774 ml.bytes,ml.chunks);
775#ifdef CRYPTO_MDEBUG_ABORT
776 abort();
777#endif
708 } 778 }
709 else 779 else
710 { 780 {
@@ -717,7 +787,7 @@ void CRYPTO_mem_leaks(BIO *b)
717 * XXX This should be in CRYPTO_mem_leaks_cb, 787 * XXX This should be in CRYPTO_mem_leaks_cb,
718 * and CRYPTO_mem_leaks should be implemented by 788 * and CRYPTO_mem_leaks should be implemented by
719 * using CRYPTO_mem_leaks_cb. 789 * using CRYPTO_mem_leaks_cb.
720 * (Also their should be a variant of lh_doall_arg 790 * (Also there should be a variant of lh_doall_arg
721 * that takes a function pointer instead of a void *; 791 * that takes a function pointer instead of a void *;
722 * this would obviate the ugly and illegal 792 * this would obviate the ugly and illegal
723 * void_fn_to_char kludge in CRYPTO_mem_leaks_cb. 793 * void_fn_to_char kludge in CRYPTO_mem_leaks_cb.
@@ -734,14 +804,14 @@ void CRYPTO_mem_leaks(BIO *b)
734 804
735 if (mh != NULL) 805 if (mh != NULL)
736 { 806 {
737 lh_free(mh); 807 lh_MEM_free(mh);
738 mh = NULL; 808 mh = NULL;
739 } 809 }
740 if (amih != NULL) 810 if (amih != NULL)
741 { 811 {
742 if (lh_num_items(amih) == 0) 812 if (lh_APP_INFO_num_items(amih) == 0)
743 { 813 {
744 lh_free(amih); 814 lh_APP_INFO_free(amih);
745 amih = NULL; 815 amih = NULL;
746 } 816 }
747 } 817 }
@@ -779,39 +849,26 @@ void CRYPTO_mem_leaks_fp(FILE *fp)
779/* NB: The prototypes have been typedef'd to CRYPTO_MEM_LEAK_CB inside crypto.h 849/* NB: The prototypes have been typedef'd to CRYPTO_MEM_LEAK_CB inside crypto.h
780 * If this code is restructured, remove the callback type if it is no longer 850 * If this code is restructured, remove the callback type if it is no longer
781 * needed. -- Geoff Thorpe */ 851 * needed. -- Geoff Thorpe */
782static void cb_leak(const MEM *m, CRYPTO_MEM_LEAK_CB **cb) 852
853/* Can't pass CRYPTO_MEM_LEAK_CB directly to lh_MEM_doall_arg because it
854 * is a function pointer and conversion to void * is prohibited. Instead
855 * pass its address
856 */
857
858typedef CRYPTO_MEM_LEAK_CB *PCRYPTO_MEM_LEAK_CB;
859
860static void cb_leak_doall_arg(const MEM *m, PCRYPTO_MEM_LEAK_CB *cb)
783 { 861 {
784 (**cb)(m->order,m->file,m->line,m->num,m->addr); 862 (*cb)(m->order,m->file,m->line,m->num,m->addr);
785 } 863 }
786 864
787static IMPLEMENT_LHASH_DOALL_ARG_FN(cb_leak, const MEM *, CRYPTO_MEM_LEAK_CB **) 865static IMPLEMENT_LHASH_DOALL_ARG_FN(cb_leak, const MEM, PCRYPTO_MEM_LEAK_CB)
788 866
789void CRYPTO_mem_leaks_cb(CRYPTO_MEM_LEAK_CB *cb) 867void CRYPTO_mem_leaks_cb(CRYPTO_MEM_LEAK_CB *cb)
790 { 868 {
791 if (mh == NULL) return; 869 if (mh == NULL) return;
792 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC2); 870 CRYPTO_w_lock(CRYPTO_LOCK_MALLOC2);
793 lh_doall_arg(mh, LHASH_DOALL_ARG_FN(cb_leak), &cb); 871 lh_MEM_doall_arg(mh, LHASH_DOALL_ARG_FN(cb_leak), PCRYPTO_MEM_LEAK_CB,
872 &cb);
794 CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC2); 873 CRYPTO_w_unlock(CRYPTO_LOCK_MALLOC2);
795 } 874 }
796
797void CRYPTO_malloc_debug_init(void)
798 {
799 CRYPTO_set_mem_debug_functions(
800 CRYPTO_dbg_malloc,
801 CRYPTO_dbg_realloc,
802 CRYPTO_dbg_free,
803 CRYPTO_dbg_set_options,
804 CRYPTO_dbg_get_options);
805 CRYPTO_set_mem_info_functions(
806 CRYPTO_dbg_push_info,
807 CRYPTO_dbg_pop_info,
808 CRYPTO_dbg_remove_all_info);
809 }
810
811char *CRYPTO_strdup(const char *str, const char *file, int line)
812 {
813 char *ret = CRYPTO_malloc(strlen(str)+1, file, line);
814
815 strcpy(ret, str);
816 return ret;
817 }
diff --git a/src/lib/libssl/src/crypto/o_str.c b/src/lib/libssl/src/crypto/o_str.c
index 59cc25094b..56104a6c34 100644
--- a/src/lib/libssl/src/crypto/o_str.c
+++ b/src/lib/libssl/src/crypto/o_str.c
@@ -60,7 +60,9 @@
60#include <e_os.h> 60#include <e_os.h>
61#include "o_str.h" 61#include "o_str.h"
62 62
63#if !defined(OPENSSL_IMPLEMENTS_strncasecmp) && !defined(OPENSSL_SYSNAME_WIN32) 63#if !defined(OPENSSL_IMPLEMENTS_strncasecmp) && \
64 !defined(OPENSSL_SYSNAME_WIN32) && \
65 !defined(NETWARE_CLIB)
64# include <strings.h> 66# include <strings.h>
65#endif 67#endif
66 68
diff --git a/src/lib/libssl/src/crypto/o_time.c b/src/lib/libssl/src/crypto/o_time.c
index e29091d650..eecbdd19f0 100644
--- a/src/lib/libssl/src/crypto/o_time.c
+++ b/src/lib/libssl/src/crypto/o_time.c
@@ -2,6 +2,9 @@
2/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL 2/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
3 * project 2001. 3 * project 2001.
4 */ 4 */
5/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
6 * project 2008.
7 */
5/* ==================================================================== 8/* ====================================================================
6 * Copyright (c) 2001 The OpenSSL Project. All rights reserved. 9 * Copyright (c) 2001 The OpenSSL Project. All rights reserved.
7 * 10 *
@@ -73,7 +76,7 @@ struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result)
73 { 76 {
74 struct tm *ts = NULL; 77 struct tm *ts = NULL;
75 78
76#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_SYS_OS2) && !defined(__CYGWIN32__) && (!defined(OPENSSL_SYS_VMS) || defined(gmtime_r)) && !defined(OPENSSL_SYS_MACOSX) && !defined(OPENSSL_SYS_SUNOS) 79#if defined(OPENSSL_THREADS) && !defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_SYS_OS2) && (!defined(OPENSSL_SYS_VMS) || defined(gmtime_r)) && !defined(OPENSSL_SYS_MACOSX) && !defined(OPENSSL_SYS_SUNOS)
77 /* should return &data, but doesn't on some systems, 80 /* should return &data, but doesn't on some systems,
78 so we don't even look at the return value */ 81 so we don't even look at the return value */
79 gmtime_r(timer,result); 82 gmtime_r(timer,result);
@@ -214,4 +217,150 @@ struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result)
214 } 217 }
215#endif 218#endif
216 return ts; 219 return ts;
217 } 220 }
221
222/* Take a tm structure and add an offset to it. This avoids any OS issues
223 * with restricted date types and overflows which cause the year 2038
224 * problem.
225 */
226
227#define SECS_PER_DAY (24 * 60 * 60)
228
229static long date_to_julian(int y, int m, int d);
230static void julian_to_date(long jd, int *y, int *m, int *d);
231
232int OPENSSL_gmtime_adj(struct tm *tm, int off_day, long offset_sec)
233 {
234 int offset_hms, offset_day;
235 long time_jd;
236 int time_year, time_month, time_day;
237 /* split offset into days and day seconds */
238 offset_day = offset_sec / SECS_PER_DAY;
239 /* Avoid sign issues with % operator */
240 offset_hms = offset_sec - (offset_day * SECS_PER_DAY);
241 offset_day += off_day;
242 /* Add current time seconds to offset */
243 offset_hms += tm->tm_hour * 3600 + tm->tm_min * 60 + tm->tm_sec;
244 /* Adjust day seconds if overflow */
245 if (offset_hms >= SECS_PER_DAY)
246 {
247 offset_day++;
248 offset_hms -= SECS_PER_DAY;
249 }
250 else if (offset_hms < 0)
251 {
252 offset_day--;
253 offset_hms += SECS_PER_DAY;
254 }
255
256 /* Convert date of time structure into a Julian day number.
257 */
258
259 time_year = tm->tm_year + 1900;
260 time_month = tm->tm_mon + 1;
261 time_day = tm->tm_mday;
262
263 time_jd = date_to_julian(time_year, time_month, time_day);
264
265 /* Work out Julian day of new date */
266 time_jd += offset_day;
267
268 if (time_jd < 0)
269 return 0;
270
271 /* Convert Julian day back to date */
272
273 julian_to_date(time_jd, &time_year, &time_month, &time_day);
274
275 if (time_year < 1900 || time_year > 9999)
276 return 0;
277
278 /* Update tm structure */
279
280 tm->tm_year = time_year - 1900;
281 tm->tm_mon = time_month - 1;
282 tm->tm_mday = time_day;
283
284 tm->tm_hour = offset_hms / 3600;
285 tm->tm_min = (offset_hms / 60) % 60;
286 tm->tm_sec = offset_hms % 60;
287
288 return 1;
289
290}
291
292/* Convert date to and from julian day
293 * Uses Fliegel & Van Flandern algorithm
294 */
295static long date_to_julian(int y, int m, int d)
296{
297 return (1461 * (y + 4800 + (m - 14) / 12)) / 4 +
298 (367 * (m - 2 - 12 * ((m - 14) / 12))) / 12 -
299 (3 * ((y + 4900 + (m - 14) / 12) / 100)) / 4 +
300 d - 32075;
301}
302
303static void julian_to_date(long jd, int *y, int *m, int *d)
304 {
305 long L = jd + 68569;
306 long n = (4 * L) / 146097;
307 long i, j;
308
309 L = L - (146097 * n + 3) / 4;
310 i = (4000 * (L + 1)) / 1461001;
311 L = L - (1461 * i) / 4 + 31;
312 j = (80 * L) / 2447;
313 *d = L - (2447 * j) / 80;
314 L = j / 11;
315 *m = j + 2 - (12 * L);
316 *y = 100 * (n - 49) + i + L;
317 }
318
319#ifdef OPENSSL_TIME_TEST
320
321#include <stdio.h>
322
323/* Time checking test code. Check times are identical for a wide range of
324 * offsets. This should be run on a machine with 64 bit time_t or it will
325 * trigger the very errors the routines fix.
326 */
327
328int main(int argc, char **argv)
329 {
330 long offset;
331 for (offset = 0; offset < 1000000; offset++)
332 {
333 check_time(offset);
334 check_time(-offset);
335 check_time(offset * 1000);
336 check_time(-offset * 1000);
337 }
338 }
339
340int check_time(long offset)
341 {
342 struct tm tm1, tm2;
343 time_t t1, t2;
344 time(&t1);
345 t2 = t1 + offset;
346 OPENSSL_gmtime(&t2, &tm2);
347 OPENSSL_gmtime(&t1, &tm1);
348 OPENSSL_gmtime_adj(&tm1, 0, offset);
349 if ((tm1.tm_year == tm2.tm_year) &&
350 (tm1.tm_mon == tm2.tm_mon) &&
351 (tm1.tm_mday == tm2.tm_mday) &&
352 (tm1.tm_hour == tm2.tm_hour) &&
353 (tm1.tm_min == tm2.tm_min) &&
354 (tm1.tm_sec == tm2.tm_sec))
355 return 1;
356 fprintf(stderr, "TIME ERROR!!\n");
357 fprintf(stderr, "Time1: %d/%d/%d, %d:%02d:%02d\n",
358 tm2.tm_mday, tm2.tm_mon + 1, tm2.tm_year + 1900,
359 tm2.tm_hour, tm2.tm_min, tm2.tm_sec);
360 fprintf(stderr, "Time2: %d/%d/%d, %d:%02d:%02d\n",
361 tm1.tm_mday, tm1.tm_mon + 1, tm1.tm_year + 1900,
362 tm1.tm_hour, tm1.tm_min, tm1.tm_sec);
363 return 0;
364 }
365
366#endif
diff --git a/src/lib/libssl/src/crypto/o_time.h b/src/lib/libssl/src/crypto/o_time.h
index e66044626d..e391da7508 100644
--- a/src/lib/libssl/src/crypto/o_time.h
+++ b/src/lib/libssl/src/crypto/o_time.h
@@ -62,5 +62,6 @@
62#include <time.h> 62#include <time.h>
63 63
64struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result); 64struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result);
65int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec);
65 66
66#endif 67#endif
diff --git a/src/lib/libssl/src/crypto/objects/Makefile b/src/lib/libssl/src/crypto/objects/Makefile
index 25e8b23b5d..a8aedbd422 100644
--- a/src/lib/libssl/src/crypto/objects/Makefile
+++ b/src/lib/libssl/src/crypto/objects/Makefile
@@ -18,23 +18,23 @@ TEST=
18APPS= 18APPS=
19 19
20LIB=$(TOP)/libcrypto.a 20LIB=$(TOP)/libcrypto.a
21LIBSRC= o_names.c obj_dat.c obj_lib.c obj_err.c 21LIBSRC= o_names.c obj_dat.c obj_lib.c obj_err.c obj_xref.c
22LIBOBJ= o_names.o obj_dat.o obj_lib.o obj_err.o 22LIBOBJ= o_names.o obj_dat.o obj_lib.o obj_err.o obj_xref.o
23 23
24SRC= $(LIBSRC) 24SRC= $(LIBSRC)
25 25
26EXHEADER= objects.h obj_mac.h 26EXHEADER= objects.h obj_mac.h
27HEADER= $(EXHEADER) obj_dat.h 27HEADER= $(EXHEADER) obj_dat.h obj_xref.h
28 28
29ALL= $(GENERAL) $(SRC) $(HEADER) 29ALL= $(GENERAL) $(SRC) $(HEADER)
30 30
31top: 31top:
32 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all) 32 (cd ../..; $(MAKE) DIRS=crypto SDIRS=$(DIR) sub_all)
33 33
34all: obj_dat.h lib 34all: obj_dat.h obj_xref.h lib
35 35
36lib: $(LIBOBJ) 36lib: $(LIBOBJ)
37 $(ARX) $(LIB) $(LIBOBJ) 37 $(AR) $(LIB) $(LIBOBJ)
38 $(RANLIB) $(LIB) || echo Never mind. 38 $(RANLIB) $(LIB) || echo Never mind.
39 @touch lib 39 @touch lib
40 40
@@ -46,6 +46,10 @@ obj_mac.h: objects.pl objects.txt obj_mac.num
46 $(PERL) objects.pl objects.txt obj_mac.num obj_mac.h 46 $(PERL) objects.pl objects.txt obj_mac.num obj_mac.h
47 @sleep 1; touch obj_mac.h; sleep 1 47 @sleep 1; touch obj_mac.h; sleep 1
48 48
49obj_xref.h: objxref.pl obj_xref.txt obj_mac.num
50 $(PERL) objxref.pl obj_mac.num obj_xref.txt > obj_xref.h
51 @sleep 1; touch obj_xref.h; sleep 1
52
49files: 53files:
50 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 54 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
51 55
@@ -117,3 +121,10 @@ obj_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
117obj_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 121obj_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
118obj_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 122obj_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
119obj_lib.o: ../cryptlib.h obj_lib.c 123obj_lib.o: ../cryptlib.h obj_lib.c
124obj_xref.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
125obj_xref.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
126obj_xref.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
127obj_xref.o: ../../include/openssl/opensslconf.h
128obj_xref.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
129obj_xref.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
130obj_xref.o: ../../include/openssl/symhacks.h obj_xref.c obj_xref.h
diff --git a/src/lib/libssl/src/crypto/objects/o_names.c b/src/lib/libssl/src/crypto/objects/o_names.c
index adb5731f76..84380a96a9 100644
--- a/src/lib/libssl/src/crypto/objects/o_names.c
+++ b/src/lib/libssl/src/crypto/objects/o_names.c
@@ -22,7 +22,8 @@
22/* I use the ex_data stuff to manage the identifiers for the obj_name_types 22/* I use the ex_data stuff to manage the identifiers for the obj_name_types
23 * that applications may define. I only really use the free function field. 23 * that applications may define. I only really use the free function field.
24 */ 24 */
25static LHASH *names_lh=NULL; 25DECLARE_LHASH_OF(OBJ_NAME);
26static LHASH_OF(OBJ_NAME) *names_lh=NULL;
26static int names_type_num=OBJ_NAME_TYPE_NUM; 27static int names_type_num=OBJ_NAME_TYPE_NUM;
27 28
28typedef struct name_funcs_st 29typedef struct name_funcs_st
@@ -46,11 +47,14 @@ static unsigned long obj_name_hash(const void *a_void);
46/* static int obj_name_cmp(OBJ_NAME *a,OBJ_NAME *b); */ 47/* static int obj_name_cmp(OBJ_NAME *a,OBJ_NAME *b); */
47static int obj_name_cmp(const void *a_void,const void *b_void); 48static int obj_name_cmp(const void *a_void,const void *b_void);
48 49
50static IMPLEMENT_LHASH_HASH_FN(obj_name, OBJ_NAME)
51static IMPLEMENT_LHASH_COMP_FN(obj_name, OBJ_NAME)
52
49int OBJ_NAME_init(void) 53int OBJ_NAME_init(void)
50 { 54 {
51 if (names_lh != NULL) return(1); 55 if (names_lh != NULL) return(1);
52 MemCheck_off(); 56 MemCheck_off();
53 names_lh=lh_new(obj_name_hash, obj_name_cmp); 57 names_lh=lh_OBJ_NAME_new();
54 MemCheck_on(); 58 MemCheck_on();
55 return(names_lh != NULL); 59 return(names_lh != NULL);
56 } 60 }
@@ -164,7 +168,7 @@ const char *OBJ_NAME_get(const char *name, int type)
164 168
165 for (;;) 169 for (;;)
166 { 170 {
167 ret=(OBJ_NAME *)lh_retrieve(names_lh,&on); 171 ret=lh_OBJ_NAME_retrieve(names_lh,&on);
168 if (ret == NULL) return(NULL); 172 if (ret == NULL) return(NULL);
169 if ((ret->alias) && !alias) 173 if ((ret->alias) && !alias)
170 { 174 {
@@ -200,7 +204,7 @@ int OBJ_NAME_add(const char *name, int type, const char *data)
200 onp->type=type; 204 onp->type=type;
201 onp->data=data; 205 onp->data=data;
202 206
203 ret=(OBJ_NAME *)lh_insert(names_lh,onp); 207 ret=lh_OBJ_NAME_insert(names_lh,onp);
204 if (ret != NULL) 208 if (ret != NULL)
205 { 209 {
206 /* free things */ 210 /* free things */
@@ -217,7 +221,7 @@ int OBJ_NAME_add(const char *name, int type, const char *data)
217 } 221 }
218 else 222 else
219 { 223 {
220 if (lh_error(names_lh)) 224 if (lh_OBJ_NAME_error(names_lh))
221 { 225 {
222 /* ERROR */ 226 /* ERROR */
223 return(0); 227 return(0);
@@ -235,7 +239,7 @@ int OBJ_NAME_remove(const char *name, int type)
235 type&= ~OBJ_NAME_ALIAS; 239 type&= ~OBJ_NAME_ALIAS;
236 on.name=name; 240 on.name=name;
237 on.type=type; 241 on.type=type;
238 ret=(OBJ_NAME *)lh_delete(names_lh,&on); 242 ret=lh_OBJ_NAME_delete(names_lh,&on);
239 if (ret != NULL) 243 if (ret != NULL)
240 { 244 {
241 /* free things */ 245 /* free things */
@@ -262,13 +266,13 @@ struct doall
262 void *arg; 266 void *arg;
263 }; 267 };
264 268
265static void do_all_fn(const OBJ_NAME *name,struct doall *d) 269static void do_all_fn_doall_arg(const OBJ_NAME *name,struct doall *d)
266 { 270 {
267 if(name->type == d->type) 271 if(name->type == d->type)
268 d->fn(name,d->arg); 272 d->fn(name,d->arg);
269 } 273 }
270 274
271static IMPLEMENT_LHASH_DOALL_ARG_FN(do_all_fn, const OBJ_NAME *, struct doall *) 275static IMPLEMENT_LHASH_DOALL_ARG_FN(do_all_fn, const OBJ_NAME, struct doall)
272 276
273void OBJ_NAME_do_all(int type,void (*fn)(const OBJ_NAME *,void *arg),void *arg) 277void OBJ_NAME_do_all(int type,void (*fn)(const OBJ_NAME *,void *arg),void *arg)
274 { 278 {
@@ -278,7 +282,8 @@ void OBJ_NAME_do_all(int type,void (*fn)(const OBJ_NAME *,void *arg),void *arg)
278 d.fn=fn; 282 d.fn=fn;
279 d.arg=arg; 283 d.arg=arg;
280 284
281 lh_doall_arg(names_lh,LHASH_DOALL_ARG_FN(do_all_fn),&d); 285 lh_OBJ_NAME_doall_arg(names_lh, LHASH_DOALL_ARG_FN(do_all_fn),
286 struct doall, &d);
282 } 287 }
283 288
284struct doall_sorted 289struct doall_sorted
@@ -313,7 +318,7 @@ void OBJ_NAME_do_all_sorted(int type,void (*fn)(const OBJ_NAME *,void *arg),
313 int n; 318 int n;
314 319
315 d.type=type; 320 d.type=type;
316 d.names=OPENSSL_malloc(lh_num_items(names_lh)*sizeof *d.names); 321 d.names=OPENSSL_malloc(lh_OBJ_NAME_num_items(names_lh)*sizeof *d.names);
317 d.n=0; 322 d.n=0;
318 OBJ_NAME_do_all(type,do_all_sorted_fn,&d); 323 OBJ_NAME_do_all(type,do_all_sorted_fn,&d);
319 324
@@ -327,18 +332,16 @@ void OBJ_NAME_do_all_sorted(int type,void (*fn)(const OBJ_NAME *,void *arg),
327 332
328static int free_type; 333static int free_type;
329 334
330static void names_lh_free(OBJ_NAME *onp) 335static void names_lh_free_doall(OBJ_NAME *onp)
331{ 336 {
332 if(onp == NULL) 337 if (onp == NULL)
333 return; 338 return;
334 339
335 if ((free_type < 0) || (free_type == onp->type)) 340 if (free_type < 0 || free_type == onp->type)
336 {
337 OBJ_NAME_remove(onp->name,onp->type); 341 OBJ_NAME_remove(onp->name,onp->type);
338 }
339 } 342 }
340 343
341static IMPLEMENT_LHASH_DOALL_FN(names_lh_free, OBJ_NAME *) 344static IMPLEMENT_LHASH_DOALL_FN(names_lh_free, OBJ_NAME)
342 345
343static void name_funcs_free(NAME_FUNCS *ptr) 346static void name_funcs_free(NAME_FUNCS *ptr)
344 { 347 {
@@ -352,18 +355,18 @@ void OBJ_NAME_cleanup(int type)
352 if (names_lh == NULL) return; 355 if (names_lh == NULL) return;
353 356
354 free_type=type; 357 free_type=type;
355 down_load=names_lh->down_load; 358 down_load=lh_OBJ_NAME_down_load(names_lh);
356 names_lh->down_load=0; 359 lh_OBJ_NAME_down_load(names_lh)=0;
357 360
358 lh_doall(names_lh,LHASH_DOALL_FN(names_lh_free)); 361 lh_OBJ_NAME_doall(names_lh,LHASH_DOALL_FN(names_lh_free));
359 if (type < 0) 362 if (type < 0)
360 { 363 {
361 lh_free(names_lh); 364 lh_OBJ_NAME_free(names_lh);
362 sk_NAME_FUNCS_pop_free(name_funcs_stack,name_funcs_free); 365 sk_NAME_FUNCS_pop_free(name_funcs_stack,name_funcs_free);
363 names_lh=NULL; 366 names_lh=NULL;
364 name_funcs_stack = NULL; 367 name_funcs_stack = NULL;
365 } 368 }
366 else 369 else
367 names_lh->down_load=down_load; 370 lh_OBJ_NAME_down_load(names_lh)=down_load;
368 } 371 }
369 372
diff --git a/src/lib/libssl/src/crypto/objects/obj_dat.c b/src/lib/libssl/src/crypto/objects/obj_dat.c
index 7fd7433241..8a342ba3eb 100644
--- a/src/lib/libssl/src/crypto/objects/obj_dat.c
+++ b/src/lib/libssl/src/crypto/objects/obj_dat.c
@@ -74,16 +74,17 @@
74#define NUM_SN 0 74#define NUM_SN 0
75#define NUM_LN 0 75#define NUM_LN 0
76#define NUM_OBJ 0 76#define NUM_OBJ 0
77static unsigned char lvalues[1]; 77static const unsigned char lvalues[1];
78static ASN1_OBJECT nid_objs[1]; 78static const ASN1_OBJECT nid_objs[1];
79static ASN1_OBJECT *sn_objs[1]; 79static const unsigned int sn_objs[1];
80static ASN1_OBJECT *ln_objs[1]; 80static const unsigned int ln_objs[1];
81static ASN1_OBJECT *obj_objs[1]; 81static const unsigned int obj_objs[1];
82#endif 82#endif
83 83
84static int sn_cmp(const void *a, const void *b); 84DECLARE_OBJ_BSEARCH_CMP_FN(const ASN1_OBJECT *, unsigned int, sn);
85static int ln_cmp(const void *a, const void *b); 85DECLARE_OBJ_BSEARCH_CMP_FN(const ASN1_OBJECT *, unsigned int, ln);
86static int obj_cmp(const void *a, const void *b); 86DECLARE_OBJ_BSEARCH_CMP_FN(const ASN1_OBJECT *, unsigned int, obj);
87
87#define ADDED_DATA 0 88#define ADDED_DATA 0
88#define ADDED_SNAME 1 89#define ADDED_SNAME 1
89#define ADDED_LNAME 2 90#define ADDED_LNAME 2
@@ -94,30 +95,27 @@ typedef struct added_obj_st
94 int type; 95 int type;
95 ASN1_OBJECT *obj; 96 ASN1_OBJECT *obj;
96 } ADDED_OBJ; 97 } ADDED_OBJ;
98DECLARE_LHASH_OF(ADDED_OBJ);
97 99
98static int new_nid=NUM_NID; 100static int new_nid=NUM_NID;
99static LHASH *added=NULL; 101static LHASH_OF(ADDED_OBJ) *added=NULL;
100 102
101static int sn_cmp(const void *a, const void *b) 103static int sn_cmp(const ASN1_OBJECT * const *a, const unsigned int *b)
102 { 104 { return(strcmp((*a)->sn,nid_objs[*b].sn)); }
103 const ASN1_OBJECT * const *ap = a, * const *bp = b;
104 return(strcmp((*ap)->sn,(*bp)->sn));
105 }
106 105
107static int ln_cmp(const void *a, const void *b) 106IMPLEMENT_OBJ_BSEARCH_CMP_FN(const ASN1_OBJECT *, unsigned int, sn);
108 { 107
109 const ASN1_OBJECT * const *ap = a, * const *bp = b; 108static int ln_cmp(const ASN1_OBJECT * const *a, const unsigned int *b)
110 return(strcmp((*ap)->ln,(*bp)->ln)); 109 { return(strcmp((*a)->ln,nid_objs[*b].ln)); }
111 }
112 110
113/* static unsigned long add_hash(ADDED_OBJ *ca) */ 111IMPLEMENT_OBJ_BSEARCH_CMP_FN(const ASN1_OBJECT *, unsigned int, ln);
114static unsigned long add_hash(const void *ca_void) 112
113static unsigned long added_obj_hash(const ADDED_OBJ *ca)
115 { 114 {
116 const ASN1_OBJECT *a; 115 const ASN1_OBJECT *a;
117 int i; 116 int i;
118 unsigned long ret=0; 117 unsigned long ret=0;
119 unsigned char *p; 118 unsigned char *p;
120 const ADDED_OBJ *ca = (const ADDED_OBJ *)ca_void;
121 119
122 a=ca->obj; 120 a=ca->obj;
123 switch (ca->type) 121 switch (ca->type)
@@ -145,14 +143,12 @@ static unsigned long add_hash(const void *ca_void)
145 ret|=ca->type<<30L; 143 ret|=ca->type<<30L;
146 return(ret); 144 return(ret);
147 } 145 }
146static IMPLEMENT_LHASH_HASH_FN(added_obj, ADDED_OBJ)
148 147
149/* static int add_cmp(ADDED_OBJ *ca, ADDED_OBJ *cb) */ 148static int added_obj_cmp(const ADDED_OBJ *ca, const ADDED_OBJ *cb)
150static int add_cmp(const void *ca_void, const void *cb_void)
151 { 149 {
152 ASN1_OBJECT *a,*b; 150 ASN1_OBJECT *a,*b;
153 int i; 151 int i;
154 const ADDED_OBJ *ca = (const ADDED_OBJ *)ca_void;
155 const ADDED_OBJ *cb = (const ADDED_OBJ *)cb_void;
156 152
157 i=ca->type-cb->type; 153 i=ca->type-cb->type;
158 if (i) return(i); 154 if (i) return(i);
@@ -179,15 +175,16 @@ static int add_cmp(const void *ca_void, const void *cb_void)
179 return 0; 175 return 0;
180 } 176 }
181 } 177 }
178static IMPLEMENT_LHASH_COMP_FN(added_obj, ADDED_OBJ)
182 179
183static int init_added(void) 180static int init_added(void)
184 { 181 {
185 if (added != NULL) return(1); 182 if (added != NULL) return(1);
186 added=lh_new(add_hash,add_cmp); 183 added=lh_ADDED_OBJ_new();
187 return(added != NULL); 184 return(added != NULL);
188 } 185 }
189 186
190static void cleanup1(ADDED_OBJ *a) 187static void cleanup1_doall(ADDED_OBJ *a)
191 { 188 {
192 a->obj->nid=0; 189 a->obj->nid=0;
193 a->obj->flags|=ASN1_OBJECT_FLAG_DYNAMIC| 190 a->obj->flags|=ASN1_OBJECT_FLAG_DYNAMIC|
@@ -195,28 +192,46 @@ static void cleanup1(ADDED_OBJ *a)
195 ASN1_OBJECT_FLAG_DYNAMIC_DATA; 192 ASN1_OBJECT_FLAG_DYNAMIC_DATA;
196 } 193 }
197 194
198static void cleanup2(ADDED_OBJ *a) 195static void cleanup2_doall(ADDED_OBJ *a)
199 { a->obj->nid++; } 196 { a->obj->nid++; }
200 197
201static void cleanup3(ADDED_OBJ *a) 198static void cleanup3_doall(ADDED_OBJ *a)
202 { 199 {
203 if (--a->obj->nid == 0) 200 if (--a->obj->nid == 0)
204 ASN1_OBJECT_free(a->obj); 201 ASN1_OBJECT_free(a->obj);
205 OPENSSL_free(a); 202 OPENSSL_free(a);
206 } 203 }
207 204
208static IMPLEMENT_LHASH_DOALL_FN(cleanup1, ADDED_OBJ *) 205static IMPLEMENT_LHASH_DOALL_FN(cleanup1, ADDED_OBJ)
209static IMPLEMENT_LHASH_DOALL_FN(cleanup2, ADDED_OBJ *) 206static IMPLEMENT_LHASH_DOALL_FN(cleanup2, ADDED_OBJ)
210static IMPLEMENT_LHASH_DOALL_FN(cleanup3, ADDED_OBJ *) 207static IMPLEMENT_LHASH_DOALL_FN(cleanup3, ADDED_OBJ)
208
209/* The purpose of obj_cleanup_defer is to avoid EVP_cleanup() attempting
210 * to use freed up OIDs. If neccessary the actual freeing up of OIDs is
211 * delayed.
212 */
213
214int obj_cleanup_defer = 0;
215
216void check_defer(int nid)
217 {
218 if (!obj_cleanup_defer && nid >= NUM_NID)
219 obj_cleanup_defer = 1;
220 }
211 221
212void OBJ_cleanup(void) 222void OBJ_cleanup(void)
213 { 223 {
224 if (obj_cleanup_defer)
225 {
226 obj_cleanup_defer = 2;
227 return ;
228 }
214 if (added == NULL) return; 229 if (added == NULL) return;
215 added->down_load=0; 230 lh_ADDED_OBJ_down_load(added) = 0;
216 lh_doall(added,LHASH_DOALL_FN(cleanup1)); /* zero counters */ 231 lh_ADDED_OBJ_doall(added,LHASH_DOALL_FN(cleanup1)); /* zero counters */
217 lh_doall(added,LHASH_DOALL_FN(cleanup2)); /* set counters */ 232 lh_ADDED_OBJ_doall(added,LHASH_DOALL_FN(cleanup2)); /* set counters */
218 lh_doall(added,LHASH_DOALL_FN(cleanup3)); /* free objects */ 233 lh_ADDED_OBJ_doall(added,LHASH_DOALL_FN(cleanup3)); /* free objects */
219 lh_free(added); 234 lh_ADDED_OBJ_free(added);
220 added=NULL; 235 added=NULL;
221 } 236 }
222 237
@@ -252,7 +267,7 @@ int OBJ_add_object(const ASN1_OBJECT *obj)
252 { 267 {
253 ao[i]->type=i; 268 ao[i]->type=i;
254 ao[i]->obj=o; 269 ao[i]->obj=o;
255 aop=(ADDED_OBJ *)lh_insert(added,ao[i]); 270 aop=lh_ADDED_OBJ_insert(added,ao[i]);
256 /* memory leak, buit should not normally matter */ 271 /* memory leak, buit should not normally matter */
257 if (aop != NULL) 272 if (aop != NULL)
258 OPENSSL_free(aop); 273 OPENSSL_free(aop);
@@ -292,7 +307,7 @@ ASN1_OBJECT *OBJ_nid2obj(int n)
292 ad.type=ADDED_NID; 307 ad.type=ADDED_NID;
293 ad.obj= &ob; 308 ad.obj= &ob;
294 ob.nid=n; 309 ob.nid=n;
295 adp=(ADDED_OBJ *)lh_retrieve(added,&ad); 310 adp=lh_ADDED_OBJ_retrieve(added,&ad);
296 if (adp != NULL) 311 if (adp != NULL)
297 return(adp->obj); 312 return(adp->obj);
298 else 313 else
@@ -324,7 +339,7 @@ const char *OBJ_nid2sn(int n)
324 ad.type=ADDED_NID; 339 ad.type=ADDED_NID;
325 ad.obj= &ob; 340 ad.obj= &ob;
326 ob.nid=n; 341 ob.nid=n;
327 adp=(ADDED_OBJ *)lh_retrieve(added,&ad); 342 adp=lh_ADDED_OBJ_retrieve(added,&ad);
328 if (adp != NULL) 343 if (adp != NULL)
329 return(adp->obj->sn); 344 return(adp->obj->sn);
330 else 345 else
@@ -356,7 +371,7 @@ const char *OBJ_nid2ln(int n)
356 ad.type=ADDED_NID; 371 ad.type=ADDED_NID;
357 ad.obj= &ob; 372 ad.obj= &ob;
358 ob.nid=n; 373 ob.nid=n;
359 adp=(ADDED_OBJ *)lh_retrieve(added,&ad); 374 adp=lh_ADDED_OBJ_retrieve(added,&ad);
360 if (adp != NULL) 375 if (adp != NULL)
361 return(adp->obj->ln); 376 return(adp->obj->ln);
362 else 377 else
@@ -367,9 +382,22 @@ const char *OBJ_nid2ln(int n)
367 } 382 }
368 } 383 }
369 384
385static int obj_cmp(const ASN1_OBJECT * const *ap, const unsigned int *bp)
386 {
387 int j;
388 const ASN1_OBJECT *a= *ap;
389 const ASN1_OBJECT *b= &nid_objs[*bp];
390
391 j=(a->length - b->length);
392 if (j) return(j);
393 return(memcmp(a->data,b->data,a->length));
394 }
395
396IMPLEMENT_OBJ_BSEARCH_CMP_FN(const ASN1_OBJECT *, unsigned int, obj);
397
370int OBJ_obj2nid(const ASN1_OBJECT *a) 398int OBJ_obj2nid(const ASN1_OBJECT *a)
371 { 399 {
372 ASN1_OBJECT **op; 400 const unsigned int *op;
373 ADDED_OBJ ad,*adp; 401 ADDED_OBJ ad,*adp;
374 402
375 if (a == NULL) 403 if (a == NULL)
@@ -381,14 +409,13 @@ int OBJ_obj2nid(const ASN1_OBJECT *a)
381 { 409 {
382 ad.type=ADDED_DATA; 410 ad.type=ADDED_DATA;
383 ad.obj=(ASN1_OBJECT *)a; /* XXX: ugly but harmless */ 411 ad.obj=(ASN1_OBJECT *)a; /* XXX: ugly but harmless */
384 adp=(ADDED_OBJ *)lh_retrieve(added,&ad); 412 adp=lh_ADDED_OBJ_retrieve(added,&ad);
385 if (adp != NULL) return (adp->obj->nid); 413 if (adp != NULL) return (adp->obj->nid);
386 } 414 }
387 op=(ASN1_OBJECT **)OBJ_bsearch((const char *)&a,(const char *)obj_objs, 415 op=OBJ_bsearch_obj(&a, obj_objs, NUM_OBJ);
388 NUM_OBJ, sizeof(ASN1_OBJECT *),obj_cmp);
389 if (op == NULL) 416 if (op == NULL)
390 return(NID_undef); 417 return(NID_undef);
391 return((*op)->nid); 418 return(nid_objs[*op].nid);
392 } 419 }
393 420
394/* Convert an object name into an ASN1_OBJECT 421/* Convert an object name into an ASN1_OBJECT
@@ -441,7 +468,7 @@ int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name)
441 int i,n=0,len,nid, first, use_bn; 468 int i,n=0,len,nid, first, use_bn;
442 BIGNUM *bl; 469 BIGNUM *bl;
443 unsigned long l; 470 unsigned long l;
444 unsigned char *p; 471 const unsigned char *p;
445 char tbuf[DECIMAL_SIZE(i)+DECIMAL_SIZE(l)+2]; 472 char tbuf[DECIMAL_SIZE(i)+DECIMAL_SIZE(l)+2];
446 473
447 if ((a == NULL) || (a->data == NULL)) { 474 if ((a == NULL) || (a->data == NULL)) {
@@ -456,10 +483,13 @@ int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name)
456 s=OBJ_nid2ln(nid); 483 s=OBJ_nid2ln(nid);
457 if (s == NULL) 484 if (s == NULL)
458 s=OBJ_nid2sn(nid); 485 s=OBJ_nid2sn(nid);
459 if (buf) 486 if (s)
460 BUF_strlcpy(buf,s,buf_len); 487 {
461 n=strlen(s); 488 if (buf)
462 return n; 489 BUF_strlcpy(buf,s,buf_len);
490 n=strlen(s);
491 return n;
492 }
463 } 493 }
464 494
465 495
@@ -607,62 +637,56 @@ int OBJ_txt2nid(const char *s)
607 637
608int OBJ_ln2nid(const char *s) 638int OBJ_ln2nid(const char *s)
609 { 639 {
610 ASN1_OBJECT o,*oo= &o,**op; 640 ASN1_OBJECT o;
641 const ASN1_OBJECT *oo= &o;
611 ADDED_OBJ ad,*adp; 642 ADDED_OBJ ad,*adp;
643 const unsigned int *op;
612 644
613 o.ln=s; 645 o.ln=s;
614 if (added != NULL) 646 if (added != NULL)
615 { 647 {
616 ad.type=ADDED_LNAME; 648 ad.type=ADDED_LNAME;
617 ad.obj= &o; 649 ad.obj= &o;
618 adp=(ADDED_OBJ *)lh_retrieve(added,&ad); 650 adp=lh_ADDED_OBJ_retrieve(added,&ad);
619 if (adp != NULL) return (adp->obj->nid); 651 if (adp != NULL) return (adp->obj->nid);
620 } 652 }
621 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)ln_objs, NUM_LN, 653 op=OBJ_bsearch_ln(&oo, ln_objs, NUM_LN);
622 sizeof(ASN1_OBJECT *),ln_cmp);
623 if (op == NULL) return(NID_undef); 654 if (op == NULL) return(NID_undef);
624 return((*op)->nid); 655 return(nid_objs[*op].nid);
625 } 656 }
626 657
627int OBJ_sn2nid(const char *s) 658int OBJ_sn2nid(const char *s)
628 { 659 {
629 ASN1_OBJECT o,*oo= &o,**op; 660 ASN1_OBJECT o;
661 const ASN1_OBJECT *oo= &o;
630 ADDED_OBJ ad,*adp; 662 ADDED_OBJ ad,*adp;
663 const unsigned int *op;
631 664
632 o.sn=s; 665 o.sn=s;
633 if (added != NULL) 666 if (added != NULL)
634 { 667 {
635 ad.type=ADDED_SNAME; 668 ad.type=ADDED_SNAME;
636 ad.obj= &o; 669 ad.obj= &o;
637 adp=(ADDED_OBJ *)lh_retrieve(added,&ad); 670 adp=lh_ADDED_OBJ_retrieve(added,&ad);
638 if (adp != NULL) return (adp->obj->nid); 671 if (adp != NULL) return (adp->obj->nid);
639 } 672 }
640 op=(ASN1_OBJECT **)OBJ_bsearch((char *)&oo,(char *)sn_objs,NUM_SN, 673 op=OBJ_bsearch_sn(&oo, sn_objs, NUM_SN);
641 sizeof(ASN1_OBJECT *),sn_cmp);
642 if (op == NULL) return(NID_undef); 674 if (op == NULL) return(NID_undef);
643 return((*op)->nid); 675 return(nid_objs[*op].nid);
644 } 676 }
645 677
646static int obj_cmp(const void *ap, const void *bp) 678const void *OBJ_bsearch_(const void *key, const void *base, int num, int size,
647 { 679 int (*cmp)(const void *, const void *))
648 int j;
649 const ASN1_OBJECT *a= *(ASN1_OBJECT * const *)ap;
650 const ASN1_OBJECT *b= *(ASN1_OBJECT * const *)bp;
651
652 j=(a->length - b->length);
653 if (j) return(j);
654 return(memcmp(a->data,b->data,a->length));
655 }
656
657const char *OBJ_bsearch(const char *key, const char *base, int num, int size,
658 int (*cmp)(const void *, const void *))
659 { 680 {
660 return OBJ_bsearch_ex(key, base, num, size, cmp, 0); 681 return OBJ_bsearch_ex_(key, base, num, size, cmp, 0);
661 } 682 }
662 683
663const char *OBJ_bsearch_ex(const char *key, const char *base, int num, 684const void *OBJ_bsearch_ex_(const void *key, const void *base_, int num,
664 int size, int (*cmp)(const void *, const void *), int flags) 685 int size,
686 int (*cmp)(const void *, const void *),
687 int flags)
665 { 688 {
689 const char *base=base_;
666 int l,h,i=0,c=0; 690 int l,h,i=0,c=0;
667 const char *p = NULL; 691 const char *p = NULL;
668 692
diff --git a/src/lib/libssl/src/crypto/objects/obj_dat.h b/src/lib/libssl/src/crypto/objects/obj_dat.h
index dccc15e03c..6449be6071 100644
--- a/src/lib/libssl/src/crypto/objects/obj_dat.h
+++ b/src/lib/libssl/src/crypto/objects/obj_dat.h
@@ -62,12 +62,12 @@
62 * [including the GNU Public Licence.] 62 * [including the GNU Public Licence.]
63 */ 63 */
64 64
65#define NUM_NID 859 65#define NUM_NID 893
66#define NUM_SN 852 66#define NUM_SN 886
67#define NUM_LN 852 67#define NUM_LN 886
68#define NUM_OBJ 806 68#define NUM_OBJ 840
69 69
70static unsigned char lvalues[5722]={ 70static const unsigned char lvalues[5824]={
710x00, /* [ 0] OBJ_undef */ 710x00, /* [ 0] OBJ_undef */
720x2A,0x86,0x48,0x86,0xF7,0x0D, /* [ 1] OBJ_rsadsi */ 720x2A,0x86,0x48,0x86,0xF7,0x0D, /* [ 1] OBJ_rsadsi */
730x2A,0x86,0x48,0x86,0xF7,0x0D,0x01, /* [ 7] OBJ_pkcs */ 730x2A,0x86,0x48,0x86,0xF7,0x0D,0x01, /* [ 7] OBJ_pkcs */
@@ -707,7 +707,7 @@ static unsigned char lvalues[5722]={
7070x2B, /* [4582] OBJ_identified_organization */ 7070x2B, /* [4582] OBJ_identified_organization */
7080x2B,0x81,0x04, /* [4583] OBJ_certicom_arc */ 7080x2B,0x81,0x04, /* [4583] OBJ_certicom_arc */
7090x67,0x2B, /* [4586] OBJ_wap */ 7090x67,0x2B, /* [4586] OBJ_wap */
7100x67,0x2B,0x0D, /* [4588] OBJ_wap_wsg */ 7100x67,0x2B,0x01, /* [4588] OBJ_wap_wsg */
7110x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03, /* [4591] OBJ_X9_62_id_characteristic_two_basis */ 7110x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03, /* [4591] OBJ_X9_62_id_characteristic_two_basis */
7120x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03,0x01,/* [4599] OBJ_X9_62_onBasis */ 7120x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03,0x01,/* [4599] OBJ_X9_62_onBasis */
7130x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03,0x02,/* [4608] OBJ_X9_62_tpBasis */ 7130x2A,0x86,0x48,0xCE,0x3D,0x01,0x02,0x03,0x02,/* [4608] OBJ_X9_62_tpBasis */
@@ -763,17 +763,17 @@ static unsigned char lvalues[5722]={
7630x2B,0x81,0x04,0x00,0x25, /* [4926] OBJ_sect409r1 */ 7630x2B,0x81,0x04,0x00,0x25, /* [4926] OBJ_sect409r1 */
7640x2B,0x81,0x04,0x00,0x26, /* [4931] OBJ_sect571k1 */ 7640x2B,0x81,0x04,0x00,0x26, /* [4931] OBJ_sect571k1 */
7650x2B,0x81,0x04,0x00,0x27, /* [4936] OBJ_sect571r1 */ 7650x2B,0x81,0x04,0x00,0x27, /* [4936] OBJ_sect571r1 */
7660x67,0x2B,0x0D,0x04,0x01, /* [4941] OBJ_wap_wsg_idm_ecid_wtls1 */ 7660x67,0x2B,0x01,0x04,0x01, /* [4941] OBJ_wap_wsg_idm_ecid_wtls1 */
7670x67,0x2B,0x0D,0x04,0x03, /* [4946] OBJ_wap_wsg_idm_ecid_wtls3 */ 7670x67,0x2B,0x01,0x04,0x03, /* [4946] OBJ_wap_wsg_idm_ecid_wtls3 */
7680x67,0x2B,0x0D,0x04,0x04, /* [4951] OBJ_wap_wsg_idm_ecid_wtls4 */ 7680x67,0x2B,0x01,0x04,0x04, /* [4951] OBJ_wap_wsg_idm_ecid_wtls4 */
7690x67,0x2B,0x0D,0x04,0x05, /* [4956] OBJ_wap_wsg_idm_ecid_wtls5 */ 7690x67,0x2B,0x01,0x04,0x05, /* [4956] OBJ_wap_wsg_idm_ecid_wtls5 */
7700x67,0x2B,0x0D,0x04,0x06, /* [4961] OBJ_wap_wsg_idm_ecid_wtls6 */ 7700x67,0x2B,0x01,0x04,0x06, /* [4961] OBJ_wap_wsg_idm_ecid_wtls6 */
7710x67,0x2B,0x0D,0x04,0x07, /* [4966] OBJ_wap_wsg_idm_ecid_wtls7 */ 7710x67,0x2B,0x01,0x04,0x07, /* [4966] OBJ_wap_wsg_idm_ecid_wtls7 */
7720x67,0x2B,0x0D,0x04,0x08, /* [4971] OBJ_wap_wsg_idm_ecid_wtls8 */ 7720x67,0x2B,0x01,0x04,0x08, /* [4971] OBJ_wap_wsg_idm_ecid_wtls8 */
7730x67,0x2B,0x0D,0x04,0x09, /* [4976] OBJ_wap_wsg_idm_ecid_wtls9 */ 7730x67,0x2B,0x01,0x04,0x09, /* [4976] OBJ_wap_wsg_idm_ecid_wtls9 */
7740x67,0x2B,0x0D,0x04,0x0A, /* [4981] OBJ_wap_wsg_idm_ecid_wtls10 */ 7740x67,0x2B,0x01,0x04,0x0A, /* [4981] OBJ_wap_wsg_idm_ecid_wtls10 */
7750x67,0x2B,0x0D,0x04,0x0B, /* [4986] OBJ_wap_wsg_idm_ecid_wtls11 */ 7750x67,0x2B,0x01,0x04,0x0B, /* [4986] OBJ_wap_wsg_idm_ecid_wtls11 */
7760x67,0x2B,0x0D,0x04,0x0C, /* [4991] OBJ_wap_wsg_idm_ecid_wtls12 */ 7760x67,0x2B,0x01,0x04,0x0C, /* [4991] OBJ_wap_wsg_idm_ecid_wtls12 */
7770x55,0x1D,0x20,0x00, /* [4996] OBJ_any_policy */ 7770x55,0x1D,0x20,0x00, /* [4996] OBJ_any_policy */
7780x55,0x1D,0x21, /* [5000] OBJ_policy_mappings */ 7780x55,0x1D,0x21, /* [5000] OBJ_policy_mappings */
7790x55,0x1D,0x36, /* [5003] OBJ_inhibit_any_policy */ 7790x55,0x1D,0x36, /* [5003] OBJ_inhibit_any_policy */
@@ -874,9 +874,43 @@ static unsigned char lvalues[5722]={
8740x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x11,0x02,/* [5701] OBJ_LocalKeySet */ 8740x2B,0x06,0x01,0x04,0x01,0x82,0x37,0x11,0x02,/* [5701] OBJ_LocalKeySet */
8750x55,0x1D,0x2E, /* [5710] OBJ_freshest_crl */ 8750x55,0x1D,0x2E, /* [5710] OBJ_freshest_crl */
8760x2B,0x06,0x01,0x05,0x05,0x07,0x08,0x03, /* [5713] OBJ_id_on_permanentIdentifier */ 8760x2B,0x06,0x01,0x05,0x05,0x07,0x08,0x03, /* [5713] OBJ_id_on_permanentIdentifier */
8770x55,0x04,0x0E, /* [5721] OBJ_searchGuide */
8780x55,0x04,0x0F, /* [5724] OBJ_businessCategory */
8790x55,0x04,0x10, /* [5727] OBJ_postalAddress */
8800x55,0x04,0x12, /* [5730] OBJ_postOfficeBox */
8810x55,0x04,0x13, /* [5733] OBJ_physicalDeliveryOfficeName */
8820x55,0x04,0x14, /* [5736] OBJ_telephoneNumber */
8830x55,0x04,0x15, /* [5739] OBJ_telexNumber */
8840x55,0x04,0x16, /* [5742] OBJ_teletexTerminalIdentifier */
8850x55,0x04,0x17, /* [5745] OBJ_facsimileTelephoneNumber */
8860x55,0x04,0x18, /* [5748] OBJ_x121Address */
8870x55,0x04,0x19, /* [5751] OBJ_internationaliSDNNumber */
8880x55,0x04,0x1A, /* [5754] OBJ_registeredAddress */
8890x55,0x04,0x1B, /* [5757] OBJ_destinationIndicator */
8900x55,0x04,0x1C, /* [5760] OBJ_preferredDeliveryMethod */
8910x55,0x04,0x1D, /* [5763] OBJ_presentationAddress */
8920x55,0x04,0x1E, /* [5766] OBJ_supportedApplicationContext */
8930x55,0x04,0x1F, /* [5769] OBJ_member */
8940x55,0x04,0x20, /* [5772] OBJ_owner */
8950x55,0x04,0x21, /* [5775] OBJ_roleOccupant */
8960x55,0x04,0x22, /* [5778] OBJ_seeAlso */
8970x55,0x04,0x23, /* [5781] OBJ_userPassword */
8980x55,0x04,0x24, /* [5784] OBJ_userCertificate */
8990x55,0x04,0x25, /* [5787] OBJ_cACertificate */
9000x55,0x04,0x26, /* [5790] OBJ_authorityRevocationList */
9010x55,0x04,0x27, /* [5793] OBJ_certificateRevocationList */
9020x55,0x04,0x28, /* [5796] OBJ_crossCertificatePair */
9030x55,0x04,0x2F, /* [5799] OBJ_enhancedSearchGuide */
9040x55,0x04,0x30, /* [5802] OBJ_protocolInformation */
9050x55,0x04,0x31, /* [5805] OBJ_distinguishedName */
9060x55,0x04,0x32, /* [5808] OBJ_uniqueMember */
9070x55,0x04,0x33, /* [5811] OBJ_houseIdentifier */
9080x55,0x04,0x34, /* [5814] OBJ_supportedAlgorithms */
9090x55,0x04,0x35, /* [5817] OBJ_deltaRevocationList */
9100x55,0x04,0x36, /* [5820] OBJ_dmdName */
877}; 911};
878 912
879static ASN1_OBJECT nid_objs[NUM_NID]={ 913static const ASN1_OBJECT nid_objs[NUM_NID]={
880{"UNDEF","undefined",NID_undef,1,&(lvalues[0]),0}, 914{"UNDEF","undefined",NID_undef,1,&(lvalues[0]),0},
881{"rsadsi","RSA Data Security, Inc.",NID_rsadsi,6,&(lvalues[1]),0}, 915{"rsadsi","RSA Data Security, Inc.",NID_rsadsi,6,&(lvalues[1]),0},
882{"pkcs","RSA Data Security, Inc. PKCS",NID_pkcs,7,&(lvalues[7]),0}, 916{"pkcs","RSA Data Security, Inc. PKCS",NID_pkcs,7,&(lvalues[7]),0},
@@ -1928,7 +1962,7 @@ static ASN1_OBJECT nid_objs[NUM_NID]={
1928{"DES-CFB8","des-cfb8",NID_des_cfb8,0,NULL,0}, 1962{"DES-CFB8","des-cfb8",NID_des_cfb8,0,NULL,0},
1929{"DES-EDE3-CFB1","des-ede3-cfb1",NID_des_ede3_cfb1,0,NULL,0}, 1963{"DES-EDE3-CFB1","des-ede3-cfb1",NID_des_ede3_cfb1,0,NULL,0},
1930{"DES-EDE3-CFB8","des-ede3-cfb8",NID_des_ede3_cfb8,0,NULL,0}, 1964{"DES-EDE3-CFB8","des-ede3-cfb8",NID_des_ede3_cfb8,0,NULL,0},
1931{"streetAddress","streetAddress",NID_streetAddress,3,&(lvalues[4462]),0}, 1965{"street","streetAddress",NID_streetAddress,3,&(lvalues[4462]),0},
1932{"postalCode","postalCode",NID_postalCode,3,&(lvalues[4465]),0}, 1966{"postalCode","postalCode",NID_postalCode,3,&(lvalues[4465]),0},
1933{"id-ppl","id-ppl",NID_id_ppl,7,&(lvalues[4468]),0}, 1967{"id-ppl","id-ppl",NID_id_ppl,7,&(lvalues[4468]),0},
1934{"proxyCertInfo","Proxy Certificate Information",NID_proxyCertInfo,8, 1968{"proxyCertInfo","Proxy Certificate Information",NID_proxyCertInfo,8,
@@ -2262,2524 +2296,2681 @@ static ASN1_OBJECT nid_objs[NUM_NID]={
2262 &(lvalues[5710]),0}, 2296 &(lvalues[5710]),0},
2263{"id-on-permanentIdentifier","Permanent Identifier", 2297{"id-on-permanentIdentifier","Permanent Identifier",
2264 NID_id_on_permanentIdentifier,8,&(lvalues[5713]),0}, 2298 NID_id_on_permanentIdentifier,8,&(lvalues[5713]),0},
2299{"searchGuide","searchGuide",NID_searchGuide,3,&(lvalues[5721]),0},
2300{"businessCategory","businessCategory",NID_businessCategory,3,
2301 &(lvalues[5724]),0},
2302{"postalAddress","postalAddress",NID_postalAddress,3,&(lvalues[5727]),0},
2303{"postOfficeBox","postOfficeBox",NID_postOfficeBox,3,&(lvalues[5730]),0},
2304{"physicalDeliveryOfficeName","physicalDeliveryOfficeName",
2305 NID_physicalDeliveryOfficeName,3,&(lvalues[5733]),0},
2306{"telephoneNumber","telephoneNumber",NID_telephoneNumber,3,
2307 &(lvalues[5736]),0},
2308{"telexNumber","telexNumber",NID_telexNumber,3,&(lvalues[5739]),0},
2309{"teletexTerminalIdentifier","teletexTerminalIdentifier",
2310 NID_teletexTerminalIdentifier,3,&(lvalues[5742]),0},
2311{"facsimileTelephoneNumber","facsimileTelephoneNumber",
2312 NID_facsimileTelephoneNumber,3,&(lvalues[5745]),0},
2313{"x121Address","x121Address",NID_x121Address,3,&(lvalues[5748]),0},
2314{"internationaliSDNNumber","internationaliSDNNumber",
2315 NID_internationaliSDNNumber,3,&(lvalues[5751]),0},
2316{"registeredAddress","registeredAddress",NID_registeredAddress,3,
2317 &(lvalues[5754]),0},
2318{"destinationIndicator","destinationIndicator",
2319 NID_destinationIndicator,3,&(lvalues[5757]),0},
2320{"preferredDeliveryMethod","preferredDeliveryMethod",
2321 NID_preferredDeliveryMethod,3,&(lvalues[5760]),0},
2322{"presentationAddress","presentationAddress",NID_presentationAddress,
2323 3,&(lvalues[5763]),0},
2324{"supportedApplicationContext","supportedApplicationContext",
2325 NID_supportedApplicationContext,3,&(lvalues[5766]),0},
2326{"member","member",NID_member,3,&(lvalues[5769]),0},
2327{"owner","owner",NID_owner,3,&(lvalues[5772]),0},
2328{"roleOccupant","roleOccupant",NID_roleOccupant,3,&(lvalues[5775]),0},
2329{"seeAlso","seeAlso",NID_seeAlso,3,&(lvalues[5778]),0},
2330{"userPassword","userPassword",NID_userPassword,3,&(lvalues[5781]),0},
2331{"userCertificate","userCertificate",NID_userCertificate,3,
2332 &(lvalues[5784]),0},
2333{"cACertificate","cACertificate",NID_cACertificate,3,&(lvalues[5787]),0},
2334{"authorityRevocationList","authorityRevocationList",
2335 NID_authorityRevocationList,3,&(lvalues[5790]),0},
2336{"certificateRevocationList","certificateRevocationList",
2337 NID_certificateRevocationList,3,&(lvalues[5793]),0},
2338{"crossCertificatePair","crossCertificatePair",
2339 NID_crossCertificatePair,3,&(lvalues[5796]),0},
2340{"enhancedSearchGuide","enhancedSearchGuide",NID_enhancedSearchGuide,
2341 3,&(lvalues[5799]),0},
2342{"protocolInformation","protocolInformation",NID_protocolInformation,
2343 3,&(lvalues[5802]),0},
2344{"distinguishedName","distinguishedName",NID_distinguishedName,3,
2345 &(lvalues[5805]),0},
2346{"uniqueMember","uniqueMember",NID_uniqueMember,3,&(lvalues[5808]),0},
2347{"houseIdentifier","houseIdentifier",NID_houseIdentifier,3,
2348 &(lvalues[5811]),0},
2349{"supportedAlgorithms","supportedAlgorithms",NID_supportedAlgorithms,
2350 3,&(lvalues[5814]),0},
2351{"deltaRevocationList","deltaRevocationList",NID_deltaRevocationList,
2352 3,&(lvalues[5817]),0},
2353{"dmdName","dmdName",NID_dmdName,3,&(lvalues[5820]),0},
2265}; 2354};
2266 2355
2267static ASN1_OBJECT *sn_objs[NUM_SN]={ 2356static const unsigned int sn_objs[NUM_SN]={
2268&(nid_objs[364]),/* "AD_DVCS" */ 2357364, /* "AD_DVCS" */
2269&(nid_objs[419]),/* "AES-128-CBC" */ 2358419, /* "AES-128-CBC" */
2270&(nid_objs[421]),/* "AES-128-CFB" */ 2359421, /* "AES-128-CFB" */
2271&(nid_objs[650]),/* "AES-128-CFB1" */ 2360650, /* "AES-128-CFB1" */
2272&(nid_objs[653]),/* "AES-128-CFB8" */ 2361653, /* "AES-128-CFB8" */
2273&(nid_objs[418]),/* "AES-128-ECB" */ 2362418, /* "AES-128-ECB" */
2274&(nid_objs[420]),/* "AES-128-OFB" */ 2363420, /* "AES-128-OFB" */
2275&(nid_objs[423]),/* "AES-192-CBC" */ 2364423, /* "AES-192-CBC" */
2276&(nid_objs[425]),/* "AES-192-CFB" */ 2365425, /* "AES-192-CFB" */
2277&(nid_objs[651]),/* "AES-192-CFB1" */ 2366651, /* "AES-192-CFB1" */
2278&(nid_objs[654]),/* "AES-192-CFB8" */ 2367654, /* "AES-192-CFB8" */
2279&(nid_objs[422]),/* "AES-192-ECB" */ 2368422, /* "AES-192-ECB" */
2280&(nid_objs[424]),/* "AES-192-OFB" */ 2369424, /* "AES-192-OFB" */
2281&(nid_objs[427]),/* "AES-256-CBC" */ 2370427, /* "AES-256-CBC" */
2282&(nid_objs[429]),/* "AES-256-CFB" */ 2371429, /* "AES-256-CFB" */
2283&(nid_objs[652]),/* "AES-256-CFB1" */ 2372652, /* "AES-256-CFB1" */
2284&(nid_objs[655]),/* "AES-256-CFB8" */ 2373655, /* "AES-256-CFB8" */
2285&(nid_objs[426]),/* "AES-256-ECB" */ 2374426, /* "AES-256-ECB" */
2286&(nid_objs[428]),/* "AES-256-OFB" */ 2375428, /* "AES-256-OFB" */
2287&(nid_objs[91]),/* "BF-CBC" */ 237691, /* "BF-CBC" */
2288&(nid_objs[93]),/* "BF-CFB" */ 237793, /* "BF-CFB" */
2289&(nid_objs[92]),/* "BF-ECB" */ 237892, /* "BF-ECB" */
2290&(nid_objs[94]),/* "BF-OFB" */ 237994, /* "BF-OFB" */
2291&(nid_objs[14]),/* "C" */ 238014, /* "C" */
2292&(nid_objs[751]),/* "CAMELLIA-128-CBC" */ 2381751, /* "CAMELLIA-128-CBC" */
2293&(nid_objs[757]),/* "CAMELLIA-128-CFB" */ 2382757, /* "CAMELLIA-128-CFB" */
2294&(nid_objs[760]),/* "CAMELLIA-128-CFB1" */ 2383760, /* "CAMELLIA-128-CFB1" */
2295&(nid_objs[763]),/* "CAMELLIA-128-CFB8" */ 2384763, /* "CAMELLIA-128-CFB8" */
2296&(nid_objs[754]),/* "CAMELLIA-128-ECB" */ 2385754, /* "CAMELLIA-128-ECB" */
2297&(nid_objs[766]),/* "CAMELLIA-128-OFB" */ 2386766, /* "CAMELLIA-128-OFB" */
2298&(nid_objs[752]),/* "CAMELLIA-192-CBC" */ 2387752, /* "CAMELLIA-192-CBC" */
2299&(nid_objs[758]),/* "CAMELLIA-192-CFB" */ 2388758, /* "CAMELLIA-192-CFB" */
2300&(nid_objs[761]),/* "CAMELLIA-192-CFB1" */ 2389761, /* "CAMELLIA-192-CFB1" */
2301&(nid_objs[764]),/* "CAMELLIA-192-CFB8" */ 2390764, /* "CAMELLIA-192-CFB8" */
2302&(nid_objs[755]),/* "CAMELLIA-192-ECB" */ 2391755, /* "CAMELLIA-192-ECB" */
2303&(nid_objs[767]),/* "CAMELLIA-192-OFB" */ 2392767, /* "CAMELLIA-192-OFB" */
2304&(nid_objs[753]),/* "CAMELLIA-256-CBC" */ 2393753, /* "CAMELLIA-256-CBC" */
2305&(nid_objs[759]),/* "CAMELLIA-256-CFB" */ 2394759, /* "CAMELLIA-256-CFB" */
2306&(nid_objs[762]),/* "CAMELLIA-256-CFB1" */ 2395762, /* "CAMELLIA-256-CFB1" */
2307&(nid_objs[765]),/* "CAMELLIA-256-CFB8" */ 2396765, /* "CAMELLIA-256-CFB8" */
2308&(nid_objs[756]),/* "CAMELLIA-256-ECB" */ 2397756, /* "CAMELLIA-256-ECB" */
2309&(nid_objs[768]),/* "CAMELLIA-256-OFB" */ 2398768, /* "CAMELLIA-256-OFB" */
2310&(nid_objs[108]),/* "CAST5-CBC" */ 2399108, /* "CAST5-CBC" */
2311&(nid_objs[110]),/* "CAST5-CFB" */ 2400110, /* "CAST5-CFB" */
2312&(nid_objs[109]),/* "CAST5-ECB" */ 2401109, /* "CAST5-ECB" */
2313&(nid_objs[111]),/* "CAST5-OFB" */ 2402111, /* "CAST5-OFB" */
2314&(nid_objs[13]),/* "CN" */ 240313, /* "CN" */
2315&(nid_objs[141]),/* "CRLReason" */ 2404141, /* "CRLReason" */
2316&(nid_objs[417]),/* "CSPName" */ 2405417, /* "CSPName" */
2317&(nid_objs[367]),/* "CrlID" */ 2406367, /* "CrlID" */
2318&(nid_objs[391]),/* "DC" */ 2407391, /* "DC" */
2319&(nid_objs[31]),/* "DES-CBC" */ 240831, /* "DES-CBC" */
2320&(nid_objs[643]),/* "DES-CDMF" */ 2409643, /* "DES-CDMF" */
2321&(nid_objs[30]),/* "DES-CFB" */ 241030, /* "DES-CFB" */
2322&(nid_objs[656]),/* "DES-CFB1" */ 2411656, /* "DES-CFB1" */
2323&(nid_objs[657]),/* "DES-CFB8" */ 2412657, /* "DES-CFB8" */
2324&(nid_objs[29]),/* "DES-ECB" */ 241329, /* "DES-ECB" */
2325&(nid_objs[32]),/* "DES-EDE" */ 241432, /* "DES-EDE" */
2326&(nid_objs[43]),/* "DES-EDE-CBC" */ 241543, /* "DES-EDE-CBC" */
2327&(nid_objs[60]),/* "DES-EDE-CFB" */ 241660, /* "DES-EDE-CFB" */
2328&(nid_objs[62]),/* "DES-EDE-OFB" */ 241762, /* "DES-EDE-OFB" */
2329&(nid_objs[33]),/* "DES-EDE3" */ 241833, /* "DES-EDE3" */
2330&(nid_objs[44]),/* "DES-EDE3-CBC" */ 241944, /* "DES-EDE3-CBC" */
2331&(nid_objs[61]),/* "DES-EDE3-CFB" */ 242061, /* "DES-EDE3-CFB" */
2332&(nid_objs[658]),/* "DES-EDE3-CFB1" */ 2421658, /* "DES-EDE3-CFB1" */
2333&(nid_objs[659]),/* "DES-EDE3-CFB8" */ 2422659, /* "DES-EDE3-CFB8" */
2334&(nid_objs[63]),/* "DES-EDE3-OFB" */ 242363, /* "DES-EDE3-OFB" */
2335&(nid_objs[45]),/* "DES-OFB" */ 242445, /* "DES-OFB" */
2336&(nid_objs[80]),/* "DESX-CBC" */ 242580, /* "DESX-CBC" */
2337&(nid_objs[380]),/* "DOD" */ 2426380, /* "DOD" */
2338&(nid_objs[116]),/* "DSA" */ 2427116, /* "DSA" */
2339&(nid_objs[66]),/* "DSA-SHA" */ 242866, /* "DSA-SHA" */
2340&(nid_objs[113]),/* "DSA-SHA1" */ 2429113, /* "DSA-SHA1" */
2341&(nid_objs[70]),/* "DSA-SHA1-old" */ 243070, /* "DSA-SHA1-old" */
2342&(nid_objs[67]),/* "DSA-old" */ 243167, /* "DSA-old" */
2343&(nid_objs[297]),/* "DVCS" */ 2432297, /* "DVCS" */
2344&(nid_objs[99]),/* "GN" */ 243399, /* "GN" */
2345&(nid_objs[855]),/* "HMAC" */ 2434855, /* "HMAC" */
2346&(nid_objs[780]),/* "HMAC-MD5" */ 2435780, /* "HMAC-MD5" */
2347&(nid_objs[781]),/* "HMAC-SHA1" */ 2436781, /* "HMAC-SHA1" */
2348&(nid_objs[381]),/* "IANA" */ 2437381, /* "IANA" */
2349&(nid_objs[34]),/* "IDEA-CBC" */ 243834, /* "IDEA-CBC" */
2350&(nid_objs[35]),/* "IDEA-CFB" */ 243935, /* "IDEA-CFB" */
2351&(nid_objs[36]),/* "IDEA-ECB" */ 244036, /* "IDEA-ECB" */
2352&(nid_objs[46]),/* "IDEA-OFB" */ 244146, /* "IDEA-OFB" */
2353&(nid_objs[181]),/* "ISO" */ 2442181, /* "ISO" */
2354&(nid_objs[183]),/* "ISO-US" */ 2443183, /* "ISO-US" */
2355&(nid_objs[645]),/* "ITU-T" */ 2444645, /* "ITU-T" */
2356&(nid_objs[646]),/* "JOINT-ISO-ITU-T" */ 2445646, /* "JOINT-ISO-ITU-T" */
2357&(nid_objs[773]),/* "KISA" */ 2446773, /* "KISA" */
2358&(nid_objs[15]),/* "L" */ 244715, /* "L" */
2359&(nid_objs[856]),/* "LocalKeySet" */ 2448856, /* "LocalKeySet" */
2360&(nid_objs[ 3]),/* "MD2" */ 2449 3, /* "MD2" */
2361&(nid_objs[257]),/* "MD4" */ 2450257, /* "MD4" */
2362&(nid_objs[ 4]),/* "MD5" */ 2451 4, /* "MD5" */
2363&(nid_objs[114]),/* "MD5-SHA1" */ 2452114, /* "MD5-SHA1" */
2364&(nid_objs[95]),/* "MDC2" */ 245395, /* "MDC2" */
2365&(nid_objs[388]),/* "Mail" */ 2454388, /* "Mail" */
2366&(nid_objs[393]),/* "NULL" */ 2455393, /* "NULL" */
2367&(nid_objs[404]),/* "NULL" */ 2456404, /* "NULL" */
2368&(nid_objs[57]),/* "Netscape" */ 245757, /* "Netscape" */
2369&(nid_objs[366]),/* "Nonce" */ 2458366, /* "Nonce" */
2370&(nid_objs[17]),/* "O" */ 245917, /* "O" */
2371&(nid_objs[178]),/* "OCSP" */ 2460178, /* "OCSP" */
2372&(nid_objs[180]),/* "OCSPSigning" */ 2461180, /* "OCSPSigning" */
2373&(nid_objs[379]),/* "ORG" */ 2462379, /* "ORG" */
2374&(nid_objs[18]),/* "OU" */ 246318, /* "OU" */
2375&(nid_objs[749]),/* "Oakley-EC2N-3" */ 2464749, /* "Oakley-EC2N-3" */
2376&(nid_objs[750]),/* "Oakley-EC2N-4" */ 2465750, /* "Oakley-EC2N-4" */
2377&(nid_objs[ 9]),/* "PBE-MD2-DES" */ 2466 9, /* "PBE-MD2-DES" */
2378&(nid_objs[168]),/* "PBE-MD2-RC2-64" */ 2467168, /* "PBE-MD2-RC2-64" */
2379&(nid_objs[10]),/* "PBE-MD5-DES" */ 246810, /* "PBE-MD5-DES" */
2380&(nid_objs[169]),/* "PBE-MD5-RC2-64" */ 2469169, /* "PBE-MD5-RC2-64" */
2381&(nid_objs[147]),/* "PBE-SHA1-2DES" */ 2470147, /* "PBE-SHA1-2DES" */
2382&(nid_objs[146]),/* "PBE-SHA1-3DES" */ 2471146, /* "PBE-SHA1-3DES" */
2383&(nid_objs[170]),/* "PBE-SHA1-DES" */ 2472170, /* "PBE-SHA1-DES" */
2384&(nid_objs[148]),/* "PBE-SHA1-RC2-128" */ 2473148, /* "PBE-SHA1-RC2-128" */
2385&(nid_objs[149]),/* "PBE-SHA1-RC2-40" */ 2474149, /* "PBE-SHA1-RC2-40" */
2386&(nid_objs[68]),/* "PBE-SHA1-RC2-64" */ 247568, /* "PBE-SHA1-RC2-64" */
2387&(nid_objs[144]),/* "PBE-SHA1-RC4-128" */ 2476144, /* "PBE-SHA1-RC4-128" */
2388&(nid_objs[145]),/* "PBE-SHA1-RC4-40" */ 2477145, /* "PBE-SHA1-RC4-40" */
2389&(nid_objs[161]),/* "PBES2" */ 2478161, /* "PBES2" */
2390&(nid_objs[69]),/* "PBKDF2" */ 247969, /* "PBKDF2" */
2391&(nid_objs[162]),/* "PBMAC1" */ 2480162, /* "PBMAC1" */
2392&(nid_objs[127]),/* "PKIX" */ 2481127, /* "PKIX" */
2393&(nid_objs[98]),/* "RC2-40-CBC" */ 248298, /* "RC2-40-CBC" */
2394&(nid_objs[166]),/* "RC2-64-CBC" */ 2483166, /* "RC2-64-CBC" */
2395&(nid_objs[37]),/* "RC2-CBC" */ 248437, /* "RC2-CBC" */
2396&(nid_objs[39]),/* "RC2-CFB" */ 248539, /* "RC2-CFB" */
2397&(nid_objs[38]),/* "RC2-ECB" */ 248638, /* "RC2-ECB" */
2398&(nid_objs[40]),/* "RC2-OFB" */ 248740, /* "RC2-OFB" */
2399&(nid_objs[ 5]),/* "RC4" */ 2488 5, /* "RC4" */
2400&(nid_objs[97]),/* "RC4-40" */ 248997, /* "RC4-40" */
2401&(nid_objs[120]),/* "RC5-CBC" */ 2490120, /* "RC5-CBC" */
2402&(nid_objs[122]),/* "RC5-CFB" */ 2491122, /* "RC5-CFB" */
2403&(nid_objs[121]),/* "RC5-ECB" */ 2492121, /* "RC5-ECB" */
2404&(nid_objs[123]),/* "RC5-OFB" */ 2493123, /* "RC5-OFB" */
2405&(nid_objs[117]),/* "RIPEMD160" */ 2494117, /* "RIPEMD160" */
2406&(nid_objs[124]),/* "RLE" */ 2495124, /* "RLE" */
2407&(nid_objs[19]),/* "RSA" */ 249619, /* "RSA" */
2408&(nid_objs[ 7]),/* "RSA-MD2" */ 2497 7, /* "RSA-MD2" */
2409&(nid_objs[396]),/* "RSA-MD4" */ 2498396, /* "RSA-MD4" */
2410&(nid_objs[ 8]),/* "RSA-MD5" */ 2499 8, /* "RSA-MD5" */
2411&(nid_objs[96]),/* "RSA-MDC2" */ 250096, /* "RSA-MDC2" */
2412&(nid_objs[104]),/* "RSA-NP-MD5" */ 2501104, /* "RSA-NP-MD5" */
2413&(nid_objs[119]),/* "RSA-RIPEMD160" */ 2502119, /* "RSA-RIPEMD160" */
2414&(nid_objs[42]),/* "RSA-SHA" */ 250342, /* "RSA-SHA" */
2415&(nid_objs[65]),/* "RSA-SHA1" */ 250465, /* "RSA-SHA1" */
2416&(nid_objs[115]),/* "RSA-SHA1-2" */ 2505115, /* "RSA-SHA1-2" */
2417&(nid_objs[671]),/* "RSA-SHA224" */ 2506671, /* "RSA-SHA224" */
2418&(nid_objs[668]),/* "RSA-SHA256" */ 2507668, /* "RSA-SHA256" */
2419&(nid_objs[669]),/* "RSA-SHA384" */ 2508669, /* "RSA-SHA384" */
2420&(nid_objs[670]),/* "RSA-SHA512" */ 2509670, /* "RSA-SHA512" */
2421&(nid_objs[777]),/* "SEED-CBC" */ 2510777, /* "SEED-CBC" */
2422&(nid_objs[779]),/* "SEED-CFB" */ 2511779, /* "SEED-CFB" */
2423&(nid_objs[776]),/* "SEED-ECB" */ 2512776, /* "SEED-ECB" */
2424&(nid_objs[778]),/* "SEED-OFB" */ 2513778, /* "SEED-OFB" */
2425&(nid_objs[41]),/* "SHA" */ 251441, /* "SHA" */
2426&(nid_objs[64]),/* "SHA1" */ 251564, /* "SHA1" */
2427&(nid_objs[675]),/* "SHA224" */ 2516675, /* "SHA224" */
2428&(nid_objs[672]),/* "SHA256" */ 2517672, /* "SHA256" */
2429&(nid_objs[673]),/* "SHA384" */ 2518673, /* "SHA384" */
2430&(nid_objs[674]),/* "SHA512" */ 2519674, /* "SHA512" */
2431&(nid_objs[188]),/* "SMIME" */ 2520188, /* "SMIME" */
2432&(nid_objs[167]),/* "SMIME-CAPS" */ 2521167, /* "SMIME-CAPS" */
2433&(nid_objs[100]),/* "SN" */ 2522100, /* "SN" */
2434&(nid_objs[16]),/* "ST" */ 252316, /* "ST" */
2435&(nid_objs[143]),/* "SXNetID" */ 2524143, /* "SXNetID" */
2436&(nid_objs[458]),/* "UID" */ 2525458, /* "UID" */
2437&(nid_objs[ 0]),/* "UNDEF" */ 2526 0, /* "UNDEF" */
2438&(nid_objs[11]),/* "X500" */ 252711, /* "X500" */
2439&(nid_objs[378]),/* "X500algorithms" */ 2528378, /* "X500algorithms" */
2440&(nid_objs[12]),/* "X509" */ 252912, /* "X509" */
2441&(nid_objs[184]),/* "X9-57" */ 2530184, /* "X9-57" */
2442&(nid_objs[185]),/* "X9cm" */ 2531185, /* "X9cm" */
2443&(nid_objs[125]),/* "ZLIB" */ 2532125, /* "ZLIB" */
2444&(nid_objs[478]),/* "aRecord" */ 2533478, /* "aRecord" */
2445&(nid_objs[289]),/* "aaControls" */ 2534289, /* "aaControls" */
2446&(nid_objs[287]),/* "ac-auditEntity" */ 2535287, /* "ac-auditEntity" */
2447&(nid_objs[397]),/* "ac-proxying" */ 2536397, /* "ac-proxying" */
2448&(nid_objs[288]),/* "ac-targeting" */ 2537288, /* "ac-targeting" */
2449&(nid_objs[368]),/* "acceptableResponses" */ 2538368, /* "acceptableResponses" */
2450&(nid_objs[446]),/* "account" */ 2539446, /* "account" */
2451&(nid_objs[363]),/* "ad_timestamping" */ 2540363, /* "ad_timestamping" */
2452&(nid_objs[376]),/* "algorithm" */ 2541376, /* "algorithm" */
2453&(nid_objs[405]),/* "ansi-X9-62" */ 2542405, /* "ansi-X9-62" */
2454&(nid_objs[746]),/* "anyPolicy" */ 2543746, /* "anyPolicy" */
2455&(nid_objs[370]),/* "archiveCutoff" */ 2544370, /* "archiveCutoff" */
2456&(nid_objs[484]),/* "associatedDomain" */ 2545484, /* "associatedDomain" */
2457&(nid_objs[485]),/* "associatedName" */ 2546485, /* "associatedName" */
2458&(nid_objs[501]),/* "audio" */ 2547501, /* "audio" */
2459&(nid_objs[177]),/* "authorityInfoAccess" */ 2548177, /* "authorityInfoAccess" */
2460&(nid_objs[90]),/* "authorityKeyIdentifier" */ 254990, /* "authorityKeyIdentifier" */
2461&(nid_objs[87]),/* "basicConstraints" */ 2550882, /* "authorityRevocationList" */
2462&(nid_objs[365]),/* "basicOCSPResponse" */ 255187, /* "basicConstraints" */
2463&(nid_objs[285]),/* "biometricInfo" */ 2552365, /* "basicOCSPResponse" */
2464&(nid_objs[494]),/* "buildingName" */ 2553285, /* "biometricInfo" */
2465&(nid_objs[691]),/* "c2onb191v4" */ 2554494, /* "buildingName" */
2466&(nid_objs[692]),/* "c2onb191v5" */ 2555860, /* "businessCategory" */
2467&(nid_objs[697]),/* "c2onb239v4" */ 2556691, /* "c2onb191v4" */
2468&(nid_objs[698]),/* "c2onb239v5" */ 2557692, /* "c2onb191v5" */
2469&(nid_objs[684]),/* "c2pnb163v1" */ 2558697, /* "c2onb239v4" */
2470&(nid_objs[685]),/* "c2pnb163v2" */ 2559698, /* "c2onb239v5" */
2471&(nid_objs[686]),/* "c2pnb163v3" */ 2560684, /* "c2pnb163v1" */
2472&(nid_objs[687]),/* "c2pnb176v1" */ 2561685, /* "c2pnb163v2" */
2473&(nid_objs[693]),/* "c2pnb208w1" */ 2562686, /* "c2pnb163v3" */
2474&(nid_objs[699]),/* "c2pnb272w1" */ 2563687, /* "c2pnb176v1" */
2475&(nid_objs[700]),/* "c2pnb304w1" */ 2564693, /* "c2pnb208w1" */
2476&(nid_objs[702]),/* "c2pnb368w1" */ 2565699, /* "c2pnb272w1" */
2477&(nid_objs[688]),/* "c2tnb191v1" */ 2566700, /* "c2pnb304w1" */
2478&(nid_objs[689]),/* "c2tnb191v2" */ 2567702, /* "c2pnb368w1" */
2479&(nid_objs[690]),/* "c2tnb191v3" */ 2568688, /* "c2tnb191v1" */
2480&(nid_objs[694]),/* "c2tnb239v1" */ 2569689, /* "c2tnb191v2" */
2481&(nid_objs[695]),/* "c2tnb239v2" */ 2570690, /* "c2tnb191v3" */
2482&(nid_objs[696]),/* "c2tnb239v3" */ 2571694, /* "c2tnb239v1" */
2483&(nid_objs[701]),/* "c2tnb359v1" */ 2572695, /* "c2tnb239v2" */
2484&(nid_objs[703]),/* "c2tnb431r1" */ 2573696, /* "c2tnb239v3" */
2485&(nid_objs[483]),/* "cNAMERecord" */ 2574701, /* "c2tnb359v1" */
2486&(nid_objs[179]),/* "caIssuers" */ 2575703, /* "c2tnb431r1" */
2487&(nid_objs[785]),/* "caRepository" */ 2576881, /* "cACertificate" */
2488&(nid_objs[443]),/* "caseIgnoreIA5StringSyntax" */ 2577483, /* "cNAMERecord" */
2489&(nid_objs[152]),/* "certBag" */ 2578179, /* "caIssuers" */
2490&(nid_objs[677]),/* "certicom-arc" */ 2579785, /* "caRepository" */
2491&(nid_objs[771]),/* "certificateIssuer" */ 2580443, /* "caseIgnoreIA5StringSyntax" */
2492&(nid_objs[89]),/* "certificatePolicies" */ 2581152, /* "certBag" */
2493&(nid_objs[54]),/* "challengePassword" */ 2582677, /* "certicom-arc" */
2494&(nid_objs[407]),/* "characteristic-two-field" */ 2583771, /* "certificateIssuer" */
2495&(nid_objs[395]),/* "clearance" */ 258489, /* "certificatePolicies" */
2496&(nid_objs[130]),/* "clientAuth" */ 2585883, /* "certificateRevocationList" */
2497&(nid_objs[131]),/* "codeSigning" */ 258654, /* "challengePassword" */
2498&(nid_objs[50]),/* "contentType" */ 2587407, /* "characteristic-two-field" */
2499&(nid_objs[53]),/* "countersignature" */ 2588395, /* "clearance" */
2500&(nid_objs[153]),/* "crlBag" */ 2589130, /* "clientAuth" */
2501&(nid_objs[103]),/* "crlDistributionPoints" */ 2590131, /* "codeSigning" */
2502&(nid_objs[88]),/* "crlNumber" */ 259150, /* "contentType" */
2503&(nid_objs[806]),/* "cryptocom" */ 259253, /* "countersignature" */
2504&(nid_objs[805]),/* "cryptopro" */ 2593153, /* "crlBag" */
2505&(nid_objs[500]),/* "dITRedirect" */ 2594103, /* "crlDistributionPoints" */
2506&(nid_objs[451]),/* "dNSDomain" */ 259588, /* "crlNumber" */
2507&(nid_objs[495]),/* "dSAQuality" */ 2596884, /* "crossCertificatePair" */
2508&(nid_objs[434]),/* "data" */ 2597806, /* "cryptocom" */
2509&(nid_objs[390]),/* "dcobject" */ 2598805, /* "cryptopro" */
2510&(nid_objs[140]),/* "deltaCRL" */ 2599500, /* "dITRedirect" */
2511&(nid_objs[107]),/* "description" */ 2600451, /* "dNSDomain" */
2512&(nid_objs[28]),/* "dhKeyAgreement" */ 2601495, /* "dSAQuality" */
2513&(nid_objs[382]),/* "directory" */ 2602434, /* "data" */
2514&(nid_objs[174]),/* "dnQualifier" */ 2603390, /* "dcobject" */
2515&(nid_objs[447]),/* "document" */ 2604140, /* "deltaCRL" */
2516&(nid_objs[471]),/* "documentAuthor" */ 2605891, /* "deltaRevocationList" */
2517&(nid_objs[468]),/* "documentIdentifier" */ 2606107, /* "description" */
2518&(nid_objs[472]),/* "documentLocation" */ 2607871, /* "destinationIndicator" */
2519&(nid_objs[502]),/* "documentPublisher" */ 260828, /* "dhKeyAgreement" */
2520&(nid_objs[449]),/* "documentSeries" */ 2609382, /* "directory" */
2521&(nid_objs[469]),/* "documentTitle" */ 2610887, /* "distinguishedName" */
2522&(nid_objs[470]),/* "documentVersion" */ 2611892, /* "dmdName" */
2523&(nid_objs[392]),/* "domain" */ 2612174, /* "dnQualifier" */
2524&(nid_objs[452]),/* "domainRelatedObject" */ 2613447, /* "document" */
2525&(nid_objs[802]),/* "dsa_with_SHA224" */ 2614471, /* "documentAuthor" */
2526&(nid_objs[803]),/* "dsa_with_SHA256" */ 2615468, /* "documentIdentifier" */
2527&(nid_objs[791]),/* "ecdsa-with-Recommended" */ 2616472, /* "documentLocation" */
2528&(nid_objs[416]),/* "ecdsa-with-SHA1" */ 2617502, /* "documentPublisher" */
2529&(nid_objs[793]),/* "ecdsa-with-SHA224" */ 2618449, /* "documentSeries" */
2530&(nid_objs[794]),/* "ecdsa-with-SHA256" */ 2619469, /* "documentTitle" */
2531&(nid_objs[795]),/* "ecdsa-with-SHA384" */ 2620470, /* "documentVersion" */
2532&(nid_objs[796]),/* "ecdsa-with-SHA512" */ 2621392, /* "domain" */
2533&(nid_objs[792]),/* "ecdsa-with-Specified" */ 2622452, /* "domainRelatedObject" */
2534&(nid_objs[48]),/* "emailAddress" */ 2623802, /* "dsa_with_SHA224" */
2535&(nid_objs[132]),/* "emailProtection" */ 2624803, /* "dsa_with_SHA256" */
2536&(nid_objs[389]),/* "enterprises" */ 2625791, /* "ecdsa-with-Recommended" */
2537&(nid_objs[384]),/* "experimental" */ 2626416, /* "ecdsa-with-SHA1" */
2538&(nid_objs[172]),/* "extReq" */ 2627793, /* "ecdsa-with-SHA224" */
2539&(nid_objs[56]),/* "extendedCertificateAttributes" */ 2628794, /* "ecdsa-with-SHA256" */
2540&(nid_objs[126]),/* "extendedKeyUsage" */ 2629795, /* "ecdsa-with-SHA384" */
2541&(nid_objs[372]),/* "extendedStatus" */ 2630796, /* "ecdsa-with-SHA512" */
2542&(nid_objs[462]),/* "favouriteDrink" */ 2631792, /* "ecdsa-with-Specified" */
2543&(nid_objs[857]),/* "freshestCRL" */ 263248, /* "emailAddress" */
2544&(nid_objs[453]),/* "friendlyCountry" */ 2633132, /* "emailProtection" */
2545&(nid_objs[490]),/* "friendlyCountryName" */ 2634885, /* "enhancedSearchGuide" */
2546&(nid_objs[156]),/* "friendlyName" */ 2635389, /* "enterprises" */
2547&(nid_objs[509]),/* "generationQualifier" */ 2636384, /* "experimental" */
2548&(nid_objs[815]),/* "gost-mac" */ 2637172, /* "extReq" */
2549&(nid_objs[811]),/* "gost2001" */ 263856, /* "extendedCertificateAttributes" */
2550&(nid_objs[851]),/* "gost2001cc" */ 2639126, /* "extendedKeyUsage" */
2551&(nid_objs[813]),/* "gost89" */ 2640372, /* "extendedStatus" */
2552&(nid_objs[814]),/* "gost89-cnt" */ 2641867, /* "facsimileTelephoneNumber" */
2553&(nid_objs[812]),/* "gost94" */ 2642462, /* "favouriteDrink" */
2554&(nid_objs[850]),/* "gost94cc" */ 2643857, /* "freshestCRL" */
2555&(nid_objs[797]),/* "hmacWithMD5" */ 2644453, /* "friendlyCountry" */
2556&(nid_objs[163]),/* "hmacWithSHA1" */ 2645490, /* "friendlyCountryName" */
2557&(nid_objs[798]),/* "hmacWithSHA224" */ 2646156, /* "friendlyName" */
2558&(nid_objs[799]),/* "hmacWithSHA256" */ 2647509, /* "generationQualifier" */
2559&(nid_objs[800]),/* "hmacWithSHA384" */ 2648815, /* "gost-mac" */
2560&(nid_objs[801]),/* "hmacWithSHA512" */ 2649811, /* "gost2001" */
2561&(nid_objs[432]),/* "holdInstructionCallIssuer" */ 2650851, /* "gost2001cc" */
2562&(nid_objs[430]),/* "holdInstructionCode" */ 2651813, /* "gost89" */
2563&(nid_objs[431]),/* "holdInstructionNone" */ 2652814, /* "gost89-cnt" */
2564&(nid_objs[433]),/* "holdInstructionReject" */ 2653812, /* "gost94" */
2565&(nid_objs[486]),/* "homePostalAddress" */ 2654850, /* "gost94cc" */
2566&(nid_objs[473]),/* "homeTelephoneNumber" */ 2655797, /* "hmacWithMD5" */
2567&(nid_objs[466]),/* "host" */ 2656163, /* "hmacWithSHA1" */
2568&(nid_objs[442]),/* "iA5StringSyntax" */ 2657798, /* "hmacWithSHA224" */
2569&(nid_objs[783]),/* "id-DHBasedMac" */ 2658799, /* "hmacWithSHA256" */
2570&(nid_objs[824]),/* "id-Gost28147-89-CryptoPro-A-ParamSet" */ 2659800, /* "hmacWithSHA384" */
2571&(nid_objs[825]),/* "id-Gost28147-89-CryptoPro-B-ParamSet" */ 2660801, /* "hmacWithSHA512" */
2572&(nid_objs[826]),/* "id-Gost28147-89-CryptoPro-C-ParamSet" */ 2661432, /* "holdInstructionCallIssuer" */
2573&(nid_objs[827]),/* "id-Gost28147-89-CryptoPro-D-ParamSet" */ 2662430, /* "holdInstructionCode" */
2574&(nid_objs[819]),/* "id-Gost28147-89-CryptoPro-KeyMeshing" */ 2663431, /* "holdInstructionNone" */
2575&(nid_objs[829]),/* "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" */ 2664433, /* "holdInstructionReject" */
2576&(nid_objs[828]),/* "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" */ 2665486, /* "homePostalAddress" */
2577&(nid_objs[830]),/* "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" */ 2666473, /* "homeTelephoneNumber" */
2578&(nid_objs[820]),/* "id-Gost28147-89-None-KeyMeshing" */ 2667466, /* "host" */
2579&(nid_objs[823]),/* "id-Gost28147-89-TestParamSet" */ 2668889, /* "houseIdentifier" */
2580&(nid_objs[849]),/* "id-Gost28147-89-cc" */ 2669442, /* "iA5StringSyntax" */
2581&(nid_objs[840]),/* "id-GostR3410-2001-CryptoPro-A-ParamSet" */ 2670783, /* "id-DHBasedMac" */
2582&(nid_objs[841]),/* "id-GostR3410-2001-CryptoPro-B-ParamSet" */ 2671824, /* "id-Gost28147-89-CryptoPro-A-ParamSet" */
2583&(nid_objs[842]),/* "id-GostR3410-2001-CryptoPro-C-ParamSet" */ 2672825, /* "id-Gost28147-89-CryptoPro-B-ParamSet" */
2584&(nid_objs[843]),/* "id-GostR3410-2001-CryptoPro-XchA-ParamSet" */ 2673826, /* "id-Gost28147-89-CryptoPro-C-ParamSet" */
2585&(nid_objs[844]),/* "id-GostR3410-2001-CryptoPro-XchB-ParamSet" */ 2674827, /* "id-Gost28147-89-CryptoPro-D-ParamSet" */
2586&(nid_objs[854]),/* "id-GostR3410-2001-ParamSet-cc" */ 2675819, /* "id-Gost28147-89-CryptoPro-KeyMeshing" */
2587&(nid_objs[839]),/* "id-GostR3410-2001-TestParamSet" */ 2676829, /* "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" */
2588&(nid_objs[817]),/* "id-GostR3410-2001DH" */ 2677828, /* "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" */
2589&(nid_objs[832]),/* "id-GostR3410-94-CryptoPro-A-ParamSet" */ 2678830, /* "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" */
2590&(nid_objs[833]),/* "id-GostR3410-94-CryptoPro-B-ParamSet" */ 2679820, /* "id-Gost28147-89-None-KeyMeshing" */
2591&(nid_objs[834]),/* "id-GostR3410-94-CryptoPro-C-ParamSet" */ 2680823, /* "id-Gost28147-89-TestParamSet" */
2592&(nid_objs[835]),/* "id-GostR3410-94-CryptoPro-D-ParamSet" */ 2681849, /* "id-Gost28147-89-cc" */
2593&(nid_objs[836]),/* "id-GostR3410-94-CryptoPro-XchA-ParamSet" */ 2682840, /* "id-GostR3410-2001-CryptoPro-A-ParamSet" */
2594&(nid_objs[837]),/* "id-GostR3410-94-CryptoPro-XchB-ParamSet" */ 2683841, /* "id-GostR3410-2001-CryptoPro-B-ParamSet" */
2595&(nid_objs[838]),/* "id-GostR3410-94-CryptoPro-XchC-ParamSet" */ 2684842, /* "id-GostR3410-2001-CryptoPro-C-ParamSet" */
2596&(nid_objs[831]),/* "id-GostR3410-94-TestParamSet" */ 2685843, /* "id-GostR3410-2001-CryptoPro-XchA-ParamSet" */
2597&(nid_objs[845]),/* "id-GostR3410-94-a" */ 2686844, /* "id-GostR3410-2001-CryptoPro-XchB-ParamSet" */
2598&(nid_objs[846]),/* "id-GostR3410-94-aBis" */ 2687854, /* "id-GostR3410-2001-ParamSet-cc" */
2599&(nid_objs[847]),/* "id-GostR3410-94-b" */ 2688839, /* "id-GostR3410-2001-TestParamSet" */
2600&(nid_objs[848]),/* "id-GostR3410-94-bBis" */ 2689817, /* "id-GostR3410-2001DH" */
2601&(nid_objs[818]),/* "id-GostR3410-94DH" */ 2690832, /* "id-GostR3410-94-CryptoPro-A-ParamSet" */
2602&(nid_objs[822]),/* "id-GostR3411-94-CryptoProParamSet" */ 2691833, /* "id-GostR3410-94-CryptoPro-B-ParamSet" */
2603&(nid_objs[821]),/* "id-GostR3411-94-TestParamSet" */ 2692834, /* "id-GostR3410-94-CryptoPro-C-ParamSet" */
2604&(nid_objs[807]),/* "id-GostR3411-94-with-GostR3410-2001" */ 2693835, /* "id-GostR3410-94-CryptoPro-D-ParamSet" */
2605&(nid_objs[853]),/* "id-GostR3411-94-with-GostR3410-2001-cc" */ 2694836, /* "id-GostR3410-94-CryptoPro-XchA-ParamSet" */
2606&(nid_objs[808]),/* "id-GostR3411-94-with-GostR3410-94" */ 2695837, /* "id-GostR3410-94-CryptoPro-XchB-ParamSet" */
2607&(nid_objs[852]),/* "id-GostR3411-94-with-GostR3410-94-cc" */ 2696838, /* "id-GostR3410-94-CryptoPro-XchC-ParamSet" */
2608&(nid_objs[810]),/* "id-HMACGostR3411-94" */ 2697831, /* "id-GostR3410-94-TestParamSet" */
2609&(nid_objs[782]),/* "id-PasswordBasedMAC" */ 2698845, /* "id-GostR3410-94-a" */
2610&(nid_objs[266]),/* "id-aca" */ 2699846, /* "id-GostR3410-94-aBis" */
2611&(nid_objs[355]),/* "id-aca-accessIdentity" */ 2700847, /* "id-GostR3410-94-b" */
2612&(nid_objs[354]),/* "id-aca-authenticationInfo" */ 2701848, /* "id-GostR3410-94-bBis" */
2613&(nid_objs[356]),/* "id-aca-chargingIdentity" */ 2702818, /* "id-GostR3410-94DH" */
2614&(nid_objs[399]),/* "id-aca-encAttrs" */ 2703822, /* "id-GostR3411-94-CryptoProParamSet" */
2615&(nid_objs[357]),/* "id-aca-group" */ 2704821, /* "id-GostR3411-94-TestParamSet" */
2616&(nid_objs[358]),/* "id-aca-role" */ 2705807, /* "id-GostR3411-94-with-GostR3410-2001" */
2617&(nid_objs[176]),/* "id-ad" */ 2706853, /* "id-GostR3411-94-with-GostR3410-2001-cc" */
2618&(nid_objs[788]),/* "id-aes128-wrap" */ 2707808, /* "id-GostR3411-94-with-GostR3410-94" */
2619&(nid_objs[789]),/* "id-aes192-wrap" */ 2708852, /* "id-GostR3411-94-with-GostR3410-94-cc" */
2620&(nid_objs[790]),/* "id-aes256-wrap" */ 2709810, /* "id-HMACGostR3411-94" */
2621&(nid_objs[262]),/* "id-alg" */ 2710782, /* "id-PasswordBasedMAC" */
2622&(nid_objs[323]),/* "id-alg-des40" */ 2711266, /* "id-aca" */
2623&(nid_objs[326]),/* "id-alg-dh-pop" */ 2712355, /* "id-aca-accessIdentity" */
2624&(nid_objs[325]),/* "id-alg-dh-sig-hmac-sha1" */ 2713354, /* "id-aca-authenticationInfo" */
2625&(nid_objs[324]),/* "id-alg-noSignature" */ 2714356, /* "id-aca-chargingIdentity" */
2626&(nid_objs[268]),/* "id-cct" */ 2715399, /* "id-aca-encAttrs" */
2627&(nid_objs[361]),/* "id-cct-PKIData" */ 2716357, /* "id-aca-group" */
2628&(nid_objs[362]),/* "id-cct-PKIResponse" */ 2717358, /* "id-aca-role" */
2629&(nid_objs[360]),/* "id-cct-crs" */ 2718176, /* "id-ad" */
2630&(nid_objs[81]),/* "id-ce" */ 2719788, /* "id-aes128-wrap" */
2631&(nid_objs[680]),/* "id-characteristic-two-basis" */ 2720789, /* "id-aes192-wrap" */
2632&(nid_objs[263]),/* "id-cmc" */ 2721790, /* "id-aes256-wrap" */
2633&(nid_objs[334]),/* "id-cmc-addExtensions" */ 2722262, /* "id-alg" */
2634&(nid_objs[346]),/* "id-cmc-confirmCertAcceptance" */ 2723323, /* "id-alg-des40" */
2635&(nid_objs[330]),/* "id-cmc-dataReturn" */ 2724326, /* "id-alg-dh-pop" */
2636&(nid_objs[336]),/* "id-cmc-decryptedPOP" */ 2725325, /* "id-alg-dh-sig-hmac-sha1" */
2637&(nid_objs[335]),/* "id-cmc-encryptedPOP" */ 2726324, /* "id-alg-noSignature" */
2638&(nid_objs[339]),/* "id-cmc-getCRL" */ 2727268, /* "id-cct" */
2639&(nid_objs[338]),/* "id-cmc-getCert" */ 2728361, /* "id-cct-PKIData" */
2640&(nid_objs[328]),/* "id-cmc-identification" */ 2729362, /* "id-cct-PKIResponse" */
2641&(nid_objs[329]),/* "id-cmc-identityProof" */ 2730360, /* "id-cct-crs" */
2642&(nid_objs[337]),/* "id-cmc-lraPOPWitness" */ 273181, /* "id-ce" */
2643&(nid_objs[344]),/* "id-cmc-popLinkRandom" */ 2732680, /* "id-characteristic-two-basis" */
2644&(nid_objs[345]),/* "id-cmc-popLinkWitness" */ 2733263, /* "id-cmc" */
2645&(nid_objs[343]),/* "id-cmc-queryPending" */ 2734334, /* "id-cmc-addExtensions" */
2646&(nid_objs[333]),/* "id-cmc-recipientNonce" */ 2735346, /* "id-cmc-confirmCertAcceptance" */
2647&(nid_objs[341]),/* "id-cmc-regInfo" */ 2736330, /* "id-cmc-dataReturn" */
2648&(nid_objs[342]),/* "id-cmc-responseInfo" */ 2737336, /* "id-cmc-decryptedPOP" */
2649&(nid_objs[340]),/* "id-cmc-revokeRequest" */ 2738335, /* "id-cmc-encryptedPOP" */
2650&(nid_objs[332]),/* "id-cmc-senderNonce" */ 2739339, /* "id-cmc-getCRL" */
2651&(nid_objs[327]),/* "id-cmc-statusInfo" */ 2740338, /* "id-cmc-getCert" */
2652&(nid_objs[331]),/* "id-cmc-transactionId" */ 2741328, /* "id-cmc-identification" */
2653&(nid_objs[787]),/* "id-ct-asciiTextWithCRLF" */ 2742329, /* "id-cmc-identityProof" */
2654&(nid_objs[408]),/* "id-ecPublicKey" */ 2743337, /* "id-cmc-lraPOPWitness" */
2655&(nid_objs[508]),/* "id-hex-multipart-message" */ 2744344, /* "id-cmc-popLinkRandom" */
2656&(nid_objs[507]),/* "id-hex-partial-message" */ 2745345, /* "id-cmc-popLinkWitness" */
2657&(nid_objs[260]),/* "id-it" */ 2746343, /* "id-cmc-queryPending" */
2658&(nid_objs[302]),/* "id-it-caKeyUpdateInfo" */ 2747333, /* "id-cmc-recipientNonce" */
2659&(nid_objs[298]),/* "id-it-caProtEncCert" */ 2748341, /* "id-cmc-regInfo" */
2660&(nid_objs[311]),/* "id-it-confirmWaitTime" */ 2749342, /* "id-cmc-responseInfo" */
2661&(nid_objs[303]),/* "id-it-currentCRL" */ 2750340, /* "id-cmc-revokeRequest" */
2662&(nid_objs[300]),/* "id-it-encKeyPairTypes" */ 2751332, /* "id-cmc-senderNonce" */
2663&(nid_objs[310]),/* "id-it-implicitConfirm" */ 2752327, /* "id-cmc-statusInfo" */
2664&(nid_objs[308]),/* "id-it-keyPairParamRep" */ 2753331, /* "id-cmc-transactionId" */
2665&(nid_objs[307]),/* "id-it-keyPairParamReq" */ 2754787, /* "id-ct-asciiTextWithCRLF" */
2666&(nid_objs[312]),/* "id-it-origPKIMessage" */ 2755408, /* "id-ecPublicKey" */
2667&(nid_objs[301]),/* "id-it-preferredSymmAlg" */ 2756508, /* "id-hex-multipart-message" */
2668&(nid_objs[309]),/* "id-it-revPassphrase" */ 2757507, /* "id-hex-partial-message" */
2669&(nid_objs[299]),/* "id-it-signKeyPairTypes" */ 2758260, /* "id-it" */
2670&(nid_objs[305]),/* "id-it-subscriptionRequest" */ 2759302, /* "id-it-caKeyUpdateInfo" */
2671&(nid_objs[306]),/* "id-it-subscriptionResponse" */ 2760298, /* "id-it-caProtEncCert" */
2672&(nid_objs[784]),/* "id-it-suppLangTags" */ 2761311, /* "id-it-confirmWaitTime" */
2673&(nid_objs[304]),/* "id-it-unsupportedOIDs" */ 2762303, /* "id-it-currentCRL" */
2674&(nid_objs[128]),/* "id-kp" */ 2763300, /* "id-it-encKeyPairTypes" */
2675&(nid_objs[280]),/* "id-mod-attribute-cert" */ 2764310, /* "id-it-implicitConfirm" */
2676&(nid_objs[274]),/* "id-mod-cmc" */ 2765308, /* "id-it-keyPairParamRep" */
2677&(nid_objs[277]),/* "id-mod-cmp" */ 2766307, /* "id-it-keyPairParamReq" */
2678&(nid_objs[284]),/* "id-mod-cmp2000" */ 2767312, /* "id-it-origPKIMessage" */
2679&(nid_objs[273]),/* "id-mod-crmf" */ 2768301, /* "id-it-preferredSymmAlg" */
2680&(nid_objs[283]),/* "id-mod-dvcs" */ 2769309, /* "id-it-revPassphrase" */
2681&(nid_objs[275]),/* "id-mod-kea-profile-88" */ 2770299, /* "id-it-signKeyPairTypes" */
2682&(nid_objs[276]),/* "id-mod-kea-profile-93" */ 2771305, /* "id-it-subscriptionRequest" */
2683&(nid_objs[282]),/* "id-mod-ocsp" */ 2772306, /* "id-it-subscriptionResponse" */
2684&(nid_objs[278]),/* "id-mod-qualified-cert-88" */ 2773784, /* "id-it-suppLangTags" */
2685&(nid_objs[279]),/* "id-mod-qualified-cert-93" */ 2774304, /* "id-it-unsupportedOIDs" */
2686&(nid_objs[281]),/* "id-mod-timestamp-protocol" */ 2775128, /* "id-kp" */
2687&(nid_objs[264]),/* "id-on" */ 2776280, /* "id-mod-attribute-cert" */
2688&(nid_objs[858]),/* "id-on-permanentIdentifier" */ 2777274, /* "id-mod-cmc" */
2689&(nid_objs[347]),/* "id-on-personalData" */ 2778277, /* "id-mod-cmp" */
2690&(nid_objs[265]),/* "id-pda" */ 2779284, /* "id-mod-cmp2000" */
2691&(nid_objs[352]),/* "id-pda-countryOfCitizenship" */ 2780273, /* "id-mod-crmf" */
2692&(nid_objs[353]),/* "id-pda-countryOfResidence" */ 2781283, /* "id-mod-dvcs" */
2693&(nid_objs[348]),/* "id-pda-dateOfBirth" */ 2782275, /* "id-mod-kea-profile-88" */
2694&(nid_objs[351]),/* "id-pda-gender" */ 2783276, /* "id-mod-kea-profile-93" */
2695&(nid_objs[349]),/* "id-pda-placeOfBirth" */ 2784282, /* "id-mod-ocsp" */
2696&(nid_objs[175]),/* "id-pe" */ 2785278, /* "id-mod-qualified-cert-88" */
2697&(nid_objs[261]),/* "id-pkip" */ 2786279, /* "id-mod-qualified-cert-93" */
2698&(nid_objs[258]),/* "id-pkix-mod" */ 2787281, /* "id-mod-timestamp-protocol" */
2699&(nid_objs[269]),/* "id-pkix1-explicit-88" */ 2788264, /* "id-on" */
2700&(nid_objs[271]),/* "id-pkix1-explicit-93" */ 2789858, /* "id-on-permanentIdentifier" */
2701&(nid_objs[270]),/* "id-pkix1-implicit-88" */ 2790347, /* "id-on-personalData" */
2702&(nid_objs[272]),/* "id-pkix1-implicit-93" */ 2791265, /* "id-pda" */
2703&(nid_objs[662]),/* "id-ppl" */ 2792352, /* "id-pda-countryOfCitizenship" */
2704&(nid_objs[664]),/* "id-ppl-anyLanguage" */ 2793353, /* "id-pda-countryOfResidence" */
2705&(nid_objs[667]),/* "id-ppl-independent" */ 2794348, /* "id-pda-dateOfBirth" */
2706&(nid_objs[665]),/* "id-ppl-inheritAll" */ 2795351, /* "id-pda-gender" */
2707&(nid_objs[267]),/* "id-qcs" */ 2796349, /* "id-pda-placeOfBirth" */
2708&(nid_objs[359]),/* "id-qcs-pkixQCSyntax-v1" */ 2797175, /* "id-pe" */
2709&(nid_objs[259]),/* "id-qt" */ 2798261, /* "id-pkip" */
2710&(nid_objs[164]),/* "id-qt-cps" */ 2799258, /* "id-pkix-mod" */
2711&(nid_objs[165]),/* "id-qt-unotice" */ 2800269, /* "id-pkix1-explicit-88" */
2712&(nid_objs[313]),/* "id-regCtrl" */ 2801271, /* "id-pkix1-explicit-93" */
2713&(nid_objs[316]),/* "id-regCtrl-authenticator" */ 2802270, /* "id-pkix1-implicit-88" */
2714&(nid_objs[319]),/* "id-regCtrl-oldCertID" */ 2803272, /* "id-pkix1-implicit-93" */
2715&(nid_objs[318]),/* "id-regCtrl-pkiArchiveOptions" */ 2804662, /* "id-ppl" */
2716&(nid_objs[317]),/* "id-regCtrl-pkiPublicationInfo" */ 2805664, /* "id-ppl-anyLanguage" */
2717&(nid_objs[320]),/* "id-regCtrl-protocolEncrKey" */ 2806667, /* "id-ppl-independent" */
2718&(nid_objs[315]),/* "id-regCtrl-regToken" */ 2807665, /* "id-ppl-inheritAll" */
2719&(nid_objs[314]),/* "id-regInfo" */ 2808267, /* "id-qcs" */
2720&(nid_objs[322]),/* "id-regInfo-certReq" */ 2809359, /* "id-qcs-pkixQCSyntax-v1" */
2721&(nid_objs[321]),/* "id-regInfo-utf8Pairs" */ 2810259, /* "id-qt" */
2722&(nid_objs[512]),/* "id-set" */ 2811164, /* "id-qt-cps" */
2723&(nid_objs[191]),/* "id-smime-aa" */ 2812165, /* "id-qt-unotice" */
2724&(nid_objs[215]),/* "id-smime-aa-contentHint" */ 2813313, /* "id-regCtrl" */
2725&(nid_objs[218]),/* "id-smime-aa-contentIdentifier" */ 2814316, /* "id-regCtrl-authenticator" */
2726&(nid_objs[221]),/* "id-smime-aa-contentReference" */ 2815319, /* "id-regCtrl-oldCertID" */
2727&(nid_objs[240]),/* "id-smime-aa-dvcs-dvc" */ 2816318, /* "id-regCtrl-pkiArchiveOptions" */
2728&(nid_objs[217]),/* "id-smime-aa-encapContentType" */ 2817317, /* "id-regCtrl-pkiPublicationInfo" */
2729&(nid_objs[222]),/* "id-smime-aa-encrypKeyPref" */ 2818320, /* "id-regCtrl-protocolEncrKey" */
2730&(nid_objs[220]),/* "id-smime-aa-equivalentLabels" */ 2819315, /* "id-regCtrl-regToken" */
2731&(nid_objs[232]),/* "id-smime-aa-ets-CertificateRefs" */ 2820314, /* "id-regInfo" */
2732&(nid_objs[233]),/* "id-smime-aa-ets-RevocationRefs" */ 2821322, /* "id-regInfo-certReq" */
2733&(nid_objs[238]),/* "id-smime-aa-ets-archiveTimeStamp" */ 2822321, /* "id-regInfo-utf8Pairs" */
2734&(nid_objs[237]),/* "id-smime-aa-ets-certCRLTimestamp" */ 2823512, /* "id-set" */
2735&(nid_objs[234]),/* "id-smime-aa-ets-certValues" */ 2824191, /* "id-smime-aa" */
2736&(nid_objs[227]),/* "id-smime-aa-ets-commitmentType" */ 2825215, /* "id-smime-aa-contentHint" */
2737&(nid_objs[231]),/* "id-smime-aa-ets-contentTimestamp" */ 2826218, /* "id-smime-aa-contentIdentifier" */
2738&(nid_objs[236]),/* "id-smime-aa-ets-escTimeStamp" */ 2827221, /* "id-smime-aa-contentReference" */
2739&(nid_objs[230]),/* "id-smime-aa-ets-otherSigCert" */ 2828240, /* "id-smime-aa-dvcs-dvc" */
2740&(nid_objs[235]),/* "id-smime-aa-ets-revocationValues" */ 2829217, /* "id-smime-aa-encapContentType" */
2741&(nid_objs[226]),/* "id-smime-aa-ets-sigPolicyId" */ 2830222, /* "id-smime-aa-encrypKeyPref" */
2742&(nid_objs[229]),/* "id-smime-aa-ets-signerAttr" */ 2831220, /* "id-smime-aa-equivalentLabels" */
2743&(nid_objs[228]),/* "id-smime-aa-ets-signerLocation" */ 2832232, /* "id-smime-aa-ets-CertificateRefs" */
2744&(nid_objs[219]),/* "id-smime-aa-macValue" */ 2833233, /* "id-smime-aa-ets-RevocationRefs" */
2745&(nid_objs[214]),/* "id-smime-aa-mlExpandHistory" */ 2834238, /* "id-smime-aa-ets-archiveTimeStamp" */
2746&(nid_objs[216]),/* "id-smime-aa-msgSigDigest" */ 2835237, /* "id-smime-aa-ets-certCRLTimestamp" */
2747&(nid_objs[212]),/* "id-smime-aa-receiptRequest" */ 2836234, /* "id-smime-aa-ets-certValues" */
2748&(nid_objs[213]),/* "id-smime-aa-securityLabel" */ 2837227, /* "id-smime-aa-ets-commitmentType" */
2749&(nid_objs[239]),/* "id-smime-aa-signatureType" */ 2838231, /* "id-smime-aa-ets-contentTimestamp" */
2750&(nid_objs[223]),/* "id-smime-aa-signingCertificate" */ 2839236, /* "id-smime-aa-ets-escTimeStamp" */
2751&(nid_objs[224]),/* "id-smime-aa-smimeEncryptCerts" */ 2840230, /* "id-smime-aa-ets-otherSigCert" */
2752&(nid_objs[225]),/* "id-smime-aa-timeStampToken" */ 2841235, /* "id-smime-aa-ets-revocationValues" */
2753&(nid_objs[192]),/* "id-smime-alg" */ 2842226, /* "id-smime-aa-ets-sigPolicyId" */
2754&(nid_objs[243]),/* "id-smime-alg-3DESwrap" */ 2843229, /* "id-smime-aa-ets-signerAttr" */
2755&(nid_objs[246]),/* "id-smime-alg-CMS3DESwrap" */ 2844228, /* "id-smime-aa-ets-signerLocation" */
2756&(nid_objs[247]),/* "id-smime-alg-CMSRC2wrap" */ 2845219, /* "id-smime-aa-macValue" */
2757&(nid_objs[245]),/* "id-smime-alg-ESDH" */ 2846214, /* "id-smime-aa-mlExpandHistory" */
2758&(nid_objs[241]),/* "id-smime-alg-ESDHwith3DES" */ 2847216, /* "id-smime-aa-msgSigDigest" */
2759&(nid_objs[242]),/* "id-smime-alg-ESDHwithRC2" */ 2848212, /* "id-smime-aa-receiptRequest" */
2760&(nid_objs[244]),/* "id-smime-alg-RC2wrap" */ 2849213, /* "id-smime-aa-securityLabel" */
2761&(nid_objs[193]),/* "id-smime-cd" */ 2850239, /* "id-smime-aa-signatureType" */
2762&(nid_objs[248]),/* "id-smime-cd-ldap" */ 2851223, /* "id-smime-aa-signingCertificate" */
2763&(nid_objs[190]),/* "id-smime-ct" */ 2852224, /* "id-smime-aa-smimeEncryptCerts" */
2764&(nid_objs[210]),/* "id-smime-ct-DVCSRequestData" */ 2853225, /* "id-smime-aa-timeStampToken" */
2765&(nid_objs[211]),/* "id-smime-ct-DVCSResponseData" */ 2854192, /* "id-smime-alg" */
2766&(nid_objs[208]),/* "id-smime-ct-TDTInfo" */ 2855243, /* "id-smime-alg-3DESwrap" */
2767&(nid_objs[207]),/* "id-smime-ct-TSTInfo" */ 2856246, /* "id-smime-alg-CMS3DESwrap" */
2768&(nid_objs[205]),/* "id-smime-ct-authData" */ 2857247, /* "id-smime-alg-CMSRC2wrap" */
2769&(nid_objs[786]),/* "id-smime-ct-compressedData" */ 2858245, /* "id-smime-alg-ESDH" */
2770&(nid_objs[209]),/* "id-smime-ct-contentInfo" */ 2859241, /* "id-smime-alg-ESDHwith3DES" */
2771&(nid_objs[206]),/* "id-smime-ct-publishCert" */ 2860242, /* "id-smime-alg-ESDHwithRC2" */
2772&(nid_objs[204]),/* "id-smime-ct-receipt" */ 2861244, /* "id-smime-alg-RC2wrap" */
2773&(nid_objs[195]),/* "id-smime-cti" */ 2862193, /* "id-smime-cd" */
2774&(nid_objs[255]),/* "id-smime-cti-ets-proofOfApproval" */ 2863248, /* "id-smime-cd-ldap" */
2775&(nid_objs[256]),/* "id-smime-cti-ets-proofOfCreation" */ 2864190, /* "id-smime-ct" */
2776&(nid_objs[253]),/* "id-smime-cti-ets-proofOfDelivery" */ 2865210, /* "id-smime-ct-DVCSRequestData" */
2777&(nid_objs[251]),/* "id-smime-cti-ets-proofOfOrigin" */ 2866211, /* "id-smime-ct-DVCSResponseData" */
2778&(nid_objs[252]),/* "id-smime-cti-ets-proofOfReceipt" */ 2867208, /* "id-smime-ct-TDTInfo" */
2779&(nid_objs[254]),/* "id-smime-cti-ets-proofOfSender" */ 2868207, /* "id-smime-ct-TSTInfo" */
2780&(nid_objs[189]),/* "id-smime-mod" */ 2869205, /* "id-smime-ct-authData" */
2781&(nid_objs[196]),/* "id-smime-mod-cms" */ 2870786, /* "id-smime-ct-compressedData" */
2782&(nid_objs[197]),/* "id-smime-mod-ess" */ 2871209, /* "id-smime-ct-contentInfo" */
2783&(nid_objs[202]),/* "id-smime-mod-ets-eSigPolicy-88" */ 2872206, /* "id-smime-ct-publishCert" */
2784&(nid_objs[203]),/* "id-smime-mod-ets-eSigPolicy-97" */ 2873204, /* "id-smime-ct-receipt" */
2785&(nid_objs[200]),/* "id-smime-mod-ets-eSignature-88" */ 2874195, /* "id-smime-cti" */
2786&(nid_objs[201]),/* "id-smime-mod-ets-eSignature-97" */ 2875255, /* "id-smime-cti-ets-proofOfApproval" */
2787&(nid_objs[199]),/* "id-smime-mod-msg-v3" */ 2876256, /* "id-smime-cti-ets-proofOfCreation" */
2788&(nid_objs[198]),/* "id-smime-mod-oid" */ 2877253, /* "id-smime-cti-ets-proofOfDelivery" */
2789&(nid_objs[194]),/* "id-smime-spq" */ 2878251, /* "id-smime-cti-ets-proofOfOrigin" */
2790&(nid_objs[250]),/* "id-smime-spq-ets-sqt-unotice" */ 2879252, /* "id-smime-cti-ets-proofOfReceipt" */
2791&(nid_objs[249]),/* "id-smime-spq-ets-sqt-uri" */ 2880254, /* "id-smime-cti-ets-proofOfSender" */
2792&(nid_objs[676]),/* "identified-organization" */ 2881189, /* "id-smime-mod" */
2793&(nid_objs[461]),/* "info" */ 2882196, /* "id-smime-mod-cms" */
2794&(nid_objs[748]),/* "inhibitAnyPolicy" */ 2883197, /* "id-smime-mod-ess" */
2795&(nid_objs[101]),/* "initials" */ 2884202, /* "id-smime-mod-ets-eSigPolicy-88" */
2796&(nid_objs[647]),/* "international-organizations" */ 2885203, /* "id-smime-mod-ets-eSigPolicy-97" */
2797&(nid_objs[142]),/* "invalidityDate" */ 2886200, /* "id-smime-mod-ets-eSignature-88" */
2798&(nid_objs[294]),/* "ipsecEndSystem" */ 2887201, /* "id-smime-mod-ets-eSignature-97" */
2799&(nid_objs[295]),/* "ipsecTunnel" */ 2888199, /* "id-smime-mod-msg-v3" */
2800&(nid_objs[296]),/* "ipsecUser" */ 2889198, /* "id-smime-mod-oid" */
2801&(nid_objs[86]),/* "issuerAltName" */ 2890194, /* "id-smime-spq" */
2802&(nid_objs[770]),/* "issuingDistributionPoint" */ 2891250, /* "id-smime-spq-ets-sqt-unotice" */
2803&(nid_objs[492]),/* "janetMailbox" */ 2892249, /* "id-smime-spq-ets-sqt-uri" */
2804&(nid_objs[150]),/* "keyBag" */ 2893676, /* "identified-organization" */
2805&(nid_objs[83]),/* "keyUsage" */ 2894461, /* "info" */
2806&(nid_objs[477]),/* "lastModifiedBy" */ 2895748, /* "inhibitAnyPolicy" */
2807&(nid_objs[476]),/* "lastModifiedTime" */ 2896101, /* "initials" */
2808&(nid_objs[157]),/* "localKeyID" */ 2897647, /* "international-organizations" */
2809&(nid_objs[480]),/* "mXRecord" */ 2898869, /* "internationaliSDNNumber" */
2810&(nid_objs[460]),/* "mail" */ 2899142, /* "invalidityDate" */
2811&(nid_objs[493]),/* "mailPreferenceOption" */ 2900294, /* "ipsecEndSystem" */
2812&(nid_objs[467]),/* "manager" */ 2901295, /* "ipsecTunnel" */
2813&(nid_objs[809]),/* "md_gost94" */ 2902296, /* "ipsecUser" */
2814&(nid_objs[182]),/* "member-body" */ 290386, /* "issuerAltName" */
2815&(nid_objs[51]),/* "messageDigest" */ 2904770, /* "issuingDistributionPoint" */
2816&(nid_objs[383]),/* "mgmt" */ 2905492, /* "janetMailbox" */
2817&(nid_objs[504]),/* "mime-mhs" */ 2906150, /* "keyBag" */
2818&(nid_objs[506]),/* "mime-mhs-bodies" */ 290783, /* "keyUsage" */
2819&(nid_objs[505]),/* "mime-mhs-headings" */ 2908477, /* "lastModifiedBy" */
2820&(nid_objs[488]),/* "mobileTelephoneNumber" */ 2909476, /* "lastModifiedTime" */
2821&(nid_objs[136]),/* "msCTLSign" */ 2910157, /* "localKeyID" */
2822&(nid_objs[135]),/* "msCodeCom" */ 2911480, /* "mXRecord" */
2823&(nid_objs[134]),/* "msCodeInd" */ 2912460, /* "mail" */
2824&(nid_objs[138]),/* "msEFS" */ 2913493, /* "mailPreferenceOption" */
2825&(nid_objs[171]),/* "msExtReq" */ 2914467, /* "manager" */
2826&(nid_objs[137]),/* "msSGC" */ 2915809, /* "md_gost94" */
2827&(nid_objs[648]),/* "msSmartcardLogin" */ 2916875, /* "member" */
2828&(nid_objs[649]),/* "msUPN" */ 2917182, /* "member-body" */
2829&(nid_objs[481]),/* "nSRecord" */ 291851, /* "messageDigest" */
2830&(nid_objs[173]),/* "name" */ 2919383, /* "mgmt" */
2831&(nid_objs[666]),/* "nameConstraints" */ 2920504, /* "mime-mhs" */
2832&(nid_objs[369]),/* "noCheck" */ 2921506, /* "mime-mhs-bodies" */
2833&(nid_objs[403]),/* "noRevAvail" */ 2922505, /* "mime-mhs-headings" */
2834&(nid_objs[72]),/* "nsBaseUrl" */ 2923488, /* "mobileTelephoneNumber" */
2835&(nid_objs[76]),/* "nsCaPolicyUrl" */ 2924136, /* "msCTLSign" */
2836&(nid_objs[74]),/* "nsCaRevocationUrl" */ 2925135, /* "msCodeCom" */
2837&(nid_objs[58]),/* "nsCertExt" */ 2926134, /* "msCodeInd" */
2838&(nid_objs[79]),/* "nsCertSequence" */ 2927138, /* "msEFS" */
2839&(nid_objs[71]),/* "nsCertType" */ 2928171, /* "msExtReq" */
2840&(nid_objs[78]),/* "nsComment" */ 2929137, /* "msSGC" */
2841&(nid_objs[59]),/* "nsDataType" */ 2930648, /* "msSmartcardLogin" */
2842&(nid_objs[75]),/* "nsRenewalUrl" */ 2931649, /* "msUPN" */
2843&(nid_objs[73]),/* "nsRevocationUrl" */ 2932481, /* "nSRecord" */
2844&(nid_objs[139]),/* "nsSGC" */ 2933173, /* "name" */
2845&(nid_objs[77]),/* "nsSslServerName" */ 2934666, /* "nameConstraints" */
2846&(nid_objs[681]),/* "onBasis" */ 2935369, /* "noCheck" */
2847&(nid_objs[491]),/* "organizationalStatus" */ 2936403, /* "noRevAvail" */
2848&(nid_objs[475]),/* "otherMailbox" */ 293772, /* "nsBaseUrl" */
2849&(nid_objs[489]),/* "pagerTelephoneNumber" */ 293876, /* "nsCaPolicyUrl" */
2850&(nid_objs[374]),/* "path" */ 293974, /* "nsCaRevocationUrl" */
2851&(nid_objs[112]),/* "pbeWithMD5AndCast5CBC" */ 294058, /* "nsCertExt" */
2852&(nid_objs[499]),/* "personalSignature" */ 294179, /* "nsCertSequence" */
2853&(nid_objs[487]),/* "personalTitle" */ 294271, /* "nsCertType" */
2854&(nid_objs[464]),/* "photo" */ 294378, /* "nsComment" */
2855&(nid_objs[437]),/* "pilot" */ 294459, /* "nsDataType" */
2856&(nid_objs[439]),/* "pilotAttributeSyntax" */ 294575, /* "nsRenewalUrl" */
2857&(nid_objs[438]),/* "pilotAttributeType" */ 294673, /* "nsRevocationUrl" */
2858&(nid_objs[479]),/* "pilotAttributeType27" */ 2947139, /* "nsSGC" */
2859&(nid_objs[456]),/* "pilotDSA" */ 294877, /* "nsSslServerName" */
2860&(nid_objs[441]),/* "pilotGroups" */ 2949681, /* "onBasis" */
2861&(nid_objs[444]),/* "pilotObject" */ 2950491, /* "organizationalStatus" */
2862&(nid_objs[440]),/* "pilotObjectClass" */ 2951475, /* "otherMailbox" */
2863&(nid_objs[455]),/* "pilotOrganization" */ 2952876, /* "owner" */
2864&(nid_objs[445]),/* "pilotPerson" */ 2953489, /* "pagerTelephoneNumber" */
2865&(nid_objs[ 2]),/* "pkcs" */ 2954374, /* "path" */
2866&(nid_objs[186]),/* "pkcs1" */ 2955112, /* "pbeWithMD5AndCast5CBC" */
2867&(nid_objs[27]),/* "pkcs3" */ 2956499, /* "personalSignature" */
2868&(nid_objs[187]),/* "pkcs5" */ 2957487, /* "personalTitle" */
2869&(nid_objs[20]),/* "pkcs7" */ 2958464, /* "photo" */
2870&(nid_objs[21]),/* "pkcs7-data" */ 2959863, /* "physicalDeliveryOfficeName" */
2871&(nid_objs[25]),/* "pkcs7-digestData" */ 2960437, /* "pilot" */
2872&(nid_objs[26]),/* "pkcs7-encryptedData" */ 2961439, /* "pilotAttributeSyntax" */
2873&(nid_objs[23]),/* "pkcs7-envelopedData" */ 2962438, /* "pilotAttributeType" */
2874&(nid_objs[24]),/* "pkcs7-signedAndEnvelopedData" */ 2963479, /* "pilotAttributeType27" */
2875&(nid_objs[22]),/* "pkcs7-signedData" */ 2964456, /* "pilotDSA" */
2876&(nid_objs[151]),/* "pkcs8ShroudedKeyBag" */ 2965441, /* "pilotGroups" */
2877&(nid_objs[47]),/* "pkcs9" */ 2966444, /* "pilotObject" */
2878&(nid_objs[401]),/* "policyConstraints" */ 2967440, /* "pilotObjectClass" */
2879&(nid_objs[747]),/* "policyMappings" */ 2968455, /* "pilotOrganization" */
2880&(nid_objs[661]),/* "postalCode" */ 2969445, /* "pilotPerson" */
2881&(nid_objs[683]),/* "ppBasis" */ 2970 2, /* "pkcs" */
2882&(nid_objs[816]),/* "prf-gostr3411-94" */ 2971186, /* "pkcs1" */
2883&(nid_objs[406]),/* "prime-field" */ 297227, /* "pkcs3" */
2884&(nid_objs[409]),/* "prime192v1" */ 2973187, /* "pkcs5" */
2885&(nid_objs[410]),/* "prime192v2" */ 297420, /* "pkcs7" */
2886&(nid_objs[411]),/* "prime192v3" */ 297521, /* "pkcs7-data" */
2887&(nid_objs[412]),/* "prime239v1" */ 297625, /* "pkcs7-digestData" */
2888&(nid_objs[413]),/* "prime239v2" */ 297726, /* "pkcs7-encryptedData" */
2889&(nid_objs[414]),/* "prime239v3" */ 297823, /* "pkcs7-envelopedData" */
2890&(nid_objs[415]),/* "prime256v1" */ 297924, /* "pkcs7-signedAndEnvelopedData" */
2891&(nid_objs[385]),/* "private" */ 298022, /* "pkcs7-signedData" */
2892&(nid_objs[84]),/* "privateKeyUsagePeriod" */ 2981151, /* "pkcs8ShroudedKeyBag" */
2893&(nid_objs[663]),/* "proxyCertInfo" */ 298247, /* "pkcs9" */
2894&(nid_objs[510]),/* "pseudonym" */ 2983401, /* "policyConstraints" */
2895&(nid_objs[435]),/* "pss" */ 2984747, /* "policyMappings" */
2896&(nid_objs[286]),/* "qcStatements" */ 2985862, /* "postOfficeBox" */
2897&(nid_objs[457]),/* "qualityLabelledData" */ 2986861, /* "postalAddress" */
2898&(nid_objs[450]),/* "rFC822localPart" */ 2987661, /* "postalCode" */
2899&(nid_objs[400]),/* "role" */ 2988683, /* "ppBasis" */
2900&(nid_objs[448]),/* "room" */ 2989872, /* "preferredDeliveryMethod" */
2901&(nid_objs[463]),/* "roomNumber" */ 2990873, /* "presentationAddress" */
2902&(nid_objs[ 6]),/* "rsaEncryption" */ 2991816, /* "prf-gostr3411-94" */
2903&(nid_objs[644]),/* "rsaOAEPEncryptionSET" */ 2992406, /* "prime-field" */
2904&(nid_objs[377]),/* "rsaSignature" */ 2993409, /* "prime192v1" */
2905&(nid_objs[ 1]),/* "rsadsi" */ 2994410, /* "prime192v2" */
2906&(nid_objs[482]),/* "sOARecord" */ 2995411, /* "prime192v3" */
2907&(nid_objs[155]),/* "safeContentsBag" */ 2996412, /* "prime239v1" */
2908&(nid_objs[291]),/* "sbgp-autonomousSysNum" */ 2997413, /* "prime239v2" */
2909&(nid_objs[290]),/* "sbgp-ipAddrBlock" */ 2998414, /* "prime239v3" */
2910&(nid_objs[292]),/* "sbgp-routerIdentifier" */ 2999415, /* "prime256v1" */
2911&(nid_objs[159]),/* "sdsiCertificate" */ 3000385, /* "private" */
2912&(nid_objs[704]),/* "secp112r1" */ 300184, /* "privateKeyUsagePeriod" */
2913&(nid_objs[705]),/* "secp112r2" */ 3002886, /* "protocolInformation" */
2914&(nid_objs[706]),/* "secp128r1" */ 3003663, /* "proxyCertInfo" */
2915&(nid_objs[707]),/* "secp128r2" */ 3004510, /* "pseudonym" */
2916&(nid_objs[708]),/* "secp160k1" */ 3005435, /* "pss" */
2917&(nid_objs[709]),/* "secp160r1" */ 3006286, /* "qcStatements" */
2918&(nid_objs[710]),/* "secp160r2" */ 3007457, /* "qualityLabelledData" */
2919&(nid_objs[711]),/* "secp192k1" */ 3008450, /* "rFC822localPart" */
2920&(nid_objs[712]),/* "secp224k1" */ 3009870, /* "registeredAddress" */
2921&(nid_objs[713]),/* "secp224r1" */ 3010400, /* "role" */
2922&(nid_objs[714]),/* "secp256k1" */ 3011877, /* "roleOccupant" */
2923&(nid_objs[715]),/* "secp384r1" */ 3012448, /* "room" */
2924&(nid_objs[716]),/* "secp521r1" */ 3013463, /* "roomNumber" */
2925&(nid_objs[154]),/* "secretBag" */ 3014 6, /* "rsaEncryption" */
2926&(nid_objs[474]),/* "secretary" */ 3015644, /* "rsaOAEPEncryptionSET" */
2927&(nid_objs[717]),/* "sect113r1" */ 3016377, /* "rsaSignature" */
2928&(nid_objs[718]),/* "sect113r2" */ 3017 1, /* "rsadsi" */
2929&(nid_objs[719]),/* "sect131r1" */ 3018482, /* "sOARecord" */
2930&(nid_objs[720]),/* "sect131r2" */ 3019155, /* "safeContentsBag" */
2931&(nid_objs[721]),/* "sect163k1" */ 3020291, /* "sbgp-autonomousSysNum" */
2932&(nid_objs[722]),/* "sect163r1" */ 3021290, /* "sbgp-ipAddrBlock" */
2933&(nid_objs[723]),/* "sect163r2" */ 3022292, /* "sbgp-routerIdentifier" */
2934&(nid_objs[724]),/* "sect193r1" */ 3023159, /* "sdsiCertificate" */
2935&(nid_objs[725]),/* "sect193r2" */ 3024859, /* "searchGuide" */
2936&(nid_objs[726]),/* "sect233k1" */ 3025704, /* "secp112r1" */
2937&(nid_objs[727]),/* "sect233r1" */ 3026705, /* "secp112r2" */
2938&(nid_objs[728]),/* "sect239k1" */ 3027706, /* "secp128r1" */
2939&(nid_objs[729]),/* "sect283k1" */ 3028707, /* "secp128r2" */
2940&(nid_objs[730]),/* "sect283r1" */ 3029708, /* "secp160k1" */
2941&(nid_objs[731]),/* "sect409k1" */ 3030709, /* "secp160r1" */
2942&(nid_objs[732]),/* "sect409r1" */ 3031710, /* "secp160r2" */
2943&(nid_objs[733]),/* "sect571k1" */ 3032711, /* "secp192k1" */
2944&(nid_objs[734]),/* "sect571r1" */ 3033712, /* "secp224k1" */
2945&(nid_objs[386]),/* "security" */ 3034713, /* "secp224r1" */
2946&(nid_objs[394]),/* "selected-attribute-types" */ 3035714, /* "secp256k1" */
2947&(nid_objs[105]),/* "serialNumber" */ 3036715, /* "secp384r1" */
2948&(nid_objs[129]),/* "serverAuth" */ 3037716, /* "secp521r1" */
2949&(nid_objs[371]),/* "serviceLocator" */ 3038154, /* "secretBag" */
2950&(nid_objs[625]),/* "set-addPolicy" */ 3039474, /* "secretary" */
2951&(nid_objs[515]),/* "set-attr" */ 3040717, /* "sect113r1" */
2952&(nid_objs[518]),/* "set-brand" */ 3041718, /* "sect113r2" */
2953&(nid_objs[638]),/* "set-brand-AmericanExpress" */ 3042719, /* "sect131r1" */
2954&(nid_objs[637]),/* "set-brand-Diners" */ 3043720, /* "sect131r2" */
2955&(nid_objs[636]),/* "set-brand-IATA-ATA" */ 3044721, /* "sect163k1" */
2956&(nid_objs[639]),/* "set-brand-JCB" */ 3045722, /* "sect163r1" */
2957&(nid_objs[641]),/* "set-brand-MasterCard" */ 3046723, /* "sect163r2" */
2958&(nid_objs[642]),/* "set-brand-Novus" */ 3047724, /* "sect193r1" */
2959&(nid_objs[640]),/* "set-brand-Visa" */ 3048725, /* "sect193r2" */
2960&(nid_objs[517]),/* "set-certExt" */ 3049726, /* "sect233k1" */
2961&(nid_objs[513]),/* "set-ctype" */ 3050727, /* "sect233r1" */
2962&(nid_objs[514]),/* "set-msgExt" */ 3051728, /* "sect239k1" */
2963&(nid_objs[516]),/* "set-policy" */ 3052729, /* "sect283k1" */
2964&(nid_objs[607]),/* "set-policy-root" */ 3053730, /* "sect283r1" */
2965&(nid_objs[624]),/* "set-rootKeyThumb" */ 3054731, /* "sect409k1" */
2966&(nid_objs[620]),/* "setAttr-Cert" */ 3055732, /* "sect409r1" */
2967&(nid_objs[631]),/* "setAttr-GenCryptgrm" */ 3056733, /* "sect571k1" */
2968&(nid_objs[623]),/* "setAttr-IssCap" */ 3057734, /* "sect571r1" */
2969&(nid_objs[628]),/* "setAttr-IssCap-CVM" */ 3058386, /* "security" */
2970&(nid_objs[630]),/* "setAttr-IssCap-Sig" */ 3059878, /* "seeAlso" */
2971&(nid_objs[629]),/* "setAttr-IssCap-T2" */ 3060394, /* "selected-attribute-types" */
2972&(nid_objs[621]),/* "setAttr-PGWYcap" */ 3061105, /* "serialNumber" */
2973&(nid_objs[635]),/* "setAttr-SecDevSig" */ 3062129, /* "serverAuth" */
2974&(nid_objs[632]),/* "setAttr-T2Enc" */ 3063371, /* "serviceLocator" */
2975&(nid_objs[633]),/* "setAttr-T2cleartxt" */ 3064625, /* "set-addPolicy" */
2976&(nid_objs[634]),/* "setAttr-TokICCsig" */ 3065515, /* "set-attr" */
2977&(nid_objs[627]),/* "setAttr-Token-B0Prime" */ 3066518, /* "set-brand" */
2978&(nid_objs[626]),/* "setAttr-Token-EMV" */ 3067638, /* "set-brand-AmericanExpress" */
2979&(nid_objs[622]),/* "setAttr-TokenType" */ 3068637, /* "set-brand-Diners" */
2980&(nid_objs[619]),/* "setCext-IssuerCapabilities" */ 3069636, /* "set-brand-IATA-ATA" */
2981&(nid_objs[615]),/* "setCext-PGWYcapabilities" */ 3070639, /* "set-brand-JCB" */
2982&(nid_objs[616]),/* "setCext-TokenIdentifier" */ 3071641, /* "set-brand-MasterCard" */
2983&(nid_objs[618]),/* "setCext-TokenType" */ 3072642, /* "set-brand-Novus" */
2984&(nid_objs[617]),/* "setCext-Track2Data" */ 3073640, /* "set-brand-Visa" */
2985&(nid_objs[611]),/* "setCext-cCertRequired" */ 3074517, /* "set-certExt" */
2986&(nid_objs[609]),/* "setCext-certType" */ 3075513, /* "set-ctype" */
2987&(nid_objs[608]),/* "setCext-hashedRoot" */ 3076514, /* "set-msgExt" */
2988&(nid_objs[610]),/* "setCext-merchData" */ 3077516, /* "set-policy" */
2989&(nid_objs[613]),/* "setCext-setExt" */ 3078607, /* "set-policy-root" */
2990&(nid_objs[614]),/* "setCext-setQualf" */ 3079624, /* "set-rootKeyThumb" */
2991&(nid_objs[612]),/* "setCext-tunneling" */ 3080620, /* "setAttr-Cert" */
2992&(nid_objs[540]),/* "setct-AcqCardCodeMsg" */ 3081631, /* "setAttr-GenCryptgrm" */
2993&(nid_objs[576]),/* "setct-AcqCardCodeMsgTBE" */ 3082623, /* "setAttr-IssCap" */
2994&(nid_objs[570]),/* "setct-AuthReqTBE" */ 3083628, /* "setAttr-IssCap-CVM" */
2995&(nid_objs[534]),/* "setct-AuthReqTBS" */ 3084630, /* "setAttr-IssCap-Sig" */
2996&(nid_objs[527]),/* "setct-AuthResBaggage" */ 3085629, /* "setAttr-IssCap-T2" */
2997&(nid_objs[571]),/* "setct-AuthResTBE" */ 3086621, /* "setAttr-PGWYcap" */
2998&(nid_objs[572]),/* "setct-AuthResTBEX" */ 3087635, /* "setAttr-SecDevSig" */
2999&(nid_objs[535]),/* "setct-AuthResTBS" */ 3088632, /* "setAttr-T2Enc" */
3000&(nid_objs[536]),/* "setct-AuthResTBSX" */ 3089633, /* "setAttr-T2cleartxt" */
3001&(nid_objs[528]),/* "setct-AuthRevReqBaggage" */ 3090634, /* "setAttr-TokICCsig" */
3002&(nid_objs[577]),/* "setct-AuthRevReqTBE" */ 3091627, /* "setAttr-Token-B0Prime" */
3003&(nid_objs[541]),/* "setct-AuthRevReqTBS" */ 3092626, /* "setAttr-Token-EMV" */
3004&(nid_objs[529]),/* "setct-AuthRevResBaggage" */ 3093622, /* "setAttr-TokenType" */
3005&(nid_objs[542]),/* "setct-AuthRevResData" */ 3094619, /* "setCext-IssuerCapabilities" */
3006&(nid_objs[578]),/* "setct-AuthRevResTBE" */ 3095615, /* "setCext-PGWYcapabilities" */
3007&(nid_objs[579]),/* "setct-AuthRevResTBEB" */ 3096616, /* "setCext-TokenIdentifier" */
3008&(nid_objs[543]),/* "setct-AuthRevResTBS" */ 3097618, /* "setCext-TokenType" */
3009&(nid_objs[573]),/* "setct-AuthTokenTBE" */ 3098617, /* "setCext-Track2Data" */
3010&(nid_objs[537]),/* "setct-AuthTokenTBS" */ 3099611, /* "setCext-cCertRequired" */
3011&(nid_objs[600]),/* "setct-BCIDistributionTBS" */ 3100609, /* "setCext-certType" */
3012&(nid_objs[558]),/* "setct-BatchAdminReqData" */ 3101608, /* "setCext-hashedRoot" */
3013&(nid_objs[592]),/* "setct-BatchAdminReqTBE" */ 3102610, /* "setCext-merchData" */
3014&(nid_objs[559]),/* "setct-BatchAdminResData" */ 3103613, /* "setCext-setExt" */
3015&(nid_objs[593]),/* "setct-BatchAdminResTBE" */ 3104614, /* "setCext-setQualf" */
3016&(nid_objs[599]),/* "setct-CRLNotificationResTBS" */ 3105612, /* "setCext-tunneling" */
3017&(nid_objs[598]),/* "setct-CRLNotificationTBS" */ 3106540, /* "setct-AcqCardCodeMsg" */
3018&(nid_objs[580]),/* "setct-CapReqTBE" */ 3107576, /* "setct-AcqCardCodeMsgTBE" */
3019&(nid_objs[581]),/* "setct-CapReqTBEX" */ 3108570, /* "setct-AuthReqTBE" */
3020&(nid_objs[544]),/* "setct-CapReqTBS" */ 3109534, /* "setct-AuthReqTBS" */
3021&(nid_objs[545]),/* "setct-CapReqTBSX" */ 3110527, /* "setct-AuthResBaggage" */
3022&(nid_objs[546]),/* "setct-CapResData" */ 3111571, /* "setct-AuthResTBE" */
3023&(nid_objs[582]),/* "setct-CapResTBE" */ 3112572, /* "setct-AuthResTBEX" */
3024&(nid_objs[583]),/* "setct-CapRevReqTBE" */ 3113535, /* "setct-AuthResTBS" */
3025&(nid_objs[584]),/* "setct-CapRevReqTBEX" */ 3114536, /* "setct-AuthResTBSX" */
3026&(nid_objs[547]),/* "setct-CapRevReqTBS" */ 3115528, /* "setct-AuthRevReqBaggage" */
3027&(nid_objs[548]),/* "setct-CapRevReqTBSX" */ 3116577, /* "setct-AuthRevReqTBE" */
3028&(nid_objs[549]),/* "setct-CapRevResData" */ 3117541, /* "setct-AuthRevReqTBS" */
3029&(nid_objs[585]),/* "setct-CapRevResTBE" */ 3118529, /* "setct-AuthRevResBaggage" */
3030&(nid_objs[538]),/* "setct-CapTokenData" */ 3119542, /* "setct-AuthRevResData" */
3031&(nid_objs[530]),/* "setct-CapTokenSeq" */ 3120578, /* "setct-AuthRevResTBE" */
3032&(nid_objs[574]),/* "setct-CapTokenTBE" */ 3121579, /* "setct-AuthRevResTBEB" */
3033&(nid_objs[575]),/* "setct-CapTokenTBEX" */ 3122543, /* "setct-AuthRevResTBS" */
3034&(nid_objs[539]),/* "setct-CapTokenTBS" */ 3123573, /* "setct-AuthTokenTBE" */
3035&(nid_objs[560]),/* "setct-CardCInitResTBS" */ 3124537, /* "setct-AuthTokenTBS" */
3036&(nid_objs[566]),/* "setct-CertInqReqTBS" */ 3125600, /* "setct-BCIDistributionTBS" */
3037&(nid_objs[563]),/* "setct-CertReqData" */ 3126558, /* "setct-BatchAdminReqData" */
3038&(nid_objs[595]),/* "setct-CertReqTBE" */ 3127592, /* "setct-BatchAdminReqTBE" */
3039&(nid_objs[596]),/* "setct-CertReqTBEX" */ 3128559, /* "setct-BatchAdminResData" */
3040&(nid_objs[564]),/* "setct-CertReqTBS" */ 3129593, /* "setct-BatchAdminResTBE" */
3041&(nid_objs[565]),/* "setct-CertResData" */ 3130599, /* "setct-CRLNotificationResTBS" */
3042&(nid_objs[597]),/* "setct-CertResTBE" */ 3131598, /* "setct-CRLNotificationTBS" */
3043&(nid_objs[586]),/* "setct-CredReqTBE" */ 3132580, /* "setct-CapReqTBE" */
3044&(nid_objs[587]),/* "setct-CredReqTBEX" */ 3133581, /* "setct-CapReqTBEX" */
3045&(nid_objs[550]),/* "setct-CredReqTBS" */ 3134544, /* "setct-CapReqTBS" */
3046&(nid_objs[551]),/* "setct-CredReqTBSX" */ 3135545, /* "setct-CapReqTBSX" */
3047&(nid_objs[552]),/* "setct-CredResData" */ 3136546, /* "setct-CapResData" */
3048&(nid_objs[588]),/* "setct-CredResTBE" */ 3137582, /* "setct-CapResTBE" */
3049&(nid_objs[589]),/* "setct-CredRevReqTBE" */ 3138583, /* "setct-CapRevReqTBE" */
3050&(nid_objs[590]),/* "setct-CredRevReqTBEX" */ 3139584, /* "setct-CapRevReqTBEX" */
3051&(nid_objs[553]),/* "setct-CredRevReqTBS" */ 3140547, /* "setct-CapRevReqTBS" */
3052&(nid_objs[554]),/* "setct-CredRevReqTBSX" */ 3141548, /* "setct-CapRevReqTBSX" */
3053&(nid_objs[555]),/* "setct-CredRevResData" */ 3142549, /* "setct-CapRevResData" */
3054&(nid_objs[591]),/* "setct-CredRevResTBE" */ 3143585, /* "setct-CapRevResTBE" */
3055&(nid_objs[567]),/* "setct-ErrorTBS" */ 3144538, /* "setct-CapTokenData" */
3056&(nid_objs[526]),/* "setct-HODInput" */ 3145530, /* "setct-CapTokenSeq" */
3057&(nid_objs[561]),/* "setct-MeAqCInitResTBS" */ 3146574, /* "setct-CapTokenTBE" */
3058&(nid_objs[522]),/* "setct-OIData" */ 3147575, /* "setct-CapTokenTBEX" */
3059&(nid_objs[519]),/* "setct-PANData" */ 3148539, /* "setct-CapTokenTBS" */
3060&(nid_objs[521]),/* "setct-PANOnly" */ 3149560, /* "setct-CardCInitResTBS" */
3061&(nid_objs[520]),/* "setct-PANToken" */ 3150566, /* "setct-CertInqReqTBS" */
3062&(nid_objs[556]),/* "setct-PCertReqData" */ 3151563, /* "setct-CertReqData" */
3063&(nid_objs[557]),/* "setct-PCertResTBS" */ 3152595, /* "setct-CertReqTBE" */
3064&(nid_objs[523]),/* "setct-PI" */ 3153596, /* "setct-CertReqTBEX" */
3065&(nid_objs[532]),/* "setct-PI-TBS" */ 3154564, /* "setct-CertReqTBS" */
3066&(nid_objs[524]),/* "setct-PIData" */ 3155565, /* "setct-CertResData" */
3067&(nid_objs[525]),/* "setct-PIDataUnsigned" */ 3156597, /* "setct-CertResTBE" */
3068&(nid_objs[568]),/* "setct-PIDualSignedTBE" */ 3157586, /* "setct-CredReqTBE" */
3069&(nid_objs[569]),/* "setct-PIUnsignedTBE" */ 3158587, /* "setct-CredReqTBEX" */
3070&(nid_objs[531]),/* "setct-PInitResData" */ 3159550, /* "setct-CredReqTBS" */
3071&(nid_objs[533]),/* "setct-PResData" */ 3160551, /* "setct-CredReqTBSX" */
3072&(nid_objs[594]),/* "setct-RegFormReqTBE" */ 3161552, /* "setct-CredResData" */
3073&(nid_objs[562]),/* "setct-RegFormResTBS" */ 3162588, /* "setct-CredResTBE" */
3074&(nid_objs[606]),/* "setext-cv" */ 3163589, /* "setct-CredRevReqTBE" */
3075&(nid_objs[601]),/* "setext-genCrypt" */ 3164590, /* "setct-CredRevReqTBEX" */
3076&(nid_objs[602]),/* "setext-miAuth" */ 3165553, /* "setct-CredRevReqTBS" */
3077&(nid_objs[604]),/* "setext-pinAny" */ 3166554, /* "setct-CredRevReqTBSX" */
3078&(nid_objs[603]),/* "setext-pinSecure" */ 3167555, /* "setct-CredRevResData" */
3079&(nid_objs[605]),/* "setext-track2" */ 3168591, /* "setct-CredRevResTBE" */
3080&(nid_objs[52]),/* "signingTime" */ 3169567, /* "setct-ErrorTBS" */
3081&(nid_objs[454]),/* "simpleSecurityObject" */ 3170526, /* "setct-HODInput" */
3082&(nid_objs[496]),/* "singleLevelQuality" */ 3171561, /* "setct-MeAqCInitResTBS" */
3083&(nid_objs[387]),/* "snmpv2" */ 3172522, /* "setct-OIData" */
3084&(nid_objs[660]),/* "streetAddress" */ 3173519, /* "setct-PANData" */
3085&(nid_objs[85]),/* "subjectAltName" */ 3174521, /* "setct-PANOnly" */
3086&(nid_objs[769]),/* "subjectDirectoryAttributes" */ 3175520, /* "setct-PANToken" */
3087&(nid_objs[398]),/* "subjectInfoAccess" */ 3176556, /* "setct-PCertReqData" */
3088&(nid_objs[82]),/* "subjectKeyIdentifier" */ 3177557, /* "setct-PCertResTBS" */
3089&(nid_objs[498]),/* "subtreeMaximumQuality" */ 3178523, /* "setct-PI" */
3090&(nid_objs[497]),/* "subtreeMinimumQuality" */ 3179532, /* "setct-PI-TBS" */
3091&(nid_objs[402]),/* "targetInformation" */ 3180524, /* "setct-PIData" */
3092&(nid_objs[459]),/* "textEncodedORAddress" */ 3181525, /* "setct-PIDataUnsigned" */
3093&(nid_objs[293]),/* "textNotice" */ 3182568, /* "setct-PIDualSignedTBE" */
3094&(nid_objs[133]),/* "timeStamping" */ 3183569, /* "setct-PIUnsignedTBE" */
3095&(nid_objs[106]),/* "title" */ 3184531, /* "setct-PInitResData" */
3096&(nid_objs[682]),/* "tpBasis" */ 3185533, /* "setct-PResData" */
3097&(nid_objs[375]),/* "trustRoot" */ 3186594, /* "setct-RegFormReqTBE" */
3098&(nid_objs[436]),/* "ucl" */ 3187562, /* "setct-RegFormResTBS" */
3099&(nid_objs[55]),/* "unstructuredAddress" */ 3188606, /* "setext-cv" */
3100&(nid_objs[49]),/* "unstructuredName" */ 3189601, /* "setext-genCrypt" */
3101&(nid_objs[465]),/* "userClass" */ 3190602, /* "setext-miAuth" */
3102&(nid_objs[373]),/* "valid" */ 3191604, /* "setext-pinAny" */
3103&(nid_objs[678]),/* "wap" */ 3192603, /* "setext-pinSecure" */
3104&(nid_objs[679]),/* "wap-wsg" */ 3193605, /* "setext-track2" */
3105&(nid_objs[735]),/* "wap-wsg-idm-ecid-wtls1" */ 319452, /* "signingTime" */
3106&(nid_objs[743]),/* "wap-wsg-idm-ecid-wtls10" */ 3195454, /* "simpleSecurityObject" */
3107&(nid_objs[744]),/* "wap-wsg-idm-ecid-wtls11" */ 3196496, /* "singleLevelQuality" */
3108&(nid_objs[745]),/* "wap-wsg-idm-ecid-wtls12" */ 3197387, /* "snmpv2" */
3109&(nid_objs[736]),/* "wap-wsg-idm-ecid-wtls3" */ 3198660, /* "street" */
3110&(nid_objs[737]),/* "wap-wsg-idm-ecid-wtls4" */ 319985, /* "subjectAltName" */
3111&(nid_objs[738]),/* "wap-wsg-idm-ecid-wtls5" */ 3200769, /* "subjectDirectoryAttributes" */
3112&(nid_objs[739]),/* "wap-wsg-idm-ecid-wtls6" */ 3201398, /* "subjectInfoAccess" */
3113&(nid_objs[740]),/* "wap-wsg-idm-ecid-wtls7" */ 320282, /* "subjectKeyIdentifier" */
3114&(nid_objs[741]),/* "wap-wsg-idm-ecid-wtls8" */ 3203498, /* "subtreeMaximumQuality" */
3115&(nid_objs[742]),/* "wap-wsg-idm-ecid-wtls9" */ 3204497, /* "subtreeMinimumQuality" */
3116&(nid_objs[804]),/* "whirlpool" */ 3205890, /* "supportedAlgorithms" */
3117&(nid_objs[503]),/* "x500UniqueIdentifier" */ 3206874, /* "supportedApplicationContext" */
3118&(nid_objs[158]),/* "x509Certificate" */ 3207402, /* "targetInformation" */
3119&(nid_objs[160]),/* "x509Crl" */ 3208864, /* "telephoneNumber" */
3209866, /* "teletexTerminalIdentifier" */
3210865, /* "telexNumber" */
3211459, /* "textEncodedORAddress" */
3212293, /* "textNotice" */
3213133, /* "timeStamping" */
3214106, /* "title" */
3215682, /* "tpBasis" */
3216375, /* "trustRoot" */
3217436, /* "ucl" */
3218888, /* "uniqueMember" */
321955, /* "unstructuredAddress" */
322049, /* "unstructuredName" */
3221880, /* "userCertificate" */
3222465, /* "userClass" */
3223879, /* "userPassword" */
3224373, /* "valid" */
3225678, /* "wap" */
3226679, /* "wap-wsg" */
3227735, /* "wap-wsg-idm-ecid-wtls1" */
3228743, /* "wap-wsg-idm-ecid-wtls10" */
3229744, /* "wap-wsg-idm-ecid-wtls11" */
3230745, /* "wap-wsg-idm-ecid-wtls12" */
3231736, /* "wap-wsg-idm-ecid-wtls3" */
3232737, /* "wap-wsg-idm-ecid-wtls4" */
3233738, /* "wap-wsg-idm-ecid-wtls5" */
3234739, /* "wap-wsg-idm-ecid-wtls6" */
3235740, /* "wap-wsg-idm-ecid-wtls7" */
3236741, /* "wap-wsg-idm-ecid-wtls8" */
3237742, /* "wap-wsg-idm-ecid-wtls9" */
3238804, /* "whirlpool" */
3239868, /* "x121Address" */
3240503, /* "x500UniqueIdentifier" */
3241158, /* "x509Certificate" */
3242160, /* "x509Crl" */
3120}; 3243};
3121 3244
3122static ASN1_OBJECT *ln_objs[NUM_LN]={ 3245static const unsigned int ln_objs[NUM_LN]={
3123&(nid_objs[363]),/* "AD Time Stamping" */ 3246363, /* "AD Time Stamping" */
3124&(nid_objs[405]),/* "ANSI X9.62" */ 3247405, /* "ANSI X9.62" */
3125&(nid_objs[368]),/* "Acceptable OCSP Responses" */ 3248368, /* "Acceptable OCSP Responses" */
3126&(nid_objs[664]),/* "Any language" */ 3249664, /* "Any language" */
3127&(nid_objs[177]),/* "Authority Information Access" */ 3250177, /* "Authority Information Access" */
3128&(nid_objs[365]),/* "Basic OCSP Response" */ 3251365, /* "Basic OCSP Response" */
3129&(nid_objs[285]),/* "Biometric Info" */ 3252285, /* "Biometric Info" */
3130&(nid_objs[179]),/* "CA Issuers" */ 3253179, /* "CA Issuers" */
3131&(nid_objs[785]),/* "CA Repository" */ 3254785, /* "CA Repository" */
3132&(nid_objs[131]),/* "Code Signing" */ 3255131, /* "Code Signing" */
3133&(nid_objs[783]),/* "Diffie-Hellman based MAC" */ 3256783, /* "Diffie-Hellman based MAC" */
3134&(nid_objs[382]),/* "Directory" */ 3257382, /* "Directory" */
3135&(nid_objs[392]),/* "Domain" */ 3258392, /* "Domain" */
3136&(nid_objs[132]),/* "E-mail Protection" */ 3259132, /* "E-mail Protection" */
3137&(nid_objs[389]),/* "Enterprises" */ 3260389, /* "Enterprises" */
3138&(nid_objs[384]),/* "Experimental" */ 3261384, /* "Experimental" */
3139&(nid_objs[372]),/* "Extended OCSP Status" */ 3262372, /* "Extended OCSP Status" */
3140&(nid_objs[172]),/* "Extension Request" */ 3263172, /* "Extension Request" */
3141&(nid_objs[813]),/* "GOST 28147-89" */ 3264813, /* "GOST 28147-89" */
3142&(nid_objs[849]),/* "GOST 28147-89 Cryptocom ParamSet" */ 3265849, /* "GOST 28147-89 Cryptocom ParamSet" */
3143&(nid_objs[815]),/* "GOST 28147-89 MAC" */ 3266815, /* "GOST 28147-89 MAC" */
3144&(nid_objs[851]),/* "GOST 34.10-2001 Cryptocom" */ 3267851, /* "GOST 34.10-2001 Cryptocom" */
3145&(nid_objs[850]),/* "GOST 34.10-94 Cryptocom" */ 3268850, /* "GOST 34.10-94 Cryptocom" */
3146&(nid_objs[811]),/* "GOST R 34.10-2001" */ 3269811, /* "GOST R 34.10-2001" */
3147&(nid_objs[817]),/* "GOST R 34.10-2001 DH" */ 3270817, /* "GOST R 34.10-2001 DH" */
3148&(nid_objs[812]),/* "GOST R 34.10-94" */ 3271812, /* "GOST R 34.10-94" */
3149&(nid_objs[818]),/* "GOST R 34.10-94 DH" */ 3272818, /* "GOST R 34.10-94 DH" */
3150&(nid_objs[809]),/* "GOST R 34.11-94" */ 3273809, /* "GOST R 34.11-94" */
3151&(nid_objs[816]),/* "GOST R 34.11-94 PRF" */ 3274816, /* "GOST R 34.11-94 PRF" */
3152&(nid_objs[807]),/* "GOST R 34.11-94 with GOST R 34.10-2001" */ 3275807, /* "GOST R 34.11-94 with GOST R 34.10-2001" */
3153&(nid_objs[853]),/* "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" */ 3276853, /* "GOST R 34.11-94 with GOST R 34.10-2001 Cryptocom" */
3154&(nid_objs[808]),/* "GOST R 34.11-94 with GOST R 34.10-94" */ 3277808, /* "GOST R 34.11-94 with GOST R 34.10-94" */
3155&(nid_objs[852]),/* "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" */ 3278852, /* "GOST R 34.11-94 with GOST R 34.10-94 Cryptocom" */
3156&(nid_objs[854]),/* "GOST R 3410-2001 Parameter Set Cryptocom" */ 3279854, /* "GOST R 3410-2001 Parameter Set Cryptocom" */
3157&(nid_objs[810]),/* "HMAC GOST 34.11-94" */ 3280810, /* "HMAC GOST 34.11-94" */
3158&(nid_objs[432]),/* "Hold Instruction Call Issuer" */ 3281432, /* "Hold Instruction Call Issuer" */
3159&(nid_objs[430]),/* "Hold Instruction Code" */ 3282430, /* "Hold Instruction Code" */
3160&(nid_objs[431]),/* "Hold Instruction None" */ 3283431, /* "Hold Instruction None" */
3161&(nid_objs[433]),/* "Hold Instruction Reject" */ 3284433, /* "Hold Instruction Reject" */
3162&(nid_objs[634]),/* "ICC or token signature" */ 3285634, /* "ICC or token signature" */
3163&(nid_objs[294]),/* "IPSec End System" */ 3286294, /* "IPSec End System" */
3164&(nid_objs[295]),/* "IPSec Tunnel" */ 3287295, /* "IPSec Tunnel" */
3165&(nid_objs[296]),/* "IPSec User" */ 3288296, /* "IPSec User" */
3166&(nid_objs[182]),/* "ISO Member Body" */ 3289182, /* "ISO Member Body" */
3167&(nid_objs[183]),/* "ISO US Member Body" */ 3290183, /* "ISO US Member Body" */
3168&(nid_objs[667]),/* "Independent" */ 3291667, /* "Independent" */
3169&(nid_objs[665]),/* "Inherit all" */ 3292665, /* "Inherit all" */
3170&(nid_objs[647]),/* "International Organizations" */ 3293647, /* "International Organizations" */
3171&(nid_objs[142]),/* "Invalidity Date" */ 3294142, /* "Invalidity Date" */
3172&(nid_objs[504]),/* "MIME MHS" */ 3295504, /* "MIME MHS" */
3173&(nid_objs[388]),/* "Mail" */ 3296388, /* "Mail" */
3174&(nid_objs[383]),/* "Management" */ 3297383, /* "Management" */
3175&(nid_objs[417]),/* "Microsoft CSP Name" */ 3298417, /* "Microsoft CSP Name" */
3176&(nid_objs[135]),/* "Microsoft Commercial Code Signing" */ 3299135, /* "Microsoft Commercial Code Signing" */
3177&(nid_objs[138]),/* "Microsoft Encrypted File System" */ 3300138, /* "Microsoft Encrypted File System" */
3178&(nid_objs[171]),/* "Microsoft Extension Request" */ 3301171, /* "Microsoft Extension Request" */
3179&(nid_objs[134]),/* "Microsoft Individual Code Signing" */ 3302134, /* "Microsoft Individual Code Signing" */
3180&(nid_objs[856]),/* "Microsoft Local Key set" */ 3303856, /* "Microsoft Local Key set" */
3181&(nid_objs[137]),/* "Microsoft Server Gated Crypto" */ 3304137, /* "Microsoft Server Gated Crypto" */
3182&(nid_objs[648]),/* "Microsoft Smartcardlogin" */ 3305648, /* "Microsoft Smartcardlogin" */
3183&(nid_objs[136]),/* "Microsoft Trust List Signing" */ 3306136, /* "Microsoft Trust List Signing" */
3184&(nid_objs[649]),/* "Microsoft Universal Principal Name" */ 3307649, /* "Microsoft Universal Principal Name" */
3185&(nid_objs[393]),/* "NULL" */ 3308393, /* "NULL" */
3186&(nid_objs[404]),/* "NULL" */ 3309404, /* "NULL" */
3187&(nid_objs[72]),/* "Netscape Base Url" */ 331072, /* "Netscape Base Url" */
3188&(nid_objs[76]),/* "Netscape CA Policy Url" */ 331176, /* "Netscape CA Policy Url" */
3189&(nid_objs[74]),/* "Netscape CA Revocation Url" */ 331274, /* "Netscape CA Revocation Url" */
3190&(nid_objs[71]),/* "Netscape Cert Type" */ 331371, /* "Netscape Cert Type" */
3191&(nid_objs[58]),/* "Netscape Certificate Extension" */ 331458, /* "Netscape Certificate Extension" */
3192&(nid_objs[79]),/* "Netscape Certificate Sequence" */ 331579, /* "Netscape Certificate Sequence" */
3193&(nid_objs[78]),/* "Netscape Comment" */ 331678, /* "Netscape Comment" */
3194&(nid_objs[57]),/* "Netscape Communications Corp." */ 331757, /* "Netscape Communications Corp." */
3195&(nid_objs[59]),/* "Netscape Data Type" */ 331859, /* "Netscape Data Type" */
3196&(nid_objs[75]),/* "Netscape Renewal Url" */ 331975, /* "Netscape Renewal Url" */
3197&(nid_objs[73]),/* "Netscape Revocation Url" */ 332073, /* "Netscape Revocation Url" */
3198&(nid_objs[77]),/* "Netscape SSL Server Name" */ 332177, /* "Netscape SSL Server Name" */
3199&(nid_objs[139]),/* "Netscape Server Gated Crypto" */ 3322139, /* "Netscape Server Gated Crypto" */
3200&(nid_objs[178]),/* "OCSP" */ 3323178, /* "OCSP" */
3201&(nid_objs[370]),/* "OCSP Archive Cutoff" */ 3324370, /* "OCSP Archive Cutoff" */
3202&(nid_objs[367]),/* "OCSP CRL ID" */ 3325367, /* "OCSP CRL ID" */
3203&(nid_objs[369]),/* "OCSP No Check" */ 3326369, /* "OCSP No Check" */
3204&(nid_objs[366]),/* "OCSP Nonce" */ 3327366, /* "OCSP Nonce" */
3205&(nid_objs[371]),/* "OCSP Service Locator" */ 3328371, /* "OCSP Service Locator" */
3206&(nid_objs[180]),/* "OCSP Signing" */ 3329180, /* "OCSP Signing" */
3207&(nid_objs[161]),/* "PBES2" */ 3330161, /* "PBES2" */
3208&(nid_objs[69]),/* "PBKDF2" */ 333169, /* "PBKDF2" */
3209&(nid_objs[162]),/* "PBMAC1" */ 3332162, /* "PBMAC1" */
3210&(nid_objs[127]),/* "PKIX" */ 3333127, /* "PKIX" */
3211&(nid_objs[858]),/* "Permanent Identifier" */ 3334858, /* "Permanent Identifier" */
3212&(nid_objs[164]),/* "Policy Qualifier CPS" */ 3335164, /* "Policy Qualifier CPS" */
3213&(nid_objs[165]),/* "Policy Qualifier User Notice" */ 3336165, /* "Policy Qualifier User Notice" */
3214&(nid_objs[385]),/* "Private" */ 3337385, /* "Private" */
3215&(nid_objs[663]),/* "Proxy Certificate Information" */ 3338663, /* "Proxy Certificate Information" */
3216&(nid_objs[ 1]),/* "RSA Data Security, Inc." */ 3339 1, /* "RSA Data Security, Inc." */
3217&(nid_objs[ 2]),/* "RSA Data Security, Inc. PKCS" */ 3340 2, /* "RSA Data Security, Inc. PKCS" */
3218&(nid_objs[188]),/* "S/MIME" */ 3341188, /* "S/MIME" */
3219&(nid_objs[167]),/* "S/MIME Capabilities" */ 3342167, /* "S/MIME Capabilities" */
3220&(nid_objs[387]),/* "SNMPv2" */ 3343387, /* "SNMPv2" */
3221&(nid_objs[512]),/* "Secure Electronic Transactions" */ 3344512, /* "Secure Electronic Transactions" */
3222&(nid_objs[386]),/* "Security" */ 3345386, /* "Security" */
3223&(nid_objs[394]),/* "Selected Attribute Types" */ 3346394, /* "Selected Attribute Types" */
3224&(nid_objs[143]),/* "Strong Extranet ID" */ 3347143, /* "Strong Extranet ID" */
3225&(nid_objs[398]),/* "Subject Information Access" */ 3348398, /* "Subject Information Access" */
3226&(nid_objs[130]),/* "TLS Web Client Authentication" */ 3349130, /* "TLS Web Client Authentication" */
3227&(nid_objs[129]),/* "TLS Web Server Authentication" */ 3350129, /* "TLS Web Server Authentication" */
3228&(nid_objs[133]),/* "Time Stamping" */ 3351133, /* "Time Stamping" */
3229&(nid_objs[375]),/* "Trust Root" */ 3352375, /* "Trust Root" */
3230&(nid_objs[12]),/* "X509" */ 335312, /* "X509" */
3231&(nid_objs[402]),/* "X509v3 AC Targeting" */ 3354402, /* "X509v3 AC Targeting" */
3232&(nid_objs[746]),/* "X509v3 Any Policy" */ 3355746, /* "X509v3 Any Policy" */
3233&(nid_objs[90]),/* "X509v3 Authority Key Identifier" */ 335690, /* "X509v3 Authority Key Identifier" */
3234&(nid_objs[87]),/* "X509v3 Basic Constraints" */ 335787, /* "X509v3 Basic Constraints" */
3235&(nid_objs[103]),/* "X509v3 CRL Distribution Points" */ 3358103, /* "X509v3 CRL Distribution Points" */
3236&(nid_objs[88]),/* "X509v3 CRL Number" */ 335988, /* "X509v3 CRL Number" */
3237&(nid_objs[141]),/* "X509v3 CRL Reason Code" */ 3360141, /* "X509v3 CRL Reason Code" */
3238&(nid_objs[771]),/* "X509v3 Certificate Issuer" */ 3361771, /* "X509v3 Certificate Issuer" */
3239&(nid_objs[89]),/* "X509v3 Certificate Policies" */ 336289, /* "X509v3 Certificate Policies" */
3240&(nid_objs[140]),/* "X509v3 Delta CRL Indicator" */ 3363140, /* "X509v3 Delta CRL Indicator" */
3241&(nid_objs[126]),/* "X509v3 Extended Key Usage" */ 3364126, /* "X509v3 Extended Key Usage" */
3242&(nid_objs[857]),/* "X509v3 Freshest CRL" */ 3365857, /* "X509v3 Freshest CRL" */
3243&(nid_objs[748]),/* "X509v3 Inhibit Any Policy" */ 3366748, /* "X509v3 Inhibit Any Policy" */
3244&(nid_objs[86]),/* "X509v3 Issuer Alternative Name" */ 336786, /* "X509v3 Issuer Alternative Name" */
3245&(nid_objs[770]),/* "X509v3 Issuing Distrubution Point" */ 3368770, /* "X509v3 Issuing Distrubution Point" */
3246&(nid_objs[83]),/* "X509v3 Key Usage" */ 336983, /* "X509v3 Key Usage" */
3247&(nid_objs[666]),/* "X509v3 Name Constraints" */ 3370666, /* "X509v3 Name Constraints" */
3248&(nid_objs[403]),/* "X509v3 No Revocation Available" */ 3371403, /* "X509v3 No Revocation Available" */
3249&(nid_objs[401]),/* "X509v3 Policy Constraints" */ 3372401, /* "X509v3 Policy Constraints" */
3250&(nid_objs[747]),/* "X509v3 Policy Mappings" */ 3373747, /* "X509v3 Policy Mappings" */
3251&(nid_objs[84]),/* "X509v3 Private Key Usage Period" */ 337484, /* "X509v3 Private Key Usage Period" */
3252&(nid_objs[85]),/* "X509v3 Subject Alternative Name" */ 337585, /* "X509v3 Subject Alternative Name" */
3253&(nid_objs[769]),/* "X509v3 Subject Directory Attributes" */ 3376769, /* "X509v3 Subject Directory Attributes" */
3254&(nid_objs[82]),/* "X509v3 Subject Key Identifier" */ 337782, /* "X509v3 Subject Key Identifier" */
3255&(nid_objs[184]),/* "X9.57" */ 3378184, /* "X9.57" */
3256&(nid_objs[185]),/* "X9.57 CM ?" */ 3379185, /* "X9.57 CM ?" */
3257&(nid_objs[478]),/* "aRecord" */ 3380478, /* "aRecord" */
3258&(nid_objs[289]),/* "aaControls" */ 3381289, /* "aaControls" */
3259&(nid_objs[287]),/* "ac-auditEntity" */ 3382287, /* "ac-auditEntity" */
3260&(nid_objs[397]),/* "ac-proxying" */ 3383397, /* "ac-proxying" */
3261&(nid_objs[288]),/* "ac-targeting" */ 3384288, /* "ac-targeting" */
3262&(nid_objs[446]),/* "account" */ 3385446, /* "account" */
3263&(nid_objs[364]),/* "ad dvcs" */ 3386364, /* "ad dvcs" */
3264&(nid_objs[606]),/* "additional verification" */ 3387606, /* "additional verification" */
3265&(nid_objs[419]),/* "aes-128-cbc" */ 3388419, /* "aes-128-cbc" */
3266&(nid_objs[421]),/* "aes-128-cfb" */ 3389421, /* "aes-128-cfb" */
3267&(nid_objs[650]),/* "aes-128-cfb1" */ 3390650, /* "aes-128-cfb1" */
3268&(nid_objs[653]),/* "aes-128-cfb8" */ 3391653, /* "aes-128-cfb8" */
3269&(nid_objs[418]),/* "aes-128-ecb" */ 3392418, /* "aes-128-ecb" */
3270&(nid_objs[420]),/* "aes-128-ofb" */ 3393420, /* "aes-128-ofb" */
3271&(nid_objs[423]),/* "aes-192-cbc" */ 3394423, /* "aes-192-cbc" */
3272&(nid_objs[425]),/* "aes-192-cfb" */ 3395425, /* "aes-192-cfb" */
3273&(nid_objs[651]),/* "aes-192-cfb1" */ 3396651, /* "aes-192-cfb1" */
3274&(nid_objs[654]),/* "aes-192-cfb8" */ 3397654, /* "aes-192-cfb8" */
3275&(nid_objs[422]),/* "aes-192-ecb" */ 3398422, /* "aes-192-ecb" */
3276&(nid_objs[424]),/* "aes-192-ofb" */ 3399424, /* "aes-192-ofb" */
3277&(nid_objs[427]),/* "aes-256-cbc" */ 3400427, /* "aes-256-cbc" */
3278&(nid_objs[429]),/* "aes-256-cfb" */ 3401429, /* "aes-256-cfb" */
3279&(nid_objs[652]),/* "aes-256-cfb1" */ 3402652, /* "aes-256-cfb1" */
3280&(nid_objs[655]),/* "aes-256-cfb8" */ 3403655, /* "aes-256-cfb8" */
3281&(nid_objs[426]),/* "aes-256-ecb" */ 3404426, /* "aes-256-ecb" */
3282&(nid_objs[428]),/* "aes-256-ofb" */ 3405428, /* "aes-256-ofb" */
3283&(nid_objs[376]),/* "algorithm" */ 3406376, /* "algorithm" */
3284&(nid_objs[484]),/* "associatedDomain" */ 3407484, /* "associatedDomain" */
3285&(nid_objs[485]),/* "associatedName" */ 3408485, /* "associatedName" */
3286&(nid_objs[501]),/* "audio" */ 3409501, /* "audio" */
3287&(nid_objs[91]),/* "bf-cbc" */ 3410882, /* "authorityRevocationList" */
3288&(nid_objs[93]),/* "bf-cfb" */ 341191, /* "bf-cbc" */
3289&(nid_objs[92]),/* "bf-ecb" */ 341293, /* "bf-cfb" */
3290&(nid_objs[94]),/* "bf-ofb" */ 341392, /* "bf-ecb" */
3291&(nid_objs[494]),/* "buildingName" */ 341494, /* "bf-ofb" */
3292&(nid_objs[691]),/* "c2onb191v4" */ 3415494, /* "buildingName" */
3293&(nid_objs[692]),/* "c2onb191v5" */ 3416860, /* "businessCategory" */
3294&(nid_objs[697]),/* "c2onb239v4" */ 3417691, /* "c2onb191v4" */
3295&(nid_objs[698]),/* "c2onb239v5" */ 3418692, /* "c2onb191v5" */
3296&(nid_objs[684]),/* "c2pnb163v1" */ 3419697, /* "c2onb239v4" */
3297&(nid_objs[685]),/* "c2pnb163v2" */ 3420698, /* "c2onb239v5" */
3298&(nid_objs[686]),/* "c2pnb163v3" */ 3421684, /* "c2pnb163v1" */
3299&(nid_objs[687]),/* "c2pnb176v1" */ 3422685, /* "c2pnb163v2" */
3300&(nid_objs[693]),/* "c2pnb208w1" */ 3423686, /* "c2pnb163v3" */
3301&(nid_objs[699]),/* "c2pnb272w1" */ 3424687, /* "c2pnb176v1" */
3302&(nid_objs[700]),/* "c2pnb304w1" */ 3425693, /* "c2pnb208w1" */
3303&(nid_objs[702]),/* "c2pnb368w1" */ 3426699, /* "c2pnb272w1" */
3304&(nid_objs[688]),/* "c2tnb191v1" */ 3427700, /* "c2pnb304w1" */
3305&(nid_objs[689]),/* "c2tnb191v2" */ 3428702, /* "c2pnb368w1" */
3306&(nid_objs[690]),/* "c2tnb191v3" */ 3429688, /* "c2tnb191v1" */
3307&(nid_objs[694]),/* "c2tnb239v1" */ 3430689, /* "c2tnb191v2" */
3308&(nid_objs[695]),/* "c2tnb239v2" */ 3431690, /* "c2tnb191v3" */
3309&(nid_objs[696]),/* "c2tnb239v3" */ 3432694, /* "c2tnb239v1" */
3310&(nid_objs[701]),/* "c2tnb359v1" */ 3433695, /* "c2tnb239v2" */
3311&(nid_objs[703]),/* "c2tnb431r1" */ 3434696, /* "c2tnb239v3" */
3312&(nid_objs[483]),/* "cNAMERecord" */ 3435701, /* "c2tnb359v1" */
3313&(nid_objs[751]),/* "camellia-128-cbc" */ 3436703, /* "c2tnb431r1" */
3314&(nid_objs[757]),/* "camellia-128-cfb" */ 3437881, /* "cACertificate" */
3315&(nid_objs[760]),/* "camellia-128-cfb1" */ 3438483, /* "cNAMERecord" */
3316&(nid_objs[763]),/* "camellia-128-cfb8" */ 3439751, /* "camellia-128-cbc" */
3317&(nid_objs[754]),/* "camellia-128-ecb" */ 3440757, /* "camellia-128-cfb" */
3318&(nid_objs[766]),/* "camellia-128-ofb" */ 3441760, /* "camellia-128-cfb1" */
3319&(nid_objs[752]),/* "camellia-192-cbc" */ 3442763, /* "camellia-128-cfb8" */
3320&(nid_objs[758]),/* "camellia-192-cfb" */ 3443754, /* "camellia-128-ecb" */
3321&(nid_objs[761]),/* "camellia-192-cfb1" */ 3444766, /* "camellia-128-ofb" */
3322&(nid_objs[764]),/* "camellia-192-cfb8" */ 3445752, /* "camellia-192-cbc" */
3323&(nid_objs[755]),/* "camellia-192-ecb" */ 3446758, /* "camellia-192-cfb" */
3324&(nid_objs[767]),/* "camellia-192-ofb" */ 3447761, /* "camellia-192-cfb1" */
3325&(nid_objs[753]),/* "camellia-256-cbc" */ 3448764, /* "camellia-192-cfb8" */
3326&(nid_objs[759]),/* "camellia-256-cfb" */ 3449755, /* "camellia-192-ecb" */
3327&(nid_objs[762]),/* "camellia-256-cfb1" */ 3450767, /* "camellia-192-ofb" */
3328&(nid_objs[765]),/* "camellia-256-cfb8" */ 3451753, /* "camellia-256-cbc" */
3329&(nid_objs[756]),/* "camellia-256-ecb" */ 3452759, /* "camellia-256-cfb" */
3330&(nid_objs[768]),/* "camellia-256-ofb" */ 3453762, /* "camellia-256-cfb1" */
3331&(nid_objs[443]),/* "caseIgnoreIA5StringSyntax" */ 3454765, /* "camellia-256-cfb8" */
3332&(nid_objs[108]),/* "cast5-cbc" */ 3455756, /* "camellia-256-ecb" */
3333&(nid_objs[110]),/* "cast5-cfb" */ 3456768, /* "camellia-256-ofb" */
3334&(nid_objs[109]),/* "cast5-ecb" */ 3457443, /* "caseIgnoreIA5StringSyntax" */
3335&(nid_objs[111]),/* "cast5-ofb" */ 3458108, /* "cast5-cbc" */
3336&(nid_objs[152]),/* "certBag" */ 3459110, /* "cast5-cfb" */
3337&(nid_objs[677]),/* "certicom-arc" */ 3460109, /* "cast5-ecb" */
3338&(nid_objs[517]),/* "certificate extensions" */ 3461111, /* "cast5-ofb" */
3339&(nid_objs[54]),/* "challengePassword" */ 3462152, /* "certBag" */
3340&(nid_objs[407]),/* "characteristic-two-field" */ 3463677, /* "certicom-arc" */
3341&(nid_objs[395]),/* "clearance" */ 3464517, /* "certificate extensions" */
3342&(nid_objs[633]),/* "cleartext track 2" */ 3465883, /* "certificateRevocationList" */
3343&(nid_objs[13]),/* "commonName" */ 346654, /* "challengePassword" */
3344&(nid_objs[513]),/* "content types" */ 3467407, /* "characteristic-two-field" */
3345&(nid_objs[50]),/* "contentType" */ 3468395, /* "clearance" */
3346&(nid_objs[53]),/* "countersignature" */ 3469633, /* "cleartext track 2" */
3347&(nid_objs[14]),/* "countryName" */ 347013, /* "commonName" */
3348&(nid_objs[153]),/* "crlBag" */ 3471513, /* "content types" */
3349&(nid_objs[806]),/* "cryptocom" */ 347250, /* "contentType" */
3350&(nid_objs[805]),/* "cryptopro" */ 347353, /* "countersignature" */
3351&(nid_objs[500]),/* "dITRedirect" */ 347414, /* "countryName" */
3352&(nid_objs[451]),/* "dNSDomain" */ 3475153, /* "crlBag" */
3353&(nid_objs[495]),/* "dSAQuality" */ 3476884, /* "crossCertificatePair" */
3354&(nid_objs[434]),/* "data" */ 3477806, /* "cryptocom" */
3355&(nid_objs[390]),/* "dcObject" */ 3478805, /* "cryptopro" */
3356&(nid_objs[31]),/* "des-cbc" */ 3479500, /* "dITRedirect" */
3357&(nid_objs[643]),/* "des-cdmf" */ 3480451, /* "dNSDomain" */
3358&(nid_objs[30]),/* "des-cfb" */ 3481495, /* "dSAQuality" */
3359&(nid_objs[656]),/* "des-cfb1" */ 3482434, /* "data" */
3360&(nid_objs[657]),/* "des-cfb8" */ 3483390, /* "dcObject" */
3361&(nid_objs[29]),/* "des-ecb" */ 3484891, /* "deltaRevocationList" */
3362&(nid_objs[32]),/* "des-ede" */ 348531, /* "des-cbc" */
3363&(nid_objs[43]),/* "des-ede-cbc" */ 3486643, /* "des-cdmf" */
3364&(nid_objs[60]),/* "des-ede-cfb" */ 348730, /* "des-cfb" */
3365&(nid_objs[62]),/* "des-ede-ofb" */ 3488656, /* "des-cfb1" */
3366&(nid_objs[33]),/* "des-ede3" */ 3489657, /* "des-cfb8" */
3367&(nid_objs[44]),/* "des-ede3-cbc" */ 349029, /* "des-ecb" */
3368&(nid_objs[61]),/* "des-ede3-cfb" */ 349132, /* "des-ede" */
3369&(nid_objs[658]),/* "des-ede3-cfb1" */ 349243, /* "des-ede-cbc" */
3370&(nid_objs[659]),/* "des-ede3-cfb8" */ 349360, /* "des-ede-cfb" */
3371&(nid_objs[63]),/* "des-ede3-ofb" */ 349462, /* "des-ede-ofb" */
3372&(nid_objs[45]),/* "des-ofb" */ 349533, /* "des-ede3" */
3373&(nid_objs[107]),/* "description" */ 349644, /* "des-ede3-cbc" */
3374&(nid_objs[80]),/* "desx-cbc" */ 349761, /* "des-ede3-cfb" */
3375&(nid_objs[28]),/* "dhKeyAgreement" */ 3498658, /* "des-ede3-cfb1" */
3376&(nid_objs[11]),/* "directory services (X.500)" */ 3499659, /* "des-ede3-cfb8" */
3377&(nid_objs[378]),/* "directory services - algorithms" */ 350063, /* "des-ede3-ofb" */
3378&(nid_objs[174]),/* "dnQualifier" */ 350145, /* "des-ofb" */
3379&(nid_objs[447]),/* "document" */ 3502107, /* "description" */
3380&(nid_objs[471]),/* "documentAuthor" */ 3503871, /* "destinationIndicator" */
3381&(nid_objs[468]),/* "documentIdentifier" */ 350480, /* "desx-cbc" */
3382&(nid_objs[472]),/* "documentLocation" */ 350528, /* "dhKeyAgreement" */
3383&(nid_objs[502]),/* "documentPublisher" */ 350611, /* "directory services (X.500)" */
3384&(nid_objs[449]),/* "documentSeries" */ 3507378, /* "directory services - algorithms" */
3385&(nid_objs[469]),/* "documentTitle" */ 3508887, /* "distinguishedName" */
3386&(nid_objs[470]),/* "documentVersion" */ 3509892, /* "dmdName" */
3387&(nid_objs[380]),/* "dod" */ 3510174, /* "dnQualifier" */
3388&(nid_objs[391]),/* "domainComponent" */ 3511447, /* "document" */
3389&(nid_objs[452]),/* "domainRelatedObject" */ 3512471, /* "documentAuthor" */
3390&(nid_objs[116]),/* "dsaEncryption" */ 3513468, /* "documentIdentifier" */
3391&(nid_objs[67]),/* "dsaEncryption-old" */ 3514472, /* "documentLocation" */
3392&(nid_objs[66]),/* "dsaWithSHA" */ 3515502, /* "documentPublisher" */
3393&(nid_objs[113]),/* "dsaWithSHA1" */ 3516449, /* "documentSeries" */
3394&(nid_objs[70]),/* "dsaWithSHA1-old" */ 3517469, /* "documentTitle" */
3395&(nid_objs[802]),/* "dsa_with_SHA224" */ 3518470, /* "documentVersion" */
3396&(nid_objs[803]),/* "dsa_with_SHA256" */ 3519380, /* "dod" */
3397&(nid_objs[297]),/* "dvcs" */ 3520391, /* "domainComponent" */
3398&(nid_objs[791]),/* "ecdsa-with-Recommended" */ 3521452, /* "domainRelatedObject" */
3399&(nid_objs[416]),/* "ecdsa-with-SHA1" */ 3522116, /* "dsaEncryption" */
3400&(nid_objs[793]),/* "ecdsa-with-SHA224" */ 352367, /* "dsaEncryption-old" */
3401&(nid_objs[794]),/* "ecdsa-with-SHA256" */ 352466, /* "dsaWithSHA" */
3402&(nid_objs[795]),/* "ecdsa-with-SHA384" */ 3525113, /* "dsaWithSHA1" */
3403&(nid_objs[796]),/* "ecdsa-with-SHA512" */ 352670, /* "dsaWithSHA1-old" */
3404&(nid_objs[792]),/* "ecdsa-with-Specified" */ 3527802, /* "dsa_with_SHA224" */
3405&(nid_objs[48]),/* "emailAddress" */ 3528803, /* "dsa_with_SHA256" */
3406&(nid_objs[632]),/* "encrypted track 2" */ 3529297, /* "dvcs" */
3407&(nid_objs[56]),/* "extendedCertificateAttributes" */ 3530791, /* "ecdsa-with-Recommended" */
3408&(nid_objs[462]),/* "favouriteDrink" */ 3531416, /* "ecdsa-with-SHA1" */
3409&(nid_objs[453]),/* "friendlyCountry" */ 3532793, /* "ecdsa-with-SHA224" */
3410&(nid_objs[490]),/* "friendlyCountryName" */ 3533794, /* "ecdsa-with-SHA256" */
3411&(nid_objs[156]),/* "friendlyName" */ 3534795, /* "ecdsa-with-SHA384" */
3412&(nid_objs[631]),/* "generate cryptogram" */ 3535796, /* "ecdsa-with-SHA512" */
3413&(nid_objs[509]),/* "generationQualifier" */ 3536792, /* "ecdsa-with-Specified" */
3414&(nid_objs[601]),/* "generic cryptogram" */ 353748, /* "emailAddress" */
3415&(nid_objs[99]),/* "givenName" */ 3538632, /* "encrypted track 2" */
3416&(nid_objs[814]),/* "gost89-cnt" */ 3539885, /* "enhancedSearchGuide" */
3417&(nid_objs[855]),/* "hmac" */ 354056, /* "extendedCertificateAttributes" */
3418&(nid_objs[780]),/* "hmac-md5" */ 3541867, /* "facsimileTelephoneNumber" */
3419&(nid_objs[781]),/* "hmac-sha1" */ 3542462, /* "favouriteDrink" */
3420&(nid_objs[797]),/* "hmacWithMD5" */ 3543453, /* "friendlyCountry" */
3421&(nid_objs[163]),/* "hmacWithSHA1" */ 3544490, /* "friendlyCountryName" */
3422&(nid_objs[798]),/* "hmacWithSHA224" */ 3545156, /* "friendlyName" */
3423&(nid_objs[799]),/* "hmacWithSHA256" */ 3546631, /* "generate cryptogram" */
3424&(nid_objs[800]),/* "hmacWithSHA384" */ 3547509, /* "generationQualifier" */
3425&(nid_objs[801]),/* "hmacWithSHA512" */ 3548601, /* "generic cryptogram" */
3426&(nid_objs[486]),/* "homePostalAddress" */ 354999, /* "givenName" */
3427&(nid_objs[473]),/* "homeTelephoneNumber" */ 3550814, /* "gost89-cnt" */
3428&(nid_objs[466]),/* "host" */ 3551855, /* "hmac" */
3429&(nid_objs[442]),/* "iA5StringSyntax" */ 3552780, /* "hmac-md5" */
3430&(nid_objs[381]),/* "iana" */ 3553781, /* "hmac-sha1" */
3431&(nid_objs[824]),/* "id-Gost28147-89-CryptoPro-A-ParamSet" */ 3554797, /* "hmacWithMD5" */
3432&(nid_objs[825]),/* "id-Gost28147-89-CryptoPro-B-ParamSet" */ 3555163, /* "hmacWithSHA1" */
3433&(nid_objs[826]),/* "id-Gost28147-89-CryptoPro-C-ParamSet" */ 3556798, /* "hmacWithSHA224" */
3434&(nid_objs[827]),/* "id-Gost28147-89-CryptoPro-D-ParamSet" */ 3557799, /* "hmacWithSHA256" */
3435&(nid_objs[819]),/* "id-Gost28147-89-CryptoPro-KeyMeshing" */ 3558800, /* "hmacWithSHA384" */
3436&(nid_objs[829]),/* "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" */ 3559801, /* "hmacWithSHA512" */
3437&(nid_objs[828]),/* "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" */ 3560486, /* "homePostalAddress" */
3438&(nid_objs[830]),/* "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" */ 3561473, /* "homeTelephoneNumber" */
3439&(nid_objs[820]),/* "id-Gost28147-89-None-KeyMeshing" */ 3562466, /* "host" */
3440&(nid_objs[823]),/* "id-Gost28147-89-TestParamSet" */ 3563889, /* "houseIdentifier" */
3441&(nid_objs[840]),/* "id-GostR3410-2001-CryptoPro-A-ParamSet" */ 3564442, /* "iA5StringSyntax" */
3442&(nid_objs[841]),/* "id-GostR3410-2001-CryptoPro-B-ParamSet" */ 3565381, /* "iana" */
3443&(nid_objs[842]),/* "id-GostR3410-2001-CryptoPro-C-ParamSet" */ 3566824, /* "id-Gost28147-89-CryptoPro-A-ParamSet" */
3444&(nid_objs[843]),/* "id-GostR3410-2001-CryptoPro-XchA-ParamSet" */ 3567825, /* "id-Gost28147-89-CryptoPro-B-ParamSet" */
3445&(nid_objs[844]),/* "id-GostR3410-2001-CryptoPro-XchB-ParamSet" */ 3568826, /* "id-Gost28147-89-CryptoPro-C-ParamSet" */
3446&(nid_objs[839]),/* "id-GostR3410-2001-TestParamSet" */ 3569827, /* "id-Gost28147-89-CryptoPro-D-ParamSet" */
3447&(nid_objs[832]),/* "id-GostR3410-94-CryptoPro-A-ParamSet" */ 3570819, /* "id-Gost28147-89-CryptoPro-KeyMeshing" */
3448&(nid_objs[833]),/* "id-GostR3410-94-CryptoPro-B-ParamSet" */ 3571829, /* "id-Gost28147-89-CryptoPro-Oscar-1-0-ParamSet" */
3449&(nid_objs[834]),/* "id-GostR3410-94-CryptoPro-C-ParamSet" */ 3572828, /* "id-Gost28147-89-CryptoPro-Oscar-1-1-ParamSet" */
3450&(nid_objs[835]),/* "id-GostR3410-94-CryptoPro-D-ParamSet" */ 3573830, /* "id-Gost28147-89-CryptoPro-RIC-1-ParamSet" */
3451&(nid_objs[836]),/* "id-GostR3410-94-CryptoPro-XchA-ParamSet" */ 3574820, /* "id-Gost28147-89-None-KeyMeshing" */
3452&(nid_objs[837]),/* "id-GostR3410-94-CryptoPro-XchB-ParamSet" */ 3575823, /* "id-Gost28147-89-TestParamSet" */
3453&(nid_objs[838]),/* "id-GostR3410-94-CryptoPro-XchC-ParamSet" */ 3576840, /* "id-GostR3410-2001-CryptoPro-A-ParamSet" */
3454&(nid_objs[831]),/* "id-GostR3410-94-TestParamSet" */ 3577841, /* "id-GostR3410-2001-CryptoPro-B-ParamSet" */
3455&(nid_objs[845]),/* "id-GostR3410-94-a" */ 3578842, /* "id-GostR3410-2001-CryptoPro-C-ParamSet" */
3456&(nid_objs[846]),/* "id-GostR3410-94-aBis" */ 3579843, /* "id-GostR3410-2001-CryptoPro-XchA-ParamSet" */
3457&(nid_objs[847]),/* "id-GostR3410-94-b" */ 3580844, /* "id-GostR3410-2001-CryptoPro-XchB-ParamSet" */
3458&(nid_objs[848]),/* "id-GostR3410-94-bBis" */ 3581839, /* "id-GostR3410-2001-TestParamSet" */
3459&(nid_objs[822]),/* "id-GostR3411-94-CryptoProParamSet" */ 3582832, /* "id-GostR3410-94-CryptoPro-A-ParamSet" */
3460&(nid_objs[821]),/* "id-GostR3411-94-TestParamSet" */ 3583833, /* "id-GostR3410-94-CryptoPro-B-ParamSet" */
3461&(nid_objs[266]),/* "id-aca" */ 3584834, /* "id-GostR3410-94-CryptoPro-C-ParamSet" */
3462&(nid_objs[355]),/* "id-aca-accessIdentity" */ 3585835, /* "id-GostR3410-94-CryptoPro-D-ParamSet" */
3463&(nid_objs[354]),/* "id-aca-authenticationInfo" */ 3586836, /* "id-GostR3410-94-CryptoPro-XchA-ParamSet" */
3464&(nid_objs[356]),/* "id-aca-chargingIdentity" */ 3587837, /* "id-GostR3410-94-CryptoPro-XchB-ParamSet" */
3465&(nid_objs[399]),/* "id-aca-encAttrs" */ 3588838, /* "id-GostR3410-94-CryptoPro-XchC-ParamSet" */
3466&(nid_objs[357]),/* "id-aca-group" */ 3589831, /* "id-GostR3410-94-TestParamSet" */
3467&(nid_objs[358]),/* "id-aca-role" */ 3590845, /* "id-GostR3410-94-a" */
3468&(nid_objs[176]),/* "id-ad" */ 3591846, /* "id-GostR3410-94-aBis" */
3469&(nid_objs[788]),/* "id-aes128-wrap" */ 3592847, /* "id-GostR3410-94-b" */
3470&(nid_objs[789]),/* "id-aes192-wrap" */ 3593848, /* "id-GostR3410-94-bBis" */
3471&(nid_objs[790]),/* "id-aes256-wrap" */ 3594822, /* "id-GostR3411-94-CryptoProParamSet" */
3472&(nid_objs[262]),/* "id-alg" */ 3595821, /* "id-GostR3411-94-TestParamSet" */
3473&(nid_objs[323]),/* "id-alg-des40" */ 3596266, /* "id-aca" */
3474&(nid_objs[326]),/* "id-alg-dh-pop" */ 3597355, /* "id-aca-accessIdentity" */
3475&(nid_objs[325]),/* "id-alg-dh-sig-hmac-sha1" */ 3598354, /* "id-aca-authenticationInfo" */
3476&(nid_objs[324]),/* "id-alg-noSignature" */ 3599356, /* "id-aca-chargingIdentity" */
3477&(nid_objs[268]),/* "id-cct" */ 3600399, /* "id-aca-encAttrs" */
3478&(nid_objs[361]),/* "id-cct-PKIData" */ 3601357, /* "id-aca-group" */
3479&(nid_objs[362]),/* "id-cct-PKIResponse" */ 3602358, /* "id-aca-role" */
3480&(nid_objs[360]),/* "id-cct-crs" */ 3603176, /* "id-ad" */
3481&(nid_objs[81]),/* "id-ce" */ 3604788, /* "id-aes128-wrap" */
3482&(nid_objs[680]),/* "id-characteristic-two-basis" */ 3605789, /* "id-aes192-wrap" */
3483&(nid_objs[263]),/* "id-cmc" */ 3606790, /* "id-aes256-wrap" */
3484&(nid_objs[334]),/* "id-cmc-addExtensions" */ 3607262, /* "id-alg" */
3485&(nid_objs[346]),/* "id-cmc-confirmCertAcceptance" */ 3608323, /* "id-alg-des40" */
3486&(nid_objs[330]),/* "id-cmc-dataReturn" */ 3609326, /* "id-alg-dh-pop" */
3487&(nid_objs[336]),/* "id-cmc-decryptedPOP" */ 3610325, /* "id-alg-dh-sig-hmac-sha1" */
3488&(nid_objs[335]),/* "id-cmc-encryptedPOP" */ 3611324, /* "id-alg-noSignature" */
3489&(nid_objs[339]),/* "id-cmc-getCRL" */ 3612268, /* "id-cct" */
3490&(nid_objs[338]),/* "id-cmc-getCert" */ 3613361, /* "id-cct-PKIData" */
3491&(nid_objs[328]),/* "id-cmc-identification" */ 3614362, /* "id-cct-PKIResponse" */
3492&(nid_objs[329]),/* "id-cmc-identityProof" */ 3615360, /* "id-cct-crs" */
3493&(nid_objs[337]),/* "id-cmc-lraPOPWitness" */ 361681, /* "id-ce" */
3494&(nid_objs[344]),/* "id-cmc-popLinkRandom" */ 3617680, /* "id-characteristic-two-basis" */
3495&(nid_objs[345]),/* "id-cmc-popLinkWitness" */ 3618263, /* "id-cmc" */
3496&(nid_objs[343]),/* "id-cmc-queryPending" */ 3619334, /* "id-cmc-addExtensions" */
3497&(nid_objs[333]),/* "id-cmc-recipientNonce" */ 3620346, /* "id-cmc-confirmCertAcceptance" */
3498&(nid_objs[341]),/* "id-cmc-regInfo" */ 3621330, /* "id-cmc-dataReturn" */
3499&(nid_objs[342]),/* "id-cmc-responseInfo" */ 3622336, /* "id-cmc-decryptedPOP" */
3500&(nid_objs[340]),/* "id-cmc-revokeRequest" */ 3623335, /* "id-cmc-encryptedPOP" */
3501&(nid_objs[332]),/* "id-cmc-senderNonce" */ 3624339, /* "id-cmc-getCRL" */
3502&(nid_objs[327]),/* "id-cmc-statusInfo" */ 3625338, /* "id-cmc-getCert" */
3503&(nid_objs[331]),/* "id-cmc-transactionId" */ 3626328, /* "id-cmc-identification" */
3504&(nid_objs[787]),/* "id-ct-asciiTextWithCRLF" */ 3627329, /* "id-cmc-identityProof" */
3505&(nid_objs[408]),/* "id-ecPublicKey" */ 3628337, /* "id-cmc-lraPOPWitness" */
3506&(nid_objs[508]),/* "id-hex-multipart-message" */ 3629344, /* "id-cmc-popLinkRandom" */
3507&(nid_objs[507]),/* "id-hex-partial-message" */ 3630345, /* "id-cmc-popLinkWitness" */
3508&(nid_objs[260]),/* "id-it" */ 3631343, /* "id-cmc-queryPending" */
3509&(nid_objs[302]),/* "id-it-caKeyUpdateInfo" */ 3632333, /* "id-cmc-recipientNonce" */
3510&(nid_objs[298]),/* "id-it-caProtEncCert" */ 3633341, /* "id-cmc-regInfo" */
3511&(nid_objs[311]),/* "id-it-confirmWaitTime" */ 3634342, /* "id-cmc-responseInfo" */
3512&(nid_objs[303]),/* "id-it-currentCRL" */ 3635340, /* "id-cmc-revokeRequest" */
3513&(nid_objs[300]),/* "id-it-encKeyPairTypes" */ 3636332, /* "id-cmc-senderNonce" */
3514&(nid_objs[310]),/* "id-it-implicitConfirm" */ 3637327, /* "id-cmc-statusInfo" */
3515&(nid_objs[308]),/* "id-it-keyPairParamRep" */ 3638331, /* "id-cmc-transactionId" */
3516&(nid_objs[307]),/* "id-it-keyPairParamReq" */ 3639787, /* "id-ct-asciiTextWithCRLF" */
3517&(nid_objs[312]),/* "id-it-origPKIMessage" */ 3640408, /* "id-ecPublicKey" */
3518&(nid_objs[301]),/* "id-it-preferredSymmAlg" */ 3641508, /* "id-hex-multipart-message" */
3519&(nid_objs[309]),/* "id-it-revPassphrase" */ 3642507, /* "id-hex-partial-message" */
3520&(nid_objs[299]),/* "id-it-signKeyPairTypes" */ 3643260, /* "id-it" */
3521&(nid_objs[305]),/* "id-it-subscriptionRequest" */ 3644302, /* "id-it-caKeyUpdateInfo" */
3522&(nid_objs[306]),/* "id-it-subscriptionResponse" */ 3645298, /* "id-it-caProtEncCert" */
3523&(nid_objs[784]),/* "id-it-suppLangTags" */ 3646311, /* "id-it-confirmWaitTime" */
3524&(nid_objs[304]),/* "id-it-unsupportedOIDs" */ 3647303, /* "id-it-currentCRL" */
3525&(nid_objs[128]),/* "id-kp" */ 3648300, /* "id-it-encKeyPairTypes" */
3526&(nid_objs[280]),/* "id-mod-attribute-cert" */ 3649310, /* "id-it-implicitConfirm" */
3527&(nid_objs[274]),/* "id-mod-cmc" */ 3650308, /* "id-it-keyPairParamRep" */
3528&(nid_objs[277]),/* "id-mod-cmp" */ 3651307, /* "id-it-keyPairParamReq" */
3529&(nid_objs[284]),/* "id-mod-cmp2000" */ 3652312, /* "id-it-origPKIMessage" */
3530&(nid_objs[273]),/* "id-mod-crmf" */ 3653301, /* "id-it-preferredSymmAlg" */
3531&(nid_objs[283]),/* "id-mod-dvcs" */ 3654309, /* "id-it-revPassphrase" */
3532&(nid_objs[275]),/* "id-mod-kea-profile-88" */ 3655299, /* "id-it-signKeyPairTypes" */
3533&(nid_objs[276]),/* "id-mod-kea-profile-93" */ 3656305, /* "id-it-subscriptionRequest" */
3534&(nid_objs[282]),/* "id-mod-ocsp" */ 3657306, /* "id-it-subscriptionResponse" */
3535&(nid_objs[278]),/* "id-mod-qualified-cert-88" */ 3658784, /* "id-it-suppLangTags" */
3536&(nid_objs[279]),/* "id-mod-qualified-cert-93" */ 3659304, /* "id-it-unsupportedOIDs" */
3537&(nid_objs[281]),/* "id-mod-timestamp-protocol" */ 3660128, /* "id-kp" */
3538&(nid_objs[264]),/* "id-on" */ 3661280, /* "id-mod-attribute-cert" */
3539&(nid_objs[347]),/* "id-on-personalData" */ 3662274, /* "id-mod-cmc" */
3540&(nid_objs[265]),/* "id-pda" */ 3663277, /* "id-mod-cmp" */
3541&(nid_objs[352]),/* "id-pda-countryOfCitizenship" */ 3664284, /* "id-mod-cmp2000" */
3542&(nid_objs[353]),/* "id-pda-countryOfResidence" */ 3665273, /* "id-mod-crmf" */
3543&(nid_objs[348]),/* "id-pda-dateOfBirth" */ 3666283, /* "id-mod-dvcs" */
3544&(nid_objs[351]),/* "id-pda-gender" */ 3667275, /* "id-mod-kea-profile-88" */
3545&(nid_objs[349]),/* "id-pda-placeOfBirth" */ 3668276, /* "id-mod-kea-profile-93" */
3546&(nid_objs[175]),/* "id-pe" */ 3669282, /* "id-mod-ocsp" */
3547&(nid_objs[261]),/* "id-pkip" */ 3670278, /* "id-mod-qualified-cert-88" */
3548&(nid_objs[258]),/* "id-pkix-mod" */ 3671279, /* "id-mod-qualified-cert-93" */
3549&(nid_objs[269]),/* "id-pkix1-explicit-88" */ 3672281, /* "id-mod-timestamp-protocol" */
3550&(nid_objs[271]),/* "id-pkix1-explicit-93" */ 3673264, /* "id-on" */
3551&(nid_objs[270]),/* "id-pkix1-implicit-88" */ 3674347, /* "id-on-personalData" */
3552&(nid_objs[272]),/* "id-pkix1-implicit-93" */ 3675265, /* "id-pda" */
3553&(nid_objs[662]),/* "id-ppl" */ 3676352, /* "id-pda-countryOfCitizenship" */
3554&(nid_objs[267]),/* "id-qcs" */ 3677353, /* "id-pda-countryOfResidence" */
3555&(nid_objs[359]),/* "id-qcs-pkixQCSyntax-v1" */ 3678348, /* "id-pda-dateOfBirth" */
3556&(nid_objs[259]),/* "id-qt" */ 3679351, /* "id-pda-gender" */
3557&(nid_objs[313]),/* "id-regCtrl" */ 3680349, /* "id-pda-placeOfBirth" */
3558&(nid_objs[316]),/* "id-regCtrl-authenticator" */ 3681175, /* "id-pe" */
3559&(nid_objs[319]),/* "id-regCtrl-oldCertID" */ 3682261, /* "id-pkip" */
3560&(nid_objs[318]),/* "id-regCtrl-pkiArchiveOptions" */ 3683258, /* "id-pkix-mod" */
3561&(nid_objs[317]),/* "id-regCtrl-pkiPublicationInfo" */ 3684269, /* "id-pkix1-explicit-88" */
3562&(nid_objs[320]),/* "id-regCtrl-protocolEncrKey" */ 3685271, /* "id-pkix1-explicit-93" */
3563&(nid_objs[315]),/* "id-regCtrl-regToken" */ 3686270, /* "id-pkix1-implicit-88" */
3564&(nid_objs[314]),/* "id-regInfo" */ 3687272, /* "id-pkix1-implicit-93" */
3565&(nid_objs[322]),/* "id-regInfo-certReq" */ 3688662, /* "id-ppl" */
3566&(nid_objs[321]),/* "id-regInfo-utf8Pairs" */ 3689267, /* "id-qcs" */
3567&(nid_objs[191]),/* "id-smime-aa" */ 3690359, /* "id-qcs-pkixQCSyntax-v1" */
3568&(nid_objs[215]),/* "id-smime-aa-contentHint" */ 3691259, /* "id-qt" */
3569&(nid_objs[218]),/* "id-smime-aa-contentIdentifier" */ 3692313, /* "id-regCtrl" */
3570&(nid_objs[221]),/* "id-smime-aa-contentReference" */ 3693316, /* "id-regCtrl-authenticator" */
3571&(nid_objs[240]),/* "id-smime-aa-dvcs-dvc" */ 3694319, /* "id-regCtrl-oldCertID" */
3572&(nid_objs[217]),/* "id-smime-aa-encapContentType" */ 3695318, /* "id-regCtrl-pkiArchiveOptions" */
3573&(nid_objs[222]),/* "id-smime-aa-encrypKeyPref" */ 3696317, /* "id-regCtrl-pkiPublicationInfo" */
3574&(nid_objs[220]),/* "id-smime-aa-equivalentLabels" */ 3697320, /* "id-regCtrl-protocolEncrKey" */
3575&(nid_objs[232]),/* "id-smime-aa-ets-CertificateRefs" */ 3698315, /* "id-regCtrl-regToken" */
3576&(nid_objs[233]),/* "id-smime-aa-ets-RevocationRefs" */ 3699314, /* "id-regInfo" */
3577&(nid_objs[238]),/* "id-smime-aa-ets-archiveTimeStamp" */ 3700322, /* "id-regInfo-certReq" */
3578&(nid_objs[237]),/* "id-smime-aa-ets-certCRLTimestamp" */ 3701321, /* "id-regInfo-utf8Pairs" */
3579&(nid_objs[234]),/* "id-smime-aa-ets-certValues" */ 3702191, /* "id-smime-aa" */
3580&(nid_objs[227]),/* "id-smime-aa-ets-commitmentType" */ 3703215, /* "id-smime-aa-contentHint" */
3581&(nid_objs[231]),/* "id-smime-aa-ets-contentTimestamp" */ 3704218, /* "id-smime-aa-contentIdentifier" */
3582&(nid_objs[236]),/* "id-smime-aa-ets-escTimeStamp" */ 3705221, /* "id-smime-aa-contentReference" */
3583&(nid_objs[230]),/* "id-smime-aa-ets-otherSigCert" */ 3706240, /* "id-smime-aa-dvcs-dvc" */
3584&(nid_objs[235]),/* "id-smime-aa-ets-revocationValues" */ 3707217, /* "id-smime-aa-encapContentType" */
3585&(nid_objs[226]),/* "id-smime-aa-ets-sigPolicyId" */ 3708222, /* "id-smime-aa-encrypKeyPref" */
3586&(nid_objs[229]),/* "id-smime-aa-ets-signerAttr" */ 3709220, /* "id-smime-aa-equivalentLabels" */
3587&(nid_objs[228]),/* "id-smime-aa-ets-signerLocation" */ 3710232, /* "id-smime-aa-ets-CertificateRefs" */
3588&(nid_objs[219]),/* "id-smime-aa-macValue" */ 3711233, /* "id-smime-aa-ets-RevocationRefs" */
3589&(nid_objs[214]),/* "id-smime-aa-mlExpandHistory" */ 3712238, /* "id-smime-aa-ets-archiveTimeStamp" */
3590&(nid_objs[216]),/* "id-smime-aa-msgSigDigest" */ 3713237, /* "id-smime-aa-ets-certCRLTimestamp" */
3591&(nid_objs[212]),/* "id-smime-aa-receiptRequest" */ 3714234, /* "id-smime-aa-ets-certValues" */
3592&(nid_objs[213]),/* "id-smime-aa-securityLabel" */ 3715227, /* "id-smime-aa-ets-commitmentType" */
3593&(nid_objs[239]),/* "id-smime-aa-signatureType" */ 3716231, /* "id-smime-aa-ets-contentTimestamp" */
3594&(nid_objs[223]),/* "id-smime-aa-signingCertificate" */ 3717236, /* "id-smime-aa-ets-escTimeStamp" */
3595&(nid_objs[224]),/* "id-smime-aa-smimeEncryptCerts" */ 3718230, /* "id-smime-aa-ets-otherSigCert" */
3596&(nid_objs[225]),/* "id-smime-aa-timeStampToken" */ 3719235, /* "id-smime-aa-ets-revocationValues" */
3597&(nid_objs[192]),/* "id-smime-alg" */ 3720226, /* "id-smime-aa-ets-sigPolicyId" */
3598&(nid_objs[243]),/* "id-smime-alg-3DESwrap" */ 3721229, /* "id-smime-aa-ets-signerAttr" */
3599&(nid_objs[246]),/* "id-smime-alg-CMS3DESwrap" */ 3722228, /* "id-smime-aa-ets-signerLocation" */
3600&(nid_objs[247]),/* "id-smime-alg-CMSRC2wrap" */ 3723219, /* "id-smime-aa-macValue" */
3601&(nid_objs[245]),/* "id-smime-alg-ESDH" */ 3724214, /* "id-smime-aa-mlExpandHistory" */
3602&(nid_objs[241]),/* "id-smime-alg-ESDHwith3DES" */ 3725216, /* "id-smime-aa-msgSigDigest" */
3603&(nid_objs[242]),/* "id-smime-alg-ESDHwithRC2" */ 3726212, /* "id-smime-aa-receiptRequest" */
3604&(nid_objs[244]),/* "id-smime-alg-RC2wrap" */ 3727213, /* "id-smime-aa-securityLabel" */
3605&(nid_objs[193]),/* "id-smime-cd" */ 3728239, /* "id-smime-aa-signatureType" */
3606&(nid_objs[248]),/* "id-smime-cd-ldap" */ 3729223, /* "id-smime-aa-signingCertificate" */
3607&(nid_objs[190]),/* "id-smime-ct" */ 3730224, /* "id-smime-aa-smimeEncryptCerts" */
3608&(nid_objs[210]),/* "id-smime-ct-DVCSRequestData" */ 3731225, /* "id-smime-aa-timeStampToken" */
3609&(nid_objs[211]),/* "id-smime-ct-DVCSResponseData" */ 3732192, /* "id-smime-alg" */
3610&(nid_objs[208]),/* "id-smime-ct-TDTInfo" */ 3733243, /* "id-smime-alg-3DESwrap" */
3611&(nid_objs[207]),/* "id-smime-ct-TSTInfo" */ 3734246, /* "id-smime-alg-CMS3DESwrap" */
3612&(nid_objs[205]),/* "id-smime-ct-authData" */ 3735247, /* "id-smime-alg-CMSRC2wrap" */
3613&(nid_objs[786]),/* "id-smime-ct-compressedData" */ 3736245, /* "id-smime-alg-ESDH" */
3614&(nid_objs[209]),/* "id-smime-ct-contentInfo" */ 3737241, /* "id-smime-alg-ESDHwith3DES" */
3615&(nid_objs[206]),/* "id-smime-ct-publishCert" */ 3738242, /* "id-smime-alg-ESDHwithRC2" */
3616&(nid_objs[204]),/* "id-smime-ct-receipt" */ 3739244, /* "id-smime-alg-RC2wrap" */
3617&(nid_objs[195]),/* "id-smime-cti" */ 3740193, /* "id-smime-cd" */
3618&(nid_objs[255]),/* "id-smime-cti-ets-proofOfApproval" */ 3741248, /* "id-smime-cd-ldap" */
3619&(nid_objs[256]),/* "id-smime-cti-ets-proofOfCreation" */ 3742190, /* "id-smime-ct" */
3620&(nid_objs[253]),/* "id-smime-cti-ets-proofOfDelivery" */ 3743210, /* "id-smime-ct-DVCSRequestData" */
3621&(nid_objs[251]),/* "id-smime-cti-ets-proofOfOrigin" */ 3744211, /* "id-smime-ct-DVCSResponseData" */
3622&(nid_objs[252]),/* "id-smime-cti-ets-proofOfReceipt" */ 3745208, /* "id-smime-ct-TDTInfo" */
3623&(nid_objs[254]),/* "id-smime-cti-ets-proofOfSender" */ 3746207, /* "id-smime-ct-TSTInfo" */
3624&(nid_objs[189]),/* "id-smime-mod" */ 3747205, /* "id-smime-ct-authData" */
3625&(nid_objs[196]),/* "id-smime-mod-cms" */ 3748786, /* "id-smime-ct-compressedData" */
3626&(nid_objs[197]),/* "id-smime-mod-ess" */ 3749209, /* "id-smime-ct-contentInfo" */
3627&(nid_objs[202]),/* "id-smime-mod-ets-eSigPolicy-88" */ 3750206, /* "id-smime-ct-publishCert" */
3628&(nid_objs[203]),/* "id-smime-mod-ets-eSigPolicy-97" */ 3751204, /* "id-smime-ct-receipt" */
3629&(nid_objs[200]),/* "id-smime-mod-ets-eSignature-88" */ 3752195, /* "id-smime-cti" */
3630&(nid_objs[201]),/* "id-smime-mod-ets-eSignature-97" */ 3753255, /* "id-smime-cti-ets-proofOfApproval" */
3631&(nid_objs[199]),/* "id-smime-mod-msg-v3" */ 3754256, /* "id-smime-cti-ets-proofOfCreation" */
3632&(nid_objs[198]),/* "id-smime-mod-oid" */ 3755253, /* "id-smime-cti-ets-proofOfDelivery" */
3633&(nid_objs[194]),/* "id-smime-spq" */ 3756251, /* "id-smime-cti-ets-proofOfOrigin" */
3634&(nid_objs[250]),/* "id-smime-spq-ets-sqt-unotice" */ 3757252, /* "id-smime-cti-ets-proofOfReceipt" */
3635&(nid_objs[249]),/* "id-smime-spq-ets-sqt-uri" */ 3758254, /* "id-smime-cti-ets-proofOfSender" */
3636&(nid_objs[34]),/* "idea-cbc" */ 3759189, /* "id-smime-mod" */
3637&(nid_objs[35]),/* "idea-cfb" */ 3760196, /* "id-smime-mod-cms" */
3638&(nid_objs[36]),/* "idea-ecb" */ 3761197, /* "id-smime-mod-ess" */
3639&(nid_objs[46]),/* "idea-ofb" */ 3762202, /* "id-smime-mod-ets-eSigPolicy-88" */
3640&(nid_objs[676]),/* "identified-organization" */ 3763203, /* "id-smime-mod-ets-eSigPolicy-97" */
3641&(nid_objs[461]),/* "info" */ 3764200, /* "id-smime-mod-ets-eSignature-88" */
3642&(nid_objs[101]),/* "initials" */ 3765201, /* "id-smime-mod-ets-eSignature-97" */
3643&(nid_objs[749]),/* "ipsec3" */ 3766199, /* "id-smime-mod-msg-v3" */
3644&(nid_objs[750]),/* "ipsec4" */ 3767198, /* "id-smime-mod-oid" */
3645&(nid_objs[181]),/* "iso" */ 3768194, /* "id-smime-spq" */
3646&(nid_objs[623]),/* "issuer capabilities" */ 3769250, /* "id-smime-spq-ets-sqt-unotice" */
3647&(nid_objs[645]),/* "itu-t" */ 3770249, /* "id-smime-spq-ets-sqt-uri" */
3648&(nid_objs[492]),/* "janetMailbox" */ 377134, /* "idea-cbc" */
3649&(nid_objs[646]),/* "joint-iso-itu-t" */ 377235, /* "idea-cfb" */
3650&(nid_objs[150]),/* "keyBag" */ 377336, /* "idea-ecb" */
3651&(nid_objs[773]),/* "kisa" */ 377446, /* "idea-ofb" */
3652&(nid_objs[477]),/* "lastModifiedBy" */ 3775676, /* "identified-organization" */
3653&(nid_objs[476]),/* "lastModifiedTime" */ 3776461, /* "info" */
3654&(nid_objs[157]),/* "localKeyID" */ 3777101, /* "initials" */
3655&(nid_objs[15]),/* "localityName" */ 3778869, /* "internationaliSDNNumber" */
3656&(nid_objs[480]),/* "mXRecord" */ 3779749, /* "ipsec3" */
3657&(nid_objs[493]),/* "mailPreferenceOption" */ 3780750, /* "ipsec4" */
3658&(nid_objs[467]),/* "manager" */ 3781181, /* "iso" */
3659&(nid_objs[ 3]),/* "md2" */ 3782623, /* "issuer capabilities" */
3660&(nid_objs[ 7]),/* "md2WithRSAEncryption" */ 3783645, /* "itu-t" */
3661&(nid_objs[257]),/* "md4" */ 3784492, /* "janetMailbox" */
3662&(nid_objs[396]),/* "md4WithRSAEncryption" */ 3785646, /* "joint-iso-itu-t" */
3663&(nid_objs[ 4]),/* "md5" */ 3786150, /* "keyBag" */
3664&(nid_objs[114]),/* "md5-sha1" */ 3787773, /* "kisa" */
3665&(nid_objs[104]),/* "md5WithRSA" */ 3788477, /* "lastModifiedBy" */
3666&(nid_objs[ 8]),/* "md5WithRSAEncryption" */ 3789476, /* "lastModifiedTime" */
3667&(nid_objs[95]),/* "mdc2" */ 3790157, /* "localKeyID" */
3668&(nid_objs[96]),/* "mdc2WithRSA" */ 379115, /* "localityName" */
3669&(nid_objs[602]),/* "merchant initiated auth" */ 3792480, /* "mXRecord" */
3670&(nid_objs[514]),/* "message extensions" */ 3793493, /* "mailPreferenceOption" */
3671&(nid_objs[51]),/* "messageDigest" */ 3794467, /* "manager" */
3672&(nid_objs[506]),/* "mime-mhs-bodies" */ 3795 3, /* "md2" */
3673&(nid_objs[505]),/* "mime-mhs-headings" */ 3796 7, /* "md2WithRSAEncryption" */
3674&(nid_objs[488]),/* "mobileTelephoneNumber" */ 3797257, /* "md4" */
3675&(nid_objs[481]),/* "nSRecord" */ 3798396, /* "md4WithRSAEncryption" */
3676&(nid_objs[173]),/* "name" */ 3799 4, /* "md5" */
3677&(nid_objs[681]),/* "onBasis" */ 3800114, /* "md5-sha1" */
3678&(nid_objs[379]),/* "org" */ 3801104, /* "md5WithRSA" */
3679&(nid_objs[17]),/* "organizationName" */ 3802 8, /* "md5WithRSAEncryption" */
3680&(nid_objs[491]),/* "organizationalStatus" */ 380395, /* "mdc2" */
3681&(nid_objs[18]),/* "organizationalUnitName" */ 380496, /* "mdc2WithRSA" */
3682&(nid_objs[475]),/* "otherMailbox" */ 3805875, /* "member" */
3683&(nid_objs[489]),/* "pagerTelephoneNumber" */ 3806602, /* "merchant initiated auth" */
3684&(nid_objs[782]),/* "password based MAC" */ 3807514, /* "message extensions" */
3685&(nid_objs[374]),/* "path" */ 380851, /* "messageDigest" */
3686&(nid_objs[621]),/* "payment gateway capabilities" */ 3809506, /* "mime-mhs-bodies" */
3687&(nid_objs[ 9]),/* "pbeWithMD2AndDES-CBC" */ 3810505, /* "mime-mhs-headings" */
3688&(nid_objs[168]),/* "pbeWithMD2AndRC2-CBC" */ 3811488, /* "mobileTelephoneNumber" */
3689&(nid_objs[112]),/* "pbeWithMD5AndCast5CBC" */ 3812481, /* "nSRecord" */
3690&(nid_objs[10]),/* "pbeWithMD5AndDES-CBC" */ 3813173, /* "name" */
3691&(nid_objs[169]),/* "pbeWithMD5AndRC2-CBC" */ 3814681, /* "onBasis" */
3692&(nid_objs[148]),/* "pbeWithSHA1And128BitRC2-CBC" */ 3815379, /* "org" */
3693&(nid_objs[144]),/* "pbeWithSHA1And128BitRC4" */ 381617, /* "organizationName" */
3694&(nid_objs[147]),/* "pbeWithSHA1And2-KeyTripleDES-CBC" */ 3817491, /* "organizationalStatus" */
3695&(nid_objs[146]),/* "pbeWithSHA1And3-KeyTripleDES-CBC" */ 381818, /* "organizationalUnitName" */
3696&(nid_objs[149]),/* "pbeWithSHA1And40BitRC2-CBC" */ 3819475, /* "otherMailbox" */
3697&(nid_objs[145]),/* "pbeWithSHA1And40BitRC4" */ 3820876, /* "owner" */
3698&(nid_objs[170]),/* "pbeWithSHA1AndDES-CBC" */ 3821489, /* "pagerTelephoneNumber" */
3699&(nid_objs[68]),/* "pbeWithSHA1AndRC2-CBC" */ 3822782, /* "password based MAC" */
3700&(nid_objs[499]),/* "personalSignature" */ 3823374, /* "path" */
3701&(nid_objs[487]),/* "personalTitle" */ 3824621, /* "payment gateway capabilities" */
3702&(nid_objs[464]),/* "photo" */ 3825 9, /* "pbeWithMD2AndDES-CBC" */
3703&(nid_objs[437]),/* "pilot" */ 3826168, /* "pbeWithMD2AndRC2-CBC" */
3704&(nid_objs[439]),/* "pilotAttributeSyntax" */ 3827112, /* "pbeWithMD5AndCast5CBC" */
3705&(nid_objs[438]),/* "pilotAttributeType" */ 382810, /* "pbeWithMD5AndDES-CBC" */
3706&(nid_objs[479]),/* "pilotAttributeType27" */ 3829169, /* "pbeWithMD5AndRC2-CBC" */
3707&(nid_objs[456]),/* "pilotDSA" */ 3830148, /* "pbeWithSHA1And128BitRC2-CBC" */
3708&(nid_objs[441]),/* "pilotGroups" */ 3831144, /* "pbeWithSHA1And128BitRC4" */
3709&(nid_objs[444]),/* "pilotObject" */ 3832147, /* "pbeWithSHA1And2-KeyTripleDES-CBC" */
3710&(nid_objs[440]),/* "pilotObjectClass" */ 3833146, /* "pbeWithSHA1And3-KeyTripleDES-CBC" */
3711&(nid_objs[455]),/* "pilotOrganization" */ 3834149, /* "pbeWithSHA1And40BitRC2-CBC" */
3712&(nid_objs[445]),/* "pilotPerson" */ 3835145, /* "pbeWithSHA1And40BitRC4" */
3713&(nid_objs[186]),/* "pkcs1" */ 3836170, /* "pbeWithSHA1AndDES-CBC" */
3714&(nid_objs[27]),/* "pkcs3" */ 383768, /* "pbeWithSHA1AndRC2-CBC" */
3715&(nid_objs[187]),/* "pkcs5" */ 3838499, /* "personalSignature" */
3716&(nid_objs[20]),/* "pkcs7" */ 3839487, /* "personalTitle" */
3717&(nid_objs[21]),/* "pkcs7-data" */ 3840464, /* "photo" */
3718&(nid_objs[25]),/* "pkcs7-digestData" */ 3841863, /* "physicalDeliveryOfficeName" */
3719&(nid_objs[26]),/* "pkcs7-encryptedData" */ 3842437, /* "pilot" */
3720&(nid_objs[23]),/* "pkcs7-envelopedData" */ 3843439, /* "pilotAttributeSyntax" */
3721&(nid_objs[24]),/* "pkcs7-signedAndEnvelopedData" */ 3844438, /* "pilotAttributeType" */
3722&(nid_objs[22]),/* "pkcs7-signedData" */ 3845479, /* "pilotAttributeType27" */
3723&(nid_objs[151]),/* "pkcs8ShroudedKeyBag" */ 3846456, /* "pilotDSA" */
3724&(nid_objs[47]),/* "pkcs9" */ 3847441, /* "pilotGroups" */
3725&(nid_objs[661]),/* "postalCode" */ 3848444, /* "pilotObject" */
3726&(nid_objs[683]),/* "ppBasis" */ 3849440, /* "pilotObjectClass" */
3727&(nid_objs[406]),/* "prime-field" */ 3850455, /* "pilotOrganization" */
3728&(nid_objs[409]),/* "prime192v1" */ 3851445, /* "pilotPerson" */
3729&(nid_objs[410]),/* "prime192v2" */ 3852186, /* "pkcs1" */
3730&(nid_objs[411]),/* "prime192v3" */ 385327, /* "pkcs3" */
3731&(nid_objs[412]),/* "prime239v1" */ 3854187, /* "pkcs5" */
3732&(nid_objs[413]),/* "prime239v2" */ 385520, /* "pkcs7" */
3733&(nid_objs[414]),/* "prime239v3" */ 385621, /* "pkcs7-data" */
3734&(nid_objs[415]),/* "prime256v1" */ 385725, /* "pkcs7-digestData" */
3735&(nid_objs[510]),/* "pseudonym" */ 385826, /* "pkcs7-encryptedData" */
3736&(nid_objs[435]),/* "pss" */ 385923, /* "pkcs7-envelopedData" */
3737&(nid_objs[286]),/* "qcStatements" */ 386024, /* "pkcs7-signedAndEnvelopedData" */
3738&(nid_objs[457]),/* "qualityLabelledData" */ 386122, /* "pkcs7-signedData" */
3739&(nid_objs[450]),/* "rFC822localPart" */ 3862151, /* "pkcs8ShroudedKeyBag" */
3740&(nid_objs[98]),/* "rc2-40-cbc" */ 386347, /* "pkcs9" */
3741&(nid_objs[166]),/* "rc2-64-cbc" */ 3864862, /* "postOfficeBox" */
3742&(nid_objs[37]),/* "rc2-cbc" */ 3865861, /* "postalAddress" */
3743&(nid_objs[39]),/* "rc2-cfb" */ 3866661, /* "postalCode" */
3744&(nid_objs[38]),/* "rc2-ecb" */ 3867683, /* "ppBasis" */
3745&(nid_objs[40]),/* "rc2-ofb" */ 3868872, /* "preferredDeliveryMethod" */
3746&(nid_objs[ 5]),/* "rc4" */ 3869873, /* "presentationAddress" */
3747&(nid_objs[97]),/* "rc4-40" */ 3870406, /* "prime-field" */
3748&(nid_objs[120]),/* "rc5-cbc" */ 3871409, /* "prime192v1" */
3749&(nid_objs[122]),/* "rc5-cfb" */ 3872410, /* "prime192v2" */
3750&(nid_objs[121]),/* "rc5-ecb" */ 3873411, /* "prime192v3" */
3751&(nid_objs[123]),/* "rc5-ofb" */ 3874412, /* "prime239v1" */
3752&(nid_objs[460]),/* "rfc822Mailbox" */ 3875413, /* "prime239v2" */
3753&(nid_objs[117]),/* "ripemd160" */ 3876414, /* "prime239v3" */
3754&(nid_objs[119]),/* "ripemd160WithRSA" */ 3877415, /* "prime256v1" */
3755&(nid_objs[400]),/* "role" */ 3878886, /* "protocolInformation" */
3756&(nid_objs[448]),/* "room" */ 3879510, /* "pseudonym" */
3757&(nid_objs[463]),/* "roomNumber" */ 3880435, /* "pss" */
3758&(nid_objs[19]),/* "rsa" */ 3881286, /* "qcStatements" */
3759&(nid_objs[ 6]),/* "rsaEncryption" */ 3882457, /* "qualityLabelledData" */
3760&(nid_objs[644]),/* "rsaOAEPEncryptionSET" */ 3883450, /* "rFC822localPart" */
3761&(nid_objs[377]),/* "rsaSignature" */ 388498, /* "rc2-40-cbc" */
3762&(nid_objs[124]),/* "run length compression" */ 3885166, /* "rc2-64-cbc" */
3763&(nid_objs[482]),/* "sOARecord" */ 388637, /* "rc2-cbc" */
3764&(nid_objs[155]),/* "safeContentsBag" */ 388739, /* "rc2-cfb" */
3765&(nid_objs[291]),/* "sbgp-autonomousSysNum" */ 388838, /* "rc2-ecb" */
3766&(nid_objs[290]),/* "sbgp-ipAddrBlock" */ 388940, /* "rc2-ofb" */
3767&(nid_objs[292]),/* "sbgp-routerIdentifier" */ 3890 5, /* "rc4" */
3768&(nid_objs[159]),/* "sdsiCertificate" */ 389197, /* "rc4-40" */
3769&(nid_objs[704]),/* "secp112r1" */ 3892120, /* "rc5-cbc" */
3770&(nid_objs[705]),/* "secp112r2" */ 3893122, /* "rc5-cfb" */
3771&(nid_objs[706]),/* "secp128r1" */ 3894121, /* "rc5-ecb" */
3772&(nid_objs[707]),/* "secp128r2" */ 3895123, /* "rc5-ofb" */
3773&(nid_objs[708]),/* "secp160k1" */ 3896870, /* "registeredAddress" */
3774&(nid_objs[709]),/* "secp160r1" */ 3897460, /* "rfc822Mailbox" */
3775&(nid_objs[710]),/* "secp160r2" */ 3898117, /* "ripemd160" */
3776&(nid_objs[711]),/* "secp192k1" */ 3899119, /* "ripemd160WithRSA" */
3777&(nid_objs[712]),/* "secp224k1" */ 3900400, /* "role" */
3778&(nid_objs[713]),/* "secp224r1" */ 3901877, /* "roleOccupant" */
3779&(nid_objs[714]),/* "secp256k1" */ 3902448, /* "room" */
3780&(nid_objs[715]),/* "secp384r1" */ 3903463, /* "roomNumber" */
3781&(nid_objs[716]),/* "secp521r1" */ 390419, /* "rsa" */
3782&(nid_objs[154]),/* "secretBag" */ 3905 6, /* "rsaEncryption" */
3783&(nid_objs[474]),/* "secretary" */ 3906644, /* "rsaOAEPEncryptionSET" */
3784&(nid_objs[717]),/* "sect113r1" */ 3907377, /* "rsaSignature" */
3785&(nid_objs[718]),/* "sect113r2" */ 3908124, /* "run length compression" */
3786&(nid_objs[719]),/* "sect131r1" */ 3909482, /* "sOARecord" */
3787&(nid_objs[720]),/* "sect131r2" */ 3910155, /* "safeContentsBag" */
3788&(nid_objs[721]),/* "sect163k1" */ 3911291, /* "sbgp-autonomousSysNum" */
3789&(nid_objs[722]),/* "sect163r1" */ 3912290, /* "sbgp-ipAddrBlock" */
3790&(nid_objs[723]),/* "sect163r2" */ 3913292, /* "sbgp-routerIdentifier" */
3791&(nid_objs[724]),/* "sect193r1" */ 3914159, /* "sdsiCertificate" */
3792&(nid_objs[725]),/* "sect193r2" */ 3915859, /* "searchGuide" */
3793&(nid_objs[726]),/* "sect233k1" */ 3916704, /* "secp112r1" */
3794&(nid_objs[727]),/* "sect233r1" */ 3917705, /* "secp112r2" */
3795&(nid_objs[728]),/* "sect239k1" */ 3918706, /* "secp128r1" */
3796&(nid_objs[729]),/* "sect283k1" */ 3919707, /* "secp128r2" */
3797&(nid_objs[730]),/* "sect283r1" */ 3920708, /* "secp160k1" */
3798&(nid_objs[731]),/* "sect409k1" */ 3921709, /* "secp160r1" */
3799&(nid_objs[732]),/* "sect409r1" */ 3922710, /* "secp160r2" */
3800&(nid_objs[733]),/* "sect571k1" */ 3923711, /* "secp192k1" */
3801&(nid_objs[734]),/* "sect571r1" */ 3924712, /* "secp224k1" */
3802&(nid_objs[635]),/* "secure device signature" */ 3925713, /* "secp224r1" */
3803&(nid_objs[777]),/* "seed-cbc" */ 3926714, /* "secp256k1" */
3804&(nid_objs[779]),/* "seed-cfb" */ 3927715, /* "secp384r1" */
3805&(nid_objs[776]),/* "seed-ecb" */ 3928716, /* "secp521r1" */
3806&(nid_objs[778]),/* "seed-ofb" */ 3929154, /* "secretBag" */
3807&(nid_objs[105]),/* "serialNumber" */ 3930474, /* "secretary" */
3808&(nid_objs[625]),/* "set-addPolicy" */ 3931717, /* "sect113r1" */
3809&(nid_objs[515]),/* "set-attr" */ 3932718, /* "sect113r2" */
3810&(nid_objs[518]),/* "set-brand" */ 3933719, /* "sect131r1" */
3811&(nid_objs[638]),/* "set-brand-AmericanExpress" */ 3934720, /* "sect131r2" */
3812&(nid_objs[637]),/* "set-brand-Diners" */ 3935721, /* "sect163k1" */
3813&(nid_objs[636]),/* "set-brand-IATA-ATA" */ 3936722, /* "sect163r1" */
3814&(nid_objs[639]),/* "set-brand-JCB" */ 3937723, /* "sect163r2" */
3815&(nid_objs[641]),/* "set-brand-MasterCard" */ 3938724, /* "sect193r1" */
3816&(nid_objs[642]),/* "set-brand-Novus" */ 3939725, /* "sect193r2" */
3817&(nid_objs[640]),/* "set-brand-Visa" */ 3940726, /* "sect233k1" */
3818&(nid_objs[516]),/* "set-policy" */ 3941727, /* "sect233r1" */
3819&(nid_objs[607]),/* "set-policy-root" */ 3942728, /* "sect239k1" */
3820&(nid_objs[624]),/* "set-rootKeyThumb" */ 3943729, /* "sect283k1" */
3821&(nid_objs[620]),/* "setAttr-Cert" */ 3944730, /* "sect283r1" */
3822&(nid_objs[628]),/* "setAttr-IssCap-CVM" */ 3945731, /* "sect409k1" */
3823&(nid_objs[630]),/* "setAttr-IssCap-Sig" */ 3946732, /* "sect409r1" */
3824&(nid_objs[629]),/* "setAttr-IssCap-T2" */ 3947733, /* "sect571k1" */
3825&(nid_objs[627]),/* "setAttr-Token-B0Prime" */ 3948734, /* "sect571r1" */
3826&(nid_objs[626]),/* "setAttr-Token-EMV" */ 3949635, /* "secure device signature" */
3827&(nid_objs[622]),/* "setAttr-TokenType" */ 3950878, /* "seeAlso" */
3828&(nid_objs[619]),/* "setCext-IssuerCapabilities" */ 3951777, /* "seed-cbc" */
3829&(nid_objs[615]),/* "setCext-PGWYcapabilities" */ 3952779, /* "seed-cfb" */
3830&(nid_objs[616]),/* "setCext-TokenIdentifier" */ 3953776, /* "seed-ecb" */
3831&(nid_objs[618]),/* "setCext-TokenType" */ 3954778, /* "seed-ofb" */
3832&(nid_objs[617]),/* "setCext-Track2Data" */ 3955105, /* "serialNumber" */
3833&(nid_objs[611]),/* "setCext-cCertRequired" */ 3956625, /* "set-addPolicy" */
3834&(nid_objs[609]),/* "setCext-certType" */ 3957515, /* "set-attr" */
3835&(nid_objs[608]),/* "setCext-hashedRoot" */ 3958518, /* "set-brand" */
3836&(nid_objs[610]),/* "setCext-merchData" */ 3959638, /* "set-brand-AmericanExpress" */
3837&(nid_objs[613]),/* "setCext-setExt" */ 3960637, /* "set-brand-Diners" */
3838&(nid_objs[614]),/* "setCext-setQualf" */ 3961636, /* "set-brand-IATA-ATA" */
3839&(nid_objs[612]),/* "setCext-tunneling" */ 3962639, /* "set-brand-JCB" */
3840&(nid_objs[540]),/* "setct-AcqCardCodeMsg" */ 3963641, /* "set-brand-MasterCard" */
3841&(nid_objs[576]),/* "setct-AcqCardCodeMsgTBE" */ 3964642, /* "set-brand-Novus" */
3842&(nid_objs[570]),/* "setct-AuthReqTBE" */ 3965640, /* "set-brand-Visa" */
3843&(nid_objs[534]),/* "setct-AuthReqTBS" */ 3966516, /* "set-policy" */
3844&(nid_objs[527]),/* "setct-AuthResBaggage" */ 3967607, /* "set-policy-root" */
3845&(nid_objs[571]),/* "setct-AuthResTBE" */ 3968624, /* "set-rootKeyThumb" */
3846&(nid_objs[572]),/* "setct-AuthResTBEX" */ 3969620, /* "setAttr-Cert" */
3847&(nid_objs[535]),/* "setct-AuthResTBS" */ 3970628, /* "setAttr-IssCap-CVM" */
3848&(nid_objs[536]),/* "setct-AuthResTBSX" */ 3971630, /* "setAttr-IssCap-Sig" */
3849&(nid_objs[528]),/* "setct-AuthRevReqBaggage" */ 3972629, /* "setAttr-IssCap-T2" */
3850&(nid_objs[577]),/* "setct-AuthRevReqTBE" */ 3973627, /* "setAttr-Token-B0Prime" */
3851&(nid_objs[541]),/* "setct-AuthRevReqTBS" */ 3974626, /* "setAttr-Token-EMV" */
3852&(nid_objs[529]),/* "setct-AuthRevResBaggage" */ 3975622, /* "setAttr-TokenType" */
3853&(nid_objs[542]),/* "setct-AuthRevResData" */ 3976619, /* "setCext-IssuerCapabilities" */
3854&(nid_objs[578]),/* "setct-AuthRevResTBE" */ 3977615, /* "setCext-PGWYcapabilities" */
3855&(nid_objs[579]),/* "setct-AuthRevResTBEB" */ 3978616, /* "setCext-TokenIdentifier" */
3856&(nid_objs[543]),/* "setct-AuthRevResTBS" */ 3979618, /* "setCext-TokenType" */
3857&(nid_objs[573]),/* "setct-AuthTokenTBE" */ 3980617, /* "setCext-Track2Data" */
3858&(nid_objs[537]),/* "setct-AuthTokenTBS" */ 3981611, /* "setCext-cCertRequired" */
3859&(nid_objs[600]),/* "setct-BCIDistributionTBS" */ 3982609, /* "setCext-certType" */
3860&(nid_objs[558]),/* "setct-BatchAdminReqData" */ 3983608, /* "setCext-hashedRoot" */
3861&(nid_objs[592]),/* "setct-BatchAdminReqTBE" */ 3984610, /* "setCext-merchData" */
3862&(nid_objs[559]),/* "setct-BatchAdminResData" */ 3985613, /* "setCext-setExt" */
3863&(nid_objs[593]),/* "setct-BatchAdminResTBE" */ 3986614, /* "setCext-setQualf" */
3864&(nid_objs[599]),/* "setct-CRLNotificationResTBS" */ 3987612, /* "setCext-tunneling" */
3865&(nid_objs[598]),/* "setct-CRLNotificationTBS" */ 3988540, /* "setct-AcqCardCodeMsg" */
3866&(nid_objs[580]),/* "setct-CapReqTBE" */ 3989576, /* "setct-AcqCardCodeMsgTBE" */
3867&(nid_objs[581]),/* "setct-CapReqTBEX" */ 3990570, /* "setct-AuthReqTBE" */
3868&(nid_objs[544]),/* "setct-CapReqTBS" */ 3991534, /* "setct-AuthReqTBS" */
3869&(nid_objs[545]),/* "setct-CapReqTBSX" */ 3992527, /* "setct-AuthResBaggage" */
3870&(nid_objs[546]),/* "setct-CapResData" */ 3993571, /* "setct-AuthResTBE" */
3871&(nid_objs[582]),/* "setct-CapResTBE" */ 3994572, /* "setct-AuthResTBEX" */
3872&(nid_objs[583]),/* "setct-CapRevReqTBE" */ 3995535, /* "setct-AuthResTBS" */
3873&(nid_objs[584]),/* "setct-CapRevReqTBEX" */ 3996536, /* "setct-AuthResTBSX" */
3874&(nid_objs[547]),/* "setct-CapRevReqTBS" */ 3997528, /* "setct-AuthRevReqBaggage" */
3875&(nid_objs[548]),/* "setct-CapRevReqTBSX" */ 3998577, /* "setct-AuthRevReqTBE" */
3876&(nid_objs[549]),/* "setct-CapRevResData" */ 3999541, /* "setct-AuthRevReqTBS" */
3877&(nid_objs[585]),/* "setct-CapRevResTBE" */ 4000529, /* "setct-AuthRevResBaggage" */
3878&(nid_objs[538]),/* "setct-CapTokenData" */ 4001542, /* "setct-AuthRevResData" */
3879&(nid_objs[530]),/* "setct-CapTokenSeq" */ 4002578, /* "setct-AuthRevResTBE" */
3880&(nid_objs[574]),/* "setct-CapTokenTBE" */ 4003579, /* "setct-AuthRevResTBEB" */
3881&(nid_objs[575]),/* "setct-CapTokenTBEX" */ 4004543, /* "setct-AuthRevResTBS" */
3882&(nid_objs[539]),/* "setct-CapTokenTBS" */ 4005573, /* "setct-AuthTokenTBE" */
3883&(nid_objs[560]),/* "setct-CardCInitResTBS" */ 4006537, /* "setct-AuthTokenTBS" */
3884&(nid_objs[566]),/* "setct-CertInqReqTBS" */ 4007600, /* "setct-BCIDistributionTBS" */
3885&(nid_objs[563]),/* "setct-CertReqData" */ 4008558, /* "setct-BatchAdminReqData" */
3886&(nid_objs[595]),/* "setct-CertReqTBE" */ 4009592, /* "setct-BatchAdminReqTBE" */
3887&(nid_objs[596]),/* "setct-CertReqTBEX" */ 4010559, /* "setct-BatchAdminResData" */
3888&(nid_objs[564]),/* "setct-CertReqTBS" */ 4011593, /* "setct-BatchAdminResTBE" */
3889&(nid_objs[565]),/* "setct-CertResData" */ 4012599, /* "setct-CRLNotificationResTBS" */
3890&(nid_objs[597]),/* "setct-CertResTBE" */ 4013598, /* "setct-CRLNotificationTBS" */
3891&(nid_objs[586]),/* "setct-CredReqTBE" */ 4014580, /* "setct-CapReqTBE" */
3892&(nid_objs[587]),/* "setct-CredReqTBEX" */ 4015581, /* "setct-CapReqTBEX" */
3893&(nid_objs[550]),/* "setct-CredReqTBS" */ 4016544, /* "setct-CapReqTBS" */
3894&(nid_objs[551]),/* "setct-CredReqTBSX" */ 4017545, /* "setct-CapReqTBSX" */
3895&(nid_objs[552]),/* "setct-CredResData" */ 4018546, /* "setct-CapResData" */
3896&(nid_objs[588]),/* "setct-CredResTBE" */ 4019582, /* "setct-CapResTBE" */
3897&(nid_objs[589]),/* "setct-CredRevReqTBE" */ 4020583, /* "setct-CapRevReqTBE" */
3898&(nid_objs[590]),/* "setct-CredRevReqTBEX" */ 4021584, /* "setct-CapRevReqTBEX" */
3899&(nid_objs[553]),/* "setct-CredRevReqTBS" */ 4022547, /* "setct-CapRevReqTBS" */
3900&(nid_objs[554]),/* "setct-CredRevReqTBSX" */ 4023548, /* "setct-CapRevReqTBSX" */
3901&(nid_objs[555]),/* "setct-CredRevResData" */ 4024549, /* "setct-CapRevResData" */
3902&(nid_objs[591]),/* "setct-CredRevResTBE" */ 4025585, /* "setct-CapRevResTBE" */
3903&(nid_objs[567]),/* "setct-ErrorTBS" */ 4026538, /* "setct-CapTokenData" */
3904&(nid_objs[526]),/* "setct-HODInput" */ 4027530, /* "setct-CapTokenSeq" */
3905&(nid_objs[561]),/* "setct-MeAqCInitResTBS" */ 4028574, /* "setct-CapTokenTBE" */
3906&(nid_objs[522]),/* "setct-OIData" */ 4029575, /* "setct-CapTokenTBEX" */
3907&(nid_objs[519]),/* "setct-PANData" */ 4030539, /* "setct-CapTokenTBS" */
3908&(nid_objs[521]),/* "setct-PANOnly" */ 4031560, /* "setct-CardCInitResTBS" */
3909&(nid_objs[520]),/* "setct-PANToken" */ 4032566, /* "setct-CertInqReqTBS" */
3910&(nid_objs[556]),/* "setct-PCertReqData" */ 4033563, /* "setct-CertReqData" */
3911&(nid_objs[557]),/* "setct-PCertResTBS" */ 4034595, /* "setct-CertReqTBE" */
3912&(nid_objs[523]),/* "setct-PI" */ 4035596, /* "setct-CertReqTBEX" */
3913&(nid_objs[532]),/* "setct-PI-TBS" */ 4036564, /* "setct-CertReqTBS" */
3914&(nid_objs[524]),/* "setct-PIData" */ 4037565, /* "setct-CertResData" */
3915&(nid_objs[525]),/* "setct-PIDataUnsigned" */ 4038597, /* "setct-CertResTBE" */
3916&(nid_objs[568]),/* "setct-PIDualSignedTBE" */ 4039586, /* "setct-CredReqTBE" */
3917&(nid_objs[569]),/* "setct-PIUnsignedTBE" */ 4040587, /* "setct-CredReqTBEX" */
3918&(nid_objs[531]),/* "setct-PInitResData" */ 4041550, /* "setct-CredReqTBS" */
3919&(nid_objs[533]),/* "setct-PResData" */ 4042551, /* "setct-CredReqTBSX" */
3920&(nid_objs[594]),/* "setct-RegFormReqTBE" */ 4043552, /* "setct-CredResData" */
3921&(nid_objs[562]),/* "setct-RegFormResTBS" */ 4044588, /* "setct-CredResTBE" */
3922&(nid_objs[604]),/* "setext-pinAny" */ 4045589, /* "setct-CredRevReqTBE" */
3923&(nid_objs[603]),/* "setext-pinSecure" */ 4046590, /* "setct-CredRevReqTBEX" */
3924&(nid_objs[605]),/* "setext-track2" */ 4047553, /* "setct-CredRevReqTBS" */
3925&(nid_objs[41]),/* "sha" */ 4048554, /* "setct-CredRevReqTBSX" */
3926&(nid_objs[64]),/* "sha1" */ 4049555, /* "setct-CredRevResData" */
3927&(nid_objs[115]),/* "sha1WithRSA" */ 4050591, /* "setct-CredRevResTBE" */
3928&(nid_objs[65]),/* "sha1WithRSAEncryption" */ 4051567, /* "setct-ErrorTBS" */
3929&(nid_objs[675]),/* "sha224" */ 4052526, /* "setct-HODInput" */
3930&(nid_objs[671]),/* "sha224WithRSAEncryption" */ 4053561, /* "setct-MeAqCInitResTBS" */
3931&(nid_objs[672]),/* "sha256" */ 4054522, /* "setct-OIData" */
3932&(nid_objs[668]),/* "sha256WithRSAEncryption" */ 4055519, /* "setct-PANData" */
3933&(nid_objs[673]),/* "sha384" */ 4056521, /* "setct-PANOnly" */
3934&(nid_objs[669]),/* "sha384WithRSAEncryption" */ 4057520, /* "setct-PANToken" */
3935&(nid_objs[674]),/* "sha512" */ 4058556, /* "setct-PCertReqData" */
3936&(nid_objs[670]),/* "sha512WithRSAEncryption" */ 4059557, /* "setct-PCertResTBS" */
3937&(nid_objs[42]),/* "shaWithRSAEncryption" */ 4060523, /* "setct-PI" */
3938&(nid_objs[52]),/* "signingTime" */ 4061532, /* "setct-PI-TBS" */
3939&(nid_objs[454]),/* "simpleSecurityObject" */ 4062524, /* "setct-PIData" */
3940&(nid_objs[496]),/* "singleLevelQuality" */ 4063525, /* "setct-PIDataUnsigned" */
3941&(nid_objs[16]),/* "stateOrProvinceName" */ 4064568, /* "setct-PIDualSignedTBE" */
3942&(nid_objs[660]),/* "streetAddress" */ 4065569, /* "setct-PIUnsignedTBE" */
3943&(nid_objs[498]),/* "subtreeMaximumQuality" */ 4066531, /* "setct-PInitResData" */
3944&(nid_objs[497]),/* "subtreeMinimumQuality" */ 4067533, /* "setct-PResData" */
3945&(nid_objs[100]),/* "surname" */ 4068594, /* "setct-RegFormReqTBE" */
3946&(nid_objs[459]),/* "textEncodedORAddress" */ 4069562, /* "setct-RegFormResTBS" */
3947&(nid_objs[293]),/* "textNotice" */ 4070604, /* "setext-pinAny" */
3948&(nid_objs[106]),/* "title" */ 4071603, /* "setext-pinSecure" */
3949&(nid_objs[682]),/* "tpBasis" */ 4072605, /* "setext-track2" */
3950&(nid_objs[436]),/* "ucl" */ 407341, /* "sha" */
3951&(nid_objs[ 0]),/* "undefined" */ 407464, /* "sha1" */
3952&(nid_objs[55]),/* "unstructuredAddress" */ 4075115, /* "sha1WithRSA" */
3953&(nid_objs[49]),/* "unstructuredName" */ 407665, /* "sha1WithRSAEncryption" */
3954&(nid_objs[465]),/* "userClass" */ 4077675, /* "sha224" */
3955&(nid_objs[458]),/* "userId" */ 4078671, /* "sha224WithRSAEncryption" */
3956&(nid_objs[373]),/* "valid" */ 4079672, /* "sha256" */
3957&(nid_objs[678]),/* "wap" */ 4080668, /* "sha256WithRSAEncryption" */
3958&(nid_objs[679]),/* "wap-wsg" */ 4081673, /* "sha384" */
3959&(nid_objs[735]),/* "wap-wsg-idm-ecid-wtls1" */ 4082669, /* "sha384WithRSAEncryption" */
3960&(nid_objs[743]),/* "wap-wsg-idm-ecid-wtls10" */ 4083674, /* "sha512" */
3961&(nid_objs[744]),/* "wap-wsg-idm-ecid-wtls11" */ 4084670, /* "sha512WithRSAEncryption" */
3962&(nid_objs[745]),/* "wap-wsg-idm-ecid-wtls12" */ 408542, /* "shaWithRSAEncryption" */
3963&(nid_objs[736]),/* "wap-wsg-idm-ecid-wtls3" */ 408652, /* "signingTime" */
3964&(nid_objs[737]),/* "wap-wsg-idm-ecid-wtls4" */ 4087454, /* "simpleSecurityObject" */
3965&(nid_objs[738]),/* "wap-wsg-idm-ecid-wtls5" */ 4088496, /* "singleLevelQuality" */
3966&(nid_objs[739]),/* "wap-wsg-idm-ecid-wtls6" */ 408916, /* "stateOrProvinceName" */
3967&(nid_objs[740]),/* "wap-wsg-idm-ecid-wtls7" */ 4090660, /* "streetAddress" */
3968&(nid_objs[741]),/* "wap-wsg-idm-ecid-wtls8" */ 4091498, /* "subtreeMaximumQuality" */
3969&(nid_objs[742]),/* "wap-wsg-idm-ecid-wtls9" */ 4092497, /* "subtreeMinimumQuality" */
3970&(nid_objs[804]),/* "whirlpool" */ 4093890, /* "supportedAlgorithms" */
3971&(nid_objs[503]),/* "x500UniqueIdentifier" */ 4094874, /* "supportedApplicationContext" */
3972&(nid_objs[158]),/* "x509Certificate" */ 4095100, /* "surname" */
3973&(nid_objs[160]),/* "x509Crl" */ 4096864, /* "telephoneNumber" */
3974&(nid_objs[125]),/* "zlib compression" */ 4097866, /* "teletexTerminalIdentifier" */
4098865, /* "telexNumber" */
4099459, /* "textEncodedORAddress" */
4100293, /* "textNotice" */
4101106, /* "title" */
4102682, /* "tpBasis" */
4103436, /* "ucl" */
4104 0, /* "undefined" */
4105888, /* "uniqueMember" */
410655, /* "unstructuredAddress" */
410749, /* "unstructuredName" */
4108880, /* "userCertificate" */
4109465, /* "userClass" */
4110458, /* "userId" */
4111879, /* "userPassword" */
4112373, /* "valid" */
4113678, /* "wap" */
4114679, /* "wap-wsg" */
4115735, /* "wap-wsg-idm-ecid-wtls1" */
4116743, /* "wap-wsg-idm-ecid-wtls10" */
4117744, /* "wap-wsg-idm-ecid-wtls11" */
4118745, /* "wap-wsg-idm-ecid-wtls12" */
4119736, /* "wap-wsg-idm-ecid-wtls3" */
4120737, /* "wap-wsg-idm-ecid-wtls4" */
4121738, /* "wap-wsg-idm-ecid-wtls5" */
4122739, /* "wap-wsg-idm-ecid-wtls6" */
4123740, /* "wap-wsg-idm-ecid-wtls7" */
4124741, /* "wap-wsg-idm-ecid-wtls8" */
4125742, /* "wap-wsg-idm-ecid-wtls9" */
4126804, /* "whirlpool" */
4127868, /* "x121Address" */
4128503, /* "x500UniqueIdentifier" */
4129158, /* "x509Certificate" */
4130160, /* "x509Crl" */
4131125, /* "zlib compression" */
3975}; 4132};
3976 4133
3977static ASN1_OBJECT *obj_objs[NUM_OBJ]={ 4134static const unsigned int obj_objs[NUM_OBJ]={
3978&(nid_objs[ 0]),/* OBJ_undef 0 */ 4135 0, /* OBJ_undef 0 */
3979&(nid_objs[393]),/* OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t */ 4136393, /* OBJ_joint_iso_ccitt OBJ_joint_iso_itu_t */
3980&(nid_objs[404]),/* OBJ_ccitt OBJ_itu_t */ 4137404, /* OBJ_ccitt OBJ_itu_t */
3981&(nid_objs[645]),/* OBJ_itu_t 0 */ 4138645, /* OBJ_itu_t 0 */
3982&(nid_objs[434]),/* OBJ_data 0 9 */ 4139434, /* OBJ_data 0 9 */
3983&(nid_objs[181]),/* OBJ_iso 1 */ 4140181, /* OBJ_iso 1 */
3984&(nid_objs[182]),/* OBJ_member_body 1 2 */ 4141182, /* OBJ_member_body 1 2 */
3985&(nid_objs[379]),/* OBJ_org 1 3 */ 4142379, /* OBJ_org 1 3 */
3986&(nid_objs[676]),/* OBJ_identified_organization 1 3 */ 4143676, /* OBJ_identified_organization 1 3 */
3987&(nid_objs[646]),/* OBJ_joint_iso_itu_t 2 */ 4144646, /* OBJ_joint_iso_itu_t 2 */
3988&(nid_objs[11]),/* OBJ_X500 2 5 */ 414511, /* OBJ_X500 2 5 */
3989&(nid_objs[647]),/* OBJ_international_organizations 2 23 */ 4146647, /* OBJ_international_organizations 2 23 */
3990&(nid_objs[380]),/* OBJ_dod 1 3 6 */ 4147380, /* OBJ_dod 1 3 6 */
3991&(nid_objs[12]),/* OBJ_X509 2 5 4 */ 414812, /* OBJ_X509 2 5 4 */
3992&(nid_objs[378]),/* OBJ_X500algorithms 2 5 8 */ 4149378, /* OBJ_X500algorithms 2 5 8 */
3993&(nid_objs[81]),/* OBJ_id_ce 2 5 29 */ 415081, /* OBJ_id_ce 2 5 29 */
3994&(nid_objs[512]),/* OBJ_id_set 2 23 42 */ 4151512, /* OBJ_id_set 2 23 42 */
3995&(nid_objs[678]),/* OBJ_wap 2 23 43 */ 4152678, /* OBJ_wap 2 23 43 */
3996&(nid_objs[435]),/* OBJ_pss 0 9 2342 */ 4153435, /* OBJ_pss 0 9 2342 */
3997&(nid_objs[183]),/* OBJ_ISO_US 1 2 840 */ 4154183, /* OBJ_ISO_US 1 2 840 */
3998&(nid_objs[381]),/* OBJ_iana 1 3 6 1 */ 4155381, /* OBJ_iana 1 3 6 1 */
3999&(nid_objs[677]),/* OBJ_certicom_arc 1 3 132 */ 4156677, /* OBJ_certicom_arc 1 3 132 */
4000&(nid_objs[394]),/* OBJ_selected_attribute_types 2 5 1 5 */ 4157394, /* OBJ_selected_attribute_types 2 5 1 5 */
4001&(nid_objs[13]),/* OBJ_commonName 2 5 4 3 */ 415813, /* OBJ_commonName 2 5 4 3 */
4002&(nid_objs[100]),/* OBJ_surname 2 5 4 4 */ 4159100, /* OBJ_surname 2 5 4 4 */
4003&(nid_objs[105]),/* OBJ_serialNumber 2 5 4 5 */ 4160105, /* OBJ_serialNumber 2 5 4 5 */
4004&(nid_objs[14]),/* OBJ_countryName 2 5 4 6 */ 416114, /* OBJ_countryName 2 5 4 6 */
4005&(nid_objs[15]),/* OBJ_localityName 2 5 4 7 */ 416215, /* OBJ_localityName 2 5 4 7 */
4006&(nid_objs[16]),/* OBJ_stateOrProvinceName 2 5 4 8 */ 416316, /* OBJ_stateOrProvinceName 2 5 4 8 */
4007&(nid_objs[660]),/* OBJ_streetAddress 2 5 4 9 */ 4164660, /* OBJ_streetAddress 2 5 4 9 */
4008&(nid_objs[17]),/* OBJ_organizationName 2 5 4 10 */ 416517, /* OBJ_organizationName 2 5 4 10 */
4009&(nid_objs[18]),/* OBJ_organizationalUnitName 2 5 4 11 */ 416618, /* OBJ_organizationalUnitName 2 5 4 11 */
4010&(nid_objs[106]),/* OBJ_title 2 5 4 12 */ 4167106, /* OBJ_title 2 5 4 12 */
4011&(nid_objs[107]),/* OBJ_description 2 5 4 13 */ 4168107, /* OBJ_description 2 5 4 13 */
4012&(nid_objs[661]),/* OBJ_postalCode 2 5 4 17 */ 4169859, /* OBJ_searchGuide 2 5 4 14 */
4013&(nid_objs[173]),/* OBJ_name 2 5 4 41 */ 4170860, /* OBJ_businessCategory 2 5 4 15 */
4014&(nid_objs[99]),/* OBJ_givenName 2 5 4 42 */ 4171861, /* OBJ_postalAddress 2 5 4 16 */
4015&(nid_objs[101]),/* OBJ_initials 2 5 4 43 */ 4172661, /* OBJ_postalCode 2 5 4 17 */
4016&(nid_objs[509]),/* OBJ_generationQualifier 2 5 4 44 */ 4173862, /* OBJ_postOfficeBox 2 5 4 18 */
4017&(nid_objs[503]),/* OBJ_x500UniqueIdentifier 2 5 4 45 */ 4174863, /* OBJ_physicalDeliveryOfficeName 2 5 4 19 */
4018&(nid_objs[174]),/* OBJ_dnQualifier 2 5 4 46 */ 4175864, /* OBJ_telephoneNumber 2 5 4 20 */
4019&(nid_objs[510]),/* OBJ_pseudonym 2 5 4 65 */ 4176865, /* OBJ_telexNumber 2 5 4 21 */
4020&(nid_objs[400]),/* OBJ_role 2 5 4 72 */ 4177866, /* OBJ_teletexTerminalIdentifier 2 5 4 22 */
4021&(nid_objs[769]),/* OBJ_subject_directory_attributes 2 5 29 9 */ 4178867, /* OBJ_facsimileTelephoneNumber 2 5 4 23 */
4022&(nid_objs[82]),/* OBJ_subject_key_identifier 2 5 29 14 */ 4179868, /* OBJ_x121Address 2 5 4 24 */
4023&(nid_objs[83]),/* OBJ_key_usage 2 5 29 15 */ 4180869, /* OBJ_internationaliSDNNumber 2 5 4 25 */
4024&(nid_objs[84]),/* OBJ_private_key_usage_period 2 5 29 16 */ 4181870, /* OBJ_registeredAddress 2 5 4 26 */
4025&(nid_objs[85]),/* OBJ_subject_alt_name 2 5 29 17 */ 4182871, /* OBJ_destinationIndicator 2 5 4 27 */
4026&(nid_objs[86]),/* OBJ_issuer_alt_name 2 5 29 18 */ 4183872, /* OBJ_preferredDeliveryMethod 2 5 4 28 */
4027&(nid_objs[87]),/* OBJ_basic_constraints 2 5 29 19 */ 4184873, /* OBJ_presentationAddress 2 5 4 29 */
4028&(nid_objs[88]),/* OBJ_crl_number 2 5 29 20 */ 4185874, /* OBJ_supportedApplicationContext 2 5 4 30 */
4029&(nid_objs[141]),/* OBJ_crl_reason 2 5 29 21 */ 4186875, /* OBJ_member 2 5 4 31 */
4030&(nid_objs[430]),/* OBJ_hold_instruction_code 2 5 29 23 */ 4187876, /* OBJ_owner 2 5 4 32 */
4031&(nid_objs[142]),/* OBJ_invalidity_date 2 5 29 24 */ 4188877, /* OBJ_roleOccupant 2 5 4 33 */
4032&(nid_objs[140]),/* OBJ_delta_crl 2 5 29 27 */ 4189878, /* OBJ_seeAlso 2 5 4 34 */
4033&(nid_objs[770]),/* OBJ_issuing_distribution_point 2 5 29 28 */ 4190879, /* OBJ_userPassword 2 5 4 35 */
4034&(nid_objs[771]),/* OBJ_certificate_issuer 2 5 29 29 */ 4191880, /* OBJ_userCertificate 2 5 4 36 */
4035&(nid_objs[666]),/* OBJ_name_constraints 2 5 29 30 */ 4192881, /* OBJ_cACertificate 2 5 4 37 */
4036&(nid_objs[103]),/* OBJ_crl_distribution_points 2 5 29 31 */ 4193882, /* OBJ_authorityRevocationList 2 5 4 38 */
4037&(nid_objs[89]),/* OBJ_certificate_policies 2 5 29 32 */ 4194883, /* OBJ_certificateRevocationList 2 5 4 39 */
4038&(nid_objs[747]),/* OBJ_policy_mappings 2 5 29 33 */ 4195884, /* OBJ_crossCertificatePair 2 5 4 40 */
4039&(nid_objs[90]),/* OBJ_authority_key_identifier 2 5 29 35 */ 4196173, /* OBJ_name 2 5 4 41 */
4040&(nid_objs[401]),/* OBJ_policy_constraints 2 5 29 36 */ 419799, /* OBJ_givenName 2 5 4 42 */
4041&(nid_objs[126]),/* OBJ_ext_key_usage 2 5 29 37 */ 4198101, /* OBJ_initials 2 5 4 43 */
4042&(nid_objs[857]),/* OBJ_freshest_crl 2 5 29 46 */ 4199509, /* OBJ_generationQualifier 2 5 4 44 */
4043&(nid_objs[748]),/* OBJ_inhibit_any_policy 2 5 29 54 */ 4200503, /* OBJ_x500UniqueIdentifier 2 5 4 45 */
4044&(nid_objs[402]),/* OBJ_target_information 2 5 29 55 */ 4201174, /* OBJ_dnQualifier 2 5 4 46 */
4045&(nid_objs[403]),/* OBJ_no_rev_avail 2 5 29 56 */ 4202885, /* OBJ_enhancedSearchGuide 2 5 4 47 */
4046&(nid_objs[513]),/* OBJ_set_ctype 2 23 42 0 */ 4203886, /* OBJ_protocolInformation 2 5 4 48 */
4047&(nid_objs[514]),/* OBJ_set_msgExt 2 23 42 1 */ 4204887, /* OBJ_distinguishedName 2 5 4 49 */
4048&(nid_objs[515]),/* OBJ_set_attr 2 23 42 3 */ 4205888, /* OBJ_uniqueMember 2 5 4 50 */
4049&(nid_objs[516]),/* OBJ_set_policy 2 23 42 5 */ 4206889, /* OBJ_houseIdentifier 2 5 4 51 */
4050&(nid_objs[517]),/* OBJ_set_certExt 2 23 42 7 */ 4207890, /* OBJ_supportedAlgorithms 2 5 4 52 */
4051&(nid_objs[518]),/* OBJ_set_brand 2 23 42 8 */ 4208891, /* OBJ_deltaRevocationList 2 5 4 53 */
4052&(nid_objs[679]),/* OBJ_wap_wsg 2 23 43 13 */ 4209892, /* OBJ_dmdName 2 5 4 54 */
4053&(nid_objs[382]),/* OBJ_Directory 1 3 6 1 1 */ 4210510, /* OBJ_pseudonym 2 5 4 65 */
4054&(nid_objs[383]),/* OBJ_Management 1 3 6 1 2 */ 4211400, /* OBJ_role 2 5 4 72 */
4055&(nid_objs[384]),/* OBJ_Experimental 1 3 6 1 3 */ 4212769, /* OBJ_subject_directory_attributes 2 5 29 9 */
4056&(nid_objs[385]),/* OBJ_Private 1 3 6 1 4 */ 421382, /* OBJ_subject_key_identifier 2 5 29 14 */
4057&(nid_objs[386]),/* OBJ_Security 1 3 6 1 5 */ 421483, /* OBJ_key_usage 2 5 29 15 */
4058&(nid_objs[387]),/* OBJ_SNMPv2 1 3 6 1 6 */ 421584, /* OBJ_private_key_usage_period 2 5 29 16 */
4059&(nid_objs[388]),/* OBJ_Mail 1 3 6 1 7 */ 421685, /* OBJ_subject_alt_name 2 5 29 17 */
4060&(nid_objs[376]),/* OBJ_algorithm 1 3 14 3 2 */ 421786, /* OBJ_issuer_alt_name 2 5 29 18 */
4061&(nid_objs[395]),/* OBJ_clearance 2 5 1 5 55 */ 421887, /* OBJ_basic_constraints 2 5 29 19 */
4062&(nid_objs[19]),/* OBJ_rsa 2 5 8 1 1 */ 421988, /* OBJ_crl_number 2 5 29 20 */
4063&(nid_objs[96]),/* OBJ_mdc2WithRSA 2 5 8 3 100 */ 4220141, /* OBJ_crl_reason 2 5 29 21 */
4064&(nid_objs[95]),/* OBJ_mdc2 2 5 8 3 101 */ 4221430, /* OBJ_hold_instruction_code 2 5 29 23 */
4065&(nid_objs[746]),/* OBJ_any_policy 2 5 29 32 0 */ 4222142, /* OBJ_invalidity_date 2 5 29 24 */
4066&(nid_objs[519]),/* OBJ_setct_PANData 2 23 42 0 0 */ 4223140, /* OBJ_delta_crl 2 5 29 27 */
4067&(nid_objs[520]),/* OBJ_setct_PANToken 2 23 42 0 1 */ 4224770, /* OBJ_issuing_distribution_point 2 5 29 28 */
4068&(nid_objs[521]),/* OBJ_setct_PANOnly 2 23 42 0 2 */ 4225771, /* OBJ_certificate_issuer 2 5 29 29 */
4069&(nid_objs[522]),/* OBJ_setct_OIData 2 23 42 0 3 */ 4226666, /* OBJ_name_constraints 2 5 29 30 */
4070&(nid_objs[523]),/* OBJ_setct_PI 2 23 42 0 4 */ 4227103, /* OBJ_crl_distribution_points 2 5 29 31 */
4071&(nid_objs[524]),/* OBJ_setct_PIData 2 23 42 0 5 */ 422889, /* OBJ_certificate_policies 2 5 29 32 */
4072&(nid_objs[525]),/* OBJ_setct_PIDataUnsigned 2 23 42 0 6 */ 4229747, /* OBJ_policy_mappings 2 5 29 33 */
4073&(nid_objs[526]),/* OBJ_setct_HODInput 2 23 42 0 7 */ 423090, /* OBJ_authority_key_identifier 2 5 29 35 */
4074&(nid_objs[527]),/* OBJ_setct_AuthResBaggage 2 23 42 0 8 */ 4231401, /* OBJ_policy_constraints 2 5 29 36 */
4075&(nid_objs[528]),/* OBJ_setct_AuthRevReqBaggage 2 23 42 0 9 */ 4232126, /* OBJ_ext_key_usage 2 5 29 37 */
4076&(nid_objs[529]),/* OBJ_setct_AuthRevResBaggage 2 23 42 0 10 */ 4233857, /* OBJ_freshest_crl 2 5 29 46 */
4077&(nid_objs[530]),/* OBJ_setct_CapTokenSeq 2 23 42 0 11 */ 4234748, /* OBJ_inhibit_any_policy 2 5 29 54 */
4078&(nid_objs[531]),/* OBJ_setct_PInitResData 2 23 42 0 12 */ 4235402, /* OBJ_target_information 2 5 29 55 */
4079&(nid_objs[532]),/* OBJ_setct_PI_TBS 2 23 42 0 13 */ 4236403, /* OBJ_no_rev_avail 2 5 29 56 */
4080&(nid_objs[533]),/* OBJ_setct_PResData 2 23 42 0 14 */ 4237513, /* OBJ_set_ctype 2 23 42 0 */
4081&(nid_objs[534]),/* OBJ_setct_AuthReqTBS 2 23 42 0 16 */ 4238514, /* OBJ_set_msgExt 2 23 42 1 */
4082&(nid_objs[535]),/* OBJ_setct_AuthResTBS 2 23 42 0 17 */ 4239515, /* OBJ_set_attr 2 23 42 3 */
4083&(nid_objs[536]),/* OBJ_setct_AuthResTBSX 2 23 42 0 18 */ 4240516, /* OBJ_set_policy 2 23 42 5 */
4084&(nid_objs[537]),/* OBJ_setct_AuthTokenTBS 2 23 42 0 19 */ 4241517, /* OBJ_set_certExt 2 23 42 7 */
4085&(nid_objs[538]),/* OBJ_setct_CapTokenData 2 23 42 0 20 */ 4242518, /* OBJ_set_brand 2 23 42 8 */
4086&(nid_objs[539]),/* OBJ_setct_CapTokenTBS 2 23 42 0 21 */ 4243679, /* OBJ_wap_wsg 2 23 43 1 */
4087&(nid_objs[540]),/* OBJ_setct_AcqCardCodeMsg 2 23 42 0 22 */ 4244382, /* OBJ_Directory 1 3 6 1 1 */
4088&(nid_objs[541]),/* OBJ_setct_AuthRevReqTBS 2 23 42 0 23 */ 4245383, /* OBJ_Management 1 3 6 1 2 */
4089&(nid_objs[542]),/* OBJ_setct_AuthRevResData 2 23 42 0 24 */ 4246384, /* OBJ_Experimental 1 3 6 1 3 */
4090&(nid_objs[543]),/* OBJ_setct_AuthRevResTBS 2 23 42 0 25 */ 4247385, /* OBJ_Private 1 3 6 1 4 */
4091&(nid_objs[544]),/* OBJ_setct_CapReqTBS 2 23 42 0 26 */ 4248386, /* OBJ_Security 1 3 6 1 5 */
4092&(nid_objs[545]),/* OBJ_setct_CapReqTBSX 2 23 42 0 27 */ 4249387, /* OBJ_SNMPv2 1 3 6 1 6 */
4093&(nid_objs[546]),/* OBJ_setct_CapResData 2 23 42 0 28 */ 4250388, /* OBJ_Mail 1 3 6 1 7 */
4094&(nid_objs[547]),/* OBJ_setct_CapRevReqTBS 2 23 42 0 29 */ 4251376, /* OBJ_algorithm 1 3 14 3 2 */
4095&(nid_objs[548]),/* OBJ_setct_CapRevReqTBSX 2 23 42 0 30 */ 4252395, /* OBJ_clearance 2 5 1 5 55 */
4096&(nid_objs[549]),/* OBJ_setct_CapRevResData 2 23 42 0 31 */ 425319, /* OBJ_rsa 2 5 8 1 1 */
4097&(nid_objs[550]),/* OBJ_setct_CredReqTBS 2 23 42 0 32 */ 425496, /* OBJ_mdc2WithRSA 2 5 8 3 100 */
4098&(nid_objs[551]),/* OBJ_setct_CredReqTBSX 2 23 42 0 33 */ 425595, /* OBJ_mdc2 2 5 8 3 101 */
4099&(nid_objs[552]),/* OBJ_setct_CredResData 2 23 42 0 34 */ 4256746, /* OBJ_any_policy 2 5 29 32 0 */
4100&(nid_objs[553]),/* OBJ_setct_CredRevReqTBS 2 23 42 0 35 */ 4257519, /* OBJ_setct_PANData 2 23 42 0 0 */
4101&(nid_objs[554]),/* OBJ_setct_CredRevReqTBSX 2 23 42 0 36 */ 4258520, /* OBJ_setct_PANToken 2 23 42 0 1 */
4102&(nid_objs[555]),/* OBJ_setct_CredRevResData 2 23 42 0 37 */ 4259521, /* OBJ_setct_PANOnly 2 23 42 0 2 */
4103&(nid_objs[556]),/* OBJ_setct_PCertReqData 2 23 42 0 38 */ 4260522, /* OBJ_setct_OIData 2 23 42 0 3 */
4104&(nid_objs[557]),/* OBJ_setct_PCertResTBS 2 23 42 0 39 */ 4261523, /* OBJ_setct_PI 2 23 42 0 4 */
4105&(nid_objs[558]),/* OBJ_setct_BatchAdminReqData 2 23 42 0 40 */ 4262524, /* OBJ_setct_PIData 2 23 42 0 5 */
4106&(nid_objs[559]),/* OBJ_setct_BatchAdminResData 2 23 42 0 41 */ 4263525, /* OBJ_setct_PIDataUnsigned 2 23 42 0 6 */
4107&(nid_objs[560]),/* OBJ_setct_CardCInitResTBS 2 23 42 0 42 */ 4264526, /* OBJ_setct_HODInput 2 23 42 0 7 */
4108&(nid_objs[561]),/* OBJ_setct_MeAqCInitResTBS 2 23 42 0 43 */ 4265527, /* OBJ_setct_AuthResBaggage 2 23 42 0 8 */
4109&(nid_objs[562]),/* OBJ_setct_RegFormResTBS 2 23 42 0 44 */ 4266528, /* OBJ_setct_AuthRevReqBaggage 2 23 42 0 9 */
4110&(nid_objs[563]),/* OBJ_setct_CertReqData 2 23 42 0 45 */ 4267529, /* OBJ_setct_AuthRevResBaggage 2 23 42 0 10 */
4111&(nid_objs[564]),/* OBJ_setct_CertReqTBS 2 23 42 0 46 */ 4268530, /* OBJ_setct_CapTokenSeq 2 23 42 0 11 */
4112&(nid_objs[565]),/* OBJ_setct_CertResData 2 23 42 0 47 */ 4269531, /* OBJ_setct_PInitResData 2 23 42 0 12 */
4113&(nid_objs[566]),/* OBJ_setct_CertInqReqTBS 2 23 42 0 48 */ 4270532, /* OBJ_setct_PI_TBS 2 23 42 0 13 */
4114&(nid_objs[567]),/* OBJ_setct_ErrorTBS 2 23 42 0 49 */ 4271533, /* OBJ_setct_PResData 2 23 42 0 14 */
4115&(nid_objs[568]),/* OBJ_setct_PIDualSignedTBE 2 23 42 0 50 */ 4272534, /* OBJ_setct_AuthReqTBS 2 23 42 0 16 */
4116&(nid_objs[569]),/* OBJ_setct_PIUnsignedTBE 2 23 42 0 51 */ 4273535, /* OBJ_setct_AuthResTBS 2 23 42 0 17 */
4117&(nid_objs[570]),/* OBJ_setct_AuthReqTBE 2 23 42 0 52 */ 4274536, /* OBJ_setct_AuthResTBSX 2 23 42 0 18 */
4118&(nid_objs[571]),/* OBJ_setct_AuthResTBE 2 23 42 0 53 */ 4275537, /* OBJ_setct_AuthTokenTBS 2 23 42 0 19 */
4119&(nid_objs[572]),/* OBJ_setct_AuthResTBEX 2 23 42 0 54 */ 4276538, /* OBJ_setct_CapTokenData 2 23 42 0 20 */
4120&(nid_objs[573]),/* OBJ_setct_AuthTokenTBE 2 23 42 0 55 */ 4277539, /* OBJ_setct_CapTokenTBS 2 23 42 0 21 */
4121&(nid_objs[574]),/* OBJ_setct_CapTokenTBE 2 23 42 0 56 */ 4278540, /* OBJ_setct_AcqCardCodeMsg 2 23 42 0 22 */
4122&(nid_objs[575]),/* OBJ_setct_CapTokenTBEX 2 23 42 0 57 */ 4279541, /* OBJ_setct_AuthRevReqTBS 2 23 42 0 23 */
4123&(nid_objs[576]),/* OBJ_setct_AcqCardCodeMsgTBE 2 23 42 0 58 */ 4280542, /* OBJ_setct_AuthRevResData 2 23 42 0 24 */
4124&(nid_objs[577]),/* OBJ_setct_AuthRevReqTBE 2 23 42 0 59 */ 4281543, /* OBJ_setct_AuthRevResTBS 2 23 42 0 25 */
4125&(nid_objs[578]),/* OBJ_setct_AuthRevResTBE 2 23 42 0 60 */ 4282544, /* OBJ_setct_CapReqTBS 2 23 42 0 26 */
4126&(nid_objs[579]),/* OBJ_setct_AuthRevResTBEB 2 23 42 0 61 */ 4283545, /* OBJ_setct_CapReqTBSX 2 23 42 0 27 */
4127&(nid_objs[580]),/* OBJ_setct_CapReqTBE 2 23 42 0 62 */ 4284546, /* OBJ_setct_CapResData 2 23 42 0 28 */
4128&(nid_objs[581]),/* OBJ_setct_CapReqTBEX 2 23 42 0 63 */ 4285547, /* OBJ_setct_CapRevReqTBS 2 23 42 0 29 */
4129&(nid_objs[582]),/* OBJ_setct_CapResTBE 2 23 42 0 64 */ 4286548, /* OBJ_setct_CapRevReqTBSX 2 23 42 0 30 */
4130&(nid_objs[583]),/* OBJ_setct_CapRevReqTBE 2 23 42 0 65 */ 4287549, /* OBJ_setct_CapRevResData 2 23 42 0 31 */
4131&(nid_objs[584]),/* OBJ_setct_CapRevReqTBEX 2 23 42 0 66 */ 4288550, /* OBJ_setct_CredReqTBS 2 23 42 0 32 */
4132&(nid_objs[585]),/* OBJ_setct_CapRevResTBE 2 23 42 0 67 */ 4289551, /* OBJ_setct_CredReqTBSX 2 23 42 0 33 */
4133&(nid_objs[586]),/* OBJ_setct_CredReqTBE 2 23 42 0 68 */ 4290552, /* OBJ_setct_CredResData 2 23 42 0 34 */
4134&(nid_objs[587]),/* OBJ_setct_CredReqTBEX 2 23 42 0 69 */ 4291553, /* OBJ_setct_CredRevReqTBS 2 23 42 0 35 */
4135&(nid_objs[588]),/* OBJ_setct_CredResTBE 2 23 42 0 70 */ 4292554, /* OBJ_setct_CredRevReqTBSX 2 23 42 0 36 */
4136&(nid_objs[589]),/* OBJ_setct_CredRevReqTBE 2 23 42 0 71 */ 4293555, /* OBJ_setct_CredRevResData 2 23 42 0 37 */
4137&(nid_objs[590]),/* OBJ_setct_CredRevReqTBEX 2 23 42 0 72 */ 4294556, /* OBJ_setct_PCertReqData 2 23 42 0 38 */
4138&(nid_objs[591]),/* OBJ_setct_CredRevResTBE 2 23 42 0 73 */ 4295557, /* OBJ_setct_PCertResTBS 2 23 42 0 39 */
4139&(nid_objs[592]),/* OBJ_setct_BatchAdminReqTBE 2 23 42 0 74 */ 4296558, /* OBJ_setct_BatchAdminReqData 2 23 42 0 40 */
4140&(nid_objs[593]),/* OBJ_setct_BatchAdminResTBE 2 23 42 0 75 */ 4297559, /* OBJ_setct_BatchAdminResData 2 23 42 0 41 */
4141&(nid_objs[594]),/* OBJ_setct_RegFormReqTBE 2 23 42 0 76 */ 4298560, /* OBJ_setct_CardCInitResTBS 2 23 42 0 42 */
4142&(nid_objs[595]),/* OBJ_setct_CertReqTBE 2 23 42 0 77 */ 4299561, /* OBJ_setct_MeAqCInitResTBS 2 23 42 0 43 */
4143&(nid_objs[596]),/* OBJ_setct_CertReqTBEX 2 23 42 0 78 */ 4300562, /* OBJ_setct_RegFormResTBS 2 23 42 0 44 */
4144&(nid_objs[597]),/* OBJ_setct_CertResTBE 2 23 42 0 79 */ 4301563, /* OBJ_setct_CertReqData 2 23 42 0 45 */
4145&(nid_objs[598]),/* OBJ_setct_CRLNotificationTBS 2 23 42 0 80 */ 4302564, /* OBJ_setct_CertReqTBS 2 23 42 0 46 */
4146&(nid_objs[599]),/* OBJ_setct_CRLNotificationResTBS 2 23 42 0 81 */ 4303565, /* OBJ_setct_CertResData 2 23 42 0 47 */
4147&(nid_objs[600]),/* OBJ_setct_BCIDistributionTBS 2 23 42 0 82 */ 4304566, /* OBJ_setct_CertInqReqTBS 2 23 42 0 48 */
4148&(nid_objs[601]),/* OBJ_setext_genCrypt 2 23 42 1 1 */ 4305567, /* OBJ_setct_ErrorTBS 2 23 42 0 49 */
4149&(nid_objs[602]),/* OBJ_setext_miAuth 2 23 42 1 3 */ 4306568, /* OBJ_setct_PIDualSignedTBE 2 23 42 0 50 */
4150&(nid_objs[603]),/* OBJ_setext_pinSecure 2 23 42 1 4 */ 4307569, /* OBJ_setct_PIUnsignedTBE 2 23 42 0 51 */
4151&(nid_objs[604]),/* OBJ_setext_pinAny 2 23 42 1 5 */ 4308570, /* OBJ_setct_AuthReqTBE 2 23 42 0 52 */
4152&(nid_objs[605]),/* OBJ_setext_track2 2 23 42 1 7 */ 4309571, /* OBJ_setct_AuthResTBE 2 23 42 0 53 */
4153&(nid_objs[606]),/* OBJ_setext_cv 2 23 42 1 8 */ 4310572, /* OBJ_setct_AuthResTBEX 2 23 42 0 54 */
4154&(nid_objs[620]),/* OBJ_setAttr_Cert 2 23 42 3 0 */ 4311573, /* OBJ_setct_AuthTokenTBE 2 23 42 0 55 */
4155&(nid_objs[621]),/* OBJ_setAttr_PGWYcap 2 23 42 3 1 */ 4312574, /* OBJ_setct_CapTokenTBE 2 23 42 0 56 */
4156&(nid_objs[622]),/* OBJ_setAttr_TokenType 2 23 42 3 2 */ 4313575, /* OBJ_setct_CapTokenTBEX 2 23 42 0 57 */
4157&(nid_objs[623]),/* OBJ_setAttr_IssCap 2 23 42 3 3 */ 4314576, /* OBJ_setct_AcqCardCodeMsgTBE 2 23 42 0 58 */
4158&(nid_objs[607]),/* OBJ_set_policy_root 2 23 42 5 0 */ 4315577, /* OBJ_setct_AuthRevReqTBE 2 23 42 0 59 */
4159&(nid_objs[608]),/* OBJ_setCext_hashedRoot 2 23 42 7 0 */ 4316578, /* OBJ_setct_AuthRevResTBE 2 23 42 0 60 */
4160&(nid_objs[609]),/* OBJ_setCext_certType 2 23 42 7 1 */ 4317579, /* OBJ_setct_AuthRevResTBEB 2 23 42 0 61 */
4161&(nid_objs[610]),/* OBJ_setCext_merchData 2 23 42 7 2 */ 4318580, /* OBJ_setct_CapReqTBE 2 23 42 0 62 */
4162&(nid_objs[611]),/* OBJ_setCext_cCertRequired 2 23 42 7 3 */ 4319581, /* OBJ_setct_CapReqTBEX 2 23 42 0 63 */
4163&(nid_objs[612]),/* OBJ_setCext_tunneling 2 23 42 7 4 */ 4320582, /* OBJ_setct_CapResTBE 2 23 42 0 64 */
4164&(nid_objs[613]),/* OBJ_setCext_setExt 2 23 42 7 5 */ 4321583, /* OBJ_setct_CapRevReqTBE 2 23 42 0 65 */
4165&(nid_objs[614]),/* OBJ_setCext_setQualf 2 23 42 7 6 */ 4322584, /* OBJ_setct_CapRevReqTBEX 2 23 42 0 66 */
4166&(nid_objs[615]),/* OBJ_setCext_PGWYcapabilities 2 23 42 7 7 */ 4323585, /* OBJ_setct_CapRevResTBE 2 23 42 0 67 */
4167&(nid_objs[616]),/* OBJ_setCext_TokenIdentifier 2 23 42 7 8 */ 4324586, /* OBJ_setct_CredReqTBE 2 23 42 0 68 */
4168&(nid_objs[617]),/* OBJ_setCext_Track2Data 2 23 42 7 9 */ 4325587, /* OBJ_setct_CredReqTBEX 2 23 42 0 69 */
4169&(nid_objs[618]),/* OBJ_setCext_TokenType 2 23 42 7 10 */ 4326588, /* OBJ_setct_CredResTBE 2 23 42 0 70 */
4170&(nid_objs[619]),/* OBJ_setCext_IssuerCapabilities 2 23 42 7 11 */ 4327589, /* OBJ_setct_CredRevReqTBE 2 23 42 0 71 */
4171&(nid_objs[636]),/* OBJ_set_brand_IATA_ATA 2 23 42 8 1 */ 4328590, /* OBJ_setct_CredRevReqTBEX 2 23 42 0 72 */
4172&(nid_objs[640]),/* OBJ_set_brand_Visa 2 23 42 8 4 */ 4329591, /* OBJ_setct_CredRevResTBE 2 23 42 0 73 */
4173&(nid_objs[641]),/* OBJ_set_brand_MasterCard 2 23 42 8 5 */ 4330592, /* OBJ_setct_BatchAdminReqTBE 2 23 42 0 74 */
4174&(nid_objs[637]),/* OBJ_set_brand_Diners 2 23 42 8 30 */ 4331593, /* OBJ_setct_BatchAdminResTBE 2 23 42 0 75 */
4175&(nid_objs[638]),/* OBJ_set_brand_AmericanExpress 2 23 42 8 34 */ 4332594, /* OBJ_setct_RegFormReqTBE 2 23 42 0 76 */
4176&(nid_objs[639]),/* OBJ_set_brand_JCB 2 23 42 8 35 */ 4333595, /* OBJ_setct_CertReqTBE 2 23 42 0 77 */
4177&(nid_objs[805]),/* OBJ_cryptopro 1 2 643 2 2 */ 4334596, /* OBJ_setct_CertReqTBEX 2 23 42 0 78 */
4178&(nid_objs[806]),/* OBJ_cryptocom 1 2 643 2 9 */ 4335597, /* OBJ_setct_CertResTBE 2 23 42 0 79 */
4179&(nid_objs[184]),/* OBJ_X9_57 1 2 840 10040 */ 4336598, /* OBJ_setct_CRLNotificationTBS 2 23 42 0 80 */
4180&(nid_objs[405]),/* OBJ_ansi_X9_62 1 2 840 10045 */ 4337599, /* OBJ_setct_CRLNotificationResTBS 2 23 42 0 81 */
4181&(nid_objs[389]),/* OBJ_Enterprises 1 3 6 1 4 1 */ 4338600, /* OBJ_setct_BCIDistributionTBS 2 23 42 0 82 */
4182&(nid_objs[504]),/* OBJ_mime_mhs 1 3 6 1 7 1 */ 4339601, /* OBJ_setext_genCrypt 2 23 42 1 1 */
4183&(nid_objs[104]),/* OBJ_md5WithRSA 1 3 14 3 2 3 */ 4340602, /* OBJ_setext_miAuth 2 23 42 1 3 */
4184&(nid_objs[29]),/* OBJ_des_ecb 1 3 14 3 2 6 */ 4341603, /* OBJ_setext_pinSecure 2 23 42 1 4 */
4185&(nid_objs[31]),/* OBJ_des_cbc 1 3 14 3 2 7 */ 4342604, /* OBJ_setext_pinAny 2 23 42 1 5 */
4186&(nid_objs[45]),/* OBJ_des_ofb64 1 3 14 3 2 8 */ 4343605, /* OBJ_setext_track2 2 23 42 1 7 */
4187&(nid_objs[30]),/* OBJ_des_cfb64 1 3 14 3 2 9 */ 4344606, /* OBJ_setext_cv 2 23 42 1 8 */
4188&(nid_objs[377]),/* OBJ_rsaSignature 1 3 14 3 2 11 */ 4345620, /* OBJ_setAttr_Cert 2 23 42 3 0 */
4189&(nid_objs[67]),/* OBJ_dsa_2 1 3 14 3 2 12 */ 4346621, /* OBJ_setAttr_PGWYcap 2 23 42 3 1 */
4190&(nid_objs[66]),/* OBJ_dsaWithSHA 1 3 14 3 2 13 */ 4347622, /* OBJ_setAttr_TokenType 2 23 42 3 2 */
4191&(nid_objs[42]),/* OBJ_shaWithRSAEncryption 1 3 14 3 2 15 */ 4348623, /* OBJ_setAttr_IssCap 2 23 42 3 3 */
4192&(nid_objs[32]),/* OBJ_des_ede_ecb 1 3 14 3 2 17 */ 4349607, /* OBJ_set_policy_root 2 23 42 5 0 */
4193&(nid_objs[41]),/* OBJ_sha 1 3 14 3 2 18 */ 4350608, /* OBJ_setCext_hashedRoot 2 23 42 7 0 */
4194&(nid_objs[64]),/* OBJ_sha1 1 3 14 3 2 26 */ 4351609, /* OBJ_setCext_certType 2 23 42 7 1 */
4195&(nid_objs[70]),/* OBJ_dsaWithSHA1_2 1 3 14 3 2 27 */ 4352610, /* OBJ_setCext_merchData 2 23 42 7 2 */
4196&(nid_objs[115]),/* OBJ_sha1WithRSA 1 3 14 3 2 29 */ 4353611, /* OBJ_setCext_cCertRequired 2 23 42 7 3 */
4197&(nid_objs[117]),/* OBJ_ripemd160 1 3 36 3 2 1 */ 4354612, /* OBJ_setCext_tunneling 2 23 42 7 4 */
4198&(nid_objs[143]),/* OBJ_sxnet 1 3 101 1 4 1 */ 4355613, /* OBJ_setCext_setExt 2 23 42 7 5 */
4199&(nid_objs[721]),/* OBJ_sect163k1 1 3 132 0 1 */ 4356614, /* OBJ_setCext_setQualf 2 23 42 7 6 */
4200&(nid_objs[722]),/* OBJ_sect163r1 1 3 132 0 2 */ 4357615, /* OBJ_setCext_PGWYcapabilities 2 23 42 7 7 */
4201&(nid_objs[728]),/* OBJ_sect239k1 1 3 132 0 3 */ 4358616, /* OBJ_setCext_TokenIdentifier 2 23 42 7 8 */
4202&(nid_objs[717]),/* OBJ_sect113r1 1 3 132 0 4 */ 4359617, /* OBJ_setCext_Track2Data 2 23 42 7 9 */
4203&(nid_objs[718]),/* OBJ_sect113r2 1 3 132 0 5 */ 4360618, /* OBJ_setCext_TokenType 2 23 42 7 10 */
4204&(nid_objs[704]),/* OBJ_secp112r1 1 3 132 0 6 */ 4361619, /* OBJ_setCext_IssuerCapabilities 2 23 42 7 11 */
4205&(nid_objs[705]),/* OBJ_secp112r2 1 3 132 0 7 */ 4362636, /* OBJ_set_brand_IATA_ATA 2 23 42 8 1 */
4206&(nid_objs[709]),/* OBJ_secp160r1 1 3 132 0 8 */ 4363640, /* OBJ_set_brand_Visa 2 23 42 8 4 */
4207&(nid_objs[708]),/* OBJ_secp160k1 1 3 132 0 9 */ 4364641, /* OBJ_set_brand_MasterCard 2 23 42 8 5 */
4208&(nid_objs[714]),/* OBJ_secp256k1 1 3 132 0 10 */ 4365637, /* OBJ_set_brand_Diners 2 23 42 8 30 */
4209&(nid_objs[723]),/* OBJ_sect163r2 1 3 132 0 15 */ 4366638, /* OBJ_set_brand_AmericanExpress 2 23 42 8 34 */
4210&(nid_objs[729]),/* OBJ_sect283k1 1 3 132 0 16 */ 4367639, /* OBJ_set_brand_JCB 2 23 42 8 35 */
4211&(nid_objs[730]),/* OBJ_sect283r1 1 3 132 0 17 */ 4368805, /* OBJ_cryptopro 1 2 643 2 2 */
4212&(nid_objs[719]),/* OBJ_sect131r1 1 3 132 0 22 */ 4369806, /* OBJ_cryptocom 1 2 643 2 9 */
4213&(nid_objs[720]),/* OBJ_sect131r2 1 3 132 0 23 */ 4370184, /* OBJ_X9_57 1 2 840 10040 */
4214&(nid_objs[724]),/* OBJ_sect193r1 1 3 132 0 24 */ 4371405, /* OBJ_ansi_X9_62 1 2 840 10045 */
4215&(nid_objs[725]),/* OBJ_sect193r2 1 3 132 0 25 */ 4372389, /* OBJ_Enterprises 1 3 6 1 4 1 */
4216&(nid_objs[726]),/* OBJ_sect233k1 1 3 132 0 26 */ 4373504, /* OBJ_mime_mhs 1 3 6 1 7 1 */
4217&(nid_objs[727]),/* OBJ_sect233r1 1 3 132 0 27 */ 4374104, /* OBJ_md5WithRSA 1 3 14 3 2 3 */
4218&(nid_objs[706]),/* OBJ_secp128r1 1 3 132 0 28 */ 437529, /* OBJ_des_ecb 1 3 14 3 2 6 */
4219&(nid_objs[707]),/* OBJ_secp128r2 1 3 132 0 29 */ 437631, /* OBJ_des_cbc 1 3 14 3 2 7 */
4220&(nid_objs[710]),/* OBJ_secp160r2 1 3 132 0 30 */ 437745, /* OBJ_des_ofb64 1 3 14 3 2 8 */
4221&(nid_objs[711]),/* OBJ_secp192k1 1 3 132 0 31 */ 437830, /* OBJ_des_cfb64 1 3 14 3 2 9 */
4222&(nid_objs[712]),/* OBJ_secp224k1 1 3 132 0 32 */ 4379377, /* OBJ_rsaSignature 1 3 14 3 2 11 */
4223&(nid_objs[713]),/* OBJ_secp224r1 1 3 132 0 33 */ 438067, /* OBJ_dsa_2 1 3 14 3 2 12 */
4224&(nid_objs[715]),/* OBJ_secp384r1 1 3 132 0 34 */ 438166, /* OBJ_dsaWithSHA 1 3 14 3 2 13 */
4225&(nid_objs[716]),/* OBJ_secp521r1 1 3 132 0 35 */ 438242, /* OBJ_shaWithRSAEncryption 1 3 14 3 2 15 */
4226&(nid_objs[731]),/* OBJ_sect409k1 1 3 132 0 36 */ 438332, /* OBJ_des_ede_ecb 1 3 14 3 2 17 */
4227&(nid_objs[732]),/* OBJ_sect409r1 1 3 132 0 37 */ 438441, /* OBJ_sha 1 3 14 3 2 18 */
4228&(nid_objs[733]),/* OBJ_sect571k1 1 3 132 0 38 */ 438564, /* OBJ_sha1 1 3 14 3 2 26 */
4229&(nid_objs[734]),/* OBJ_sect571r1 1 3 132 0 39 */ 438670, /* OBJ_dsaWithSHA1_2 1 3 14 3 2 27 */
4230&(nid_objs[624]),/* OBJ_set_rootKeyThumb 2 23 42 3 0 0 */ 4387115, /* OBJ_sha1WithRSA 1 3 14 3 2 29 */
4231&(nid_objs[625]),/* OBJ_set_addPolicy 2 23 42 3 0 1 */ 4388117, /* OBJ_ripemd160 1 3 36 3 2 1 */
4232&(nid_objs[626]),/* OBJ_setAttr_Token_EMV 2 23 42 3 2 1 */ 4389143, /* OBJ_sxnet 1 3 101 1 4 1 */
4233&(nid_objs[627]),/* OBJ_setAttr_Token_B0Prime 2 23 42 3 2 2 */ 4390721, /* OBJ_sect163k1 1 3 132 0 1 */
4234&(nid_objs[628]),/* OBJ_setAttr_IssCap_CVM 2 23 42 3 3 3 */ 4391722, /* OBJ_sect163r1 1 3 132 0 2 */
4235&(nid_objs[629]),/* OBJ_setAttr_IssCap_T2 2 23 42 3 3 4 */ 4392728, /* OBJ_sect239k1 1 3 132 0 3 */
4236&(nid_objs[630]),/* OBJ_setAttr_IssCap_Sig 2 23 42 3 3 5 */ 4393717, /* OBJ_sect113r1 1 3 132 0 4 */
4237&(nid_objs[642]),/* OBJ_set_brand_Novus 2 23 42 8 6011 */ 4394718, /* OBJ_sect113r2 1 3 132 0 5 */
4238&(nid_objs[735]),/* OBJ_wap_wsg_idm_ecid_wtls1 2 23 43 13 4 1 */ 4395704, /* OBJ_secp112r1 1 3 132 0 6 */
4239&(nid_objs[736]),/* OBJ_wap_wsg_idm_ecid_wtls3 2 23 43 13 4 3 */ 4396705, /* OBJ_secp112r2 1 3 132 0 7 */
4240&(nid_objs[737]),/* OBJ_wap_wsg_idm_ecid_wtls4 2 23 43 13 4 4 */ 4397709, /* OBJ_secp160r1 1 3 132 0 8 */
4241&(nid_objs[738]),/* OBJ_wap_wsg_idm_ecid_wtls5 2 23 43 13 4 5 */ 4398708, /* OBJ_secp160k1 1 3 132 0 9 */
4242&(nid_objs[739]),/* OBJ_wap_wsg_idm_ecid_wtls6 2 23 43 13 4 6 */ 4399714, /* OBJ_secp256k1 1 3 132 0 10 */
4243&(nid_objs[740]),/* OBJ_wap_wsg_idm_ecid_wtls7 2 23 43 13 4 7 */ 4400723, /* OBJ_sect163r2 1 3 132 0 15 */
4244&(nid_objs[741]),/* OBJ_wap_wsg_idm_ecid_wtls8 2 23 43 13 4 8 */ 4401729, /* OBJ_sect283k1 1 3 132 0 16 */
4245&(nid_objs[742]),/* OBJ_wap_wsg_idm_ecid_wtls9 2 23 43 13 4 9 */ 4402730, /* OBJ_sect283r1 1 3 132 0 17 */
4246&(nid_objs[743]),/* OBJ_wap_wsg_idm_ecid_wtls10 2 23 43 13 4 10 */ 4403719, /* OBJ_sect131r1 1 3 132 0 22 */
4247&(nid_objs[744]),/* OBJ_wap_wsg_idm_ecid_wtls11 2 23 43 13 4 11 */ 4404720, /* OBJ_sect131r2 1 3 132 0 23 */
4248&(nid_objs[745]),/* OBJ_wap_wsg_idm_ecid_wtls12 2 23 43 13 4 12 */ 4405724, /* OBJ_sect193r1 1 3 132 0 24 */
4249&(nid_objs[804]),/* OBJ_whirlpool 1 0 10118 3 0 55 */ 4406725, /* OBJ_sect193r2 1 3 132 0 25 */
4250&(nid_objs[124]),/* OBJ_rle_compression 1 1 1 1 666 1 */ 4407726, /* OBJ_sect233k1 1 3 132 0 26 */
4251&(nid_objs[773]),/* OBJ_kisa 1 2 410 200004 */ 4408727, /* OBJ_sect233r1 1 3 132 0 27 */
4252&(nid_objs[807]),/* OBJ_id_GostR3411_94_with_GostR3410_2001 1 2 643 2 2 3 */ 4409706, /* OBJ_secp128r1 1 3 132 0 28 */
4253&(nid_objs[808]),/* OBJ_id_GostR3411_94_with_GostR3410_94 1 2 643 2 2 4 */ 4410707, /* OBJ_secp128r2 1 3 132 0 29 */
4254&(nid_objs[809]),/* OBJ_id_GostR3411_94 1 2 643 2 2 9 */ 4411710, /* OBJ_secp160r2 1 3 132 0 30 */
4255&(nid_objs[810]),/* OBJ_id_HMACGostR3411_94 1 2 643 2 2 10 */ 4412711, /* OBJ_secp192k1 1 3 132 0 31 */
4256&(nid_objs[811]),/* OBJ_id_GostR3410_2001 1 2 643 2 2 19 */ 4413712, /* OBJ_secp224k1 1 3 132 0 32 */
4257&(nid_objs[812]),/* OBJ_id_GostR3410_94 1 2 643 2 2 20 */ 4414713, /* OBJ_secp224r1 1 3 132 0 33 */
4258&(nid_objs[813]),/* OBJ_id_Gost28147_89 1 2 643 2 2 21 */ 4415715, /* OBJ_secp384r1 1 3 132 0 34 */
4259&(nid_objs[815]),/* OBJ_id_Gost28147_89_MAC 1 2 643 2 2 22 */ 4416716, /* OBJ_secp521r1 1 3 132 0 35 */
4260&(nid_objs[816]),/* OBJ_id_GostR3411_94_prf 1 2 643 2 2 23 */ 4417731, /* OBJ_sect409k1 1 3 132 0 36 */
4261&(nid_objs[817]),/* OBJ_id_GostR3410_2001DH 1 2 643 2 2 98 */ 4418732, /* OBJ_sect409r1 1 3 132 0 37 */
4262&(nid_objs[818]),/* OBJ_id_GostR3410_94DH 1 2 643 2 2 99 */ 4419733, /* OBJ_sect571k1 1 3 132 0 38 */
4263&(nid_objs[ 1]),/* OBJ_rsadsi 1 2 840 113549 */ 4420734, /* OBJ_sect571r1 1 3 132 0 39 */
4264&(nid_objs[185]),/* OBJ_X9cm 1 2 840 10040 4 */ 4421624, /* OBJ_set_rootKeyThumb 2 23 42 3 0 0 */
4265&(nid_objs[127]),/* OBJ_id_pkix 1 3 6 1 5 5 7 */ 4422625, /* OBJ_set_addPolicy 2 23 42 3 0 1 */
4266&(nid_objs[505]),/* OBJ_mime_mhs_headings 1 3 6 1 7 1 1 */ 4423626, /* OBJ_setAttr_Token_EMV 2 23 42 3 2 1 */
4267&(nid_objs[506]),/* OBJ_mime_mhs_bodies 1 3 6 1 7 1 2 */ 4424627, /* OBJ_setAttr_Token_B0Prime 2 23 42 3 2 2 */
4268&(nid_objs[119]),/* OBJ_ripemd160WithRSA 1 3 36 3 3 1 2 */ 4425628, /* OBJ_setAttr_IssCap_CVM 2 23 42 3 3 3 */
4269&(nid_objs[631]),/* OBJ_setAttr_GenCryptgrm 2 23 42 3 3 3 1 */ 4426629, /* OBJ_setAttr_IssCap_T2 2 23 42 3 3 4 */
4270&(nid_objs[632]),/* OBJ_setAttr_T2Enc 2 23 42 3 3 4 1 */ 4427630, /* OBJ_setAttr_IssCap_Sig 2 23 42 3 3 5 */
4271&(nid_objs[633]),/* OBJ_setAttr_T2cleartxt 2 23 42 3 3 4 2 */ 4428642, /* OBJ_set_brand_Novus 2 23 42 8 6011 */
4272&(nid_objs[634]),/* OBJ_setAttr_TokICCsig 2 23 42 3 3 5 1 */ 4429735, /* OBJ_wap_wsg_idm_ecid_wtls1 2 23 43 1 4 1 */
4273&(nid_objs[635]),/* OBJ_setAttr_SecDevSig 2 23 42 3 3 5 2 */ 4430736, /* OBJ_wap_wsg_idm_ecid_wtls3 2 23 43 1 4 3 */
4274&(nid_objs[436]),/* OBJ_ucl 0 9 2342 19200300 */ 4431737, /* OBJ_wap_wsg_idm_ecid_wtls4 2 23 43 1 4 4 */
4275&(nid_objs[820]),/* OBJ_id_Gost28147_89_None_KeyMeshing 1 2 643 2 2 14 0 */ 4432738, /* OBJ_wap_wsg_idm_ecid_wtls5 2 23 43 1 4 5 */
4276&(nid_objs[819]),/* OBJ_id_Gost28147_89_CryptoPro_KeyMeshing 1 2 643 2 2 14 1 */ 4433739, /* OBJ_wap_wsg_idm_ecid_wtls6 2 23 43 1 4 6 */
4277&(nid_objs[845]),/* OBJ_id_GostR3410_94_a 1 2 643 2 2 20 1 */ 4434740, /* OBJ_wap_wsg_idm_ecid_wtls7 2 23 43 1 4 7 */
4278&(nid_objs[846]),/* OBJ_id_GostR3410_94_aBis 1 2 643 2 2 20 2 */ 4435741, /* OBJ_wap_wsg_idm_ecid_wtls8 2 23 43 1 4 8 */
4279&(nid_objs[847]),/* OBJ_id_GostR3410_94_b 1 2 643 2 2 20 3 */ 4436742, /* OBJ_wap_wsg_idm_ecid_wtls9 2 23 43 1 4 9 */
4280&(nid_objs[848]),/* OBJ_id_GostR3410_94_bBis 1 2 643 2 2 20 4 */ 4437743, /* OBJ_wap_wsg_idm_ecid_wtls10 2 23 43 1 4 10 */
4281&(nid_objs[821]),/* OBJ_id_GostR3411_94_TestParamSet 1 2 643 2 2 30 0 */ 4438744, /* OBJ_wap_wsg_idm_ecid_wtls11 2 23 43 1 4 11 */
4282&(nid_objs[822]),/* OBJ_id_GostR3411_94_CryptoProParamSet 1 2 643 2 2 30 1 */ 4439745, /* OBJ_wap_wsg_idm_ecid_wtls12 2 23 43 1 4 12 */
4283&(nid_objs[823]),/* OBJ_id_Gost28147_89_TestParamSet 1 2 643 2 2 31 0 */ 4440804, /* OBJ_whirlpool 1 0 10118 3 0 55 */
4284&(nid_objs[824]),/* OBJ_id_Gost28147_89_CryptoPro_A_ParamSet 1 2 643 2 2 31 1 */ 4441124, /* OBJ_rle_compression 1 1 1 1 666 1 */
4285&(nid_objs[825]),/* OBJ_id_Gost28147_89_CryptoPro_B_ParamSet 1 2 643 2 2 31 2 */ 4442773, /* OBJ_kisa 1 2 410 200004 */
4286&(nid_objs[826]),/* OBJ_id_Gost28147_89_CryptoPro_C_ParamSet 1 2 643 2 2 31 3 */ 4443807, /* OBJ_id_GostR3411_94_with_GostR3410_2001 1 2 643 2 2 3 */
4287&(nid_objs[827]),/* OBJ_id_Gost28147_89_CryptoPro_D_ParamSet 1 2 643 2 2 31 4 */ 4444808, /* OBJ_id_GostR3411_94_with_GostR3410_94 1 2 643 2 2 4 */
4288&(nid_objs[828]),/* OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 1 2 643 2 2 31 5 */ 4445809, /* OBJ_id_GostR3411_94 1 2 643 2 2 9 */
4289&(nid_objs[829]),/* OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 1 2 643 2 2 31 6 */ 4446810, /* OBJ_id_HMACGostR3411_94 1 2 643 2 2 10 */
4290&(nid_objs[830]),/* OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 1 2 643 2 2 31 7 */ 4447811, /* OBJ_id_GostR3410_2001 1 2 643 2 2 19 */
4291&(nid_objs[831]),/* OBJ_id_GostR3410_94_TestParamSet 1 2 643 2 2 32 0 */ 4448812, /* OBJ_id_GostR3410_94 1 2 643 2 2 20 */
4292&(nid_objs[832]),/* OBJ_id_GostR3410_94_CryptoPro_A_ParamSet 1 2 643 2 2 32 2 */ 4449813, /* OBJ_id_Gost28147_89 1 2 643 2 2 21 */
4293&(nid_objs[833]),/* OBJ_id_GostR3410_94_CryptoPro_B_ParamSet 1 2 643 2 2 32 3 */ 4450815, /* OBJ_id_Gost28147_89_MAC 1 2 643 2 2 22 */
4294&(nid_objs[834]),/* OBJ_id_GostR3410_94_CryptoPro_C_ParamSet 1 2 643 2 2 32 4 */ 4451816, /* OBJ_id_GostR3411_94_prf 1 2 643 2 2 23 */
4295&(nid_objs[835]),/* OBJ_id_GostR3410_94_CryptoPro_D_ParamSet 1 2 643 2 2 32 5 */ 4452817, /* OBJ_id_GostR3410_2001DH 1 2 643 2 2 98 */
4296&(nid_objs[836]),/* OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet 1 2 643 2 2 33 1 */ 4453818, /* OBJ_id_GostR3410_94DH 1 2 643 2 2 99 */
4297&(nid_objs[837]),/* OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet 1 2 643 2 2 33 2 */ 4454 1, /* OBJ_rsadsi 1 2 840 113549 */
4298&(nid_objs[838]),/* OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet 1 2 643 2 2 33 3 */ 4455185, /* OBJ_X9cm 1 2 840 10040 4 */
4299&(nid_objs[839]),/* OBJ_id_GostR3410_2001_TestParamSet 1 2 643 2 2 35 0 */ 4456127, /* OBJ_id_pkix 1 3 6 1 5 5 7 */
4300&(nid_objs[840]),/* OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet 1 2 643 2 2 35 1 */ 4457505, /* OBJ_mime_mhs_headings 1 3 6 1 7 1 1 */
4301&(nid_objs[841]),/* OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet 1 2 643 2 2 35 2 */ 4458506, /* OBJ_mime_mhs_bodies 1 3 6 1 7 1 2 */
4302&(nid_objs[842]),/* OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet 1 2 643 2 2 35 3 */ 4459119, /* OBJ_ripemd160WithRSA 1 3 36 3 3 1 2 */
4303&(nid_objs[843]),/* OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet 1 2 643 2 2 36 0 */ 4460631, /* OBJ_setAttr_GenCryptgrm 2 23 42 3 3 3 1 */
4304&(nid_objs[844]),/* OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet 1 2 643 2 2 36 1 */ 4461632, /* OBJ_setAttr_T2Enc 2 23 42 3 3 4 1 */
4305&(nid_objs[ 2]),/* OBJ_pkcs 1 2 840 113549 1 */ 4462633, /* OBJ_setAttr_T2cleartxt 2 23 42 3 3 4 2 */
4306&(nid_objs[431]),/* OBJ_hold_instruction_none 1 2 840 10040 2 1 */ 4463634, /* OBJ_setAttr_TokICCsig 2 23 42 3 3 5 1 */
4307&(nid_objs[432]),/* OBJ_hold_instruction_call_issuer 1 2 840 10040 2 2 */ 4464635, /* OBJ_setAttr_SecDevSig 2 23 42 3 3 5 2 */
4308&(nid_objs[433]),/* OBJ_hold_instruction_reject 1 2 840 10040 2 3 */ 4465436, /* OBJ_ucl 0 9 2342 19200300 */
4309&(nid_objs[116]),/* OBJ_dsa 1 2 840 10040 4 1 */ 4466820, /* OBJ_id_Gost28147_89_None_KeyMeshing 1 2 643 2 2 14 0 */
4310&(nid_objs[113]),/* OBJ_dsaWithSHA1 1 2 840 10040 4 3 */ 4467819, /* OBJ_id_Gost28147_89_CryptoPro_KeyMeshing 1 2 643 2 2 14 1 */
4311&(nid_objs[406]),/* OBJ_X9_62_prime_field 1 2 840 10045 1 1 */ 4468845, /* OBJ_id_GostR3410_94_a 1 2 643 2 2 20 1 */
4312&(nid_objs[407]),/* OBJ_X9_62_characteristic_two_field 1 2 840 10045 1 2 */ 4469846, /* OBJ_id_GostR3410_94_aBis 1 2 643 2 2 20 2 */
4313&(nid_objs[408]),/* OBJ_X9_62_id_ecPublicKey 1 2 840 10045 2 1 */ 4470847, /* OBJ_id_GostR3410_94_b 1 2 643 2 2 20 3 */
4314&(nid_objs[416]),/* OBJ_ecdsa_with_SHA1 1 2 840 10045 4 1 */ 4471848, /* OBJ_id_GostR3410_94_bBis 1 2 643 2 2 20 4 */
4315&(nid_objs[791]),/* OBJ_ecdsa_with_Recommended 1 2 840 10045 4 2 */ 4472821, /* OBJ_id_GostR3411_94_TestParamSet 1 2 643 2 2 30 0 */
4316&(nid_objs[792]),/* OBJ_ecdsa_with_Specified 1 2 840 10045 4 3 */ 4473822, /* OBJ_id_GostR3411_94_CryptoProParamSet 1 2 643 2 2 30 1 */
4317&(nid_objs[258]),/* OBJ_id_pkix_mod 1 3 6 1 5 5 7 0 */ 4474823, /* OBJ_id_Gost28147_89_TestParamSet 1 2 643 2 2 31 0 */
4318&(nid_objs[175]),/* OBJ_id_pe 1 3 6 1 5 5 7 1 */ 4475824, /* OBJ_id_Gost28147_89_CryptoPro_A_ParamSet 1 2 643 2 2 31 1 */
4319&(nid_objs[259]),/* OBJ_id_qt 1 3 6 1 5 5 7 2 */ 4476825, /* OBJ_id_Gost28147_89_CryptoPro_B_ParamSet 1 2 643 2 2 31 2 */
4320&(nid_objs[128]),/* OBJ_id_kp 1 3 6 1 5 5 7 3 */ 4477826, /* OBJ_id_Gost28147_89_CryptoPro_C_ParamSet 1 2 643 2 2 31 3 */
4321&(nid_objs[260]),/* OBJ_id_it 1 3 6 1 5 5 7 4 */ 4478827, /* OBJ_id_Gost28147_89_CryptoPro_D_ParamSet 1 2 643 2 2 31 4 */
4322&(nid_objs[261]),/* OBJ_id_pkip 1 3 6 1 5 5 7 5 */ 4479828, /* OBJ_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet 1 2 643 2 2 31 5 */
4323&(nid_objs[262]),/* OBJ_id_alg 1 3 6 1 5 5 7 6 */ 4480829, /* OBJ_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet 1 2 643 2 2 31 6 */
4324&(nid_objs[263]),/* OBJ_id_cmc 1 3 6 1 5 5 7 7 */ 4481830, /* OBJ_id_Gost28147_89_CryptoPro_RIC_1_ParamSet 1 2 643 2 2 31 7 */
4325&(nid_objs[264]),/* OBJ_id_on 1 3 6 1 5 5 7 8 */ 4482831, /* OBJ_id_GostR3410_94_TestParamSet 1 2 643 2 2 32 0 */
4326&(nid_objs[265]),/* OBJ_id_pda 1 3 6 1 5 5 7 9 */ 4483832, /* OBJ_id_GostR3410_94_CryptoPro_A_ParamSet 1 2 643 2 2 32 2 */
4327&(nid_objs[266]),/* OBJ_id_aca 1 3 6 1 5 5 7 10 */ 4484833, /* OBJ_id_GostR3410_94_CryptoPro_B_ParamSet 1 2 643 2 2 32 3 */
4328&(nid_objs[267]),/* OBJ_id_qcs 1 3 6 1 5 5 7 11 */ 4485834, /* OBJ_id_GostR3410_94_CryptoPro_C_ParamSet 1 2 643 2 2 32 4 */
4329&(nid_objs[268]),/* OBJ_id_cct 1 3 6 1 5 5 7 12 */ 4486835, /* OBJ_id_GostR3410_94_CryptoPro_D_ParamSet 1 2 643 2 2 32 5 */
4330&(nid_objs[662]),/* OBJ_id_ppl 1 3 6 1 5 5 7 21 */ 4487836, /* OBJ_id_GostR3410_94_CryptoPro_XchA_ParamSet 1 2 643 2 2 33 1 */
4331&(nid_objs[176]),/* OBJ_id_ad 1 3 6 1 5 5 7 48 */ 4488837, /* OBJ_id_GostR3410_94_CryptoPro_XchB_ParamSet 1 2 643 2 2 33 2 */
4332&(nid_objs[507]),/* OBJ_id_hex_partial_message 1 3 6 1 7 1 1 1 */ 4489838, /* OBJ_id_GostR3410_94_CryptoPro_XchC_ParamSet 1 2 643 2 2 33 3 */
4333&(nid_objs[508]),/* OBJ_id_hex_multipart_message 1 3 6 1 7 1 1 2 */ 4490839, /* OBJ_id_GostR3410_2001_TestParamSet 1 2 643 2 2 35 0 */
4334&(nid_objs[57]),/* OBJ_netscape 2 16 840 1 113730 */ 4491840, /* OBJ_id_GostR3410_2001_CryptoPro_A_ParamSet 1 2 643 2 2 35 1 */
4335&(nid_objs[754]),/* OBJ_camellia_128_ecb 0 3 4401 5 3 1 9 1 */ 4492841, /* OBJ_id_GostR3410_2001_CryptoPro_B_ParamSet 1 2 643 2 2 35 2 */
4336&(nid_objs[766]),/* OBJ_camellia_128_ofb128 0 3 4401 5 3 1 9 3 */ 4493842, /* OBJ_id_GostR3410_2001_CryptoPro_C_ParamSet 1 2 643 2 2 35 3 */
4337&(nid_objs[757]),/* OBJ_camellia_128_cfb128 0 3 4401 5 3 1 9 4 */ 4494843, /* OBJ_id_GostR3410_2001_CryptoPro_XchA_ParamSet 1 2 643 2 2 36 0 */
4338&(nid_objs[755]),/* OBJ_camellia_192_ecb 0 3 4401 5 3 1 9 21 */ 4495844, /* OBJ_id_GostR3410_2001_CryptoPro_XchB_ParamSet 1 2 643 2 2 36 1 */
4339&(nid_objs[767]),/* OBJ_camellia_192_ofb128 0 3 4401 5 3 1 9 23 */ 4496 2, /* OBJ_pkcs 1 2 840 113549 1 */
4340&(nid_objs[758]),/* OBJ_camellia_192_cfb128 0 3 4401 5 3 1 9 24 */ 4497431, /* OBJ_hold_instruction_none 1 2 840 10040 2 1 */
4341&(nid_objs[756]),/* OBJ_camellia_256_ecb 0 3 4401 5 3 1 9 41 */ 4498432, /* OBJ_hold_instruction_call_issuer 1 2 840 10040 2 2 */
4342&(nid_objs[768]),/* OBJ_camellia_256_ofb128 0 3 4401 5 3 1 9 43 */ 4499433, /* OBJ_hold_instruction_reject 1 2 840 10040 2 3 */
4343&(nid_objs[759]),/* OBJ_camellia_256_cfb128 0 3 4401 5 3 1 9 44 */ 4500116, /* OBJ_dsa 1 2 840 10040 4 1 */
4344&(nid_objs[437]),/* OBJ_pilot 0 9 2342 19200300 100 */ 4501113, /* OBJ_dsaWithSHA1 1 2 840 10040 4 3 */
4345&(nid_objs[776]),/* OBJ_seed_ecb 1 2 410 200004 1 3 */ 4502406, /* OBJ_X9_62_prime_field 1 2 840 10045 1 1 */
4346&(nid_objs[777]),/* OBJ_seed_cbc 1 2 410 200004 1 4 */ 4503407, /* OBJ_X9_62_characteristic_two_field 1 2 840 10045 1 2 */
4347&(nid_objs[779]),/* OBJ_seed_cfb128 1 2 410 200004 1 5 */ 4504408, /* OBJ_X9_62_id_ecPublicKey 1 2 840 10045 2 1 */
4348&(nid_objs[778]),/* OBJ_seed_ofb128 1 2 410 200004 1 6 */ 4505416, /* OBJ_ecdsa_with_SHA1 1 2 840 10045 4 1 */
4349&(nid_objs[852]),/* OBJ_id_GostR3411_94_with_GostR3410_94_cc 1 2 643 2 9 1 3 3 */ 4506791, /* OBJ_ecdsa_with_Recommended 1 2 840 10045 4 2 */
4350&(nid_objs[853]),/* OBJ_id_GostR3411_94_with_GostR3410_2001_cc 1 2 643 2 9 1 3 4 */ 4507792, /* OBJ_ecdsa_with_Specified 1 2 840 10045 4 3 */
4351&(nid_objs[850]),/* OBJ_id_GostR3410_94_cc 1 2 643 2 9 1 5 3 */ 4508258, /* OBJ_id_pkix_mod 1 3 6 1 5 5 7 0 */
4352&(nid_objs[851]),/* OBJ_id_GostR3410_2001_cc 1 2 643 2 9 1 5 4 */ 4509175, /* OBJ_id_pe 1 3 6 1 5 5 7 1 */
4353&(nid_objs[849]),/* OBJ_id_Gost28147_89_cc 1 2 643 2 9 1 6 1 */ 4510259, /* OBJ_id_qt 1 3 6 1 5 5 7 2 */
4354&(nid_objs[854]),/* OBJ_id_GostR3410_2001_ParamSet_cc 1 2 643 2 9 1 8 1 */ 4511128, /* OBJ_id_kp 1 3 6 1 5 5 7 3 */
4355&(nid_objs[186]),/* OBJ_pkcs1 1 2 840 113549 1 1 */ 4512260, /* OBJ_id_it 1 3 6 1 5 5 7 4 */
4356&(nid_objs[27]),/* OBJ_pkcs3 1 2 840 113549 1 3 */ 4513261, /* OBJ_id_pkip 1 3 6 1 5 5 7 5 */
4357&(nid_objs[187]),/* OBJ_pkcs5 1 2 840 113549 1 5 */ 4514262, /* OBJ_id_alg 1 3 6 1 5 5 7 6 */
4358&(nid_objs[20]),/* OBJ_pkcs7 1 2 840 113549 1 7 */ 4515263, /* OBJ_id_cmc 1 3 6 1 5 5 7 7 */
4359&(nid_objs[47]),/* OBJ_pkcs9 1 2 840 113549 1 9 */ 4516264, /* OBJ_id_on 1 3 6 1 5 5 7 8 */
4360&(nid_objs[ 3]),/* OBJ_md2 1 2 840 113549 2 2 */ 4517265, /* OBJ_id_pda 1 3 6 1 5 5 7 9 */
4361&(nid_objs[257]),/* OBJ_md4 1 2 840 113549 2 4 */ 4518266, /* OBJ_id_aca 1 3 6 1 5 5 7 10 */
4362&(nid_objs[ 4]),/* OBJ_md5 1 2 840 113549 2 5 */ 4519267, /* OBJ_id_qcs 1 3 6 1 5 5 7 11 */
4363&(nid_objs[797]),/* OBJ_hmacWithMD5 1 2 840 113549 2 6 */ 4520268, /* OBJ_id_cct 1 3 6 1 5 5 7 12 */
4364&(nid_objs[163]),/* OBJ_hmacWithSHA1 1 2 840 113549 2 7 */ 4521662, /* OBJ_id_ppl 1 3 6 1 5 5 7 21 */
4365&(nid_objs[798]),/* OBJ_hmacWithSHA224 1 2 840 113549 2 8 */ 4522176, /* OBJ_id_ad 1 3 6 1 5 5 7 48 */
4366&(nid_objs[799]),/* OBJ_hmacWithSHA256 1 2 840 113549 2 9 */ 4523507, /* OBJ_id_hex_partial_message 1 3 6 1 7 1 1 1 */
4367&(nid_objs[800]),/* OBJ_hmacWithSHA384 1 2 840 113549 2 10 */ 4524508, /* OBJ_id_hex_multipart_message 1 3 6 1 7 1 1 2 */
4368&(nid_objs[801]),/* OBJ_hmacWithSHA512 1 2 840 113549 2 11 */ 452557, /* OBJ_netscape 2 16 840 1 113730 */
4369&(nid_objs[37]),/* OBJ_rc2_cbc 1 2 840 113549 3 2 */ 4526754, /* OBJ_camellia_128_ecb 0 3 4401 5 3 1 9 1 */
4370&(nid_objs[ 5]),/* OBJ_rc4 1 2 840 113549 3 4 */ 4527766, /* OBJ_camellia_128_ofb128 0 3 4401 5 3 1 9 3 */
4371&(nid_objs[44]),/* OBJ_des_ede3_cbc 1 2 840 113549 3 7 */ 4528757, /* OBJ_camellia_128_cfb128 0 3 4401 5 3 1 9 4 */
4372&(nid_objs[120]),/* OBJ_rc5_cbc 1 2 840 113549 3 8 */ 4529755, /* OBJ_camellia_192_ecb 0 3 4401 5 3 1 9 21 */
4373&(nid_objs[643]),/* OBJ_des_cdmf 1 2 840 113549 3 10 */ 4530767, /* OBJ_camellia_192_ofb128 0 3 4401 5 3 1 9 23 */
4374&(nid_objs[680]),/* OBJ_X9_62_id_characteristic_two_basis 1 2 840 10045 1 2 3 */ 4531758, /* OBJ_camellia_192_cfb128 0 3 4401 5 3 1 9 24 */
4375&(nid_objs[684]),/* OBJ_X9_62_c2pnb163v1 1 2 840 10045 3 0 1 */ 4532756, /* OBJ_camellia_256_ecb 0 3 4401 5 3 1 9 41 */
4376&(nid_objs[685]),/* OBJ_X9_62_c2pnb163v2 1 2 840 10045 3 0 2 */ 4533768, /* OBJ_camellia_256_ofb128 0 3 4401 5 3 1 9 43 */
4377&(nid_objs[686]),/* OBJ_X9_62_c2pnb163v3 1 2 840 10045 3 0 3 */ 4534759, /* OBJ_camellia_256_cfb128 0 3 4401 5 3 1 9 44 */
4378&(nid_objs[687]),/* OBJ_X9_62_c2pnb176v1 1 2 840 10045 3 0 4 */ 4535437, /* OBJ_pilot 0 9 2342 19200300 100 */
4379&(nid_objs[688]),/* OBJ_X9_62_c2tnb191v1 1 2 840 10045 3 0 5 */ 4536776, /* OBJ_seed_ecb 1 2 410 200004 1 3 */
4380&(nid_objs[689]),/* OBJ_X9_62_c2tnb191v2 1 2 840 10045 3 0 6 */ 4537777, /* OBJ_seed_cbc 1 2 410 200004 1 4 */
4381&(nid_objs[690]),/* OBJ_X9_62_c2tnb191v3 1 2 840 10045 3 0 7 */ 4538779, /* OBJ_seed_cfb128 1 2 410 200004 1 5 */
4382&(nid_objs[691]),/* OBJ_X9_62_c2onb191v4 1 2 840 10045 3 0 8 */ 4539778, /* OBJ_seed_ofb128 1 2 410 200004 1 6 */
4383&(nid_objs[692]),/* OBJ_X9_62_c2onb191v5 1 2 840 10045 3 0 9 */ 4540852, /* OBJ_id_GostR3411_94_with_GostR3410_94_cc 1 2 643 2 9 1 3 3 */
4384&(nid_objs[693]),/* OBJ_X9_62_c2pnb208w1 1 2 840 10045 3 0 10 */ 4541853, /* OBJ_id_GostR3411_94_with_GostR3410_2001_cc 1 2 643 2 9 1 3 4 */
4385&(nid_objs[694]),/* OBJ_X9_62_c2tnb239v1 1 2 840 10045 3 0 11 */ 4542850, /* OBJ_id_GostR3410_94_cc 1 2 643 2 9 1 5 3 */
4386&(nid_objs[695]),/* OBJ_X9_62_c2tnb239v2 1 2 840 10045 3 0 12 */ 4543851, /* OBJ_id_GostR3410_2001_cc 1 2 643 2 9 1 5 4 */
4387&(nid_objs[696]),/* OBJ_X9_62_c2tnb239v3 1 2 840 10045 3 0 13 */ 4544849, /* OBJ_id_Gost28147_89_cc 1 2 643 2 9 1 6 1 */
4388&(nid_objs[697]),/* OBJ_X9_62_c2onb239v4 1 2 840 10045 3 0 14 */ 4545854, /* OBJ_id_GostR3410_2001_ParamSet_cc 1 2 643 2 9 1 8 1 */
4389&(nid_objs[698]),/* OBJ_X9_62_c2onb239v5 1 2 840 10045 3 0 15 */ 4546186, /* OBJ_pkcs1 1 2 840 113549 1 1 */
4390&(nid_objs[699]),/* OBJ_X9_62_c2pnb272w1 1 2 840 10045 3 0 16 */ 454727, /* OBJ_pkcs3 1 2 840 113549 1 3 */
4391&(nid_objs[700]),/* OBJ_X9_62_c2pnb304w1 1 2 840 10045 3 0 17 */ 4548187, /* OBJ_pkcs5 1 2 840 113549 1 5 */
4392&(nid_objs[701]),/* OBJ_X9_62_c2tnb359v1 1 2 840 10045 3 0 18 */ 454920, /* OBJ_pkcs7 1 2 840 113549 1 7 */
4393&(nid_objs[702]),/* OBJ_X9_62_c2pnb368w1 1 2 840 10045 3 0 19 */ 455047, /* OBJ_pkcs9 1 2 840 113549 1 9 */
4394&(nid_objs[703]),/* OBJ_X9_62_c2tnb431r1 1 2 840 10045 3 0 20 */ 4551 3, /* OBJ_md2 1 2 840 113549 2 2 */
4395&(nid_objs[409]),/* OBJ_X9_62_prime192v1 1 2 840 10045 3 1 1 */ 4552257, /* OBJ_md4 1 2 840 113549 2 4 */
4396&(nid_objs[410]),/* OBJ_X9_62_prime192v2 1 2 840 10045 3 1 2 */ 4553 4, /* OBJ_md5 1 2 840 113549 2 5 */
4397&(nid_objs[411]),/* OBJ_X9_62_prime192v3 1 2 840 10045 3 1 3 */ 4554797, /* OBJ_hmacWithMD5 1 2 840 113549 2 6 */
4398&(nid_objs[412]),/* OBJ_X9_62_prime239v1 1 2 840 10045 3 1 4 */ 4555163, /* OBJ_hmacWithSHA1 1 2 840 113549 2 7 */
4399&(nid_objs[413]),/* OBJ_X9_62_prime239v2 1 2 840 10045 3 1 5 */ 4556798, /* OBJ_hmacWithSHA224 1 2 840 113549 2 8 */
4400&(nid_objs[414]),/* OBJ_X9_62_prime239v3 1 2 840 10045 3 1 6 */ 4557799, /* OBJ_hmacWithSHA256 1 2 840 113549 2 9 */
4401&(nid_objs[415]),/* OBJ_X9_62_prime256v1 1 2 840 10045 3 1 7 */ 4558800, /* OBJ_hmacWithSHA384 1 2 840 113549 2 10 */
4402&(nid_objs[793]),/* OBJ_ecdsa_with_SHA224 1 2 840 10045 4 3 1 */ 4559801, /* OBJ_hmacWithSHA512 1 2 840 113549 2 11 */
4403&(nid_objs[794]),/* OBJ_ecdsa_with_SHA256 1 2 840 10045 4 3 2 */ 456037, /* OBJ_rc2_cbc 1 2 840 113549 3 2 */
4404&(nid_objs[795]),/* OBJ_ecdsa_with_SHA384 1 2 840 10045 4 3 3 */ 4561 5, /* OBJ_rc4 1 2 840 113549 3 4 */
4405&(nid_objs[796]),/* OBJ_ecdsa_with_SHA512 1 2 840 10045 4 3 4 */ 456244, /* OBJ_des_ede3_cbc 1 2 840 113549 3 7 */
4406&(nid_objs[269]),/* OBJ_id_pkix1_explicit_88 1 3 6 1 5 5 7 0 1 */ 4563120, /* OBJ_rc5_cbc 1 2 840 113549 3 8 */
4407&(nid_objs[270]),/* OBJ_id_pkix1_implicit_88 1 3 6 1 5 5 7 0 2 */ 4564643, /* OBJ_des_cdmf 1 2 840 113549 3 10 */
4408&(nid_objs[271]),/* OBJ_id_pkix1_explicit_93 1 3 6 1 5 5 7 0 3 */ 4565680, /* OBJ_X9_62_id_characteristic_two_basis 1 2 840 10045 1 2 3 */
4409&(nid_objs[272]),/* OBJ_id_pkix1_implicit_93 1 3 6 1 5 5 7 0 4 */ 4566684, /* OBJ_X9_62_c2pnb163v1 1 2 840 10045 3 0 1 */
4410&(nid_objs[273]),/* OBJ_id_mod_crmf 1 3 6 1 5 5 7 0 5 */ 4567685, /* OBJ_X9_62_c2pnb163v2 1 2 840 10045 3 0 2 */
4411&(nid_objs[274]),/* OBJ_id_mod_cmc 1 3 6 1 5 5 7 0 6 */ 4568686, /* OBJ_X9_62_c2pnb163v3 1 2 840 10045 3 0 3 */
4412&(nid_objs[275]),/* OBJ_id_mod_kea_profile_88 1 3 6 1 5 5 7 0 7 */ 4569687, /* OBJ_X9_62_c2pnb176v1 1 2 840 10045 3 0 4 */
4413&(nid_objs[276]),/* OBJ_id_mod_kea_profile_93 1 3 6 1 5 5 7 0 8 */ 4570688, /* OBJ_X9_62_c2tnb191v1 1 2 840 10045 3 0 5 */
4414&(nid_objs[277]),/* OBJ_id_mod_cmp 1 3 6 1 5 5 7 0 9 */ 4571689, /* OBJ_X9_62_c2tnb191v2 1 2 840 10045 3 0 6 */
4415&(nid_objs[278]),/* OBJ_id_mod_qualified_cert_88 1 3 6 1 5 5 7 0 10 */ 4572690, /* OBJ_X9_62_c2tnb191v3 1 2 840 10045 3 0 7 */
4416&(nid_objs[279]),/* OBJ_id_mod_qualified_cert_93 1 3 6 1 5 5 7 0 11 */ 4573691, /* OBJ_X9_62_c2onb191v4 1 2 840 10045 3 0 8 */
4417&(nid_objs[280]),/* OBJ_id_mod_attribute_cert 1 3 6 1 5 5 7 0 12 */ 4574692, /* OBJ_X9_62_c2onb191v5 1 2 840 10045 3 0 9 */
4418&(nid_objs[281]),/* OBJ_id_mod_timestamp_protocol 1 3 6 1 5 5 7 0 13 */ 4575693, /* OBJ_X9_62_c2pnb208w1 1 2 840 10045 3 0 10 */
4419&(nid_objs[282]),/* OBJ_id_mod_ocsp 1 3 6 1 5 5 7 0 14 */ 4576694, /* OBJ_X9_62_c2tnb239v1 1 2 840 10045 3 0 11 */
4420&(nid_objs[283]),/* OBJ_id_mod_dvcs 1 3 6 1 5 5 7 0 15 */ 4577695, /* OBJ_X9_62_c2tnb239v2 1 2 840 10045 3 0 12 */
4421&(nid_objs[284]),/* OBJ_id_mod_cmp2000 1 3 6 1 5 5 7 0 16 */ 4578696, /* OBJ_X9_62_c2tnb239v3 1 2 840 10045 3 0 13 */
4422&(nid_objs[177]),/* OBJ_info_access 1 3 6 1 5 5 7 1 1 */ 4579697, /* OBJ_X9_62_c2onb239v4 1 2 840 10045 3 0 14 */
4423&(nid_objs[285]),/* OBJ_biometricInfo 1 3 6 1 5 5 7 1 2 */ 4580698, /* OBJ_X9_62_c2onb239v5 1 2 840 10045 3 0 15 */
4424&(nid_objs[286]),/* OBJ_qcStatements 1 3 6 1 5 5 7 1 3 */ 4581699, /* OBJ_X9_62_c2pnb272w1 1 2 840 10045 3 0 16 */
4425&(nid_objs[287]),/* OBJ_ac_auditEntity 1 3 6 1 5 5 7 1 4 */ 4582700, /* OBJ_X9_62_c2pnb304w1 1 2 840 10045 3 0 17 */
4426&(nid_objs[288]),/* OBJ_ac_targeting 1 3 6 1 5 5 7 1 5 */ 4583701, /* OBJ_X9_62_c2tnb359v1 1 2 840 10045 3 0 18 */
4427&(nid_objs[289]),/* OBJ_aaControls 1 3 6 1 5 5 7 1 6 */ 4584702, /* OBJ_X9_62_c2pnb368w1 1 2 840 10045 3 0 19 */
4428&(nid_objs[290]),/* OBJ_sbgp_ipAddrBlock 1 3 6 1 5 5 7 1 7 */ 4585703, /* OBJ_X9_62_c2tnb431r1 1 2 840 10045 3 0 20 */
4429&(nid_objs[291]),/* OBJ_sbgp_autonomousSysNum 1 3 6 1 5 5 7 1 8 */ 4586409, /* OBJ_X9_62_prime192v1 1 2 840 10045 3 1 1 */
4430&(nid_objs[292]),/* OBJ_sbgp_routerIdentifier 1 3 6 1 5 5 7 1 9 */ 4587410, /* OBJ_X9_62_prime192v2 1 2 840 10045 3 1 2 */
4431&(nid_objs[397]),/* OBJ_ac_proxying 1 3 6 1 5 5 7 1 10 */ 4588411, /* OBJ_X9_62_prime192v3 1 2 840 10045 3 1 3 */
4432&(nid_objs[398]),/* OBJ_sinfo_access 1 3 6 1 5 5 7 1 11 */ 4589412, /* OBJ_X9_62_prime239v1 1 2 840 10045 3 1 4 */
4433&(nid_objs[663]),/* OBJ_proxyCertInfo 1 3 6 1 5 5 7 1 14 */ 4590413, /* OBJ_X9_62_prime239v2 1 2 840 10045 3 1 5 */
4434&(nid_objs[164]),/* OBJ_id_qt_cps 1 3 6 1 5 5 7 2 1 */ 4591414, /* OBJ_X9_62_prime239v3 1 2 840 10045 3 1 6 */
4435&(nid_objs[165]),/* OBJ_id_qt_unotice 1 3 6 1 5 5 7 2 2 */ 4592415, /* OBJ_X9_62_prime256v1 1 2 840 10045 3 1 7 */
4436&(nid_objs[293]),/* OBJ_textNotice 1 3 6 1 5 5 7 2 3 */ 4593793, /* OBJ_ecdsa_with_SHA224 1 2 840 10045 4 3 1 */
4437&(nid_objs[129]),/* OBJ_server_auth 1 3 6 1 5 5 7 3 1 */ 4594794, /* OBJ_ecdsa_with_SHA256 1 2 840 10045 4 3 2 */
4438&(nid_objs[130]),/* OBJ_client_auth 1 3 6 1 5 5 7 3 2 */ 4595795, /* OBJ_ecdsa_with_SHA384 1 2 840 10045 4 3 3 */
4439&(nid_objs[131]),/* OBJ_code_sign 1 3 6 1 5 5 7 3 3 */ 4596796, /* OBJ_ecdsa_with_SHA512 1 2 840 10045 4 3 4 */
4440&(nid_objs[132]),/* OBJ_email_protect 1 3 6 1 5 5 7 3 4 */ 4597269, /* OBJ_id_pkix1_explicit_88 1 3 6 1 5 5 7 0 1 */
4441&(nid_objs[294]),/* OBJ_ipsecEndSystem 1 3 6 1 5 5 7 3 5 */ 4598270, /* OBJ_id_pkix1_implicit_88 1 3 6 1 5 5 7 0 2 */
4442&(nid_objs[295]),/* OBJ_ipsecTunnel 1 3 6 1 5 5 7 3 6 */ 4599271, /* OBJ_id_pkix1_explicit_93 1 3 6 1 5 5 7 0 3 */
4443&(nid_objs[296]),/* OBJ_ipsecUser 1 3 6 1 5 5 7 3 7 */ 4600272, /* OBJ_id_pkix1_implicit_93 1 3 6 1 5 5 7 0 4 */
4444&(nid_objs[133]),/* OBJ_time_stamp 1 3 6 1 5 5 7 3 8 */ 4601273, /* OBJ_id_mod_crmf 1 3 6 1 5 5 7 0 5 */
4445&(nid_objs[180]),/* OBJ_OCSP_sign 1 3 6 1 5 5 7 3 9 */ 4602274, /* OBJ_id_mod_cmc 1 3 6 1 5 5 7 0 6 */
4446&(nid_objs[297]),/* OBJ_dvcs 1 3 6 1 5 5 7 3 10 */ 4603275, /* OBJ_id_mod_kea_profile_88 1 3 6 1 5 5 7 0 7 */
4447&(nid_objs[298]),/* OBJ_id_it_caProtEncCert 1 3 6 1 5 5 7 4 1 */ 4604276, /* OBJ_id_mod_kea_profile_93 1 3 6 1 5 5 7 0 8 */
4448&(nid_objs[299]),/* OBJ_id_it_signKeyPairTypes 1 3 6 1 5 5 7 4 2 */ 4605277, /* OBJ_id_mod_cmp 1 3 6 1 5 5 7 0 9 */
4449&(nid_objs[300]),/* OBJ_id_it_encKeyPairTypes 1 3 6 1 5 5 7 4 3 */ 4606278, /* OBJ_id_mod_qualified_cert_88 1 3 6 1 5 5 7 0 10 */
4450&(nid_objs[301]),/* OBJ_id_it_preferredSymmAlg 1 3 6 1 5 5 7 4 4 */ 4607279, /* OBJ_id_mod_qualified_cert_93 1 3 6 1 5 5 7 0 11 */
4451&(nid_objs[302]),/* OBJ_id_it_caKeyUpdateInfo 1 3 6 1 5 5 7 4 5 */ 4608280, /* OBJ_id_mod_attribute_cert 1 3 6 1 5 5 7 0 12 */
4452&(nid_objs[303]),/* OBJ_id_it_currentCRL 1 3 6 1 5 5 7 4 6 */ 4609281, /* OBJ_id_mod_timestamp_protocol 1 3 6 1 5 5 7 0 13 */
4453&(nid_objs[304]),/* OBJ_id_it_unsupportedOIDs 1 3 6 1 5 5 7 4 7 */ 4610282, /* OBJ_id_mod_ocsp 1 3 6 1 5 5 7 0 14 */
4454&(nid_objs[305]),/* OBJ_id_it_subscriptionRequest 1 3 6 1 5 5 7 4 8 */ 4611283, /* OBJ_id_mod_dvcs 1 3 6 1 5 5 7 0 15 */
4455&(nid_objs[306]),/* OBJ_id_it_subscriptionResponse 1 3 6 1 5 5 7 4 9 */ 4612284, /* OBJ_id_mod_cmp2000 1 3 6 1 5 5 7 0 16 */
4456&(nid_objs[307]),/* OBJ_id_it_keyPairParamReq 1 3 6 1 5 5 7 4 10 */ 4613177, /* OBJ_info_access 1 3 6 1 5 5 7 1 1 */
4457&(nid_objs[308]),/* OBJ_id_it_keyPairParamRep 1 3 6 1 5 5 7 4 11 */ 4614285, /* OBJ_biometricInfo 1 3 6 1 5 5 7 1 2 */
4458&(nid_objs[309]),/* OBJ_id_it_revPassphrase 1 3 6 1 5 5 7 4 12 */ 4615286, /* OBJ_qcStatements 1 3 6 1 5 5 7 1 3 */
4459&(nid_objs[310]),/* OBJ_id_it_implicitConfirm 1 3 6 1 5 5 7 4 13 */ 4616287, /* OBJ_ac_auditEntity 1 3 6 1 5 5 7 1 4 */
4460&(nid_objs[311]),/* OBJ_id_it_confirmWaitTime 1 3 6 1 5 5 7 4 14 */ 4617288, /* OBJ_ac_targeting 1 3 6 1 5 5 7 1 5 */
4461&(nid_objs[312]),/* OBJ_id_it_origPKIMessage 1 3 6 1 5 5 7 4 15 */ 4618289, /* OBJ_aaControls 1 3 6 1 5 5 7 1 6 */
4462&(nid_objs[784]),/* OBJ_id_it_suppLangTags 1 3 6 1 5 5 7 4 16 */ 4619290, /* OBJ_sbgp_ipAddrBlock 1 3 6 1 5 5 7 1 7 */
4463&(nid_objs[313]),/* OBJ_id_regCtrl 1 3 6 1 5 5 7 5 1 */ 4620291, /* OBJ_sbgp_autonomousSysNum 1 3 6 1 5 5 7 1 8 */
4464&(nid_objs[314]),/* OBJ_id_regInfo 1 3 6 1 5 5 7 5 2 */ 4621292, /* OBJ_sbgp_routerIdentifier 1 3 6 1 5 5 7 1 9 */
4465&(nid_objs[323]),/* OBJ_id_alg_des40 1 3 6 1 5 5 7 6 1 */ 4622397, /* OBJ_ac_proxying 1 3 6 1 5 5 7 1 10 */
4466&(nid_objs[324]),/* OBJ_id_alg_noSignature 1 3 6 1 5 5 7 6 2 */ 4623398, /* OBJ_sinfo_access 1 3 6 1 5 5 7 1 11 */
4467&(nid_objs[325]),/* OBJ_id_alg_dh_sig_hmac_sha1 1 3 6 1 5 5 7 6 3 */ 4624663, /* OBJ_proxyCertInfo 1 3 6 1 5 5 7 1 14 */
4468&(nid_objs[326]),/* OBJ_id_alg_dh_pop 1 3 6 1 5 5 7 6 4 */ 4625164, /* OBJ_id_qt_cps 1 3 6 1 5 5 7 2 1 */
4469&(nid_objs[327]),/* OBJ_id_cmc_statusInfo 1 3 6 1 5 5 7 7 1 */ 4626165, /* OBJ_id_qt_unotice 1 3 6 1 5 5 7 2 2 */
4470&(nid_objs[328]),/* OBJ_id_cmc_identification 1 3 6 1 5 5 7 7 2 */ 4627293, /* OBJ_textNotice 1 3 6 1 5 5 7 2 3 */
4471&(nid_objs[329]),/* OBJ_id_cmc_identityProof 1 3 6 1 5 5 7 7 3 */ 4628129, /* OBJ_server_auth 1 3 6 1 5 5 7 3 1 */
4472&(nid_objs[330]),/* OBJ_id_cmc_dataReturn 1 3 6 1 5 5 7 7 4 */ 4629130, /* OBJ_client_auth 1 3 6 1 5 5 7 3 2 */
4473&(nid_objs[331]),/* OBJ_id_cmc_transactionId 1 3 6 1 5 5 7 7 5 */ 4630131, /* OBJ_code_sign 1 3 6 1 5 5 7 3 3 */
4474&(nid_objs[332]),/* OBJ_id_cmc_senderNonce 1 3 6 1 5 5 7 7 6 */ 4631132, /* OBJ_email_protect 1 3 6 1 5 5 7 3 4 */
4475&(nid_objs[333]),/* OBJ_id_cmc_recipientNonce 1 3 6 1 5 5 7 7 7 */ 4632294, /* OBJ_ipsecEndSystem 1 3 6 1 5 5 7 3 5 */
4476&(nid_objs[334]),/* OBJ_id_cmc_addExtensions 1 3 6 1 5 5 7 7 8 */ 4633295, /* OBJ_ipsecTunnel 1 3 6 1 5 5 7 3 6 */
4477&(nid_objs[335]),/* OBJ_id_cmc_encryptedPOP 1 3 6 1 5 5 7 7 9 */ 4634296, /* OBJ_ipsecUser 1 3 6 1 5 5 7 3 7 */
4478&(nid_objs[336]),/* OBJ_id_cmc_decryptedPOP 1 3 6 1 5 5 7 7 10 */ 4635133, /* OBJ_time_stamp 1 3 6 1 5 5 7 3 8 */
4479&(nid_objs[337]),/* OBJ_id_cmc_lraPOPWitness 1 3 6 1 5 5 7 7 11 */ 4636180, /* OBJ_OCSP_sign 1 3 6 1 5 5 7 3 9 */
4480&(nid_objs[338]),/* OBJ_id_cmc_getCert 1 3 6 1 5 5 7 7 15 */ 4637297, /* OBJ_dvcs 1 3 6 1 5 5 7 3 10 */
4481&(nid_objs[339]),/* OBJ_id_cmc_getCRL 1 3 6 1 5 5 7 7 16 */ 4638298, /* OBJ_id_it_caProtEncCert 1 3 6 1 5 5 7 4 1 */
4482&(nid_objs[340]),/* OBJ_id_cmc_revokeRequest 1 3 6 1 5 5 7 7 17 */ 4639299, /* OBJ_id_it_signKeyPairTypes 1 3 6 1 5 5 7 4 2 */
4483&(nid_objs[341]),/* OBJ_id_cmc_regInfo 1 3 6 1 5 5 7 7 18 */ 4640300, /* OBJ_id_it_encKeyPairTypes 1 3 6 1 5 5 7 4 3 */
4484&(nid_objs[342]),/* OBJ_id_cmc_responseInfo 1 3 6 1 5 5 7 7 19 */ 4641301, /* OBJ_id_it_preferredSymmAlg 1 3 6 1 5 5 7 4 4 */
4485&(nid_objs[343]),/* OBJ_id_cmc_queryPending 1 3 6 1 5 5 7 7 21 */ 4642302, /* OBJ_id_it_caKeyUpdateInfo 1 3 6 1 5 5 7 4 5 */
4486&(nid_objs[344]),/* OBJ_id_cmc_popLinkRandom 1 3 6 1 5 5 7 7 22 */ 4643303, /* OBJ_id_it_currentCRL 1 3 6 1 5 5 7 4 6 */
4487&(nid_objs[345]),/* OBJ_id_cmc_popLinkWitness 1 3 6 1 5 5 7 7 23 */ 4644304, /* OBJ_id_it_unsupportedOIDs 1 3 6 1 5 5 7 4 7 */
4488&(nid_objs[346]),/* OBJ_id_cmc_confirmCertAcceptance 1 3 6 1 5 5 7 7 24 */ 4645305, /* OBJ_id_it_subscriptionRequest 1 3 6 1 5 5 7 4 8 */
4489&(nid_objs[347]),/* OBJ_id_on_personalData 1 3 6 1 5 5 7 8 1 */ 4646306, /* OBJ_id_it_subscriptionResponse 1 3 6 1 5 5 7 4 9 */
4490&(nid_objs[858]),/* OBJ_id_on_permanentIdentifier 1 3 6 1 5 5 7 8 3 */ 4647307, /* OBJ_id_it_keyPairParamReq 1 3 6 1 5 5 7 4 10 */
4491&(nid_objs[348]),/* OBJ_id_pda_dateOfBirth 1 3 6 1 5 5 7 9 1 */ 4648308, /* OBJ_id_it_keyPairParamRep 1 3 6 1 5 5 7 4 11 */
4492&(nid_objs[349]),/* OBJ_id_pda_placeOfBirth 1 3 6 1 5 5 7 9 2 */ 4649309, /* OBJ_id_it_revPassphrase 1 3 6 1 5 5 7 4 12 */
4493&(nid_objs[351]),/* OBJ_id_pda_gender 1 3 6 1 5 5 7 9 3 */ 4650310, /* OBJ_id_it_implicitConfirm 1 3 6 1 5 5 7 4 13 */
4494&(nid_objs[352]),/* OBJ_id_pda_countryOfCitizenship 1 3 6 1 5 5 7 9 4 */ 4651311, /* OBJ_id_it_confirmWaitTime 1 3 6 1 5 5 7 4 14 */
4495&(nid_objs[353]),/* OBJ_id_pda_countryOfResidence 1 3 6 1 5 5 7 9 5 */ 4652312, /* OBJ_id_it_origPKIMessage 1 3 6 1 5 5 7 4 15 */
4496&(nid_objs[354]),/* OBJ_id_aca_authenticationInfo 1 3 6 1 5 5 7 10 1 */ 4653784, /* OBJ_id_it_suppLangTags 1 3 6 1 5 5 7 4 16 */
4497&(nid_objs[355]),/* OBJ_id_aca_accessIdentity 1 3 6 1 5 5 7 10 2 */ 4654313, /* OBJ_id_regCtrl 1 3 6 1 5 5 7 5 1 */
4498&(nid_objs[356]),/* OBJ_id_aca_chargingIdentity 1 3 6 1 5 5 7 10 3 */ 4655314, /* OBJ_id_regInfo 1 3 6 1 5 5 7 5 2 */
4499&(nid_objs[357]),/* OBJ_id_aca_group 1 3 6 1 5 5 7 10 4 */ 4656323, /* OBJ_id_alg_des40 1 3 6 1 5 5 7 6 1 */
4500&(nid_objs[358]),/* OBJ_id_aca_role 1 3 6 1 5 5 7 10 5 */ 4657324, /* OBJ_id_alg_noSignature 1 3 6 1 5 5 7 6 2 */
4501&(nid_objs[399]),/* OBJ_id_aca_encAttrs 1 3 6 1 5 5 7 10 6 */ 4658325, /* OBJ_id_alg_dh_sig_hmac_sha1 1 3 6 1 5 5 7 6 3 */
4502&(nid_objs[359]),/* OBJ_id_qcs_pkixQCSyntax_v1 1 3 6 1 5 5 7 11 1 */ 4659326, /* OBJ_id_alg_dh_pop 1 3 6 1 5 5 7 6 4 */
4503&(nid_objs[360]),/* OBJ_id_cct_crs 1 3 6 1 5 5 7 12 1 */ 4660327, /* OBJ_id_cmc_statusInfo 1 3 6 1 5 5 7 7 1 */
4504&(nid_objs[361]),/* OBJ_id_cct_PKIData 1 3 6 1 5 5 7 12 2 */ 4661328, /* OBJ_id_cmc_identification 1 3 6 1 5 5 7 7 2 */
4505&(nid_objs[362]),/* OBJ_id_cct_PKIResponse 1 3 6 1 5 5 7 12 3 */ 4662329, /* OBJ_id_cmc_identityProof 1 3 6 1 5 5 7 7 3 */
4506&(nid_objs[664]),/* OBJ_id_ppl_anyLanguage 1 3 6 1 5 5 7 21 0 */ 4663330, /* OBJ_id_cmc_dataReturn 1 3 6 1 5 5 7 7 4 */
4507&(nid_objs[665]),/* OBJ_id_ppl_inheritAll 1 3 6 1 5 5 7 21 1 */ 4664331, /* OBJ_id_cmc_transactionId 1 3 6 1 5 5 7 7 5 */
4508&(nid_objs[667]),/* OBJ_Independent 1 3 6 1 5 5 7 21 2 */ 4665332, /* OBJ_id_cmc_senderNonce 1 3 6 1 5 5 7 7 6 */
4509&(nid_objs[178]),/* OBJ_ad_OCSP 1 3 6 1 5 5 7 48 1 */ 4666333, /* OBJ_id_cmc_recipientNonce 1 3 6 1 5 5 7 7 7 */
4510&(nid_objs[179]),/* OBJ_ad_ca_issuers 1 3 6 1 5 5 7 48 2 */ 4667334, /* OBJ_id_cmc_addExtensions 1 3 6 1 5 5 7 7 8 */
4511&(nid_objs[363]),/* OBJ_ad_timeStamping 1 3 6 1 5 5 7 48 3 */ 4668335, /* OBJ_id_cmc_encryptedPOP 1 3 6 1 5 5 7 7 9 */
4512&(nid_objs[364]),/* OBJ_ad_dvcs 1 3 6 1 5 5 7 48 4 */ 4669336, /* OBJ_id_cmc_decryptedPOP 1 3 6 1 5 5 7 7 10 */
4513&(nid_objs[785]),/* OBJ_caRepository 1 3 6 1 5 5 7 48 5 */ 4670337, /* OBJ_id_cmc_lraPOPWitness 1 3 6 1 5 5 7 7 11 */
4514&(nid_objs[780]),/* OBJ_hmac_md5 1 3 6 1 5 5 8 1 1 */ 4671338, /* OBJ_id_cmc_getCert 1 3 6 1 5 5 7 7 15 */
4515&(nid_objs[781]),/* OBJ_hmac_sha1 1 3 6 1 5 5 8 1 2 */ 4672339, /* OBJ_id_cmc_getCRL 1 3 6 1 5 5 7 7 16 */
4516&(nid_objs[58]),/* OBJ_netscape_cert_extension 2 16 840 1 113730 1 */ 4673340, /* OBJ_id_cmc_revokeRequest 1 3 6 1 5 5 7 7 17 */
4517&(nid_objs[59]),/* OBJ_netscape_data_type 2 16 840 1 113730 2 */ 4674341, /* OBJ_id_cmc_regInfo 1 3 6 1 5 5 7 7 18 */
4518&(nid_objs[438]),/* OBJ_pilotAttributeType 0 9 2342 19200300 100 1 */ 4675342, /* OBJ_id_cmc_responseInfo 1 3 6 1 5 5 7 7 19 */
4519&(nid_objs[439]),/* OBJ_pilotAttributeSyntax 0 9 2342 19200300 100 3 */ 4676343, /* OBJ_id_cmc_queryPending 1 3 6 1 5 5 7 7 21 */
4520&(nid_objs[440]),/* OBJ_pilotObjectClass 0 9 2342 19200300 100 4 */ 4677344, /* OBJ_id_cmc_popLinkRandom 1 3 6 1 5 5 7 7 22 */
4521&(nid_objs[441]),/* OBJ_pilotGroups 0 9 2342 19200300 100 10 */ 4678345, /* OBJ_id_cmc_popLinkWitness 1 3 6 1 5 5 7 7 23 */
4522&(nid_objs[108]),/* OBJ_cast5_cbc 1 2 840 113533 7 66 10 */ 4679346, /* OBJ_id_cmc_confirmCertAcceptance 1 3 6 1 5 5 7 7 24 */
4523&(nid_objs[112]),/* OBJ_pbeWithMD5AndCast5_CBC 1 2 840 113533 7 66 12 */ 4680347, /* OBJ_id_on_personalData 1 3 6 1 5 5 7 8 1 */
4524&(nid_objs[782]),/* OBJ_id_PasswordBasedMAC 1 2 840 113533 7 66 13 */ 4681858, /* OBJ_id_on_permanentIdentifier 1 3 6 1 5 5 7 8 3 */
4525&(nid_objs[783]),/* OBJ_id_DHBasedMac 1 2 840 113533 7 66 30 */ 4682348, /* OBJ_id_pda_dateOfBirth 1 3 6 1 5 5 7 9 1 */
4526&(nid_objs[ 6]),/* OBJ_rsaEncryption 1 2 840 113549 1 1 1 */ 4683349, /* OBJ_id_pda_placeOfBirth 1 3 6 1 5 5 7 9 2 */
4527&(nid_objs[ 7]),/* OBJ_md2WithRSAEncryption 1 2 840 113549 1 1 2 */ 4684351, /* OBJ_id_pda_gender 1 3 6 1 5 5 7 9 3 */
4528&(nid_objs[396]),/* OBJ_md4WithRSAEncryption 1 2 840 113549 1 1 3 */ 4685352, /* OBJ_id_pda_countryOfCitizenship 1 3 6 1 5 5 7 9 4 */
4529&(nid_objs[ 8]),/* OBJ_md5WithRSAEncryption 1 2 840 113549 1 1 4 */ 4686353, /* OBJ_id_pda_countryOfResidence 1 3 6 1 5 5 7 9 5 */
4530&(nid_objs[65]),/* OBJ_sha1WithRSAEncryption 1 2 840 113549 1 1 5 */ 4687354, /* OBJ_id_aca_authenticationInfo 1 3 6 1 5 5 7 10 1 */
4531&(nid_objs[644]),/* OBJ_rsaOAEPEncryptionSET 1 2 840 113549 1 1 6 */ 4688355, /* OBJ_id_aca_accessIdentity 1 3 6 1 5 5 7 10 2 */
4532&(nid_objs[668]),/* OBJ_sha256WithRSAEncryption 1 2 840 113549 1 1 11 */ 4689356, /* OBJ_id_aca_chargingIdentity 1 3 6 1 5 5 7 10 3 */
4533&(nid_objs[669]),/* OBJ_sha384WithRSAEncryption 1 2 840 113549 1 1 12 */ 4690357, /* OBJ_id_aca_group 1 3 6 1 5 5 7 10 4 */
4534&(nid_objs[670]),/* OBJ_sha512WithRSAEncryption 1 2 840 113549 1 1 13 */ 4691358, /* OBJ_id_aca_role 1 3 6 1 5 5 7 10 5 */
4535&(nid_objs[671]),/* OBJ_sha224WithRSAEncryption 1 2 840 113549 1 1 14 */ 4692399, /* OBJ_id_aca_encAttrs 1 3 6 1 5 5 7 10 6 */
4536&(nid_objs[28]),/* OBJ_dhKeyAgreement 1 2 840 113549 1 3 1 */ 4693359, /* OBJ_id_qcs_pkixQCSyntax_v1 1 3 6 1 5 5 7 11 1 */
4537&(nid_objs[ 9]),/* OBJ_pbeWithMD2AndDES_CBC 1 2 840 113549 1 5 1 */ 4694360, /* OBJ_id_cct_crs 1 3 6 1 5 5 7 12 1 */
4538&(nid_objs[10]),/* OBJ_pbeWithMD5AndDES_CBC 1 2 840 113549 1 5 3 */ 4695361, /* OBJ_id_cct_PKIData 1 3 6 1 5 5 7 12 2 */
4539&(nid_objs[168]),/* OBJ_pbeWithMD2AndRC2_CBC 1 2 840 113549 1 5 4 */ 4696362, /* OBJ_id_cct_PKIResponse 1 3 6 1 5 5 7 12 3 */
4540&(nid_objs[169]),/* OBJ_pbeWithMD5AndRC2_CBC 1 2 840 113549 1 5 6 */ 4697664, /* OBJ_id_ppl_anyLanguage 1 3 6 1 5 5 7 21 0 */
4541&(nid_objs[170]),/* OBJ_pbeWithSHA1AndDES_CBC 1 2 840 113549 1 5 10 */ 4698665, /* OBJ_id_ppl_inheritAll 1 3 6 1 5 5 7 21 1 */
4542&(nid_objs[68]),/* OBJ_pbeWithSHA1AndRC2_CBC 1 2 840 113549 1 5 11 */ 4699667, /* OBJ_Independent 1 3 6 1 5 5 7 21 2 */
4543&(nid_objs[69]),/* OBJ_id_pbkdf2 1 2 840 113549 1 5 12 */ 4700178, /* OBJ_ad_OCSP 1 3 6 1 5 5 7 48 1 */
4544&(nid_objs[161]),/* OBJ_pbes2 1 2 840 113549 1 5 13 */ 4701179, /* OBJ_ad_ca_issuers 1 3 6 1 5 5 7 48 2 */
4545&(nid_objs[162]),/* OBJ_pbmac1 1 2 840 113549 1 5 14 */ 4702363, /* OBJ_ad_timeStamping 1 3 6 1 5 5 7 48 3 */
4546&(nid_objs[21]),/* OBJ_pkcs7_data 1 2 840 113549 1 7 1 */ 4703364, /* OBJ_ad_dvcs 1 3 6 1 5 5 7 48 4 */
4547&(nid_objs[22]),/* OBJ_pkcs7_signed 1 2 840 113549 1 7 2 */ 4704785, /* OBJ_caRepository 1 3 6 1 5 5 7 48 5 */
4548&(nid_objs[23]),/* OBJ_pkcs7_enveloped 1 2 840 113549 1 7 3 */ 4705780, /* OBJ_hmac_md5 1 3 6 1 5 5 8 1 1 */
4549&(nid_objs[24]),/* OBJ_pkcs7_signedAndEnveloped 1 2 840 113549 1 7 4 */ 4706781, /* OBJ_hmac_sha1 1 3 6 1 5 5 8 1 2 */
4550&(nid_objs[25]),/* OBJ_pkcs7_digest 1 2 840 113549 1 7 5 */ 470758, /* OBJ_netscape_cert_extension 2 16 840 1 113730 1 */
4551&(nid_objs[26]),/* OBJ_pkcs7_encrypted 1 2 840 113549 1 7 6 */ 470859, /* OBJ_netscape_data_type 2 16 840 1 113730 2 */
4552&(nid_objs[48]),/* OBJ_pkcs9_emailAddress 1 2 840 113549 1 9 1 */ 4709438, /* OBJ_pilotAttributeType 0 9 2342 19200300 100 1 */
4553&(nid_objs[49]),/* OBJ_pkcs9_unstructuredName 1 2 840 113549 1 9 2 */ 4710439, /* OBJ_pilotAttributeSyntax 0 9 2342 19200300 100 3 */
4554&(nid_objs[50]),/* OBJ_pkcs9_contentType 1 2 840 113549 1 9 3 */ 4711440, /* OBJ_pilotObjectClass 0 9 2342 19200300 100 4 */
4555&(nid_objs[51]),/* OBJ_pkcs9_messageDigest 1 2 840 113549 1 9 4 */ 4712441, /* OBJ_pilotGroups 0 9 2342 19200300 100 10 */
4556&(nid_objs[52]),/* OBJ_pkcs9_signingTime 1 2 840 113549 1 9 5 */ 4713108, /* OBJ_cast5_cbc 1 2 840 113533 7 66 10 */
4557&(nid_objs[53]),/* OBJ_pkcs9_countersignature 1 2 840 113549 1 9 6 */ 4714112, /* OBJ_pbeWithMD5AndCast5_CBC 1 2 840 113533 7 66 12 */
4558&(nid_objs[54]),/* OBJ_pkcs9_challengePassword 1 2 840 113549 1 9 7 */ 4715782, /* OBJ_id_PasswordBasedMAC 1 2 840 113533 7 66 13 */
4559&(nid_objs[55]),/* OBJ_pkcs9_unstructuredAddress 1 2 840 113549 1 9 8 */ 4716783, /* OBJ_id_DHBasedMac 1 2 840 113533 7 66 30 */
4560&(nid_objs[56]),/* OBJ_pkcs9_extCertAttributes 1 2 840 113549 1 9 9 */ 4717 6, /* OBJ_rsaEncryption 1 2 840 113549 1 1 1 */
4561&(nid_objs[172]),/* OBJ_ext_req 1 2 840 113549 1 9 14 */ 4718 7, /* OBJ_md2WithRSAEncryption 1 2 840 113549 1 1 2 */
4562&(nid_objs[167]),/* OBJ_SMIMECapabilities 1 2 840 113549 1 9 15 */ 4719396, /* OBJ_md4WithRSAEncryption 1 2 840 113549 1 1 3 */
4563&(nid_objs[188]),/* OBJ_SMIME 1 2 840 113549 1 9 16 */ 4720 8, /* OBJ_md5WithRSAEncryption 1 2 840 113549 1 1 4 */
4564&(nid_objs[156]),/* OBJ_friendlyName 1 2 840 113549 1 9 20 */ 472165, /* OBJ_sha1WithRSAEncryption 1 2 840 113549 1 1 5 */
4565&(nid_objs[157]),/* OBJ_localKeyID 1 2 840 113549 1 9 21 */ 4722644, /* OBJ_rsaOAEPEncryptionSET 1 2 840 113549 1 1 6 */
4566&(nid_objs[681]),/* OBJ_X9_62_onBasis 1 2 840 10045 1 2 3 1 */ 4723668, /* OBJ_sha256WithRSAEncryption 1 2 840 113549 1 1 11 */
4567&(nid_objs[682]),/* OBJ_X9_62_tpBasis 1 2 840 10045 1 2 3 2 */ 4724669, /* OBJ_sha384WithRSAEncryption 1 2 840 113549 1 1 12 */
4568&(nid_objs[683]),/* OBJ_X9_62_ppBasis 1 2 840 10045 1 2 3 3 */ 4725670, /* OBJ_sha512WithRSAEncryption 1 2 840 113549 1 1 13 */
4569&(nid_objs[417]),/* OBJ_ms_csp_name 1 3 6 1 4 1 311 17 1 */ 4726671, /* OBJ_sha224WithRSAEncryption 1 2 840 113549 1 1 14 */
4570&(nid_objs[856]),/* OBJ_LocalKeySet 1 3 6 1 4 1 311 17 2 */ 472728, /* OBJ_dhKeyAgreement 1 2 840 113549 1 3 1 */
4571&(nid_objs[390]),/* OBJ_dcObject 1 3 6 1 4 1 1466 344 */ 4728 9, /* OBJ_pbeWithMD2AndDES_CBC 1 2 840 113549 1 5 1 */
4572&(nid_objs[91]),/* OBJ_bf_cbc 1 3 6 1 4 1 3029 1 2 */ 472910, /* OBJ_pbeWithMD5AndDES_CBC 1 2 840 113549 1 5 3 */
4573&(nid_objs[315]),/* OBJ_id_regCtrl_regToken 1 3 6 1 5 5 7 5 1 1 */ 4730168, /* OBJ_pbeWithMD2AndRC2_CBC 1 2 840 113549 1 5 4 */
4574&(nid_objs[316]),/* OBJ_id_regCtrl_authenticator 1 3 6 1 5 5 7 5 1 2 */ 4731169, /* OBJ_pbeWithMD5AndRC2_CBC 1 2 840 113549 1 5 6 */
4575&(nid_objs[317]),/* OBJ_id_regCtrl_pkiPublicationInfo 1 3 6 1 5 5 7 5 1 3 */ 4732170, /* OBJ_pbeWithSHA1AndDES_CBC 1 2 840 113549 1 5 10 */
4576&(nid_objs[318]),/* OBJ_id_regCtrl_pkiArchiveOptions 1 3 6 1 5 5 7 5 1 4 */ 473368, /* OBJ_pbeWithSHA1AndRC2_CBC 1 2 840 113549 1 5 11 */
4577&(nid_objs[319]),/* OBJ_id_regCtrl_oldCertID 1 3 6 1 5 5 7 5 1 5 */ 473469, /* OBJ_id_pbkdf2 1 2 840 113549 1 5 12 */
4578&(nid_objs[320]),/* OBJ_id_regCtrl_protocolEncrKey 1 3 6 1 5 5 7 5 1 6 */ 4735161, /* OBJ_pbes2 1 2 840 113549 1 5 13 */
4579&(nid_objs[321]),/* OBJ_id_regInfo_utf8Pairs 1 3 6 1 5 5 7 5 2 1 */ 4736162, /* OBJ_pbmac1 1 2 840 113549 1 5 14 */
4580&(nid_objs[322]),/* OBJ_id_regInfo_certReq 1 3 6 1 5 5 7 5 2 2 */ 473721, /* OBJ_pkcs7_data 1 2 840 113549 1 7 1 */
4581&(nid_objs[365]),/* OBJ_id_pkix_OCSP_basic 1 3 6 1 5 5 7 48 1 1 */ 473822, /* OBJ_pkcs7_signed 1 2 840 113549 1 7 2 */
4582&(nid_objs[366]),/* OBJ_id_pkix_OCSP_Nonce 1 3 6 1 5 5 7 48 1 2 */ 473923, /* OBJ_pkcs7_enveloped 1 2 840 113549 1 7 3 */
4583&(nid_objs[367]),/* OBJ_id_pkix_OCSP_CrlID 1 3 6 1 5 5 7 48 1 3 */ 474024, /* OBJ_pkcs7_signedAndEnveloped 1 2 840 113549 1 7 4 */
4584&(nid_objs[368]),/* OBJ_id_pkix_OCSP_acceptableResponses 1 3 6 1 5 5 7 48 1 4 */ 474125, /* OBJ_pkcs7_digest 1 2 840 113549 1 7 5 */
4585&(nid_objs[369]),/* OBJ_id_pkix_OCSP_noCheck 1 3 6 1 5 5 7 48 1 5 */ 474226, /* OBJ_pkcs7_encrypted 1 2 840 113549 1 7 6 */
4586&(nid_objs[370]),/* OBJ_id_pkix_OCSP_archiveCutoff 1 3 6 1 5 5 7 48 1 6 */ 474348, /* OBJ_pkcs9_emailAddress 1 2 840 113549 1 9 1 */
4587&(nid_objs[371]),/* OBJ_id_pkix_OCSP_serviceLocator 1 3 6 1 5 5 7 48 1 7 */ 474449, /* OBJ_pkcs9_unstructuredName 1 2 840 113549 1 9 2 */
4588&(nid_objs[372]),/* OBJ_id_pkix_OCSP_extendedStatus 1 3 6 1 5 5 7 48 1 8 */ 474550, /* OBJ_pkcs9_contentType 1 2 840 113549 1 9 3 */
4589&(nid_objs[373]),/* OBJ_id_pkix_OCSP_valid 1 3 6 1 5 5 7 48 1 9 */ 474651, /* OBJ_pkcs9_messageDigest 1 2 840 113549 1 9 4 */
4590&(nid_objs[374]),/* OBJ_id_pkix_OCSP_path 1 3 6 1 5 5 7 48 1 10 */ 474752, /* OBJ_pkcs9_signingTime 1 2 840 113549 1 9 5 */
4591&(nid_objs[375]),/* OBJ_id_pkix_OCSP_trustRoot 1 3 6 1 5 5 7 48 1 11 */ 474853, /* OBJ_pkcs9_countersignature 1 2 840 113549 1 9 6 */
4592&(nid_objs[418]),/* OBJ_aes_128_ecb 2 16 840 1 101 3 4 1 1 */ 474954, /* OBJ_pkcs9_challengePassword 1 2 840 113549 1 9 7 */
4593&(nid_objs[419]),/* OBJ_aes_128_cbc 2 16 840 1 101 3 4 1 2 */ 475055, /* OBJ_pkcs9_unstructuredAddress 1 2 840 113549 1 9 8 */
4594&(nid_objs[420]),/* OBJ_aes_128_ofb128 2 16 840 1 101 3 4 1 3 */ 475156, /* OBJ_pkcs9_extCertAttributes 1 2 840 113549 1 9 9 */
4595&(nid_objs[421]),/* OBJ_aes_128_cfb128 2 16 840 1 101 3 4 1 4 */ 4752172, /* OBJ_ext_req 1 2 840 113549 1 9 14 */
4596&(nid_objs[788]),/* OBJ_id_aes128_wrap 2 16 840 1 101 3 4 1 5 */ 4753167, /* OBJ_SMIMECapabilities 1 2 840 113549 1 9 15 */
4597&(nid_objs[422]),/* OBJ_aes_192_ecb 2 16 840 1 101 3 4 1 21 */ 4754188, /* OBJ_SMIME 1 2 840 113549 1 9 16 */
4598&(nid_objs[423]),/* OBJ_aes_192_cbc 2 16 840 1 101 3 4 1 22 */ 4755156, /* OBJ_friendlyName 1 2 840 113549 1 9 20 */
4599&(nid_objs[424]),/* OBJ_aes_192_ofb128 2 16 840 1 101 3 4 1 23 */ 4756157, /* OBJ_localKeyID 1 2 840 113549 1 9 21 */
4600&(nid_objs[425]),/* OBJ_aes_192_cfb128 2 16 840 1 101 3 4 1 24 */ 4757681, /* OBJ_X9_62_onBasis 1 2 840 10045 1 2 3 1 */
4601&(nid_objs[789]),/* OBJ_id_aes192_wrap 2 16 840 1 101 3 4 1 25 */ 4758682, /* OBJ_X9_62_tpBasis 1 2 840 10045 1 2 3 2 */
4602&(nid_objs[426]),/* OBJ_aes_256_ecb 2 16 840 1 101 3 4 1 41 */ 4759683, /* OBJ_X9_62_ppBasis 1 2 840 10045 1 2 3 3 */
4603&(nid_objs[427]),/* OBJ_aes_256_cbc 2 16 840 1 101 3 4 1 42 */ 4760417, /* OBJ_ms_csp_name 1 3 6 1 4 1 311 17 1 */
4604&(nid_objs[428]),/* OBJ_aes_256_ofb128 2 16 840 1 101 3 4 1 43 */ 4761856, /* OBJ_LocalKeySet 1 3 6 1 4 1 311 17 2 */
4605&(nid_objs[429]),/* OBJ_aes_256_cfb128 2 16 840 1 101 3 4 1 44 */ 4762390, /* OBJ_dcObject 1 3 6 1 4 1 1466 344 */
4606&(nid_objs[790]),/* OBJ_id_aes256_wrap 2 16 840 1 101 3 4 1 45 */ 476391, /* OBJ_bf_cbc 1 3 6 1 4 1 3029 1 2 */
4607&(nid_objs[672]),/* OBJ_sha256 2 16 840 1 101 3 4 2 1 */ 4764315, /* OBJ_id_regCtrl_regToken 1 3 6 1 5 5 7 5 1 1 */
4608&(nid_objs[673]),/* OBJ_sha384 2 16 840 1 101 3 4 2 2 */ 4765316, /* OBJ_id_regCtrl_authenticator 1 3 6 1 5 5 7 5 1 2 */
4609&(nid_objs[674]),/* OBJ_sha512 2 16 840 1 101 3 4 2 3 */ 4766317, /* OBJ_id_regCtrl_pkiPublicationInfo 1 3 6 1 5 5 7 5 1 3 */
4610&(nid_objs[675]),/* OBJ_sha224 2 16 840 1 101 3 4 2 4 */ 4767318, /* OBJ_id_regCtrl_pkiArchiveOptions 1 3 6 1 5 5 7 5 1 4 */
4611&(nid_objs[802]),/* OBJ_dsa_with_SHA224 2 16 840 1 101 3 4 3 1 */ 4768319, /* OBJ_id_regCtrl_oldCertID 1 3 6 1 5 5 7 5 1 5 */
4612&(nid_objs[803]),/* OBJ_dsa_with_SHA256 2 16 840 1 101 3 4 3 2 */ 4769320, /* OBJ_id_regCtrl_protocolEncrKey 1 3 6 1 5 5 7 5 1 6 */
4613&(nid_objs[71]),/* OBJ_netscape_cert_type 2 16 840 1 113730 1 1 */ 4770321, /* OBJ_id_regInfo_utf8Pairs 1 3 6 1 5 5 7 5 2 1 */
4614&(nid_objs[72]),/* OBJ_netscape_base_url 2 16 840 1 113730 1 2 */ 4771322, /* OBJ_id_regInfo_certReq 1 3 6 1 5 5 7 5 2 2 */
4615&(nid_objs[73]),/* OBJ_netscape_revocation_url 2 16 840 1 113730 1 3 */ 4772365, /* OBJ_id_pkix_OCSP_basic 1 3 6 1 5 5 7 48 1 1 */
4616&(nid_objs[74]),/* OBJ_netscape_ca_revocation_url 2 16 840 1 113730 1 4 */ 4773366, /* OBJ_id_pkix_OCSP_Nonce 1 3 6 1 5 5 7 48 1 2 */
4617&(nid_objs[75]),/* OBJ_netscape_renewal_url 2 16 840 1 113730 1 7 */ 4774367, /* OBJ_id_pkix_OCSP_CrlID 1 3 6 1 5 5 7 48 1 3 */
4618&(nid_objs[76]),/* OBJ_netscape_ca_policy_url 2 16 840 1 113730 1 8 */ 4775368, /* OBJ_id_pkix_OCSP_acceptableResponses 1 3 6 1 5 5 7 48 1 4 */
4619&(nid_objs[77]),/* OBJ_netscape_ssl_server_name 2 16 840 1 113730 1 12 */ 4776369, /* OBJ_id_pkix_OCSP_noCheck 1 3 6 1 5 5 7 48 1 5 */
4620&(nid_objs[78]),/* OBJ_netscape_comment 2 16 840 1 113730 1 13 */ 4777370, /* OBJ_id_pkix_OCSP_archiveCutoff 1 3 6 1 5 5 7 48 1 6 */
4621&(nid_objs[79]),/* OBJ_netscape_cert_sequence 2 16 840 1 113730 2 5 */ 4778371, /* OBJ_id_pkix_OCSP_serviceLocator 1 3 6 1 5 5 7 48 1 7 */
4622&(nid_objs[139]),/* OBJ_ns_sgc 2 16 840 1 113730 4 1 */ 4779372, /* OBJ_id_pkix_OCSP_extendedStatus 1 3 6 1 5 5 7 48 1 8 */
4623&(nid_objs[458]),/* OBJ_userId 0 9 2342 19200300 100 1 1 */ 4780373, /* OBJ_id_pkix_OCSP_valid 1 3 6 1 5 5 7 48 1 9 */
4624&(nid_objs[459]),/* OBJ_textEncodedORAddress 0 9 2342 19200300 100 1 2 */ 4781374, /* OBJ_id_pkix_OCSP_path 1 3 6 1 5 5 7 48 1 10 */
4625&(nid_objs[460]),/* OBJ_rfc822Mailbox 0 9 2342 19200300 100 1 3 */ 4782375, /* OBJ_id_pkix_OCSP_trustRoot 1 3 6 1 5 5 7 48 1 11 */
4626&(nid_objs[461]),/* OBJ_info 0 9 2342 19200300 100 1 4 */ 4783418, /* OBJ_aes_128_ecb 2 16 840 1 101 3 4 1 1 */
4627&(nid_objs[462]),/* OBJ_favouriteDrink 0 9 2342 19200300 100 1 5 */ 4784419, /* OBJ_aes_128_cbc 2 16 840 1 101 3 4 1 2 */
4628&(nid_objs[463]),/* OBJ_roomNumber 0 9 2342 19200300 100 1 6 */ 4785420, /* OBJ_aes_128_ofb128 2 16 840 1 101 3 4 1 3 */
4629&(nid_objs[464]),/* OBJ_photo 0 9 2342 19200300 100 1 7 */ 4786421, /* OBJ_aes_128_cfb128 2 16 840 1 101 3 4 1 4 */
4630&(nid_objs[465]),/* OBJ_userClass 0 9 2342 19200300 100 1 8 */ 4787788, /* OBJ_id_aes128_wrap 2 16 840 1 101 3 4 1 5 */
4631&(nid_objs[466]),/* OBJ_host 0 9 2342 19200300 100 1 9 */ 4788422, /* OBJ_aes_192_ecb 2 16 840 1 101 3 4 1 21 */
4632&(nid_objs[467]),/* OBJ_manager 0 9 2342 19200300 100 1 10 */ 4789423, /* OBJ_aes_192_cbc 2 16 840 1 101 3 4 1 22 */
4633&(nid_objs[468]),/* OBJ_documentIdentifier 0 9 2342 19200300 100 1 11 */ 4790424, /* OBJ_aes_192_ofb128 2 16 840 1 101 3 4 1 23 */
4634&(nid_objs[469]),/* OBJ_documentTitle 0 9 2342 19200300 100 1 12 */ 4791425, /* OBJ_aes_192_cfb128 2 16 840 1 101 3 4 1 24 */
4635&(nid_objs[470]),/* OBJ_documentVersion 0 9 2342 19200300 100 1 13 */ 4792789, /* OBJ_id_aes192_wrap 2 16 840 1 101 3 4 1 25 */
4636&(nid_objs[471]),/* OBJ_documentAuthor 0 9 2342 19200300 100 1 14 */ 4793426, /* OBJ_aes_256_ecb 2 16 840 1 101 3 4 1 41 */
4637&(nid_objs[472]),/* OBJ_documentLocation 0 9 2342 19200300 100 1 15 */ 4794427, /* OBJ_aes_256_cbc 2 16 840 1 101 3 4 1 42 */
4638&(nid_objs[473]),/* OBJ_homeTelephoneNumber 0 9 2342 19200300 100 1 20 */ 4795428, /* OBJ_aes_256_ofb128 2 16 840 1 101 3 4 1 43 */
4639&(nid_objs[474]),/* OBJ_secretary 0 9 2342 19200300 100 1 21 */ 4796429, /* OBJ_aes_256_cfb128 2 16 840 1 101 3 4 1 44 */
4640&(nid_objs[475]),/* OBJ_otherMailbox 0 9 2342 19200300 100 1 22 */ 4797790, /* OBJ_id_aes256_wrap 2 16 840 1 101 3 4 1 45 */
4641&(nid_objs[476]),/* OBJ_lastModifiedTime 0 9 2342 19200300 100 1 23 */ 4798672, /* OBJ_sha256 2 16 840 1 101 3 4 2 1 */
4642&(nid_objs[477]),/* OBJ_lastModifiedBy 0 9 2342 19200300 100 1 24 */ 4799673, /* OBJ_sha384 2 16 840 1 101 3 4 2 2 */
4643&(nid_objs[391]),/* OBJ_domainComponent 0 9 2342 19200300 100 1 25 */ 4800674, /* OBJ_sha512 2 16 840 1 101 3 4 2 3 */
4644&(nid_objs[478]),/* OBJ_aRecord 0 9 2342 19200300 100 1 26 */ 4801675, /* OBJ_sha224 2 16 840 1 101 3 4 2 4 */
4645&(nid_objs[479]),/* OBJ_pilotAttributeType27 0 9 2342 19200300 100 1 27 */ 4802802, /* OBJ_dsa_with_SHA224 2 16 840 1 101 3 4 3 1 */
4646&(nid_objs[480]),/* OBJ_mXRecord 0 9 2342 19200300 100 1 28 */ 4803803, /* OBJ_dsa_with_SHA256 2 16 840 1 101 3 4 3 2 */
4647&(nid_objs[481]),/* OBJ_nSRecord 0 9 2342 19200300 100 1 29 */ 480471, /* OBJ_netscape_cert_type 2 16 840 1 113730 1 1 */
4648&(nid_objs[482]),/* OBJ_sOARecord 0 9 2342 19200300 100 1 30 */ 480572, /* OBJ_netscape_base_url 2 16 840 1 113730 1 2 */
4649&(nid_objs[483]),/* OBJ_cNAMERecord 0 9 2342 19200300 100 1 31 */ 480673, /* OBJ_netscape_revocation_url 2 16 840 1 113730 1 3 */
4650&(nid_objs[484]),/* OBJ_associatedDomain 0 9 2342 19200300 100 1 37 */ 480774, /* OBJ_netscape_ca_revocation_url 2 16 840 1 113730 1 4 */
4651&(nid_objs[485]),/* OBJ_associatedName 0 9 2342 19200300 100 1 38 */ 480875, /* OBJ_netscape_renewal_url 2 16 840 1 113730 1 7 */
4652&(nid_objs[486]),/* OBJ_homePostalAddress 0 9 2342 19200300 100 1 39 */ 480976, /* OBJ_netscape_ca_policy_url 2 16 840 1 113730 1 8 */
4653&(nid_objs[487]),/* OBJ_personalTitle 0 9 2342 19200300 100 1 40 */ 481077, /* OBJ_netscape_ssl_server_name 2 16 840 1 113730 1 12 */
4654&(nid_objs[488]),/* OBJ_mobileTelephoneNumber 0 9 2342 19200300 100 1 41 */ 481178, /* OBJ_netscape_comment 2 16 840 1 113730 1 13 */
4655&(nid_objs[489]),/* OBJ_pagerTelephoneNumber 0 9 2342 19200300 100 1 42 */ 481279, /* OBJ_netscape_cert_sequence 2 16 840 1 113730 2 5 */
4656&(nid_objs[490]),/* OBJ_friendlyCountryName 0 9 2342 19200300 100 1 43 */ 4813139, /* OBJ_ns_sgc 2 16 840 1 113730 4 1 */
4657&(nid_objs[491]),/* OBJ_organizationalStatus 0 9 2342 19200300 100 1 45 */ 4814458, /* OBJ_userId 0 9 2342 19200300 100 1 1 */
4658&(nid_objs[492]),/* OBJ_janetMailbox 0 9 2342 19200300 100 1 46 */ 4815459, /* OBJ_textEncodedORAddress 0 9 2342 19200300 100 1 2 */
4659&(nid_objs[493]),/* OBJ_mailPreferenceOption 0 9 2342 19200300 100 1 47 */ 4816460, /* OBJ_rfc822Mailbox 0 9 2342 19200300 100 1 3 */
4660&(nid_objs[494]),/* OBJ_buildingName 0 9 2342 19200300 100 1 48 */ 4817461, /* OBJ_info 0 9 2342 19200300 100 1 4 */
4661&(nid_objs[495]),/* OBJ_dSAQuality 0 9 2342 19200300 100 1 49 */ 4818462, /* OBJ_favouriteDrink 0 9 2342 19200300 100 1 5 */
4662&(nid_objs[496]),/* OBJ_singleLevelQuality 0 9 2342 19200300 100 1 50 */ 4819463, /* OBJ_roomNumber 0 9 2342 19200300 100 1 6 */
4663&(nid_objs[497]),/* OBJ_subtreeMinimumQuality 0 9 2342 19200300 100 1 51 */ 4820464, /* OBJ_photo 0 9 2342 19200300 100 1 7 */
4664&(nid_objs[498]),/* OBJ_subtreeMaximumQuality 0 9 2342 19200300 100 1 52 */ 4821465, /* OBJ_userClass 0 9 2342 19200300 100 1 8 */
4665&(nid_objs[499]),/* OBJ_personalSignature 0 9 2342 19200300 100 1 53 */ 4822466, /* OBJ_host 0 9 2342 19200300 100 1 9 */
4666&(nid_objs[500]),/* OBJ_dITRedirect 0 9 2342 19200300 100 1 54 */ 4823467, /* OBJ_manager 0 9 2342 19200300 100 1 10 */
4667&(nid_objs[501]),/* OBJ_audio 0 9 2342 19200300 100 1 55 */ 4824468, /* OBJ_documentIdentifier 0 9 2342 19200300 100 1 11 */
4668&(nid_objs[502]),/* OBJ_documentPublisher 0 9 2342 19200300 100 1 56 */ 4825469, /* OBJ_documentTitle 0 9 2342 19200300 100 1 12 */
4669&(nid_objs[442]),/* OBJ_iA5StringSyntax 0 9 2342 19200300 100 3 4 */ 4826470, /* OBJ_documentVersion 0 9 2342 19200300 100 1 13 */
4670&(nid_objs[443]),/* OBJ_caseIgnoreIA5StringSyntax 0 9 2342 19200300 100 3 5 */ 4827471, /* OBJ_documentAuthor 0 9 2342 19200300 100 1 14 */
4671&(nid_objs[444]),/* OBJ_pilotObject 0 9 2342 19200300 100 4 3 */ 4828472, /* OBJ_documentLocation 0 9 2342 19200300 100 1 15 */
4672&(nid_objs[445]),/* OBJ_pilotPerson 0 9 2342 19200300 100 4 4 */ 4829473, /* OBJ_homeTelephoneNumber 0 9 2342 19200300 100 1 20 */
4673&(nid_objs[446]),/* OBJ_account 0 9 2342 19200300 100 4 5 */ 4830474, /* OBJ_secretary 0 9 2342 19200300 100 1 21 */
4674&(nid_objs[447]),/* OBJ_document 0 9 2342 19200300 100 4 6 */ 4831475, /* OBJ_otherMailbox 0 9 2342 19200300 100 1 22 */
4675&(nid_objs[448]),/* OBJ_room 0 9 2342 19200300 100 4 7 */ 4832476, /* OBJ_lastModifiedTime 0 9 2342 19200300 100 1 23 */
4676&(nid_objs[449]),/* OBJ_documentSeries 0 9 2342 19200300 100 4 9 */ 4833477, /* OBJ_lastModifiedBy 0 9 2342 19200300 100 1 24 */
4677&(nid_objs[392]),/* OBJ_Domain 0 9 2342 19200300 100 4 13 */ 4834391, /* OBJ_domainComponent 0 9 2342 19200300 100 1 25 */
4678&(nid_objs[450]),/* OBJ_rFC822localPart 0 9 2342 19200300 100 4 14 */ 4835478, /* OBJ_aRecord 0 9 2342 19200300 100 1 26 */
4679&(nid_objs[451]),/* OBJ_dNSDomain 0 9 2342 19200300 100 4 15 */ 4836479, /* OBJ_pilotAttributeType27 0 9 2342 19200300 100 1 27 */
4680&(nid_objs[452]),/* OBJ_domainRelatedObject 0 9 2342 19200300 100 4 17 */ 4837480, /* OBJ_mXRecord 0 9 2342 19200300 100 1 28 */
4681&(nid_objs[453]),/* OBJ_friendlyCountry 0 9 2342 19200300 100 4 18 */ 4838481, /* OBJ_nSRecord 0 9 2342 19200300 100 1 29 */
4682&(nid_objs[454]),/* OBJ_simpleSecurityObject 0 9 2342 19200300 100 4 19 */ 4839482, /* OBJ_sOARecord 0 9 2342 19200300 100 1 30 */
4683&(nid_objs[455]),/* OBJ_pilotOrganization 0 9 2342 19200300 100 4 20 */ 4840483, /* OBJ_cNAMERecord 0 9 2342 19200300 100 1 31 */
4684&(nid_objs[456]),/* OBJ_pilotDSA 0 9 2342 19200300 100 4 21 */ 4841484, /* OBJ_associatedDomain 0 9 2342 19200300 100 1 37 */
4685&(nid_objs[457]),/* OBJ_qualityLabelledData 0 9 2342 19200300 100 4 22 */ 4842485, /* OBJ_associatedName 0 9 2342 19200300 100 1 38 */
4686&(nid_objs[189]),/* OBJ_id_smime_mod 1 2 840 113549 1 9 16 0 */ 4843486, /* OBJ_homePostalAddress 0 9 2342 19200300 100 1 39 */
4687&(nid_objs[190]),/* OBJ_id_smime_ct 1 2 840 113549 1 9 16 1 */ 4844487, /* OBJ_personalTitle 0 9 2342 19200300 100 1 40 */
4688&(nid_objs[191]),/* OBJ_id_smime_aa 1 2 840 113549 1 9 16 2 */ 4845488, /* OBJ_mobileTelephoneNumber 0 9 2342 19200300 100 1 41 */
4689&(nid_objs[192]),/* OBJ_id_smime_alg 1 2 840 113549 1 9 16 3 */ 4846489, /* OBJ_pagerTelephoneNumber 0 9 2342 19200300 100 1 42 */
4690&(nid_objs[193]),/* OBJ_id_smime_cd 1 2 840 113549 1 9 16 4 */ 4847490, /* OBJ_friendlyCountryName 0 9 2342 19200300 100 1 43 */
4691&(nid_objs[194]),/* OBJ_id_smime_spq 1 2 840 113549 1 9 16 5 */ 4848491, /* OBJ_organizationalStatus 0 9 2342 19200300 100 1 45 */
4692&(nid_objs[195]),/* OBJ_id_smime_cti 1 2 840 113549 1 9 16 6 */ 4849492, /* OBJ_janetMailbox 0 9 2342 19200300 100 1 46 */
4693&(nid_objs[158]),/* OBJ_x509Certificate 1 2 840 113549 1 9 22 1 */ 4850493, /* OBJ_mailPreferenceOption 0 9 2342 19200300 100 1 47 */
4694&(nid_objs[159]),/* OBJ_sdsiCertificate 1 2 840 113549 1 9 22 2 */ 4851494, /* OBJ_buildingName 0 9 2342 19200300 100 1 48 */
4695&(nid_objs[160]),/* OBJ_x509Crl 1 2 840 113549 1 9 23 1 */ 4852495, /* OBJ_dSAQuality 0 9 2342 19200300 100 1 49 */
4696&(nid_objs[144]),/* OBJ_pbe_WithSHA1And128BitRC4 1 2 840 113549 1 12 1 1 */ 4853496, /* OBJ_singleLevelQuality 0 9 2342 19200300 100 1 50 */
4697&(nid_objs[145]),/* OBJ_pbe_WithSHA1And40BitRC4 1 2 840 113549 1 12 1 2 */ 4854497, /* OBJ_subtreeMinimumQuality 0 9 2342 19200300 100 1 51 */
4698&(nid_objs[146]),/* OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC 1 2 840 113549 1 12 1 3 */ 4855498, /* OBJ_subtreeMaximumQuality 0 9 2342 19200300 100 1 52 */
4699&(nid_objs[147]),/* OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC 1 2 840 113549 1 12 1 4 */ 4856499, /* OBJ_personalSignature 0 9 2342 19200300 100 1 53 */
4700&(nid_objs[148]),/* OBJ_pbe_WithSHA1And128BitRC2_CBC 1 2 840 113549 1 12 1 5 */ 4857500, /* OBJ_dITRedirect 0 9 2342 19200300 100 1 54 */
4701&(nid_objs[149]),/* OBJ_pbe_WithSHA1And40BitRC2_CBC 1 2 840 113549 1 12 1 6 */ 4858501, /* OBJ_audio 0 9 2342 19200300 100 1 55 */
4702&(nid_objs[171]),/* OBJ_ms_ext_req 1 3 6 1 4 1 311 2 1 14 */ 4859502, /* OBJ_documentPublisher 0 9 2342 19200300 100 1 56 */
4703&(nid_objs[134]),/* OBJ_ms_code_ind 1 3 6 1 4 1 311 2 1 21 */ 4860442, /* OBJ_iA5StringSyntax 0 9 2342 19200300 100 3 4 */
4704&(nid_objs[135]),/* OBJ_ms_code_com 1 3 6 1 4 1 311 2 1 22 */ 4861443, /* OBJ_caseIgnoreIA5StringSyntax 0 9 2342 19200300 100 3 5 */
4705&(nid_objs[136]),/* OBJ_ms_ctl_sign 1 3 6 1 4 1 311 10 3 1 */ 4862444, /* OBJ_pilotObject 0 9 2342 19200300 100 4 3 */
4706&(nid_objs[137]),/* OBJ_ms_sgc 1 3 6 1 4 1 311 10 3 3 */ 4863445, /* OBJ_pilotPerson 0 9 2342 19200300 100 4 4 */
4707&(nid_objs[138]),/* OBJ_ms_efs 1 3 6 1 4 1 311 10 3 4 */ 4864446, /* OBJ_account 0 9 2342 19200300 100 4 5 */
4708&(nid_objs[648]),/* OBJ_ms_smartcard_login 1 3 6 1 4 1 311 20 2 2 */ 4865447, /* OBJ_document 0 9 2342 19200300 100 4 6 */
4709&(nid_objs[649]),/* OBJ_ms_upn 1 3 6 1 4 1 311 20 2 3 */ 4866448, /* OBJ_room 0 9 2342 19200300 100 4 7 */
4710&(nid_objs[751]),/* OBJ_camellia_128_cbc 1 2 392 200011 61 1 1 1 2 */ 4867449, /* OBJ_documentSeries 0 9 2342 19200300 100 4 9 */
4711&(nid_objs[752]),/* OBJ_camellia_192_cbc 1 2 392 200011 61 1 1 1 3 */ 4868392, /* OBJ_Domain 0 9 2342 19200300 100 4 13 */
4712&(nid_objs[753]),/* OBJ_camellia_256_cbc 1 2 392 200011 61 1 1 1 4 */ 4869450, /* OBJ_rFC822localPart 0 9 2342 19200300 100 4 14 */
4713&(nid_objs[196]),/* OBJ_id_smime_mod_cms 1 2 840 113549 1 9 16 0 1 */ 4870451, /* OBJ_dNSDomain 0 9 2342 19200300 100 4 15 */
4714&(nid_objs[197]),/* OBJ_id_smime_mod_ess 1 2 840 113549 1 9 16 0 2 */ 4871452, /* OBJ_domainRelatedObject 0 9 2342 19200300 100 4 17 */
4715&(nid_objs[198]),/* OBJ_id_smime_mod_oid 1 2 840 113549 1 9 16 0 3 */ 4872453, /* OBJ_friendlyCountry 0 9 2342 19200300 100 4 18 */
4716&(nid_objs[199]),/* OBJ_id_smime_mod_msg_v3 1 2 840 113549 1 9 16 0 4 */ 4873454, /* OBJ_simpleSecurityObject 0 9 2342 19200300 100 4 19 */
4717&(nid_objs[200]),/* OBJ_id_smime_mod_ets_eSignature_88 1 2 840 113549 1 9 16 0 5 */ 4874455, /* OBJ_pilotOrganization 0 9 2342 19200300 100 4 20 */
4718&(nid_objs[201]),/* OBJ_id_smime_mod_ets_eSignature_97 1 2 840 113549 1 9 16 0 6 */ 4875456, /* OBJ_pilotDSA 0 9 2342 19200300 100 4 21 */
4719&(nid_objs[202]),/* OBJ_id_smime_mod_ets_eSigPolicy_88 1 2 840 113549 1 9 16 0 7 */ 4876457, /* OBJ_qualityLabelledData 0 9 2342 19200300 100 4 22 */
4720&(nid_objs[203]),/* OBJ_id_smime_mod_ets_eSigPolicy_97 1 2 840 113549 1 9 16 0 8 */ 4877189, /* OBJ_id_smime_mod 1 2 840 113549 1 9 16 0 */
4721&(nid_objs[204]),/* OBJ_id_smime_ct_receipt 1 2 840 113549 1 9 16 1 1 */ 4878190, /* OBJ_id_smime_ct 1 2 840 113549 1 9 16 1 */
4722&(nid_objs[205]),/* OBJ_id_smime_ct_authData 1 2 840 113549 1 9 16 1 2 */ 4879191, /* OBJ_id_smime_aa 1 2 840 113549 1 9 16 2 */
4723&(nid_objs[206]),/* OBJ_id_smime_ct_publishCert 1 2 840 113549 1 9 16 1 3 */ 4880192, /* OBJ_id_smime_alg 1 2 840 113549 1 9 16 3 */
4724&(nid_objs[207]),/* OBJ_id_smime_ct_TSTInfo 1 2 840 113549 1 9 16 1 4 */ 4881193, /* OBJ_id_smime_cd 1 2 840 113549 1 9 16 4 */
4725&(nid_objs[208]),/* OBJ_id_smime_ct_TDTInfo 1 2 840 113549 1 9 16 1 5 */ 4882194, /* OBJ_id_smime_spq 1 2 840 113549 1 9 16 5 */
4726&(nid_objs[209]),/* OBJ_id_smime_ct_contentInfo 1 2 840 113549 1 9 16 1 6 */ 4883195, /* OBJ_id_smime_cti 1 2 840 113549 1 9 16 6 */
4727&(nid_objs[210]),/* OBJ_id_smime_ct_DVCSRequestData 1 2 840 113549 1 9 16 1 7 */ 4884158, /* OBJ_x509Certificate 1 2 840 113549 1 9 22 1 */
4728&(nid_objs[211]),/* OBJ_id_smime_ct_DVCSResponseData 1 2 840 113549 1 9 16 1 8 */ 4885159, /* OBJ_sdsiCertificate 1 2 840 113549 1 9 22 2 */
4729&(nid_objs[786]),/* OBJ_id_smime_ct_compressedData 1 2 840 113549 1 9 16 1 9 */ 4886160, /* OBJ_x509Crl 1 2 840 113549 1 9 23 1 */
4730&(nid_objs[787]),/* OBJ_id_ct_asciiTextWithCRLF 1 2 840 113549 1 9 16 1 27 */ 4887144, /* OBJ_pbe_WithSHA1And128BitRC4 1 2 840 113549 1 12 1 1 */
4731&(nid_objs[212]),/* OBJ_id_smime_aa_receiptRequest 1 2 840 113549 1 9 16 2 1 */ 4888145, /* OBJ_pbe_WithSHA1And40BitRC4 1 2 840 113549 1 12 1 2 */
4732&(nid_objs[213]),/* OBJ_id_smime_aa_securityLabel 1 2 840 113549 1 9 16 2 2 */ 4889146, /* OBJ_pbe_WithSHA1And3_Key_TripleDES_CBC 1 2 840 113549 1 12 1 3 */
4733&(nid_objs[214]),/* OBJ_id_smime_aa_mlExpandHistory 1 2 840 113549 1 9 16 2 3 */ 4890147, /* OBJ_pbe_WithSHA1And2_Key_TripleDES_CBC 1 2 840 113549 1 12 1 4 */
4734&(nid_objs[215]),/* OBJ_id_smime_aa_contentHint 1 2 840 113549 1 9 16 2 4 */ 4891148, /* OBJ_pbe_WithSHA1And128BitRC2_CBC 1 2 840 113549 1 12 1 5 */
4735&(nid_objs[216]),/* OBJ_id_smime_aa_msgSigDigest 1 2 840 113549 1 9 16 2 5 */ 4892149, /* OBJ_pbe_WithSHA1And40BitRC2_CBC 1 2 840 113549 1 12 1 6 */
4736&(nid_objs[217]),/* OBJ_id_smime_aa_encapContentType 1 2 840 113549 1 9 16 2 6 */ 4893171, /* OBJ_ms_ext_req 1 3 6 1 4 1 311 2 1 14 */
4737&(nid_objs[218]),/* OBJ_id_smime_aa_contentIdentifier 1 2 840 113549 1 9 16 2 7 */ 4894134, /* OBJ_ms_code_ind 1 3 6 1 4 1 311 2 1 21 */
4738&(nid_objs[219]),/* OBJ_id_smime_aa_macValue 1 2 840 113549 1 9 16 2 8 */ 4895135, /* OBJ_ms_code_com 1 3 6 1 4 1 311 2 1 22 */
4739&(nid_objs[220]),/* OBJ_id_smime_aa_equivalentLabels 1 2 840 113549 1 9 16 2 9 */ 4896136, /* OBJ_ms_ctl_sign 1 3 6 1 4 1 311 10 3 1 */
4740&(nid_objs[221]),/* OBJ_id_smime_aa_contentReference 1 2 840 113549 1 9 16 2 10 */ 4897137, /* OBJ_ms_sgc 1 3 6 1 4 1 311 10 3 3 */
4741&(nid_objs[222]),/* OBJ_id_smime_aa_encrypKeyPref 1 2 840 113549 1 9 16 2 11 */ 4898138, /* OBJ_ms_efs 1 3 6 1 4 1 311 10 3 4 */
4742&(nid_objs[223]),/* OBJ_id_smime_aa_signingCertificate 1 2 840 113549 1 9 16 2 12 */ 4899648, /* OBJ_ms_smartcard_login 1 3 6 1 4 1 311 20 2 2 */
4743&(nid_objs[224]),/* OBJ_id_smime_aa_smimeEncryptCerts 1 2 840 113549 1 9 16 2 13 */ 4900649, /* OBJ_ms_upn 1 3 6 1 4 1 311 20 2 3 */
4744&(nid_objs[225]),/* OBJ_id_smime_aa_timeStampToken 1 2 840 113549 1 9 16 2 14 */ 4901751, /* OBJ_camellia_128_cbc 1 2 392 200011 61 1 1 1 2 */
4745&(nid_objs[226]),/* OBJ_id_smime_aa_ets_sigPolicyId 1 2 840 113549 1 9 16 2 15 */ 4902752, /* OBJ_camellia_192_cbc 1 2 392 200011 61 1 1 1 3 */
4746&(nid_objs[227]),/* OBJ_id_smime_aa_ets_commitmentType 1 2 840 113549 1 9 16 2 16 */ 4903753, /* OBJ_camellia_256_cbc 1 2 392 200011 61 1 1 1 4 */
4747&(nid_objs[228]),/* OBJ_id_smime_aa_ets_signerLocation 1 2 840 113549 1 9 16 2 17 */ 4904196, /* OBJ_id_smime_mod_cms 1 2 840 113549 1 9 16 0 1 */
4748&(nid_objs[229]),/* OBJ_id_smime_aa_ets_signerAttr 1 2 840 113549 1 9 16 2 18 */ 4905197, /* OBJ_id_smime_mod_ess 1 2 840 113549 1 9 16 0 2 */
4749&(nid_objs[230]),/* OBJ_id_smime_aa_ets_otherSigCert 1 2 840 113549 1 9 16 2 19 */ 4906198, /* OBJ_id_smime_mod_oid 1 2 840 113549 1 9 16 0 3 */
4750&(nid_objs[231]),/* OBJ_id_smime_aa_ets_contentTimestamp 1 2 840 113549 1 9 16 2 20 */ 4907199, /* OBJ_id_smime_mod_msg_v3 1 2 840 113549 1 9 16 0 4 */
4751&(nid_objs[232]),/* OBJ_id_smime_aa_ets_CertificateRefs 1 2 840 113549 1 9 16 2 21 */ 4908200, /* OBJ_id_smime_mod_ets_eSignature_88 1 2 840 113549 1 9 16 0 5 */
4752&(nid_objs[233]),/* OBJ_id_smime_aa_ets_RevocationRefs 1 2 840 113549 1 9 16 2 22 */ 4909201, /* OBJ_id_smime_mod_ets_eSignature_97 1 2 840 113549 1 9 16 0 6 */
4753&(nid_objs[234]),/* OBJ_id_smime_aa_ets_certValues 1 2 840 113549 1 9 16 2 23 */ 4910202, /* OBJ_id_smime_mod_ets_eSigPolicy_88 1 2 840 113549 1 9 16 0 7 */
4754&(nid_objs[235]),/* OBJ_id_smime_aa_ets_revocationValues 1 2 840 113549 1 9 16 2 24 */ 4911203, /* OBJ_id_smime_mod_ets_eSigPolicy_97 1 2 840 113549 1 9 16 0 8 */
4755&(nid_objs[236]),/* OBJ_id_smime_aa_ets_escTimeStamp 1 2 840 113549 1 9 16 2 25 */ 4912204, /* OBJ_id_smime_ct_receipt 1 2 840 113549 1 9 16 1 1 */
4756&(nid_objs[237]),/* OBJ_id_smime_aa_ets_certCRLTimestamp 1 2 840 113549 1 9 16 2 26 */ 4913205, /* OBJ_id_smime_ct_authData 1 2 840 113549 1 9 16 1 2 */
4757&(nid_objs[238]),/* OBJ_id_smime_aa_ets_archiveTimeStamp 1 2 840 113549 1 9 16 2 27 */ 4914206, /* OBJ_id_smime_ct_publishCert 1 2 840 113549 1 9 16 1 3 */
4758&(nid_objs[239]),/* OBJ_id_smime_aa_signatureType 1 2 840 113549 1 9 16 2 28 */ 4915207, /* OBJ_id_smime_ct_TSTInfo 1 2 840 113549 1 9 16 1 4 */
4759&(nid_objs[240]),/* OBJ_id_smime_aa_dvcs_dvc 1 2 840 113549 1 9 16 2 29 */ 4916208, /* OBJ_id_smime_ct_TDTInfo 1 2 840 113549 1 9 16 1 5 */
4760&(nid_objs[241]),/* OBJ_id_smime_alg_ESDHwith3DES 1 2 840 113549 1 9 16 3 1 */ 4917209, /* OBJ_id_smime_ct_contentInfo 1 2 840 113549 1 9 16 1 6 */
4761&(nid_objs[242]),/* OBJ_id_smime_alg_ESDHwithRC2 1 2 840 113549 1 9 16 3 2 */ 4918210, /* OBJ_id_smime_ct_DVCSRequestData 1 2 840 113549 1 9 16 1 7 */
4762&(nid_objs[243]),/* OBJ_id_smime_alg_3DESwrap 1 2 840 113549 1 9 16 3 3 */ 4919211, /* OBJ_id_smime_ct_DVCSResponseData 1 2 840 113549 1 9 16 1 8 */
4763&(nid_objs[244]),/* OBJ_id_smime_alg_RC2wrap 1 2 840 113549 1 9 16 3 4 */ 4920786, /* OBJ_id_smime_ct_compressedData 1 2 840 113549 1 9 16 1 9 */
4764&(nid_objs[245]),/* OBJ_id_smime_alg_ESDH 1 2 840 113549 1 9 16 3 5 */ 4921787, /* OBJ_id_ct_asciiTextWithCRLF 1 2 840 113549 1 9 16 1 27 */
4765&(nid_objs[246]),/* OBJ_id_smime_alg_CMS3DESwrap 1 2 840 113549 1 9 16 3 6 */ 4922212, /* OBJ_id_smime_aa_receiptRequest 1 2 840 113549 1 9 16 2 1 */
4766&(nid_objs[247]),/* OBJ_id_smime_alg_CMSRC2wrap 1 2 840 113549 1 9 16 3 7 */ 4923213, /* OBJ_id_smime_aa_securityLabel 1 2 840 113549 1 9 16 2 2 */
4767&(nid_objs[125]),/* OBJ_zlib_compression 1 2 840 113549 1 9 16 3 8 */ 4924214, /* OBJ_id_smime_aa_mlExpandHistory 1 2 840 113549 1 9 16 2 3 */
4768&(nid_objs[248]),/* OBJ_id_smime_cd_ldap 1 2 840 113549 1 9 16 4 1 */ 4925215, /* OBJ_id_smime_aa_contentHint 1 2 840 113549 1 9 16 2 4 */
4769&(nid_objs[249]),/* OBJ_id_smime_spq_ets_sqt_uri 1 2 840 113549 1 9 16 5 1 */ 4926216, /* OBJ_id_smime_aa_msgSigDigest 1 2 840 113549 1 9 16 2 5 */
4770&(nid_objs[250]),/* OBJ_id_smime_spq_ets_sqt_unotice 1 2 840 113549 1 9 16 5 2 */ 4927217, /* OBJ_id_smime_aa_encapContentType 1 2 840 113549 1 9 16 2 6 */
4771&(nid_objs[251]),/* OBJ_id_smime_cti_ets_proofOfOrigin 1 2 840 113549 1 9 16 6 1 */ 4928218, /* OBJ_id_smime_aa_contentIdentifier 1 2 840 113549 1 9 16 2 7 */
4772&(nid_objs[252]),/* OBJ_id_smime_cti_ets_proofOfReceipt 1 2 840 113549 1 9 16 6 2 */ 4929219, /* OBJ_id_smime_aa_macValue 1 2 840 113549 1 9 16 2 8 */
4773&(nid_objs[253]),/* OBJ_id_smime_cti_ets_proofOfDelivery 1 2 840 113549 1 9 16 6 3 */ 4930220, /* OBJ_id_smime_aa_equivalentLabels 1 2 840 113549 1 9 16 2 9 */
4774&(nid_objs[254]),/* OBJ_id_smime_cti_ets_proofOfSender 1 2 840 113549 1 9 16 6 4 */ 4931221, /* OBJ_id_smime_aa_contentReference 1 2 840 113549 1 9 16 2 10 */
4775&(nid_objs[255]),/* OBJ_id_smime_cti_ets_proofOfApproval 1 2 840 113549 1 9 16 6 5 */ 4932222, /* OBJ_id_smime_aa_encrypKeyPref 1 2 840 113549 1 9 16 2 11 */
4776&(nid_objs[256]),/* OBJ_id_smime_cti_ets_proofOfCreation 1 2 840 113549 1 9 16 6 6 */ 4933223, /* OBJ_id_smime_aa_signingCertificate 1 2 840 113549 1 9 16 2 12 */
4777&(nid_objs[150]),/* OBJ_keyBag 1 2 840 113549 1 12 10 1 1 */ 4934224, /* OBJ_id_smime_aa_smimeEncryptCerts 1 2 840 113549 1 9 16 2 13 */
4778&(nid_objs[151]),/* OBJ_pkcs8ShroudedKeyBag 1 2 840 113549 1 12 10 1 2 */ 4935225, /* OBJ_id_smime_aa_timeStampToken 1 2 840 113549 1 9 16 2 14 */
4779&(nid_objs[152]),/* OBJ_certBag 1 2 840 113549 1 12 10 1 3 */ 4936226, /* OBJ_id_smime_aa_ets_sigPolicyId 1 2 840 113549 1 9 16 2 15 */
4780&(nid_objs[153]),/* OBJ_crlBag 1 2 840 113549 1 12 10 1 4 */ 4937227, /* OBJ_id_smime_aa_ets_commitmentType 1 2 840 113549 1 9 16 2 16 */
4781&(nid_objs[154]),/* OBJ_secretBag 1 2 840 113549 1 12 10 1 5 */ 4938228, /* OBJ_id_smime_aa_ets_signerLocation 1 2 840 113549 1 9 16 2 17 */
4782&(nid_objs[155]),/* OBJ_safeContentsBag 1 2 840 113549 1 12 10 1 6 */ 4939229, /* OBJ_id_smime_aa_ets_signerAttr 1 2 840 113549 1 9 16 2 18 */
4783&(nid_objs[34]),/* OBJ_idea_cbc 1 3 6 1 4 1 188 7 1 1 2 */ 4940230, /* OBJ_id_smime_aa_ets_otherSigCert 1 2 840 113549 1 9 16 2 19 */
4941231, /* OBJ_id_smime_aa_ets_contentTimestamp 1 2 840 113549 1 9 16 2 20 */
4942232, /* OBJ_id_smime_aa_ets_CertificateRefs 1 2 840 113549 1 9 16 2 21 */
4943233, /* OBJ_id_smime_aa_ets_RevocationRefs 1 2 840 113549 1 9 16 2 22 */
4944234, /* OBJ_id_smime_aa_ets_certValues 1 2 840 113549 1 9 16 2 23 */
4945235, /* OBJ_id_smime_aa_ets_revocationValues 1 2 840 113549 1 9 16 2 24 */
4946236, /* OBJ_id_smime_aa_ets_escTimeStamp 1 2 840 113549 1 9 16 2 25 */
4947237, /* OBJ_id_smime_aa_ets_certCRLTimestamp 1 2 840 113549 1 9 16 2 26 */
4948238, /* OBJ_id_smime_aa_ets_archiveTimeStamp 1 2 840 113549 1 9 16 2 27 */
4949239, /* OBJ_id_smime_aa_signatureType 1 2 840 113549 1 9 16 2 28 */
4950240, /* OBJ_id_smime_aa_dvcs_dvc 1 2 840 113549 1 9 16 2 29 */
4951241, /* OBJ_id_smime_alg_ESDHwith3DES 1 2 840 113549 1 9 16 3 1 */
4952242, /* OBJ_id_smime_alg_ESDHwithRC2 1 2 840 113549 1 9 16 3 2 */
4953243, /* OBJ_id_smime_alg_3DESwrap 1 2 840 113549 1 9 16 3 3 */
4954244, /* OBJ_id_smime_alg_RC2wrap 1 2 840 113549 1 9 16 3 4 */
4955245, /* OBJ_id_smime_alg_ESDH 1 2 840 113549 1 9 16 3 5 */
4956246, /* OBJ_id_smime_alg_CMS3DESwrap 1 2 840 113549 1 9 16 3 6 */
4957247, /* OBJ_id_smime_alg_CMSRC2wrap 1 2 840 113549 1 9 16 3 7 */
4958125, /* OBJ_zlib_compression 1 2 840 113549 1 9 16 3 8 */
4959248, /* OBJ_id_smime_cd_ldap 1 2 840 113549 1 9 16 4 1 */
4960249, /* OBJ_id_smime_spq_ets_sqt_uri 1 2 840 113549 1 9 16 5 1 */
4961250, /* OBJ_id_smime_spq_ets_sqt_unotice 1 2 840 113549 1 9 16 5 2 */
4962251, /* OBJ_id_smime_cti_ets_proofOfOrigin 1 2 840 113549 1 9 16 6 1 */
4963252, /* OBJ_id_smime_cti_ets_proofOfReceipt 1 2 840 113549 1 9 16 6 2 */
4964253, /* OBJ_id_smime_cti_ets_proofOfDelivery 1 2 840 113549 1 9 16 6 3 */
4965254, /* OBJ_id_smime_cti_ets_proofOfSender 1 2 840 113549 1 9 16 6 4 */
4966255, /* OBJ_id_smime_cti_ets_proofOfApproval 1 2 840 113549 1 9 16 6 5 */
4967256, /* OBJ_id_smime_cti_ets_proofOfCreation 1 2 840 113549 1 9 16 6 6 */
4968150, /* OBJ_keyBag 1 2 840 113549 1 12 10 1 1 */
4969151, /* OBJ_pkcs8ShroudedKeyBag 1 2 840 113549 1 12 10 1 2 */
4970152, /* OBJ_certBag 1 2 840 113549 1 12 10 1 3 */
4971153, /* OBJ_crlBag 1 2 840 113549 1 12 10 1 4 */
4972154, /* OBJ_secretBag 1 2 840 113549 1 12 10 1 5 */
4973155, /* OBJ_safeContentsBag 1 2 840 113549 1 12 10 1 6 */
497434, /* OBJ_idea_cbc 1 3 6 1 4 1 188 7 1 1 2 */
4784}; 4975};
4785 4976
diff --git a/src/lib/libssl/src/crypto/objects/obj_dat.pl b/src/lib/libssl/src/crypto/objects/obj_dat.pl
index 7de2f77afd..c67f71c327 100644
--- a/src/lib/libssl/src/crypto/objects/obj_dat.pl
+++ b/src/lib/libssl/src/crypto/objects/obj_dat.pl
@@ -2,9 +2,7 @@
2 2
3# fixes bug in floating point emulation on sparc64 when 3# fixes bug in floating point emulation on sparc64 when
4# this script produces off-by-one output on sparc64 4# this script produces off-by-one output on sparc64
5eval 'use integer;'; 5use integer;
6
7print STDERR "Warning: perl module integer not found.\n" if ($@);
8 6
9sub obj_cmp 7sub obj_cmp
10 { 8 {
@@ -150,13 +148,13 @@ for ($i=0; $i<$n; $i++)
150@a=grep(defined($sn{$nid{$_}}),0 .. $n); 148@a=grep(defined($sn{$nid{$_}}),0 .. $n);
151foreach (sort { $sn{$nid{$a}} cmp $sn{$nid{$b}} } @a) 149foreach (sort { $sn{$nid{$a}} cmp $sn{$nid{$b}} } @a)
152 { 150 {
153 push(@sn,sprintf("&(nid_objs[%2d]),/* \"$sn{$nid{$_}}\" */\n",$_)); 151 push(@sn,sprintf("%2d,\t/* \"$sn{$nid{$_}}\" */\n",$_));
154 } 152 }
155 153
156@a=grep(defined($ln{$nid{$_}}),0 .. $n); 154@a=grep(defined($ln{$nid{$_}}),0 .. $n);
157foreach (sort { $ln{$nid{$a}} cmp $ln{$nid{$b}} } @a) 155foreach (sort { $ln{$nid{$a}} cmp $ln{$nid{$b}} } @a)
158 { 156 {
159 push(@ln,sprintf("&(nid_objs[%2d]),/* \"$ln{$nid{$_}}\" */\n",$_)); 157 push(@ln,sprintf("%2d,\t/* \"$ln{$nid{$_}}\" */\n",$_));
160 } 158 }
161 159
162@a=grep(defined($obj{$nid{$_}}),0 .. $n); 160@a=grep(defined($obj{$nid{$_}}),0 .. $n);
@@ -166,7 +164,7 @@ foreach (sort obj_cmp @a)
166 $v=$objd{$m}; 164 $v=$objd{$m};
167 $v =~ s/L//g; 165 $v =~ s/L//g;
168 $v =~ s/,/ /g; 166 $v =~ s/,/ /g;
169 push(@ob,sprintf("&(nid_objs[%2d]),/* %-32s %s */\n",$_,$m,$v)); 167 push(@ob,sprintf("%2d,\t/* %-32s %s */\n",$_,$m,$v));
170 } 168 }
171 169
172print OUT <<'EOF'; 170print OUT <<'EOF';
@@ -241,11 +239,11 @@ printf OUT "#define NUM_SN %d\n",$#sn+1;
241printf OUT "#define NUM_LN %d\n",$#ln+1; 239printf OUT "#define NUM_LN %d\n",$#ln+1;
242printf OUT "#define NUM_OBJ %d\n\n",$#ob+1; 240printf OUT "#define NUM_OBJ %d\n\n",$#ob+1;
243 241
244printf OUT "static unsigned char lvalues[%d]={\n",$lvalues+1; 242printf OUT "static const unsigned char lvalues[%d]={\n",$lvalues+1;
245print OUT @lvalues; 243print OUT @lvalues;
246print OUT "};\n\n"; 244print OUT "};\n\n";
247 245
248printf OUT "static ASN1_OBJECT nid_objs[NUM_NID]={\n"; 246printf OUT "static const ASN1_OBJECT nid_objs[NUM_NID]={\n";
249foreach (@out) 247foreach (@out)
250 { 248 {
251 if (length($_) > 75) 249 if (length($_) > 75)
@@ -269,15 +267,15 @@ foreach (@out)
269 } 267 }
270print OUT "};\n\n"; 268print OUT "};\n\n";
271 269
272printf OUT "static ASN1_OBJECT *sn_objs[NUM_SN]={\n"; 270printf OUT "static const unsigned int sn_objs[NUM_SN]={\n";
273print OUT @sn; 271print OUT @sn;
274print OUT "};\n\n"; 272print OUT "};\n\n";
275 273
276printf OUT "static ASN1_OBJECT *ln_objs[NUM_LN]={\n"; 274printf OUT "static const unsigned int ln_objs[NUM_LN]={\n";
277print OUT @ln; 275print OUT @ln;
278print OUT "};\n\n"; 276print OUT "};\n\n";
279 277
280printf OUT "static ASN1_OBJECT *obj_objs[NUM_OBJ]={\n"; 278printf OUT "static const unsigned int obj_objs[NUM_OBJ]={\n";
281print OUT @ob; 279print OUT @ob;
282print OUT "};\n\n"; 280print OUT "};\n\n";
283 281
diff --git a/src/lib/libssl/src/crypto/objects/obj_err.c b/src/lib/libssl/src/crypto/objects/obj_err.c
index 12b48850c6..2e7a034c3f 100644
--- a/src/lib/libssl/src/crypto/objects/obj_err.c
+++ b/src/lib/libssl/src/crypto/objects/obj_err.c
@@ -1,6 +1,6 @@
1/* crypto/objects/obj_err.c */ 1/* crypto/objects/obj_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
diff --git a/src/lib/libssl/src/crypto/objects/obj_lib.c b/src/lib/libssl/src/crypto/objects/obj_lib.c
index 706fa0b0e7..23e9d48cdf 100644
--- a/src/lib/libssl/src/crypto/objects/obj_lib.c
+++ b/src/lib/libssl/src/crypto/objects/obj_lib.c
@@ -66,7 +66,8 @@ ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o)
66 { 66 {
67 ASN1_OBJECT *r; 67 ASN1_OBJECT *r;
68 int i; 68 int i;
69 char *ln=NULL; 69 char *ln=NULL,*sn=NULL;
70 unsigned char *data=NULL;
70 71
71 if (o == NULL) return(NULL); 72 if (o == NULL) return(NULL);
72 if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC)) 73 if (!(o->flags & ASN1_OBJECT_FLAG_DYNAMIC))
@@ -79,42 +80,42 @@ ASN1_OBJECT *OBJ_dup(const ASN1_OBJECT *o)
79 OBJerr(OBJ_F_OBJ_DUP,ERR_R_ASN1_LIB); 80 OBJerr(OBJ_F_OBJ_DUP,ERR_R_ASN1_LIB);
80 return(NULL); 81 return(NULL);
81 } 82 }
82 r->data=OPENSSL_malloc(o->length); 83 data=OPENSSL_malloc(o->length);
83 if (r->data == NULL) 84 if (data == NULL)
84 goto err; 85 goto err;
85 if (o->data != NULL) 86 if (o->data != NULL)
86 memcpy(r->data,o->data,o->length); 87 memcpy(data,o->data,o->length);
88 /* once data attached to object it remains const */
89 r->data = data;
87 r->length=o->length; 90 r->length=o->length;
88 r->nid=o->nid; 91 r->nid=o->nid;
89 r->ln=r->sn=NULL; 92 r->ln=r->sn=NULL;
90 if (o->ln != NULL) 93 if (o->ln != NULL)
91 { 94 {
92 i=strlen(o->ln)+1; 95 i=strlen(o->ln)+1;
93 r->ln=ln=OPENSSL_malloc(i); 96 ln=OPENSSL_malloc(i);
94 if (r->ln == NULL) goto err; 97 if (ln == NULL) goto err;
95 memcpy(ln,o->ln,i); 98 memcpy(ln,o->ln,i);
99 r->ln=ln;
96 } 100 }
97 101
98 if (o->sn != NULL) 102 if (o->sn != NULL)
99 { 103 {
100 char *s;
101
102 i=strlen(o->sn)+1; 104 i=strlen(o->sn)+1;
103 r->sn=s=OPENSSL_malloc(i); 105 sn=OPENSSL_malloc(i);
104 if (r->sn == NULL) goto err; 106 if (sn == NULL) goto err;
105 memcpy(s,o->sn,i); 107 memcpy(sn,o->sn,i);
108 r->sn=sn;
106 } 109 }
107 r->flags=o->flags|(ASN1_OBJECT_FLAG_DYNAMIC| 110 r->flags=o->flags|(ASN1_OBJECT_FLAG_DYNAMIC|
108 ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|ASN1_OBJECT_FLAG_DYNAMIC_DATA); 111 ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|ASN1_OBJECT_FLAG_DYNAMIC_DATA);
109 return(r); 112 return(r);
110err: 113err:
111 OBJerr(OBJ_F_OBJ_DUP,ERR_R_MALLOC_FAILURE); 114 OBJerr(OBJ_F_OBJ_DUP,ERR_R_MALLOC_FAILURE);
112 if (r != NULL) 115 if (ln != NULL) OPENSSL_free(ln);
113 { 116 if (sn != NULL) OPENSSL_free(sn);
114 if (ln != NULL) OPENSSL_free(ln); 117 if (data != NULL) OPENSSL_free(data);
115 if (r->data != NULL) OPENSSL_free(r->data); 118 if (r != NULL) OPENSSL_free(r);
116 OPENSSL_free(r);
117 }
118 return(NULL); 119 return(NULL);
119 } 120 }
120 121
diff --git a/src/lib/libssl/src/crypto/objects/obj_mac.h b/src/lib/libssl/src/crypto/objects/obj_mac.h
index ad5f7cfc10..282f11a8a8 100644
--- a/src/lib/libssl/src/crypto/objects/obj_mac.h
+++ b/src/lib/libssl/src/crypto/objects/obj_mac.h
@@ -122,7 +122,7 @@
122 122
123#define SN_wap_wsg "wap-wsg" 123#define SN_wap_wsg "wap-wsg"
124#define NID_wap_wsg 679 124#define NID_wap_wsg 679
125#define OBJ_wap_wsg OBJ_wap,13L 125#define OBJ_wap_wsg OBJ_wap,1L
126 126
127#define SN_selected_attribute_types "selected-attribute-types" 127#define SN_selected_attribute_types "selected-attribute-types"
128#define LN_selected_attribute_types "Selected Attribute Types" 128#define LN_selected_attribute_types "Selected Attribute Types"
@@ -2049,6 +2049,7 @@
2049#define NID_stateOrProvinceName 16 2049#define NID_stateOrProvinceName 16
2050#define OBJ_stateOrProvinceName OBJ_X509,8L 2050#define OBJ_stateOrProvinceName OBJ_X509,8L
2051 2051
2052#define SN_streetAddress "street"
2052#define LN_streetAddress "streetAddress" 2053#define LN_streetAddress "streetAddress"
2053#define NID_streetAddress 660 2054#define NID_streetAddress 660
2054#define OBJ_streetAddress OBJ_X509,9L 2055#define OBJ_streetAddress OBJ_X509,9L
@@ -2063,6 +2064,7 @@
2063#define NID_organizationalUnitName 18 2064#define NID_organizationalUnitName 18
2064#define OBJ_organizationalUnitName OBJ_X509,11L 2065#define OBJ_organizationalUnitName OBJ_X509,11L
2065 2066
2067#define SN_title "title"
2066#define LN_title "title" 2068#define LN_title "title"
2067#define NID_title 106 2069#define NID_title 106
2068#define OBJ_title OBJ_X509,12L 2070#define OBJ_title OBJ_X509,12L
@@ -2071,10 +2073,114 @@
2071#define NID_description 107 2073#define NID_description 107
2072#define OBJ_description OBJ_X509,13L 2074#define OBJ_description OBJ_X509,13L
2073 2075
2076#define LN_searchGuide "searchGuide"
2077#define NID_searchGuide 859
2078#define OBJ_searchGuide OBJ_X509,14L
2079
2080#define LN_businessCategory "businessCategory"
2081#define NID_businessCategory 860
2082#define OBJ_businessCategory OBJ_X509,15L
2083
2084#define LN_postalAddress "postalAddress"
2085#define NID_postalAddress 861
2086#define OBJ_postalAddress OBJ_X509,16L
2087
2074#define LN_postalCode "postalCode" 2088#define LN_postalCode "postalCode"
2075#define NID_postalCode 661 2089#define NID_postalCode 661
2076#define OBJ_postalCode OBJ_X509,17L 2090#define OBJ_postalCode OBJ_X509,17L
2077 2091
2092#define LN_postOfficeBox "postOfficeBox"
2093#define NID_postOfficeBox 862
2094#define OBJ_postOfficeBox OBJ_X509,18L
2095
2096#define LN_physicalDeliveryOfficeName "physicalDeliveryOfficeName"
2097#define NID_physicalDeliveryOfficeName 863
2098#define OBJ_physicalDeliveryOfficeName OBJ_X509,19L
2099
2100#define LN_telephoneNumber "telephoneNumber"
2101#define NID_telephoneNumber 864
2102#define OBJ_telephoneNumber OBJ_X509,20L
2103
2104#define LN_telexNumber "telexNumber"
2105#define NID_telexNumber 865
2106#define OBJ_telexNumber OBJ_X509,21L
2107
2108#define LN_teletexTerminalIdentifier "teletexTerminalIdentifier"
2109#define NID_teletexTerminalIdentifier 866
2110#define OBJ_teletexTerminalIdentifier OBJ_X509,22L
2111
2112#define LN_facsimileTelephoneNumber "facsimileTelephoneNumber"
2113#define NID_facsimileTelephoneNumber 867
2114#define OBJ_facsimileTelephoneNumber OBJ_X509,23L
2115
2116#define LN_x121Address "x121Address"
2117#define NID_x121Address 868
2118#define OBJ_x121Address OBJ_X509,24L
2119
2120#define LN_internationaliSDNNumber "internationaliSDNNumber"
2121#define NID_internationaliSDNNumber 869
2122#define OBJ_internationaliSDNNumber OBJ_X509,25L
2123
2124#define LN_registeredAddress "registeredAddress"
2125#define NID_registeredAddress 870
2126#define OBJ_registeredAddress OBJ_X509,26L
2127
2128#define LN_destinationIndicator "destinationIndicator"
2129#define NID_destinationIndicator 871
2130#define OBJ_destinationIndicator OBJ_X509,27L
2131
2132#define LN_preferredDeliveryMethod "preferredDeliveryMethod"
2133#define NID_preferredDeliveryMethod 872
2134#define OBJ_preferredDeliveryMethod OBJ_X509,28L
2135
2136#define LN_presentationAddress "presentationAddress"
2137#define NID_presentationAddress 873
2138#define OBJ_presentationAddress OBJ_X509,29L
2139
2140#define LN_supportedApplicationContext "supportedApplicationContext"
2141#define NID_supportedApplicationContext 874
2142#define OBJ_supportedApplicationContext OBJ_X509,30L
2143
2144#define SN_member "member"
2145#define NID_member 875
2146#define OBJ_member OBJ_X509,31L
2147
2148#define SN_owner "owner"
2149#define NID_owner 876
2150#define OBJ_owner OBJ_X509,32L
2151
2152#define LN_roleOccupant "roleOccupant"
2153#define NID_roleOccupant 877
2154#define OBJ_roleOccupant OBJ_X509,33L
2155
2156#define SN_seeAlso "seeAlso"
2157#define NID_seeAlso 878
2158#define OBJ_seeAlso OBJ_X509,34L
2159
2160#define LN_userPassword "userPassword"
2161#define NID_userPassword 879
2162#define OBJ_userPassword OBJ_X509,35L
2163
2164#define LN_userCertificate "userCertificate"
2165#define NID_userCertificate 880
2166#define OBJ_userCertificate OBJ_X509,36L
2167
2168#define LN_cACertificate "cACertificate"
2169#define NID_cACertificate 881
2170#define OBJ_cACertificate OBJ_X509,37L
2171
2172#define LN_authorityRevocationList "authorityRevocationList"
2173#define NID_authorityRevocationList 882
2174#define OBJ_authorityRevocationList OBJ_X509,38L
2175
2176#define LN_certificateRevocationList "certificateRevocationList"
2177#define NID_certificateRevocationList 883
2178#define OBJ_certificateRevocationList OBJ_X509,39L
2179
2180#define LN_crossCertificatePair "crossCertificatePair"
2181#define NID_crossCertificatePair 884
2182#define OBJ_crossCertificatePair OBJ_X509,40L
2183
2078#define SN_name "name" 2184#define SN_name "name"
2079#define LN_name "name" 2185#define LN_name "name"
2080#define NID_name 173 2186#define NID_name 173
@@ -2085,6 +2191,7 @@
2085#define NID_givenName 99 2191#define NID_givenName 99
2086#define OBJ_givenName OBJ_X509,42L 2192#define OBJ_givenName OBJ_X509,42L
2087 2193
2194#define SN_initials "initials"
2088#define LN_initials "initials" 2195#define LN_initials "initials"
2089#define NID_initials 101 2196#define NID_initials 101
2090#define OBJ_initials OBJ_X509,43L 2197#define OBJ_initials OBJ_X509,43L
@@ -2102,6 +2209,38 @@
2102#define NID_dnQualifier 174 2209#define NID_dnQualifier 174
2103#define OBJ_dnQualifier OBJ_X509,46L 2210#define OBJ_dnQualifier OBJ_X509,46L
2104 2211
2212#define LN_enhancedSearchGuide "enhancedSearchGuide"
2213#define NID_enhancedSearchGuide 885
2214#define OBJ_enhancedSearchGuide OBJ_X509,47L
2215
2216#define LN_protocolInformation "protocolInformation"
2217#define NID_protocolInformation 886
2218#define OBJ_protocolInformation OBJ_X509,48L
2219
2220#define LN_distinguishedName "distinguishedName"
2221#define NID_distinguishedName 887
2222#define OBJ_distinguishedName OBJ_X509,49L
2223
2224#define LN_uniqueMember "uniqueMember"
2225#define NID_uniqueMember 888
2226#define OBJ_uniqueMember OBJ_X509,50L
2227
2228#define LN_houseIdentifier "houseIdentifier"
2229#define NID_houseIdentifier 889
2230#define OBJ_houseIdentifier OBJ_X509,51L
2231
2232#define LN_supportedAlgorithms "supportedAlgorithms"
2233#define NID_supportedAlgorithms 890
2234#define OBJ_supportedAlgorithms OBJ_X509,52L
2235
2236#define LN_deltaRevocationList "deltaRevocationList"
2237#define NID_deltaRevocationList 891
2238#define OBJ_deltaRevocationList OBJ_X509,53L
2239
2240#define SN_dmdName "dmdName"
2241#define NID_dmdName 892
2242#define OBJ_dmdName OBJ_X509,54L
2243
2105#define LN_pseudonym "pseudonym" 2244#define LN_pseudonym "pseudonym"
2106#define NID_pseudonym 510 2245#define NID_pseudonym 510
2107#define OBJ_pseudonym OBJ_X509,65L 2246#define OBJ_pseudonym OBJ_X509,65L
diff --git a/src/lib/libssl/src/crypto/objects/obj_mac.num b/src/lib/libssl/src/crypto/objects/obj_mac.num
index e3f56bc52c..8c50aac27f 100644
--- a/src/lib/libssl/src/crypto/objects/obj_mac.num
+++ b/src/lib/libssl/src/crypto/objects/obj_mac.num
@@ -856,3 +856,37 @@ hmac 855
856LocalKeySet 856 856LocalKeySet 856
857freshest_crl 857 857freshest_crl 857
858id_on_permanentIdentifier 858 858id_on_permanentIdentifier 858
859searchGuide 859
860businessCategory 860
861postalAddress 861
862postOfficeBox 862
863physicalDeliveryOfficeName 863
864telephoneNumber 864
865telexNumber 865
866teletexTerminalIdentifier 866
867facsimileTelephoneNumber 867
868x121Address 868
869internationaliSDNNumber 869
870registeredAddress 870
871destinationIndicator 871
872preferredDeliveryMethod 872
873presentationAddress 873
874supportedApplicationContext 874
875member 875
876owner 876
877roleOccupant 877
878seeAlso 878
879userPassword 879
880userCertificate 880
881cACertificate 881
882authorityRevocationList 882
883certificateRevocationList 883
884crossCertificatePair 884
885enhancedSearchGuide 885
886protocolInformation 886
887distinguishedName 887
888uniqueMember 888
889houseIdentifier 889
890supportedAlgorithms 890
891deltaRevocationList 891
892dmdName 892
diff --git a/src/lib/libssl/src/crypto/objects/objects.h b/src/lib/libssl/src/crypto/objects/objects.h
index 7242f76fb0..bd0ee52feb 100644
--- a/src/lib/libssl/src/crypto/objects/objects.h
+++ b/src/lib/libssl/src/crypto/objects/objects.h
@@ -1011,10 +1011,91 @@ int OBJ_txt2nid(const char *s);
1011int OBJ_ln2nid(const char *s); 1011int OBJ_ln2nid(const char *s);
1012int OBJ_sn2nid(const char *s); 1012int OBJ_sn2nid(const char *s);
1013int OBJ_cmp(const ASN1_OBJECT *a,const ASN1_OBJECT *b); 1013int OBJ_cmp(const ASN1_OBJECT *a,const ASN1_OBJECT *b);
1014const char * OBJ_bsearch(const char *key,const char *base,int num,int size, 1014const void * OBJ_bsearch_(const void *key,const void *base,int num,int size,
1015 int (*cmp)(const void *, const void *)); 1015 int (*cmp)(const void *, const void *));
1016const char * OBJ_bsearch_ex(const char *key,const char *base,int num, 1016const void * OBJ_bsearch_ex_(const void *key,const void *base,int num,
1017 int size, int (*cmp)(const void *, const void *), int flags); 1017 int size,
1018 int (*cmp)(const void *, const void *),
1019 int flags);
1020
1021#define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, nm) \
1022 static int nm##_cmp_BSEARCH_CMP_FN(const void *, const void *); \
1023 static int nm##_cmp(type1 const *, type2 const *); \
1024 scope type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num)
1025
1026#define DECLARE_OBJ_BSEARCH_CMP_FN(type1, type2, cmp) \
1027 _DECLARE_OBJ_BSEARCH_CMP_FN(static, type1, type2, cmp)
1028#define DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \
1029 type2 * OBJ_bsearch_##nm(type1 *key, type2 const *base, int num)
1030
1031/*
1032 * Unsolved problem: if a type is actually a pointer type, like
1033 * nid_triple is, then its impossible to get a const where you need
1034 * it. Consider:
1035 *
1036 * typedef int nid_triple[3];
1037 * const void *a_;
1038 * const nid_triple const *a = a_;
1039 *
1040 * The assignement discards a const because what you really want is:
1041 *
1042 * const int const * const *a = a_;
1043 *
1044 * But if you do that, you lose the fact that a is an array of 3 ints,
1045 * which breaks comparison functions.
1046 *
1047 * Thus we end up having to cast, sadly, or unpack the
1048 * declarations. Or, as I finally did in this case, delcare nid_triple
1049 * to be a struct, which it should have been in the first place.
1050 *
1051 * Ben, August 2008.
1052 *
1053 * Also, strictly speaking not all types need be const, but handling
1054 * the non-constness means a lot of complication, and in practice
1055 * comparison routines do always not touch their arguments.
1056 */
1057
1058#define IMPLEMENT_OBJ_BSEARCH_CMP_FN(type1, type2, nm) \
1059 static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \
1060 { \
1061 type1 const *a = a_; \
1062 type2 const *b = b_; \
1063 return nm##_cmp(a,b); \
1064 } \
1065 static type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \
1066 { \
1067 return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \
1068 nm##_cmp_BSEARCH_CMP_FN); \
1069 } \
1070 extern void dummy_prototype(void)
1071
1072#define IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(type1, type2, nm) \
1073 static int nm##_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_) \
1074 { \
1075 type1 const *a = a_; \
1076 type2 const *b = b_; \
1077 return nm##_cmp(a,b); \
1078 } \
1079 type2 *OBJ_bsearch_##nm(type1 *key, type2 const *base, int num) \
1080 { \
1081 return (type2 *)OBJ_bsearch_(key, base, num, sizeof(type2), \
1082 nm##_cmp_BSEARCH_CMP_FN); \
1083 } \
1084 extern void dummy_prototype(void)
1085
1086#define OBJ_bsearch(type1,key,type2,base,num,cmp) \
1087 ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \
1088 num,sizeof(type2), \
1089 ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \
1090 (void)CHECKED_PTR_OF(type2,cmp##_type_2), \
1091 cmp##_BSEARCH_CMP_FN)))
1092
1093#define OBJ_bsearch_ex(type1,key,type2,base,num,cmp,flags) \
1094 ((type2 *)OBJ_bsearch_ex_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \
1095 num,sizeof(type2), \
1096 ((void)CHECKED_PTR_OF(type1,cmp##_type_1), \
1097 (void)type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \
1098 cmp##_BSEARCH_CMP_FN)),flags)
1018 1099
1019int OBJ_new_nid(int num); 1100int OBJ_new_nid(int num);
1020int OBJ_add_object(const ASN1_OBJECT *obj); 1101int OBJ_add_object(const ASN1_OBJECT *obj);
@@ -1022,6 +1103,14 @@ int OBJ_create(const char *oid,const char *sn,const char *ln);
1022void OBJ_cleanup(void ); 1103void OBJ_cleanup(void );
1023int OBJ_create_objects(BIO *in); 1104int OBJ_create_objects(BIO *in);
1024 1105
1106int OBJ_find_sigid_algs(int signid, int *pdig_nid, int *ppkey_nid);
1107int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid);
1108int OBJ_add_sigid(int signid, int dig_id, int pkey_id);
1109void OBJ_sigid_free(void);
1110
1111extern int obj_cleanup_defer;
1112void check_defer(int nid);
1113
1025/* BEGIN ERROR CODES */ 1114/* BEGIN ERROR CODES */
1026/* The following lines are auto generated by the script mkerr.pl. Any changes 1115/* The following lines are auto generated by the script mkerr.pl. Any changes
1027 * made after this point may be overwritten when the script is next run. 1116 * made after this point may be overwritten when the script is next run.
diff --git a/src/lib/libssl/src/crypto/objects/objects.pl b/src/lib/libssl/src/crypto/objects/objects.pl
index 76c06cc8f9..15c00bbd52 100644
--- a/src/lib/libssl/src/crypto/objects/objects.pl
+++ b/src/lib/libssl/src/crypto/objects/objects.pl
@@ -14,6 +14,8 @@ while(<NUMIN>)
14 $Cname =~ s/^X//; 14 $Cname =~ s/^X//;
15 if (defined($nidn{$mynum})) 15 if (defined($nidn{$mynum}))
16 { die "$ARGV[1]:$o:There's already an object with NID ",$mynum," on line ",$order{$mynum},"\n"; } 16 { die "$ARGV[1]:$o:There's already an object with NID ",$mynum," on line ",$order{$mynum},"\n"; }
17 if (defined($nid{$Cname}))
18 { die "$ARGV[1]:$o:There's already an object with name ",$Cname," on line ",$order{$nid{$Cname}},"\n"; }
17 $nid{$Cname} = $mynum; 19 $nid{$Cname} = $mynum;
18 $nidn{$mynum} = $Cname; 20 $nidn{$mynum} = $Cname;
19 $order{$mynum} = $o; 21 $order{$mynum} = $o;
@@ -102,6 +104,7 @@ while (<IN>)
102 $max_nid++; 104 $max_nid++;
103 $nid{$Cname} = $max_nid; 105 $nid{$Cname} = $max_nid;
104 $nidn{$max_nid} = $Cname; 106 $nidn{$max_nid} = $Cname;
107print STDERR "Added OID $Cname\n";
105 } 108 }
106 $Cname=""; 109 $Cname="";
107 } 110 }
diff --git a/src/lib/libssl/src/crypto/objects/objects.txt b/src/lib/libssl/src/crypto/objects/objects.txt
index a6a811b8e7..e61fe60cbf 100644
--- a/src/lib/libssl/src/crypto/objects/objects.txt
+++ b/src/lib/libssl/src/crypto/objects/objects.txt
@@ -20,7 +20,7 @@ identified-organization 132 : certicom-arc
20joint-iso-itu-t 23 : international-organizations : International Organizations 20joint-iso-itu-t 23 : international-organizations : International Organizations
21 21
22international-organizations 43 : wap 22international-organizations 43 : wap
23wap 13 : wap-wsg 23wap 1 : wap-wsg
24 24
25joint-iso-itu-t 5 1 5 : selected-attribute-types : Selected Attribute Types 25joint-iso-itu-t 5 1 5 : selected-attribute-types : Selected Attribute Types
26 26
@@ -664,18 +664,52 @@ X509 5 : : serialNumber
664X509 6 : C : countryName 664X509 6 : C : countryName
665X509 7 : L : localityName 665X509 7 : L : localityName
666X509 8 : ST : stateOrProvinceName 666X509 8 : ST : stateOrProvinceName
667X509 9 : : streetAddress 667X509 9 : street : streetAddress
668X509 10 : O : organizationName 668X509 10 : O : organizationName
669X509 11 : OU : organizationalUnitName 669X509 11 : OU : organizationalUnitName
670X509 12 : : title 670X509 12 : title : title
671X509 13 : : description 671X509 13 : : description
672X509 17 : : postalCode 672X509 14 : : searchGuide
673X509 15 : : businessCategory
674X509 16 : : postalAddress
675X509 17 : : postalCode
676X509 18 : : postOfficeBox
677X509 19 : : physicalDeliveryOfficeName
678X509 20 : : telephoneNumber
679X509 21 : : telexNumber
680X509 22 : : teletexTerminalIdentifier
681X509 23 : : facsimileTelephoneNumber
682X509 24 : : x121Address
683X509 25 : : internationaliSDNNumber
684X509 26 : : registeredAddress
685X509 27 : : destinationIndicator
686X509 28 : : preferredDeliveryMethod
687X509 29 : : presentationAddress
688X509 30 : : supportedApplicationContext
689X509 31 : member :
690X509 32 : owner :
691X509 33 : : roleOccupant
692X509 34 : seeAlso :
693X509 35 : : userPassword
694X509 36 : : userCertificate
695X509 37 : : cACertificate
696X509 38 : : authorityRevocationList
697X509 39 : : certificateRevocationList
698X509 40 : : crossCertificatePair
673X509 41 : name : name 699X509 41 : name : name
674X509 42 : GN : givenName 700X509 42 : GN : givenName
675X509 43 : : initials 701X509 43 : initials : initials
676X509 44 : : generationQualifier 702X509 44 : : generationQualifier
677X509 45 : : x500UniqueIdentifier 703X509 45 : : x500UniqueIdentifier
678X509 46 : dnQualifier : dnQualifier 704X509 46 : dnQualifier : dnQualifier
705X509 47 : : enhancedSearchGuide
706X509 48 : : protocolInformation
707X509 49 : : distinguishedName
708X509 50 : : uniqueMember
709X509 51 : : houseIdentifier
710X509 52 : : supportedAlgorithms
711X509 53 : : deltaRevocationList
712X509 54 : dmdName :
679X509 65 : : pseudonym 713X509 65 : : pseudonym
680X509 72 : role : role 714X509 72 : role : role
681 715
diff --git a/src/lib/libssl/src/crypto/ocsp/Makefile b/src/lib/libssl/src/crypto/ocsp/Makefile
index 30a00b3372..60c414cf4d 100644
--- a/src/lib/libssl/src/crypto/ocsp/Makefile
+++ b/src/lib/libssl/src/crypto/ocsp/Makefile
@@ -36,7 +36,7 @@ top:
36all: lib 36all: lib
37 37
38lib: $(LIBOBJ) 38lib: $(LIBOBJ)
39 $(ARX) $(LIB) $(LIBOBJ) 39 $(AR) $(LIB) $(LIBOBJ)
40 $(RANLIB) $(LIB) || echo Never mind. 40 $(RANLIB) $(LIB) || echo Never mind.
41 @touch lib 41 @touch lib
42 42
@@ -82,10 +82,9 @@ ocsp_asn.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
82ocsp_asn.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 82ocsp_asn.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
83ocsp_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 83ocsp_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
84ocsp_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 84ocsp_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
85ocsp_asn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 85ocsp_asn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
86ocsp_asn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 86ocsp_asn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
87ocsp_asn.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h 87ocsp_asn.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
88ocsp_asn.o: ../../include/openssl/opensslconf.h
89ocsp_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 88ocsp_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
90ocsp_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 89ocsp_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
91ocsp_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 90ocsp_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -98,25 +97,24 @@ ocsp_cl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
98ocsp_cl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 97ocsp_cl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
99ocsp_cl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 98ocsp_cl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
100ocsp_cl.o: ../../include/openssl/err.h ../../include/openssl/evp.h 99ocsp_cl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
101ocsp_cl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 100ocsp_cl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
102ocsp_cl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 101ocsp_cl.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
103ocsp_cl.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 102ocsp_cl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
104ocsp_cl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 103ocsp_cl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
105ocsp_cl.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 104ocsp_cl.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
106ocsp_cl.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 105ocsp_cl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
107ocsp_cl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 106ocsp_cl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
108ocsp_cl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 107ocsp_cl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
109ocsp_cl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 108ocsp_cl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
110ocsp_cl.o: ../../include/openssl/x509v3.h ../cryptlib.h ocsp_cl.c 109ocsp_cl.o: ../cryptlib.h ocsp_cl.c
111ocsp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 110ocsp_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
112ocsp_err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 111ocsp_err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
113ocsp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 112ocsp_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
114ocsp_err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 113ocsp_err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
115ocsp_err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 114ocsp_err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
116ocsp_err.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 115ocsp_err.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
117ocsp_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 116ocsp_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
118ocsp_err.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h 117ocsp_err.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
119ocsp_err.o: ../../include/openssl/opensslconf.h
120ocsp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 118ocsp_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
121ocsp_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 119ocsp_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
122ocsp_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 120ocsp_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -129,9 +127,9 @@ ocsp_ext.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
129ocsp_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 127ocsp_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
130ocsp_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 128ocsp_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
131ocsp_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h 129ocsp_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h
132ocsp_ext.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 130ocsp_ext.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
133ocsp_ext.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 131ocsp_ext.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
134ocsp_ext.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 132ocsp_ext.o: ../../include/openssl/opensslconf.h
135ocsp_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 133ocsp_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
136ocsp_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 134ocsp_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
137ocsp_ext.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 135ocsp_ext.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -144,22 +142,21 @@ ocsp_ht.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
144ocsp_ht.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 142ocsp_ht.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
145ocsp_ht.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 143ocsp_ht.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
146ocsp_ht.o: ../../include/openssl/err.h ../../include/openssl/evp.h 144ocsp_ht.o: ../../include/openssl/err.h ../../include/openssl/evp.h
147ocsp_ht.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 145ocsp_ht.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
148ocsp_ht.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 146ocsp_ht.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
149ocsp_ht.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 147ocsp_ht.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
150ocsp_ht.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 148ocsp_ht.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
151ocsp_ht.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 149ocsp_ht.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
152ocsp_ht.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 150ocsp_ht.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
153ocsp_ht.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 151ocsp_ht.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
154ocsp_ht.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 152ocsp_ht.o: ../../include/openssl/x509v3.h ocsp_ht.c
155ocsp_ht.o: ocsp_ht.c
156ocsp_lib.o: ../../e_os.h ../../include/openssl/asn1.h 153ocsp_lib.o: ../../e_os.h ../../include/openssl/asn1.h
157ocsp_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 154ocsp_lib.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
158ocsp_lib.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 155ocsp_lib.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
159ocsp_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 156ocsp_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
160ocsp_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 157ocsp_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
161ocsp_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 158ocsp_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
162ocsp_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 159ocsp_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
163ocsp_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 160ocsp_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
164ocsp_lib.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 161ocsp_lib.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
165ocsp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 162ocsp_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -174,10 +171,9 @@ ocsp_prn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
174ocsp_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 171ocsp_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
175ocsp_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 172ocsp_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
176ocsp_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 173ocsp_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
177ocsp_prn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 174ocsp_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
178ocsp_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 175ocsp_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
179ocsp_prn.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h 176ocsp_prn.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
180ocsp_prn.o: ../../include/openssl/opensslconf.h
181ocsp_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 177ocsp_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
182ocsp_prn.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 178ocsp_prn.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
183ocsp_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 179ocsp_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -191,9 +187,9 @@ ocsp_srv.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
191ocsp_srv.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 187ocsp_srv.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
192ocsp_srv.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 188ocsp_srv.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
193ocsp_srv.o: ../../include/openssl/err.h ../../include/openssl/evp.h 189ocsp_srv.o: ../../include/openssl/err.h ../../include/openssl/evp.h
194ocsp_srv.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 190ocsp_srv.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
195ocsp_srv.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 191ocsp_srv.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
196ocsp_srv.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 192ocsp_srv.o: ../../include/openssl/opensslconf.h
197ocsp_srv.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 193ocsp_srv.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
198ocsp_srv.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 194ocsp_srv.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
199ocsp_srv.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 195ocsp_srv.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
@@ -206,10 +202,9 @@ ocsp_vfy.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
206ocsp_vfy.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 202ocsp_vfy.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
207ocsp_vfy.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 203ocsp_vfy.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
208ocsp_vfy.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 204ocsp_vfy.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
209ocsp_vfy.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 205ocsp_vfy.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
210ocsp_vfy.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 206ocsp_vfy.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
211ocsp_vfy.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h 207ocsp_vfy.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h
212ocsp_vfy.o: ../../include/openssl/opensslconf.h
213ocsp_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 208ocsp_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
214ocsp_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 209ocsp_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
215ocsp_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 210ocsp_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp.h b/src/lib/libssl/src/crypto/ocsp/ocsp.h
index a0577a717e..31e45744ba 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp.h
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp.h
@@ -64,6 +64,7 @@
64#ifndef HEADER_OCSP_H 64#ifndef HEADER_OCSP_H
65#define HEADER_OCSP_H 65#define HEADER_OCSP_H
66 66
67#include <openssl/ossl_typ.h>
67#include <openssl/x509.h> 68#include <openssl/x509.h>
68#include <openssl/x509v3.h> 69#include <openssl/x509v3.h>
69#include <openssl/safestack.h> 70#include <openssl/safestack.h>
@@ -394,17 +395,20 @@ typedef struct ocsp_service_locator_st
394#define ASN1_BIT_STRING_digest(data,type,md,len) \ 395#define ASN1_BIT_STRING_digest(data,type,md,len) \
395 ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING),type,data,md,len) 396 ASN1_item_digest(ASN1_ITEM_rptr(ASN1_BIT_STRING),type,data,md,len)
396 397
397#define OCSP_CERTID_dup(cid) ASN1_dup_of(OCSP_CERTID,i2d_OCSP_CERTID,d2i_OCSP_CERTID,cid)
398
399#define OCSP_CERTSTATUS_dup(cs)\ 398#define OCSP_CERTSTATUS_dup(cs)\
400 (OCSP_CERTSTATUS*)ASN1_dup((int(*)())i2d_OCSP_CERTSTATUS,\ 399 (OCSP_CERTSTATUS*)ASN1_dup((int(*)())i2d_OCSP_CERTSTATUS,\
401 (char *(*)())d2i_OCSP_CERTSTATUS,(char *)(cs)) 400 (char *(*)())d2i_OCSP_CERTSTATUS,(char *)(cs))
402 401
402OCSP_CERTID *OCSP_CERTID_dup(OCSP_CERTID *id);
403
403OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, char *path, OCSP_REQUEST *req); 404OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, char *path, OCSP_REQUEST *req);
404OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req, 405OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req,
405 int maxline); 406 int maxline);
406int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx); 407int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx);
407void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx); 408void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx);
409int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req);
410int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx,
411 const char *name, const char *value);
408 412
409OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, X509 *subject, X509 *issuer); 413OCSP_CERTID *OCSP_cert_to_id(const EVP_MD *dgst, X509 *subject, X509 *issuer);
410 414
@@ -474,11 +478,6 @@ int OCSP_basic_sign(OCSP_BASICRESP *brsp,
474 X509 *signer, EVP_PKEY *key, const EVP_MD *dgst, 478 X509 *signer, EVP_PKEY *key, const EVP_MD *dgst,
475 STACK_OF(X509) *certs, unsigned long flags); 479 STACK_OF(X509) *certs, unsigned long flags);
476 480
477ASN1_STRING *ASN1_STRING_encode(ASN1_STRING *s, i2d_of_void *i2d,
478 void *data, STACK_OF(ASN1_OBJECT) *sk);
479#define ASN1_STRING_encode_of(type,s,i2d,data,sk) \
480 ASN1_STRING_encode(s, CHECKED_I2D_OF(type, i2d), data, sk)
481
482X509_EXTENSION *OCSP_crlID_new(char *url, long *n, char *tim); 481X509_EXTENSION *OCSP_crlID_new(char *url, long *n, char *tim);
483 482
484X509_EXTENSION *OCSP_accept_responses_new(char **oids); 483X509_EXTENSION *OCSP_accept_responses_new(char **oids);
@@ -547,9 +546,9 @@ DECLARE_ASN1_FUNCTIONS(OCSP_REQINFO)
547DECLARE_ASN1_FUNCTIONS(OCSP_CRLID) 546DECLARE_ASN1_FUNCTIONS(OCSP_CRLID)
548DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC) 547DECLARE_ASN1_FUNCTIONS(OCSP_SERVICELOC)
549 548
550char *OCSP_response_status_str(long s); 549const char *OCSP_response_status_str(long s);
551char *OCSP_cert_status_str(long s); 550const char *OCSP_cert_status_str(long s);
552char *OCSP_crl_reason_str(long s); 551const char *OCSP_crl_reason_str(long s);
553 552
554int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST* a, unsigned long flags); 553int OCSP_REQUEST_print(BIO *bp, OCSP_REQUEST* a, unsigned long flags);
555int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE* o, unsigned long flags); 554int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE* o, unsigned long flags);
@@ -582,7 +581,8 @@ void ERR_load_OCSP_strings(void);
582#define OCSP_F_OCSP_REQUEST_VERIFY 116 581#define OCSP_F_OCSP_REQUEST_VERIFY 116
583#define OCSP_F_OCSP_RESPONSE_GET1_BASIC 111 582#define OCSP_F_OCSP_RESPONSE_GET1_BASIC 111
584#define OCSP_F_OCSP_SENDREQ_BIO 112 583#define OCSP_F_OCSP_SENDREQ_BIO 112
585#define OCSP_F_PARSE_HTTP_LINE1 117 584#define OCSP_F_OCSP_SENDREQ_NBIO 117
585#define OCSP_F_PARSE_HTTP_LINE1 118
586#define OCSP_F_REQUEST_VERIFY 113 586#define OCSP_F_REQUEST_VERIFY 113
587 587
588/* Reason codes. */ 588/* Reason codes. */
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_cl.c b/src/lib/libssl/src/crypto/ocsp/ocsp_cl.c
index 17bab5fc59..9c14d9da27 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp_cl.c
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp_cl.c
@@ -155,7 +155,6 @@ int OCSP_request_sign(OCSP_REQUEST *req,
155 goto err; 155 goto err;
156 156
157 if (!(req->optionalSignature = sig = OCSP_SIGNATURE_new())) goto err; 157 if (!(req->optionalSignature = sig = OCSP_SIGNATURE_new())) goto err;
158 if (!dgst) dgst = EVP_sha1();
159 if (key) 158 if (key)
160 { 159 {
161 if (!X509_check_private_key(signer, key)) 160 if (!X509_check_private_key(signer, key))
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_err.c b/src/lib/libssl/src/crypto/ocsp/ocsp_err.c
index d2f2e79f44..0cedcea682 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp_err.c
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp_err.c
@@ -1,6 +1,6 @@
1/* crypto/ocsp/ocsp_err.c */ 1/* crypto/ocsp/ocsp_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -86,6 +86,7 @@ static ERR_STRING_DATA OCSP_str_functs[]=
86{ERR_FUNC(OCSP_F_OCSP_REQUEST_VERIFY), "OCSP_request_verify"}, 86{ERR_FUNC(OCSP_F_OCSP_REQUEST_VERIFY), "OCSP_request_verify"},
87{ERR_FUNC(OCSP_F_OCSP_RESPONSE_GET1_BASIC), "OCSP_response_get1_basic"}, 87{ERR_FUNC(OCSP_F_OCSP_RESPONSE_GET1_BASIC), "OCSP_response_get1_basic"},
88{ERR_FUNC(OCSP_F_OCSP_SENDREQ_BIO), "OCSP_sendreq_bio"}, 88{ERR_FUNC(OCSP_F_OCSP_SENDREQ_BIO), "OCSP_sendreq_bio"},
89{ERR_FUNC(OCSP_F_OCSP_SENDREQ_NBIO), "OCSP_sendreq_nbio"},
89{ERR_FUNC(OCSP_F_PARSE_HTTP_LINE1), "PARSE_HTTP_LINE1"}, 90{ERR_FUNC(OCSP_F_PARSE_HTTP_LINE1), "PARSE_HTTP_LINE1"},
90{ERR_FUNC(OCSP_F_REQUEST_VERIFY), "REQUEST_VERIFY"}, 91{ERR_FUNC(OCSP_F_REQUEST_VERIFY), "REQUEST_VERIFY"},
91{0,NULL} 92{0,NULL}
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_ext.c b/src/lib/libssl/src/crypto/ocsp/ocsp_ext.c
index 815cc29d58..ec884cb08f 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp_ext.c
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp_ext.c
@@ -264,7 +264,7 @@ int OCSP_SINGLERESP_add_ext(OCSP_SINGLERESP *x, X509_EXTENSION *ex, int loc)
264 } 264 }
265 265
266/* also CRL Entry Extensions */ 266/* also CRL Entry Extensions */
267 267#if 0
268ASN1_STRING *ASN1_STRING_encode(ASN1_STRING *s, i2d_of_void *i2d, 268ASN1_STRING *ASN1_STRING_encode(ASN1_STRING *s, i2d_of_void *i2d,
269 void *data, STACK_OF(ASN1_OBJECT) *sk) 269 void *data, STACK_OF(ASN1_OBJECT) *sk)
270 { 270 {
@@ -305,6 +305,7 @@ err:
305 if (b) OPENSSL_free(b); 305 if (b) OPENSSL_free(b);
306 return NULL; 306 return NULL;
307 } 307 }
308#endif
308 309
309/* Nonce handling functions */ 310/* Nonce handling functions */
310 311
@@ -442,17 +443,10 @@ X509_EXTENSION *OCSP_crlID_new(char *url, long *n, char *tim)
442 if (!(ASN1_GENERALIZEDTIME_set_string(cid->crlTime, tim))) 443 if (!(ASN1_GENERALIZEDTIME_set_string(cid->crlTime, tim)))
443 goto err; 444 goto err;
444 } 445 }
445 if (!(x = X509_EXTENSION_new())) goto err; 446 x = X509V3_EXT_i2d(NID_id_pkix_OCSP_CrlID, 0, cid);
446 if (!(x->object = OBJ_nid2obj(NID_id_pkix_OCSP_CrlID))) goto err;
447 if (!(ASN1_STRING_encode_of(OCSP_CRLID,x->value,i2d_OCSP_CRLID,cid,
448 NULL)))
449 goto err;
450 OCSP_CRLID_free(cid);
451 return x;
452err: 447err:
453 if (x) X509_EXTENSION_free(x);
454 if (cid) OCSP_CRLID_free(cid); 448 if (cid) OCSP_CRLID_free(cid);
455 return NULL; 449 return x;
456 } 450 }
457 451
458/* AcceptableResponses ::= SEQUENCE OF OBJECT IDENTIFIER */ 452/* AcceptableResponses ::= SEQUENCE OF OBJECT IDENTIFIER */
@@ -470,18 +464,10 @@ X509_EXTENSION *OCSP_accept_responses_new(char **oids)
470 sk_ASN1_OBJECT_push(sk, o); 464 sk_ASN1_OBJECT_push(sk, o);
471 oids++; 465 oids++;
472 } 466 }
473 if (!(x = X509_EXTENSION_new())) goto err; 467 x = X509V3_EXT_i2d(NID_id_pkix_OCSP_acceptableResponses, 0, sk);
474 if (!(x->object = OBJ_nid2obj(NID_id_pkix_OCSP_acceptableResponses)))
475 goto err;
476 if (!(ASN1_STRING_encode_of(ASN1_OBJECT,x->value,i2d_ASN1_OBJECT,NULL,
477 sk)))
478 goto err;
479 sk_ASN1_OBJECT_pop_free(sk, ASN1_OBJECT_free);
480 return x;
481err: 468err:
482 if (x) X509_EXTENSION_free(x);
483 if (sk) sk_ASN1_OBJECT_pop_free(sk, ASN1_OBJECT_free); 469 if (sk) sk_ASN1_OBJECT_pop_free(sk, ASN1_OBJECT_free);
484 return NULL; 470 return x;
485 } 471 }
486 472
487/* ArchiveCutoff ::= GeneralizedTime */ 473/* ArchiveCutoff ::= GeneralizedTime */
@@ -492,16 +478,10 @@ X509_EXTENSION *OCSP_archive_cutoff_new(char* tim)
492 478
493 if (!(gt = ASN1_GENERALIZEDTIME_new())) goto err; 479 if (!(gt = ASN1_GENERALIZEDTIME_new())) goto err;
494 if (!(ASN1_GENERALIZEDTIME_set_string(gt, tim))) goto err; 480 if (!(ASN1_GENERALIZEDTIME_set_string(gt, tim))) goto err;
495 if (!(x = X509_EXTENSION_new())) goto err; 481 x = X509V3_EXT_i2d(NID_id_pkix_OCSP_archiveCutoff, 0, gt);
496 if (!(x->object=OBJ_nid2obj(NID_id_pkix_OCSP_archiveCutoff)))goto err;
497 if (!(ASN1_STRING_encode_of(ASN1_GENERALIZEDTIME,x->value,
498 i2d_ASN1_GENERALIZEDTIME,gt,NULL))) goto err;
499 ASN1_GENERALIZEDTIME_free(gt);
500 return x;
501err: 482err:
502 if (gt) ASN1_GENERALIZEDTIME_free(gt); 483 if (gt) ASN1_GENERALIZEDTIME_free(gt);
503 if (x) X509_EXTENSION_free(x); 484 return x;
504 return NULL;
505 } 485 }
506 486
507/* per ACCESS_DESCRIPTION parameter are oids, of which there are currently 487/* per ACCESS_DESCRIPTION parameter are oids, of which there are currently
@@ -530,16 +510,9 @@ X509_EXTENSION *OCSP_url_svcloc_new(X509_NAME* issuer, char **urls)
530 if (!sk_ACCESS_DESCRIPTION_push(sloc->locator, ad)) goto err; 510 if (!sk_ACCESS_DESCRIPTION_push(sloc->locator, ad)) goto err;
531 urls++; 511 urls++;
532 } 512 }
533 if (!(x = X509_EXTENSION_new())) goto err; 513 x = X509V3_EXT_i2d(NID_id_pkix_OCSP_serviceLocator, 0, sloc);
534 if (!(x->object = OBJ_nid2obj(NID_id_pkix_OCSP_serviceLocator)))
535 goto err;
536 if (!(ASN1_STRING_encode_of(OCSP_SERVICELOC,x->value,
537 i2d_OCSP_SERVICELOC,sloc,NULL))) goto err;
538 OCSP_SERVICELOC_free(sloc);
539 return x;
540err: 514err:
541 if (x) X509_EXTENSION_free(x);
542 if (sloc) OCSP_SERVICELOC_free(sloc); 515 if (sloc) OCSP_SERVICELOC_free(sloc);
543 return NULL; 516 return x;
544 } 517 }
545 518
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c b/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c
index 6abb30b2c0..12bbfcffd1 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp_ht.c
@@ -118,39 +118,65 @@ void OCSP_REQ_CTX_free(OCSP_REQ_CTX *rctx)
118 OPENSSL_free(rctx); 118 OPENSSL_free(rctx);
119 } 119 }
120 120
121OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req, 121int OCSP_REQ_CTX_set1_req(OCSP_REQ_CTX *rctx, OCSP_REQUEST *req)
122 int maxline)
123 { 122 {
124 static char post_hdr[] = "POST %s HTTP/1.0\r\n" 123 static const char req_hdr[] =
125 "Content-Type: application/ocsp-request\r\n" 124 "Content-Type: application/ocsp-request\r\n"
126 "Content-Length: %d\r\n\r\n"; 125 "Content-Length: %d\r\n\r\n";
126 if (BIO_printf(rctx->mem, req_hdr, i2d_OCSP_REQUEST(req, NULL)) <= 0)
127 return 0;
128 if (i2d_OCSP_REQUEST_bio(rctx->mem, req) <= 0)
129 return 0;
130 rctx->state = OHS_ASN1_WRITE;
131 rctx->asn1_len = BIO_get_mem_data(rctx->mem, NULL);
132 return 1;
133 }
134
135int OCSP_REQ_CTX_add1_header(OCSP_REQ_CTX *rctx,
136 const char *name, const char *value)
137 {
138 if (!name)
139 return 0;
140 if (BIO_puts(rctx->mem, name) <= 0)
141 return 0;
142 if (value)
143 {
144 if (BIO_write(rctx->mem, ": ", 2) != 2)
145 return 0;
146 if (BIO_puts(rctx->mem, value) <= 0)
147 return 0;
148 }
149 if (BIO_write(rctx->mem, "\r\n", 2) != 2)
150 return 0;
151 return 1;
152 }
153
154OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req,
155 int maxline)
156 {
157 static const char post_hdr[] = "POST %s HTTP/1.0\r\n";
127 158
128 OCSP_REQ_CTX *rctx; 159 OCSP_REQ_CTX *rctx;
129 rctx = OPENSSL_malloc(sizeof(OCSP_REQ_CTX)); 160 rctx = OPENSSL_malloc(sizeof(OCSP_REQ_CTX));
130 rctx->state = OHS_FIRSTLINE; 161 rctx->state = OHS_ERROR;
131 rctx->mem = BIO_new(BIO_s_mem()); 162 rctx->mem = BIO_new(BIO_s_mem());
132 rctx->io = io; 163 rctx->io = io;
164 rctx->asn1_len = 0;
133 if (maxline > 0) 165 if (maxline > 0)
134 rctx->iobuflen = maxline; 166 rctx->iobuflen = maxline;
135 else 167 else
136 rctx->iobuflen = OCSP_MAX_LINE_LEN; 168 rctx->iobuflen = OCSP_MAX_LINE_LEN;
137 rctx->iobuf = OPENSSL_malloc(rctx->iobuflen); 169 rctx->iobuf = OPENSSL_malloc(rctx->iobuflen);
170 if (!rctx->iobuf)
171 return 0;
138 if (!path) 172 if (!path)
139 path = "/"; 173 path = "/";
140 174
141 if (BIO_printf(rctx->mem, post_hdr, path, 175 if (BIO_printf(rctx->mem, post_hdr, path) <= 0)
142 i2d_OCSP_REQUEST(req, NULL)) <= 0)
143 {
144 rctx->state = OHS_ERROR;
145 return 0; 176 return 0;
146 } 177
147 if (i2d_OCSP_REQUEST_bio(rctx->mem, req) <= 0) 178 if (req && !OCSP_REQ_CTX_set1_req(rctx, req))
148 {
149 rctx->state = OHS_ERROR;
150 return 0; 179 return 0;
151 }
152 rctx->state = OHS_ASN1_WRITE;
153 rctx->asn1_len = BIO_get_mem_data(rctx->mem, NULL);
154 180
155 return rctx; 181 return rctx;
156 } 182 }
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_lib.c b/src/lib/libssl/src/crypto/ocsp/ocsp_lib.c
index 27450811d7..36905d76cd 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp_lib.c
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp_lib.c
@@ -69,6 +69,7 @@
69#include <openssl/pem.h> 69#include <openssl/pem.h>
70#include <openssl/x509v3.h> 70#include <openssl/x509v3.h>
71#include <openssl/ocsp.h> 71#include <openssl/ocsp.h>
72#include <openssl/asn1t.h>
72 73
73/* Convert a certificate and its issuer to an OCSP_CERTID */ 74/* Convert a certificate and its issuer to an OCSP_CERTID */
74 75
@@ -260,3 +261,5 @@ int OCSP_parse_url(char *url, char **phost, char **pport, char **ppath, int *pss
260 return 0; 261 return 0;
261 262
262 } 263 }
264
265IMPLEMENT_ASN1_DUP_FUNCTION(OCSP_CERTID)
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_prn.c b/src/lib/libssl/src/crypto/ocsp/ocsp_prn.c
index 3dfb51c1e4..1695c9c4ad 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp_prn.c
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp_prn.c
@@ -85,21 +85,21 @@ static int ocsp_certid_print(BIO *bp, OCSP_CERTID* a, int indent)
85typedef struct 85typedef struct
86 { 86 {
87 long t; 87 long t;
88 char *m; 88 const char *m;
89 } OCSP_TBLSTR; 89 } OCSP_TBLSTR;
90 90
91static char *table2string(long s, OCSP_TBLSTR *ts, int len) 91static const char *table2string(long s, const OCSP_TBLSTR *ts, int len)
92{ 92{
93 OCSP_TBLSTR *p; 93 const OCSP_TBLSTR *p;
94 for (p=ts; p < ts + len; p++) 94 for (p=ts; p < ts + len; p++)
95 if (p->t == s) 95 if (p->t == s)
96 return p->m; 96 return p->m;
97 return "(UNKNOWN)"; 97 return "(UNKNOWN)";
98} 98}
99 99
100char *OCSP_response_status_str(long s) 100const char *OCSP_response_status_str(long s)
101 { 101 {
102 static OCSP_TBLSTR rstat_tbl[] = { 102 static const OCSP_TBLSTR rstat_tbl[] = {
103 { OCSP_RESPONSE_STATUS_SUCCESSFUL, "successful" }, 103 { OCSP_RESPONSE_STATUS_SUCCESSFUL, "successful" },
104 { OCSP_RESPONSE_STATUS_MALFORMEDREQUEST, "malformedrequest" }, 104 { OCSP_RESPONSE_STATUS_MALFORMEDREQUEST, "malformedrequest" },
105 { OCSP_RESPONSE_STATUS_INTERNALERROR, "internalerror" }, 105 { OCSP_RESPONSE_STATUS_INTERNALERROR, "internalerror" },
@@ -109,18 +109,18 @@ char *OCSP_response_status_str(long s)
109 return table2string(s, rstat_tbl, 6); 109 return table2string(s, rstat_tbl, 6);
110 } 110 }
111 111
112char *OCSP_cert_status_str(long s) 112const char *OCSP_cert_status_str(long s)
113 { 113 {
114 static OCSP_TBLSTR cstat_tbl[] = { 114 static const OCSP_TBLSTR cstat_tbl[] = {
115 { V_OCSP_CERTSTATUS_GOOD, "good" }, 115 { V_OCSP_CERTSTATUS_GOOD, "good" },
116 { V_OCSP_CERTSTATUS_REVOKED, "revoked" }, 116 { V_OCSP_CERTSTATUS_REVOKED, "revoked" },
117 { V_OCSP_CERTSTATUS_UNKNOWN, "unknown" } }; 117 { V_OCSP_CERTSTATUS_UNKNOWN, "unknown" } };
118 return table2string(s, cstat_tbl, 3); 118 return table2string(s, cstat_tbl, 3);
119 } 119 }
120 120
121char *OCSP_crl_reason_str(long s) 121const char *OCSP_crl_reason_str(long s)
122 { 122 {
123 OCSP_TBLSTR reason_tbl[] = { 123 static const OCSP_TBLSTR reason_tbl[] = {
124 { OCSP_REVOKED_STATUS_UNSPECIFIED, "unspecified" }, 124 { OCSP_REVOKED_STATUS_UNSPECIFIED, "unspecified" },
125 { OCSP_REVOKED_STATUS_KEYCOMPROMISE, "keyCompromise" }, 125 { OCSP_REVOKED_STATUS_KEYCOMPROMISE, "keyCompromise" },
126 { OCSP_REVOKED_STATUS_CACOMPROMISE, "cACompromise" }, 126 { OCSP_REVOKED_STATUS_CACOMPROMISE, "cACompromise" },
@@ -266,15 +266,16 @@ int OCSP_RESPONSE_print(BIO *bp, OCSP_RESPONSE* o, unsigned long flags)
266 if (!ASN1_GENERALIZEDTIME_print(bp,single->nextUpdate)) 266 if (!ASN1_GENERALIZEDTIME_print(bp,single->nextUpdate))
267 goto err; 267 goto err;
268 } 268 }
269 if (!BIO_write(bp,"\n",1)) goto err; 269 if (BIO_write(bp,"\n",1) <= 0) goto err;
270 if (!X509V3_extensions_print(bp, 270 if (!X509V3_extensions_print(bp,
271 "Response Single Extensions", 271 "Response Single Extensions",
272 single->singleExtensions, flags, 8)) 272 single->singleExtensions, flags, 8))
273 goto err; 273 goto err;
274 if (!BIO_write(bp,"\n",1)) goto err; 274 if (BIO_write(bp,"\n",1) <= 0) goto err;
275 } 275 }
276 if (!X509V3_extensions_print(bp, "Response Extensions", 276 if (!X509V3_extensions_print(bp, "Response Extensions",
277 rd->responseExtensions, flags, 4)) 277 rd->responseExtensions, flags, 4))
278 goto err;
278 if(X509_signature_print(bp, br->signatureAlgorithm, br->signature) <= 0) 279 if(X509_signature_print(bp, br->signatureAlgorithm, br->signature) <= 0)
279 goto err; 280 goto err;
280 281
diff --git a/src/lib/libssl/src/crypto/ocsp/ocsp_vfy.c b/src/lib/libssl/src/crypto/ocsp/ocsp_vfy.c
index 4a0c3870d8..415d67e61c 100644
--- a/src/lib/libssl/src/crypto/ocsp/ocsp_vfy.c
+++ b/src/lib/libssl/src/crypto/ocsp/ocsp_vfy.c
@@ -308,6 +308,8 @@ static int ocsp_match_issuerid(X509 *cert, OCSP_CERTID *cid,
308 } 308 }
309 309
310 mdlen = EVP_MD_size(dgst); 310 mdlen = EVP_MD_size(dgst);
311 if (mdlen < 0)
312 return -1;
311 if ((cid->issuerNameHash->length != mdlen) || 313 if ((cid->issuerNameHash->length != mdlen) ||
312 (cid->issuerKeyHash->length != mdlen)) 314 (cid->issuerKeyHash->length != mdlen))
313 return 0; 315 return 0;
@@ -316,7 +318,7 @@ static int ocsp_match_issuerid(X509 *cert, OCSP_CERTID *cid,
316 return -1; 318 return -1;
317 if (memcmp(md, cid->issuerNameHash->data, mdlen)) 319 if (memcmp(md, cid->issuerNameHash->data, mdlen))
318 return 0; 320 return 0;
319 X509_pubkey_digest(cert, EVP_sha1(), md, NULL); 321 X509_pubkey_digest(cert, dgst, md, NULL);
320 if (memcmp(md, cid->issuerKeyHash->data, mdlen)) 322 if (memcmp(md, cid->issuerKeyHash->data, mdlen))
321 return 0; 323 return 0;
322 324
diff --git a/src/lib/libssl/src/crypto/opensslconf.h b/src/lib/libssl/src/crypto/opensslconf.h
index 60505327d3..c21b3913f0 100644
--- a/src/lib/libssl/src/crypto/opensslconf.h
+++ b/src/lib/libssl/src/crypto/opensslconf.h
@@ -5,15 +5,6 @@
5#ifndef OPENSSL_DOING_MAKEDEPEND 5#ifndef OPENSSL_DOING_MAKEDEPEND
6 6
7 7
8#ifndef OPENSSL_NO_CAMELLIA
9# define OPENSSL_NO_CAMELLIA
10#endif
11#ifndef OPENSSL_NO_CAPIENG
12# define OPENSSL_NO_CAPIENG
13#endif
14#ifndef OPENSSL_NO_CMS
15# define OPENSSL_NO_CMS
16#endif
17#ifndef OPENSSL_NO_GMP 8#ifndef OPENSSL_NO_GMP
18# define OPENSSL_NO_GMP 9# define OPENSSL_NO_GMP
19#endif 10#endif
@@ -23,8 +14,8 @@
23#ifndef OPENSSL_NO_KRB5 14#ifndef OPENSSL_NO_KRB5
24# define OPENSSL_NO_KRB5 15# define OPENSSL_NO_KRB5
25#endif 16#endif
26#ifndef OPENSSL_NO_MDC2 17#ifndef OPENSSL_NO_MD2
27# define OPENSSL_NO_MDC2 18# define OPENSSL_NO_MD2
28#endif 19#endif
29#ifndef OPENSSL_NO_RC5 20#ifndef OPENSSL_NO_RC5
30# define OPENSSL_NO_RC5 21# define OPENSSL_NO_RC5
@@ -32,8 +23,8 @@
32#ifndef OPENSSL_NO_RFC3779 23#ifndef OPENSSL_NO_RFC3779
33# define OPENSSL_NO_RFC3779 24# define OPENSSL_NO_RFC3779
34#endif 25#endif
35#ifndef OPENSSL_NO_SEED 26#ifndef OPENSSL_NO_STORE
36# define OPENSSL_NO_SEED 27# define OPENSSL_NO_STORE
37#endif 28#endif
38 29
39#endif /* OPENSSL_DOING_MAKEDEPEND */ 30#endif /* OPENSSL_DOING_MAKEDEPEND */
@@ -47,15 +38,6 @@
47 who haven't had the time to do the appropriate changes in their 38 who haven't had the time to do the appropriate changes in their
48 applications. */ 39 applications. */
49#ifdef OPENSSL_ALGORITHM_DEFINES 40#ifdef OPENSSL_ALGORITHM_DEFINES
50# if defined(OPENSSL_NO_CAMELLIA) && !defined(NO_CAMELLIA)
51# define NO_CAMELLIA
52# endif
53# if defined(OPENSSL_NO_CAPIENG) && !defined(NO_CAPIENG)
54# define NO_CAPIENG
55# endif
56# if defined(OPENSSL_NO_CMS) && !defined(NO_CMS)
57# define NO_CMS
58# endif
59# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP) 41# if defined(OPENSSL_NO_GMP) && !defined(NO_GMP)
60# define NO_GMP 42# define NO_GMP
61# endif 43# endif
@@ -65,8 +47,8 @@
65# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5) 47# if defined(OPENSSL_NO_KRB5) && !defined(NO_KRB5)
66# define NO_KRB5 48# define NO_KRB5
67# endif 49# endif
68# if defined(OPENSSL_NO_MDC2) && !defined(NO_MDC2) 50# if defined(OPENSSL_NO_MD2) && !defined(NO_MD2)
69# define NO_MDC2 51# define NO_MD2
70# endif 52# endif
71# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5) 53# if defined(OPENSSL_NO_RC5) && !defined(NO_RC5)
72# define NO_RC5 54# define NO_RC5
@@ -74,28 +56,13 @@
74# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779) 56# if defined(OPENSSL_NO_RFC3779) && !defined(NO_RFC3779)
75# define NO_RFC3779 57# define NO_RFC3779
76# endif 58# endif
77# if defined(OPENSSL_NO_SEED) && !defined(NO_SEED) 59# if defined(OPENSSL_NO_STORE) && !defined(NO_STORE)
78# define NO_SEED 60# define NO_STORE
79# endif 61# endif
80#endif 62#endif
81 63
82/* crypto/opensslconf.h.in */ 64/* crypto/opensslconf.h.in */
83 65
84#ifdef OPENSSL_DOING_MAKEDEPEND
85
86/* Include any symbols here that have to be explicitly set to enable a feature
87 * that should be visible to makedepend.
88 *
89 * [Our "make depend" doesn't actually look at this, we use actual build settings
90 * instead; we want to make it easy to remove subdirectories with disabled algorithms.]
91 */
92
93#ifndef OPENSSL_FIPS
94#define OPENSSL_FIPS
95#endif
96
97#endif
98
99/* Generate 80386 code? */ 66/* Generate 80386 code? */
100#undef I386_ONLY 67#undef I386_ONLY
101 68
@@ -159,14 +126,9 @@
159/* Should we define BN_DIV2W here? */ 126/* Should we define BN_DIV2W here? */
160 127
161/* Only one for the following should be defined */ 128/* Only one for the following should be defined */
162/* The prime number generation stuff may not work when
163 * EIGHT_BIT but I don't care since I've only used this mode
164 * for debuging the bignum libraries */
165#undef SIXTY_FOUR_BIT_LONG 129#undef SIXTY_FOUR_BIT_LONG
166#undef SIXTY_FOUR_BIT 130#undef SIXTY_FOUR_BIT
167#define THIRTY_TWO_BIT 131#define THIRTY_TWO_BIT
168#undef SIXTEEN_BIT
169#undef EIGHT_BIT
170#endif 132#endif
171 133
172#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) 134#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
diff --git a/src/lib/libssl/src/crypto/opensslconf.h.in b/src/lib/libssl/src/crypto/opensslconf.h.in
index 1c77f03c3d..97e3745563 100644
--- a/src/lib/libssl/src/crypto/opensslconf.h.in
+++ b/src/lib/libssl/src/crypto/opensslconf.h.in
@@ -1,20 +1,5 @@
1/* crypto/opensslconf.h.in */ 1/* crypto/opensslconf.h.in */
2 2
3#ifdef OPENSSL_DOING_MAKEDEPEND
4
5/* Include any symbols here that have to be explicitly set to enable a feature
6 * that should be visible to makedepend.
7 *
8 * [Our "make depend" doesn't actually look at this, we use actual build settings
9 * instead; we want to make it easy to remove subdirectories with disabled algorithms.]
10 */
11
12#ifndef OPENSSL_FIPS
13#define OPENSSL_FIPS
14#endif
15
16#endif
17
18/* Generate 80386 code? */ 3/* Generate 80386 code? */
19#undef I386_ONLY 4#undef I386_ONLY
20 5
@@ -78,14 +63,9 @@
78/* Should we define BN_DIV2W here? */ 63/* Should we define BN_DIV2W here? */
79 64
80/* Only one for the following should be defined */ 65/* Only one for the following should be defined */
81/* The prime number generation stuff may not work when
82 * EIGHT_BIT but I don't care since I've only used this mode
83 * for debuging the bignum libraries */
84#undef SIXTY_FOUR_BIT_LONG 66#undef SIXTY_FOUR_BIT_LONG
85#undef SIXTY_FOUR_BIT 67#undef SIXTY_FOUR_BIT
86#define THIRTY_TWO_BIT 68#define THIRTY_TWO_BIT
87#undef SIXTEEN_BIT
88#undef EIGHT_BIT
89#endif 69#endif
90 70
91#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H) 71#if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
diff --git a/src/lib/libssl/src/crypto/opensslv.h b/src/lib/libssl/src/crypto/opensslv.h
index c6207f76b2..2fb110fa0e 100644
--- a/src/lib/libssl/src/crypto/opensslv.h
+++ b/src/lib/libssl/src/crypto/opensslv.h
@@ -12,7 +12,7 @@
12 * 0.9.3-beta2 0x00903002 (same as ...beta2-dev) 12 * 0.9.3-beta2 0x00903002 (same as ...beta2-dev)
13 * 0.9.3 0x0090300f 13 * 0.9.3 0x0090300f
14 * 0.9.3a 0x0090301f 14 * 0.9.3a 0x0090301f
15 * 0.9.4 0x0090400f 15 * 0.9.4 0x0090400f
16 * 1.2.3z 0x102031af 16 * 1.2.3z 0x102031af
17 * 17 *
18 * For continuity reasons (because 0.9.5 is already out, and is coded 18 * For continuity reasons (because 0.9.5 is already out, and is coded
@@ -25,11 +25,11 @@
25 * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for 25 * (Prior to 0.9.5a beta1, a different scheme was used: MMNNFFRBB for
26 * major minor fix final patch/beta) 26 * major minor fix final patch/beta)
27 */ 27 */
28#define OPENSSL_VERSION_NUMBER 0x009080bfL 28#define OPENSSL_VERSION_NUMBER 0x1000001fL
29#ifdef OPENSSL_FIPS 29#ifdef OPENSSL_FIPS
30#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.8k-fips 25 Mar 2009" 30#define OPENSSL_VERSION_TEXT "OpenSSL 1.0.0a-fips 1 Jun 2010"
31#else 31#else
32#define OPENSSL_VERSION_TEXT "OpenSSL 0.9.8k 25 Mar 2009" 32#define OPENSSL_VERSION_TEXT "OpenSSL 1.0.0a 1 Jun 2010"
33#endif 33#endif
34#define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT 34#define OPENSSL_VERSION_PTEXT " part of " OPENSSL_VERSION_TEXT
35 35
@@ -83,7 +83,7 @@
83 * should only keep the versions that are binary compatible with the current. 83 * should only keep the versions that are binary compatible with the current.
84 */ 84 */
85#define SHLIB_VERSION_HISTORY "" 85#define SHLIB_VERSION_HISTORY ""
86#define SHLIB_VERSION_NUMBER "0.9.8" 86#define SHLIB_VERSION_NUMBER "1.0.0"
87 87
88 88
89#endif /* HEADER_OPENSSLV_H */ 89#endif /* HEADER_OPENSSLV_H */
diff --git a/src/lib/libssl/src/crypto/ossl_typ.h b/src/lib/libssl/src/crypto/ossl_typ.h
index 0e7a380880..12bd7014de 100644
--- a/src/lib/libssl/src/crypto/ossl_typ.h
+++ b/src/lib/libssl/src/crypto/ossl_typ.h
@@ -95,6 +95,8 @@ typedef int ASN1_BOOLEAN;
95typedef int ASN1_NULL; 95typedef int ASN1_NULL;
96#endif 96#endif
97 97
98typedef struct asn1_pctx_st ASN1_PCTX;
99
98#ifdef OPENSSL_SYS_WIN32 100#ifdef OPENSSL_SYS_WIN32
99#undef X509_NAME 101#undef X509_NAME
100#undef X509_EXTENSIONS 102#undef X509_EXTENSIONS
@@ -122,6 +124,11 @@ typedef struct env_md_st EVP_MD;
122typedef struct env_md_ctx_st EVP_MD_CTX; 124typedef struct env_md_ctx_st EVP_MD_CTX;
123typedef struct evp_pkey_st EVP_PKEY; 125typedef struct evp_pkey_st EVP_PKEY;
124 126
127typedef struct evp_pkey_asn1_method_st EVP_PKEY_ASN1_METHOD;
128
129typedef struct evp_pkey_method_st EVP_PKEY_METHOD;
130typedef struct evp_pkey_ctx_st EVP_PKEY_CTX;
131
125typedef struct dh_st DH; 132typedef struct dh_st DH;
126typedef struct dh_method DH_METHOD; 133typedef struct dh_method DH_METHOD;
127 134
@@ -139,11 +146,14 @@ typedef struct ecdsa_method ECDSA_METHOD;
139typedef struct x509_st X509; 146typedef struct x509_st X509;
140typedef struct X509_algor_st X509_ALGOR; 147typedef struct X509_algor_st X509_ALGOR;
141typedef struct X509_crl_st X509_CRL; 148typedef struct X509_crl_st X509_CRL;
149typedef struct x509_crl_method_st X509_CRL_METHOD;
150typedef struct x509_revoked_st X509_REVOKED;
142typedef struct X509_name_st X509_NAME; 151typedef struct X509_name_st X509_NAME;
152typedef struct X509_pubkey_st X509_PUBKEY;
143typedef struct x509_store_st X509_STORE; 153typedef struct x509_store_st X509_STORE;
144typedef struct x509_store_ctx_st X509_STORE_CTX; 154typedef struct x509_store_ctx_st X509_STORE_CTX;
145typedef struct ssl_st SSL; 155
146typedef struct ssl_ctx_st SSL_CTX; 156typedef struct pkcs8_priv_key_info_st PKCS8_PRIV_KEY_INFO;
147 157
148typedef struct v3_ext_ctx X509V3_CTX; 158typedef struct v3_ext_ctx X509V3_CTX;
149typedef struct conf_st CONF; 159typedef struct conf_st CONF;
@@ -157,12 +167,19 @@ typedef struct ui_method_st UI_METHOD;
157typedef struct st_ERR_FNS ERR_FNS; 167typedef struct st_ERR_FNS ERR_FNS;
158 168
159typedef struct engine_st ENGINE; 169typedef struct engine_st ENGINE;
170typedef struct ssl_st SSL;
171typedef struct ssl_ctx_st SSL_CTX;
160 172
161typedef struct X509_POLICY_NODE_st X509_POLICY_NODE; 173typedef struct X509_POLICY_NODE_st X509_POLICY_NODE;
162typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL; 174typedef struct X509_POLICY_LEVEL_st X509_POLICY_LEVEL;
163typedef struct X509_POLICY_TREE_st X509_POLICY_TREE; 175typedef struct X509_POLICY_TREE_st X509_POLICY_TREE;
164typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE; 176typedef struct X509_POLICY_CACHE_st X509_POLICY_CACHE;
165 177
178typedef struct AUTHORITY_KEYID_st AUTHORITY_KEYID;
179typedef struct DIST_POINT_st DIST_POINT;
180typedef struct ISSUING_DIST_POINT_st ISSUING_DIST_POINT;
181typedef struct NAME_CONSTRAINTS_st NAME_CONSTRAINTS;
182
166 /* If placed in pkcs12.h, we end up with a circular depency with pkcs7.h */ 183 /* If placed in pkcs12.h, we end up with a circular depency with pkcs7.h */
167#define DECLARE_PKCS12_STACK_OF(type) /* Nothing */ 184#define DECLARE_PKCS12_STACK_OF(type) /* Nothing */
168#define IMPLEMENT_PKCS12_STACK_OF(type) /* Nothing */ 185#define IMPLEMENT_PKCS12_STACK_OF(type) /* Nothing */
diff --git a/src/lib/libssl/src/crypto/pem/Makefile b/src/lib/libssl/src/crypto/pem/Makefile
index 669f36612c..2cc7801529 100644
--- a/src/lib/libssl/src/crypto/pem/Makefile
+++ b/src/lib/libssl/src/crypto/pem/Makefile
@@ -18,10 +18,10 @@ APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= pem_sign.c pem_seal.c pem_info.c pem_lib.c pem_all.c pem_err.c \ 20LIBSRC= pem_sign.c pem_seal.c pem_info.c pem_lib.c pem_all.c pem_err.c \
21 pem_x509.c pem_xaux.c pem_oth.c pem_pk8.c pem_pkey.c 21 pem_x509.c pem_xaux.c pem_oth.c pem_pk8.c pem_pkey.c pvkfmt.c
22 22
23LIBOBJ= pem_sign.o pem_seal.o pem_info.o pem_lib.o pem_all.o pem_err.o \ 23LIBOBJ= pem_sign.o pem_seal.o pem_info.o pem_lib.o pem_all.o pem_err.o \
24 pem_x509.o pem_xaux.o pem_oth.o pem_pk8.o pem_pkey.o 24 pem_x509.o pem_xaux.o pem_oth.o pem_pk8.o pem_pkey.o pvkfmt.o
25 25
26SRC= $(LIBSRC) 26SRC= $(LIBSRC)
27 27
@@ -36,7 +36,7 @@ top:
36all: lib 36all: lib
37 37
38lib: $(LIBOBJ) 38lib: $(LIBOBJ)
39 $(ARX) $(LIB) $(LIBOBJ) 39 $(AR) $(LIB) $(LIBOBJ)
40 $(RANLIB) $(LIB) || echo Never mind. 40 $(RANLIB) $(LIB) || echo Never mind.
41 @touch lib 41 @touch lib
42 42
@@ -83,39 +83,36 @@ pem_all.o: ../../include/openssl/crypto.h ../../include/openssl/dh.h
83pem_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 83pem_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
84pem_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 84pem_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
85pem_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 85pem_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
86pem_all.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 86pem_all.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
87pem_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 87pem_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
88pem_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 88pem_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
89pem_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 89pem_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
90pem_all.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 90pem_all.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
91pem_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 91pem_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
92pem_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 92pem_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
93pem_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 93pem_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
94pem_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 94pem_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_all.c
95pem_all.o: ../cryptlib.h pem_all.c
96pem_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 95pem_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
97pem_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 96pem_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
98pem_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 97pem_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
99pem_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 98pem_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
100pem_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h 99pem_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h
101pem_err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 100pem_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
102pem_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 101pem_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
103pem_err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 102pem_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
104pem_err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h 103pem_err.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
105pem_err.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h 104pem_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
106pem_err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 105pem_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
107pem_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 106pem_err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
108pem_err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 107pem_err.o: ../../include/openssl/x509_vfy.h pem_err.c
109pem_err.o: pem_err.c
110pem_info.o: ../../e_os.h ../../include/openssl/asn1.h 108pem_info.o: ../../e_os.h ../../include/openssl/asn1.h
111pem_info.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 109pem_info.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
112pem_info.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h 110pem_info.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
113pem_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 111pem_info.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
114pem_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 112pem_info.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
115pem_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h 113pem_info.o: ../../include/openssl/err.h ../../include/openssl/evp.h
116pem_info.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 114pem_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
117pem_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 115pem_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
118pem_info.o: ../../include/openssl/opensslconf.h
119pem_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 116pem_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
120pem_info.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 117pem_info.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
121pem_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 118pem_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
@@ -128,8 +125,8 @@ pem_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
128pem_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h 125pem_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
129pem_lib.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h 126pem_lib.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
130pem_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 127pem_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
131pem_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 128pem_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
132pem_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 129pem_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
133pem_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 130pem_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
134pem_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 131pem_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
135pem_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 132pem_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -139,43 +136,43 @@ pem_lib.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
139pem_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 136pem_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
140pem_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h 137pem_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/ui.h
141pem_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h 138pem_lib.o: ../../include/openssl/ui_compat.h ../../include/openssl/x509.h
142pem_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_lib.c 139pem_lib.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
140pem_lib.o: pem_lib.c
143pem_oth.o: ../../e_os.h ../../include/openssl/asn1.h 141pem_oth.o: ../../e_os.h ../../include/openssl/asn1.h
144pem_oth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 142pem_oth.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
145pem_oth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 143pem_oth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
146pem_oth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 144pem_oth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
147pem_oth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 145pem_oth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
148pem_oth.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 146pem_oth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
149pem_oth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 147pem_oth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
150pem_oth.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 148pem_oth.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
151pem_oth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 149pem_oth.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
152pem_oth.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 150pem_oth.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
153pem_oth.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 151pem_oth.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
154pem_oth.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 152pem_oth.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
155pem_oth.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 153pem_oth.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
156pem_oth.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 154pem_oth.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_oth.c
157pem_oth.o: ../cryptlib.h pem_oth.c
158pem_pk8.o: ../../e_os.h ../../include/openssl/asn1.h 155pem_pk8.o: ../../e_os.h ../../include/openssl/asn1.h
159pem_pk8.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 156pem_pk8.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
160pem_pk8.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 157pem_pk8.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
161pem_pk8.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 158pem_pk8.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
162pem_pk8.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 159pem_pk8.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
163pem_pk8.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 160pem_pk8.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
164pem_pk8.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 161pem_pk8.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
165pem_pk8.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 162pem_pk8.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
166pem_pk8.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 163pem_pk8.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
167pem_pk8.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 164pem_pk8.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs12.h
168pem_pk8.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 165pem_pk8.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
169pem_pk8.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 166pem_pk8.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
170pem_pk8.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 167pem_pk8.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
171pem_pk8.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 168pem_pk8.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
172pem_pk8.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_pk8.c 169pem_pk8.o: ../cryptlib.h pem_pk8.c
173pem_pkey.o: ../../e_os.h ../../include/openssl/asn1.h 170pem_pkey.o: ../../e_os.h ../../include/openssl/asn1.h
174pem_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 171pem_pkey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
175pem_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 172pem_pkey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
176pem_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 173pem_pkey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
177pem_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 174pem_pkey.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
178pem_pkey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 175pem_pkey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
179pem_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 176pem_pkey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
180pem_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 177pem_pkey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
181pem_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 178pem_pkey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -184,15 +181,16 @@ pem_pkey.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
184pem_pkey.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 181pem_pkey.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
185pem_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 182pem_pkey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
186pem_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 183pem_pkey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
187pem_pkey.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_pkey.c 184pem_pkey.o: ../../include/openssl/x509_vfy.h ../asn1/asn1_locl.h ../cryptlib.h
185pem_pkey.o: pem_pkey.c
188pem_seal.o: ../../e_os.h ../../include/openssl/asn1.h 186pem_seal.o: ../../e_os.h ../../include/openssl/asn1.h
189pem_seal.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 187pem_seal.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
190pem_seal.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 188pem_seal.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
191pem_seal.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 189pem_seal.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
192pem_seal.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 190pem_seal.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
193pem_seal.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 191pem_seal.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
194pem_seal.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 192pem_seal.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
195pem_seal.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 193pem_seal.o: ../../include/openssl/opensslconf.h
196pem_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 194pem_seal.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
197pem_seal.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 195pem_seal.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
198pem_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 196pem_seal.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
@@ -205,9 +203,9 @@ pem_sign.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
205pem_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 203pem_sign.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
206pem_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 204pem_sign.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
207pem_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 205pem_sign.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
208pem_sign.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 206pem_sign.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
209pem_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 207pem_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
210pem_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 208pem_sign.o: ../../include/openssl/opensslconf.h
211pem_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 209pem_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
212pem_sign.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 210pem_sign.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
213pem_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 211pem_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
@@ -220,9 +218,9 @@ pem_x509.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
220pem_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 218pem_x509.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
221pem_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 219pem_x509.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
222pem_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 220pem_x509.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
223pem_x509.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 221pem_x509.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
224pem_x509.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 222pem_x509.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
225pem_x509.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 223pem_x509.o: ../../include/openssl/opensslconf.h
226pem_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 224pem_x509.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
227pem_x509.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 225pem_x509.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
228pem_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 226pem_x509.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -234,12 +232,27 @@ pem_xaux.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
234pem_xaux.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 232pem_xaux.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
235pem_xaux.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 233pem_xaux.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
236pem_xaux.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 234pem_xaux.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
237pem_xaux.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 235pem_xaux.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
238pem_xaux.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 236pem_xaux.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
239pem_xaux.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 237pem_xaux.o: ../../include/openssl/opensslconf.h
240pem_xaux.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 238pem_xaux.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
241pem_xaux.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 239pem_xaux.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
242pem_xaux.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 240pem_xaux.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
243pem_xaux.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 241pem_xaux.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
244pem_xaux.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 242pem_xaux.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
245pem_xaux.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_xaux.c 243pem_xaux.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pem_xaux.c
244pvkfmt.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
245pvkfmt.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
246pvkfmt.o: ../../include/openssl/crypto.h ../../include/openssl/dsa.h
247pvkfmt.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
248pvkfmt.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
249pvkfmt.o: ../../include/openssl/err.h ../../include/openssl/evp.h
250pvkfmt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
251pvkfmt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
252pvkfmt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
253pvkfmt.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
254pvkfmt.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
255pvkfmt.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
256pvkfmt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
257pvkfmt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
258pvkfmt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pvkfmt.c
diff --git a/src/lib/libssl/src/crypto/pem/pem.h b/src/lib/libssl/src/crypto/pem/pem.h
index 6c193f1cbf..8a6ababe3a 100644
--- a/src/lib/libssl/src/crypto/pem/pem.h
+++ b/src/lib/libssl/src/crypto/pem/pem.h
@@ -134,6 +134,7 @@ extern "C" {
134#define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY" 134#define PEM_STRING_ECDSA_PUBLIC "ECDSA PUBLIC KEY"
135#define PEM_STRING_ECPARAMETERS "EC PARAMETERS" 135#define PEM_STRING_ECPARAMETERS "EC PARAMETERS"
136#define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY" 136#define PEM_STRING_ECPRIVATEKEY "EC PRIVATE KEY"
137#define PEM_STRING_PARAMETERS "PARAMETERS"
137#define PEM_STRING_CMS "CMS" 138#define PEM_STRING_CMS "CMS"
138 139
139 /* Note that this structure is initialised by PEM_SealInit and cleaned up 140 /* Note that this structure is initialised by PEM_SealInit and cleaned up
@@ -183,11 +184,8 @@ typedef struct pem_ctx_st
183 int num_recipient; 184 int num_recipient;
184 PEM_USER **recipient; 185 PEM_USER **recipient;
185 186
186#ifndef OPENSSL_NO_STACK 187 /* XXX(ben): don#t think this is used!
187 STACK *x509_chain; /* certificate chain */ 188 STACK *x509_chain; / * certificate chain */
188#else
189 char *x509_chain; /* certificate chain */
190#endif
191 EVP_MD *md; /* signature type */ 189 EVP_MD *md; /* signature type */
192 190
193 int md_enc; /* is the md encrypted or not? */ 191 int md_enc; /* is the md encrypted or not? */
@@ -224,28 +222,19 @@ typedef struct pem_ctx_st
224#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \ 222#define IMPLEMENT_PEM_read_fp(name, type, str, asn1) \
225type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\ 223type *PEM_read_##name(FILE *fp, type **x, pem_password_cb *cb, void *u)\
226{ \ 224{ \
227 return (type*)PEM_ASN1_read(CHECKED_D2I_OF(type, d2i_##asn1), \ 225return PEM_ASN1_read((d2i_of_void *)d2i_##asn1, str,fp,(void **)x,cb,u); \
228 str, fp, \
229 CHECKED_PPTR_OF(type, x), \
230 cb, u); \
231} 226}
232 227
233#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \ 228#define IMPLEMENT_PEM_write_fp(name, type, str, asn1) \
234int PEM_write_##name(FILE *fp, type *x) \ 229int PEM_write_##name(FILE *fp, type *x) \
235{ \ 230{ \
236 return PEM_ASN1_write(CHECKED_I2D_OF(type, i2d_##asn1), \ 231return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,NULL,NULL,0,NULL,NULL); \
237 str, fp, \
238 CHECKED_PTR_OF(type, x), \
239 NULL, NULL, 0, NULL, NULL); \
240} 232}
241 233
242#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \ 234#define IMPLEMENT_PEM_write_fp_const(name, type, str, asn1) \
243int PEM_write_##name(FILE *fp, const type *x) \ 235int PEM_write_##name(FILE *fp, const type *x) \
244{ \ 236{ \
245 return PEM_ASN1_write(CHECKED_I2D_OF(const type, i2d_##asn1), \ 237return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,(void *)x,NULL,NULL,0,NULL,NULL); \
246 str, fp, \
247 CHECKED_PTR_OF(const type, x), \
248 NULL, NULL, 0, NULL, NULL); \
249} 238}
250 239
251#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \ 240#define IMPLEMENT_PEM_write_cb_fp(name, type, str, asn1) \
@@ -253,10 +242,7 @@ int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
253 unsigned char *kstr, int klen, pem_password_cb *cb, \ 242 unsigned char *kstr, int klen, pem_password_cb *cb, \
254 void *u) \ 243 void *u) \
255 { \ 244 { \
256 return PEM_ASN1_write(CHECKED_I2D_OF(type, i2d_##asn1), \ 245 return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \
257 str, fp, \
258 CHECKED_PTR_OF(type, x), \
259 enc, kstr, klen, cb, u); \
260 } 246 }
261 247
262#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \ 248#define IMPLEMENT_PEM_write_cb_fp_const(name, type, str, asn1) \
@@ -264,10 +250,7 @@ int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
264 unsigned char *kstr, int klen, pem_password_cb *cb, \ 250 unsigned char *kstr, int klen, pem_password_cb *cb, \
265 void *u) \ 251 void *u) \
266 { \ 252 { \
267 return PEM_ASN1_write(CHECKED_I2D_OF(const type, i2d_##asn1), \ 253 return PEM_ASN1_write((i2d_of_void *)i2d_##asn1,str,fp,x,enc,kstr,klen,cb,u); \
268 str, fp, \
269 CHECKED_PTR_OF(const type, x), \
270 enc, kstr, klen, cb, u); \
271 } 254 }
272 255
273#endif 256#endif
@@ -275,48 +258,33 @@ int PEM_write_##name(FILE *fp, type *x, const EVP_CIPHER *enc, \
275#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \ 258#define IMPLEMENT_PEM_read_bio(name, type, str, asn1) \
276type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\ 259type *PEM_read_bio_##name(BIO *bp, type **x, pem_password_cb *cb, void *u)\
277{ \ 260{ \
278 return (type*)PEM_ASN1_read_bio(CHECKED_D2I_OF(type, d2i_##asn1), \ 261return PEM_ASN1_read_bio((d2i_of_void *)d2i_##asn1, str,bp,(void **)x,cb,u); \
279 str, bp, \
280 CHECKED_PPTR_OF(type, x), \
281 cb, u); \
282} 262}
283 263
284#define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \ 264#define IMPLEMENT_PEM_write_bio(name, type, str, asn1) \
285int PEM_write_bio_##name(BIO *bp, type *x) \ 265int PEM_write_bio_##name(BIO *bp, type *x) \
286{ \ 266{ \
287 return PEM_ASN1_write_bio(CHECKED_I2D_OF(type, i2d_##asn1), \ 267return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,NULL,NULL,0,NULL,NULL); \
288 str, bp, \
289 CHECKED_PTR_OF(type, x), \
290 NULL, NULL, 0, NULL, NULL); \
291} 268}
292 269
293#define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \ 270#define IMPLEMENT_PEM_write_bio_const(name, type, str, asn1) \
294int PEM_write_bio_##name(BIO *bp, const type *x) \ 271int PEM_write_bio_##name(BIO *bp, const type *x) \
295{ \ 272{ \
296 return PEM_ASN1_write_bio(CHECKED_I2D_OF(const type, i2d_##asn1), \ 273return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,NULL,NULL,0,NULL,NULL); \
297 str, bp, \
298 CHECKED_PTR_OF(const type, x), \
299 NULL, NULL, 0, NULL, NULL); \
300} 274}
301 275
302#define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \ 276#define IMPLEMENT_PEM_write_cb_bio(name, type, str, asn1) \
303int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ 277int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
304 unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ 278 unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
305 { \ 279 { \
306 return PEM_ASN1_write_bio(CHECKED_I2D_OF(type, i2d_##asn1), \ 280 return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,x,enc,kstr,klen,cb,u); \
307 str, bp, \
308 CHECKED_PTR_OF(type, x), \
309 enc, kstr, klen, cb, u); \
310 } 281 }
311 282
312#define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \ 283#define IMPLEMENT_PEM_write_cb_bio_const(name, type, str, asn1) \
313int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \ 284int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
314 unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \ 285 unsigned char *kstr, int klen, pem_password_cb *cb, void *u) \
315 { \ 286 { \
316 return PEM_ASN1_write_bio(CHECKED_I2D_OF(const type, i2d_##asn1), \ 287 return PEM_ASN1_write_bio((i2d_of_void *)i2d_##asn1,str,bp,(void *)x,enc,kstr,klen,cb,u); \
317 str, bp, \
318 CHECKED_PTR_OF(const type, x), \
319 enc, kstr, klen, cb, u); \
320 } 288 }
321 289
322#define IMPLEMENT_PEM_write(name, type, str, asn1) \ 290#define IMPLEMENT_PEM_write(name, type, str, asn1) \
@@ -353,11 +321,10 @@ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
353 321
354/* These are the same except they are for the declarations */ 322/* These are the same except they are for the declarations */
355 323
356#if defined(OPENSSL_SYS_WIN16) || defined(OPENSSL_NO_FP_API) 324#if defined(OPENSSL_NO_FP_API)
357 325
358#define DECLARE_PEM_read_fp(name, type) /**/ 326#define DECLARE_PEM_read_fp(name, type) /**/
359#define DECLARE_PEM_write_fp(name, type) /**/ 327#define DECLARE_PEM_write_fp(name, type) /**/
360#define DECLARE_PEM_write_fp_const(name, type) /**/
361#define DECLARE_PEM_write_cb_fp(name, type) /**/ 328#define DECLARE_PEM_write_cb_fp(name, type) /**/
362 329
363#else 330#else
@@ -428,138 +395,6 @@ int PEM_write_bio_##name(BIO *bp, type *x, const EVP_CIPHER *enc, \
428 DECLARE_PEM_read(name, type) \ 395 DECLARE_PEM_read(name, type) \
429 DECLARE_PEM_write_cb(name, type) 396 DECLARE_PEM_write_cb(name, type)
430 397
431#ifdef SSLEAY_MACROS
432
433#define PEM_write_SSL_SESSION(fp,x) \
434 PEM_ASN1_write((int (*)())i2d_SSL_SESSION, \
435 PEM_STRING_SSL_SESSION,fp, (char *)x, NULL,NULL,0,NULL,NULL)
436#define PEM_write_X509(fp,x) \
437 PEM_ASN1_write((int (*)())i2d_X509,PEM_STRING_X509,fp, \
438 (char *)x, NULL,NULL,0,NULL,NULL)
439#define PEM_write_X509_REQ(fp,x) PEM_ASN1_write( \
440 (int (*)())i2d_X509_REQ,PEM_STRING_X509_REQ,fp,(char *)x, \
441 NULL,NULL,0,NULL,NULL)
442#define PEM_write_X509_CRL(fp,x) \
443 PEM_ASN1_write((int (*)())i2d_X509_CRL,PEM_STRING_X509_CRL, \
444 fp,(char *)x, NULL,NULL,0,NULL,NULL)
445#define PEM_write_RSAPrivateKey(fp,x,enc,kstr,klen,cb,u) \
446 PEM_ASN1_write((int (*)())i2d_RSAPrivateKey,PEM_STRING_RSA,fp,\
447 (char *)x,enc,kstr,klen,cb,u)
448#define PEM_write_RSAPublicKey(fp,x) \
449 PEM_ASN1_write((int (*)())i2d_RSAPublicKey,\
450 PEM_STRING_RSA_PUBLIC,fp,(char *)x,NULL,NULL,0,NULL,NULL)
451#define PEM_write_DSAPrivateKey(fp,x,enc,kstr,klen,cb,u) \
452 PEM_ASN1_write((int (*)())i2d_DSAPrivateKey,PEM_STRING_DSA,fp,\
453 (char *)x,enc,kstr,klen,cb,u)
454#define PEM_write_PrivateKey(bp,x,enc,kstr,klen,cb,u) \
455 PEM_ASN1_write((int (*)())i2d_PrivateKey,\
456 (((x)->type == EVP_PKEY_DSA)?PEM_STRING_DSA:PEM_STRING_RSA),\
457 bp,(char *)x,enc,kstr,klen,cb,u)
458#define PEM_write_PKCS7(fp,x) \
459 PEM_ASN1_write((int (*)())i2d_PKCS7,PEM_STRING_PKCS7,fp, \
460 (char *)x, NULL,NULL,0,NULL,NULL)
461#define PEM_write_DHparams(fp,x) \
462 PEM_ASN1_write((int (*)())i2d_DHparams,PEM_STRING_DHPARAMS,fp,\
463 (char *)x,NULL,NULL,0,NULL,NULL)
464
465#define PEM_write_NETSCAPE_CERT_SEQUENCE(fp,x) \
466 PEM_ASN1_write((int (*)())i2d_NETSCAPE_CERT_SEQUENCE, \
467 PEM_STRING_X509,fp, \
468 (char *)x, NULL,NULL,0,NULL,NULL)
469
470#define PEM_read_SSL_SESSION(fp,x,cb,u) (SSL_SESSION *)PEM_ASN1_read( \
471 (char *(*)())d2i_SSL_SESSION,PEM_STRING_SSL_SESSION,fp,(char **)x,cb,u)
472#define PEM_read_X509(fp,x,cb,u) (X509 *)PEM_ASN1_read( \
473 (char *(*)())d2i_X509,PEM_STRING_X509,fp,(char **)x,cb,u)
474#define PEM_read_X509_REQ(fp,x,cb,u) (X509_REQ *)PEM_ASN1_read( \
475 (char *(*)())d2i_X509_REQ,PEM_STRING_X509_REQ,fp,(char **)x,cb,u)
476#define PEM_read_X509_CRL(fp,x,cb,u) (X509_CRL *)PEM_ASN1_read( \
477 (char *(*)())d2i_X509_CRL,PEM_STRING_X509_CRL,fp,(char **)x,cb,u)
478#define PEM_read_RSAPrivateKey(fp,x,cb,u) (RSA *)PEM_ASN1_read( \
479 (char *(*)())d2i_RSAPrivateKey,PEM_STRING_RSA,fp,(char **)x,cb,u)
480#define PEM_read_RSAPublicKey(fp,x,cb,u) (RSA *)PEM_ASN1_read( \
481 (char *(*)())d2i_RSAPublicKey,PEM_STRING_RSA_PUBLIC,fp,(char **)x,cb,u)
482#define PEM_read_DSAPrivateKey(fp,x,cb,u) (DSA *)PEM_ASN1_read( \
483 (char *(*)())d2i_DSAPrivateKey,PEM_STRING_DSA,fp,(char **)x,cb,u)
484#define PEM_read_PrivateKey(fp,x,cb,u) (EVP_PKEY *)PEM_ASN1_read( \
485 (char *(*)())d2i_PrivateKey,PEM_STRING_EVP_PKEY,fp,(char **)x,cb,u)
486#define PEM_read_PKCS7(fp,x,cb,u) (PKCS7 *)PEM_ASN1_read( \
487 (char *(*)())d2i_PKCS7,PEM_STRING_PKCS7,fp,(char **)x,cb,u)
488#define PEM_read_DHparams(fp,x,cb,u) (DH *)PEM_ASN1_read( \
489 (char *(*)())d2i_DHparams,PEM_STRING_DHPARAMS,fp,(char **)x,cb,u)
490
491#define PEM_read_NETSCAPE_CERT_SEQUENCE(fp,x,cb,u) \
492 (NETSCAPE_CERT_SEQUENCE *)PEM_ASN1_read( \
493 (char *(*)())d2i_NETSCAPE_CERT_SEQUENCE,PEM_STRING_X509,fp,\
494 (char **)x,cb,u)
495
496#define PEM_write_bio_X509(bp,x) \
497 PEM_ASN1_write_bio((int (*)())i2d_X509,PEM_STRING_X509,bp, \
498 (char *)x, NULL,NULL,0,NULL,NULL)
499#define PEM_write_bio_X509_REQ(bp,x) PEM_ASN1_write_bio( \
500 (int (*)())i2d_X509_REQ,PEM_STRING_X509_REQ,bp,(char *)x, \
501 NULL,NULL,0,NULL,NULL)
502#define PEM_write_bio_X509_CRL(bp,x) \
503 PEM_ASN1_write_bio((int (*)())i2d_X509_CRL,PEM_STRING_X509_CRL,\
504 bp,(char *)x, NULL,NULL,0,NULL,NULL)
505#define PEM_write_bio_RSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \
506 PEM_ASN1_write_bio((int (*)())i2d_RSAPrivateKey,PEM_STRING_RSA,\
507 bp,(char *)x,enc,kstr,klen,cb,u)
508#define PEM_write_bio_RSAPublicKey(bp,x) \
509 PEM_ASN1_write_bio((int (*)())i2d_RSAPublicKey, \
510 PEM_STRING_RSA_PUBLIC,\
511 bp,(char *)x,NULL,NULL,0,NULL,NULL)
512#define PEM_write_bio_DSAPrivateKey(bp,x,enc,kstr,klen,cb,u) \
513 PEM_ASN1_write_bio((int (*)())i2d_DSAPrivateKey,PEM_STRING_DSA,\
514 bp,(char *)x,enc,kstr,klen,cb,u)
515#define PEM_write_bio_PrivateKey(bp,x,enc,kstr,klen,cb,u) \
516 PEM_ASN1_write_bio((int (*)())i2d_PrivateKey,\
517 (((x)->type == EVP_PKEY_DSA)?PEM_STRING_DSA:PEM_STRING_RSA),\
518 bp,(char *)x,enc,kstr,klen,cb,u)
519#define PEM_write_bio_PKCS7(bp,x) \
520 PEM_ASN1_write_bio((int (*)())i2d_PKCS7,PEM_STRING_PKCS7,bp, \
521 (char *)x, NULL,NULL,0,NULL,NULL)
522#define PEM_write_bio_DHparams(bp,x) \
523 PEM_ASN1_write_bio((int (*)())i2d_DHparams,PEM_STRING_DHPARAMS,\
524 bp,(char *)x,NULL,NULL,0,NULL,NULL)
525#define PEM_write_bio_DSAparams(bp,x) \
526 PEM_ASN1_write_bio((int (*)())i2d_DSAparams, \
527 PEM_STRING_DSAPARAMS,bp,(char *)x,NULL,NULL,0,NULL,NULL)
528
529#define PEM_write_bio_NETSCAPE_CERT_SEQUENCE(bp,x) \
530 PEM_ASN1_write_bio((int (*)())i2d_NETSCAPE_CERT_SEQUENCE, \
531 PEM_STRING_X509,bp, \
532 (char *)x, NULL,NULL,0,NULL,NULL)
533
534#define PEM_read_bio_X509(bp,x,cb,u) (X509 *)PEM_ASN1_read_bio( \
535 (char *(*)())d2i_X509,PEM_STRING_X509,bp,(char **)x,cb,u)
536#define PEM_read_bio_X509_REQ(bp,x,cb,u) (X509_REQ *)PEM_ASN1_read_bio( \
537 (char *(*)())d2i_X509_REQ,PEM_STRING_X509_REQ,bp,(char **)x,cb,u)
538#define PEM_read_bio_X509_CRL(bp,x,cb,u) (X509_CRL *)PEM_ASN1_read_bio( \
539 (char *(*)())d2i_X509_CRL,PEM_STRING_X509_CRL,bp,(char **)x,cb,u)
540#define PEM_read_bio_RSAPrivateKey(bp,x,cb,u) (RSA *)PEM_ASN1_read_bio( \
541 (char *(*)())d2i_RSAPrivateKey,PEM_STRING_RSA,bp,(char **)x,cb,u)
542#define PEM_read_bio_RSAPublicKey(bp,x,cb,u) (RSA *)PEM_ASN1_read_bio( \
543 (char *(*)())d2i_RSAPublicKey,PEM_STRING_RSA_PUBLIC,bp,(char **)x,cb,u)
544#define PEM_read_bio_DSAPrivateKey(bp,x,cb,u) (DSA *)PEM_ASN1_read_bio( \
545 (char *(*)())d2i_DSAPrivateKey,PEM_STRING_DSA,bp,(char **)x,cb,u)
546#define PEM_read_bio_PrivateKey(bp,x,cb,u) (EVP_PKEY *)PEM_ASN1_read_bio( \
547 (char *(*)())d2i_PrivateKey,PEM_STRING_EVP_PKEY,bp,(char **)x,cb,u)
548
549#define PEM_read_bio_PKCS7(bp,x,cb,u) (PKCS7 *)PEM_ASN1_read_bio( \
550 (char *(*)())d2i_PKCS7,PEM_STRING_PKCS7,bp,(char **)x,cb,u)
551#define PEM_read_bio_DHparams(bp,x,cb,u) (DH *)PEM_ASN1_read_bio( \
552 (char *(*)())d2i_DHparams,PEM_STRING_DHPARAMS,bp,(char **)x,cb,u)
553#define PEM_read_bio_DSAparams(bp,x,cb,u) (DSA *)PEM_ASN1_read_bio( \
554 (char *(*)())d2i_DSAparams,PEM_STRING_DSAPARAMS,bp,(char **)x,cb,u)
555
556#define PEM_read_bio_NETSCAPE_CERT_SEQUENCE(bp,x,cb,u) \
557 (NETSCAPE_CERT_SEQUENCE *)PEM_ASN1_read_bio( \
558 (char *(*)())d2i_NETSCAPE_CERT_SEQUENCE,PEM_STRING_X509,bp,\
559 (char **)x,cb,u)
560
561#endif
562
563#if 1 398#if 1
564/* "userdata": new with OpenSSL 0.9.4 */ 399/* "userdata": new with OpenSSL 0.9.4 */
565typedef int pem_password_cb(char *buf, int size, int rwflag, void *userdata); 400typedef int pem_password_cb(char *buf, int size, int rwflag, void *userdata);
@@ -581,40 +416,25 @@ int PEM_bytes_read_bio(unsigned char **pdata, long *plen, char **pnm, const char
581 pem_password_cb *cb, void *u); 416 pem_password_cb *cb, void *u);
582void * PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp, 417void * PEM_ASN1_read_bio(d2i_of_void *d2i, const char *name, BIO *bp,
583 void **x, pem_password_cb *cb, void *u); 418 void **x, pem_password_cb *cb, void *u);
584 419int PEM_ASN1_write_bio(i2d_of_void *i2d,const char *name,BIO *bp, void *x,
585#define PEM_ASN1_read_bio_of(type,d2i,name,bp,x,cb,u) \
586 ((type*)PEM_ASN1_read_bio(CHECKED_D2I_OF(type, d2i), \
587 name, bp, \
588 CHECKED_PPTR_OF(type, x), \
589 cb, u))
590
591int PEM_ASN1_write_bio(i2d_of_void *i2d,const char *name,BIO *bp,char *x,
592 const EVP_CIPHER *enc,unsigned char *kstr,int klen, 420 const EVP_CIPHER *enc,unsigned char *kstr,int klen,
593 pem_password_cb *cb, void *u); 421 pem_password_cb *cb, void *u);
594 422
595#define PEM_ASN1_write_bio_of(type,i2d,name,bp,x,enc,kstr,klen,cb,u) \
596 (PEM_ASN1_write_bio(CHECKED_I2D_OF(type, i2d), \
597 name, bp, \
598 CHECKED_PTR_OF(type, x), \
599 enc, kstr, klen, cb, u))
600
601STACK_OF(X509_INFO) * PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u); 423STACK_OF(X509_INFO) * PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pem_password_cb *cb, void *u);
602int PEM_X509_INFO_write_bio(BIO *bp,X509_INFO *xi, EVP_CIPHER *enc, 424int PEM_X509_INFO_write_bio(BIO *bp,X509_INFO *xi, EVP_CIPHER *enc,
603 unsigned char *kstr, int klen, pem_password_cb *cd, void *u); 425 unsigned char *kstr, int klen, pem_password_cb *cd, void *u);
604#endif 426#endif
605 427
606#ifndef OPENSSL_SYS_WIN16
607int PEM_read(FILE *fp, char **name, char **header, 428int PEM_read(FILE *fp, char **name, char **header,
608 unsigned char **data,long *len); 429 unsigned char **data,long *len);
609int PEM_write(FILE *fp,char *name,char *hdr,unsigned char *data,long len); 430int PEM_write(FILE *fp,char *name,char *hdr,unsigned char *data,long len);
610void * PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x, 431void * PEM_ASN1_read(d2i_of_void *d2i, const char *name, FILE *fp, void **x,
611 pem_password_cb *cb, void *u); 432 pem_password_cb *cb, void *u);
612int PEM_ASN1_write(i2d_of_void *i2d,const char *name,FILE *fp, 433int PEM_ASN1_write(i2d_of_void *i2d,const char *name,FILE *fp,
613 char *x,const EVP_CIPHER *enc,unsigned char *kstr, 434 void *x,const EVP_CIPHER *enc,unsigned char *kstr,
614 int klen,pem_password_cb *callback, void *u); 435 int klen,pem_password_cb *callback, void *u);
615STACK_OF(X509_INFO) * PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk, 436STACK_OF(X509_INFO) * PEM_X509_INFO_read(FILE *fp, STACK_OF(X509_INFO) *sk,
616 pem_password_cb *cb, void *u); 437 pem_password_cb *cb, void *u);
617#endif
618 438
619int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type, 439int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type,
620 EVP_MD *md_type, unsigned char **ek, int *ekl, 440 EVP_MD *md_type, unsigned char **ek, int *ekl,
@@ -633,7 +453,6 @@ int PEM_def_callback(char *buf, int num, int w, void *key);
633void PEM_proc_type(char *buf, int type); 453void PEM_proc_type(char *buf, int type);
634void PEM_dek_info(char *buf, const char *type, int len, char *str); 454void PEM_dek_info(char *buf, const char *type, int len, char *str);
635 455
636#ifndef SSLEAY_MACROS
637 456
638#include <openssl/symhacks.h> 457#include <openssl/symhacks.h>
639 458
@@ -719,7 +538,21 @@ EVP_PKEY *d2i_PKCS8PrivateKey_fp(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, vo
719int PEM_write_PKCS8PrivateKey(FILE *fp,EVP_PKEY *x,const EVP_CIPHER *enc, 538int PEM_write_PKCS8PrivateKey(FILE *fp,EVP_PKEY *x,const EVP_CIPHER *enc,
720 char *kstr,int klen, pem_password_cb *cd, void *u); 539 char *kstr,int klen, pem_password_cb *cd, void *u);
721 540
722#endif /* SSLEAY_MACROS */ 541EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x);
542int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x);
543
544
545EVP_PKEY *b2i_PrivateKey(const unsigned char **in, long length);
546EVP_PKEY *b2i_PublicKey(const unsigned char **in, long length);
547EVP_PKEY *b2i_PrivateKey_bio(BIO *in);
548EVP_PKEY *b2i_PublicKey_bio(BIO *in);
549int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk);
550int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk);
551#ifndef OPENSSL_NO_RC4
552EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u);
553int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel,
554 pem_password_cb *cb, void *u);
555#endif
723 556
724 557
725/* BEGIN ERROR CODES */ 558/* BEGIN ERROR CODES */
@@ -731,10 +564,22 @@ void ERR_load_PEM_strings(void);
731/* Error codes for the PEM functions. */ 564/* Error codes for the PEM functions. */
732 565
733/* Function codes. */ 566/* Function codes. */
567#define PEM_F_B2I_DSS 127
568#define PEM_F_B2I_PVK_BIO 128
569#define PEM_F_B2I_RSA 129
570#define PEM_F_CHECK_BITLEN_DSA 130
571#define PEM_F_CHECK_BITLEN_RSA 131
734#define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120 572#define PEM_F_D2I_PKCS8PRIVATEKEY_BIO 120
735#define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121 573#define PEM_F_D2I_PKCS8PRIVATEKEY_FP 121
574#define PEM_F_DO_B2I 132
575#define PEM_F_DO_B2I_BIO 133
576#define PEM_F_DO_BLOB_HEADER 134
736#define PEM_F_DO_PK8PKEY 126 577#define PEM_F_DO_PK8PKEY 126
737#define PEM_F_DO_PK8PKEY_FP 125 578#define PEM_F_DO_PK8PKEY_FP 125
579#define PEM_F_DO_PVK_BODY 135
580#define PEM_F_DO_PVK_HEADER 136
581#define PEM_F_I2B_PVK 137
582#define PEM_F_I2B_PVK_BIO 138
738#define PEM_F_LOAD_IV 101 583#define PEM_F_LOAD_IV 101
739#define PEM_F_PEM_ASN1_READ 102 584#define PEM_F_PEM_ASN1_READ 102
740#define PEM_F_PEM_ASN1_READ_BIO 103 585#define PEM_F_PEM_ASN1_READ_BIO 103
@@ -747,6 +592,7 @@ void ERR_load_PEM_strings(void);
747#define PEM_F_PEM_PK8PKEY 119 592#define PEM_F_PEM_PK8PKEY 119
748#define PEM_F_PEM_READ 108 593#define PEM_F_PEM_READ 108
749#define PEM_F_PEM_READ_BIO 109 594#define PEM_F_PEM_READ_BIO 109
595#define PEM_F_PEM_READ_BIO_PARAMETERS 140
750#define PEM_F_PEM_READ_BIO_PRIVATEKEY 123 596#define PEM_F_PEM_READ_BIO_PRIVATEKEY 123
751#define PEM_F_PEM_READ_PRIVATEKEY 124 597#define PEM_F_PEM_READ_PRIVATEKEY 124
752#define PEM_F_PEM_SEALFINAL 110 598#define PEM_F_PEM_SEALFINAL 110
@@ -754,6 +600,7 @@ void ERR_load_PEM_strings(void);
754#define PEM_F_PEM_SIGNFINAL 112 600#define PEM_F_PEM_SIGNFINAL 112
755#define PEM_F_PEM_WRITE 113 601#define PEM_F_PEM_WRITE 113
756#define PEM_F_PEM_WRITE_BIO 114 602#define PEM_F_PEM_WRITE_BIO 114
603#define PEM_F_PEM_WRITE_PRIVATEKEY 139
757#define PEM_F_PEM_X509_INFO_READ 115 604#define PEM_F_PEM_X509_INFO_READ 115
758#define PEM_F_PEM_X509_INFO_READ_BIO 116 605#define PEM_F_PEM_X509_INFO_READ_BIO 116
759#define PEM_F_PEM_X509_INFO_WRITE_BIO 117 606#define PEM_F_PEM_X509_INFO_WRITE_BIO 117
@@ -763,18 +610,30 @@ void ERR_load_PEM_strings(void);
763#define PEM_R_BAD_DECRYPT 101 610#define PEM_R_BAD_DECRYPT 101
764#define PEM_R_BAD_END_LINE 102 611#define PEM_R_BAD_END_LINE 102
765#define PEM_R_BAD_IV_CHARS 103 612#define PEM_R_BAD_IV_CHARS 103
613#define PEM_R_BAD_MAGIC_NUMBER 116
766#define PEM_R_BAD_PASSWORD_READ 104 614#define PEM_R_BAD_PASSWORD_READ 104
615#define PEM_R_BAD_VERSION_NUMBER 117
616#define PEM_R_BIO_WRITE_FAILURE 118
617#define PEM_R_CIPHER_IS_NULL 127
767#define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115 618#define PEM_R_ERROR_CONVERTING_PRIVATE_KEY 115
619#define PEM_R_EXPECTING_PRIVATE_KEY_BLOB 119
620#define PEM_R_EXPECTING_PUBLIC_KEY_BLOB 120
621#define PEM_R_INCONSISTENT_HEADER 121
622#define PEM_R_KEYBLOB_HEADER_PARSE_ERROR 122
623#define PEM_R_KEYBLOB_TOO_SHORT 123
768#define PEM_R_NOT_DEK_INFO 105 624#define PEM_R_NOT_DEK_INFO 105
769#define PEM_R_NOT_ENCRYPTED 106 625#define PEM_R_NOT_ENCRYPTED 106
770#define PEM_R_NOT_PROC_TYPE 107 626#define PEM_R_NOT_PROC_TYPE 107
771#define PEM_R_NO_START_LINE 108 627#define PEM_R_NO_START_LINE 108
772#define PEM_R_PROBLEMS_GETTING_PASSWORD 109 628#define PEM_R_PROBLEMS_GETTING_PASSWORD 109
773#define PEM_R_PUBLIC_KEY_NO_RSA 110 629#define PEM_R_PUBLIC_KEY_NO_RSA 110
630#define PEM_R_PVK_DATA_TOO_SHORT 124
631#define PEM_R_PVK_TOO_SHORT 125
774#define PEM_R_READ_KEY 111 632#define PEM_R_READ_KEY 111
775#define PEM_R_SHORT_HEADER 112 633#define PEM_R_SHORT_HEADER 112
776#define PEM_R_UNSUPPORTED_CIPHER 113 634#define PEM_R_UNSUPPORTED_CIPHER 113
777#define PEM_R_UNSUPPORTED_ENCRYPTION 114 635#define PEM_R_UNSUPPORTED_ENCRYPTION 114
636#define PEM_R_UNSUPPORTED_KEY_COMPONENTS 126
778 637
779#ifdef __cplusplus 638#ifdef __cplusplus
780} 639}
diff --git a/src/lib/libssl/src/crypto/pem/pem_all.c b/src/lib/libssl/src/crypto/pem/pem_all.c
index 69dd19bf2e..3e7a6093ad 100644
--- a/src/lib/libssl/src/crypto/pem/pem_all.c
+++ b/src/lib/libssl/src/crypto/pem/pem_all.c
@@ -110,7 +110,6 @@
110 */ 110 */
111 111
112#include <stdio.h> 112#include <stdio.h>
113#undef SSLEAY_MACROS
114#include "cryptlib.h" 113#include "cryptlib.h"
115#include <openssl/bio.h> 114#include <openssl/bio.h>
116#include <openssl/evp.h> 115#include <openssl/evp.h>
@@ -194,49 +193,7 @@ RSA *PEM_read_RSAPrivateKey(FILE *fp, RSA **rsa, pem_password_cb *cb,
194 193
195#endif 194#endif
196 195
197#ifdef OPENSSL_FIPS
198
199int PEM_write_bio_RSAPrivateKey(BIO *bp, RSA *x, const EVP_CIPHER *enc,
200 unsigned char *kstr, int klen,
201 pem_password_cb *cb, void *u)
202{
203 EVP_PKEY *k;
204 int ret;
205 k = EVP_PKEY_new();
206 if (!k)
207 return 0;
208 EVP_PKEY_set1_RSA(k, x);
209
210 ret = PEM_write_bio_PrivateKey(bp, k, enc, kstr, klen, cb, u);
211 EVP_PKEY_free(k);
212 return ret;
213}
214
215#ifndef OPENSSL_NO_FP_API
216int PEM_write_RSAPrivateKey(FILE *fp, RSA *x, const EVP_CIPHER *enc,
217 unsigned char *kstr, int klen,
218 pem_password_cb *cb, void *u)
219{
220 EVP_PKEY *k;
221 int ret;
222 k = EVP_PKEY_new();
223 if (!k)
224 return 0;
225
226 EVP_PKEY_set1_RSA(k, x);
227
228 ret = PEM_write_PrivateKey(fp, k, enc, kstr, klen, cb, u);
229 EVP_PKEY_free(k);
230 return ret;
231}
232#endif
233
234#else
235
236IMPLEMENT_PEM_write_cb_const(RSAPrivateKey, RSA, PEM_STRING_RSA, RSAPrivateKey) 196IMPLEMENT_PEM_write_cb_const(RSAPrivateKey, RSA, PEM_STRING_RSA, RSAPrivateKey)
237
238#endif
239
240IMPLEMENT_PEM_rw_const(RSAPublicKey, RSA, PEM_STRING_RSA_PUBLIC, RSAPublicKey) 197IMPLEMENT_PEM_rw_const(RSAPublicKey, RSA, PEM_STRING_RSA_PUBLIC, RSAPublicKey)
241IMPLEMENT_PEM_rw(RSA_PUBKEY, RSA, PEM_STRING_PUBLIC, RSA_PUBKEY) 198IMPLEMENT_PEM_rw(RSA_PUBKEY, RSA, PEM_STRING_PUBLIC, RSA_PUBKEY)
242 199
@@ -263,50 +220,10 @@ DSA *PEM_read_bio_DSAPrivateKey(BIO *bp, DSA **dsa, pem_password_cb *cb,
263{ 220{
264 EVP_PKEY *pktmp; 221 EVP_PKEY *pktmp;
265 pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); 222 pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u);
266 return pkey_get_dsa(pktmp, dsa); 223 return pkey_get_dsa(pktmp, dsa); /* will free pktmp */
267} 224}
268 225
269#ifdef OPENSSL_FIPS
270
271int PEM_write_bio_DSAPrivateKey(BIO *bp, DSA *x, const EVP_CIPHER *enc,
272 unsigned char *kstr, int klen,
273 pem_password_cb *cb, void *u)
274{
275 EVP_PKEY *k;
276 int ret;
277 k = EVP_PKEY_new();
278 if (!k)
279 return 0;
280 EVP_PKEY_set1_DSA(k, x);
281
282 ret = PEM_write_bio_PrivateKey(bp, k, enc, kstr, klen, cb, u);
283 EVP_PKEY_free(k);
284 return ret;
285}
286
287#ifndef OPENSSL_NO_FP_API
288int PEM_write_DSAPrivateKey(FILE *fp, DSA *x, const EVP_CIPHER *enc,
289 unsigned char *kstr, int klen,
290 pem_password_cb *cb, void *u)
291{
292 EVP_PKEY *k;
293 int ret;
294 k = EVP_PKEY_new();
295 if (!k)
296 return 0;
297 EVP_PKEY_set1_DSA(k, x);
298 ret = PEM_write_PrivateKey(fp, k, enc, kstr, klen, cb, u);
299 EVP_PKEY_free(k);
300 return ret;
301}
302#endif
303
304#else
305
306IMPLEMENT_PEM_write_cb_const(DSAPrivateKey, DSA, PEM_STRING_DSA, DSAPrivateKey) 226IMPLEMENT_PEM_write_cb_const(DSAPrivateKey, DSA, PEM_STRING_DSA, DSAPrivateKey)
307
308#endif
309
310IMPLEMENT_PEM_rw(DSA_PUBKEY, DSA, PEM_STRING_PUBLIC, DSA_PUBKEY) 227IMPLEMENT_PEM_rw(DSA_PUBKEY, DSA, PEM_STRING_PUBLIC, DSA_PUBKEY)
311 228
312#ifndef OPENSSL_NO_FP_API 229#ifndef OPENSSL_NO_FP_API
@@ -316,7 +233,7 @@ DSA *PEM_read_DSAPrivateKey(FILE *fp, DSA **dsa, pem_password_cb *cb,
316{ 233{
317 EVP_PKEY *pktmp; 234 EVP_PKEY *pktmp;
318 pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); 235 pktmp = PEM_read_PrivateKey(fp, NULL, cb, u);
319 return pkey_get_dsa(pktmp, dsa); 236 return pkey_get_dsa(pktmp, dsa); /* will free pktmp */
320} 237}
321 238
322#endif 239#endif
@@ -347,54 +264,13 @@ EC_KEY *PEM_read_bio_ECPrivateKey(BIO *bp, EC_KEY **key, pem_password_cb *cb,
347{ 264{
348 EVP_PKEY *pktmp; 265 EVP_PKEY *pktmp;
349 pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u); 266 pktmp = PEM_read_bio_PrivateKey(bp, NULL, cb, u);
350 return pkey_get_eckey(pktmp, key); 267 return pkey_get_eckey(pktmp, key); /* will free pktmp */
351} 268}
352 269
353IMPLEMENT_PEM_rw_const(ECPKParameters, EC_GROUP, PEM_STRING_ECPARAMETERS, ECPKParameters) 270IMPLEMENT_PEM_rw_const(ECPKParameters, EC_GROUP, PEM_STRING_ECPARAMETERS, ECPKParameters)
354 271
355
356
357#ifdef OPENSSL_FIPS
358
359int PEM_write_bio_ECPrivateKey(BIO *bp, EC_KEY *x, const EVP_CIPHER *enc,
360 unsigned char *kstr, int klen,
361 pem_password_cb *cb, void *u)
362{
363 EVP_PKEY *k;
364 int ret;
365 k = EVP_PKEY_new();
366 if (!k)
367 return 0;
368 EVP_PKEY_set1_EC_KEY(k, x);
369
370 ret = PEM_write_bio_PrivateKey(bp, k, enc, kstr, klen, cb, u);
371 EVP_PKEY_free(k);
372 return ret;
373}
374
375#ifndef OPENSSL_NO_FP_API
376int PEM_write_ECPrivateKey(FILE *fp, EC_KEY *x, const EVP_CIPHER *enc,
377 unsigned char *kstr, int klen,
378 pem_password_cb *cb, void *u)
379{
380 EVP_PKEY *k;
381 int ret;
382 k = EVP_PKEY_new();
383 if (!k)
384 return 0;
385 EVP_PKEY_set1_EC_KEY(k, x);
386 ret = PEM_write_PrivateKey(fp, k, enc, kstr, klen, cb, u);
387 EVP_PKEY_free(k);
388 return ret;
389}
390#endif
391
392#else
393
394IMPLEMENT_PEM_write_cb(ECPrivateKey, EC_KEY, PEM_STRING_ECPRIVATEKEY, ECPrivateKey) 272IMPLEMENT_PEM_write_cb(ECPrivateKey, EC_KEY, PEM_STRING_ECPRIVATEKEY, ECPrivateKey)
395 273
396#endif
397
398IMPLEMENT_PEM_rw(EC_PUBKEY, EC_KEY, PEM_STRING_PUBLIC, EC_PUBKEY) 274IMPLEMENT_PEM_rw(EC_PUBKEY, EC_KEY, PEM_STRING_PUBLIC, EC_PUBKEY)
399 275
400#ifndef OPENSSL_NO_FP_API 276#ifndef OPENSSL_NO_FP_API
@@ -404,7 +280,7 @@ EC_KEY *PEM_read_ECPrivateKey(FILE *fp, EC_KEY **eckey, pem_password_cb *cb,
404{ 280{
405 EVP_PKEY *pktmp; 281 EVP_PKEY *pktmp;
406 pktmp = PEM_read_PrivateKey(fp, NULL, cb, u); 282 pktmp = PEM_read_PrivateKey(fp, NULL, cb, u);
407 return pkey_get_eckey(pktmp, eckey); 283 return pkey_get_eckey(pktmp, eckey); /* will free pktmp */
408} 284}
409 285
410#endif 286#endif
@@ -417,66 +293,4 @@ IMPLEMENT_PEM_rw_const(DHparams, DH, PEM_STRING_DHPARAMS, DHparams)
417 293
418#endif 294#endif
419 295
420
421/* The PrivateKey case is not that straightforward.
422 * IMPLEMENT_PEM_rw_cb(PrivateKey, EVP_PKEY, PEM_STRING_EVP_PKEY, PrivateKey)
423 * does not work, RSA and DSA keys have specific strings.
424 * (When reading, parameter PEM_STRING_EVP_PKEY is a wildcard for anything
425 * appropriate.)
426 */
427
428#ifdef OPENSSL_FIPS
429
430static const char *pkey_str(EVP_PKEY *x)
431 {
432 switch (x->type)
433 {
434 case EVP_PKEY_RSA:
435 return PEM_STRING_RSA;
436
437 case EVP_PKEY_DSA:
438 return PEM_STRING_DSA;
439
440 case EVP_PKEY_EC:
441 return PEM_STRING_ECPRIVATEKEY;
442
443 default:
444 return NULL;
445 }
446 }
447
448
449int PEM_write_bio_PrivateKey(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
450 unsigned char *kstr, int klen,
451 pem_password_cb *cb, void *u)
452 {
453 if (FIPS_mode())
454 return PEM_write_bio_PKCS8PrivateKey(bp, x, enc,
455 (char *)kstr, klen, cb, u);
456 else
457 return PEM_ASN1_write_bio((i2d_of_void *)i2d_PrivateKey,
458 pkey_str(x), bp,(char *)x,enc,kstr,klen,cb,u);
459 }
460
461#ifndef OPENSSL_NO_FP_API
462int PEM_write_PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
463 unsigned char *kstr, int klen,
464 pem_password_cb *cb, void *u)
465 {
466 if (FIPS_mode())
467 return PEM_write_PKCS8PrivateKey(fp, x, enc,
468 (char *)kstr, klen, cb, u);
469 else
470 return PEM_ASN1_write((i2d_of_void *)i2d_PrivateKey,
471 pkey_str(x), fp,(char *)x,enc,kstr,klen,cb,u);
472 }
473#endif
474
475#else
476IMPLEMENT_PEM_write_cb(PrivateKey, EVP_PKEY, ((x->type == EVP_PKEY_DSA)?PEM_STRING_DSA:\
477 (x->type == EVP_PKEY_RSA)?PEM_STRING_RSA:PEM_STRING_ECPRIVATEKEY), PrivateKey)
478
479#endif
480
481IMPLEMENT_PEM_rw(PUBKEY, EVP_PKEY, PEM_STRING_PUBLIC, PUBKEY) 296IMPLEMENT_PEM_rw(PUBKEY, EVP_PKEY, PEM_STRING_PUBLIC, PUBKEY)
482
diff --git a/src/lib/libssl/src/crypto/pem/pem_err.c b/src/lib/libssl/src/crypto/pem/pem_err.c
index 3133563d77..d644aeedd4 100644
--- a/src/lib/libssl/src/crypto/pem/pem_err.c
+++ b/src/lib/libssl/src/crypto/pem/pem_err.c
@@ -1,6 +1,6 @@
1/* crypto/pem/pem_err.c */ 1/* crypto/pem/pem_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -70,10 +70,22 @@
70 70
71static ERR_STRING_DATA PEM_str_functs[]= 71static ERR_STRING_DATA PEM_str_functs[]=
72 { 72 {
73{ERR_FUNC(PEM_F_B2I_DSS), "B2I_DSS"},
74{ERR_FUNC(PEM_F_B2I_PVK_BIO), "b2i_PVK_bio"},
75{ERR_FUNC(PEM_F_B2I_RSA), "B2I_RSA"},
76{ERR_FUNC(PEM_F_CHECK_BITLEN_DSA), "CHECK_BITLEN_DSA"},
77{ERR_FUNC(PEM_F_CHECK_BITLEN_RSA), "CHECK_BITLEN_RSA"},
73{ERR_FUNC(PEM_F_D2I_PKCS8PRIVATEKEY_BIO), "d2i_PKCS8PrivateKey_bio"}, 78{ERR_FUNC(PEM_F_D2I_PKCS8PRIVATEKEY_BIO), "d2i_PKCS8PrivateKey_bio"},
74{ERR_FUNC(PEM_F_D2I_PKCS8PRIVATEKEY_FP), "d2i_PKCS8PrivateKey_fp"}, 79{ERR_FUNC(PEM_F_D2I_PKCS8PRIVATEKEY_FP), "d2i_PKCS8PrivateKey_fp"},
80{ERR_FUNC(PEM_F_DO_B2I), "DO_B2I"},
81{ERR_FUNC(PEM_F_DO_B2I_BIO), "DO_B2I_BIO"},
82{ERR_FUNC(PEM_F_DO_BLOB_HEADER), "DO_BLOB_HEADER"},
75{ERR_FUNC(PEM_F_DO_PK8PKEY), "DO_PK8PKEY"}, 83{ERR_FUNC(PEM_F_DO_PK8PKEY), "DO_PK8PKEY"},
76{ERR_FUNC(PEM_F_DO_PK8PKEY_FP), "DO_PK8PKEY_FP"}, 84{ERR_FUNC(PEM_F_DO_PK8PKEY_FP), "DO_PK8PKEY_FP"},
85{ERR_FUNC(PEM_F_DO_PVK_BODY), "DO_PVK_BODY"},
86{ERR_FUNC(PEM_F_DO_PVK_HEADER), "DO_PVK_HEADER"},
87{ERR_FUNC(PEM_F_I2B_PVK), "I2B_PVK"},
88{ERR_FUNC(PEM_F_I2B_PVK_BIO), "i2b_PVK_bio"},
77{ERR_FUNC(PEM_F_LOAD_IV), "LOAD_IV"}, 89{ERR_FUNC(PEM_F_LOAD_IV), "LOAD_IV"},
78{ERR_FUNC(PEM_F_PEM_ASN1_READ), "PEM_ASN1_read"}, 90{ERR_FUNC(PEM_F_PEM_ASN1_READ), "PEM_ASN1_read"},
79{ERR_FUNC(PEM_F_PEM_ASN1_READ_BIO), "PEM_ASN1_read_bio"}, 91{ERR_FUNC(PEM_F_PEM_ASN1_READ_BIO), "PEM_ASN1_read_bio"},
@@ -86,6 +98,7 @@ static ERR_STRING_DATA PEM_str_functs[]=
86{ERR_FUNC(PEM_F_PEM_PK8PKEY), "PEM_PK8PKEY"}, 98{ERR_FUNC(PEM_F_PEM_PK8PKEY), "PEM_PK8PKEY"},
87{ERR_FUNC(PEM_F_PEM_READ), "PEM_read"}, 99{ERR_FUNC(PEM_F_PEM_READ), "PEM_read"},
88{ERR_FUNC(PEM_F_PEM_READ_BIO), "PEM_read_bio"}, 100{ERR_FUNC(PEM_F_PEM_READ_BIO), "PEM_read_bio"},
101{ERR_FUNC(PEM_F_PEM_READ_BIO_PARAMETERS), "PEM_read_bio_Parameters"},
89{ERR_FUNC(PEM_F_PEM_READ_BIO_PRIVATEKEY), "PEM_READ_BIO_PRIVATEKEY"}, 102{ERR_FUNC(PEM_F_PEM_READ_BIO_PRIVATEKEY), "PEM_READ_BIO_PRIVATEKEY"},
90{ERR_FUNC(PEM_F_PEM_READ_PRIVATEKEY), "PEM_READ_PRIVATEKEY"}, 103{ERR_FUNC(PEM_F_PEM_READ_PRIVATEKEY), "PEM_READ_PRIVATEKEY"},
91{ERR_FUNC(PEM_F_PEM_SEALFINAL), "PEM_SealFinal"}, 104{ERR_FUNC(PEM_F_PEM_SEALFINAL), "PEM_SealFinal"},
@@ -93,6 +106,7 @@ static ERR_STRING_DATA PEM_str_functs[]=
93{ERR_FUNC(PEM_F_PEM_SIGNFINAL), "PEM_SignFinal"}, 106{ERR_FUNC(PEM_F_PEM_SIGNFINAL), "PEM_SignFinal"},
94{ERR_FUNC(PEM_F_PEM_WRITE), "PEM_write"}, 107{ERR_FUNC(PEM_F_PEM_WRITE), "PEM_write"},
95{ERR_FUNC(PEM_F_PEM_WRITE_BIO), "PEM_write_bio"}, 108{ERR_FUNC(PEM_F_PEM_WRITE_BIO), "PEM_write_bio"},
109{ERR_FUNC(PEM_F_PEM_WRITE_PRIVATEKEY), "PEM_WRITE_PRIVATEKEY"},
96{ERR_FUNC(PEM_F_PEM_X509_INFO_READ), "PEM_X509_INFO_read"}, 110{ERR_FUNC(PEM_F_PEM_X509_INFO_READ), "PEM_X509_INFO_read"},
97{ERR_FUNC(PEM_F_PEM_X509_INFO_READ_BIO), "PEM_X509_INFO_read_bio"}, 111{ERR_FUNC(PEM_F_PEM_X509_INFO_READ_BIO), "PEM_X509_INFO_read_bio"},
98{ERR_FUNC(PEM_F_PEM_X509_INFO_WRITE_BIO), "PEM_X509_INFO_write_bio"}, 112{ERR_FUNC(PEM_F_PEM_X509_INFO_WRITE_BIO), "PEM_X509_INFO_write_bio"},
@@ -105,18 +119,30 @@ static ERR_STRING_DATA PEM_str_reasons[]=
105{ERR_REASON(PEM_R_BAD_DECRYPT) ,"bad decrypt"}, 119{ERR_REASON(PEM_R_BAD_DECRYPT) ,"bad decrypt"},
106{ERR_REASON(PEM_R_BAD_END_LINE) ,"bad end line"}, 120{ERR_REASON(PEM_R_BAD_END_LINE) ,"bad end line"},
107{ERR_REASON(PEM_R_BAD_IV_CHARS) ,"bad iv chars"}, 121{ERR_REASON(PEM_R_BAD_IV_CHARS) ,"bad iv chars"},
122{ERR_REASON(PEM_R_BAD_MAGIC_NUMBER) ,"bad magic number"},
108{ERR_REASON(PEM_R_BAD_PASSWORD_READ) ,"bad password read"}, 123{ERR_REASON(PEM_R_BAD_PASSWORD_READ) ,"bad password read"},
124{ERR_REASON(PEM_R_BAD_VERSION_NUMBER) ,"bad version number"},
125{ERR_REASON(PEM_R_BIO_WRITE_FAILURE) ,"bio write failure"},
126{ERR_REASON(PEM_R_CIPHER_IS_NULL) ,"cipher is null"},
109{ERR_REASON(PEM_R_ERROR_CONVERTING_PRIVATE_KEY),"error converting private key"}, 127{ERR_REASON(PEM_R_ERROR_CONVERTING_PRIVATE_KEY),"error converting private key"},
128{ERR_REASON(PEM_R_EXPECTING_PRIVATE_KEY_BLOB),"expecting private key blob"},
129{ERR_REASON(PEM_R_EXPECTING_PUBLIC_KEY_BLOB),"expecting public key blob"},
130{ERR_REASON(PEM_R_INCONSISTENT_HEADER) ,"inconsistent header"},
131{ERR_REASON(PEM_R_KEYBLOB_HEADER_PARSE_ERROR),"keyblob header parse error"},
132{ERR_REASON(PEM_R_KEYBLOB_TOO_SHORT) ,"keyblob too short"},
110{ERR_REASON(PEM_R_NOT_DEK_INFO) ,"not dek info"}, 133{ERR_REASON(PEM_R_NOT_DEK_INFO) ,"not dek info"},
111{ERR_REASON(PEM_R_NOT_ENCRYPTED) ,"not encrypted"}, 134{ERR_REASON(PEM_R_NOT_ENCRYPTED) ,"not encrypted"},
112{ERR_REASON(PEM_R_NOT_PROC_TYPE) ,"not proc type"}, 135{ERR_REASON(PEM_R_NOT_PROC_TYPE) ,"not proc type"},
113{ERR_REASON(PEM_R_NO_START_LINE) ,"no start line"}, 136{ERR_REASON(PEM_R_NO_START_LINE) ,"no start line"},
114{ERR_REASON(PEM_R_PROBLEMS_GETTING_PASSWORD),"problems getting password"}, 137{ERR_REASON(PEM_R_PROBLEMS_GETTING_PASSWORD),"problems getting password"},
115{ERR_REASON(PEM_R_PUBLIC_KEY_NO_RSA) ,"public key no rsa"}, 138{ERR_REASON(PEM_R_PUBLIC_KEY_NO_RSA) ,"public key no rsa"},
139{ERR_REASON(PEM_R_PVK_DATA_TOO_SHORT) ,"pvk data too short"},
140{ERR_REASON(PEM_R_PVK_TOO_SHORT) ,"pvk too short"},
116{ERR_REASON(PEM_R_READ_KEY) ,"read key"}, 141{ERR_REASON(PEM_R_READ_KEY) ,"read key"},
117{ERR_REASON(PEM_R_SHORT_HEADER) ,"short header"}, 142{ERR_REASON(PEM_R_SHORT_HEADER) ,"short header"},
118{ERR_REASON(PEM_R_UNSUPPORTED_CIPHER) ,"unsupported cipher"}, 143{ERR_REASON(PEM_R_UNSUPPORTED_CIPHER) ,"unsupported cipher"},
119{ERR_REASON(PEM_R_UNSUPPORTED_ENCRYPTION),"unsupported encryption"}, 144{ERR_REASON(PEM_R_UNSUPPORTED_ENCRYPTION),"unsupported encryption"},
145{ERR_REASON(PEM_R_UNSUPPORTED_KEY_COMPONENTS),"unsupported key components"},
120{0,NULL} 146{0,NULL}
121 }; 147 };
122 148
diff --git a/src/lib/libssl/src/crypto/pem/pem_info.c b/src/lib/libssl/src/crypto/pem/pem_info.c
index 3a273f6f70..1b2be527ed 100644
--- a/src/lib/libssl/src/crypto/pem/pem_info.c
+++ b/src/lib/libssl/src/crypto/pem/pem_info.c
@@ -98,8 +98,8 @@ STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pe
98 long len,error=0; 98 long len,error=0;
99 int ok=0; 99 int ok=0;
100 STACK_OF(X509_INFO) *ret=NULL; 100 STACK_OF(X509_INFO) *ret=NULL;
101 unsigned int i,raw; 101 unsigned int i,raw,ptype;
102 d2i_of_void *d2i; 102 d2i_of_void *d2i = 0;
103 103
104 if (sk == NULL) 104 if (sk == NULL)
105 { 105 {
@@ -116,6 +116,7 @@ STACK_OF(X509_INFO) *PEM_X509_INFO_read_bio(BIO *bp, STACK_OF(X509_INFO) *sk, pe
116 for (;;) 116 for (;;)
117 { 117 {
118 raw=0; 118 raw=0;
119 ptype = 0;
119 i=PEM_read_bio(bp,&name,&header,&data,&len); 120 i=PEM_read_bio(bp,&name,&header,&data,&len);
120 if (i == 0) 121 if (i == 0)
121 { 122 {
@@ -166,7 +167,6 @@ start:
166#ifndef OPENSSL_NO_RSA 167#ifndef OPENSSL_NO_RSA
167 if (strcmp(name,PEM_STRING_RSA) == 0) 168 if (strcmp(name,PEM_STRING_RSA) == 0)
168 { 169 {
169 d2i=(D2I_OF(void))d2i_RSAPrivateKey;
170 if (xi->x_pkey != NULL) 170 if (xi->x_pkey != NULL)
171 { 171 {
172 if (!sk_X509_INFO_push(ret,xi)) goto err; 172 if (!sk_X509_INFO_push(ret,xi)) goto err;
@@ -178,10 +178,8 @@ start:
178 xi->enc_len=0; 178 xi->enc_len=0;
179 179
180 xi->x_pkey=X509_PKEY_new(); 180 xi->x_pkey=X509_PKEY_new();
181 if ((xi->x_pkey->dec_pkey=EVP_PKEY_new()) == NULL) 181 ptype=EVP_PKEY_RSA;
182 goto err; 182 pp=&xi->x_pkey->dec_pkey;
183 xi->x_pkey->dec_pkey->type=EVP_PKEY_RSA;
184 pp=&(xi->x_pkey->dec_pkey->pkey.rsa);
185 if ((int)strlen(header) > 10) /* assume encrypted */ 183 if ((int)strlen(header) > 10) /* assume encrypted */
186 raw=1; 184 raw=1;
187 } 185 }
@@ -202,10 +200,8 @@ start:
202 xi->enc_len=0; 200 xi->enc_len=0;
203 201
204 xi->x_pkey=X509_PKEY_new(); 202 xi->x_pkey=X509_PKEY_new();
205 if ((xi->x_pkey->dec_pkey=EVP_PKEY_new()) == NULL) 203 ptype = EVP_PKEY_DSA;
206 goto err; 204 pp=&xi->x_pkey->dec_pkey;
207 xi->x_pkey->dec_pkey->type=EVP_PKEY_DSA;
208 pp=&xi->x_pkey->dec_pkey->pkey.dsa;
209 if ((int)strlen(header) > 10) /* assume encrypted */ 205 if ((int)strlen(header) > 10) /* assume encrypted */
210 raw=1; 206 raw=1;
211 } 207 }
@@ -226,10 +222,8 @@ start:
226 xi->enc_len=0; 222 xi->enc_len=0;
227 223
228 xi->x_pkey=X509_PKEY_new(); 224 xi->x_pkey=X509_PKEY_new();
229 if ((xi->x_pkey->dec_pkey=EVP_PKEY_new()) == NULL) 225 ptype = EVP_PKEY_EC;
230 goto err; 226 pp=&xi->x_pkey->dec_pkey;
231 xi->x_pkey->dec_pkey->type=EVP_PKEY_EC;
232 pp=&(xi->x_pkey->dec_pkey->pkey.ec);
233 if ((int)strlen(header) > 10) /* assume encrypted */ 227 if ((int)strlen(header) > 10) /* assume encrypted */
234 raw=1; 228 raw=1;
235 } 229 }
@@ -251,7 +245,15 @@ start:
251 if (!PEM_do_header(&cipher,data,&len,cb,u)) 245 if (!PEM_do_header(&cipher,data,&len,cb,u))
252 goto err; 246 goto err;
253 p=data; 247 p=data;
254 if (d2i(pp,&p,len) == NULL) 248 if (ptype)
249 {
250 if (!d2i_PrivateKey(ptype, pp, &p, len))
251 {
252 PEMerr(PEM_F_PEM_X509_INFO_READ_BIO,ERR_R_ASN1_LIB);
253 goto err;
254 }
255 }
256 else if (d2i(pp,&p,len) == NULL)
255 { 257 {
256 PEMerr(PEM_F_PEM_X509_INFO_READ_BIO,ERR_R_ASN1_LIB); 258 PEMerr(PEM_F_PEM_X509_INFO_READ_BIO,ERR_R_ASN1_LIB);
257 goto err; 259 goto err;
@@ -337,6 +339,12 @@ int PEM_X509_INFO_write_bio(BIO *bp, X509_INFO *xi, EVP_CIPHER *enc,
337 { 339 {
338 if ( (xi->enc_data!=NULL) && (xi->enc_len>0) ) 340 if ( (xi->enc_data!=NULL) && (xi->enc_len>0) )
339 { 341 {
342 if (enc == NULL)
343 {
344 PEMerr(PEM_F_PEM_X509_INFO_WRITE_BIO,PEM_R_CIPHER_IS_NULL);
345 goto err;
346 }
347
340 /* copy from weirdo names into more normal things */ 348 /* copy from weirdo names into more normal things */
341 iv=xi->enc_cipher.iv; 349 iv=xi->enc_cipher.iv;
342 data=(unsigned char *)xi->enc_data; 350 data=(unsigned char *)xi->enc_data;
diff --git a/src/lib/libssl/src/crypto/pem/pem_lib.c b/src/lib/libssl/src/crypto/pem/pem_lib.c
index cbafefe416..42e4861bc1 100644
--- a/src/lib/libssl/src/crypto/pem/pem_lib.c
+++ b/src/lib/libssl/src/crypto/pem/pem_lib.c
@@ -57,6 +57,7 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#include <ctype.h>
60#include "cryptlib.h" 61#include "cryptlib.h"
61#include <openssl/buffer.h> 62#include <openssl/buffer.h>
62#include <openssl/objects.h> 63#include <openssl/objects.h>
@@ -65,9 +66,13 @@
65#include <openssl/x509.h> 66#include <openssl/x509.h>
66#include <openssl/pem.h> 67#include <openssl/pem.h>
67#include <openssl/pkcs12.h> 68#include <openssl/pkcs12.h>
69#include "asn1_locl.h"
68#ifndef OPENSSL_NO_DES 70#ifndef OPENSSL_NO_DES
69#include <openssl/des.h> 71#include <openssl/des.h>
70#endif 72#endif
73#ifndef OPENSSL_NO_ENGINE
74#include <openssl/engine.h>
75#endif
71 76
72const char PEM_version[]="PEM" OPENSSL_VERSION_PTEXT; 77const char PEM_version[]="PEM" OPENSSL_VERSION_PTEXT;
73 78
@@ -75,6 +80,7 @@ const char PEM_version[]="PEM" OPENSSL_VERSION_PTEXT;
75 80
76static int load_iv(char **fromp,unsigned char *to, int num); 81static int load_iv(char **fromp,unsigned char *to, int num);
77static int check_pem(const char *nm, const char *name); 82static int check_pem(const char *nm, const char *name);
83int pem_check_suffix(const char *pem_str, const char *suffix);
78 84
79int PEM_def_callback(char *buf, int num, int w, void *key) 85int PEM_def_callback(char *buf, int num, int w, void *key)
80 { 86 {
@@ -99,7 +105,7 @@ int PEM_def_callback(char *buf, int num, int w, void *key)
99 105
100 for (;;) 106 for (;;)
101 { 107 {
102 i=EVP_read_pw_string(buf,num,prompt,w); 108 i=EVP_read_pw_string_min(buf,MIN_LENGTH,num,prompt,w);
103 if (i != 0) 109 if (i != 0)
104 { 110 {
105 PEMerr(PEM_F_PEM_DEF_CALLBACK,PEM_R_PROBLEMS_GETTING_PASSWORD); 111 PEMerr(PEM_F_PEM_DEF_CALLBACK,PEM_R_PROBLEMS_GETTING_PASSWORD);
@@ -183,20 +189,54 @@ static int check_pem(const char *nm, const char *name)
183 189
184 /* Make PEM_STRING_EVP_PKEY match any private key */ 190 /* Make PEM_STRING_EVP_PKEY match any private key */
185 191
186 if(!strcmp(nm,PEM_STRING_PKCS8) && 192 if(!strcmp(name,PEM_STRING_EVP_PKEY))
187 !strcmp(name,PEM_STRING_EVP_PKEY)) return 1; 193 {
188 194 int slen;
189 if(!strcmp(nm,PEM_STRING_PKCS8INF) && 195 const EVP_PKEY_ASN1_METHOD *ameth;
190 !strcmp(name,PEM_STRING_EVP_PKEY)) return 1; 196 if(!strcmp(nm,PEM_STRING_PKCS8))
191 197 return 1;
192 if(!strcmp(nm,PEM_STRING_RSA) && 198 if(!strcmp(nm,PEM_STRING_PKCS8INF))
193 !strcmp(name,PEM_STRING_EVP_PKEY)) return 1; 199 return 1;
200 slen = pem_check_suffix(nm, "PRIVATE KEY");
201 if (slen > 0)
202 {
203 /* NB: ENGINE implementations wont contain
204 * a deprecated old private key decode function
205 * so don't look for them.
206 */
207 ameth = EVP_PKEY_asn1_find_str(NULL, nm, slen);
208 if (ameth && ameth->old_priv_decode)
209 return 1;
210 }
211 return 0;
212 }
194 213
195 if(!strcmp(nm,PEM_STRING_DSA) && 214 if(!strcmp(name,PEM_STRING_PARAMETERS))
196 !strcmp(name,PEM_STRING_EVP_PKEY)) return 1; 215 {
216 int slen;
217 const EVP_PKEY_ASN1_METHOD *ameth;
218 slen = pem_check_suffix(nm, "PARAMETERS");
219 if (slen > 0)
220 {
221 ENGINE *e;
222 ameth = EVP_PKEY_asn1_find_str(&e, nm, slen);
223 if (ameth)
224 {
225 int r;
226 if (ameth->param_decode)
227 r = 1;
228 else
229 r = 0;
230#ifndef OPENSSL_NO_ENGINE
231 if (e)
232 ENGINE_finish(e);
233#endif
234 return r;
235 }
236 }
237 return 0;
238 }
197 239
198 if(!strcmp(nm,PEM_STRING_ECPRIVATEKEY) &&
199 !strcmp(name,PEM_STRING_EVP_PKEY)) return 1;
200 /* Permit older strings */ 240 /* Permit older strings */
201 241
202 if(!strcmp(nm,PEM_STRING_X509_OLD) && 242 if(!strcmp(nm,PEM_STRING_X509_OLD) &&
@@ -219,6 +259,14 @@ static int check_pem(const char *nm, const char *name)
219 if(!strcmp(nm, PEM_STRING_PKCS7_SIGNED) && 259 if(!strcmp(nm, PEM_STRING_PKCS7_SIGNED) &&
220 !strcmp(name, PEM_STRING_PKCS7)) return 1; 260 !strcmp(name, PEM_STRING_PKCS7)) return 1;
221 261
262#ifndef OPENSSL_NO_CMS
263 if(!strcmp(nm, PEM_STRING_X509) &&
264 !strcmp(name, PEM_STRING_CMS)) return 1;
265 /* Allow CMS to be read from PKCS#7 headers */
266 if(!strcmp(nm, PEM_STRING_PKCS7) &&
267 !strcmp(name, PEM_STRING_CMS)) return 1;
268#endif
269
222 return 0; 270 return 0;
223} 271}
224 272
@@ -264,7 +312,7 @@ err:
264 312
265#ifndef OPENSSL_NO_FP_API 313#ifndef OPENSSL_NO_FP_API
266int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp, 314int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp,
267 char *x, const EVP_CIPHER *enc, unsigned char *kstr, 315 void *x, const EVP_CIPHER *enc, unsigned char *kstr,
268 int klen, pem_password_cb *callback, void *u) 316 int klen, pem_password_cb *callback, void *u)
269 { 317 {
270 BIO *b; 318 BIO *b;
@@ -283,7 +331,7 @@ int PEM_ASN1_write(i2d_of_void *i2d, const char *name, FILE *fp,
283#endif 331#endif
284 332
285int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp, 333int PEM_ASN1_write_bio(i2d_of_void *i2d, const char *name, BIO *bp,
286 char *x, const EVP_CIPHER *enc, unsigned char *kstr, 334 void *x, const EVP_CIPHER *enc, unsigned char *kstr,
287 int klen, pem_password_cb *callback, void *u) 335 int klen, pem_password_cb *callback, void *u)
288 { 336 {
289 EVP_CIPHER_CTX ctx; 337 EVP_CIPHER_CTX ctx;
@@ -782,3 +830,25 @@ err:
782 BUF_MEM_free(dataB); 830 BUF_MEM_free(dataB);
783 return(0); 831 return(0);
784 } 832 }
833
834/* Check pem string and return prefix length.
835 * If for example the pem_str == "RSA PRIVATE KEY" and suffix = "PRIVATE KEY"
836 * the return value is 3 for the string "RSA".
837 */
838
839int pem_check_suffix(const char *pem_str, const char *suffix)
840 {
841 int pem_len = strlen(pem_str);
842 int suffix_len = strlen(suffix);
843 const char *p;
844 if (suffix_len + 1 >= pem_len)
845 return 0;
846 p = pem_str + pem_len - suffix_len;
847 if (strcmp(p, suffix))
848 return 0;
849 p--;
850 if (*p != ' ')
851 return 0;
852 return p - pem_str;
853 }
854
diff --git a/src/lib/libssl/src/crypto/pem/pem_pkey.c b/src/lib/libssl/src/crypto/pem/pem_pkey.c
index 4da4c31ce5..8ecf24903b 100644
--- a/src/lib/libssl/src/crypto/pem/pem_pkey.c
+++ b/src/lib/libssl/src/crypto/pem/pem_pkey.c
@@ -65,7 +65,12 @@
65#include <openssl/x509.h> 65#include <openssl/x509.h>
66#include <openssl/pkcs12.h> 66#include <openssl/pkcs12.h>
67#include <openssl/pem.h> 67#include <openssl/pem.h>
68#ifndef OPENSSL_NO_ENGINE
69#include <openssl/engine.h>
70#endif
71#include "asn1_locl.h"
68 72
73int pem_check_suffix(const char *pem_str, const char *suffix);
69 74
70EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u) 75EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, void *u)
71 { 76 {
@@ -73,19 +78,14 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, vo
73 const unsigned char *p=NULL; 78 const unsigned char *p=NULL;
74 unsigned char *data=NULL; 79 unsigned char *data=NULL;
75 long len; 80 long len;
81 int slen;
76 EVP_PKEY *ret=NULL; 82 EVP_PKEY *ret=NULL;
77 83
78 if (!PEM_bytes_read_bio(&data, &len, &nm, PEM_STRING_EVP_PKEY, bp, cb, u)) 84 if (!PEM_bytes_read_bio(&data, &len, &nm, PEM_STRING_EVP_PKEY, bp, cb, u))
79 return NULL; 85 return NULL;
80 p = data; 86 p = data;
81 87
82 if (strcmp(nm,PEM_STRING_RSA) == 0) 88 if (strcmp(nm,PEM_STRING_PKCS8INF) == 0) {
83 ret=d2i_PrivateKey(EVP_PKEY_RSA,x,&p,len);
84 else if (strcmp(nm,PEM_STRING_DSA) == 0)
85 ret=d2i_PrivateKey(EVP_PKEY_DSA,x,&p,len);
86 else if (strcmp(nm,PEM_STRING_ECPRIVATEKEY) == 0)
87 ret=d2i_PrivateKey(EVP_PKEY_EC,x,&p,len);
88 else if (strcmp(nm,PEM_STRING_PKCS8INF) == 0) {
89 PKCS8_PRIV_KEY_INFO *p8inf; 89 PKCS8_PRIV_KEY_INFO *p8inf;
90 p8inf=d2i_PKCS8_PRIV_KEY_INFO(NULL, &p, len); 90 p8inf=d2i_PKCS8_PRIV_KEY_INFO(NULL, &p, len);
91 if(!p8inf) goto p8err; 91 if(!p8inf) goto p8err;
@@ -119,7 +119,14 @@ EVP_PKEY *PEM_read_bio_PrivateKey(BIO *bp, EVP_PKEY **x, pem_password_cb *cb, vo
119 *x = ret; 119 *x = ret;
120 } 120 }
121 PKCS8_PRIV_KEY_INFO_free(p8inf); 121 PKCS8_PRIV_KEY_INFO_free(p8inf);
122 } 122 } else if ((slen = pem_check_suffix(nm, "PRIVATE KEY")) > 0)
123 {
124 const EVP_PKEY_ASN1_METHOD *ameth;
125 ameth = EVP_PKEY_asn1_find_str(NULL, nm, slen);
126 if (!ameth || !ameth->old_priv_decode)
127 goto p8err;
128 ret=d2i_PrivateKey(ameth->pkey_id,x,&p,len);
129 }
123p8err: 130p8err:
124 if (ret == NULL) 131 if (ret == NULL)
125 PEMerr(PEM_F_PEM_READ_BIO_PRIVATEKEY,ERR_R_ASN1_LIB); 132 PEMerr(PEM_F_PEM_READ_BIO_PRIVATEKEY,ERR_R_ASN1_LIB);
@@ -130,6 +137,74 @@ err:
130 return(ret); 137 return(ret);
131 } 138 }
132 139
140int PEM_write_bio_PrivateKey(BIO *bp, EVP_PKEY *x, const EVP_CIPHER *enc,
141 unsigned char *kstr, int klen,
142 pem_password_cb *cb, void *u)
143 {
144 char pem_str[80];
145 if (!x->ameth || x->ameth->priv_encode)
146 return PEM_write_bio_PKCS8PrivateKey(bp, x, enc,
147 (char *)kstr, klen,
148 cb, u);
149
150 BIO_snprintf(pem_str, 80, "%s PRIVATE KEY", x->ameth->pem_str);
151 return PEM_ASN1_write_bio((i2d_of_void *)i2d_PrivateKey,
152 pem_str,bp,x,enc,kstr,klen,cb,u);
153 }
154
155EVP_PKEY *PEM_read_bio_Parameters(BIO *bp, EVP_PKEY **x)
156 {
157 char *nm=NULL;
158 const unsigned char *p=NULL;
159 unsigned char *data=NULL;
160 long len;
161 int slen;
162 EVP_PKEY *ret=NULL;
163
164 if (!PEM_bytes_read_bio(&data, &len, &nm, PEM_STRING_PARAMETERS,
165 bp, 0, NULL))
166 return NULL;
167 p = data;
168
169 if ((slen = pem_check_suffix(nm, "PARAMETERS")) > 0)
170 {
171 ret = EVP_PKEY_new();
172 if (!ret)
173 goto err;
174 if (!EVP_PKEY_set_type_str(ret, nm, slen)
175 || !ret->ameth->param_decode
176 || !ret->ameth->param_decode(ret, &p, len))
177 {
178 EVP_PKEY_free(ret);
179 ret = NULL;
180 goto err;
181 }
182 if(x)
183 {
184 if(*x) EVP_PKEY_free((EVP_PKEY *)*x);
185 *x = ret;
186 }
187 }
188err:
189 if (ret == NULL)
190 PEMerr(PEM_F_PEM_READ_BIO_PARAMETERS,ERR_R_ASN1_LIB);
191 OPENSSL_free(nm);
192 OPENSSL_free(data);
193 return(ret);
194 }
195
196int PEM_write_bio_Parameters(BIO *bp, EVP_PKEY *x)
197 {
198 char pem_str[80];
199 if (!x->ameth || !x->ameth->param_encode)
200 return 0;
201
202 BIO_snprintf(pem_str, 80, "%s PARAMETERS", x->ameth->pem_str);
203 return PEM_ASN1_write_bio(
204 (i2d_of_void *)x->ameth->param_encode,
205 pem_str,bp,x,NULL,NULL,0,0,NULL);
206 }
207
133#ifndef OPENSSL_NO_FP_API 208#ifndef OPENSSL_NO_FP_API
134EVP_PKEY *PEM_read_PrivateKey(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u) 209EVP_PKEY *PEM_read_PrivateKey(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void *u)
135 { 210 {
@@ -146,4 +221,22 @@ EVP_PKEY *PEM_read_PrivateKey(FILE *fp, EVP_PKEY **x, pem_password_cb *cb, void
146 BIO_free(b); 221 BIO_free(b);
147 return(ret); 222 return(ret);
148 } 223 }
224
225int PEM_write_PrivateKey(FILE *fp, EVP_PKEY *x, const EVP_CIPHER *enc,
226 unsigned char *kstr, int klen,
227 pem_password_cb *cb, void *u)
228 {
229 BIO *b;
230 int ret;
231
232 if ((b=BIO_new_fp(fp, BIO_NOCLOSE)) == NULL)
233 {
234 PEMerr(PEM_F_PEM_WRITE_PRIVATEKEY,ERR_R_BUF_LIB);
235 return 0;
236 }
237 ret=PEM_write_bio_PrivateKey(b, x, enc, kstr, klen, cb, u);
238 BIO_free(b);
239 return ret;
240 }
241
149#endif 242#endif
diff --git a/src/lib/libssl/src/crypto/pem/pem_seal.c b/src/lib/libssl/src/crypto/pem/pem_seal.c
index 4e554e5481..59690b56ae 100644
--- a/src/lib/libssl/src/crypto/pem/pem_seal.c
+++ b/src/lib/libssl/src/crypto/pem/pem_seal.c
@@ -100,7 +100,7 @@ int PEM_SealInit(PEM_ENCODE_SEAL_CTX *ctx, EVP_CIPHER *type, EVP_MD *md_type,
100 100
101 EVP_CIPHER_CTX_init(&ctx->cipher); 101 EVP_CIPHER_CTX_init(&ctx->cipher);
102 ret=EVP_SealInit(&ctx->cipher,type,ek,ekl,iv,pubk,npubk); 102 ret=EVP_SealInit(&ctx->cipher,type,ek,ekl,iv,pubk,npubk);
103 if (!ret) goto err; 103 if (ret <= 0) goto err;
104 104
105 /* base64 encode the keys */ 105 /* base64 encode the keys */
106 for (i=0; i<npubk; i++) 106 for (i=0; i<npubk; i++)
diff --git a/src/lib/libssl/src/crypto/pem/pem_x509.c b/src/lib/libssl/src/crypto/pem/pem_x509.c
index 3f709f13e6..b531057dc9 100644
--- a/src/lib/libssl/src/crypto/pem/pem_x509.c
+++ b/src/lib/libssl/src/crypto/pem/pem_x509.c
@@ -57,7 +57,6 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#undef SSLEAY_MACROS
61#include "cryptlib.h" 60#include "cryptlib.h"
62#include <openssl/bio.h> 61#include <openssl/bio.h>
63#include <openssl/evp.h> 62#include <openssl/evp.h>
diff --git a/src/lib/libssl/src/crypto/pem/pem_xaux.c b/src/lib/libssl/src/crypto/pem/pem_xaux.c
index 7cc7491009..328f796200 100644
--- a/src/lib/libssl/src/crypto/pem/pem_xaux.c
+++ b/src/lib/libssl/src/crypto/pem/pem_xaux.c
@@ -57,7 +57,6 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#undef SSLEAY_MACROS
61#include "cryptlib.h" 60#include "cryptlib.h"
62#include <openssl/bio.h> 61#include <openssl/bio.h>
63#include <openssl/evp.h> 62#include <openssl/evp.h>
diff --git a/src/lib/libssl/src/crypto/perlasm/x86asm.pl b/src/lib/libssl/src/crypto/perlasm/x86asm.pl
index 5979122158..28080caaa6 100644
--- a/src/lib/libssl/src/crypto/perlasm/x86asm.pl
+++ b/src/lib/libssl/src/crypto/perlasm/x86asm.pl
@@ -1,130 +1,207 @@
1#!/usr/local/bin/perl 1#!/usr/bin/env perl
2 2
3# require 'x86asm.pl'; 3# require 'x86asm.pl';
4# &asm_init("cpp","des-586.pl"); 4# &asm_init(<flavor>,"des-586.pl"[,$i386only]);
5# XXX 5# &function_begin("foo");
6# XXX 6# ...
7# main'asm_finish 7# &function_end("foo");
8 8# &asm_finish
9sub main'asm_finish 9
10 { 10$out=();
11 &file_end(); 11$i386=0;
12 &asm_finish_cpp() if $cpp; 12
13 print &asm_get_output(); 13# AUTOLOAD is this context has quite unpleasant side effect, namely
14 } 14# that typos in function calls effectively go to assembler output,
15 15# but on the pros side we don't have to implement one subroutine per
16sub main'asm_init 16# each opcode...
17 { 17sub ::AUTOLOAD
18 ($type,$fn,$i386)=@_; 18{ my $opcode = $AUTOLOAD;
19 $filename=$fn; 19
20 20 die "more than 4 arguments passed to $opcode" if ($#_>3);
21 $elf=$cpp=$coff=$aout=$win32=$netware=$mwerks=0; 21
22 if ( ($type eq "elf")) 22 $opcode =~ s/.*:://;
23 { $elf=1; require "x86unix.pl"; } 23 if ($opcode =~ /^push/) { $stack+=4; }
24 elsif ( ($type eq "a.out")) 24 elsif ($opcode =~ /^pop/) { $stack-=4; }
25 { $aout=1; require "x86unix.pl"; } 25
26 elsif ( ($type eq "coff" or $type eq "gaswin")) 26 &generic($opcode,@_) or die "undefined subroutine \&$AUTOLOAD";
27 { $coff=1; require "x86unix.pl"; } 27}
28 elsif ( ($type eq "cpp")) 28
29 { $cpp=1; require "x86unix.pl"; } 29sub ::emit
30 elsif ( ($type eq "win32")) 30{ my $opcode=shift;
31 { $win32=1; require "x86ms.pl"; } 31
32 elsif ( ($type eq "win32n")) 32 if ($#_==-1) { push(@out,"\t$opcode\n"); }
33 { $win32=1; require "x86nasm.pl"; } 33 else { push(@out,"\t$opcode\t".join(',',@_)."\n"); }
34 elsif ( ($type eq "nw-nasm")) 34}
35 { $netware=1; require "x86nasm.pl"; } 35
36 elsif ( ($type eq "nw-mwasm")) 36sub ::LB
37 { $netware=1; $mwerks=1; require "x86nasm.pl"; } 37{ $_[0] =~ m/^e?([a-d])x$/o or die "$_[0] does not have a 'low byte'";
38 else 38 $1."l";
39 { 39}
40 print STDERR <<"EOF"; 40sub ::HB
41{ $_[0] =~ m/^e?([a-d])x$/o or die "$_[0] does not have a 'high byte'";
42 $1."h";
43}
44sub ::stack_push{ my $num=$_[0]*4; $stack+=$num; &sub("esp",$num); }
45sub ::stack_pop { my $num=$_[0]*4; $stack-=$num; &add("esp",$num); }
46sub ::blindpop { &pop($_[0]); $stack+=4; }
47sub ::wparam { &DWP($stack+4*$_[0],"esp"); }
48sub ::swtmp { &DWP(4*$_[0],"esp"); }
49
50sub ::bswap
51{ if ($i386) # emulate bswap for i386
52 { &comment("bswap @_");
53 &xchg(&HB(@_),&LB(@_));
54 &ror (@_,16);
55 &xchg(&HB(@_),&LB(@_));
56 }
57 else
58 { &generic("bswap",@_); }
59}
60# These are made-up opcodes introduced over the years essentially
61# by ignorance, just alias them to real ones...
62sub ::movb { &mov(@_); }
63sub ::xorb { &xor(@_); }
64sub ::rotl { &rol(@_); }
65sub ::rotr { &ror(@_); }
66sub ::exch { &xchg(@_); }
67sub ::halt { &hlt; }
68sub ::movz { &movzx(@_); }
69sub ::pushf { &pushfd; }
70sub ::popf { &popfd; }
71
72# 3 argument instructions
73sub ::movq
74{ my($p1,$p2,$optimize)=@_;
75
76 if ($optimize && $p1=~/^mm[0-7]$/ && $p2=~/^mm[0-7]$/)
77 # movq between mmx registers can sink Intel CPUs
78 { &::pshufw($p1,$p2,0xe4); }
79 else
80 { &::generic("movq",@_); }
81}
82
83# label management
84$lbdecor="L"; # local label decoration, set by package
85$label="000";
86
87sub ::islabel # see is argument is a known label
88{ my $i;
89 foreach $i (values %label) { return $i if ($i eq $_[0]); }
90 $label{$_[0]}; # can be undef
91}
92
93sub ::label # instantiate a function-scope label
94{ if (!defined($label{$_[0]}))
95 { $label{$_[0]}="${lbdecor}${label}${_[0]}"; $label++; }
96 $label{$_[0]};
97}
98
99sub ::LABEL # instantiate a file-scope label
100{ $label{$_[0]}=$_[1] if (!defined($label{$_[0]}));
101 $label{$_[0]};
102}
103
104sub ::static_label { &::LABEL($_[0],$lbdecor.$_[0]); }
105
106sub ::set_label_B { push(@out,"@_:\n"); }
107sub ::set_label
108{ my $label=&::label($_[0]);
109 &::align($_[1]) if ($_[1]>1);
110 &::set_label_B($label);
111 $label;
112}
113
114sub ::wipe_labels # wipes function-scope labels
115{ foreach $i (keys %label)
116 { delete $label{$i} if ($label{$i} =~ /^\Q${lbdecor}\E[0-9]{3}/); }
117}
118
119# subroutine management
120sub ::function_begin
121{ &function_begin_B(@_);
122 $stack=4;
123 &push("ebp");
124 &push("ebx");
125 &push("esi");
126 &push("edi");
127}
128
129sub ::function_end
130{ &pop("edi");
131 &pop("esi");
132 &pop("ebx");
133 &pop("ebp");
134 &ret();
135 &function_end_B(@_);
136 $stack=0;
137 &wipe_labels();
138}
139
140sub ::function_end_A
141{ &pop("edi");
142 &pop("esi");
143 &pop("ebx");
144 &pop("ebp");
145 &ret();
146 $stack+=16; # readjust esp as if we didn't pop anything
147}
148
149sub ::asciz
150{ my @str=unpack("C*",shift);
151 push @str,0;
152 while ($#str>15) {
153 &data_byte(@str[0..15]);
154 foreach (0..15) { shift @str; }
155 }
156 &data_byte(@str) if (@str);
157}
158
159sub ::asm_finish
160{ &file_end();
161 print @out;
162}
163
164sub ::asm_init
165{ my ($type,$fn,$cpu)=@_;
166
167 $filename=$fn;
168 $i386=$cpu;
169
170 $elf=$cpp=$coff=$aout=$macosx=$win32=$netware=$mwerks=0;
171 if (($type eq "elf"))
172 { $elf=1; require "x86gas.pl"; }
173 elsif (($type eq "a\.out"))
174 { $aout=1; require "x86gas.pl"; }
175 elsif (($type eq "coff" or $type eq "gaswin"))
176 { $coff=1; require "x86gas.pl"; }
177 elsif (($type eq "win32n"))
178 { $win32=1; require "x86nasm.pl"; }
179 elsif (($type eq "nw-nasm"))
180 { $netware=1; require "x86nasm.pl"; }
181 #elsif (($type eq "nw-mwasm"))
182 #{ $netware=1; $mwerks=1; require "x86nasm.pl"; }
183 elsif (($type eq "win32"))
184 { $win32=1; require "x86masm.pl"; }
185 elsif (($type eq "macosx"))
186 { $aout=1; $macosx=1; require "x86gas.pl"; }
187 else
188 { print STDERR <<"EOF";
41Pick one target type from 189Pick one target type from
42 elf - Linux, FreeBSD, Solaris x86, etc. 190 elf - Linux, FreeBSD, Solaris x86, etc.
43 a.out - OpenBSD, DJGPP, etc. 191 a.out - DJGPP, elder OpenBSD, etc.
44 coff - GAS/COFF such as Win32 targets 192 coff - GAS/COFF such as Win32 targets
45 win32 - Windows 95/Windows NT
46 win32n - Windows 95/Windows NT NASM format 193 win32n - Windows 95/Windows NT NASM format
47 nw-nasm - NetWare NASM format 194 nw-nasm - NetWare NASM format
48 nw-mwasm- NetWare Metrowerks Assembler 195 macosx - Mac OS X
49EOF 196EOF
50 exit(1); 197 exit(1);
51 } 198 }
52 199
53 $pic=0; 200 $pic=0;
54 for (@ARGV) { $pic=1 if (/\-[fK]PIC/i); } 201 for (@ARGV) { $pic=1 if (/\-[fK]PIC/i); }
55 202
56 &asm_init_output(); 203 $filename =~ s/\.pl$//;
57 204 &file($filename);
58&comment("Don't even think of reading this code"); 205}
59&comment("It was automatically generated by $filename");
60&comment("Which is a perl program used to generate the x86 assember for");
61&comment("any of ELF, a.out, COFF, Win32, ...");
62&comment("eric <eay\@cryptsoft.com>");
63&comment("");
64
65 $filename =~ s/\.pl$//;
66 &file($filename);
67 }
68
69sub asm_finish_cpp
70 {
71 return unless $cpp;
72
73 local($tmp,$i);
74 foreach $i (&get_labels())
75 {
76 $tmp.="#define $i _$i\n";
77 }
78 print <<"EOF";
79/* Run the C pre-processor over this file with one of the following defined
80 * ELF - elf object files,
81 * OUT - a.out object files,
82 * BSDI - BSDI style a.out object files
83 * SOL - Solaris style elf
84 */
85
86#define TYPE(a,b) .type a,b
87#define SIZE(a,b) .size a,b
88
89#if defined(OUT) || (defined(BSDI) && !defined(ELF))
90$tmp
91#endif
92
93#ifdef OUT
94#define OK 1
95#define ALIGN 4
96#if defined(__CYGWIN__) || defined(__DJGPP__) || (__MINGW32__)
97#undef SIZE
98#undef TYPE
99#define SIZE(a,b)
100#define TYPE(a,b) .def a; .scl 2; .type 32; .endef
101#endif /* __CYGWIN || __DJGPP */
102#endif
103
104#if defined(BSDI) && !defined(ELF)
105#define OK 1
106#define ALIGN 4
107#undef SIZE
108#undef TYPE
109#define SIZE(a,b)
110#define TYPE(a,b)
111#endif
112
113#if defined(ELF) || defined(SOL)
114#define OK 1
115#define ALIGN 16
116#endif
117
118#ifndef OK
119You need to define one of
120ELF - elf systems - linux-elf, NetBSD and DG-UX
121OUT - a.out systems - linux-a.out and FreeBSD
122SOL - solaris systems, which are elf with strange comment lines
123BSDI - a.out with a very primative version of as.
124#endif
125
126/* Let the Assembler begin :-) */
127EOF
128 }
129 206
1301; 2071;
diff --git a/src/lib/libssl/src/crypto/perlasm/x86nasm.pl b/src/lib/libssl/src/crypto/perlasm/x86nasm.pl
index fa38f89c09..ce2bed9bb2 100644
--- a/src/lib/libssl/src/crypto/perlasm/x86nasm.pl
+++ b/src/lib/libssl/src/crypto/perlasm/x86nasm.pl
@@ -1,455 +1,166 @@
1#!/usr/local/bin/perl 1#!/usr/bin/env perl
2 2
3package x86nasm; 3package x86nasm;
4 4
5$label="L000"; 5*out=\@::out;
6$under=($main'netware)?'':'_';
7 6
8%lb=( 'eax', 'al', 7$::lbdecor="L\$"; # local label decoration
9 'ebx', 'bl', 8$nmdecor=$::netware?"":"_"; # external name decoration
10 'ecx', 'cl', 9$drdecor=$::mwerks?".":""; # directive decoration
11 'edx', 'dl',
12 'ax', 'al',
13 'bx', 'bl',
14 'cx', 'cl',
15 'dx', 'dl',
16 );
17 10
18%hb=( 'eax', 'ah', 11$initseg="";
19 'ebx', 'bh',
20 'ecx', 'ch',
21 'edx', 'dh',
22 'ax', 'ah',
23 'bx', 'bh',
24 'cx', 'ch',
25 'dx', 'dh',
26 );
27 12
28sub main'asm_init_output { @out=(); } 13sub ::generic
29sub main'asm_get_output { return(@out); } 14{ my $opcode=shift;
30sub main'get_labels { return(@labels); } 15 my $tmp;
31 16
32sub main'external_label 17 if (!$::mwerks)
33{ 18 { if ($opcode =~ m/^j/o && $#_==0) # optimize jumps
34 push(@labels,@_); 19 { $_[0] = "NEAR $_[0]"; }
35 foreach (@_) { 20 elsif ($opcode eq "lea" && $#_==1) # wipe storage qualifier from lea
36 push(@out,".") if ($main'mwerks); 21 { $_[1] =~ s/^[^\[]*\[/\[/o; }
37 push(@out, "extern\t${under}$_\n"); 22 }
38 } 23 &::emit($opcode,@_);
24 1;
39} 25}
40 26#
41sub main'LB 27# opcodes not covered by ::generic above, mostly inconsistent namings...
42 { 28#
43 (defined($lb{$_[0]})) || die "$_[0] does not have a 'low byte'\n"; 29sub ::call { &::emit("call",(&::islabel($_[0]) or "$nmdecor$_[0]")); }
44 return($lb{$_[0]}); 30sub ::call_ptr { &::emit("call",@_); }
45 } 31sub ::jmp_ptr { &::emit("jmp",@_); }
46
47sub main'HB
48 {
49 (defined($hb{$_[0]})) || die "$_[0] does not have a 'high byte'\n";
50 return($hb{$_[0]});
51 }
52
53sub main'BP
54 {
55 &get_mem("BYTE",@_);
56 }
57
58sub main'DWP
59 {
60 &get_mem("DWORD",@_);
61 }
62
63sub main'QWP
64 {
65 &get_mem("",@_);
66 }
67
68sub main'BC
69 {
70 return (($main'mwerks)?"":"BYTE ")."@_";
71 }
72
73sub main'DWC
74 {
75 return (($main'mwerks)?"":"DWORD ")."@_";
76 }
77
78sub main'stack_push
79 {
80 my($num)=@_;
81 $stack+=$num*4;
82 &main'sub("esp",$num*4);
83 }
84
85sub main'stack_pop
86 {
87 my($num)=@_;
88 $stack-=$num*4;
89 &main'add("esp",$num*4);
90 }
91 32
92sub get_mem 33sub get_mem
93 { 34{ my($size,$addr,$reg1,$reg2,$idx)=@_;
94 my($size,$addr,$reg1,$reg2,$idx)=@_; 35 my($post,$ret);
95 my($t,$post); 36
96 my($ret)=$size; 37 if ($size ne "")
97 if ($ret ne "") 38 { $ret .= "$size";
98 { 39 $ret .= " PTR" if ($::mwerks);
99 $ret .= " PTR" if ($main'mwerks); 40 $ret .= " ";
100 $ret .= " "; 41 }
101 } 42 $ret .= "[";
102 $ret .= "["; 43
103 $addr =~ s/^\s+//; 44 $addr =~ s/^\s+//;
104 if ($addr =~ /^(.+)\+(.+)$/) 45 # prepend global references with optional underscore
105 { 46 $addr =~ s/^([^\+\-0-9][^\+\-]*)/::islabel($1) or "$nmdecor$1"/ige;
106 $reg2=&conv($1); 47 # put address arithmetic expression in parenthesis
107 $addr="$under$2"; 48 $addr="($addr)" if ($addr =~ /^.+[\-\+].+$/);
108 } 49
109 elsif ($addr =~ /^[_a-z][_a-z0-9]*$/i) 50 if (($addr ne "") && ($addr ne 0))
110 { 51 { if ($addr !~ /^-/) { $ret .= "$addr+"; }
111 $addr="$under$addr"; 52 else { $post=$addr; }
112 } 53 }
113 54
114 if ($addr =~ /^.+\-.+$/) { $addr="($addr)"; } 55 if ($reg2 ne "")
115 56 { $idx!=0 or $idx=1;
116 $reg1="$regs{$reg1}" if defined($regs{$reg1}); 57 $ret .= "$reg2*$idx";
117 $reg2="$regs{$reg2}" if defined($regs{$reg2}); 58 $ret .= "+$reg1" if ($reg1 ne "");
118 if (($addr ne "") && ($addr ne 0)) 59 }
119 { 60 else
120 if ($addr !~ /^-/) 61 { $ret .= "$reg1"; }
121 { $ret.="${addr}+"; } 62
122 else { $post=$addr; } 63 $ret .= "$post]";
123 } 64 $ret =~ s/\+\]/]/; # in case $addr was the only argument
124 if ($reg2 ne "") 65
125 { 66 $ret;
126 $t=""; 67}
127 $t="*$idx" if ($idx != 0); 68sub ::BP { &get_mem("BYTE",@_); }
128 $reg1="+".$reg1 if ("$reg1$post" ne ""); 69sub ::DWP { &get_mem("DWORD",@_); }
129 $ret.="$reg2$t$reg1$post]"; 70sub ::QWP { &get_mem("",@_); }
130 } 71sub ::BC { (($::mwerks)?"":"BYTE ")."@_"; }
131 else 72sub ::DWC { (($::mwerks)?"":"DWORD ")."@_"; }
132 { 73
133 $ret.="$reg1$post]" 74sub ::file
134 } 75{ if ($::mwerks) { push(@out,".section\t.text,64\n"); }
135 $ret =~ s/\+\]/]/; # in case $addr was the only argument 76 else
136 return($ret); 77 { my $tmp=<<___;
137 } 78%ifidn __OUTPUT_FORMAT__,obj
138 79section code use32 class=code align=64
139sub main'mov { &out2("mov",@_); } 80%elifidn __OUTPUT_FORMAT__,win32
140sub main'movb { &out2("mov",@_); } 81\$\@feat.00 equ 1
141sub main'and { &out2("and",@_); } 82section .text code align=64
142sub main'or { &out2("or",@_); }
143sub main'shl { &out2("shl",@_); }
144sub main'shr { &out2("shr",@_); }
145sub main'xor { &out2("xor",@_); }
146sub main'xorb { &out2("xor",@_); }
147sub main'add { &out2("add",@_); }
148sub main'adc { &out2("adc",@_); }
149sub main'sub { &out2("sub",@_); }
150sub main'sbb { &out2("sbb",@_); }
151sub main'rotl { &out2("rol",@_); }
152sub main'rotr { &out2("ror",@_); }
153sub main'exch { &out2("xchg",@_); }
154sub main'cmp { &out2("cmp",@_); }
155sub main'lea { &out2("lea",@_); }
156sub main'mul { &out1("mul",@_); }
157sub main'imul { &out2("imul",@_); }
158sub main'div { &out1("div",@_); }
159sub main'dec { &out1("dec",@_); }
160sub main'inc { &out1("inc",@_); }
161sub main'jmp { &out1("jmp",@_); }
162sub main'jmp_ptr { &out1p("jmp",@_); }
163
164# This is a bit of a kludge: declare all branches as NEAR.
165$near=($main'mwerks)?'':'NEAR';
166sub main'je { &out1("je $near",@_); }
167sub main'jle { &out1("jle $near",@_); }
168sub main'jz { &out1("jz $near",@_); }
169sub main'jge { &out1("jge $near",@_); }
170sub main'jl { &out1("jl $near",@_); }
171sub main'ja { &out1("ja $near",@_); }
172sub main'jae { &out1("jae $near",@_); }
173sub main'jb { &out1("jb $near",@_); }
174sub main'jbe { &out1("jbe $near",@_); }
175sub main'jc { &out1("jc $near",@_); }
176sub main'jnc { &out1("jnc $near",@_); }
177sub main'jnz { &out1("jnz $near",@_); }
178sub main'jne { &out1("jne $near",@_); }
179sub main'jno { &out1("jno $near",@_); }
180
181sub main'push { &out1("push",@_); $stack+=4; }
182sub main'pop { &out1("pop",@_); $stack-=4; }
183sub main'pushf { &out0("pushfd"); $stack+=4; }
184sub main'popf { &out0("popfd"); $stack-=4; }
185sub main'bswap { &out1("bswap",@_); &using486(); }
186sub main'not { &out1("not",@_); }
187sub main'call { &out1("call",($_[0]=~/^\@L/?'':$under).$_[0]); }
188sub main'call_ptr { &out1p("call",@_); }
189sub main'ret { &out0("ret"); }
190sub main'nop { &out0("nop"); }
191sub main'test { &out2("test",@_); }
192sub main'bt { &out2("bt",@_); }
193sub main'leave { &out0("leave"); }
194sub main'cpuid { &out0("cpuid"); }
195sub main'rdtsc { &out0("rdtsc"); }
196sub main'halt { &out0("hlt"); }
197sub main'movz { &out2("movzx",@_); }
198sub main'neg { &out1("neg",@_); }
199sub main'cld { &out0("cld"); }
200
201# SSE2
202sub main'emms { &out0("emms"); }
203sub main'movd { &out2("movd",@_); }
204sub main'movq { &out2("movq",@_); }
205sub main'movdqu { &out2("movdqu",@_); }
206sub main'movdqa { &out2("movdqa",@_); }
207sub main'movdq2q{ &out2("movdq2q",@_); }
208sub main'movq2dq{ &out2("movq2dq",@_); }
209sub main'paddq { &out2("paddq",@_); }
210sub main'pmuludq{ &out2("pmuludq",@_); }
211sub main'psrlq { &out2("psrlq",@_); }
212sub main'psllq { &out2("psllq",@_); }
213sub main'pxor { &out2("pxor",@_); }
214sub main'por { &out2("por",@_); }
215sub main'pand { &out2("pand",@_); }
216
217sub out2
218 {
219 my($name,$p1,$p2)=@_;
220 my($l,$t);
221
222 push(@out,"\t$name\t");
223 if (!$main'mwerks and $name eq "lea")
224 {
225 $p1 =~ s/^[^\[]*\[/\[/;
226 $p2 =~ s/^[^\[]*\[/\[/;
227 }
228 $t=&conv($p1).",";
229 $l=length($t);
230 push(@out,$t);
231 $l=4-($l+9)/8;
232 push(@out,"\t" x $l);
233 push(@out,&conv($p2));
234 push(@out,"\n");
235 }
236
237sub out0
238 {
239 my($name)=@_;
240
241 push(@out,"\t$name\n");
242 }
243
244sub out1
245 {
246 my($name,$p1)=@_;
247 my($l,$t);
248 push(@out,"\t$name\t".&conv($p1)."\n");
249 }
250
251sub conv
252 {
253 my($p)=@_;
254 $p =~ s/0x([0-9A-Fa-f]+)/0$1h/;
255 return $p;
256 }
257
258sub using486
259 {
260 return if $using486;
261 $using486++;
262 grep(s/\.386/\.486/,@out);
263 }
264
265sub main'file
266 {
267 if ($main'mwerks) { push(@out,".section\t.text\n"); }
268 else {
269 local $tmp=<<___;
270%ifdef __omf__
271section code use32 class=code
272%else 83%else
273section .text 84section .text code
274%endif 85%endif
275___ 86___
276 push(@out,$tmp);
277 }
278 }
279
280sub main'function_begin
281 {
282 my($func,$extra)=@_;
283
284 push(@labels,$func);
285 push(@out,".") if ($main'mwerks);
286 my($tmp)=<<"EOF";
287global $under$func
288$under$func:
289 push ebp
290 push ebx
291 push esi
292 push edi
293EOF
294 push(@out,$tmp);
295 $stack=20;
296 }
297
298sub main'function_begin_B
299 {
300 my($func,$extra)=@_;
301 push(@out,".") if ($main'mwerks);
302 my($tmp)=<<"EOF";
303global $under$func
304$under$func:
305EOF
306 push(@out,$tmp);
307 $stack=4;
308 }
309
310sub main'function_end
311 {
312 my($func)=@_;
313
314 my($tmp)=<<"EOF";
315 pop edi
316 pop esi
317 pop ebx
318 pop ebp
319 ret
320EOF
321 push(@out,$tmp); 87 push(@out,$tmp);
322 $stack=0; 88 }
323 %label=(); 89}
324 }
325
326sub main'function_end_B
327 {
328 $stack=0;
329 %label=();
330 }
331
332sub main'function_end_A
333 {
334 my($func)=@_;
335
336 my($tmp)=<<"EOF";
337 pop edi
338 pop esi
339 pop ebx
340 pop ebp
341 ret
342EOF
343 push(@out,$tmp);
344 }
345
346sub main'file_end
347 {
348 }
349
350sub main'wparam
351 {
352 my($num)=@_;
353
354 return(&main'DWP($stack+$num*4,"esp","",0));
355 }
356 90
357sub main'swtmp 91sub ::function_begin_B
358 { 92{ my $func=shift;
359 return(&main'DWP($_[0]*4,"esp","",0)); 93 my $global=($func !~ /^_/);
360 } 94 my $begin="${::lbdecor}_${func}_begin";
361 95
362# Should use swtmp, which is above esp. Linix can trash the stack above esp 96 $begin =~ s/^\@/./ if ($::mwerks); # the torture never stops
363#sub main'wtmp
364# {
365# my($num)=@_;
366#
367# return(&main'DWP(-(($num+1)*4),"esp","",0));
368# }
369 97
370sub main'comment 98 &::LABEL($func,$global?"$begin":"$nmdecor$func");
371 { 99 $func=$nmdecor.$func;
372 foreach (@_)
373 {
374 push(@out,"\t; $_\n");
375 }
376 }
377 100
378sub main'public_label 101 push(@out,"${drdecor}global $func\n") if ($global);
379 { 102 push(@out,"${drdecor}align 16\n");
380 $label{$_[0]}="${under}${_[0]}" if (!defined($label{$_[0]})); 103 push(@out,"$func:\n");
381 push(@out,".") if ($main'mwerks); 104 push(@out,"$begin:\n") if ($global);
382 push(@out,"global\t$label{$_[0]}\n"); 105 $::stack=4;
383 } 106}
384 107
385sub main'label 108sub ::function_end_B
386 { 109{ $::stack=0;
387 if (!defined($label{$_[0]})) 110 &::wipe_labels();
388 { 111}
389 $label{$_[0]}="\@${label}${_[0]}";
390 $label++;
391 }
392 return($label{$_[0]});
393 }
394 112
395sub main'set_label 113sub ::file_end
396 { 114{ if (grep {/\b${nmdecor}OPENSSL_ia32cap_P\b/i} @out)
397 if (!defined($label{$_[0]})) 115 { my $comm=<<___;
398 { 116${drdecor}segment .bss
399 $label{$_[0]}="\@${label}${_[0]}"; 117${drdecor}common ${nmdecor}OPENSSL_ia32cap_P 4
400 $label++; 118___
401 } 119 # comment out OPENSSL_ia32cap_P declarations
402 if ($_[1]!=0 && $_[1]>1) 120 grep {s/(^extern\s+${nmdecor}OPENSSL_ia32cap_P)/\;$1/} @out;
403 { 121 push (@out,$comm)
404 main'align($_[1]); 122 }
405 } 123 push (@out,$initseg) if ($initseg);
406 push(@out,"$label{$_[0]}:\n"); 124}
407 }
408 125
409sub main'data_byte 126sub ::comment { foreach (@_) { push(@out,"\t; $_\n"); } }
410 {
411 push(@out,(($main'mwerks)?".byte\t":"DB\t").join(',',@_)."\n");
412 }
413 127
414sub main'data_word 128sub ::external_label
415 { 129{ foreach(@_)
416 push(@out,(($main'mwerks)?".long\t":"DD\t").join(',',@_)."\n"); 130 { push(@out,"${drdecor}extern\t".&::LABEL($_,$nmdecor.$_)."\n"); }
417 } 131}
418 132
419sub main'align 133sub ::public_label
420 { 134{ push(@out,"${drdecor}global\t".&::LABEL($_[0],$nmdecor.$_[0])."\n"); }
421 push(@out,".") if ($main'mwerks);
422 push(@out,"align\t$_[0]\n");
423 }
424 135
425sub out1p 136sub ::data_byte
426 { 137{ push(@out,(($::mwerks)?".byte\t":"db\t").join(',',@_)."\n"); }
427 my($name,$p1)=@_;
428 my($l,$t);
429 138
430 push(@out,"\t$name\t".&conv($p1)."\n"); 139sub ::data_word
431 } 140{ push(@out,(($::mwerks)?".long\t":"dd\t").join(',',@_)."\n"); }
432 141
433sub main'picmeup 142sub ::align
434 { 143{ push(@out,"${drdecor}align\t$_[0]\n"); }
435 local($dst,$sym)=@_;
436 &main'lea($dst,&main'DWP($sym));
437 }
438 144
439sub main'blindpop { &out1("pop",@_); } 145sub ::picmeup
146{ my($dst,$sym)=@_;
147 &::lea($dst,&::DWP($sym));
148}
440 149
441sub main'initseg 150sub ::initseg
442 { 151{ my $f=$nmdecor.shift;
443 local($f)=@_; 152 if ($::win32)
444 if ($main'win32) 153 { $initseg=<<___;
445 { 154segment .CRT\$XCU data align=4
446 local($tmp)=<<___; 155extern $f
447segment .CRT\$XCU data 156dd $f
448extern $under$f
449DD $under$f
450___ 157___
451 push(@out,$tmp); 158 }
452 } 159}
453 } 160
161sub ::dataseg
162{ if ($mwerks) { push(@out,".section\t.data,4\n"); }
163 else { push(@out,"section\t.data align=4\n"); }
164}
454 165
4551; 1661;
diff --git a/src/lib/libssl/src/crypto/pkcs12/Makefile b/src/lib/libssl/src/crypto/pkcs12/Makefile
index eed226b30d..3a7498fe7a 100644
--- a/src/lib/libssl/src/crypto/pkcs12/Makefile
+++ b/src/lib/libssl/src/crypto/pkcs12/Makefile
@@ -39,7 +39,7 @@ test:
39all: lib 39all: lib
40 40
41lib: $(LIBOBJ) 41lib: $(LIBOBJ)
42 $(ARX) $(LIB) $(LIBOBJ) 42 $(AR) $(LIB) $(LIBOBJ)
43 $(RANLIB) $(LIB) || echo Never mind. 43 $(RANLIB) $(LIB) || echo Never mind.
44 @touch lib 44 @touch lib
45 45
@@ -85,37 +85,36 @@ p12_add.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
85p12_add.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 85p12_add.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
86p12_add.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 86p12_add.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
87p12_add.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 87p12_add.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
88p12_add.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 88p12_add.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
89p12_add.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 89p12_add.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
90p12_add.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 90p12_add.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
91p12_add.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 91p12_add.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
92p12_add.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 92p12_add.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
93p12_add.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 93p12_add.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
94p12_add.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 94p12_add.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
95p12_add.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 95p12_add.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_add.c
96p12_add.o: ../cryptlib.h p12_add.c
97p12_asn.o: ../../e_os.h ../../include/openssl/asn1.h 96p12_asn.o: ../../e_os.h ../../include/openssl/asn1.h
98p12_asn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 97p12_asn.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
99p12_asn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 98p12_asn.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
100p12_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 99p12_asn.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
101p12_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 100p12_asn.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
102p12_asn.o: ../../include/openssl/err.h ../../include/openssl/evp.h 101p12_asn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
103p12_asn.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 102p12_asn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
104p12_asn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 103p12_asn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
105p12_asn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 104p12_asn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
106p12_asn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h 105p12_asn.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
107p12_asn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 106p12_asn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
108p12_asn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 107p12_asn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
109p12_asn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 108p12_asn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
110p12_asn.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_asn.c 109p12_asn.o: ../cryptlib.h p12_asn.c
111p12_attr.o: ../../e_os.h ../../include/openssl/asn1.h 110p12_attr.o: ../../e_os.h ../../include/openssl/asn1.h
112p12_attr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 111p12_attr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
113p12_attr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 112p12_attr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
114p12_attr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 113p12_attr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
115p12_attr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 114p12_attr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
116p12_attr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 115p12_attr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
117p12_attr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 116p12_attr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
118p12_attr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 117p12_attr.o: ../../include/openssl/opensslconf.h
119p12_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 118p12_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
120p12_attr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 119p12_attr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
121p12_attr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 120p12_attr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -127,9 +126,9 @@ p12_crpt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
127p12_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 126p12_crpt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
128p12_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 127p12_crpt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
129p12_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 128p12_crpt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
130p12_crpt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 129p12_crpt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
131p12_crpt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 130p12_crpt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
132p12_crpt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 131p12_crpt.o: ../../include/openssl/opensslconf.h
133p12_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 132p12_crpt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
134p12_crpt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 133p12_crpt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
135p12_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 134p12_crpt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -141,23 +140,22 @@ p12_crt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
141p12_crt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 140p12_crt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
142p12_crt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 141p12_crt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
143p12_crt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 142p12_crt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
144p12_crt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 143p12_crt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
145p12_crt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 144p12_crt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
146p12_crt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 145p12_crt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
147p12_crt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 146p12_crt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
148p12_crt.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 147p12_crt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
149p12_crt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 148p12_crt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
150p12_crt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 149p12_crt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
151p12_crt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 150p12_crt.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_crt.c
152p12_crt.o: ../cryptlib.h p12_crt.c
153p12_decr.o: ../../e_os.h ../../include/openssl/asn1.h 151p12_decr.o: ../../e_os.h ../../include/openssl/asn1.h
154p12_decr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 152p12_decr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
155p12_decr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 153p12_decr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
156p12_decr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 154p12_decr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
157p12_decr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 155p12_decr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
158p12_decr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 156p12_decr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
159p12_decr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 157p12_decr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
160p12_decr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 158p12_decr.o: ../../include/openssl/opensslconf.h
161p12_decr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 159p12_decr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
162p12_decr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 160p12_decr.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
163p12_decr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 161p12_decr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -169,9 +167,9 @@ p12_init.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
169p12_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 167p12_init.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
170p12_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 168p12_init.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
171p12_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 169p12_init.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
172p12_init.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 170p12_init.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
173p12_init.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 171p12_init.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
174p12_init.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 172p12_init.o: ../../include/openssl/opensslconf.h
175p12_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 173p12_init.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
176p12_init.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 174p12_init.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
177p12_init.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 175p12_init.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -184,22 +182,22 @@ p12_key.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
184p12_key.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 182p12_key.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
185p12_key.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 183p12_key.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
186p12_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h 184p12_key.o: ../../include/openssl/err.h ../../include/openssl/evp.h
187p12_key.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 185p12_key.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
188p12_key.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 186p12_key.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
189p12_key.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 187p12_key.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
190p12_key.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h 188p12_key.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
191p12_key.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 189p12_key.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
192p12_key.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 190p12_key.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
193p12_key.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 191p12_key.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
194p12_key.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_key.c 192p12_key.o: ../cryptlib.h p12_key.c
195p12_kiss.o: ../../e_os.h ../../include/openssl/asn1.h 193p12_kiss.o: ../../e_os.h ../../include/openssl/asn1.h
196p12_kiss.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 194p12_kiss.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
197p12_kiss.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 195p12_kiss.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
198p12_kiss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 196p12_kiss.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
199p12_kiss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 197p12_kiss.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
200p12_kiss.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 198p12_kiss.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
201p12_kiss.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 199p12_kiss.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
202p12_kiss.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 200p12_kiss.o: ../../include/openssl/opensslconf.h
203p12_kiss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 201p12_kiss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
204p12_kiss.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 202p12_kiss.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
205p12_kiss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 203p12_kiss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -211,10 +209,9 @@ p12_mutl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
211p12_mutl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 209p12_mutl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
212p12_mutl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 210p12_mutl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
213p12_mutl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 211p12_mutl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
214p12_mutl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 212p12_mutl.o: ../../include/openssl/evp.h ../../include/openssl/hmac.h
215p12_mutl.o: ../../include/openssl/hmac.h ../../include/openssl/lhash.h 213p12_mutl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
216p12_mutl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 214p12_mutl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
217p12_mutl.o: ../../include/openssl/opensslconf.h
218p12_mutl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 215p12_mutl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
219p12_mutl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 216p12_mutl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
220p12_mutl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 217p12_mutl.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
@@ -226,9 +223,8 @@ p12_npas.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
226p12_npas.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 223p12_npas.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
227p12_npas.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 224p12_npas.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
228p12_npas.o: ../../include/openssl/err.h ../../include/openssl/evp.h 225p12_npas.o: ../../include/openssl/err.h ../../include/openssl/evp.h
229p12_npas.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 226p12_npas.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
230p12_npas.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 227p12_npas.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
231p12_npas.o: ../../include/openssl/opensslconf.h
232p12_npas.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 228p12_npas.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
233p12_npas.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 229p12_npas.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h
234p12_npas.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 230p12_npas.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
@@ -241,53 +237,50 @@ p12_p8d.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
241p12_p8d.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 237p12_p8d.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
242p12_p8d.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 238p12_p8d.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
243p12_p8d.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 239p12_p8d.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
244p12_p8d.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 240p12_p8d.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
245p12_p8d.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 241p12_p8d.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
246p12_p8d.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 242p12_p8d.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
247p12_p8d.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 243p12_p8d.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
248p12_p8d.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 244p12_p8d.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
249p12_p8d.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 245p12_p8d.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
250p12_p8d.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 246p12_p8d.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
251p12_p8d.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 247p12_p8d.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_p8d.c
252p12_p8d.o: ../cryptlib.h p12_p8d.c
253p12_p8e.o: ../../e_os.h ../../include/openssl/asn1.h 248p12_p8e.o: ../../e_os.h ../../include/openssl/asn1.h
254p12_p8e.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 249p12_p8e.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
255p12_p8e.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 250p12_p8e.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
256p12_p8e.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 251p12_p8e.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
257p12_p8e.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 252p12_p8e.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
258p12_p8e.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 253p12_p8e.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
259p12_p8e.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 254p12_p8e.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
260p12_p8e.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 255p12_p8e.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
261p12_p8e.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 256p12_p8e.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
262p12_p8e.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 257p12_p8e.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
263p12_p8e.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 258p12_p8e.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
264p12_p8e.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 259p12_p8e.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
265p12_p8e.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 260p12_p8e.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_p8e.c
266p12_p8e.o: ../cryptlib.h p12_p8e.c
267p12_utl.o: ../../e_os.h ../../include/openssl/asn1.h 261p12_utl.o: ../../e_os.h ../../include/openssl/asn1.h
268p12_utl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 262p12_utl.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
269p12_utl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 263p12_utl.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
270p12_utl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 264p12_utl.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
271p12_utl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 265p12_utl.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
272p12_utl.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 266p12_utl.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
273p12_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 267p12_utl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
274p12_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 268p12_utl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
275p12_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 269p12_utl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h
276p12_utl.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h 270p12_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
277p12_utl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 271p12_utl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
278p12_utl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 272p12_utl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
279p12_utl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 273p12_utl.o: ../../include/openssl/x509_vfy.h ../cryptlib.h p12_utl.c
280p12_utl.o: ../cryptlib.h p12_utl.c
281pk12err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 274pk12err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
282pk12err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 275pk12err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
283pk12err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 276pk12err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
284pk12err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 277pk12err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
285pk12err.o: ../../include/openssl/err.h ../../include/openssl/evp.h 278pk12err.o: ../../include/openssl/err.h ../../include/openssl/evp.h
286pk12err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 279pk12err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
287pk12err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 280pk12err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
288pk12err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 281pk12err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
289pk12err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs12.h 282pk12err.o: ../../include/openssl/pkcs12.h ../../include/openssl/pkcs7.h
290pk12err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 283pk12err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
291pk12err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 284pk12err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
292pk12err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 285pk12err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
293pk12err.o: ../../include/openssl/x509_vfy.h pk12err.c 286pk12err.o: pk12err.c
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_add.c b/src/lib/libssl/src/crypto/pkcs12/p12_add.c
index 1f3e378f5c..27ac5facfa 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_add.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_add.c
@@ -106,6 +106,7 @@ PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG(int pbe_nid, const char *pass,
106 PKCS8_PRIV_KEY_INFO *p8) 106 PKCS8_PRIV_KEY_INFO *p8)
107{ 107{
108 PKCS12_SAFEBAG *bag; 108 PKCS12_SAFEBAG *bag;
109 const EVP_CIPHER *pbe_ciph;
109 110
110 /* Set up the safe bag */ 111 /* Set up the safe bag */
111 if (!(bag = PKCS12_SAFEBAG_new())) { 112 if (!(bag = PKCS12_SAFEBAG_new())) {
@@ -114,8 +115,14 @@ PKCS12_SAFEBAG *PKCS12_MAKE_SHKEYBAG(int pbe_nid, const char *pass,
114 } 115 }
115 116
116 bag->type = OBJ_nid2obj(NID_pkcs8ShroudedKeyBag); 117 bag->type = OBJ_nid2obj(NID_pkcs8ShroudedKeyBag);
118
119 pbe_ciph = EVP_get_cipherbynid(pbe_nid);
120
121 if (pbe_ciph)
122 pbe_nid = -1;
123
117 if (!(bag->value.shkeybag = 124 if (!(bag->value.shkeybag =
118 PKCS8_encrypt(pbe_nid, NULL, pass, passlen, salt, saltlen, iter, 125 PKCS8_encrypt(pbe_nid, pbe_ciph, pass, passlen, salt, saltlen, iter,
119 p8))) { 126 p8))) {
120 PKCS12err(PKCS12_F_PKCS12_MAKE_SHKEYBAG, ERR_R_MALLOC_FAILURE); 127 PKCS12err(PKCS12_F_PKCS12_MAKE_SHKEYBAG, ERR_R_MALLOC_FAILURE);
121 return NULL; 128 return NULL;
@@ -164,6 +171,7 @@ PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen,
164{ 171{
165 PKCS7 *p7; 172 PKCS7 *p7;
166 X509_ALGOR *pbe; 173 X509_ALGOR *pbe;
174 const EVP_CIPHER *pbe_ciph;
167 if (!(p7 = PKCS7_new())) { 175 if (!(p7 = PKCS7_new())) {
168 PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE); 176 PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE);
169 return NULL; 177 return NULL;
@@ -173,7 +181,15 @@ PKCS7 *PKCS12_pack_p7encdata(int pbe_nid, const char *pass, int passlen,
173 PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE); 181 PKCS12_R_ERROR_SETTING_ENCRYPTED_DATA_TYPE);
174 return NULL; 182 return NULL;
175 } 183 }
176 if (!(pbe = PKCS5_pbe_set(pbe_nid, iter, salt, saltlen))) { 184
185 pbe_ciph = EVP_get_cipherbynid(pbe_nid);
186
187 if (pbe_ciph)
188 pbe = PKCS5_pbe2_set(pbe_ciph, iter, salt, saltlen);
189 else
190 pbe = PKCS5_pbe_set(pbe_nid, iter, salt, saltlen);
191
192 if (!pbe) {
177 PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE); 193 PKCS12err(PKCS12_F_PKCS12_PACK_P7ENCDATA, ERR_R_MALLOC_FAILURE);
178 return NULL; 194 return NULL;
179 } 195 }
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_attr.c b/src/lib/libssl/src/crypto/pkcs12/p12_attr.c
index 68d6c5ad15..e4d9c25647 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_attr.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_attr.c
@@ -139,7 +139,7 @@ char *PKCS12_get_friendlyname(PKCS12_SAFEBAG *bag)
139 ASN1_TYPE *atype; 139 ASN1_TYPE *atype;
140 if (!(atype = PKCS12_get_attr(bag, NID_friendlyName))) return NULL; 140 if (!(atype = PKCS12_get_attr(bag, NID_friendlyName))) return NULL;
141 if (atype->type != V_ASN1_BMPSTRING) return NULL; 141 if (atype->type != V_ASN1_BMPSTRING) return NULL;
142 return uni2asc(atype->value.bmpstring->data, 142 return OPENSSL_uni2asc(atype->value.bmpstring->data,
143 atype->value.bmpstring->length); 143 atype->value.bmpstring->length);
144} 144}
145 145
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_crpt.c b/src/lib/libssl/src/crypto/pkcs12/p12_crpt.c
index f8b952e27e..b71d07b4d0 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_crpt.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_crpt.c
@@ -60,28 +60,10 @@
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include <openssl/pkcs12.h> 61#include <openssl/pkcs12.h>
62 62
63/* PKCS#12 specific PBE functions */ 63/* PKCS#12 PBE algorithms now in static table */
64 64
65void PKCS12_PBE_add(void) 65void PKCS12_PBE_add(void)
66{ 66{
67#ifndef OPENSSL_NO_RC4
68EVP_PBE_alg_add(NID_pbe_WithSHA1And128BitRC4, EVP_rc4(), EVP_sha1(),
69 PKCS12_PBE_keyivgen);
70EVP_PBE_alg_add(NID_pbe_WithSHA1And40BitRC4, EVP_rc4_40(), EVP_sha1(),
71 PKCS12_PBE_keyivgen);
72#endif
73#ifndef OPENSSL_NO_DES
74EVP_PBE_alg_add(NID_pbe_WithSHA1And3_Key_TripleDES_CBC,
75 EVP_des_ede3_cbc(), EVP_sha1(), PKCS12_PBE_keyivgen);
76EVP_PBE_alg_add(NID_pbe_WithSHA1And2_Key_TripleDES_CBC,
77 EVP_des_ede_cbc(), EVP_sha1(), PKCS12_PBE_keyivgen);
78#endif
79#ifndef OPENSSL_NO_RC2
80EVP_PBE_alg_add(NID_pbe_WithSHA1And128BitRC2_CBC, EVP_rc2_cbc(),
81 EVP_sha1(), PKCS12_PBE_keyivgen);
82EVP_PBE_alg_add(NID_pbe_WithSHA1And40BitRC2_CBC, EVP_rc2_40_cbc(),
83 EVP_sha1(), PKCS12_PBE_keyivgen);
84#endif
85} 67}
86 68
87int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, 69int PKCS12_PBE_keyivgen(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_crt.c b/src/lib/libssl/src/crypto/pkcs12/p12_crt.c
index 9522342fa5..96b131defa 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_crt.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_crt.c
@@ -59,10 +59,6 @@
59#include <stdio.h> 59#include <stdio.h>
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include <openssl/pkcs12.h> 61#include <openssl/pkcs12.h>
62#ifdef OPENSSL_FIPS
63#include <openssl/fips.h>
64#endif
65
66 62
67 63
68static int pkcs12_add_bag(STACK_OF(PKCS12_SAFEBAG) **pbags, PKCS12_SAFEBAG *bag); 64static int pkcs12_add_bag(STACK_OF(PKCS12_SAFEBAG) **pbags, PKCS12_SAFEBAG *bag);
@@ -94,14 +90,7 @@ PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert,
94 90
95 /* Set defaults */ 91 /* Set defaults */
96 if (!nid_cert) 92 if (!nid_cert)
97 {
98#ifdef OPENSSL_FIPS
99 if (FIPS_mode())
100 nid_cert = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
101 else
102#endif
103 nid_cert = NID_pbe_WithSHA1And40BitRC2_CBC; 93 nid_cert = NID_pbe_WithSHA1And40BitRC2_CBC;
104 }
105 if (!nid_key) 94 if (!nid_key)
106 nid_key = NID_pbe_WithSHA1And3_Key_TripleDES_CBC; 95 nid_key = NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
107 if (!iter) 96 if (!iter)
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_key.c b/src/lib/libssl/src/crypto/pkcs12/p12_key.c
index 9e57eee4a4..a29794bbbc 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_key.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_key.c
@@ -81,15 +81,18 @@ int PKCS12_key_gen_asc(const char *pass, int passlen, unsigned char *salt,
81 int ret; 81 int ret;
82 unsigned char *unipass; 82 unsigned char *unipass;
83 int uniplen; 83 int uniplen;
84
84 if(!pass) { 85 if(!pass) {
85 unipass = NULL; 86 unipass = NULL;
86 uniplen = 0; 87 uniplen = 0;
87 } else if (!asc2uni(pass, passlen, &unipass, &uniplen)) { 88 } else if (!OPENSSL_asc2uni(pass, passlen, &unipass, &uniplen)) {
88 PKCS12err(PKCS12_F_PKCS12_KEY_GEN_ASC,ERR_R_MALLOC_FAILURE); 89 PKCS12err(PKCS12_F_PKCS12_KEY_GEN_ASC,ERR_R_MALLOC_FAILURE);
89 return 0; 90 return 0;
90 } 91 }
91 ret = PKCS12_key_gen_uni(unipass, uniplen, salt, saltlen, 92 ret = PKCS12_key_gen_uni(unipass, uniplen, salt, saltlen,
92 id, iter, n, out, md_type); 93 id, iter, n, out, md_type);
94 if (ret <= 0)
95 return 0;
93 if(unipass) { 96 if(unipass) {
94 OPENSSL_cleanse(unipass, uniplen); /* Clear password from memory */ 97 OPENSSL_cleanse(unipass, uniplen); /* Clear password from memory */
95 OPENSSL_free(unipass); 98 OPENSSL_free(unipass);
@@ -129,6 +132,8 @@ int PKCS12_key_gen_uni(unsigned char *pass, int passlen, unsigned char *salt,
129#endif 132#endif
130 v = EVP_MD_block_size (md_type); 133 v = EVP_MD_block_size (md_type);
131 u = EVP_MD_size (md_type); 134 u = EVP_MD_size (md_type);
135 if (u < 0)
136 return 0;
132 D = OPENSSL_malloc (v); 137 D = OPENSSL_malloc (v);
133 Ai = OPENSSL_malloc (u); 138 Ai = OPENSSL_malloc (u);
134 B = OPENSSL_malloc (v + 1); 139 B = OPENSSL_malloc (v + 1);
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c b/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c
index 5c4c6ec988..292cc3ed4a 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_kiss.c
@@ -63,16 +63,13 @@
63/* Simplified PKCS#12 routines */ 63/* Simplified PKCS#12 routines */
64 64
65static int parse_pk12( PKCS12 *p12, const char *pass, int passlen, 65static int parse_pk12( PKCS12 *p12, const char *pass, int passlen,
66 EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca); 66 EVP_PKEY **pkey, STACK_OF(X509) *ocerts);
67 67
68static int parse_bags( STACK_OF(PKCS12_SAFEBAG) *bags, const char *pass, 68static int parse_bags( STACK_OF(PKCS12_SAFEBAG) *bags, const char *pass,
69 int passlen, EVP_PKEY **pkey, X509 **cert, 69 int passlen, EVP_PKEY **pkey, STACK_OF(X509) *ocerts);
70 STACK_OF(X509) **ca, ASN1_OCTET_STRING **keyid,
71 char *keymatch);
72 70
73static int parse_bag( PKCS12_SAFEBAG *bag, const char *pass, int passlen, 71static int parse_bag( PKCS12_SAFEBAG *bag, const char *pass, int passlen,
74 EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca, 72 EVP_PKEY **pkey, STACK_OF(X509) *ocerts);
75 ASN1_OCTET_STRING **keyid, char *keymatch);
76 73
77/* Parse and decrypt a PKCS#12 structure returning user key, user cert 74/* Parse and decrypt a PKCS#12 structure returning user key, user cert
78 * and other (CA) certs. Note either ca should be NULL, *ca should be NULL, 75 * and other (CA) certs. Note either ca should be NULL, *ca should be NULL,
@@ -83,24 +80,20 @@ static int parse_bag( PKCS12_SAFEBAG *bag, const char *pass, int passlen,
83int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert, 80int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
84 STACK_OF(X509) **ca) 81 STACK_OF(X509) **ca)
85{ 82{
86 83 STACK_OF(X509) *ocerts = NULL;
84 X509 *x = NULL;
87 /* Check for NULL PKCS12 structure */ 85 /* Check for NULL PKCS12 structure */
88 86
89 if(!p12) { 87 if(!p12)
88 {
90 PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_INVALID_NULL_PKCS12_POINTER); 89 PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_INVALID_NULL_PKCS12_POINTER);
91 return 0; 90 return 0;
92 }
93
94 /* Allocate stack for ca certificates if needed */
95 if ((ca != NULL) && (*ca == NULL)) {
96 if (!(*ca = sk_X509_new_null())) {
97 PKCS12err(PKCS12_F_PKCS12_PARSE,ERR_R_MALLOC_FAILURE);
98 return 0;
99 } 91 }
100 }
101 92
102 if(pkey) *pkey = NULL; 93 if(pkey)
103 if(cert) *cert = NULL; 94 *pkey = NULL;
95 if(cert)
96 *cert = NULL;
104 97
105 /* Check the mac */ 98 /* Check the mac */
106 99
@@ -122,19 +115,61 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
122 goto err; 115 goto err;
123 } 116 }
124 117
125 if (!parse_pk12 (p12, pass, -1, pkey, cert, ca)) 118 /* Allocate stack for other certificates */
119 ocerts = sk_X509_new_null();
120
121 if (!ocerts)
122 {
123 PKCS12err(PKCS12_F_PKCS12_PARSE,ERR_R_MALLOC_FAILURE);
124 return 0;
125 }
126
127 if (!parse_pk12 (p12, pass, -1, pkey, ocerts))
126 { 128 {
127 PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_PARSE_ERROR); 129 PKCS12err(PKCS12_F_PKCS12_PARSE,PKCS12_R_PARSE_ERROR);
128 goto err; 130 goto err;
129 } 131 }
130 132
133 while ((x = sk_X509_pop(ocerts)))
134 {
135 if (pkey && *pkey && cert && !*cert)
136 {
137 if (X509_check_private_key(x, *pkey))
138 {
139 *cert = x;
140 x = NULL;
141 }
142 }
143
144 if (ca && x)
145 {
146 if (!*ca)
147 *ca = sk_X509_new_null();
148 if (!*ca)
149 goto err;
150 if (!sk_X509_push(*ca, x))
151 goto err;
152 x = NULL;
153 }
154 if (x)
155 X509_free(x);
156 }
157
158 if (ocerts)
159 sk_X509_pop_free(ocerts, X509_free);
160
131 return 1; 161 return 1;
132 162
133 err: 163 err:
134 164
135 if (pkey && *pkey) EVP_PKEY_free(*pkey); 165 if (pkey && *pkey)
136 if (cert && *cert) X509_free(*cert); 166 EVP_PKEY_free(*pkey);
137 if (ca) sk_X509_pop_free(*ca, X509_free); 167 if (cert && *cert)
168 X509_free(*cert);
169 if (x)
170 X509_free(*cert);
171 if (ocerts)
172 sk_X509_pop_free(ocerts, X509_free);
138 return 0; 173 return 0;
139 174
140} 175}
@@ -142,15 +177,13 @@ int PKCS12_parse(PKCS12 *p12, const char *pass, EVP_PKEY **pkey, X509 **cert,
142/* Parse the outer PKCS#12 structure */ 177/* Parse the outer PKCS#12 structure */
143 178
144static int parse_pk12(PKCS12 *p12, const char *pass, int passlen, 179static int parse_pk12(PKCS12 *p12, const char *pass, int passlen,
145 EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca) 180 EVP_PKEY **pkey, STACK_OF(X509) *ocerts)
146{ 181{
147 STACK_OF(PKCS7) *asafes; 182 STACK_OF(PKCS7) *asafes;
148 STACK_OF(PKCS12_SAFEBAG) *bags; 183 STACK_OF(PKCS12_SAFEBAG) *bags;
149 int i, bagnid; 184 int i, bagnid;
150 PKCS7 *p7; 185 PKCS7 *p7;
151 ASN1_OCTET_STRING *keyid = NULL;
152 186
153 char keymatch = 0;
154 if (!(asafes = PKCS12_unpack_authsafes (p12))) return 0; 187 if (!(asafes = PKCS12_unpack_authsafes (p12))) return 0;
155 for (i = 0; i < sk_PKCS7_num (asafes); i++) { 188 for (i = 0; i < sk_PKCS7_num (asafes); i++) {
156 p7 = sk_PKCS7_value (asafes, i); 189 p7 = sk_PKCS7_value (asafes, i);
@@ -164,8 +197,7 @@ static int parse_pk12(PKCS12 *p12, const char *pass, int passlen,
164 sk_PKCS7_pop_free(asafes, PKCS7_free); 197 sk_PKCS7_pop_free(asafes, PKCS7_free);
165 return 0; 198 return 0;
166 } 199 }
167 if (!parse_bags(bags, pass, passlen, pkey, cert, ca, 200 if (!parse_bags(bags, pass, passlen, pkey, ocerts)) {
168 &keyid, &keymatch)) {
169 sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free); 201 sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);
170 sk_PKCS7_pop_free(asafes, PKCS7_free); 202 sk_PKCS7_pop_free(asafes, PKCS7_free);
171 return 0; 203 return 0;
@@ -173,89 +205,65 @@ static int parse_pk12(PKCS12 *p12, const char *pass, int passlen,
173 sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free); 205 sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);
174 } 206 }
175 sk_PKCS7_pop_free(asafes, PKCS7_free); 207 sk_PKCS7_pop_free(asafes, PKCS7_free);
176 if (keyid) M_ASN1_OCTET_STRING_free(keyid);
177 return 1; 208 return 1;
178} 209}
179 210
180 211
181static int parse_bags(STACK_OF(PKCS12_SAFEBAG) *bags, const char *pass, 212static int parse_bags(STACK_OF(PKCS12_SAFEBAG) *bags, const char *pass,
182 int passlen, EVP_PKEY **pkey, X509 **cert, 213 int passlen, EVP_PKEY **pkey, STACK_OF(X509) *ocerts)
183 STACK_OF(X509) **ca, ASN1_OCTET_STRING **keyid,
184 char *keymatch)
185{ 214{
186 int i; 215 int i;
187 for (i = 0; i < sk_PKCS12_SAFEBAG_num(bags); i++) { 216 for (i = 0; i < sk_PKCS12_SAFEBAG_num(bags); i++) {
188 if (!parse_bag(sk_PKCS12_SAFEBAG_value (bags, i), 217 if (!parse_bag(sk_PKCS12_SAFEBAG_value (bags, i),
189 pass, passlen, pkey, cert, ca, keyid, 218 pass, passlen, pkey, ocerts))
190 keymatch)) return 0; 219 return 0;
191 } 220 }
192 return 1; 221 return 1;
193} 222}
194 223
195#define MATCH_KEY 0x1
196#define MATCH_CERT 0x2
197#define MATCH_ALL 0x3
198
199static int parse_bag(PKCS12_SAFEBAG *bag, const char *pass, int passlen, 224static int parse_bag(PKCS12_SAFEBAG *bag, const char *pass, int passlen,
200 EVP_PKEY **pkey, X509 **cert, STACK_OF(X509) **ca, 225 EVP_PKEY **pkey, STACK_OF(X509) *ocerts)
201 ASN1_OCTET_STRING **keyid,
202 char *keymatch)
203{ 226{
204 PKCS8_PRIV_KEY_INFO *p8; 227 PKCS8_PRIV_KEY_INFO *p8;
205 X509 *x509; 228 X509 *x509;
206 ASN1_OCTET_STRING *lkey = NULL, *ckid = NULL;
207 ASN1_TYPE *attrib; 229 ASN1_TYPE *attrib;
208 ASN1_BMPSTRING *fname = NULL; 230 ASN1_BMPSTRING *fname = NULL;
231 ASN1_OCTET_STRING *lkid = NULL;
209 232
210 if ((attrib = PKCS12_get_attr (bag, NID_friendlyName))) 233 if ((attrib = PKCS12_get_attr (bag, NID_friendlyName)))
211 fname = attrib->value.bmpstring; 234 fname = attrib->value.bmpstring;
212 235
213 if ((attrib = PKCS12_get_attr (bag, NID_localKeyID))) { 236 if ((attrib = PKCS12_get_attr (bag, NID_localKeyID)))
214 lkey = attrib->value.octet_string; 237 lkid = attrib->value.octet_string;
215 ckid = lkey;
216 }
217 238
218 /* Check for any local key id matching (if needed) */
219 if (lkey && ((*keymatch & MATCH_ALL) != MATCH_ALL)) {
220 if (*keyid) {
221 if (M_ASN1_OCTET_STRING_cmp(*keyid, lkey)) lkey = NULL;
222 } else {
223 if (!(*keyid = M_ASN1_OCTET_STRING_dup(lkey))) {
224 PKCS12err(PKCS12_F_PARSE_BAG,ERR_R_MALLOC_FAILURE);
225 return 0;
226 }
227 }
228 }
229
230 switch (M_PKCS12_bag_type(bag)) 239 switch (M_PKCS12_bag_type(bag))
231 { 240 {
232 case NID_keyBag: 241 case NID_keyBag:
233 if (!lkey || !pkey) return 1; 242 if (!pkey || *pkey)
234 if (!(*pkey = EVP_PKCS82PKEY(bag->value.keybag))) return 0; 243 return 1;
235 *keymatch |= MATCH_KEY; 244 if (!(*pkey = EVP_PKCS82PKEY(bag->value.keybag)))
245 return 0;
236 break; 246 break;
237 247
238 case NID_pkcs8ShroudedKeyBag: 248 case NID_pkcs8ShroudedKeyBag:
239 if (!lkey || !pkey) return 1; 249 if (!pkey || *pkey)
250 return 1;
240 if (!(p8 = PKCS12_decrypt_skey(bag, pass, passlen))) 251 if (!(p8 = PKCS12_decrypt_skey(bag, pass, passlen)))
241 return 0; 252 return 0;
242 *pkey = EVP_PKCS82PKEY(p8); 253 *pkey = EVP_PKCS82PKEY(p8);
243 PKCS8_PRIV_KEY_INFO_free(p8); 254 PKCS8_PRIV_KEY_INFO_free(p8);
244 if (!(*pkey)) return 0; 255 if (!(*pkey)) return 0;
245 *keymatch |= MATCH_KEY;
246 break; 256 break;
247 257
248 case NID_certBag: 258 case NID_certBag:
249 if (M_PKCS12_cert_bag_type(bag) != NID_x509Certificate ) 259 if (M_PKCS12_cert_bag_type(bag) != NID_x509Certificate )
250 return 1; 260 return 1;
251 if (!(x509 = PKCS12_certbag2x509(bag))) return 0; 261 if (!(x509 = PKCS12_certbag2x509(bag)))
252 if(ckid) 262 return 0;
263 if(lkid && !X509_keyid_set1(x509, lkid->data, lkid->length))
253 { 264 {
254 if (!X509_keyid_set1(x509, ckid->data, ckid->length)) 265 X509_free(x509);
255 { 266 return 0;
256 X509_free(x509);
257 return 0;
258 }
259 } 267 }
260 if(fname) { 268 if(fname) {
261 int len, r; 269 int len, r;
@@ -272,20 +280,17 @@ static int parse_bag(PKCS12_SAFEBAG *bag, const char *pass, int passlen,
272 } 280 }
273 } 281 }
274 282
283 if(!sk_X509_push(ocerts, x509))
284 {
285 X509_free(x509);
286 return 0;
287 }
275 288
276 if (lkey) {
277 *keymatch |= MATCH_CERT;
278 if (cert) *cert = x509;
279 else X509_free(x509);
280 } else {
281 if(ca) sk_X509_push (*ca, x509);
282 else X509_free(x509);
283 }
284 break; 289 break;
285 290
286 case NID_safeContentsBag: 291 case NID_safeContentsBag:
287 return parse_bags(bag->value.safes, pass, passlen, 292 return parse_bags(bag->value.safes, pass, passlen,
288 pkey, cert, ca, keyid, keymatch); 293 pkey, ocerts);
289 break; 294 break;
290 295
291 default: 296 default:
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_mutl.c b/src/lib/libssl/src/crypto/pkcs12/p12_mutl.c
index 70bfef6e5d..9ab740d51f 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_mutl.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_mutl.c
@@ -71,6 +71,7 @@ int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
71 HMAC_CTX hmac; 71 HMAC_CTX hmac;
72 unsigned char key[EVP_MAX_MD_SIZE], *salt; 72 unsigned char key[EVP_MAX_MD_SIZE], *salt;
73 int saltlen, iter; 73 int saltlen, iter;
74 int md_size;
74 75
75 if (!PKCS7_type_is_data(p12->authsafes)) 76 if (!PKCS7_type_is_data(p12->authsafes))
76 { 77 {
@@ -87,13 +88,16 @@ int PKCS12_gen_mac(PKCS12 *p12, const char *pass, int passlen,
87 PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_UNKNOWN_DIGEST_ALGORITHM); 88 PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_UNKNOWN_DIGEST_ALGORITHM);
88 return 0; 89 return 0;
89 } 90 }
91 md_size = EVP_MD_size(md_type);
92 if (md_size < 0)
93 return 0;
90 if(!PKCS12_key_gen (pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter, 94 if(!PKCS12_key_gen (pass, passlen, salt, saltlen, PKCS12_MAC_ID, iter,
91 EVP_MD_size(md_type), key, md_type)) { 95 md_size, key, md_type)) {
92 PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_KEY_GEN_ERROR); 96 PKCS12err(PKCS12_F_PKCS12_GEN_MAC,PKCS12_R_KEY_GEN_ERROR);
93 return 0; 97 return 0;
94 } 98 }
95 HMAC_CTX_init(&hmac); 99 HMAC_CTX_init(&hmac);
96 HMAC_Init_ex(&hmac, key, EVP_MD_size(md_type), md_type, NULL); 100 HMAC_Init_ex(&hmac, key, md_size, md_type, NULL);
97 HMAC_Update(&hmac, p12->authsafes->d.data->data, 101 HMAC_Update(&hmac, p12->authsafes->d.data->data,
98 p12->authsafes->d.data->length); 102 p12->authsafes->d.data->length);
99 HMAC_Final(&hmac, mac, maclen); 103 HMAC_Final(&hmac, mac, maclen);
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_npas.c b/src/lib/libssl/src/crypto/pkcs12/p12_npas.c
index 47e5e9c377..2f71355150 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_npas.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_npas.c
@@ -120,8 +120,13 @@ static int newpass_p12(PKCS12 *p12, char *oldpass, char *newpass)
120 bags = PKCS12_unpack_p7data(p7); 120 bags = PKCS12_unpack_p7data(p7);
121 } else if (bagnid == NID_pkcs7_encrypted) { 121 } else if (bagnid == NID_pkcs7_encrypted) {
122 bags = PKCS12_unpack_p7encdata(p7, oldpass, -1); 122 bags = PKCS12_unpack_p7encdata(p7, oldpass, -1);
123 alg_get(p7->d.encrypted->enc_data->algorithm, 123 if (!alg_get(p7->d.encrypted->enc_data->algorithm,
124 &pbe_nid, &pbe_iter, &pbe_saltlen); 124 &pbe_nid, &pbe_iter, &pbe_saltlen))
125 {
126 sk_PKCS12_SAFEBAG_pop_free(bags,
127 PKCS12_SAFEBAG_free);
128 bags = NULL;
129 }
125 } else continue; 130 } else continue;
126 if (!bags) { 131 if (!bags) {
127 sk_PKCS7_pop_free(asafes, PKCS7_free); 132 sk_PKCS7_pop_free(asafes, PKCS7_free);
@@ -193,7 +198,9 @@ static int newpass_bag(PKCS12_SAFEBAG *bag, char *oldpass, char *newpass)
193 if(M_PKCS12_bag_type(bag) != NID_pkcs8ShroudedKeyBag) return 1; 198 if(M_PKCS12_bag_type(bag) != NID_pkcs8ShroudedKeyBag) return 1;
194 199
195 if (!(p8 = PKCS8_decrypt(bag->value.shkeybag, oldpass, -1))) return 0; 200 if (!(p8 = PKCS8_decrypt(bag->value.shkeybag, oldpass, -1))) return 0;
196 alg_get(bag->value.shkeybag->algor, &p8_nid, &p8_iter, &p8_saltlen); 201 if (!alg_get(bag->value.shkeybag->algor, &p8_nid, &p8_iter,
202 &p8_saltlen))
203 return 0;
197 if(!(p8new = PKCS8_encrypt(p8_nid, NULL, newpass, -1, NULL, p8_saltlen, 204 if(!(p8new = PKCS8_encrypt(p8_nid, NULL, newpass, -1, NULL, p8_saltlen,
198 p8_iter, p8))) return 0; 205 p8_iter, p8))) return 0;
199 X509_SIG_free(bag->value.shkeybag); 206 X509_SIG_free(bag->value.shkeybag);
@@ -208,9 +215,11 @@ static int alg_get(X509_ALGOR *alg, int *pnid, int *piter, int *psaltlen)
208 215
209 p = alg->parameter->value.sequence->data; 216 p = alg->parameter->value.sequence->data;
210 pbe = d2i_PBEPARAM(NULL, &p, alg->parameter->value.sequence->length); 217 pbe = d2i_PBEPARAM(NULL, &p, alg->parameter->value.sequence->length);
218 if (!pbe)
219 return 0;
211 *pnid = OBJ_obj2nid(alg->algorithm); 220 *pnid = OBJ_obj2nid(alg->algorithm);
212 *piter = ASN1_INTEGER_get(pbe->iter); 221 *piter = ASN1_INTEGER_get(pbe->iter);
213 *psaltlen = pbe->salt->length; 222 *psaltlen = pbe->salt->length;
214 PBEPARAM_free(pbe); 223 PBEPARAM_free(pbe);
215 return 0; 224 return 1;
216} 225}
diff --git a/src/lib/libssl/src/crypto/pkcs12/p12_utl.c b/src/lib/libssl/src/crypto/pkcs12/p12_utl.c
index ca30ac4f6d..59c6f453f6 100644
--- a/src/lib/libssl/src/crypto/pkcs12/p12_utl.c
+++ b/src/lib/libssl/src/crypto/pkcs12/p12_utl.c
@@ -62,7 +62,7 @@
62 62
63/* Cheap and nasty Unicode stuff */ 63/* Cheap and nasty Unicode stuff */
64 64
65unsigned char *asc2uni(const char *asc, int asclen, unsigned char **uni, int *unilen) 65unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, unsigned char **uni, int *unilen)
66{ 66{
67 int ulen, i; 67 int ulen, i;
68 unsigned char *unitmp; 68 unsigned char *unitmp;
@@ -81,7 +81,7 @@ unsigned char *asc2uni(const char *asc, int asclen, unsigned char **uni, int *un
81 return unitmp; 81 return unitmp;
82} 82}
83 83
84char *uni2asc(unsigned char *uni, int unilen) 84char *OPENSSL_uni2asc(unsigned char *uni, int unilen)
85{ 85{
86 int asclen, i; 86 int asclen, i;
87 char *asctmp; 87 char *asctmp;
diff --git a/src/lib/libssl/src/crypto/pkcs12/pk12err.c b/src/lib/libssl/src/crypto/pkcs12/pk12err.c
index 07a1fb6907..f6ddf2df12 100644
--- a/src/lib/libssl/src/crypto/pkcs12/pk12err.c
+++ b/src/lib/libssl/src/crypto/pkcs12/pk12err.c
@@ -1,6 +1,6 @@
1/* crypto/pkcs12/pk12err.c */ 1/* crypto/pkcs12/pk12err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
diff --git a/src/lib/libssl/src/crypto/pkcs12/pkcs12.h b/src/lib/libssl/src/crypto/pkcs12/pkcs12.h
index 4bee605dc0..b17eb9f42b 100644
--- a/src/lib/libssl/src/crypto/pkcs12/pkcs12.h
+++ b/src/lib/libssl/src/crypto/pkcs12/pkcs12.h
@@ -108,8 +108,6 @@ PKCS12_MAC_DATA *mac;
108PKCS7 *authsafes; 108PKCS7 *authsafes;
109} PKCS12; 109} PKCS12;
110 110
111PREDECLARE_STACK_OF(PKCS12_SAFEBAG)
112
113typedef struct { 111typedef struct {
114ASN1_OBJECT *type; 112ASN1_OBJECT *type;
115union { 113union {
@@ -232,8 +230,8 @@ int PKCS12_set_mac(PKCS12 *p12, const char *pass, int passlen,
232 const EVP_MD *md_type); 230 const EVP_MD *md_type);
233int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt, 231int PKCS12_setup_mac(PKCS12 *p12, int iter, unsigned char *salt,
234 int saltlen, const EVP_MD *md_type); 232 int saltlen, const EVP_MD *md_type);
235unsigned char *asc2uni(const char *asc, int asclen, unsigned char **uni, int *unilen); 233unsigned char *OPENSSL_asc2uni(const char *asc, int asclen, unsigned char **uni, int *unilen);
236char *uni2asc(unsigned char *uni, int unilen); 234char *OPENSSL_uni2asc(unsigned char *uni, int unilen);
237 235
238DECLARE_ASN1_FUNCTIONS(PKCS12) 236DECLARE_ASN1_FUNCTIONS(PKCS12)
239DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA) 237DECLARE_ASN1_FUNCTIONS(PKCS12_MAC_DATA)
diff --git a/src/lib/libssl/src/crypto/pkcs7/Makefile b/src/lib/libssl/src/crypto/pkcs7/Makefile
index 790d8edf36..56dc6823d1 100644
--- a/src/lib/libssl/src/crypto/pkcs7/Makefile
+++ b/src/lib/libssl/src/crypto/pkcs7/Makefile
@@ -21,9 +21,9 @@ APPS=
21 21
22LIB=$(TOP)/libcrypto.a 22LIB=$(TOP)/libcrypto.a
23LIBSRC= pk7_asn1.c pk7_lib.c pkcs7err.c pk7_doit.c pk7_smime.c pk7_attr.c \ 23LIBSRC= pk7_asn1.c pk7_lib.c pkcs7err.c pk7_doit.c pk7_smime.c pk7_attr.c \
24 pk7_mime.c 24 pk7_mime.c bio_pk7.c
25LIBOBJ= pk7_asn1.o pk7_lib.o pkcs7err.o pk7_doit.o pk7_smime.o pk7_attr.o \ 25LIBOBJ= pk7_asn1.o pk7_lib.o pkcs7err.o pk7_doit.o pk7_smime.o pk7_attr.o \
26 pk7_mime.o 26 pk7_mime.o bio_pk7.o
27 27
28SRC= $(LIBSRC) 28SRC= $(LIBSRC)
29 29
@@ -54,7 +54,7 @@ verify: verify.o example.o lib
54 $(CC) $(CFLAGS) -o verify verify.o $(PEX_LIBS) example.o $(LIB) $(EX_LIBS) 54 $(CC) $(CFLAGS) -o verify verify.o $(PEX_LIBS) example.o $(LIB) $(EX_LIBS)
55 55
56lib: $(LIBOBJ) 56lib: $(LIBOBJ)
57 $(ARX) $(LIB) $(LIBOBJ) 57 $(AR) $(LIB) $(LIBOBJ)
58 $(RANLIB) $(LIB) || echo Never mind. 58 $(RANLIB) $(LIB) || echo Never mind.
59 @touch lib 59 @touch lib
60 60
@@ -95,26 +95,31 @@ clean:
95 95
96# DO NOT DELETE THIS LINE -- make depend depends on it. 96# DO NOT DELETE THIS LINE -- make depend depends on it.
97 97
98bio_pk7.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
99bio_pk7.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
100bio_pk7.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
101bio_pk7.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
102bio_pk7.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
103bio_pk7.o: ../../include/openssl/symhacks.h bio_pk7.c
98pk7_asn1.o: ../../e_os.h ../../include/openssl/asn1.h 104pk7_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
99pk7_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 105pk7_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
100pk7_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 106pk7_asn1.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
101pk7_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 107pk7_asn1.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
102pk7_asn1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 108pk7_asn1.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
103pk7_asn1.o: ../../include/openssl/err.h ../../include/openssl/evp.h 109pk7_asn1.o: ../../include/openssl/err.h ../../include/openssl/evp.h
104pk7_asn1.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 110pk7_asn1.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
105pk7_asn1.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 111pk7_asn1.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
106pk7_asn1.o: ../../include/openssl/opensslconf.h
107pk7_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 112pk7_asn1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
108pk7_asn1.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 113pk7_asn1.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
109pk7_asn1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 114pk7_asn1.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
110pk7_asn1.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 115pk7_asn1.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
111pk7_asn1.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pk7_asn1.c 116pk7_asn1.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pk7_asn1.c
112pk7_attr.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 117pk7_attr.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
113pk7_attr.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 118pk7_attr.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
114pk7_attr.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 119pk7_attr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
115pk7_attr.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 120pk7_attr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
116pk7_attr.o: ../../include/openssl/err.h ../../include/openssl/evp.h 121pk7_attr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
117pk7_attr.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 122pk7_attr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
118pk7_attr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 123pk7_attr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
119pk7_attr.o: ../../include/openssl/opensslconf.h 124pk7_attr.o: ../../include/openssl/opensslconf.h
120pk7_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 125pk7_attr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -129,9 +134,8 @@ pk7_doit.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
129pk7_doit.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 134pk7_doit.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
130pk7_doit.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 135pk7_doit.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
131pk7_doit.o: ../../include/openssl/err.h ../../include/openssl/evp.h 136pk7_doit.o: ../../include/openssl/err.h ../../include/openssl/evp.h
132pk7_doit.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 137pk7_doit.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
133pk7_doit.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 138pk7_doit.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
134pk7_doit.o: ../../include/openssl/opensslconf.h
135pk7_doit.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 139pk7_doit.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
136pk7_doit.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 140pk7_doit.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
137pk7_doit.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 141pk7_doit.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -143,22 +147,22 @@ pk7_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
143pk7_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 147pk7_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
144pk7_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 148pk7_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
145pk7_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 149pk7_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
146pk7_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 150pk7_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
147pk7_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 151pk7_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
148pk7_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 152pk7_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
149pk7_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 153pk7_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
150pk7_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 154pk7_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
151pk7_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 155pk7_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
152pk7_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 156pk7_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
153pk7_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h pk7_lib.c 157pk7_lib.o: ../asn1/asn1_locl.h ../cryptlib.h pk7_lib.c
154pk7_mime.o: ../../e_os.h ../../include/openssl/asn1.h 158pk7_mime.o: ../../e_os.h ../../include/openssl/asn1.h
155pk7_mime.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 159pk7_mime.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
156pk7_mime.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 160pk7_mime.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
157pk7_mime.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 161pk7_mime.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
158pk7_mime.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 162pk7_mime.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
159pk7_mime.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 163pk7_mime.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
160pk7_mime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 164pk7_mime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
161pk7_mime.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 165pk7_mime.o: ../../include/openssl/opensslconf.h
162pk7_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 166pk7_mime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
163pk7_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 167pk7_mime.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
164pk7_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 168pk7_mime.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -171,8 +175,8 @@ pk7_smime.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
171pk7_smime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 175pk7_smime.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
172pk7_smime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 176pk7_smime.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
173pk7_smime.o: ../../include/openssl/err.h ../../include/openssl/evp.h 177pk7_smime.o: ../../include/openssl/err.h ../../include/openssl/evp.h
174pk7_smime.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 178pk7_smime.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
175pk7_smime.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 179pk7_smime.o: ../../include/openssl/objects.h
176pk7_smime.o: ../../include/openssl/opensslconf.h 180pk7_smime.o: ../../include/openssl/opensslconf.h
177pk7_smime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 181pk7_smime.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
178pk7_smime.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 182pk7_smime.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_asn1.c b/src/lib/libssl/src/crypto/pkcs7/pk7_asn1.c
index 1f70d31386..b7ec2883cb 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pk7_asn1.c
+++ b/src/lib/libssl/src/crypto/pkcs7/pk7_asn1.c
@@ -77,10 +77,39 @@ ASN1_ADB(PKCS7) = {
77 ADB_ENTRY(NID_pkcs7_encrypted, ASN1_NDEF_EXP_OPT(PKCS7, d.encrypted, PKCS7_ENCRYPT, 0)) 77 ADB_ENTRY(NID_pkcs7_encrypted, ASN1_NDEF_EXP_OPT(PKCS7, d.encrypted, PKCS7_ENCRYPT, 0))
78} ASN1_ADB_END(PKCS7, 0, type, 0, &p7default_tt, NULL); 78} ASN1_ADB_END(PKCS7, 0, type, 0, &p7default_tt, NULL);
79 79
80ASN1_NDEF_SEQUENCE(PKCS7) = { 80/* PKCS#7 streaming support */
81static int pk7_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
82 void *exarg)
83{
84 ASN1_STREAM_ARG *sarg = exarg;
85 PKCS7 **pp7 = (PKCS7 **)pval;
86
87 switch(operation)
88 {
89
90 case ASN1_OP_STREAM_PRE:
91 if (PKCS7_stream(&sarg->boundary, *pp7) <= 0)
92 return 0;
93 case ASN1_OP_DETACHED_PRE:
94 sarg->ndef_bio = PKCS7_dataInit(*pp7, sarg->out);
95 if (!sarg->ndef_bio)
96 return 0;
97 break;
98
99 case ASN1_OP_STREAM_POST:
100 case ASN1_OP_DETACHED_POST:
101 if (PKCS7_dataFinal(*pp7, sarg->ndef_bio) <= 0)
102 return 0;
103 break;
104
105 }
106 return 1;
107}
108
109ASN1_NDEF_SEQUENCE_cb(PKCS7, pk7_cb) = {
81 ASN1_SIMPLE(PKCS7, type, ASN1_OBJECT), 110 ASN1_SIMPLE(PKCS7, type, ASN1_OBJECT),
82 ASN1_ADB_OBJECT(PKCS7) 111 ASN1_ADB_OBJECT(PKCS7)
83}ASN1_NDEF_SEQUENCE_END(PKCS7) 112}ASN1_NDEF_SEQUENCE_END_cb(PKCS7, PKCS7)
84 113
85IMPLEMENT_ASN1_FUNCTIONS(PKCS7) 114IMPLEMENT_ASN1_FUNCTIONS(PKCS7)
86IMPLEMENT_ASN1_NDEF_FUNCTION(PKCS7) 115IMPLEMENT_ASN1_NDEF_FUNCTION(PKCS7)
@@ -98,7 +127,8 @@ ASN1_NDEF_SEQUENCE(PKCS7_SIGNED) = {
98IMPLEMENT_ASN1_FUNCTIONS(PKCS7_SIGNED) 127IMPLEMENT_ASN1_FUNCTIONS(PKCS7_SIGNED)
99 128
100/* Minor tweak to operation: free up EVP_PKEY */ 129/* Minor tweak to operation: free up EVP_PKEY */
101static int si_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 130static int si_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
131 void *exarg)
102{ 132{
103 if(operation == ASN1_OP_FREE_POST) { 133 if(operation == ASN1_OP_FREE_POST) {
104 PKCS7_SIGNER_INFO *si = (PKCS7_SIGNER_INFO *)*pval; 134 PKCS7_SIGNER_INFO *si = (PKCS7_SIGNER_INFO *)*pval;
@@ -140,7 +170,8 @@ ASN1_NDEF_SEQUENCE(PKCS7_ENVELOPE) = {
140IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ENVELOPE) 170IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ENVELOPE)
141 171
142/* Minor tweak to operation: free up X509 */ 172/* Minor tweak to operation: free up X509 */
143static int ri_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 173static int ri_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
174 void *exarg)
144{ 175{
145 if(operation == ASN1_OP_FREE_POST) { 176 if(operation == ASN1_OP_FREE_POST) {
146 PKCS7_RECIP_INFO *ri = (PKCS7_RECIP_INFO *)*pval; 177 PKCS7_RECIP_INFO *ri = (PKCS7_RECIP_INFO *)*pval;
@@ -161,7 +192,7 @@ IMPLEMENT_ASN1_FUNCTIONS(PKCS7_RECIP_INFO)
161ASN1_NDEF_SEQUENCE(PKCS7_ENC_CONTENT) = { 192ASN1_NDEF_SEQUENCE(PKCS7_ENC_CONTENT) = {
162 ASN1_SIMPLE(PKCS7_ENC_CONTENT, content_type, ASN1_OBJECT), 193 ASN1_SIMPLE(PKCS7_ENC_CONTENT, content_type, ASN1_OBJECT),
163 ASN1_SIMPLE(PKCS7_ENC_CONTENT, algorithm, X509_ALGOR), 194 ASN1_SIMPLE(PKCS7_ENC_CONTENT, algorithm, X509_ALGOR),
164 ASN1_IMP_OPT(PKCS7_ENC_CONTENT, enc_data, ASN1_OCTET_STRING, 0) 195 ASN1_IMP_OPT(PKCS7_ENC_CONTENT, enc_data, ASN1_OCTET_STRING_NDEF, 0)
165} ASN1_NDEF_SEQUENCE_END(PKCS7_ENC_CONTENT) 196} ASN1_NDEF_SEQUENCE_END(PKCS7_ENC_CONTENT)
166 197
167IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT) 198IMPLEMENT_ASN1_FUNCTIONS(PKCS7_ENC_CONTENT)
@@ -212,3 +243,5 @@ ASN1_ITEM_TEMPLATE(PKCS7_ATTR_VERIFY) =
212 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_IMPTAG | ASN1_TFLG_UNIVERSAL, 243 ASN1_EX_TEMPLATE_TYPE(ASN1_TFLG_SEQUENCE_OF | ASN1_TFLG_IMPTAG | ASN1_TFLG_UNIVERSAL,
213 V_ASN1_SET, PKCS7_ATTRIBUTES, X509_ATTRIBUTE) 244 V_ASN1_SET, PKCS7_ATTRIBUTES, X509_ATTRIBUTE)
214ASN1_ITEM_TEMPLATE_END(PKCS7_ATTR_VERIFY) 245ASN1_ITEM_TEMPLATE_END(PKCS7_ATTR_VERIFY)
246
247IMPLEMENT_ASN1_PRINT_FUNCTION(PKCS7)
diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_attr.c b/src/lib/libssl/src/crypto/pkcs7/pk7_attr.c
index d549717169..a97db51210 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pk7_attr.c
+++ b/src/lib/libssl/src/crypto/pkcs7/pk7_attr.c
@@ -60,6 +60,7 @@
60#include <stdlib.h> 60#include <stdlib.h>
61#include <openssl/bio.h> 61#include <openssl/bio.h>
62#include <openssl/asn1.h> 62#include <openssl/asn1.h>
63#include <openssl/asn1t.h>
63#include <openssl/pem.h> 64#include <openssl/pem.h>
64#include <openssl/pkcs7.h> 65#include <openssl/pkcs7.h>
65#include <openssl/x509.h> 66#include <openssl/x509.h>
@@ -68,27 +69,12 @@
68int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, STACK_OF(X509_ALGOR) *cap) 69int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si, STACK_OF(X509_ALGOR) *cap)
69{ 70{
70 ASN1_STRING *seq; 71 ASN1_STRING *seq;
71 unsigned char *p, *pp;
72 int len;
73 len=i2d_ASN1_SET_OF_X509_ALGOR(cap,NULL,i2d_X509_ALGOR,
74 V_ASN1_SEQUENCE,V_ASN1_UNIVERSAL,
75 IS_SEQUENCE);
76 if(!(pp=(unsigned char *)OPENSSL_malloc(len))) {
77 PKCS7err(PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP,ERR_R_MALLOC_FAILURE);
78 return 0;
79 }
80 p=pp;
81 i2d_ASN1_SET_OF_X509_ALGOR(cap,&p,i2d_X509_ALGOR, V_ASN1_SEQUENCE,
82 V_ASN1_UNIVERSAL, IS_SEQUENCE);
83 if(!(seq = ASN1_STRING_new())) { 72 if(!(seq = ASN1_STRING_new())) {
84 PKCS7err(PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP,ERR_R_MALLOC_FAILURE); 73 PKCS7err(PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP,ERR_R_MALLOC_FAILURE);
85 return 0; 74 return 0;
86 } 75 }
87 if(!ASN1_STRING_set (seq, pp, len)) { 76 seq->length = ASN1_item_i2d((ASN1_VALUE *)cap,&seq->data,
88 PKCS7err(PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP,ERR_R_MALLOC_FAILURE); 77 ASN1_ITEM_rptr(X509_ALGORS));
89 return 0;
90 }
91 OPENSSL_free (pp);
92 return PKCS7_add_signed_attribute(si, NID_SMIMECapabilities, 78 return PKCS7_add_signed_attribute(si, NID_SMIMECapabilities,
93 V_ASN1_SEQUENCE, seq); 79 V_ASN1_SEQUENCE, seq);
94} 80}
@@ -102,10 +88,9 @@ STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si)
102 if (!cap || (cap->type != V_ASN1_SEQUENCE)) 88 if (!cap || (cap->type != V_ASN1_SEQUENCE))
103 return NULL; 89 return NULL;
104 p = cap->value.sequence->data; 90 p = cap->value.sequence->data;
105 return d2i_ASN1_SET_OF_X509_ALGOR(NULL, &p, 91 return (STACK_OF(X509_ALGOR) *)
106 cap->value.sequence->length, 92 ASN1_item_d2i(NULL, &p, cap->value.sequence->length,
107 d2i_X509_ALGOR, X509_ALGOR_free, 93 ASN1_ITEM_rptr(X509_ALGORS));
108 V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL);
109 } 94 }
110 95
111/* Basic smime-capabilities OID and optional integer arg */ 96/* Basic smime-capabilities OID and optional integer arg */
@@ -139,3 +124,42 @@ int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg)
139 sk_X509_ALGOR_push (sk, alg); 124 sk_X509_ALGOR_push (sk, alg);
140 return 1; 125 return 1;
141} 126}
127
128int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid)
129 {
130 if (PKCS7_get_signed_attribute(si, NID_pkcs9_contentType))
131 return 0;
132 if (!coid)
133 coid = OBJ_nid2obj(NID_pkcs7_data);
134 return PKCS7_add_signed_attribute(si, NID_pkcs9_contentType,
135 V_ASN1_OBJECT, coid);
136 }
137
138int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t)
139 {
140 if (!t && !(t=X509_gmtime_adj(NULL,0)))
141 {
142 PKCS7err(PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME,
143 ERR_R_MALLOC_FAILURE);
144 return 0;
145 }
146 return PKCS7_add_signed_attribute(si, NID_pkcs9_signingTime,
147 V_ASN1_UTCTIME, t);
148 }
149
150int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si,
151 const unsigned char *md, int mdlen)
152 {
153 ASN1_OCTET_STRING *os;
154 os = ASN1_OCTET_STRING_new();
155 if (!os)
156 return 0;
157 if (!ASN1_STRING_set(os, md, mdlen)
158 || !PKCS7_add_signed_attribute(si, NID_pkcs9_messageDigest,
159 V_ASN1_OCTET_STRING, os))
160 {
161 ASN1_OCTET_STRING_free(os);
162 return 0;
163 }
164 return 1;
165 }
diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c b/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c
index a03d7ebedf..451de84489 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c
+++ b/src/lib/libssl/src/crypto/pkcs7/pk7_doit.c
@@ -138,6 +138,121 @@ static int PKCS7_bio_add_digest(BIO **pbio, X509_ALGOR *alg)
138 138
139 } 139 }
140 140
141static int pkcs7_encode_rinfo(PKCS7_RECIP_INFO *ri,
142 unsigned char *key, int keylen)
143 {
144 EVP_PKEY_CTX *pctx = NULL;
145 EVP_PKEY *pkey = NULL;
146 unsigned char *ek = NULL;
147 int ret = 0;
148 size_t eklen;
149
150 pkey = X509_get_pubkey(ri->cert);
151
152 if (!pkey)
153 return 0;
154
155 pctx = EVP_PKEY_CTX_new(pkey, NULL);
156 if (!pctx)
157 return 0;
158
159 if (EVP_PKEY_encrypt_init(pctx) <= 0)
160 goto err;
161
162 if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_ENCRYPT,
163 EVP_PKEY_CTRL_PKCS7_ENCRYPT, 0, ri) <= 0)
164 {
165 PKCS7err(PKCS7_F_PKCS7_ENCODE_RINFO, PKCS7_R_CTRL_ERROR);
166 goto err;
167 }
168
169 if (EVP_PKEY_encrypt(pctx, NULL, &eklen, key, keylen) <= 0)
170 goto err;
171
172 ek = OPENSSL_malloc(eklen);
173
174 if (ek == NULL)
175 {
176 PKCS7err(PKCS7_F_PKCS7_ENCODE_RINFO, ERR_R_MALLOC_FAILURE);
177 goto err;
178 }
179
180 if (EVP_PKEY_encrypt(pctx, ek, &eklen, key, keylen) <= 0)
181 goto err;
182
183 ASN1_STRING_set0(ri->enc_key, ek, eklen);
184 ek = NULL;
185
186 ret = 1;
187
188 err:
189 if (pkey)
190 EVP_PKEY_free(pkey);
191 if (pctx)
192 EVP_PKEY_CTX_free(pctx);
193 if (ek)
194 OPENSSL_free(ek);
195 return ret;
196
197 }
198
199
200static int pkcs7_decrypt_rinfo(unsigned char **pek, int *peklen,
201 PKCS7_RECIP_INFO *ri, EVP_PKEY *pkey)
202 {
203 EVP_PKEY_CTX *pctx = NULL;
204 unsigned char *ek = NULL;
205 size_t eklen;
206
207 int ret = 0;
208
209 pctx = EVP_PKEY_CTX_new(pkey, NULL);
210 if (!pctx)
211 return 0;
212
213 if (EVP_PKEY_decrypt_init(pctx) <= 0)
214 goto err;
215
216 if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_DECRYPT,
217 EVP_PKEY_CTRL_PKCS7_DECRYPT, 0, ri) <= 0)
218 {
219 PKCS7err(PKCS7_F_PKCS7_DECRYPT_RINFO, PKCS7_R_CTRL_ERROR);
220 goto err;
221 }
222
223 if (EVP_PKEY_decrypt(pctx, NULL, &eklen,
224 ri->enc_key->data, ri->enc_key->length) <= 0)
225 goto err;
226
227 ek = OPENSSL_malloc(eklen);
228
229 if (ek == NULL)
230 {
231 PKCS7err(PKCS7_F_PKCS7_DECRYPT_RINFO, ERR_R_MALLOC_FAILURE);
232 goto err;
233 }
234
235 if (EVP_PKEY_decrypt(pctx, ek, &eklen,
236 ri->enc_key->data, ri->enc_key->length) <= 0)
237 {
238 PKCS7err(PKCS7_F_PKCS7_DECRYPT_RINFO, ERR_R_EVP_LIB);
239 goto err;
240 }
241
242 ret = 1;
243
244 *pek = ek;
245 *peklen = eklen;
246
247 err:
248 if (pctx)
249 EVP_PKEY_CTX_free(pctx);
250 if (!ret && ek)
251 OPENSSL_free(ek);
252
253 return ret;
254 }
255
141BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio) 256BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
142 { 257 {
143 int i; 258 int i;
@@ -148,7 +263,6 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
148 STACK_OF(PKCS7_RECIP_INFO) *rsk=NULL; 263 STACK_OF(PKCS7_RECIP_INFO) *rsk=NULL;
149 X509_ALGOR *xalg=NULL; 264 X509_ALGOR *xalg=NULL;
150 PKCS7_RECIP_INFO *ri=NULL; 265 PKCS7_RECIP_INFO *ri=NULL;
151 EVP_PKEY *pkey;
152 ASN1_OCTET_STRING *os=NULL; 266 ASN1_OCTET_STRING *os=NULL;
153 267
154 i=OBJ_obj2nid(p7->type); 268 i=OBJ_obj2nid(p7->type);
@@ -187,6 +301,8 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
187 xa = p7->d.digest->md; 301 xa = p7->d.digest->md;
188 os = PKCS7_get_octet_string(p7->d.digest->contents); 302 os = PKCS7_get_octet_string(p7->d.digest->contents);
189 break; 303 break;
304 case NID_pkcs7_data:
305 break;
190 default: 306 default:
191 PKCS7err(PKCS7_F_PKCS7_DATAINIT,PKCS7_R_UNSUPPORTED_CONTENT_TYPE); 307 PKCS7err(PKCS7_F_PKCS7_DATAINIT,PKCS7_R_UNSUPPORTED_CONTENT_TYPE);
192 goto err; 308 goto err;
@@ -204,8 +320,6 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
204 unsigned char key[EVP_MAX_KEY_LENGTH]; 320 unsigned char key[EVP_MAX_KEY_LENGTH];
205 unsigned char iv[EVP_MAX_IV_LENGTH]; 321 unsigned char iv[EVP_MAX_IV_LENGTH];
206 int keylen,ivlen; 322 int keylen,ivlen;
207 int jj,max;
208 unsigned char *tmp;
209 EVP_CIPHER_CTX *ctx; 323 EVP_CIPHER_CTX *ctx;
210 324
211 if ((btmp=BIO_new(BIO_f_cipher())) == NULL) 325 if ((btmp=BIO_new(BIO_f_cipher())) == NULL)
@@ -234,52 +348,16 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
234 goto err; 348 goto err;
235 } 349 }
236 if(EVP_CIPHER_param_to_asn1(ctx, xalg->parameter) < 0) 350 if(EVP_CIPHER_param_to_asn1(ctx, xalg->parameter) < 0)
237 goto err; 351 goto err;
238 } 352 }
239 353
240 /* Lets do the pub key stuff :-) */ 354 /* Lets do the pub key stuff :-) */
241 max=0;
242 for (i=0; i<sk_PKCS7_RECIP_INFO_num(rsk); i++) 355 for (i=0; i<sk_PKCS7_RECIP_INFO_num(rsk); i++)
243 { 356 {
244 ri=sk_PKCS7_RECIP_INFO_value(rsk,i); 357 ri=sk_PKCS7_RECIP_INFO_value(rsk,i);
245 if (ri->cert == NULL) 358 if (pkcs7_encode_rinfo(ri, key, keylen) <= 0)
246 {
247 PKCS7err(PKCS7_F_PKCS7_DATAINIT,PKCS7_R_MISSING_CERIPEND_INFO);
248 goto err;
249 }
250 if ((pkey=X509_get_pubkey(ri->cert)) == NULL)
251 goto err;
252 jj=EVP_PKEY_size(pkey);
253 EVP_PKEY_free(pkey);
254 if (max < jj) max=jj;
255 }
256 if ((tmp=(unsigned char *)OPENSSL_malloc(max)) == NULL)
257 {
258 PKCS7err(PKCS7_F_PKCS7_DATAINIT,ERR_R_MALLOC_FAILURE);
259 goto err;
260 }
261 for (i=0; i<sk_PKCS7_RECIP_INFO_num(rsk); i++)
262 {
263 ri=sk_PKCS7_RECIP_INFO_value(rsk,i);
264 if ((pkey=X509_get_pubkey(ri->cert)) == NULL)
265 goto err;
266 jj=EVP_PKEY_encrypt(tmp,key,keylen,pkey);
267 EVP_PKEY_free(pkey);
268 if (jj <= 0)
269 {
270 PKCS7err(PKCS7_F_PKCS7_DATAINIT,ERR_R_EVP_LIB);
271 OPENSSL_free(tmp);
272 goto err; 359 goto err;
273 }
274 if (!M_ASN1_OCTET_STRING_set(ri->enc_key,tmp,jj))
275 {
276 PKCS7err(PKCS7_F_PKCS7_DATAINIT,
277 ERR_R_MALLOC_FAILURE);
278 OPENSSL_free(tmp);
279 goto err;
280 }
281 } 360 }
282 OPENSSL_free(tmp);
283 OPENSSL_cleanse(key, keylen); 361 OPENSSL_cleanse(key, keylen);
284 362
285 if (out == NULL) 363 if (out == NULL)
@@ -303,7 +381,10 @@ BIO *PKCS7_dataInit(PKCS7 *p7, BIO *bio)
303 BIO_set_mem_eof_return(bio,0); 381 BIO_set_mem_eof_return(bio,0);
304 } 382 }
305 } 383 }
306 BIO_push(out,bio); 384 if (out)
385 BIO_push(out,bio);
386 else
387 out = bio;
307 bio=NULL; 388 bio=NULL;
308 if (0) 389 if (0)
309 { 390 {
@@ -333,7 +414,6 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
333 { 414 {
334 int i,j; 415 int i,j;
335 BIO *out=NULL,*btmp=NULL,*etmp=NULL,*bio=NULL; 416 BIO *out=NULL,*btmp=NULL,*etmp=NULL,*bio=NULL;
336 unsigned char *tmp=NULL;
337 X509_ALGOR *xa; 417 X509_ALGOR *xa;
338 ASN1_OCTET_STRING *data_body=NULL; 418 ASN1_OCTET_STRING *data_body=NULL;
339 const EVP_MD *evp_md; 419 const EVP_MD *evp_md;
@@ -423,7 +503,8 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
423 int max; 503 int max;
424 X509_OBJECT ret; 504 X509_OBJECT ret;
425#endif 505#endif
426 int jj; 506 unsigned char *ek = NULL;
507 int eklen;
427 508
428 if ((etmp=BIO_new(BIO_f_cipher())) == NULL) 509 if ((etmp=BIO_new(BIO_f_cipher())) == NULL)
429 { 510 {
@@ -438,26 +519,21 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
438 * (if any) 519 * (if any)
439 */ 520 */
440 521
441 if (pcert) { 522 if (pcert)
442 for (i=0; i<sk_PKCS7_RECIP_INFO_num(rsk); i++) { 523 {
524 for (i=0; i<sk_PKCS7_RECIP_INFO_num(rsk); i++)
525 {
443 ri=sk_PKCS7_RECIP_INFO_value(rsk,i); 526 ri=sk_PKCS7_RECIP_INFO_value(rsk,i);
444 if (!pkcs7_cmp_ri(ri, pcert)) 527 if (!pkcs7_cmp_ri(ri, pcert))
445 break; 528 break;
446 ri=NULL; 529 ri=NULL;
447 } 530 }
448 if (ri == NULL) { 531 if (ri == NULL)
532 {
449 PKCS7err(PKCS7_F_PKCS7_DATADECODE, 533 PKCS7err(PKCS7_F_PKCS7_DATADECODE,
450 PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE); 534 PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE);
451 goto err; 535 goto err;
452 } 536 }
453 }
454
455 jj=EVP_PKEY_size(pkey);
456 tmp=(unsigned char *)OPENSSL_malloc(jj+10);
457 if (tmp == NULL)
458 {
459 PKCS7err(PKCS7_F_PKCS7_DATADECODE,ERR_R_MALLOC_FAILURE);
460 goto err;
461 } 537 }
462 538
463 /* If we haven't got a certificate try each ri in turn */ 539 /* If we haven't got a certificate try each ri in turn */
@@ -467,11 +543,8 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
467 for (i=0; i<sk_PKCS7_RECIP_INFO_num(rsk); i++) 543 for (i=0; i<sk_PKCS7_RECIP_INFO_num(rsk); i++)
468 { 544 {
469 ri=sk_PKCS7_RECIP_INFO_value(rsk,i); 545 ri=sk_PKCS7_RECIP_INFO_value(rsk,i);
470 jj=EVP_PKEY_decrypt(tmp, 546 if (pkcs7_decrypt_rinfo(&ek, &eklen,
471 M_ASN1_STRING_data(ri->enc_key), 547 ri, pkey) > 0)
472 M_ASN1_STRING_length(ri->enc_key),
473 pkey);
474 if (jj > 0)
475 break; 548 break;
476 ERR_clear_error(); 549 ERR_clear_error();
477 ri = NULL; 550 ri = NULL;
@@ -485,15 +558,8 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
485 } 558 }
486 else 559 else
487 { 560 {
488 jj=EVP_PKEY_decrypt(tmp, 561 if (pkcs7_decrypt_rinfo(&ek, &eklen, ri, pkey) <= 0)
489 M_ASN1_STRING_data(ri->enc_key),
490 M_ASN1_STRING_length(ri->enc_key), pkey);
491 if (jj <= 0)
492 {
493 PKCS7err(PKCS7_F_PKCS7_DATADECODE,
494 ERR_R_EVP_LIB);
495 goto err; 562 goto err;
496 }
497 } 563 }
498 564
499 evp_ctx=NULL; 565 evp_ctx=NULL;
@@ -503,22 +569,26 @@ BIO *PKCS7_dataDecode(PKCS7 *p7, EVP_PKEY *pkey, BIO *in_bio, X509 *pcert)
503 if (EVP_CIPHER_asn1_to_param(evp_ctx,enc_alg->parameter) < 0) 569 if (EVP_CIPHER_asn1_to_param(evp_ctx,enc_alg->parameter) < 0)
504 goto err; 570 goto err;
505 571
506 if (jj != EVP_CIPHER_CTX_key_length(evp_ctx)) { 572 if (eklen != EVP_CIPHER_CTX_key_length(evp_ctx)) {
507 /* Some S/MIME clients don't use the same key 573 /* Some S/MIME clients don't use the same key
508 * and effective key length. The key length is 574 * and effective key length. The key length is
509 * determined by the size of the decrypted RSA key. 575 * determined by the size of the decrypted RSA key.
510 */ 576 */
511 if(!EVP_CIPHER_CTX_set_key_length(evp_ctx, jj)) 577 if(!EVP_CIPHER_CTX_set_key_length(evp_ctx, eklen))
512 { 578 {
513 PKCS7err(PKCS7_F_PKCS7_DATADECODE, 579 PKCS7err(PKCS7_F_PKCS7_DATADECODE,
514 PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH); 580 PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH);
515 goto err; 581 goto err;
516 } 582 }
517 } 583 }
518 if (EVP_CipherInit_ex(evp_ctx,NULL,NULL,tmp,NULL,0) <= 0) 584 if (EVP_CipherInit_ex(evp_ctx,NULL,NULL,ek,NULL,0) <= 0)
519 goto err; 585 goto err;
520 586
521 OPENSSL_cleanse(tmp,jj); 587 if (ek)
588 {
589 OPENSSL_cleanse(ek,eklen);
590 OPENSSL_free(ek);
591 }
522 592
523 if (out == NULL) 593 if (out == NULL)
524 out=etmp; 594 out=etmp;
@@ -566,8 +636,6 @@ err:
566 if (bio != NULL) BIO_free_all(bio); 636 if (bio != NULL) BIO_free_all(bio);
567 out=NULL; 637 out=NULL;
568 } 638 }
569 if (tmp != NULL)
570 OPENSSL_free(tmp);
571 return(out); 639 return(out);
572 } 640 }
573 641
@@ -594,13 +662,43 @@ static BIO *PKCS7_find_digest(EVP_MD_CTX **pmd, BIO *bio, int nid)
594 return NULL; 662 return NULL;
595 } 663 }
596 664
665static int do_pkcs7_signed_attrib(PKCS7_SIGNER_INFO *si, EVP_MD_CTX *mctx)
666 {
667 unsigned char md_data[EVP_MAX_MD_SIZE];
668 unsigned int md_len;
669
670 /* Add signing time if not already present */
671 if (!PKCS7_get_signed_attribute(si, NID_pkcs9_signingTime))
672 {
673 if (!PKCS7_add0_attrib_signing_time(si, NULL))
674 {
675 PKCS7err(PKCS7_F_DO_PKCS7_SIGNED_ATTRIB,
676 ERR_R_MALLOC_FAILURE);
677 return 0;
678 }
679 }
680
681 /* Add digest */
682 EVP_DigestFinal_ex(mctx, md_data,&md_len);
683 if (!PKCS7_add1_attrib_digest(si, md_data, md_len))
684 {
685 PKCS7err(PKCS7_F_DO_PKCS7_SIGNED_ATTRIB, ERR_R_MALLOC_FAILURE);
686 return 0;
687 }
688
689 /* Now sign the attributes */
690 if (!PKCS7_SIGNER_INFO_sign(si))
691 return 0;
692
693 return 1;
694 }
695
696
597int PKCS7_dataFinal(PKCS7 *p7, BIO *bio) 697int PKCS7_dataFinal(PKCS7 *p7, BIO *bio)
598 { 698 {
599 int ret=0; 699 int ret=0;
600 int i,j; 700 int i,j;
601 BIO *btmp; 701 BIO *btmp;
602 BUF_MEM *buf_mem=NULL;
603 BUF_MEM *buf=NULL;
604 PKCS7_SIGNER_INFO *si; 702 PKCS7_SIGNER_INFO *si;
605 EVP_MD_CTX *mdc,ctx_tmp; 703 EVP_MD_CTX *mdc,ctx_tmp;
606 STACK_OF(X509_ATTRIBUTE) *sk; 704 STACK_OF(X509_ATTRIBUTE) *sk;
@@ -613,24 +711,37 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio)
613 711
614 switch (i) 712 switch (i)
615 { 713 {
714 case NID_pkcs7_data:
715 os = p7->d.data;
716 break;
616 case NID_pkcs7_signedAndEnveloped: 717 case NID_pkcs7_signedAndEnveloped:
617 /* XXXXXXXXXXXXXXXX */ 718 /* XXXXXXXXXXXXXXXX */
618 si_sk=p7->d.signed_and_enveloped->signer_info; 719 si_sk=p7->d.signed_and_enveloped->signer_info;
619 if (!(os=M_ASN1_OCTET_STRING_new())) 720 os = p7->d.signed_and_enveloped->enc_data->enc_data;
721 if (!os)
620 { 722 {
621 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,ERR_R_MALLOC_FAILURE); 723 os=M_ASN1_OCTET_STRING_new();
622 goto err; 724 if (!os)
725 {
726 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,ERR_R_MALLOC_FAILURE);
727 goto err;
728 }
729 p7->d.signed_and_enveloped->enc_data->enc_data=os;
623 } 730 }
624 p7->d.signed_and_enveloped->enc_data->enc_data=os;
625 break; 731 break;
626 case NID_pkcs7_enveloped: 732 case NID_pkcs7_enveloped:
627 /* XXXXXXXXXXXXXXXX */ 733 /* XXXXXXXXXXXXXXXX */
628 if (!(os=M_ASN1_OCTET_STRING_new())) 734 os = p7->d.enveloped->enc_data->enc_data;
735 if (!os)
629 { 736 {
630 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,ERR_R_MALLOC_FAILURE); 737 os=M_ASN1_OCTET_STRING_new();
631 goto err; 738 if (!os)
739 {
740 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,ERR_R_MALLOC_FAILURE);
741 goto err;
742 }
743 p7->d.enveloped->enc_data->enc_data=os;
632 } 744 }
633 p7->d.enveloped->enc_data->enc_data=os;
634 break; 745 break;
635 case NID_pkcs7_signed: 746 case NID_pkcs7_signed:
636 si_sk=p7->d.sign->signer_info; 747 si_sk=p7->d.sign->signer_info;
@@ -652,21 +763,20 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio)
652 } 763 }
653 break; 764 break;
654 765
766 default:
767 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,PKCS7_R_UNSUPPORTED_CONTENT_TYPE);
768 goto err;
655 } 769 }
656 770
657 if (si_sk != NULL) 771 if (si_sk != NULL)
658 { 772 {
659 if ((buf=BUF_MEM_new()) == NULL)
660 {
661 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,ERR_R_BIO_LIB);
662 goto err;
663 }
664 for (i=0; i<sk_PKCS7_SIGNER_INFO_num(si_sk); i++) 773 for (i=0; i<sk_PKCS7_SIGNER_INFO_num(si_sk); i++)
665 { 774 {
666 si=sk_PKCS7_SIGNER_INFO_value(si_sk,i); 775 si=sk_PKCS7_SIGNER_INFO_value(si_sk,i);
667 if (si->pkey == NULL) continue; 776 if (si->pkey == NULL)
777 continue;
668 778
669 j=OBJ_obj2nid(si->digest_alg->algorithm); 779 j = OBJ_obj2nid(si->digest_alg->algorithm);
670 780
671 btmp=bio; 781 btmp=bio;
672 782
@@ -678,97 +788,33 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio)
678 /* We now have the EVP_MD_CTX, lets do the 788 /* We now have the EVP_MD_CTX, lets do the
679 * signing. */ 789 * signing. */
680 EVP_MD_CTX_copy_ex(&ctx_tmp,mdc); 790 EVP_MD_CTX_copy_ex(&ctx_tmp,mdc);
681 if (!BUF_MEM_grow_clean(buf,EVP_PKEY_size(si->pkey)))
682 {
683 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,ERR_R_BIO_LIB);
684 goto err;
685 }
686 791
687 sk=si->auth_attr; 792 sk=si->auth_attr;
688 793
689 /* If there are attributes, we add the digest 794 /* If there are attributes, we add the digest
690 * attribute and only sign the attributes */ 795 * attribute and only sign the attributes */
691 if ((sk != NULL) && (sk_X509_ATTRIBUTE_num(sk) != 0)) 796 if (sk_X509_ATTRIBUTE_num(sk) > 0)
692 { 797 {
693 unsigned char md_data[EVP_MAX_MD_SIZE], *abuf=NULL; 798 if (!do_pkcs7_signed_attrib(si, &ctx_tmp))
694 unsigned int md_len, alen;
695 ASN1_OCTET_STRING *digest;
696 ASN1_UTCTIME *sign_time;
697 const EVP_MD *md_tmp;
698
699 /* Add signing time if not already present */
700 if (!PKCS7_get_signed_attribute(si,
701 NID_pkcs9_signingTime))
702 {
703 if (!(sign_time=X509_gmtime_adj(NULL,0)))
704 {
705 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,
706 ERR_R_MALLOC_FAILURE);
707 goto err;
708 }
709 if (!PKCS7_add_signed_attribute(si,
710 NID_pkcs9_signingTime,
711 V_ASN1_UTCTIME,sign_time))
712 {
713 M_ASN1_UTCTIME_free(sign_time);
714 goto err;
715 }
716 }
717
718 /* Add digest */
719 md_tmp=EVP_MD_CTX_md(&ctx_tmp);
720 EVP_DigestFinal_ex(&ctx_tmp,md_data,&md_len);
721 if (!(digest=M_ASN1_OCTET_STRING_new()))
722 {
723 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,
724 ERR_R_MALLOC_FAILURE);
725 goto err; 799 goto err;
726 } 800 }
727 if (!M_ASN1_OCTET_STRING_set(digest,md_data, 801 else
728 md_len)) 802 {
729 { 803 unsigned char *abuf = NULL;
730 PKCS7err(PKCS7_F_PKCS7_DATAFINAL, 804 unsigned int abuflen;
731 ERR_R_MALLOC_FAILURE); 805 abuflen = EVP_PKEY_size(si->pkey);
732 M_ASN1_OCTET_STRING_free(digest); 806 abuf = OPENSSL_malloc(abuflen);
807 if (!abuf)
733 goto err; 808 goto err;
734 } 809
735 if (!PKCS7_add_signed_attribute(si, 810 if (!EVP_SignFinal(&ctx_tmp, abuf, &abuflen,
736 NID_pkcs9_messageDigest, 811 si->pkey))
737 V_ASN1_OCTET_STRING,digest))
738 { 812 {
739 M_ASN1_OCTET_STRING_free(digest); 813 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,
814 ERR_R_EVP_LIB);
740 goto err; 815 goto err;
741 } 816 }
742 817 ASN1_STRING_set0(si->enc_digest, abuf, abuflen);
743 /* Now sign the attributes */
744 EVP_SignInit_ex(&ctx_tmp,md_tmp,NULL);
745 alen = ASN1_item_i2d((ASN1_VALUE *)sk,&abuf,
746 ASN1_ITEM_rptr(PKCS7_ATTR_SIGN));
747 if(!abuf) goto err;
748 EVP_SignUpdate(&ctx_tmp,abuf,alen);
749 OPENSSL_free(abuf);
750 }
751
752#ifndef OPENSSL_NO_DSA
753 if (si->pkey->type == EVP_PKEY_DSA)
754 ctx_tmp.digest=EVP_dss1();
755#endif
756#ifndef OPENSSL_NO_ECDSA
757 if (si->pkey->type == EVP_PKEY_EC)
758 ctx_tmp.digest=EVP_ecdsa();
759#endif
760
761 if (!EVP_SignFinal(&ctx_tmp,(unsigned char *)buf->data,
762 (unsigned int *)&buf->length,si->pkey))
763 {
764 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,ERR_R_EVP_LIB);
765 goto err;
766 }
767 if (!ASN1_STRING_set(si->enc_digest,
768 (unsigned char *)buf->data,buf->length))
769 {
770 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,ERR_R_ASN1_LIB);
771 goto err;
772 } 818 }
773 } 819 }
774 } 820 }
@@ -783,34 +829,90 @@ int PKCS7_dataFinal(PKCS7 *p7, BIO *bio)
783 M_ASN1_OCTET_STRING_set(p7->d.digest->digest, md_data, md_len); 829 M_ASN1_OCTET_STRING_set(p7->d.digest->digest, md_data, md_len);
784 } 830 }
785 831
786 if (!PKCS7_is_detached(p7)) 832 if (!PKCS7_is_detached(p7) && !(os->flags & ASN1_STRING_FLAG_NDEF))
787 { 833 {
834 char *cont;
835 long contlen;
788 btmp=BIO_find_type(bio,BIO_TYPE_MEM); 836 btmp=BIO_find_type(bio,BIO_TYPE_MEM);
789 if (btmp == NULL) 837 if (btmp == NULL)
790 { 838 {
791 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,PKCS7_R_UNABLE_TO_FIND_MEM_BIO); 839 PKCS7err(PKCS7_F_PKCS7_DATAFINAL,PKCS7_R_UNABLE_TO_FIND_MEM_BIO);
792 goto err; 840 goto err;
793 } 841 }
794 BIO_get_mem_ptr(btmp,&buf_mem); 842 contlen = BIO_get_mem_data(btmp, &cont);
795 /* Mark the BIO read only then we can use its copy of the data 843 /* Mark the BIO read only then we can use its copy of the data
796 * instead of making an extra copy. 844 * instead of making an extra copy.
797 */ 845 */
798 BIO_set_flags(btmp, BIO_FLAGS_MEM_RDONLY); 846 BIO_set_flags(btmp, BIO_FLAGS_MEM_RDONLY);
799 BIO_set_mem_eof_return(btmp, 0); 847 BIO_set_mem_eof_return(btmp, 0);
800 os->data = (unsigned char *)buf_mem->data; 848 ASN1_STRING_set0(os, (unsigned char *)cont, contlen);
801 os->length = buf_mem->length;
802#if 0
803 M_ASN1_OCTET_STRING_set(os,
804 (unsigned char *)buf_mem->data,buf_mem->length);
805#endif
806 } 849 }
807 ret=1; 850 ret=1;
808err: 851err:
809 EVP_MD_CTX_cleanup(&ctx_tmp); 852 EVP_MD_CTX_cleanup(&ctx_tmp);
810 if (buf != NULL) BUF_MEM_free(buf);
811 return(ret); 853 return(ret);
812 } 854 }
813 855
856int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si)
857 {
858 EVP_MD_CTX mctx;
859 EVP_PKEY_CTX *pctx;
860 unsigned char *abuf = NULL;
861 int alen;
862 size_t siglen;
863 const EVP_MD *md = NULL;
864
865 md = EVP_get_digestbyobj(si->digest_alg->algorithm);
866 if (md == NULL)
867 return 0;
868
869 EVP_MD_CTX_init(&mctx);
870 if (EVP_DigestSignInit(&mctx, &pctx, md,NULL, si->pkey) <= 0)
871 goto err;
872
873 if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_SIGN,
874 EVP_PKEY_CTRL_PKCS7_SIGN, 0, si) <= 0)
875 {
876 PKCS7err(PKCS7_F_PKCS7_SIGNER_INFO_SIGN, PKCS7_R_CTRL_ERROR);
877 goto err;
878 }
879
880 alen = ASN1_item_i2d((ASN1_VALUE *)si->auth_attr,&abuf,
881 ASN1_ITEM_rptr(PKCS7_ATTR_SIGN));
882 if(!abuf)
883 goto err;
884 if (EVP_DigestSignUpdate(&mctx,abuf,alen) <= 0)
885 goto err;
886 OPENSSL_free(abuf);
887 if (EVP_DigestSignFinal(&mctx, NULL, &siglen) <= 0)
888 goto err;
889 abuf = OPENSSL_malloc(siglen);
890 if(!abuf)
891 goto err;
892 if (EVP_DigestSignFinal(&mctx, abuf, &siglen) <= 0)
893 goto err;
894
895 if (EVP_PKEY_CTX_ctrl(pctx, -1, EVP_PKEY_OP_SIGN,
896 EVP_PKEY_CTRL_PKCS7_SIGN, 1, si) <= 0)
897 {
898 PKCS7err(PKCS7_F_PKCS7_SIGNER_INFO_SIGN, PKCS7_R_CTRL_ERROR);
899 goto err;
900 }
901
902 EVP_MD_CTX_cleanup(&mctx);
903
904 ASN1_STRING_set0(si->enc_digest, abuf, siglen);
905
906 return 1;
907
908 err:
909 if (abuf)
910 OPENSSL_free(abuf);
911 EVP_MD_CTX_cleanup(&mctx);
912 return 0;
913
914 }
915
814int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio, 916int PKCS7_dataVerify(X509_STORE *cert_store, X509_STORE_CTX *ctx, BIO *bio,
815 PKCS7 *p7, PKCS7_SIGNER_INFO *si) 917 PKCS7 *p7, PKCS7_SIGNER_INFO *si)
816 { 918 {
@@ -922,7 +1024,8 @@ int PKCS7_signatureVerify(BIO *bio, PKCS7 *p7, PKCS7_SIGNER_INFO *si,
922 if ((sk != NULL) && (sk_X509_ATTRIBUTE_num(sk) != 0)) 1024 if ((sk != NULL) && (sk_X509_ATTRIBUTE_num(sk) != 0))
923 { 1025 {
924 unsigned char md_dat[EVP_MAX_MD_SIZE], *abuf = NULL; 1026 unsigned char md_dat[EVP_MAX_MD_SIZE], *abuf = NULL;
925 unsigned int md_len, alen; 1027 unsigned int md_len;
1028 int alen;
926 ASN1_OCTET_STRING *message_digest; 1029 ASN1_OCTET_STRING *message_digest;
927 1030
928 EVP_DigestFinal_ex(&mdc_tmp,md_dat,&md_len); 1031 EVP_DigestFinal_ex(&mdc_tmp,md_dat,&md_len);
@@ -954,6 +1057,12 @@ for (ii=0; ii<md_len; ii++) printf("%02X",md_dat[ii]); printf(" calc\n");
954 1057
955 alen = ASN1_item_i2d((ASN1_VALUE *)sk, &abuf, 1058 alen = ASN1_item_i2d((ASN1_VALUE *)sk, &abuf,
956 ASN1_ITEM_rptr(PKCS7_ATTR_VERIFY)); 1059 ASN1_ITEM_rptr(PKCS7_ATTR_VERIFY));
1060 if (alen <= 0)
1061 {
1062 PKCS7err(PKCS7_F_PKCS7_SIGNATUREVERIFY,ERR_R_ASN1_LIB);
1063 ret = -1;
1064 goto err;
1065 }
957 EVP_VerifyUpdate(&mdc_tmp, abuf, alen); 1066 EVP_VerifyUpdate(&mdc_tmp, abuf, alen);
958 1067
959 OPENSSL_free(abuf); 1068 OPENSSL_free(abuf);
@@ -966,12 +1075,6 @@ for (ii=0; ii<md_len; ii++) printf("%02X",md_dat[ii]); printf(" calc\n");
966 ret = -1; 1075 ret = -1;
967 goto err; 1076 goto err;
968 } 1077 }
969#ifndef OPENSSL_NO_DSA
970 if(pkey->type == EVP_PKEY_DSA) mdc_tmp.digest=EVP_dss1();
971#endif
972#ifndef OPENSSL_NO_ECDSA
973 if (pkey->type == EVP_PKEY_EC) mdc_tmp.digest=EVP_ecdsa();
974#endif
975 1078
976 i=EVP_VerifyFinal(&mdc_tmp,os->data,os->length, pkey); 1079 i=EVP_VerifyFinal(&mdc_tmp,os->data,os->length, pkey);
977 EVP_PKEY_free(pkey); 1080 EVP_PKEY_free(pkey);
@@ -1107,8 +1210,9 @@ static int add_attribute(STACK_OF(X509_ATTRIBUTE) **sk, int nid, int atrtype,
1107 1210
1108 if (*sk == NULL) 1211 if (*sk == NULL)
1109 { 1212 {
1110 if (!(*sk = sk_X509_ATTRIBUTE_new_null())) 1213 *sk = sk_X509_ATTRIBUTE_new_null();
1111 return 0; 1214 if (*sk == NULL)
1215 return 0;
1112new_attrib: 1216new_attrib:
1113 if (!(attr=X509_ATTRIBUTE_create(nid,atrtype,value))) 1217 if (!(attr=X509_ATTRIBUTE_create(nid,atrtype,value)))
1114 return 0; 1218 return 0;
diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_lib.c b/src/lib/libssl/src/crypto/pkcs7/pk7_lib.c
index f2490941a3..3ca0952792 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pk7_lib.c
+++ b/src/lib/libssl/src/crypto/pkcs7/pk7_lib.c
@@ -60,6 +60,7 @@
60#include "cryptlib.h" 60#include "cryptlib.h"
61#include <openssl/objects.h> 61#include <openssl/objects.h>
62#include <openssl/x509.h> 62#include <openssl/x509.h>
63#include "asn1_locl.h"
63 64
64long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg) 65long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg)
65 { 66 {
@@ -314,7 +315,7 @@ int PKCS7_add_certificate(PKCS7 *p7, X509 *x509)
314 *sk=sk_X509_new_null(); 315 *sk=sk_X509_new_null();
315 if (*sk == NULL) 316 if (*sk == NULL)
316 { 317 {
317 PKCS7err(PKCS7_F_PKCS7_ADD_CERTIFICATE,ERR_R_MALLOC_FAILURE); 318 PKCS7err(PKCS7_F_PKCS7_ADD_CERTIFICATE, ERR_R_MALLOC_FAILURE);
318 return 0; 319 return 0;
319 } 320 }
320 CRYPTO_add(&x509->references,1,CRYPTO_LOCK_X509); 321 CRYPTO_add(&x509->references,1,CRYPTO_LOCK_X509);
@@ -365,13 +366,8 @@ int PKCS7_add_crl(PKCS7 *p7, X509_CRL *crl)
365int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, 366int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,
366 const EVP_MD *dgst) 367 const EVP_MD *dgst)
367 { 368 {
368 int nid; 369 int ret;
369 char is_dsa;
370 370
371 if (pkey->type == EVP_PKEY_DSA || pkey->type == EVP_PKEY_EC)
372 is_dsa = 1;
373 else
374 is_dsa = 0;
375 /* We now need to add another PKCS7_SIGNER_INFO entry */ 371 /* We now need to add another PKCS7_SIGNER_INFO entry */
376 if (!ASN1_INTEGER_set(p7i->version,1)) 372 if (!ASN1_INTEGER_set(p7i->version,1))
377 goto err; 373 goto err;
@@ -391,65 +387,55 @@ int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,
391 p7i->pkey=pkey; 387 p7i->pkey=pkey;
392 388
393 /* Set the algorithms */ 389 /* Set the algorithms */
394 if (is_dsa) p7i->digest_alg->algorithm=OBJ_nid2obj(NID_sha1);
395 else
396 p7i->digest_alg->algorithm=OBJ_nid2obj(EVP_MD_type(dgst));
397 390
398 if (p7i->digest_alg->parameter != NULL) 391 X509_ALGOR_set0(p7i->digest_alg, OBJ_nid2obj(EVP_MD_type(dgst)),
399 ASN1_TYPE_free(p7i->digest_alg->parameter); 392 V_ASN1_NULL, NULL);
400 if ((p7i->digest_alg->parameter=ASN1_TYPE_new()) == NULL)
401 goto err;
402 p7i->digest_alg->parameter->type=V_ASN1_NULL;
403 393
404 if (p7i->digest_enc_alg->parameter != NULL) 394 if (pkey->ameth && pkey->ameth->pkey_ctrl)
405 ASN1_TYPE_free(p7i->digest_enc_alg->parameter);
406 nid = EVP_PKEY_type(pkey->type);
407 if (nid == EVP_PKEY_RSA)
408 { 395 {
409 p7i->digest_enc_alg->algorithm=OBJ_nid2obj(NID_rsaEncryption); 396 ret = pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_PKCS7_SIGN,
410 if (!(p7i->digest_enc_alg->parameter=ASN1_TYPE_new())) 397 0, p7i);
411 goto err; 398 if (ret > 0)
412 p7i->digest_enc_alg->parameter->type=V_ASN1_NULL; 399 return 1;
413 } 400 if (ret != -2)
414 else if (nid == EVP_PKEY_DSA) 401 {
415 { 402 PKCS7err(PKCS7_F_PKCS7_SIGNER_INFO_SET,
416#if 1 403 PKCS7_R_SIGNING_CTRL_FAILURE);
417 /* use 'dsaEncryption' OID for compatibility with other software 404 return 0;
418 * (PKCS #7 v1.5 does specify how to handle DSA) ... */ 405 }
419 p7i->digest_enc_alg->algorithm=OBJ_nid2obj(NID_dsa);
420#else
421 /* ... although the 'dsaWithSHA1' OID (as required by RFC 2630 for CMS)
422 * would make more sense. */
423 p7i->digest_enc_alg->algorithm=OBJ_nid2obj(NID_dsaWithSHA1);
424#endif
425 p7i->digest_enc_alg->parameter = NULL; /* special case for DSA: omit 'parameter'! */
426 }
427 else if (nid == EVP_PKEY_EC)
428 {
429 p7i->digest_enc_alg->algorithm=OBJ_nid2obj(NID_ecdsa_with_SHA1);
430 if (!(p7i->digest_enc_alg->parameter=ASN1_TYPE_new()))
431 goto err;
432 p7i->digest_enc_alg->parameter->type=V_ASN1_NULL;
433 } 406 }
434 else 407 PKCS7err(PKCS7_F_PKCS7_SIGNER_INFO_SET,
435 return(0); 408 PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE);
436
437 return(1);
438err: 409err:
439 return(0); 410 return 0;
440 } 411 }
441 412
442PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, EVP_PKEY *pkey, 413PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, EVP_PKEY *pkey,
443 const EVP_MD *dgst) 414 const EVP_MD *dgst)
444 { 415 {
445 PKCS7_SIGNER_INFO *si; 416 PKCS7_SIGNER_INFO *si = NULL;
417
418 if (dgst == NULL)
419 {
420 int def_nid;
421 if (EVP_PKEY_get_default_digest_nid(pkey, &def_nid) <= 0)
422 goto err;
423 dgst = EVP_get_digestbynid(def_nid);
424 if (dgst == NULL)
425 {
426 PKCS7err(PKCS7_F_PKCS7_ADD_SIGNATURE,
427 PKCS7_R_NO_DEFAULT_DIGEST);
428 goto err;
429 }
430 }
446 431
447 if ((si=PKCS7_SIGNER_INFO_new()) == NULL) goto err; 432 if ((si=PKCS7_SIGNER_INFO_new()) == NULL) goto err;
448 if (!PKCS7_SIGNER_INFO_set(si,x509,pkey,dgst)) goto err; 433 if (!PKCS7_SIGNER_INFO_set(si,x509,pkey,dgst)) goto err;
449 if (!PKCS7_add_signer(p7,si)) goto err; 434 if (!PKCS7_add_signer(p7,si)) goto err;
450 return(si); 435 return(si);
451err: 436err:
452 PKCS7_SIGNER_INFO_free(si); 437 if (si)
438 PKCS7_SIGNER_INFO_free(si);
453 return(NULL); 439 return(NULL);
454 } 440 }
455 441
@@ -485,6 +471,23 @@ STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7)
485 return(NULL); 471 return(NULL);
486 } 472 }
487 473
474void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk,
475 X509_ALGOR **pdig, X509_ALGOR **psig)
476 {
477 if (pk)
478 *pk = si->pkey;
479 if (pdig)
480 *pdig = si->digest_alg;
481 if (psig)
482 *psig = si->digest_enc_alg;
483 }
484
485void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc)
486 {
487 if (penc)
488 *penc = ri->key_enc_algor;
489 }
490
488PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509) 491PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509)
489 { 492 {
490 PKCS7_RECIP_INFO *ri; 493 PKCS7_RECIP_INFO *ri;
@@ -492,10 +495,11 @@ PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509)
492 if ((ri=PKCS7_RECIP_INFO_new()) == NULL) goto err; 495 if ((ri=PKCS7_RECIP_INFO_new()) == NULL) goto err;
493 if (!PKCS7_RECIP_INFO_set(ri,x509)) goto err; 496 if (!PKCS7_RECIP_INFO_set(ri,x509)) goto err;
494 if (!PKCS7_add_recipient_info(p7,ri)) goto err; 497 if (!PKCS7_add_recipient_info(p7,ri)) goto err;
495 return(ri); 498 return ri;
496err: 499err:
497 PKCS7_RECIP_INFO_free(ri); 500 if (ri)
498 return(NULL); 501 PKCS7_RECIP_INFO_free(ri);
502 return NULL;
499 } 503 }
500 504
501int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri) 505int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri)
@@ -524,6 +528,8 @@ int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri)
524 528
525int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509) 529int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509)
526 { 530 {
531 int ret;
532 EVP_PKEY *pkey = NULL;
527 if (!ASN1_INTEGER_set(p7i->version,0)) 533 if (!ASN1_INTEGER_set(p7i->version,0))
528 return 0; 534 return 0;
529 if (!X509_NAME_set(&p7i->issuer_and_serial->issuer, 535 if (!X509_NAME_set(&p7i->issuer_and_serial->issuer,
@@ -535,14 +541,41 @@ int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509)
535 M_ASN1_INTEGER_dup(X509_get_serialNumber(x509)))) 541 M_ASN1_INTEGER_dup(X509_get_serialNumber(x509))))
536 return 0; 542 return 0;
537 543
538 X509_ALGOR_free(p7i->key_enc_algor); 544 pkey = X509_get_pubkey(x509);
539 if (!(p7i->key_enc_algor= X509_ALGOR_dup(x509->cert_info->key->algor))) 545
540 return 0; 546 if (!pkey || !pkey->ameth || !pkey->ameth->pkey_ctrl)
547 {
548 PKCS7err(PKCS7_F_PKCS7_RECIP_INFO_SET,
549 PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE);
550 goto err;
551 }
552
553 ret = pkey->ameth->pkey_ctrl(pkey, ASN1_PKEY_CTRL_PKCS7_ENCRYPT,
554 0, p7i);
555 if (ret == -2)
556 {
557 PKCS7err(PKCS7_F_PKCS7_RECIP_INFO_SET,
558 PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE);
559 goto err;
560 }
561 if (ret <= 0)
562 {
563 PKCS7err(PKCS7_F_PKCS7_RECIP_INFO_SET,
564 PKCS7_R_ENCRYPTION_CTRL_FAILURE);
565 goto err;
566 }
567
568 EVP_PKEY_free(pkey);
541 569
542 CRYPTO_add(&x509->references,1,CRYPTO_LOCK_X509); 570 CRYPTO_add(&x509->references,1,CRYPTO_LOCK_X509);
543 p7i->cert=x509; 571 p7i->cert=x509;
544 572
545 return(1); 573 return 1;
574
575 err:
576 if (pkey)
577 EVP_PKEY_free(pkey);
578 return 0;
546 } 579 }
547 580
548X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si) 581X509 *PKCS7_cert_from_signer_info(PKCS7 *p7, PKCS7_SIGNER_INFO *si)
@@ -587,3 +620,48 @@ int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher)
587 return 1; 620 return 1;
588 } 621 }
589 622
623int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7)
624 {
625 ASN1_OCTET_STRING *os = NULL;
626
627 switch (OBJ_obj2nid(p7->type))
628 {
629 case NID_pkcs7_data:
630 os = p7->d.data;
631 break;
632
633 case NID_pkcs7_signedAndEnveloped:
634 os = p7->d.signed_and_enveloped->enc_data->enc_data;
635 if (os == NULL)
636 {
637 os=M_ASN1_OCTET_STRING_new();
638 p7->d.signed_and_enveloped->enc_data->enc_data=os;
639 }
640 break;
641
642 case NID_pkcs7_enveloped:
643 os = p7->d.enveloped->enc_data->enc_data;
644 if (os == NULL)
645 {
646 os=M_ASN1_OCTET_STRING_new();
647 p7->d.enveloped->enc_data->enc_data=os;
648 }
649 break;
650
651 case NID_pkcs7_signed:
652 os=p7->d.sign->contents->d.data;
653 break;
654
655 default:
656 os = NULL;
657 break;
658 }
659
660 if (os == NULL)
661 return 0;
662
663 os->flags |= ASN1_STRING_FLAG_NDEF;
664 *boundary = &os->data;
665
666 return 1;
667 }
diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c b/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c
index bf190360d7..938f79a646 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c
+++ b/src/lib/libssl/src/crypto/pkcs7/pk7_mime.c
@@ -50,10 +50,6 @@
50 * OF THE POSSIBILITY OF SUCH DAMAGE. 50 * OF THE POSSIBILITY OF SUCH DAMAGE.
51 * ==================================================================== 51 * ====================================================================
52 * 52 *
53 * This product includes cryptographic software written by Eric Young
54 * (eay@cryptsoft.com). This product includes software written by Tim
55 * Hudson (tjh@cryptsoft.com).
56 *
57 */ 53 */
58 54
59#include <stdio.h> 55#include <stdio.h>
@@ -61,662 +57,41 @@
61#include "cryptlib.h" 57#include "cryptlib.h"
62#include <openssl/rand.h> 58#include <openssl/rand.h>
63#include <openssl/x509.h> 59#include <openssl/x509.h>
60#include <openssl/asn1.h>
64 61
65/* MIME and related routines */ 62/* PKCS#7 wrappers round generalised stream and MIME routines */
66
67/* MIME format structures
68 * Note that all are translated to lower case apart from
69 * parameter values. Quotes are stripped off
70 */
71
72typedef struct {
73char *param_name; /* Param name e.g. "micalg" */
74char *param_value; /* Param value e.g. "sha1" */
75} MIME_PARAM;
76
77DECLARE_STACK_OF(MIME_PARAM)
78IMPLEMENT_STACK_OF(MIME_PARAM)
79
80typedef struct {
81char *name; /* Name of line e.g. "content-type" */
82char *value; /* Value of line e.g. "text/plain" */
83STACK_OF(MIME_PARAM) *params; /* Zero or more parameters */
84} MIME_HEADER;
85 63
86DECLARE_STACK_OF(MIME_HEADER) 64int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags)
87IMPLEMENT_STACK_OF(MIME_HEADER) 65 {
88 66 return i2d_ASN1_bio_stream(out, (ASN1_VALUE *)p7, in, flags,
89static int pkcs7_output_data(BIO *bio, BIO *data, PKCS7 *p7, int flags); 67 ASN1_ITEM_rptr(PKCS7));
90static int B64_write_PKCS7(BIO *bio, PKCS7 *p7);
91static PKCS7 *B64_read_PKCS7(BIO *bio);
92static char * strip_ends(char *name);
93static char * strip_start(char *name);
94static char * strip_end(char *name);
95static MIME_HEADER *mime_hdr_new(char *name, char *value);
96static int mime_hdr_addparam(MIME_HEADER *mhdr, char *name, char *value);
97static STACK_OF(MIME_HEADER) *mime_parse_hdr(BIO *bio);
98static int mime_hdr_cmp(const MIME_HEADER * const *a,
99 const MIME_HEADER * const *b);
100static int mime_param_cmp(const MIME_PARAM * const *a,
101 const MIME_PARAM * const *b);
102static void mime_param_free(MIME_PARAM *param);
103static int mime_bound_check(char *line, int linelen, char *bound, int blen);
104static int multi_split(BIO *bio, char *bound, STACK_OF(BIO) **ret);
105static int strip_eol(char *linebuf, int *plen);
106static MIME_HEADER *mime_hdr_find(STACK_OF(MIME_HEADER) *hdrs, char *name);
107static MIME_PARAM *mime_param_find(MIME_HEADER *hdr, char *name);
108static void mime_hdr_free(MIME_HEADER *hdr);
109
110#define MAX_SMLEN 1024
111#define mime_debug(x) /* x */
112
113/* Base 64 read and write of PKCS#7 structure */
114
115static int B64_write_PKCS7(BIO *bio, PKCS7 *p7)
116{
117 BIO *b64;
118 if(!(b64 = BIO_new(BIO_f_base64()))) {
119 PKCS7err(PKCS7_F_B64_WRITE_PKCS7,ERR_R_MALLOC_FAILURE);
120 return 0;
121 } 68 }
122 bio = BIO_push(b64, bio);
123 i2d_PKCS7_bio(bio, p7);
124 (void)BIO_flush(bio);
125 bio = BIO_pop(bio);
126 BIO_free(b64);
127 return 1;
128}
129 69
130static PKCS7 *B64_read_PKCS7(BIO *bio) 70int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags)
131{ 71 {
132 BIO *b64; 72 return PEM_write_bio_ASN1_stream(out, (ASN1_VALUE *) p7, in, flags,
133 PKCS7 *p7; 73 "PKCS7",
134 if(!(b64 = BIO_new(BIO_f_base64()))) { 74 ASN1_ITEM_rptr(PKCS7));
135 PKCS7err(PKCS7_F_B64_READ_PKCS7,ERR_R_MALLOC_FAILURE);
136 return 0;
137 } 75 }
138 bio = BIO_push(b64, bio);
139 if(!(p7 = d2i_PKCS7_bio(bio, NULL)))
140 PKCS7err(PKCS7_F_B64_READ_PKCS7,PKCS7_R_DECODE_ERROR);
141 (void)BIO_flush(bio);
142 bio = BIO_pop(bio);
143 BIO_free(b64);
144 return p7;
145}
146
147/* SMIME sender */
148 76
149int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags) 77int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags)
150{
151 char bound[33], c;
152 int i;
153 char *mime_prefix, *mime_eol, *msg_type=NULL;
154 if (flags & PKCS7_NOOLDMIMETYPE)
155 mime_prefix = "application/pkcs7-";
156 else
157 mime_prefix = "application/x-pkcs7-";
158
159 if (flags & PKCS7_CRLFEOL)
160 mime_eol = "\r\n";
161 else
162 mime_eol = "\n";
163 if((flags & PKCS7_DETACHED) && data) {
164 /* We want multipart/signed */
165 /* Generate a random boundary */
166 RAND_pseudo_bytes((unsigned char *)bound, 32);
167 for(i = 0; i < 32; i++) {
168 c = bound[i] & 0xf;
169 if(c < 10) c += '0';
170 else c += 'A' - 10;
171 bound[i] = c;
172 }
173 bound[32] = 0;
174 BIO_printf(bio, "MIME-Version: 1.0%s", mime_eol);
175 BIO_printf(bio, "Content-Type: multipart/signed;");
176 BIO_printf(bio, " protocol=\"%ssignature\";", mime_prefix);
177 BIO_printf(bio, " micalg=sha1; boundary=\"----%s\"%s%s",
178 bound, mime_eol, mime_eol);
179 BIO_printf(bio, "This is an S/MIME signed message%s%s",
180 mime_eol, mime_eol);
181 /* Now write out the first part */
182 BIO_printf(bio, "------%s%s", bound, mime_eol);
183 pkcs7_output_data(bio, data, p7, flags);
184 BIO_printf(bio, "%s------%s%s", mime_eol, bound, mime_eol);
185
186 /* Headers for signature */
187
188 BIO_printf(bio, "Content-Type: %ssignature;", mime_prefix);
189 BIO_printf(bio, " name=\"smime.p7s\"%s", mime_eol);
190 BIO_printf(bio, "Content-Transfer-Encoding: base64%s",
191 mime_eol);
192 BIO_printf(bio, "Content-Disposition: attachment;");
193 BIO_printf(bio, " filename=\"smime.p7s\"%s%s",
194 mime_eol, mime_eol);
195 B64_write_PKCS7(bio, p7);
196 BIO_printf(bio,"%s------%s--%s%s", mime_eol, bound,
197 mime_eol, mime_eol);
198 return 1;
199 }
200
201 /* Determine smime-type header */
202
203 if (PKCS7_type_is_enveloped(p7))
204 msg_type = "enveloped-data";
205 else if (PKCS7_type_is_signed(p7))
206 {
207 /* If we have any signers it is signed-data othewise
208 * certs-only.
209 */
210 STACK_OF(PKCS7_SIGNER_INFO) *sinfos;
211 sinfos = PKCS7_get_signer_info(p7);
212 if (sk_PKCS7_SIGNER_INFO_num(sinfos) > 0)
213 msg_type = "signed-data";
214 else
215 msg_type = "certs-only";
216 }
217 /* MIME headers */
218 BIO_printf(bio, "MIME-Version: 1.0%s", mime_eol);
219 BIO_printf(bio, "Content-Disposition: attachment;");
220 BIO_printf(bio, " filename=\"smime.p7m\"%s", mime_eol);
221 BIO_printf(bio, "Content-Type: %smime;", mime_prefix);
222 if (msg_type)
223 BIO_printf(bio, " smime-type=%s;", msg_type);
224 BIO_printf(bio, " name=\"smime.p7m\"%s", mime_eol);
225 BIO_printf(bio, "Content-Transfer-Encoding: base64%s%s",
226 mime_eol, mime_eol);
227 B64_write_PKCS7(bio, p7);
228 BIO_printf(bio, "%s", mime_eol);
229 return 1;
230}
231
232/* Handle output of PKCS#7 data */
233
234
235static int pkcs7_output_data(BIO *out, BIO *data, PKCS7 *p7, int flags)
236 { 78 {
237 BIO *tmpbio, *p7bio; 79 STACK_OF(X509_ALGOR) *mdalgs;
238 80 int ctype_nid = OBJ_obj2nid(p7->type);
239 if (!(flags & PKCS7_STREAM)) 81 if (ctype_nid == NID_pkcs7_signed)
240 { 82 mdalgs = p7->d.sign->md_algs;
241 SMIME_crlf_copy(data, out, flags); 83 else
242 return 1; 84 mdalgs = NULL;
243 }
244
245 /* Partial sign operation */
246
247 /* Initialize sign operation */
248 p7bio = PKCS7_dataInit(p7, out);
249
250 /* Copy data across, computing digests etc */
251 SMIME_crlf_copy(data, p7bio, flags);
252
253 /* Must be detached */
254 PKCS7_set_detached(p7, 1);
255
256 /* Finalize signatures */
257 PKCS7_dataFinal(p7, p7bio);
258
259 /* Now remove any digests prepended to the BIO */
260 85
261 while (p7bio != out) 86 flags ^= SMIME_OLDMIME;
262 {
263 tmpbio = BIO_pop(p7bio);
264 BIO_free(p7bio);
265 p7bio = tmpbio;
266 }
267 87
268 return 1;
269 88
89 return SMIME_write_ASN1(bio, (ASN1_VALUE *)p7, data, flags,
90 ctype_nid, NID_undef, mdalgs,
91 ASN1_ITEM_rptr(PKCS7));
270 } 92 }
271 93
272/* SMIME reader: handle multipart/signed and opaque signing.
273 * in multipart case the content is placed in a memory BIO
274 * pointed to by "bcont". In opaque this is set to NULL
275 */
276
277PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont) 94PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont)
278{
279 BIO *p7in;
280 STACK_OF(MIME_HEADER) *headers = NULL;
281 STACK_OF(BIO) *parts = NULL;
282 MIME_HEADER *hdr;
283 MIME_PARAM *prm;
284 PKCS7 *p7;
285 int ret;
286
287 if(bcont) *bcont = NULL;
288
289 if (!(headers = mime_parse_hdr(bio))) {
290 PKCS7err(PKCS7_F_SMIME_READ_PKCS7,PKCS7_R_MIME_PARSE_ERROR);
291 return NULL;
292 }
293
294 if(!(hdr = mime_hdr_find(headers, "content-type")) || !hdr->value) {
295 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
296 PKCS7err(PKCS7_F_SMIME_READ_PKCS7, PKCS7_R_NO_CONTENT_TYPE);
297 return NULL;
298 }
299
300 /* Handle multipart/signed */
301
302 if(!strcmp(hdr->value, "multipart/signed")) {
303 /* Split into two parts */
304 prm = mime_param_find(hdr, "boundary");
305 if(!prm || !prm->param_value) {
306 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
307 PKCS7err(PKCS7_F_SMIME_READ_PKCS7, PKCS7_R_NO_MULTIPART_BOUNDARY);
308 return NULL;
309 }
310 ret = multi_split(bio, prm->param_value, &parts);
311 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
312 if(!ret || (sk_BIO_num(parts) != 2) ) {
313 PKCS7err(PKCS7_F_SMIME_READ_PKCS7, PKCS7_R_NO_MULTIPART_BODY_FAILURE);
314 sk_BIO_pop_free(parts, BIO_vfree);
315 return NULL;
316 }
317
318 /* Parse the signature piece */
319 p7in = sk_BIO_value(parts, 1);
320
321 if (!(headers = mime_parse_hdr(p7in))) {
322 PKCS7err(PKCS7_F_SMIME_READ_PKCS7,PKCS7_R_MIME_SIG_PARSE_ERROR);
323 sk_BIO_pop_free(parts, BIO_vfree);
324 return NULL;
325 }
326
327 /* Get content type */
328
329 if(!(hdr = mime_hdr_find(headers, "content-type")) ||
330 !hdr->value) {
331 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
332 PKCS7err(PKCS7_F_SMIME_READ_PKCS7, PKCS7_R_NO_SIG_CONTENT_TYPE);
333 return NULL;
334 }
335
336 if(strcmp(hdr->value, "application/x-pkcs7-signature") &&
337 strcmp(hdr->value, "application/pkcs7-signature")) {
338 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
339 PKCS7err(PKCS7_F_SMIME_READ_PKCS7,PKCS7_R_SIG_INVALID_MIME_TYPE);
340 ERR_add_error_data(2, "type: ", hdr->value);
341 sk_BIO_pop_free(parts, BIO_vfree);
342 return NULL;
343 }
344 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
345 /* Read in PKCS#7 */
346 if(!(p7 = B64_read_PKCS7(p7in))) {
347 PKCS7err(PKCS7_F_SMIME_READ_PKCS7,PKCS7_R_PKCS7_SIG_PARSE_ERROR);
348 sk_BIO_pop_free(parts, BIO_vfree);
349 return NULL;
350 }
351
352 if(bcont) {
353 *bcont = sk_BIO_value(parts, 0);
354 BIO_free(p7in);
355 sk_BIO_free(parts);
356 } else sk_BIO_pop_free(parts, BIO_vfree);
357 return p7;
358 }
359
360 /* OK, if not multipart/signed try opaque signature */
361
362 if (strcmp (hdr->value, "application/x-pkcs7-mime") &&
363 strcmp (hdr->value, "application/pkcs7-mime")) {
364 PKCS7err(PKCS7_F_SMIME_READ_PKCS7,PKCS7_R_INVALID_MIME_TYPE);
365 ERR_add_error_data(2, "type: ", hdr->value);
366 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
367 return NULL;
368 }
369
370 sk_MIME_HEADER_pop_free(headers, mime_hdr_free);
371
372 if(!(p7 = B64_read_PKCS7(bio))) {
373 PKCS7err(PKCS7_F_SMIME_READ_PKCS7, PKCS7_R_PKCS7_PARSE_ERROR);
374 return NULL;
375 }
376 return p7;
377
378}
379
380/* Split a multipart/XXX message body into component parts: result is
381 * canonical parts in a STACK of bios
382 */
383
384static int multi_split(BIO *bio, char *bound, STACK_OF(BIO) **ret)
385{
386 char linebuf[MAX_SMLEN];
387 int len, blen;
388 int eol = 0, next_eol = 0;
389 BIO *bpart = NULL;
390 STACK_OF(BIO) *parts;
391 char state, part, first;
392
393 blen = strlen(bound);
394 part = 0;
395 state = 0;
396 first = 1;
397 parts = sk_BIO_new_null();
398 *ret = parts;
399 while ((len = BIO_gets(bio, linebuf, MAX_SMLEN)) > 0) {
400 state = mime_bound_check(linebuf, len, bound, blen);
401 if(state == 1) {
402 first = 1;
403 part++;
404 } else if(state == 2) {
405 sk_BIO_push(parts, bpart);
406 return 1;
407 } else if(part) {
408 /* Strip CR+LF from linebuf */
409 next_eol = strip_eol(linebuf, &len);
410 if(first) {
411 first = 0;
412 if(bpart) sk_BIO_push(parts, bpart);
413 bpart = BIO_new(BIO_s_mem());
414 BIO_set_mem_eof_return(bpart, 0);
415 } else if (eol)
416 BIO_write(bpart, "\r\n", 2);
417 eol = next_eol;
418 if (len)
419 BIO_write(bpart, linebuf, len);
420 }
421 }
422 return 0;
423}
424
425/* This is the big one: parse MIME header lines up to message body */
426
427#define MIME_INVALID 0
428#define MIME_START 1
429#define MIME_TYPE 2
430#define MIME_NAME 3
431#define MIME_VALUE 4
432#define MIME_QUOTE 5
433#define MIME_COMMENT 6
434
435
436static STACK_OF(MIME_HEADER) *mime_parse_hdr(BIO *bio)
437{
438 char *p, *q, c;
439 char *ntmp;
440 char linebuf[MAX_SMLEN];
441 MIME_HEADER *mhdr = NULL;
442 STACK_OF(MIME_HEADER) *headers;
443 int len, state, save_state = 0;
444
445 headers = sk_MIME_HEADER_new(mime_hdr_cmp);
446 while ((len = BIO_gets(bio, linebuf, MAX_SMLEN)) > 0) {
447 /* If whitespace at line start then continuation line */
448 if(mhdr && isspace((unsigned char)linebuf[0])) state = MIME_NAME;
449 else state = MIME_START;
450 ntmp = NULL;
451 /* Go through all characters */
452 for(p = linebuf, q = linebuf; (c = *p) && (c!='\r') && (c!='\n'); p++) {
453
454 /* State machine to handle MIME headers
455 * if this looks horrible that's because it *is*
456 */
457
458 switch(state) {
459 case MIME_START:
460 if(c == ':') {
461 state = MIME_TYPE;
462 *p = 0;
463 ntmp = strip_ends(q);
464 q = p + 1;
465 }
466 break;
467
468 case MIME_TYPE:
469 if(c == ';') {
470 mime_debug("Found End Value\n");
471 *p = 0;
472 mhdr = mime_hdr_new(ntmp, strip_ends(q));
473 sk_MIME_HEADER_push(headers, mhdr);
474 ntmp = NULL;
475 q = p + 1;
476 state = MIME_NAME;
477 } else if(c == '(') {
478 save_state = state;
479 state = MIME_COMMENT;
480 }
481 break;
482
483 case MIME_COMMENT:
484 if(c == ')') {
485 state = save_state;
486 }
487 break;
488
489 case MIME_NAME:
490 if(c == '=') {
491 state = MIME_VALUE;
492 *p = 0;
493 ntmp = strip_ends(q);
494 q = p + 1;
495 }
496 break ;
497
498 case MIME_VALUE:
499 if(c == ';') {
500 state = MIME_NAME;
501 *p = 0;
502 mime_hdr_addparam(mhdr, ntmp, strip_ends(q));
503 ntmp = NULL;
504 q = p + 1;
505 } else if (c == '"') {
506 mime_debug("Found Quote\n");
507 state = MIME_QUOTE;
508 } else if(c == '(') {
509 save_state = state;
510 state = MIME_COMMENT;
511 }
512 break;
513
514 case MIME_QUOTE:
515 if(c == '"') {
516 mime_debug("Found Match Quote\n");
517 state = MIME_VALUE;
518 }
519 break;
520 }
521 }
522
523 if(state == MIME_TYPE) {
524 mhdr = mime_hdr_new(ntmp, strip_ends(q));
525 sk_MIME_HEADER_push(headers, mhdr);
526 } else if(state == MIME_VALUE)
527 mime_hdr_addparam(mhdr, ntmp, strip_ends(q));
528 if(p == linebuf) break; /* Blank line means end of headers */
529}
530
531return headers;
532
533}
534
535static char *strip_ends(char *name)
536{
537 return strip_end(strip_start(name));
538}
539
540/* Strip a parameter of whitespace from start of param */
541static char *strip_start(char *name)
542{
543 char *p, c;
544 /* Look for first non white space or quote */
545 for(p = name; (c = *p) ;p++) {
546 if(c == '"') {
547 /* Next char is start of string if non null */
548 if(p[1]) return p + 1;
549 /* Else null string */
550 return NULL;
551 }
552 if(!isspace((unsigned char)c)) return p;
553 }
554 return NULL;
555}
556
557/* As above but strip from end of string : maybe should handle brackets? */
558static char *strip_end(char *name)
559{
560 char *p, c;
561 if(!name) return NULL;
562 /* Look for first non white space or quote */
563 for(p = name + strlen(name) - 1; p >= name ;p--) {
564 c = *p;
565 if(c == '"') {
566 if(p - 1 == name) return NULL;
567 *p = 0;
568 return name;
569 }
570 if(isspace((unsigned char)c)) *p = 0;
571 else return name;
572 }
573 return NULL;
574}
575
576static MIME_HEADER *mime_hdr_new(char *name, char *value)
577{
578 MIME_HEADER *mhdr;
579 char *tmpname, *tmpval, *p;
580 int c;
581 if(name) {
582 if(!(tmpname = BUF_strdup(name))) return NULL;
583 for(p = tmpname ; *p; p++) {
584 c = *p;
585 if(isupper(c)) {
586 c = tolower(c);
587 *p = c;
588 }
589 }
590 } else tmpname = NULL;
591 if(value) {
592 if(!(tmpval = BUF_strdup(value))) return NULL;
593 for(p = tmpval ; *p; p++) {
594 c = *p;
595 if(isupper(c)) {
596 c = tolower(c);
597 *p = c;
598 }
599 }
600 } else tmpval = NULL;
601 mhdr = (MIME_HEADER *) OPENSSL_malloc(sizeof(MIME_HEADER));
602 if(!mhdr) return NULL;
603 mhdr->name = tmpname;
604 mhdr->value = tmpval;
605 if(!(mhdr->params = sk_MIME_PARAM_new(mime_param_cmp))) return NULL;
606 return mhdr;
607}
608
609static int mime_hdr_addparam(MIME_HEADER *mhdr, char *name, char *value)
610{
611 char *tmpname, *tmpval, *p;
612 int c;
613 MIME_PARAM *mparam;
614 if(name) {
615 tmpname = BUF_strdup(name);
616 if(!tmpname) return 0;
617 for(p = tmpname ; *p; p++) {
618 c = *p;
619 if(isupper(c)) {
620 c = tolower(c);
621 *p = c;
622 }
623 }
624 } else tmpname = NULL;
625 if(value) {
626 tmpval = BUF_strdup(value);
627 if(!tmpval) return 0;
628 } else tmpval = NULL;
629 /* Parameter values are case sensitive so leave as is */
630 mparam = (MIME_PARAM *) OPENSSL_malloc(sizeof(MIME_PARAM));
631 if(!mparam) return 0;
632 mparam->param_name = tmpname;
633 mparam->param_value = tmpval;
634 sk_MIME_PARAM_push(mhdr->params, mparam);
635 return 1;
636}
637
638static int mime_hdr_cmp(const MIME_HEADER * const *a,
639 const MIME_HEADER * const *b)
640{
641 return(strcmp((*a)->name, (*b)->name));
642}
643
644static int mime_param_cmp(const MIME_PARAM * const *a,
645 const MIME_PARAM * const *b)
646{
647 return(strcmp((*a)->param_name, (*b)->param_name));
648}
649
650/* Find a header with a given name (if possible) */
651
652static MIME_HEADER *mime_hdr_find(STACK_OF(MIME_HEADER) *hdrs, char *name)
653{
654 MIME_HEADER htmp;
655 int idx;
656 htmp.name = name;
657 idx = sk_MIME_HEADER_find(hdrs, &htmp);
658 if(idx < 0) return NULL;
659 return sk_MIME_HEADER_value(hdrs, idx);
660}
661
662static MIME_PARAM *mime_param_find(MIME_HEADER *hdr, char *name)
663{
664 MIME_PARAM param;
665 int idx;
666 param.param_name = name;
667 idx = sk_MIME_PARAM_find(hdr->params, &param);
668 if(idx < 0) return NULL;
669 return sk_MIME_PARAM_value(hdr->params, idx);
670}
671
672static void mime_hdr_free(MIME_HEADER *hdr)
673{
674 if(hdr->name) OPENSSL_free(hdr->name);
675 if(hdr->value) OPENSSL_free(hdr->value);
676 if(hdr->params) sk_MIME_PARAM_pop_free(hdr->params, mime_param_free);
677 OPENSSL_free(hdr);
678}
679
680static void mime_param_free(MIME_PARAM *param)
681{
682 if(param->param_name) OPENSSL_free(param->param_name);
683 if(param->param_value) OPENSSL_free(param->param_value);
684 OPENSSL_free(param);
685}
686
687/* Check for a multipart boundary. Returns:
688 * 0 : no boundary
689 * 1 : part boundary
690 * 2 : final boundary
691 */
692static int mime_bound_check(char *line, int linelen, char *bound, int blen)
693{
694 if(linelen == -1) linelen = strlen(line);
695 if(blen == -1) blen = strlen(bound);
696 /* Quickly eliminate if line length too short */
697 if(blen + 2 > linelen) return 0;
698 /* Check for part boundary */
699 if(!strncmp(line, "--", 2) && !strncmp(line + 2, bound, blen)) {
700 if(!strncmp(line + blen + 2, "--", 2)) return 2;
701 else return 1;
702 }
703 return 0;
704}
705
706static int strip_eol(char *linebuf, int *plen)
707 { 95 {
708 int len = *plen; 96 return (PKCS7 *)SMIME_read_ASN1(bio, bcont, ASN1_ITEM_rptr(PKCS7));
709 char *p, c;
710 int is_eol = 0;
711 p = linebuf + len - 1;
712 for (p = linebuf + len - 1; len > 0; len--, p--)
713 {
714 c = *p;
715 if (c == '\n')
716 is_eol = 1;
717 else if (c != '\r')
718 break;
719 }
720 *plen = len;
721 return is_eol;
722 } 97 }
diff --git a/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c b/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c
index fd18ec3d95..86742d0dcd 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c
+++ b/src/lib/libssl/src/crypto/pkcs7/pk7_smime.c
@@ -63,24 +63,19 @@
63#include <openssl/x509.h> 63#include <openssl/x509.h>
64#include <openssl/x509v3.h> 64#include <openssl/x509v3.h>
65 65
66static int pkcs7_copy_existing_digest(PKCS7 *p7, PKCS7_SIGNER_INFO *si);
67
66PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, 68PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
67 BIO *data, int flags) 69 BIO *data, int flags)
68{ 70{
69 PKCS7 *p7 = NULL; 71 PKCS7 *p7;
70 PKCS7_SIGNER_INFO *si;
71 BIO *p7bio = NULL;
72 STACK_OF(X509_ALGOR) *smcap = NULL;
73 int i; 72 int i;
74 73
75 if(!X509_check_private_key(signcert, pkey)) { 74 if(!(p7 = PKCS7_new()))
76 PKCS7err(PKCS7_F_PKCS7_SIGN,PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE); 75 {
77 return NULL;
78 }
79
80 if(!(p7 = PKCS7_new())) {
81 PKCS7err(PKCS7_F_PKCS7_SIGN,ERR_R_MALLOC_FAILURE); 76 PKCS7err(PKCS7_F_PKCS7_SIGN,ERR_R_MALLOC_FAILURE);
82 return NULL; 77 return NULL;
83 } 78 }
84 79
85 if (!PKCS7_set_type(p7, NID_pkcs7_signed)) 80 if (!PKCS7_set_type(p7, NID_pkcs7_signed))
86 goto err; 81 goto err;
@@ -88,82 +83,185 @@ PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
88 if (!PKCS7_content_new(p7, NID_pkcs7_data)) 83 if (!PKCS7_content_new(p7, NID_pkcs7_data))
89 goto err; 84 goto err;
90 85
91 if (!(si = PKCS7_add_signature(p7,signcert,pkey,EVP_sha1()))) { 86 if (pkey && !PKCS7_sign_add_signer(p7, signcert, pkey, NULL, flags))
92 PKCS7err(PKCS7_F_PKCS7_SIGN,PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR); 87 {
88 PKCS7err(PKCS7_F_PKCS7_SIGN,PKCS7_R_PKCS7_ADD_SIGNER_ERROR);
93 goto err; 89 goto err;
94 } 90 }
95 91
96 if(!(flags & PKCS7_NOCERTS)) { 92 if(!(flags & PKCS7_NOCERTS))
97 if (!PKCS7_add_certificate(p7, signcert)) 93 {
98 goto err; 94 for(i = 0; i < sk_X509_num(certs); i++)
99 if(certs) for(i = 0; i < sk_X509_num(certs); i++) 95 {
100 if (!PKCS7_add_certificate(p7, sk_X509_value(certs, i))) 96 if (!PKCS7_add_certificate(p7, sk_X509_value(certs, i)))
101 goto err; 97 goto err;
102 } 98 }
99 }
103 100
104 if(!(flags & PKCS7_NOATTR)) { 101 if(flags & PKCS7_DETACHED)
105 if (!PKCS7_add_signed_attribute(si, NID_pkcs9_contentType, 102 PKCS7_set_detached(p7, 1);
106 V_ASN1_OBJECT, OBJ_nid2obj(NID_pkcs7_data))) 103
107 goto err; 104 if (flags & (PKCS7_STREAM|PKCS7_PARTIAL))
108 /* Add SMIMECapabilities */ 105 return p7;
109 if(!(flags & PKCS7_NOSMIMECAP)) 106
107 if (PKCS7_final(p7, data, flags))
108 return p7;
109
110 err:
111 PKCS7_free(p7);
112 return NULL;
113}
114
115int PKCS7_final(PKCS7 *p7, BIO *data, int flags)
116 {
117 BIO *p7bio;
118 int ret = 0;
119 if (!(p7bio = PKCS7_dataInit(p7, NULL)))
110 { 120 {
111 if(!(smcap = sk_X509_ALGOR_new_null())) { 121 PKCS7err(PKCS7_F_PKCS7_FINAL,ERR_R_MALLOC_FAILURE);
112 PKCS7err(PKCS7_F_PKCS7_SIGN,ERR_R_MALLOC_FAILURE); 122 return 0;
113 goto err;
114 }
115#ifndef OPENSSL_NO_DES
116 if (!PKCS7_simple_smimecap (smcap, NID_des_ede3_cbc, -1))
117 goto err;
118#endif
119#ifndef OPENSSL_NO_RC2
120 if (!PKCS7_simple_smimecap (smcap, NID_rc2_cbc, 128))
121 goto err;
122 if (!PKCS7_simple_smimecap (smcap, NID_rc2_cbc, 64))
123 goto err;
124#endif
125#ifndef OPENSSL_NO_DES
126 if (!PKCS7_simple_smimecap (smcap, NID_des_cbc, -1))
127 goto err;
128#endif
129#ifndef OPENSSL_NO_RC2
130 if (!PKCS7_simple_smimecap (smcap, NID_rc2_cbc, 40))
131 goto err;
132#endif
133 if (!PKCS7_add_attrib_smimecap (si, smcap))
134 goto err;
135 sk_X509_ALGOR_pop_free(smcap, X509_ALGOR_free);
136 smcap = NULL;
137 } 123 }
138 }
139 124
140 if(flags & PKCS7_DETACHED)PKCS7_set_detached(p7, 1); 125 SMIME_crlf_copy(data, p7bio, flags);
141 126
142 if (flags & PKCS7_STREAM) 127 (void)BIO_flush(p7bio);
143 return p7;
144 128
145 129
146 if (!(p7bio = PKCS7_dataInit(p7, NULL))) { 130 if (!PKCS7_dataFinal(p7,p7bio))
147 PKCS7err(PKCS7_F_PKCS7_SIGN,ERR_R_MALLOC_FAILURE); 131 {
132 PKCS7err(PKCS7_F_PKCS7_FINAL,PKCS7_R_PKCS7_DATASIGN);
148 goto err; 133 goto err;
134 }
135
136 ret = 1;
137
138 err:
139 BIO_free_all(p7bio);
140
141 return ret;
142
149 } 143 }
150 144
151 SMIME_crlf_copy(data, p7bio, flags); 145/* Check to see if a cipher exists and if so add S/MIME capabilities */
152 146
147static int add_cipher_smcap(STACK_OF(X509_ALGOR) *sk, int nid, int arg)
148 {
149 if (EVP_get_cipherbynid(nid))
150 return PKCS7_simple_smimecap(sk, nid, arg);
151 return 1;
152 }
153 153
154 if (!PKCS7_dataFinal(p7,p7bio)) { 154static int add_digest_smcap(STACK_OF(X509_ALGOR) *sk, int nid, int arg)
155 PKCS7err(PKCS7_F_PKCS7_SIGN,PKCS7_R_PKCS7_DATASIGN); 155 {
156 goto err; 156 if (EVP_get_digestbynid(nid))
157 return PKCS7_simple_smimecap(sk, nid, arg);
158 return 1;
157 } 159 }
158 160
159 BIO_free_all(p7bio); 161PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7, X509 *signcert,
160 return p7; 162 EVP_PKEY *pkey, const EVP_MD *md,
161err: 163 int flags)
162 sk_X509_ALGOR_pop_free(smcap, X509_ALGOR_free); 164 {
163 BIO_free_all(p7bio); 165 PKCS7_SIGNER_INFO *si = NULL;
164 PKCS7_free(p7); 166 STACK_OF(X509_ALGOR) *smcap = NULL;
167 if(!X509_check_private_key(signcert, pkey))
168 {
169 PKCS7err(PKCS7_F_PKCS7_SIGN_ADD_SIGNER,
170 PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE);
171 return NULL;
172 }
173
174 if (!(si = PKCS7_add_signature(p7,signcert,pkey, md)))
175 {
176 PKCS7err(PKCS7_F_PKCS7_SIGN_ADD_SIGNER,
177 PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR);
178 return NULL;
179 }
180
181 if(!(flags & PKCS7_NOCERTS))
182 {
183 if (!PKCS7_add_certificate(p7, signcert))
184 goto err;
185 }
186
187 if(!(flags & PKCS7_NOATTR))
188 {
189 if (!PKCS7_add_attrib_content_type(si, NULL))
190 goto err;
191 /* Add SMIMECapabilities */
192 if(!(flags & PKCS7_NOSMIMECAP))
193 {
194 if(!(smcap = sk_X509_ALGOR_new_null()))
195 {
196 PKCS7err(PKCS7_F_PKCS7_SIGN_ADD_SIGNER,
197 ERR_R_MALLOC_FAILURE);
198 goto err;
199 }
200 if (!add_cipher_smcap(smcap, NID_aes_256_cbc, -1)
201 || !add_digest_smcap(smcap, NID_id_GostR3411_94, -1)
202 || !add_cipher_smcap(smcap, NID_id_Gost28147_89, -1)
203 || !add_cipher_smcap(smcap, NID_aes_192_cbc, -1)
204 || !add_cipher_smcap(smcap, NID_aes_128_cbc, -1)
205 || !add_cipher_smcap(smcap, NID_des_ede3_cbc, -1)
206 || !add_cipher_smcap(smcap, NID_rc2_cbc, 128)
207 || !add_cipher_smcap(smcap, NID_rc2_cbc, 64)
208 || !add_cipher_smcap(smcap, NID_des_cbc, -1)
209 || !add_cipher_smcap(smcap, NID_rc2_cbc, 40)
210 || !PKCS7_add_attrib_smimecap (si, smcap))
211 goto err;
212 sk_X509_ALGOR_pop_free(smcap, X509_ALGOR_free);
213 smcap = NULL;
214 }
215 if (flags & PKCS7_REUSE_DIGEST)
216 {
217 if (!pkcs7_copy_existing_digest(p7, si))
218 goto err;
219 if (!(flags & PKCS7_PARTIAL) &&
220 !PKCS7_SIGNER_INFO_sign(si))
221 goto err;
222 }
223 }
224 return si;
225 err:
226 if (smcap)
227 sk_X509_ALGOR_pop_free(smcap, X509_ALGOR_free);
165 return NULL; 228 return NULL;
166} 229 }
230
231/* Search for a digest matching SignerInfo digest type and if found
232 * copy across.
233 */
234
235static int pkcs7_copy_existing_digest(PKCS7 *p7, PKCS7_SIGNER_INFO *si)
236 {
237 int i;
238 STACK_OF(PKCS7_SIGNER_INFO) *sinfos;
239 PKCS7_SIGNER_INFO *sitmp;
240 ASN1_OCTET_STRING *osdig = NULL;
241 sinfos = PKCS7_get_signer_info(p7);
242 for (i = 0; i < sk_PKCS7_SIGNER_INFO_num(sinfos); i++)
243 {
244 sitmp = sk_PKCS7_SIGNER_INFO_value(sinfos, i);
245 if (si == sitmp)
246 break;
247 if (sk_X509_ATTRIBUTE_num(sitmp->auth_attr) <= 0)
248 continue;
249 if (!OBJ_cmp(si->digest_alg->algorithm,
250 sitmp->digest_alg->algorithm))
251 {
252 osdig = PKCS7_digest_from_attributes(sitmp->auth_attr);
253 break;
254 }
255
256 }
257
258 if (osdig)
259 return PKCS7_add1_attrib_digest(si, osdig->data, osdig->length);
260
261 PKCS7err(PKCS7_F_PKCS7_COPY_EXISTING_DIGEST,
262 PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND);
263 return 0;
264 }
167 265
168int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, 266int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
169 BIO *indata, BIO *out, int flags) 267 BIO *indata, BIO *out, int flags)
@@ -354,7 +452,7 @@ STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags)
354 452
355 if(sk_PKCS7_SIGNER_INFO_num(sinfos) <= 0) { 453 if(sk_PKCS7_SIGNER_INFO_num(sinfos) <= 0) {
356 PKCS7err(PKCS7_F_PKCS7_GET0_SIGNERS,PKCS7_R_NO_SIGNERS); 454 PKCS7err(PKCS7_F_PKCS7_GET0_SIGNERS,PKCS7_R_NO_SIGNERS);
357 return NULL; 455 return 0;
358 } 456 }
359 457
360 if(!(signers = sk_X509_new_null())) { 458 if(!(signers = sk_X509_new_null())) {
@@ -377,12 +475,12 @@ STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags)
377 if (!signer) { 475 if (!signer) {
378 PKCS7err(PKCS7_F_PKCS7_GET0_SIGNERS,PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND); 476 PKCS7err(PKCS7_F_PKCS7_GET0_SIGNERS,PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND);
379 sk_X509_free(signers); 477 sk_X509_free(signers);
380 return NULL; 478 return 0;
381 } 479 }
382 480
383 if (!sk_X509_push(signers, signer)) { 481 if (!sk_X509_push(signers, signer)) {
384 sk_X509_free(signers); 482 sk_X509_free(signers);
385 return NULL; 483 return NULL;
386 } 484 }
387 } 485 }
388 return signers; 486 return signers;
@@ -405,7 +503,7 @@ PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher,
405 503
406 if (!PKCS7_set_type(p7, NID_pkcs7_enveloped)) 504 if (!PKCS7_set_type(p7, NID_pkcs7_enveloped))
407 goto err; 505 goto err;
408 if(!PKCS7_set_cipher(p7, cipher)) { 506 if (!PKCS7_set_cipher(p7, cipher)) {
409 PKCS7err(PKCS7_F_PKCS7_ENCRYPT,PKCS7_R_ERROR_SETTING_CIPHER); 507 PKCS7err(PKCS7_F_PKCS7_ENCRYPT,PKCS7_R_ERROR_SETTING_CIPHER);
410 goto err; 508 goto err;
411 } 509 }
@@ -419,22 +517,11 @@ PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher,
419 } 517 }
420 } 518 }
421 519
422 if(!(p7bio = PKCS7_dataInit(p7, NULL))) { 520 if (flags & PKCS7_STREAM)
423 PKCS7err(PKCS7_F_PKCS7_ENCRYPT,ERR_R_MALLOC_FAILURE); 521 return p7;
424 goto err;
425 }
426
427 SMIME_crlf_copy(in, p7bio, flags);
428
429 (void)BIO_flush(p7bio);
430
431 if (!PKCS7_dataFinal(p7,p7bio)) {
432 PKCS7err(PKCS7_F_PKCS7_ENCRYPT,PKCS7_R_PKCS7_DATAFINAL_ERROR);
433 goto err;
434 }
435 BIO_free_all(p7bio);
436 522
437 return p7; 523 if (PKCS7_final(p7, in, flags))
524 return p7;
438 525
439 err: 526 err:
440 527
diff --git a/src/lib/libssl/src/crypto/pkcs7/pkcs7.h b/src/lib/libssl/src/crypto/pkcs7/pkcs7.h
index cc092d262d..e4d443193c 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pkcs7.h
+++ b/src/lib/libssl/src/crypto/pkcs7/pkcs7.h
@@ -232,6 +232,9 @@ DECLARE_PKCS12_STACK_OF(PKCS7)
232#define PKCS7_type_is_signedAndEnveloped(a) \ 232#define PKCS7_type_is_signedAndEnveloped(a) \
233 (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped) 233 (OBJ_obj2nid((a)->type) == NID_pkcs7_signedAndEnveloped)
234#define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data) 234#define PKCS7_type_is_data(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_data)
235#define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest)
236#define PKCS7_type_is_encrypted(a) \
237 (OBJ_obj2nid((a)->type) == NID_pkcs7_encrypted)
235 238
236#define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest) 239#define PKCS7_type_is_digest(a) (OBJ_obj2nid((a)->type) == NID_pkcs7_digest)
237 240
@@ -242,14 +245,6 @@ DECLARE_PKCS12_STACK_OF(PKCS7)
242 245
243#define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7)) 246#define PKCS7_is_detached(p7) (PKCS7_type_is_signed(p7) && PKCS7_get_detached(p7))
244 247
245#ifdef SSLEAY_MACROS
246#ifndef PKCS7_ISSUER_AND_SERIAL_digest
247#define PKCS7_ISSUER_AND_SERIAL_digest(data,type,md,len) \
248 ASN1_digest((int (*)())i2d_PKCS7_ISSUER_AND_SERIAL,type,\
249 (char *)data,md,len)
250#endif
251#endif
252
253/* S/MIME related flags */ 248/* S/MIME related flags */
254 249
255#define PKCS7_TEXT 0x1 250#define PKCS7_TEXT 0x1
@@ -266,6 +261,8 @@ DECLARE_PKCS12_STACK_OF(PKCS7)
266#define PKCS7_CRLFEOL 0x800 261#define PKCS7_CRLFEOL 0x800
267#define PKCS7_STREAM 0x1000 262#define PKCS7_STREAM 0x1000
268#define PKCS7_NOCRL 0x2000 263#define PKCS7_NOCRL 0x2000
264#define PKCS7_PARTIAL 0x4000
265#define PKCS7_REUSE_DIGEST 0x8000
269 266
270/* Flags: for compatibility with older code */ 267/* Flags: for compatibility with older code */
271 268
@@ -281,7 +278,6 @@ DECLARE_PKCS12_STACK_OF(PKCS7)
281 278
282DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL) 279DECLARE_ASN1_FUNCTIONS(PKCS7_ISSUER_AND_SERIAL)
283 280
284#ifndef SSLEAY_MACROS
285int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,const EVP_MD *type, 281int PKCS7_ISSUER_AND_SERIAL_digest(PKCS7_ISSUER_AND_SERIAL *data,const EVP_MD *type,
286 unsigned char *md,unsigned int *len); 282 unsigned char *md,unsigned int *len);
287#ifndef OPENSSL_NO_FP_API 283#ifndef OPENSSL_NO_FP_API
@@ -291,7 +287,8 @@ int i2d_PKCS7_fp(FILE *fp,PKCS7 *p7);
291PKCS7 *PKCS7_dup(PKCS7 *p7); 287PKCS7 *PKCS7_dup(PKCS7 *p7);
292PKCS7 *d2i_PKCS7_bio(BIO *bp,PKCS7 **p7); 288PKCS7 *d2i_PKCS7_bio(BIO *bp,PKCS7 **p7);
293int i2d_PKCS7_bio(BIO *bp,PKCS7 *p7); 289int i2d_PKCS7_bio(BIO *bp,PKCS7 *p7);
294#endif 290int i2d_PKCS7_bio_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
291int PEM_write_bio_PKCS7_stream(BIO *out, PKCS7 *p7, BIO *in, int flags);
295 292
296DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO) 293DECLARE_ASN1_FUNCTIONS(PKCS7_SIGNER_INFO)
297DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO) 294DECLARE_ASN1_FUNCTIONS(PKCS7_RECIP_INFO)
@@ -307,6 +304,7 @@ DECLARE_ASN1_ITEM(PKCS7_ATTR_SIGN)
307DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY) 304DECLARE_ASN1_ITEM(PKCS7_ATTR_VERIFY)
308 305
309DECLARE_ASN1_NDEF_FUNCTION(PKCS7) 306DECLARE_ASN1_NDEF_FUNCTION(PKCS7)
307DECLARE_ASN1_PRINT_FUNCTION(PKCS7)
310 308
311long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg); 309long PKCS7_ctrl(PKCS7 *p7, int cmd, long larg, char *parg);
312 310
@@ -315,6 +313,7 @@ int PKCS7_set0_type_other(PKCS7 *p7, int type, ASN1_TYPE *other);
315int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data); 313int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data);
316int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey, 314int PKCS7_SIGNER_INFO_set(PKCS7_SIGNER_INFO *p7i, X509 *x509, EVP_PKEY *pkey,
317 const EVP_MD *dgst); 315 const EVP_MD *dgst);
316int PKCS7_SIGNER_INFO_sign(PKCS7_SIGNER_INFO *si);
318int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i); 317int PKCS7_add_signer(PKCS7 *p7, PKCS7_SIGNER_INFO *p7i);
319int PKCS7_add_certificate(PKCS7 *p7, X509 *x509); 318int PKCS7_add_certificate(PKCS7 *p7, X509 *x509);
320int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509); 319int PKCS7_add_crl(PKCS7 *p7, X509_CRL *x509);
@@ -336,9 +335,13 @@ int PKCS7_set_digest(PKCS7 *p7, const EVP_MD *md);
336STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7); 335STACK_OF(PKCS7_SIGNER_INFO) *PKCS7_get_signer_info(PKCS7 *p7);
337 336
338PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509); 337PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509);
338void PKCS7_SIGNER_INFO_get0_algs(PKCS7_SIGNER_INFO *si, EVP_PKEY **pk,
339 X509_ALGOR **pdig, X509_ALGOR **psig);
340void PKCS7_RECIP_INFO_get0_alg(PKCS7_RECIP_INFO *ri, X509_ALGOR **penc);
339int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri); 341int PKCS7_add_recipient_info(PKCS7 *p7, PKCS7_RECIP_INFO *ri);
340int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509); 342int PKCS7_RECIP_INFO_set(PKCS7_RECIP_INFO *p7i, X509 *x509);
341int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher); 343int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher);
344int PKCS7_stream(unsigned char ***boundary, PKCS7 *p7);
342 345
343PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx); 346PKCS7_ISSUER_AND_SERIAL *PKCS7_get_issuer_and_serial(PKCS7 *p7, int idx);
344ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk); 347ASN1_OCTET_STRING *PKCS7_digest_from_attributes(STACK_OF(X509_ATTRIBUTE) *sk);
@@ -355,6 +358,12 @@ int PKCS7_set_attributes(PKCS7_SIGNER_INFO *p7si,STACK_OF(X509_ATTRIBUTE) *sk);
355 358
356PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, 359PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs,
357 BIO *data, int flags); 360 BIO *data, int flags);
361
362PKCS7_SIGNER_INFO *PKCS7_sign_add_signer(PKCS7 *p7,
363 X509 *signcert, EVP_PKEY *pkey, const EVP_MD *md,
364 int flags);
365
366int PKCS7_final(PKCS7 *p7, BIO *data, int flags);
358int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, 367int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
359 BIO *indata, BIO *out, int flags); 368 BIO *indata, BIO *out, int flags);
360STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags); 369STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags);
@@ -367,10 +376,16 @@ int PKCS7_add_attrib_smimecap(PKCS7_SIGNER_INFO *si,
367STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si); 376STACK_OF(X509_ALGOR) *PKCS7_get_smimecap(PKCS7_SIGNER_INFO *si);
368int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg); 377int PKCS7_simple_smimecap(STACK_OF(X509_ALGOR) *sk, int nid, int arg);
369 378
379int PKCS7_add_attrib_content_type(PKCS7_SIGNER_INFO *si, ASN1_OBJECT *coid);
380int PKCS7_add0_attrib_signing_time(PKCS7_SIGNER_INFO *si, ASN1_TIME *t);
381int PKCS7_add1_attrib_digest(PKCS7_SIGNER_INFO *si,
382 const unsigned char *md, int mdlen);
383
370int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags); 384int SMIME_write_PKCS7(BIO *bio, PKCS7 *p7, BIO *data, int flags);
371PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); 385PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont);
372int SMIME_crlf_copy(BIO *in, BIO *out, int flags); 386
373int SMIME_text(BIO *in, BIO *out); 387BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7);
388
374 389
375/* BEGIN ERROR CODES */ 390/* BEGIN ERROR CODES */
376/* The following lines are auto generated by the script mkerr.pl. Any changes 391/* The following lines are auto generated by the script mkerr.pl. Any changes
@@ -383,12 +398,17 @@ void ERR_load_PKCS7_strings(void);
383/* Function codes. */ 398/* Function codes. */
384#define PKCS7_F_B64_READ_PKCS7 120 399#define PKCS7_F_B64_READ_PKCS7 120
385#define PKCS7_F_B64_WRITE_PKCS7 121 400#define PKCS7_F_B64_WRITE_PKCS7 121
401#define PKCS7_F_DO_PKCS7_SIGNED_ATTRIB 136
402#define PKCS7_F_I2D_PKCS7_BIO_STREAM 140
403#define PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME 135
386#define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118 404#define PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP 118
387#define PKCS7_F_PKCS7_ADD_CERTIFICATE 100 405#define PKCS7_F_PKCS7_ADD_CERTIFICATE 100
388#define PKCS7_F_PKCS7_ADD_CRL 101 406#define PKCS7_F_PKCS7_ADD_CRL 101
389#define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102 407#define PKCS7_F_PKCS7_ADD_RECIPIENT_INFO 102
408#define PKCS7_F_PKCS7_ADD_SIGNATURE 131
390#define PKCS7_F_PKCS7_ADD_SIGNER 103 409#define PKCS7_F_PKCS7_ADD_SIGNER 103
391#define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125 410#define PKCS7_F_PKCS7_BIO_ADD_DIGEST 125
411#define PKCS7_F_PKCS7_COPY_EXISTING_DIGEST 138
392#define PKCS7_F_PKCS7_CTRL 104 412#define PKCS7_F_PKCS7_CTRL 104
393#define PKCS7_F_PKCS7_DATADECODE 112 413#define PKCS7_F_PKCS7_DATADECODE 112
394#define PKCS7_F_PKCS7_DATAFINAL 128 414#define PKCS7_F_PKCS7_DATAFINAL 128
@@ -396,15 +416,22 @@ void ERR_load_PKCS7_strings(void);
396#define PKCS7_F_PKCS7_DATASIGN 106 416#define PKCS7_F_PKCS7_DATASIGN 106
397#define PKCS7_F_PKCS7_DATAVERIFY 107 417#define PKCS7_F_PKCS7_DATAVERIFY 107
398#define PKCS7_F_PKCS7_DECRYPT 114 418#define PKCS7_F_PKCS7_DECRYPT 114
419#define PKCS7_F_PKCS7_DECRYPT_RINFO 133
420#define PKCS7_F_PKCS7_ENCODE_RINFO 132
399#define PKCS7_F_PKCS7_ENCRYPT 115 421#define PKCS7_F_PKCS7_ENCRYPT 115
422#define PKCS7_F_PKCS7_FINAL 134
400#define PKCS7_F_PKCS7_FIND_DIGEST 127 423#define PKCS7_F_PKCS7_FIND_DIGEST 127
401#define PKCS7_F_PKCS7_GET0_SIGNERS 124 424#define PKCS7_F_PKCS7_GET0_SIGNERS 124
425#define PKCS7_F_PKCS7_RECIP_INFO_SET 130
402#define PKCS7_F_PKCS7_SET_CIPHER 108 426#define PKCS7_F_PKCS7_SET_CIPHER 108
403#define PKCS7_F_PKCS7_SET_CONTENT 109 427#define PKCS7_F_PKCS7_SET_CONTENT 109
404#define PKCS7_F_PKCS7_SET_DIGEST 126 428#define PKCS7_F_PKCS7_SET_DIGEST 126
405#define PKCS7_F_PKCS7_SET_TYPE 110 429#define PKCS7_F_PKCS7_SET_TYPE 110
406#define PKCS7_F_PKCS7_SIGN 116 430#define PKCS7_F_PKCS7_SIGN 116
407#define PKCS7_F_PKCS7_SIGNATUREVERIFY 113 431#define PKCS7_F_PKCS7_SIGNATUREVERIFY 113
432#define PKCS7_F_PKCS7_SIGNER_INFO_SET 129
433#define PKCS7_F_PKCS7_SIGNER_INFO_SIGN 139
434#define PKCS7_F_PKCS7_SIGN_ADD_SIGNER 137
408#define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119 435#define PKCS7_F_PKCS7_SIMPLE_SMIMECAP 119
409#define PKCS7_F_PKCS7_VERIFY 117 436#define PKCS7_F_PKCS7_VERIFY 117
410#define PKCS7_F_SMIME_READ_PKCS7 122 437#define PKCS7_F_SMIME_READ_PKCS7 122
@@ -415,10 +442,13 @@ void ERR_load_PKCS7_strings(void);
415#define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144 442#define PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 144
416#define PKCS7_R_CIPHER_NOT_INITIALIZED 116 443#define PKCS7_R_CIPHER_NOT_INITIALIZED 116
417#define PKCS7_R_CONTENT_AND_DATA_PRESENT 118 444#define PKCS7_R_CONTENT_AND_DATA_PRESENT 118
445#define PKCS7_R_CTRL_ERROR 152
418#define PKCS7_R_DECODE_ERROR 130 446#define PKCS7_R_DECODE_ERROR 130
419#define PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH 100 447#define PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH 100
420#define PKCS7_R_DECRYPT_ERROR 119 448#define PKCS7_R_DECRYPT_ERROR 119
421#define PKCS7_R_DIGEST_FAILURE 101 449#define PKCS7_R_DIGEST_FAILURE 101
450#define PKCS7_R_ENCRYPTION_CTRL_FAILURE 149
451#define PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 150
422#define PKCS7_R_ERROR_ADDING_RECIPIENT 120 452#define PKCS7_R_ERROR_ADDING_RECIPIENT 120
423#define PKCS7_R_ERROR_SETTING_CIPHER 121 453#define PKCS7_R_ERROR_SETTING_CIPHER 121
424#define PKCS7_R_INVALID_MIME_TYPE 131 454#define PKCS7_R_INVALID_MIME_TYPE 131
@@ -429,6 +459,8 @@ void ERR_load_PKCS7_strings(void);
429#define PKCS7_R_MISSING_CERIPEND_INFO 103 459#define PKCS7_R_MISSING_CERIPEND_INFO 103
430#define PKCS7_R_NO_CONTENT 122 460#define PKCS7_R_NO_CONTENT 122
431#define PKCS7_R_NO_CONTENT_TYPE 135 461#define PKCS7_R_NO_CONTENT_TYPE 135
462#define PKCS7_R_NO_DEFAULT_DIGEST 151
463#define PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND 154
432#define PKCS7_R_NO_MULTIPART_BODY_FAILURE 136 464#define PKCS7_R_NO_MULTIPART_BODY_FAILURE 136
433#define PKCS7_R_NO_MULTIPART_BOUNDARY 137 465#define PKCS7_R_NO_MULTIPART_BOUNDARY 137
434#define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115 466#define PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE 115
@@ -438,6 +470,7 @@ void ERR_load_PKCS7_strings(void);
438#define PKCS7_R_NO_SIG_CONTENT_TYPE 138 470#define PKCS7_R_NO_SIG_CONTENT_TYPE 138
439#define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104 471#define PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE 104
440#define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124 472#define PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR 124
473#define PKCS7_R_PKCS7_ADD_SIGNER_ERROR 153
441#define PKCS7_R_PKCS7_DATAFINAL 126 474#define PKCS7_R_PKCS7_DATAFINAL 126
442#define PKCS7_R_PKCS7_DATAFINAL_ERROR 125 475#define PKCS7_R_PKCS7_DATAFINAL_ERROR 125
443#define PKCS7_R_PKCS7_DATASIGN 145 476#define PKCS7_R_PKCS7_DATASIGN 145
@@ -446,6 +479,8 @@ void ERR_load_PKCS7_strings(void);
446#define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127 479#define PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 127
447#define PKCS7_R_SIGNATURE_FAILURE 105 480#define PKCS7_R_SIGNATURE_FAILURE 105
448#define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128 481#define PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND 128
482#define PKCS7_R_SIGNING_CTRL_FAILURE 147
483#define PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 148
449#define PKCS7_R_SIG_INVALID_MIME_TYPE 141 484#define PKCS7_R_SIG_INVALID_MIME_TYPE 141
450#define PKCS7_R_SMIME_TEXT_ERROR 129 485#define PKCS7_R_SMIME_TEXT_ERROR 129
451#define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106 486#define PKCS7_R_UNABLE_TO_FIND_CERTIFICATE 106
diff --git a/src/lib/libssl/src/crypto/pkcs7/pkcs7err.c b/src/lib/libssl/src/crypto/pkcs7/pkcs7err.c
index c0e3d4cd33..d0af32a265 100644
--- a/src/lib/libssl/src/crypto/pkcs7/pkcs7err.c
+++ b/src/lib/libssl/src/crypto/pkcs7/pkcs7err.c
@@ -1,6 +1,6 @@
1/* crypto/pkcs7/pkcs7err.c */ 1/* crypto/pkcs7/pkcs7err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -72,12 +72,17 @@ static ERR_STRING_DATA PKCS7_str_functs[]=
72 { 72 {
73{ERR_FUNC(PKCS7_F_B64_READ_PKCS7), "B64_READ_PKCS7"}, 73{ERR_FUNC(PKCS7_F_B64_READ_PKCS7), "B64_READ_PKCS7"},
74{ERR_FUNC(PKCS7_F_B64_WRITE_PKCS7), "B64_WRITE_PKCS7"}, 74{ERR_FUNC(PKCS7_F_B64_WRITE_PKCS7), "B64_WRITE_PKCS7"},
75{ERR_FUNC(PKCS7_F_DO_PKCS7_SIGNED_ATTRIB), "DO_PKCS7_SIGNED_ATTRIB"},
76{ERR_FUNC(PKCS7_F_I2D_PKCS7_BIO_STREAM), "i2d_PKCS7_bio_stream"},
77{ERR_FUNC(PKCS7_F_PKCS7_ADD0_ATTRIB_SIGNING_TIME), "PKCS7_add0_attrib_signing_time"},
75{ERR_FUNC(PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP), "PKCS7_add_attrib_smimecap"}, 78{ERR_FUNC(PKCS7_F_PKCS7_ADD_ATTRIB_SMIMECAP), "PKCS7_add_attrib_smimecap"},
76{ERR_FUNC(PKCS7_F_PKCS7_ADD_CERTIFICATE), "PKCS7_add_certificate"}, 79{ERR_FUNC(PKCS7_F_PKCS7_ADD_CERTIFICATE), "PKCS7_add_certificate"},
77{ERR_FUNC(PKCS7_F_PKCS7_ADD_CRL), "PKCS7_add_crl"}, 80{ERR_FUNC(PKCS7_F_PKCS7_ADD_CRL), "PKCS7_add_crl"},
78{ERR_FUNC(PKCS7_F_PKCS7_ADD_RECIPIENT_INFO), "PKCS7_add_recipient_info"}, 81{ERR_FUNC(PKCS7_F_PKCS7_ADD_RECIPIENT_INFO), "PKCS7_add_recipient_info"},
82{ERR_FUNC(PKCS7_F_PKCS7_ADD_SIGNATURE), "PKCS7_add_signature"},
79{ERR_FUNC(PKCS7_F_PKCS7_ADD_SIGNER), "PKCS7_add_signer"}, 83{ERR_FUNC(PKCS7_F_PKCS7_ADD_SIGNER), "PKCS7_add_signer"},
80{ERR_FUNC(PKCS7_F_PKCS7_BIO_ADD_DIGEST), "PKCS7_BIO_ADD_DIGEST"}, 84{ERR_FUNC(PKCS7_F_PKCS7_BIO_ADD_DIGEST), "PKCS7_BIO_ADD_DIGEST"},
85{ERR_FUNC(PKCS7_F_PKCS7_COPY_EXISTING_DIGEST), "PKCS7_COPY_EXISTING_DIGEST"},
81{ERR_FUNC(PKCS7_F_PKCS7_CTRL), "PKCS7_ctrl"}, 86{ERR_FUNC(PKCS7_F_PKCS7_CTRL), "PKCS7_ctrl"},
82{ERR_FUNC(PKCS7_F_PKCS7_DATADECODE), "PKCS7_dataDecode"}, 87{ERR_FUNC(PKCS7_F_PKCS7_DATADECODE), "PKCS7_dataDecode"},
83{ERR_FUNC(PKCS7_F_PKCS7_DATAFINAL), "PKCS7_dataFinal"}, 88{ERR_FUNC(PKCS7_F_PKCS7_DATAFINAL), "PKCS7_dataFinal"},
@@ -85,15 +90,22 @@ static ERR_STRING_DATA PKCS7_str_functs[]=
85{ERR_FUNC(PKCS7_F_PKCS7_DATASIGN), "PKCS7_DATASIGN"}, 90{ERR_FUNC(PKCS7_F_PKCS7_DATASIGN), "PKCS7_DATASIGN"},
86{ERR_FUNC(PKCS7_F_PKCS7_DATAVERIFY), "PKCS7_dataVerify"}, 91{ERR_FUNC(PKCS7_F_PKCS7_DATAVERIFY), "PKCS7_dataVerify"},
87{ERR_FUNC(PKCS7_F_PKCS7_DECRYPT), "PKCS7_decrypt"}, 92{ERR_FUNC(PKCS7_F_PKCS7_DECRYPT), "PKCS7_decrypt"},
93{ERR_FUNC(PKCS7_F_PKCS7_DECRYPT_RINFO), "PKCS7_DECRYPT_RINFO"},
94{ERR_FUNC(PKCS7_F_PKCS7_ENCODE_RINFO), "PKCS7_ENCODE_RINFO"},
88{ERR_FUNC(PKCS7_F_PKCS7_ENCRYPT), "PKCS7_encrypt"}, 95{ERR_FUNC(PKCS7_F_PKCS7_ENCRYPT), "PKCS7_encrypt"},
96{ERR_FUNC(PKCS7_F_PKCS7_FINAL), "PKCS7_final"},
89{ERR_FUNC(PKCS7_F_PKCS7_FIND_DIGEST), "PKCS7_FIND_DIGEST"}, 97{ERR_FUNC(PKCS7_F_PKCS7_FIND_DIGEST), "PKCS7_FIND_DIGEST"},
90{ERR_FUNC(PKCS7_F_PKCS7_GET0_SIGNERS), "PKCS7_get0_signers"}, 98{ERR_FUNC(PKCS7_F_PKCS7_GET0_SIGNERS), "PKCS7_get0_signers"},
99{ERR_FUNC(PKCS7_F_PKCS7_RECIP_INFO_SET), "PKCS7_RECIP_INFO_set"},
91{ERR_FUNC(PKCS7_F_PKCS7_SET_CIPHER), "PKCS7_set_cipher"}, 100{ERR_FUNC(PKCS7_F_PKCS7_SET_CIPHER), "PKCS7_set_cipher"},
92{ERR_FUNC(PKCS7_F_PKCS7_SET_CONTENT), "PKCS7_set_content"}, 101{ERR_FUNC(PKCS7_F_PKCS7_SET_CONTENT), "PKCS7_set_content"},
93{ERR_FUNC(PKCS7_F_PKCS7_SET_DIGEST), "PKCS7_set_digest"}, 102{ERR_FUNC(PKCS7_F_PKCS7_SET_DIGEST), "PKCS7_set_digest"},
94{ERR_FUNC(PKCS7_F_PKCS7_SET_TYPE), "PKCS7_set_type"}, 103{ERR_FUNC(PKCS7_F_PKCS7_SET_TYPE), "PKCS7_set_type"},
95{ERR_FUNC(PKCS7_F_PKCS7_SIGN), "PKCS7_sign"}, 104{ERR_FUNC(PKCS7_F_PKCS7_SIGN), "PKCS7_sign"},
96{ERR_FUNC(PKCS7_F_PKCS7_SIGNATUREVERIFY), "PKCS7_signatureVerify"}, 105{ERR_FUNC(PKCS7_F_PKCS7_SIGNATUREVERIFY), "PKCS7_signatureVerify"},
106{ERR_FUNC(PKCS7_F_PKCS7_SIGNER_INFO_SET), "PKCS7_SIGNER_INFO_set"},
107{ERR_FUNC(PKCS7_F_PKCS7_SIGNER_INFO_SIGN), "PKCS7_SIGNER_INFO_sign"},
108{ERR_FUNC(PKCS7_F_PKCS7_SIGN_ADD_SIGNER), "PKCS7_sign_add_signer"},
97{ERR_FUNC(PKCS7_F_PKCS7_SIMPLE_SMIMECAP), "PKCS7_simple_smimecap"}, 109{ERR_FUNC(PKCS7_F_PKCS7_SIMPLE_SMIMECAP), "PKCS7_simple_smimecap"},
98{ERR_FUNC(PKCS7_F_PKCS7_VERIFY), "PKCS7_verify"}, 110{ERR_FUNC(PKCS7_F_PKCS7_VERIFY), "PKCS7_verify"},
99{ERR_FUNC(PKCS7_F_SMIME_READ_PKCS7), "SMIME_read_PKCS7"}, 111{ERR_FUNC(PKCS7_F_SMIME_READ_PKCS7), "SMIME_read_PKCS7"},
@@ -107,10 +119,13 @@ static ERR_STRING_DATA PKCS7_str_reasons[]=
107{ERR_REASON(PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER),"cipher has no object identifier"}, 119{ERR_REASON(PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER),"cipher has no object identifier"},
108{ERR_REASON(PKCS7_R_CIPHER_NOT_INITIALIZED),"cipher not initialized"}, 120{ERR_REASON(PKCS7_R_CIPHER_NOT_INITIALIZED),"cipher not initialized"},
109{ERR_REASON(PKCS7_R_CONTENT_AND_DATA_PRESENT),"content and data present"}, 121{ERR_REASON(PKCS7_R_CONTENT_AND_DATA_PRESENT),"content and data present"},
122{ERR_REASON(PKCS7_R_CTRL_ERROR) ,"ctrl error"},
110{ERR_REASON(PKCS7_R_DECODE_ERROR) ,"decode error"}, 123{ERR_REASON(PKCS7_R_DECODE_ERROR) ,"decode error"},
111{ERR_REASON(PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH),"decrypted key is wrong length"}, 124{ERR_REASON(PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH),"decrypted key is wrong length"},
112{ERR_REASON(PKCS7_R_DECRYPT_ERROR) ,"decrypt error"}, 125{ERR_REASON(PKCS7_R_DECRYPT_ERROR) ,"decrypt error"},
113{ERR_REASON(PKCS7_R_DIGEST_FAILURE) ,"digest failure"}, 126{ERR_REASON(PKCS7_R_DIGEST_FAILURE) ,"digest failure"},
127{ERR_REASON(PKCS7_R_ENCRYPTION_CTRL_FAILURE),"encryption ctrl failure"},
128{ERR_REASON(PKCS7_R_ENCRYPTION_NOT_SUPPORTED_FOR_THIS_KEY_TYPE),"encryption not supported for this key type"},
114{ERR_REASON(PKCS7_R_ERROR_ADDING_RECIPIENT),"error adding recipient"}, 129{ERR_REASON(PKCS7_R_ERROR_ADDING_RECIPIENT),"error adding recipient"},
115{ERR_REASON(PKCS7_R_ERROR_SETTING_CIPHER),"error setting cipher"}, 130{ERR_REASON(PKCS7_R_ERROR_SETTING_CIPHER),"error setting cipher"},
116{ERR_REASON(PKCS7_R_INVALID_MIME_TYPE) ,"invalid mime type"}, 131{ERR_REASON(PKCS7_R_INVALID_MIME_TYPE) ,"invalid mime type"},
@@ -121,6 +136,8 @@ static ERR_STRING_DATA PKCS7_str_reasons[]=
121{ERR_REASON(PKCS7_R_MISSING_CERIPEND_INFO),"missing ceripend info"}, 136{ERR_REASON(PKCS7_R_MISSING_CERIPEND_INFO),"missing ceripend info"},
122{ERR_REASON(PKCS7_R_NO_CONTENT) ,"no content"}, 137{ERR_REASON(PKCS7_R_NO_CONTENT) ,"no content"},
123{ERR_REASON(PKCS7_R_NO_CONTENT_TYPE) ,"no content type"}, 138{ERR_REASON(PKCS7_R_NO_CONTENT_TYPE) ,"no content type"},
139{ERR_REASON(PKCS7_R_NO_DEFAULT_DIGEST) ,"no default digest"},
140{ERR_REASON(PKCS7_R_NO_MATCHING_DIGEST_TYPE_FOUND),"no matching digest type found"},
124{ERR_REASON(PKCS7_R_NO_MULTIPART_BODY_FAILURE),"no multipart body failure"}, 141{ERR_REASON(PKCS7_R_NO_MULTIPART_BODY_FAILURE),"no multipart body failure"},
125{ERR_REASON(PKCS7_R_NO_MULTIPART_BOUNDARY),"no multipart boundary"}, 142{ERR_REASON(PKCS7_R_NO_MULTIPART_BOUNDARY),"no multipart boundary"},
126{ERR_REASON(PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE),"no recipient matches certificate"}, 143{ERR_REASON(PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE),"no recipient matches certificate"},
@@ -130,6 +147,7 @@ static ERR_STRING_DATA PKCS7_str_reasons[]=
130{ERR_REASON(PKCS7_R_NO_SIG_CONTENT_TYPE) ,"no sig content type"}, 147{ERR_REASON(PKCS7_R_NO_SIG_CONTENT_TYPE) ,"no sig content type"},
131{ERR_REASON(PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE),"operation not supported on this type"}, 148{ERR_REASON(PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE),"operation not supported on this type"},
132{ERR_REASON(PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR),"pkcs7 add signature error"}, 149{ERR_REASON(PKCS7_R_PKCS7_ADD_SIGNATURE_ERROR),"pkcs7 add signature error"},
150{ERR_REASON(PKCS7_R_PKCS7_ADD_SIGNER_ERROR),"pkcs7 add signer error"},
133{ERR_REASON(PKCS7_R_PKCS7_DATAFINAL) ,"pkcs7 datafinal"}, 151{ERR_REASON(PKCS7_R_PKCS7_DATAFINAL) ,"pkcs7 datafinal"},
134{ERR_REASON(PKCS7_R_PKCS7_DATAFINAL_ERROR),"pkcs7 datafinal error"}, 152{ERR_REASON(PKCS7_R_PKCS7_DATAFINAL_ERROR),"pkcs7 datafinal error"},
135{ERR_REASON(PKCS7_R_PKCS7_DATASIGN) ,"pkcs7 datasign"}, 153{ERR_REASON(PKCS7_R_PKCS7_DATASIGN) ,"pkcs7 datasign"},
@@ -138,6 +156,8 @@ static ERR_STRING_DATA PKCS7_str_reasons[]=
138{ERR_REASON(PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE),"private key does not match certificate"}, 156{ERR_REASON(PKCS7_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE),"private key does not match certificate"},
139{ERR_REASON(PKCS7_R_SIGNATURE_FAILURE) ,"signature failure"}, 157{ERR_REASON(PKCS7_R_SIGNATURE_FAILURE) ,"signature failure"},
140{ERR_REASON(PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND),"signer certificate not found"}, 158{ERR_REASON(PKCS7_R_SIGNER_CERTIFICATE_NOT_FOUND),"signer certificate not found"},
159{ERR_REASON(PKCS7_R_SIGNING_CTRL_FAILURE),"signing ctrl failure"},
160{ERR_REASON(PKCS7_R_SIGNING_NOT_SUPPORTED_FOR_THIS_KEY_TYPE),"signing not supported for this key type"},
141{ERR_REASON(PKCS7_R_SIG_INVALID_MIME_TYPE),"sig invalid mime type"}, 161{ERR_REASON(PKCS7_R_SIG_INVALID_MIME_TYPE),"sig invalid mime type"},
142{ERR_REASON(PKCS7_R_SMIME_TEXT_ERROR) ,"smime text error"}, 162{ERR_REASON(PKCS7_R_SMIME_TEXT_ERROR) ,"smime text error"},
143{ERR_REASON(PKCS7_R_UNABLE_TO_FIND_CERTIFICATE),"unable to find certificate"}, 163{ERR_REASON(PKCS7_R_UNABLE_TO_FIND_CERTIFICATE),"unable to find certificate"},
diff --git a/src/lib/libssl/src/crypto/rand/Makefile b/src/lib/libssl/src/crypto/rand/Makefile
index 30794305cb..27694aa664 100644
--- a/src/lib/libssl/src/crypto/rand/Makefile
+++ b/src/lib/libssl/src/crypto/rand/Makefile
@@ -17,9 +17,9 @@ TEST= randtest.c
17APPS= 17APPS=
18 18
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC=md_rand.c randfile.c rand_lib.c rand_eng.c rand_err.c rand_egd.c \ 20LIBSRC=md_rand.c randfile.c rand_lib.c rand_err.c rand_egd.c \
21 rand_win.c rand_unix.c rand_os2.c rand_nw.c 21 rand_win.c rand_unix.c rand_os2.c rand_nw.c
22LIBOBJ=md_rand.o randfile.o rand_lib.o rand_eng.o rand_err.o rand_egd.o \ 22LIBOBJ=md_rand.o randfile.o rand_lib.o rand_err.o rand_egd.o \
23 rand_win.o rand_unix.o rand_os2.o rand_nw.o 23 rand_win.o rand_unix.o rand_os2.o rand_nw.o
24 24
25SRC= $(LIBSRC) 25SRC= $(LIBSRC)
@@ -35,7 +35,7 @@ top:
35all: lib 35all: lib
36 36
37lib: $(LIBOBJ) 37lib: $(LIBOBJ)
38 $(ARX) $(LIB) $(LIBOBJ) 38 $(AR) $(LIB) $(LIBOBJ)
39 $(RANLIB) $(LIB) || echo Never mind. 39 $(RANLIB) $(LIB) || echo Never mind.
40 @touch lib 40 @touch lib
41 41
@@ -79,34 +79,17 @@ clean:
79md_rand.o: ../../e_os.h ../../include/openssl/asn1.h 79md_rand.o: ../../e_os.h ../../include/openssl/asn1.h
80md_rand.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 80md_rand.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
81md_rand.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 81md_rand.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
82md_rand.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 82md_rand.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
83md_rand.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 83md_rand.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
84md_rand.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 84md_rand.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
85md_rand.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 85md_rand.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
86md_rand.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 86md_rand.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
87md_rand.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 87md_rand.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
88md_rand.o: ../../include/openssl/symhacks.h md_rand.c rand_lcl.h 88md_rand.o: md_rand.c rand_lcl.h
89rand_egd.o: ../../include/openssl/buffer.h ../../include/openssl/e_os2.h 89rand_egd.o: ../../include/openssl/buffer.h ../../include/openssl/e_os2.h
90rand_egd.o: ../../include/openssl/opensslconf.h 90rand_egd.o: ../../include/openssl/opensslconf.h
91rand_egd.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h 91rand_egd.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
92rand_egd.o: rand_egd.c 92rand_egd.o: rand_egd.c
93rand_eng.o: ../../e_os.h ../../include/openssl/asn1.h
94rand_eng.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
95rand_eng.o: ../../include/openssl/crypto.h ../../include/openssl/des.h
96rand_eng.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
97rand_eng.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
98rand_eng.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
99rand_eng.o: ../../include/openssl/err.h ../../include/openssl/evp.h
100rand_eng.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h
101rand_eng.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
102rand_eng.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
103rand_eng.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
104rand_eng.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
105rand_eng.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
106rand_eng.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
107rand_eng.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
108rand_eng.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
109rand_eng.o: ../cryptlib.h rand_eng.c rand_lcl.h
110rand_err.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 93rand_err.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h
111rand_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 94rand_err.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
112rand_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h 95rand_err.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
@@ -116,39 +99,34 @@ rand_err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
116rand_err.o: rand_err.c 99rand_err.o: rand_err.c
117rand_lib.o: ../../e_os.h ../../include/openssl/asn1.h 100rand_lib.o: ../../e_os.h ../../include/openssl/asn1.h
118rand_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 101rand_lib.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
119rand_lib.o: ../../include/openssl/crypto.h ../../include/openssl/des.h 102rand_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
120rand_lib.o: ../../include/openssl/des_old.h ../../include/openssl/e_os2.h
121rand_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 103rand_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
122rand_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h 104rand_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/engine.h
123rand_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 105rand_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
124rand_lib.o: ../../include/openssl/fips.h ../../include/openssl/fips_rand.h
125rand_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 106rand_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
126rand_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 107rand_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
127rand_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 108rand_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
128rand_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 109rand_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
129rand_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 110rand_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
130rand_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 111rand_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
131rand_lib.o: ../../include/openssl/ui.h ../../include/openssl/ui_compat.h
132rand_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 112rand_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
133rand_lib.o: ../cryptlib.h rand_lcl.h rand_lib.c 113rand_lib.o: ../cryptlib.h rand_lib.c
134rand_nw.o: ../../e_os.h ../../include/openssl/asn1.h 114rand_nw.o: ../../e_os.h ../../include/openssl/asn1.h
135rand_nw.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 115rand_nw.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
136rand_nw.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 116rand_nw.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
137rand_nw.o: ../../include/openssl/err.h ../../include/openssl/evp.h 117rand_nw.o: ../../include/openssl/err.h ../../include/openssl/evp.h
138rand_nw.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 118rand_nw.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
139rand_nw.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 119rand_nw.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
140rand_nw.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 120rand_nw.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
141rand_nw.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h 121rand_nw.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
142rand_nw.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 122rand_nw.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
143rand_nw.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 123rand_nw.o: ../../include/openssl/symhacks.h ../cryptlib.h rand_lcl.h rand_nw.c
144rand_nw.o: ../cryptlib.h rand_lcl.h rand_nw.c
145rand_os2.o: ../../e_os.h ../../include/openssl/asn1.h 124rand_os2.o: ../../e_os.h ../../include/openssl/asn1.h
146rand_os2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 125rand_os2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
147rand_os2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 126rand_os2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
148rand_os2.o: ../../include/openssl/err.h ../../include/openssl/evp.h 127rand_os2.o: ../../include/openssl/err.h ../../include/openssl/evp.h
149rand_os2.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 128rand_os2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
150rand_os2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 129rand_os2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
151rand_os2.o: ../../include/openssl/opensslconf.h
152rand_os2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 130rand_os2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
153rand_os2.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 131rand_os2.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
154rand_os2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 132rand_os2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -158,8 +136,8 @@ rand_unix.o: ../../e_os.h ../../include/openssl/asn1.h
158rand_unix.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 136rand_unix.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
159rand_unix.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 137rand_unix.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
160rand_unix.o: ../../include/openssl/err.h ../../include/openssl/evp.h 138rand_unix.o: ../../include/openssl/err.h ../../include/openssl/evp.h
161rand_unix.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 139rand_unix.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
162rand_unix.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 140rand_unix.o: ../../include/openssl/objects.h
163rand_unix.o: ../../include/openssl/opensslconf.h 141rand_unix.o: ../../include/openssl/opensslconf.h
164rand_unix.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 142rand_unix.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
165rand_unix.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 143rand_unix.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
@@ -170,9 +148,8 @@ rand_win.o: ../../e_os.h ../../include/openssl/asn1.h
170rand_win.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 148rand_win.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
171rand_win.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 149rand_win.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
172rand_win.o: ../../include/openssl/err.h ../../include/openssl/evp.h 150rand_win.o: ../../include/openssl/err.h ../../include/openssl/evp.h
173rand_win.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 151rand_win.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
174rand_win.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 152rand_win.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
175rand_win.o: ../../include/openssl/opensslconf.h
176rand_win.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 153rand_win.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
177rand_win.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h 154rand_win.o: ../../include/openssl/rand.h ../../include/openssl/safestack.h
178rand_win.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 155rand_win.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
diff --git a/src/lib/libssl/src/crypto/rand/md_rand.c b/src/lib/libssl/src/crypto/rand/md_rand.c
index 0f8dd3e00f..88088ce73c 100644
--- a/src/lib/libssl/src/crypto/rand/md_rand.c
+++ b/src/lib/libssl/src/crypto/rand/md_rand.c
@@ -126,10 +126,6 @@
126 126
127#include <openssl/crypto.h> 127#include <openssl/crypto.h>
128#include <openssl/err.h> 128#include <openssl/err.h>
129#ifdef OPENSSL_FIPS
130#include <openssl/fips.h>
131#endif
132
133 129
134#ifdef BN_DEBUG 130#ifdef BN_DEBUG
135# define PREDICT 131# define PREDICT
@@ -149,7 +145,7 @@ static unsigned int crypto_lock_rand = 0; /* may be set only when a thread
149 * holds CRYPTO_LOCK_RAND 145 * holds CRYPTO_LOCK_RAND
150 * (to prevent double locking) */ 146 * (to prevent double locking) */
151/* access to lockin_thread is synchronized by CRYPTO_LOCK_RAND2 */ 147/* access to lockin_thread is synchronized by CRYPTO_LOCK_RAND2 */
152static unsigned long locking_thread = 0; /* valid iff crypto_lock_rand is set */ 148static CRYPTO_THREADID locking_threadid; /* valid iff crypto_lock_rand is set */
153 149
154 150
155#ifdef PREDICT 151#ifdef PREDICT
@@ -217,8 +213,10 @@ static void ssleay_rand_add(const void *buf, int num, double add)
217 /* check if we already have the lock */ 213 /* check if we already have the lock */
218 if (crypto_lock_rand) 214 if (crypto_lock_rand)
219 { 215 {
216 CRYPTO_THREADID cur;
217 CRYPTO_THREADID_current(&cur);
220 CRYPTO_r_lock(CRYPTO_LOCK_RAND2); 218 CRYPTO_r_lock(CRYPTO_LOCK_RAND2);
221 do_not_lock = (locking_thread == CRYPTO_thread_id()); 219 do_not_lock = !CRYPTO_THREADID_cmp(&locking_threadid, &cur);
222 CRYPTO_r_unlock(CRYPTO_LOCK_RAND2); 220 CRYPTO_r_unlock(CRYPTO_LOCK_RAND2);
223 } 221 }
224 else 222 else
@@ -274,8 +272,16 @@ static void ssleay_rand_add(const void *buf, int num, double add)
274 } 272 }
275 else 273 else
276 MD_Update(&m,&(state[st_idx]),j); 274 MD_Update(&m,&(state[st_idx]),j);
277 275
276 /* DO NOT REMOVE THE FOLLOWING CALL TO MD_Update()! */
278 MD_Update(&m,buf,j); 277 MD_Update(&m,buf,j);
278 /* We know that line may cause programs such as
279 purify and valgrind to complain about use of
280 uninitialized data. The problem is not, it's
281 with the caller. Removing that line will make
282 sure you get really bad randomness and thereby
283 other problems such as very insecure keys. */
284
279 MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c)); 285 MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c));
280 MD_Final(&m,local_md); 286 MD_Final(&m,local_md);
281 md_c[1]++; 287 md_c[1]++;
@@ -336,14 +342,6 @@ static int ssleay_rand_bytes(unsigned char *buf, int num)
336#endif 342#endif
337 int do_stir_pool = 0; 343 int do_stir_pool = 0;
338 344
339#ifdef OPENSSL_FIPS
340 if(FIPS_mode())
341 {
342 FIPSerr(FIPS_F_SSLEAY_RAND_BYTES,FIPS_R_NON_FIPS_METHOD);
343 return 0;
344 }
345#endif
346
347#ifdef PREDICT 345#ifdef PREDICT
348 if (rand_predictable) 346 if (rand_predictable)
349 { 347 {
@@ -384,7 +382,7 @@ static int ssleay_rand_bytes(unsigned char *buf, int num)
384 382
385 /* prevent ssleay_rand_bytes() from trying to obtain the lock again */ 383 /* prevent ssleay_rand_bytes() from trying to obtain the lock again */
386 CRYPTO_w_lock(CRYPTO_LOCK_RAND2); 384 CRYPTO_w_lock(CRYPTO_LOCK_RAND2);
387 locking_thread = CRYPTO_thread_id(); 385 CRYPTO_THREADID_current(&locking_threadid);
388 CRYPTO_w_unlock(CRYPTO_LOCK_RAND2); 386 CRYPTO_w_unlock(CRYPTO_LOCK_RAND2);
389 crypto_lock_rand = 1; 387 crypto_lock_rand = 1;
390 388
@@ -476,9 +474,15 @@ static int ssleay_rand_bytes(unsigned char *buf, int num)
476#endif 474#endif
477 MD_Update(&m,local_md,MD_DIGEST_LENGTH); 475 MD_Update(&m,local_md,MD_DIGEST_LENGTH);
478 MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c)); 476 MD_Update(&m,(unsigned char *)&(md_c[0]),sizeof(md_c));
479#ifndef PURIFY 477
480 MD_Update(&m,buf,j); /* purify complains */ 478#ifndef PURIFY /* purify complains */
479 /* DO NOT REMOVE THE FOLLOWING CALL TO MD_Update()! */
480 MD_Update(&m,buf,j);
481 /* We know that line may cause programs such as
482 purify and valgrind to complain about use of
483 uninitialized data. */
481#endif 484#endif
485
482 k=(st_idx+MD_DIGEST_LENGTH/2)-st_num; 486 k=(st_idx+MD_DIGEST_LENGTH/2)-st_num;
483 if (k > 0) 487 if (k > 0)
484 { 488 {
@@ -539,15 +543,17 @@ static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num)
539 543
540static int ssleay_rand_status(void) 544static int ssleay_rand_status(void)
541 { 545 {
546 CRYPTO_THREADID cur;
542 int ret; 547 int ret;
543 int do_not_lock; 548 int do_not_lock;
544 549
550 CRYPTO_THREADID_current(&cur);
545 /* check if we already have the lock 551 /* check if we already have the lock
546 * (could happen if a RAND_poll() implementation calls RAND_status()) */ 552 * (could happen if a RAND_poll() implementation calls RAND_status()) */
547 if (crypto_lock_rand) 553 if (crypto_lock_rand)
548 { 554 {
549 CRYPTO_r_lock(CRYPTO_LOCK_RAND2); 555 CRYPTO_r_lock(CRYPTO_LOCK_RAND2);
550 do_not_lock = (locking_thread == CRYPTO_thread_id()); 556 do_not_lock = !CRYPTO_THREADID_cmp(&locking_threadid, &cur);
551 CRYPTO_r_unlock(CRYPTO_LOCK_RAND2); 557 CRYPTO_r_unlock(CRYPTO_LOCK_RAND2);
552 } 558 }
553 else 559 else
@@ -559,7 +565,7 @@ static int ssleay_rand_status(void)
559 565
560 /* prevent ssleay_rand_bytes() from trying to obtain the lock again */ 566 /* prevent ssleay_rand_bytes() from trying to obtain the lock again */
561 CRYPTO_w_lock(CRYPTO_LOCK_RAND2); 567 CRYPTO_w_lock(CRYPTO_LOCK_RAND2);
562 locking_thread = CRYPTO_thread_id(); 568 CRYPTO_THREADID_cpy(&locking_threadid, &cur);
563 CRYPTO_w_unlock(CRYPTO_LOCK_RAND2); 569 CRYPTO_w_unlock(CRYPTO_LOCK_RAND2);
564 crypto_lock_rand = 1; 570 crypto_lock_rand = 1;
565 } 571 }
diff --git a/src/lib/libssl/src/crypto/rand/rand.h b/src/lib/libssl/src/crypto/rand/rand.h
index ea89153cba..ac6c021763 100644
--- a/src/lib/libssl/src/crypto/rand/rand.h
+++ b/src/lib/libssl/src/crypto/rand/rand.h
@@ -72,7 +72,7 @@ extern "C" {
72#endif 72#endif
73 73
74#if defined(OPENSSL_FIPS) 74#if defined(OPENSSL_FIPS)
75#define FIPS_RAND_SIZE_T int 75#define FIPS_RAND_SIZE_T size_t
76#endif 76#endif
77 77
78/* Already defined in ossl_typ.h */ 78/* Already defined in ossl_typ.h */
@@ -111,15 +111,6 @@ int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes);
111int RAND_egd(const char *path); 111int RAND_egd(const char *path);
112int RAND_egd_bytes(const char *path,int bytes); 112int RAND_egd_bytes(const char *path,int bytes);
113int RAND_poll(void); 113int RAND_poll(void);
114#ifndef OPENSSL_NO_ENGINE
115#ifdef OPENSSL_FIPS
116void int_RAND_init_engine_callbacks(void);
117void int_RAND_set_callbacks(
118 int (*set_rand_func)(const RAND_METHOD *meth,
119 const RAND_METHOD **pmeth),
120 const RAND_METHOD *(*get_rand_func)(const RAND_METHOD **pmeth));
121#endif
122#endif
123 114
124#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32) 115#if defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_WIN32)
125 116
@@ -137,29 +128,11 @@ void ERR_load_RAND_strings(void);
137/* Error codes for the RAND functions. */ 128/* Error codes for the RAND functions. */
138 129
139/* Function codes. */ 130/* Function codes. */
140#define RAND_F_ENG_RAND_GET_RAND_METHOD 108
141#define RAND_F_FIPS_RAND 103
142#define RAND_F_FIPS_RAND_BYTES 102
143#define RAND_F_FIPS_RAND_GET_RAND_METHOD 109
144#define RAND_F_FIPS_RAND_SET_DT 106
145#define RAND_F_FIPS_SET_DT 104
146#define RAND_F_FIPS_SET_PRNG_SEED 107
147#define RAND_F_FIPS_SET_TEST_MODE 105
148#define RAND_F_RAND_GET_RAND_METHOD 101 131#define RAND_F_RAND_GET_RAND_METHOD 101
149#define RAND_F_SSLEAY_RAND_BYTES 100 132#define RAND_F_SSLEAY_RAND_BYTES 100
150 133
151/* Reason codes. */ 134/* Reason codes. */
152#define RAND_R_NON_FIPS_METHOD 105
153#define RAND_R_NOT_IN_TEST_MODE 106
154#define RAND_R_NO_KEY_SET 107
155#define RAND_R_PRNG_ASKING_FOR_TOO_MUCH 101
156#define RAND_R_PRNG_ERROR 108
157#define RAND_R_PRNG_KEYED 109
158#define RAND_R_PRNG_NOT_REKEYED 102
159#define RAND_R_PRNG_NOT_RESEEDED 103
160#define RAND_R_PRNG_NOT_SEEDED 100 135#define RAND_R_PRNG_NOT_SEEDED 100
161#define RAND_R_PRNG_SEED_MUST_NOT_MATCH_KEY 110
162#define RAND_R_PRNG_STUCK 104
163 136
164#ifdef __cplusplus 137#ifdef __cplusplus
165} 138}
diff --git a/src/lib/libssl/src/crypto/rand/rand_egd.c b/src/lib/libssl/src/crypto/rand/rand_egd.c
index 50bce6caba..d53b916ebe 100644
--- a/src/lib/libssl/src/crypto/rand/rand_egd.c
+++ b/src/lib/libssl/src/crypto/rand/rand_egd.c
@@ -95,7 +95,7 @@
95 * RAND_egd() is a wrapper for RAND_egd_bytes() with numbytes=255. 95 * RAND_egd() is a wrapper for RAND_egd_bytes() with numbytes=255.
96 */ 96 */
97 97
98#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_VOS) 98#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_VOS) || defined(OPENSSL_SYS_BEOS)
99int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes) 99int RAND_query_egd_bytes(const char *path, unsigned char *buf, int bytes)
100 { 100 {
101 return(-1); 101 return(-1);
diff --git a/src/lib/libssl/src/crypto/rand/rand_err.c b/src/lib/libssl/src/crypto/rand/rand_err.c
index 829fb44d77..03cda4dd92 100644
--- a/src/lib/libssl/src/crypto/rand/rand_err.c
+++ b/src/lib/libssl/src/crypto/rand/rand_err.c
@@ -1,6 +1,6 @@
1/* crypto/rand/rand_err.c */ 1/* crypto/rand/rand_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -70,14 +70,6 @@
70 70
71static ERR_STRING_DATA RAND_str_functs[]= 71static ERR_STRING_DATA RAND_str_functs[]=
72 { 72 {
73{ERR_FUNC(RAND_F_ENG_RAND_GET_RAND_METHOD), "ENG_RAND_GET_RAND_METHOD"},
74{ERR_FUNC(RAND_F_FIPS_RAND), "FIPS_RAND"},
75{ERR_FUNC(RAND_F_FIPS_RAND_BYTES), "FIPS_RAND_BYTES"},
76{ERR_FUNC(RAND_F_FIPS_RAND_GET_RAND_METHOD), "FIPS_RAND_GET_RAND_METHOD"},
77{ERR_FUNC(RAND_F_FIPS_RAND_SET_DT), "FIPS_RAND_SET_DT"},
78{ERR_FUNC(RAND_F_FIPS_SET_DT), "FIPS_SET_DT"},
79{ERR_FUNC(RAND_F_FIPS_SET_PRNG_SEED), "FIPS_SET_PRNG_SEED"},
80{ERR_FUNC(RAND_F_FIPS_SET_TEST_MODE), "FIPS_SET_TEST_MODE"},
81{ERR_FUNC(RAND_F_RAND_GET_RAND_METHOD), "RAND_get_rand_method"}, 73{ERR_FUNC(RAND_F_RAND_GET_RAND_METHOD), "RAND_get_rand_method"},
82{ERR_FUNC(RAND_F_SSLEAY_RAND_BYTES), "SSLEAY_RAND_BYTES"}, 74{ERR_FUNC(RAND_F_SSLEAY_RAND_BYTES), "SSLEAY_RAND_BYTES"},
83{0,NULL} 75{0,NULL}
@@ -85,17 +77,7 @@ static ERR_STRING_DATA RAND_str_functs[]=
85 77
86static ERR_STRING_DATA RAND_str_reasons[]= 78static ERR_STRING_DATA RAND_str_reasons[]=
87 { 79 {
88{ERR_REASON(RAND_R_NON_FIPS_METHOD) ,"non fips method"},
89{ERR_REASON(RAND_R_NOT_IN_TEST_MODE) ,"not in test mode"},
90{ERR_REASON(RAND_R_NO_KEY_SET) ,"no key set"},
91{ERR_REASON(RAND_R_PRNG_ASKING_FOR_TOO_MUCH),"prng asking for too much"},
92{ERR_REASON(RAND_R_PRNG_ERROR) ,"prng error"},
93{ERR_REASON(RAND_R_PRNG_KEYED) ,"prng keyed"},
94{ERR_REASON(RAND_R_PRNG_NOT_REKEYED) ,"prng not rekeyed"},
95{ERR_REASON(RAND_R_PRNG_NOT_RESEEDED) ,"prng not reseeded"},
96{ERR_REASON(RAND_R_PRNG_NOT_SEEDED) ,"PRNG not seeded"}, 80{ERR_REASON(RAND_R_PRNG_NOT_SEEDED) ,"PRNG not seeded"},
97{ERR_REASON(RAND_R_PRNG_SEED_MUST_NOT_MATCH_KEY),"prng seed must not match key"},
98{ERR_REASON(RAND_R_PRNG_STUCK) ,"prng stuck"},
99{0,NULL} 81{0,NULL}
100 }; 82 };
101 83
diff --git a/src/lib/libssl/src/crypto/rand/rand_lcl.h b/src/lib/libssl/src/crypto/rand/rand_lcl.h
index 18cc9b1e4a..618a8ec899 100644
--- a/src/lib/libssl/src/crypto/rand/rand_lcl.h
+++ b/src/lib/libssl/src/crypto/rand/rand_lcl.h
@@ -154,16 +154,5 @@
154#define MD(a,b,c) EVP_Digest(a,b,c,NULL,EVP_md2(), NULL) 154#define MD(a,b,c) EVP_Digest(a,b,c,NULL,EVP_md2(), NULL)
155#endif 155#endif
156 156
157#ifndef OPENSSL_NO_ENGINE
158void int_RAND_set_callbacks(
159 int (*set_rand_func)(const RAND_METHOD *meth,
160 const RAND_METHOD **pmeth),
161 const RAND_METHOD *(*get_rand_func)
162 (const RAND_METHOD **pmeth));
163int eng_RAND_set_rand_method(const RAND_METHOD *meth,
164 const RAND_METHOD **pmeth);
165const RAND_METHOD *eng_RAND_get_rand_method(const RAND_METHOD **pmeth);
166#endif
167
168 157
169#endif 158#endif
diff --git a/src/lib/libssl/src/crypto/rand/rand_lib.c b/src/lib/libssl/src/crypto/rand/rand_lib.c
index da6b4e0e86..513e338985 100644
--- a/src/lib/libssl/src/crypto/rand/rand_lib.c
+++ b/src/lib/libssl/src/crypto/rand/rand_lib.c
@@ -60,82 +60,15 @@
60#include <time.h> 60#include <time.h>
61#include "cryptlib.h" 61#include "cryptlib.h"
62#include <openssl/rand.h> 62#include <openssl/rand.h>
63#include "rand_lcl.h"
64#ifdef OPENSSL_FIPS
65#include <openssl/fips.h>
66#include <openssl/fips_rand.h>
67#endif
68
69#ifndef OPENSSL_NO_ENGINE 63#ifndef OPENSSL_NO_ENGINE
70#include <openssl/engine.h> 64#include <openssl/engine.h>
71#endif 65#endif
72 66
73static const RAND_METHOD *default_RAND_meth = NULL;
74
75#ifdef OPENSSL_FIPS
76
77static int fips_RAND_set_rand_method(const RAND_METHOD *meth,
78 const RAND_METHOD **pmeth)
79 {
80 *pmeth = meth;
81 return 1;
82 }
83
84static const RAND_METHOD *fips_RAND_get_rand_method(const RAND_METHOD **pmeth)
85 {
86 if (!*pmeth)
87 {
88 if(FIPS_mode())
89 *pmeth=FIPS_rand_method();
90 else
91 *pmeth = RAND_SSLeay();
92 }
93
94 if(FIPS_mode()
95 && *pmeth != FIPS_rand_check())
96 {
97 RANDerr(RAND_F_FIPS_RAND_GET_RAND_METHOD,RAND_R_NON_FIPS_METHOD);
98 return 0;
99 }
100
101 return *pmeth;
102 }
103
104static int (*RAND_set_rand_method_func)(const RAND_METHOD *meth,
105 const RAND_METHOD **pmeth)
106 = fips_RAND_set_rand_method;
107static const RAND_METHOD *(*RAND_get_rand_method_func)
108 (const RAND_METHOD **pmeth)
109 = fips_RAND_get_rand_method;
110
111#ifndef OPENSSL_NO_ENGINE
112void int_RAND_set_callbacks(
113 int (*set_rand_func)(const RAND_METHOD *meth,
114 const RAND_METHOD **pmeth),
115 const RAND_METHOD *(*get_rand_func)
116 (const RAND_METHOD **pmeth))
117 {
118 RAND_set_rand_method_func = set_rand_func;
119 RAND_get_rand_method_func = get_rand_func;
120 }
121#endif
122
123int RAND_set_rand_method(const RAND_METHOD *meth)
124 {
125 return RAND_set_rand_method_func(meth, &default_RAND_meth);
126 }
127
128const RAND_METHOD *RAND_get_rand_method(void)
129 {
130 return RAND_get_rand_method_func(&default_RAND_meth);
131 }
132
133#else
134
135#ifndef OPENSSL_NO_ENGINE 67#ifndef OPENSSL_NO_ENGINE
136/* non-NULL if default_RAND_meth is ENGINE-provided */ 68/* non-NULL if default_RAND_meth is ENGINE-provided */
137static ENGINE *funct_ref =NULL; 69static ENGINE *funct_ref =NULL;
138#endif 70#endif
71static const RAND_METHOD *default_RAND_meth = NULL;
139 72
140int RAND_set_rand_method(const RAND_METHOD *meth) 73int RAND_set_rand_method(const RAND_METHOD *meth)
141 { 74 {
@@ -196,8 +129,6 @@ int RAND_set_rand_engine(ENGINE *engine)
196 } 129 }
197#endif 130#endif
198 131
199#endif
200
201void RAND_cleanup(void) 132void RAND_cleanup(void)
202 { 133 {
203 const RAND_METHOD *meth = RAND_get_rand_method(); 134 const RAND_METHOD *meth = RAND_get_rand_method();
diff --git a/src/lib/libssl/src/crypto/rand/rand_os2.c b/src/lib/libssl/src/crypto/rand/rand_os2.c
index c3e36d4e5e..fc1e78b179 100644
--- a/src/lib/libssl/src/crypto/rand/rand_os2.c
+++ b/src/lib/libssl/src/crypto/rand/rand_os2.c
@@ -78,8 +78,10 @@ typedef struct _CPUUTIL {
78 ULONG ulIntrHigh; /* High 32 bits of interrupt time */ 78 ULONG ulIntrHigh; /* High 32 bits of interrupt time */
79} CPUUTIL; 79} CPUUTIL;
80 80
81#ifndef __KLIBC__
81APIRET APIENTRY(*DosPerfSysCall) (ULONG ulCommand, ULONG ulParm1, ULONG ulParm2, ULONG ulParm3) = NULL; 82APIRET APIENTRY(*DosPerfSysCall) (ULONG ulCommand, ULONG ulParm1, ULONG ulParm2, ULONG ulParm3) = NULL;
82APIRET APIENTRY(*DosQuerySysState) (ULONG func, ULONG arg1, ULONG pid, ULONG _res_, PVOID buf, ULONG bufsz) = NULL; 83APIRET APIENTRY(*DosQuerySysState) (ULONG func, ULONG arg1, ULONG pid, ULONG _res_, PVOID buf, ULONG bufsz) = NULL;
84#endif
83HMODULE hDoscalls = 0; 85HMODULE hDoscalls = 0;
84 86
85int RAND_poll(void) 87int RAND_poll(void)
@@ -91,6 +93,7 @@ int RAND_poll(void)
91 if (hDoscalls == 0) { 93 if (hDoscalls == 0) {
92 ULONG rc = DosLoadModule(failed_module, sizeof(failed_module), "DOSCALLS", &hDoscalls); 94 ULONG rc = DosLoadModule(failed_module, sizeof(failed_module), "DOSCALLS", &hDoscalls);
93 95
96#ifndef __KLIBC__
94 if (rc == 0) { 97 if (rc == 0) {
95 rc = DosQueryProcAddr(hDoscalls, 976, NULL, (PFN *)&DosPerfSysCall); 98 rc = DosQueryProcAddr(hDoscalls, 976, NULL, (PFN *)&DosPerfSysCall);
96 99
@@ -102,6 +105,7 @@ int RAND_poll(void)
102 if (rc) 105 if (rc)
103 DosQuerySysState = NULL; 106 DosQuerySysState = NULL;
104 } 107 }
108#endif
105 } 109 }
106 110
107 /* Sample the hi-res timer, runs at around 1.1 MHz */ 111 /* Sample the hi-res timer, runs at around 1.1 MHz */
@@ -122,7 +126,9 @@ int RAND_poll(void)
122 RAND_add(&util, sizeof(util), 10); 126 RAND_add(&util, sizeof(util), 10);
123 } 127 }
124 else { 128 else {
129#ifndef __KLIBC__
125 DosPerfSysCall = NULL; 130 DosPerfSysCall = NULL;
131#endif
126 } 132 }
127 } 133 }
128 134
diff --git a/src/lib/libssl/src/crypto/rand/rand_unix.c b/src/lib/libssl/src/crypto/rand/rand_unix.c
index 71b98ec212..e9ead3a529 100644
--- a/src/lib/libssl/src/crypto/rand/rand_unix.c
+++ b/src/lib/libssl/src/crypto/rand/rand_unix.c
@@ -133,7 +133,50 @@
133# define FD_SETSIZE (8*sizeof(fd_set)) 133# define FD_SETSIZE (8*sizeof(fd_set))
134#endif 134#endif
135 135
136#ifdef __OpenBSD__ 136#ifdef __VOS__
137int RAND_poll(void)
138{
139 unsigned char buf[ENTROPY_NEEDED];
140 pid_t curr_pid;
141 uid_t curr_uid;
142 static int first=1;
143 int i;
144 long rnd = 0;
145 struct timespec ts;
146 unsigned seed;
147
148/* The VOS random() function starts from a static seed so its
149 initial value is predictable. If random() returns the
150 initial value, reseed it with dynamic data. The VOS
151 real-time clock has a granularity of 1 nsec so it should be
152 reasonably difficult to predict its exact value. Do not
153 gratuitously reseed the PRNG because other code in this
154 process or thread may be using it. */
155
156 if (first) {
157 first = 0;
158 rnd = random ();
159 if (rnd == 1804289383) {
160 clock_gettime (CLOCK_REALTIME, &ts);
161 curr_pid = getpid();
162 curr_uid = getuid();
163 seed = ts.tv_sec ^ ts.tv_nsec ^ curr_pid ^ curr_uid;
164 srandom (seed);
165 }
166 }
167
168 for (i = 0; i < sizeof(buf); i++) {
169 if (i % 4 == 0)
170 rnd = random();
171 buf[i] = rnd;
172 rnd >>= 8;
173 }
174 RAND_add(buf, sizeof(buf), ENTROPY_NEEDED);
175 memset(buf, 0, sizeof(buf));
176
177 return 1;
178}
179#elif defined __OpenBSD__
137int RAND_poll(void) 180int RAND_poll(void)
138{ 181{
139 u_int32_t rnd = 0, i; 182 u_int32_t rnd = 0, i;
@@ -163,7 +206,7 @@ int RAND_poll(void)
163 static const char *randomfiles[] = { DEVRANDOM }; 206 static const char *randomfiles[] = { DEVRANDOM };
164 struct stat randomstats[sizeof(randomfiles)/sizeof(randomfiles[0])]; 207 struct stat randomstats[sizeof(randomfiles)/sizeof(randomfiles[0])];
165 int fd; 208 int fd;
166 size_t i; 209 unsigned int i;
167#endif 210#endif
168#ifdef DEVRANDOM_EGD 211#ifdef DEVRANDOM_EGD
169 static const char *egdsockets[] = { DEVRANDOM_EGD, NULL }; 212 static const char *egdsockets[] = { DEVRANDOM_EGD, NULL };
@@ -176,7 +219,8 @@ int RAND_poll(void)
176 * have this. Use /dev/urandom if you can as /dev/random may block 219 * have this. Use /dev/urandom if you can as /dev/random may block
177 * if it runs out of random entries. */ 220 * if it runs out of random entries. */
178 221
179 for (i=0; i<sizeof(randomfiles)/sizeof(randomfiles[0]) && n < ENTROPY_NEEDED; i++) 222 for (i = 0; (i < sizeof(randomfiles)/sizeof(randomfiles[0])) &&
223 (n < ENTROPY_NEEDED); i++)
180 { 224 {
181 if ((fd = open(randomfiles[i], O_RDONLY 225 if ((fd = open(randomfiles[i], O_RDONLY
182#ifdef O_NONBLOCK 226#ifdef O_NONBLOCK
@@ -193,7 +237,7 @@ int RAND_poll(void)
193 { 237 {
194 int usec = 10*1000; /* spend 10ms on each file */ 238 int usec = 10*1000; /* spend 10ms on each file */
195 int r; 239 int r;
196 size_t j; 240 unsigned int j;
197 struct stat *st=&randomstats[i]; 241 struct stat *st=&randomstats[i];
198 242
199 /* Avoid using same input... Used to be O_NOFOLLOW 243 /* Avoid using same input... Used to be O_NOFOLLOW
@@ -211,7 +255,12 @@ int RAND_poll(void)
211 { 255 {
212 int try_read = 0; 256 int try_read = 0;
213 257
214#if defined(OPENSSL_SYS_LINUX) 258#if defined(OPENSSL_SYS_BEOS_R5)
259 /* select() is broken in BeOS R5, so we simply
260 * try to read something and snooze if we couldn't */
261 try_read = 1;
262
263#elif defined(OPENSSL_SYS_LINUX)
215 /* use poll() */ 264 /* use poll() */
216 struct pollfd pset; 265 struct pollfd pset;
217 266
@@ -258,6 +307,10 @@ int RAND_poll(void)
258 r = read(fd,(unsigned char *)tmpbuf+n, ENTROPY_NEEDED-n); 307 r = read(fd,(unsigned char *)tmpbuf+n, ENTROPY_NEEDED-n);
259 if (r > 0) 308 if (r > 0)
260 n += r; 309 n += r;
310#if defined(OPENSSL_SYS_BEOS_R5)
311 if (r == 0)
312 snooze(t.tv_usec);
313#endif
261 } 314 }
262 else 315 else
263 r = -1; 316 r = -1;
@@ -311,6 +364,14 @@ int RAND_poll(void)
311 l=time(NULL); 364 l=time(NULL);
312 RAND_add(&l,sizeof(l),0.0); 365 RAND_add(&l,sizeof(l),0.0);
313 366
367#if defined(OPENSSL_SYS_BEOS)
368 {
369 system_info sysInfo;
370 get_system_info(&sysInfo);
371 RAND_add(&sysInfo,sizeof(sysInfo),0);
372 }
373#endif
374
314#if defined(DEVRANDOM) || defined(DEVRANDOM_EGD) 375#if defined(DEVRANDOM) || defined(DEVRANDOM_EGD)
315 return 1; 376 return 1;
316#else 377#else
diff --git a/src/lib/libssl/src/crypto/rand/rand_win.c b/src/lib/libssl/src/crypto/rand/rand_win.c
index 00dbe4232c..5d134e186b 100644
--- a/src/lib/libssl/src/crypto/rand/rand_win.c
+++ b/src/lib/libssl/src/crypto/rand/rand_win.c
@@ -463,7 +463,7 @@ int RAND_poll(void)
463 PROCESSENTRY32 p; 463 PROCESSENTRY32 p;
464 THREADENTRY32 t; 464 THREADENTRY32 t;
465 MODULEENTRY32 m; 465 MODULEENTRY32 m;
466 DWORD stoptime = 0; 466 DWORD starttime = 0;
467 467
468 snap = (CREATETOOLHELP32SNAPSHOT) 468 snap = (CREATETOOLHELP32SNAPSHOT)
469 GetProcAddress(kernel, "CreateToolhelp32Snapshot"); 469 GetProcAddress(kernel, "CreateToolhelp32Snapshot");
@@ -494,12 +494,29 @@ int RAND_poll(void)
494 * each entry. Consider each field a source of 1 byte 494 * each entry. Consider each field a source of 1 byte
495 * of entropy. 495 * of entropy.
496 */ 496 */
497 ZeroMemory(&hlist, sizeof(HEAPLIST32));
497 hlist.dwSize = sizeof(HEAPLIST32); 498 hlist.dwSize = sizeof(HEAPLIST32);
498 if (good) stoptime = GetTickCount() + MAXDELAY; 499 if (good) starttime = GetTickCount();
500#ifdef _MSC_VER
499 if (heaplist_first(handle, &hlist)) 501 if (heaplist_first(handle, &hlist))
502 {
503 /*
504 following discussion on dev ML, exception on WinCE (or other Win
505 platform) is theoretically of unknown origin; prevent infinite
506 loop here when this theoretical case occurs; otherwise cope with
507 the expected (MSDN documented) exception-throwing behaviour of
508 Heap32Next() on WinCE.
509
510 based on patch in original message by Tanguy Fautré (2009/03/02)
511 Subject: RAND_poll() and CreateToolhelp32Snapshot() stability
512 */
513 int ex_cnt_limit = 42;
500 do 514 do
501 { 515 {
502 RAND_add(&hlist, hlist.dwSize, 3); 516 RAND_add(&hlist, hlist.dwSize, 3);
517 __try
518 {
519 ZeroMemory(&hentry, sizeof(HEAPENTRY32));
503 hentry.dwSize = sizeof(HEAPENTRY32); 520 hentry.dwSize = sizeof(HEAPENTRY32);
504 if (heap_first(&hentry, 521 if (heap_first(&hentry,
505 hlist.th32ProcessID, 522 hlist.th32ProcessID,
@@ -510,10 +527,42 @@ int RAND_poll(void)
510 RAND_add(&hentry, 527 RAND_add(&hentry,
511 hentry.dwSize, 5); 528 hentry.dwSize, 5);
512 while (heap_next(&hentry) 529 while (heap_next(&hentry)
530 && (!good || (GetTickCount()-starttime)<MAXDELAY)
513 && --entrycnt > 0); 531 && --entrycnt > 0);
514 } 532 }
515 } while (heaplist_next(handle, 533 }
516 &hlist) && GetTickCount() < stoptime); 534 __except (EXCEPTION_EXECUTE_HANDLER)
535 {
536 /* ignore access violations when walking the heap list */
537 ex_cnt_limit--;
538 }
539 } while (heaplist_next(handle, &hlist)
540 && (!good || (GetTickCount()-starttime)<MAXDELAY)
541 && ex_cnt_limit > 0);
542 }
543
544#else
545 if (heaplist_first(handle, &hlist))
546 {
547 do
548 {
549 RAND_add(&hlist, hlist.dwSize, 3);
550 hentry.dwSize = sizeof(HEAPENTRY32);
551 if (heap_first(&hentry,
552 hlist.th32ProcessID,
553 hlist.th32HeapID))
554 {
555 int entrycnt = 80;
556 do
557 RAND_add(&hentry,
558 hentry.dwSize, 5);
559 while (heap_next(&hentry)
560 && --entrycnt > 0);
561 }
562 } while (heaplist_next(handle, &hlist)
563 && (!good || (GetTickCount()-starttime)<MAXDELAY));
564 }
565#endif
517 566
518 /* process walking */ 567 /* process walking */
519 /* PROCESSENTRY32 contains 9 fields that will change 568 /* PROCESSENTRY32 contains 9 fields that will change
@@ -522,11 +571,11 @@ int RAND_poll(void)
522 */ 571 */
523 p.dwSize = sizeof(PROCESSENTRY32); 572 p.dwSize = sizeof(PROCESSENTRY32);
524 573
525 if (good) stoptime = GetTickCount() + MAXDELAY; 574 if (good) starttime = GetTickCount();
526 if (process_first(handle, &p)) 575 if (process_first(handle, &p))
527 do 576 do
528 RAND_add(&p, p.dwSize, 9); 577 RAND_add(&p, p.dwSize, 9);
529 while (process_next(handle, &p) && GetTickCount() < stoptime); 578 while (process_next(handle, &p) && (!good || (GetTickCount()-starttime)<MAXDELAY));
530 579
531 /* thread walking */ 580 /* thread walking */
532 /* THREADENTRY32 contains 6 fields that will change 581 /* THREADENTRY32 contains 6 fields that will change
@@ -534,11 +583,11 @@ int RAND_poll(void)
534 * 1 byte of entropy. 583 * 1 byte of entropy.
535 */ 584 */
536 t.dwSize = sizeof(THREADENTRY32); 585 t.dwSize = sizeof(THREADENTRY32);
537 if (good) stoptime = GetTickCount() + MAXDELAY; 586 if (good) starttime = GetTickCount();
538 if (thread_first(handle, &t)) 587 if (thread_first(handle, &t))
539 do 588 do
540 RAND_add(&t, t.dwSize, 6); 589 RAND_add(&t, t.dwSize, 6);
541 while (thread_next(handle, &t) && GetTickCount() < stoptime); 590 while (thread_next(handle, &t) && (!good || (GetTickCount()-starttime)<MAXDELAY));
542 591
543 /* module walking */ 592 /* module walking */
544 /* MODULEENTRY32 contains 9 fields that will change 593 /* MODULEENTRY32 contains 9 fields that will change
@@ -546,12 +595,12 @@ int RAND_poll(void)
546 * 1 byte of entropy. 595 * 1 byte of entropy.
547 */ 596 */
548 m.dwSize = sizeof(MODULEENTRY32); 597 m.dwSize = sizeof(MODULEENTRY32);
549 if (good) stoptime = GetTickCount() + MAXDELAY; 598 if (good) starttime = GetTickCount();
550 if (module_first(handle, &m)) 599 if (module_first(handle, &m))
551 do 600 do
552 RAND_add(&m, m.dwSize, 9); 601 RAND_add(&m, m.dwSize, 9);
553 while (module_next(handle, &m) 602 while (module_next(handle, &m)
554 && (GetTickCount() < stoptime)); 603 && (!good || (GetTickCount()-starttime)<MAXDELAY));
555 if (close_snap) 604 if (close_snap)
556 close_snap(handle); 605 close_snap(handle);
557 else 606 else
@@ -701,7 +750,7 @@ static void readscreen(void)
701 int y; /* y-coordinate of screen lines to grab */ 750 int y; /* y-coordinate of screen lines to grab */
702 int n = 16; /* number of screen lines to grab at a time */ 751 int n = 16; /* number of screen lines to grab at a time */
703 752
704 if (GetVersion() >= 0x80000000 || !OPENSSL_isservice()) 753 if (GetVersion() < 0x80000000 && OPENSSL_isservice()>0)
705 return; 754 return;
706 755
707 /* Create a screen DC and a memory DC compatible to screen DC */ 756 /* Create a screen DC and a memory DC compatible to screen DC */
diff --git a/src/lib/libssl/src/crypto/rand/randfile.c b/src/lib/libssl/src/crypto/rand/randfile.c
index d108353bbc..4ed40b7b70 100644
--- a/src/lib/libssl/src/crypto/rand/randfile.c
+++ b/src/lib/libssl/src/crypto/rand/randfile.c
@@ -75,9 +75,7 @@
75#ifndef NO_SYS_TYPES_H 75#ifndef NO_SYS_TYPES_H
76# include <sys/types.h> 76# include <sys/types.h>
77#endif 77#endif
78#ifdef MAC_OS_pre_X 78#ifndef OPENSSL_NO_POSIX_IO
79# include <stat.h>
80#else
81# include <sys/stat.h> 79# include <sys/stat.h>
82#endif 80#endif
83 81
@@ -111,14 +109,26 @@ int RAND_load_file(const char *file, long bytes)
111 * if bytes == -1, read complete file. */ 109 * if bytes == -1, read complete file. */
112 110
113 MS_STATIC unsigned char buf[BUFSIZE]; 111 MS_STATIC unsigned char buf[BUFSIZE];
112#ifndef OPENSSL_NO_POSIX_IO
114 struct stat sb; 113 struct stat sb;
114#endif
115 int i,ret=0,n; 115 int i,ret=0,n;
116 FILE *in; 116 FILE *in;
117 117
118 if (file == NULL) return(0); 118 if (file == NULL) return(0);
119 119
120#ifndef OPENSSL_NO_POSIX_IO
121#ifdef PURIFY
122 /* struct stat can have padding and unused fields that may not be
123 * initialized in the call to stat(). We need to clear the entire
124 * structure before calling RAND_add() to avoid complaints from
125 * applications such as Valgrind.
126 */
127 memset(&sb, 0, sizeof(sb));
128#endif
120 if (stat(file,&sb) < 0) return(0); 129 if (stat(file,&sb) < 0) return(0);
121 RAND_add(&sb,sizeof(sb),0.0); 130 RAND_add(&sb,sizeof(sb),0.0);
131#endif
122 if (bytes == 0) return(ret); 132 if (bytes == 0) return(ret);
123 133
124#ifdef OPENSSL_SYS_VMS 134#ifdef OPENSSL_SYS_VMS
@@ -127,7 +137,7 @@ int RAND_load_file(const char *file, long bytes)
127 in=fopen(file,"rb"); 137 in=fopen(file,"rb");
128#endif 138#endif
129 if (in == NULL) goto err; 139 if (in == NULL) goto err;
130#if defined(S_IFBLK) && defined(S_IFCHR) 140#if defined(S_IFBLK) && defined(S_IFCHR) && !defined(OPNESSL_NO_POSIX_IO)
131 if (sb.st_mode & (S_IFBLK | S_IFCHR)) { 141 if (sb.st_mode & (S_IFBLK | S_IFCHR)) {
132 /* this file is a device. we don't want read an infinite number 142 /* this file is a device. we don't want read an infinite number
133 * of bytes from a random device, nor do we want to use buffered 143 * of bytes from a random device, nor do we want to use buffered
@@ -170,12 +180,13 @@ int RAND_write_file(const char *file)
170 int i,ret=0,rand_err=0; 180 int i,ret=0,rand_err=0;
171 FILE *out = NULL; 181 FILE *out = NULL;
172 int n; 182 int n;
183#ifndef OPENSSL_NO_POSIX_IO
173 struct stat sb; 184 struct stat sb;
174 185
175 i=stat(file,&sb); 186 i=stat(file,&sb);
176 if (i != -1) { 187 if (i != -1) {
177#if defined(S_IFBLK) && defined(S_IFCHR) 188#if defined(S_ISBLK) && defined(S_ISCHR)
178 if (sb.st_mode & (S_IFBLK | S_IFCHR)) { 189 if (S_ISBLK(sb.st_mode) || S_ISCHR(sb.st_mode)) {
179 /* this file is a device. we don't write back to it. 190 /* this file is a device. we don't write back to it.
180 * we "succeed" on the assumption this is some sort 191 * we "succeed" on the assumption this is some sort
181 * of random device. Otherwise attempting to write to 192 * of random device. Otherwise attempting to write to
@@ -185,14 +196,16 @@ int RAND_write_file(const char *file)
185 } 196 }
186#endif 197#endif
187 } 198 }
199#endif
188 200
189#if defined(O_CREAT) && !defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_SYS_VMS) 201#if defined(O_CREAT) && !defined(OPENSSL_NO_POSIX_IO) && !defined(OPENSSL_SYS_VMS)
190 { 202 {
191 /* For some reason Win32 can't write to files created this way */ 203#ifndef O_BINARY
192 204#define O_BINARY 0
205#endif
193 /* chmod(..., 0600) is too late to protect the file, 206 /* chmod(..., 0600) is too late to protect the file,
194 * permissions should be restrictive from the start */ 207 * permissions should be restrictive from the start */
195 int fd = open(file, O_CREAT, 0600); 208 int fd = open(file, O_WRONLY|O_CREAT|O_BINARY, 0600);
196 if (fd != -1) 209 if (fd != -1)
197 out = fdopen(fd, "wb"); 210 out = fdopen(fd, "wb");
198 } 211 }
diff --git a/src/lib/libssl/src/crypto/rc2/Makefile b/src/lib/libssl/src/crypto/rc2/Makefile
index 4b6292b65f..73eac347e7 100644
--- a/src/lib/libssl/src/crypto/rc2/Makefile
+++ b/src/lib/libssl/src/crypto/rc2/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
@@ -78,11 +78,7 @@ rc2_cbc.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h
78rc2_cbc.o: rc2_cbc.c rc2_locl.h 78rc2_cbc.o: rc2_cbc.c rc2_locl.h
79rc2_ecb.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 79rc2_ecb.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
80rc2_ecb.o: ../../include/openssl/rc2.h rc2_ecb.c rc2_locl.h 80rc2_ecb.o: ../../include/openssl/rc2.h rc2_ecb.c rc2_locl.h
81rc2_skey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 81rc2_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h
82rc2_skey.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h
83rc2_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
84rc2_skey.o: ../../include/openssl/rc2.h ../../include/openssl/safestack.h
85rc2_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
86rc2_skey.o: rc2_locl.h rc2_skey.c 82rc2_skey.o: rc2_locl.h rc2_skey.c
87rc2cfb64.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h 83rc2cfb64.o: ../../include/openssl/opensslconf.h ../../include/openssl/rc2.h
88rc2cfb64.o: rc2_locl.h rc2cfb64.c 84rc2cfb64.o: rc2_locl.h rc2cfb64.c
diff --git a/src/lib/libssl/src/crypto/rc2/rc2.h b/src/lib/libssl/src/crypto/rc2/rc2.h
index e542ec94ff..34c8362317 100644
--- a/src/lib/libssl/src/crypto/rc2/rc2.h
+++ b/src/lib/libssl/src/crypto/rc2/rc2.h
@@ -79,9 +79,7 @@ typedef struct rc2_key_st
79 RC2_INT data[64]; 79 RC2_INT data[64];
80 } RC2_KEY; 80 } RC2_KEY;
81 81
82#ifdef OPENSSL_FIPS 82
83void private_RC2_set_key(RC2_KEY *key, int len, const unsigned char *data,int bits);
84#endif
85void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data,int bits); 83void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data,int bits);
86void RC2_ecb_encrypt(const unsigned char *in,unsigned char *out,RC2_KEY *key, 84void RC2_ecb_encrypt(const unsigned char *in,unsigned char *out,RC2_KEY *key,
87 int enc); 85 int enc);
diff --git a/src/lib/libssl/src/crypto/rc2/rc2_skey.c b/src/lib/libssl/src/crypto/rc2/rc2_skey.c
index 4e000e5b99..0150b0e035 100644
--- a/src/lib/libssl/src/crypto/rc2/rc2_skey.c
+++ b/src/lib/libssl/src/crypto/rc2/rc2_skey.c
@@ -57,14 +57,9 @@
57 */ 57 */
58 58
59#include <openssl/rc2.h> 59#include <openssl/rc2.h>
60#include <openssl/crypto.h>
61#ifdef OPENSSL_FIPS
62#include <openssl/fips.h>
63#endif
64
65#include "rc2_locl.h" 60#include "rc2_locl.h"
66 61
67static unsigned char key_table[256]={ 62static const unsigned char key_table[256]={
68 0xd9,0x78,0xf9,0xc4,0x19,0xdd,0xb5,0xed,0x28,0xe9,0xfd,0x79, 63 0xd9,0x78,0xf9,0xc4,0x19,0xdd,0xb5,0xed,0x28,0xe9,0xfd,0x79,
69 0x4a,0xa0,0xd8,0x9d,0xc6,0x7e,0x37,0x83,0x2b,0x76,0x53,0x8e, 64 0x4a,0xa0,0xd8,0x9d,0xc6,0x7e,0x37,0x83,0x2b,0x76,0x53,0x8e,
70 0x62,0x4c,0x64,0x88,0x44,0x8b,0xfb,0xa2,0x17,0x9a,0x59,0xf5, 65 0x62,0x4c,0x64,0x88,0x44,0x8b,0xfb,0xa2,0x17,0x9a,0x59,0xf5,
@@ -99,20 +94,8 @@ static unsigned char key_table[256]={
99 * BSAFE uses the 'retarded' version. What I previously shipped is 94 * BSAFE uses the 'retarded' version. What I previously shipped is
100 * the same as specifying 1024 for the 'bits' parameter. Bsafe uses 95 * the same as specifying 1024 for the 'bits' parameter. Bsafe uses
101 * a version where the bits parameter is the same as len*8 */ 96 * a version where the bits parameter is the same as len*8 */
102
103#ifdef OPENSSL_FIPS
104void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits) 97void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits)
105 { 98 {
106 if (FIPS_mode())
107 FIPS_BAD_ABORT(RC2)
108 private_RC2_set_key(key, len, data, bits);
109 }
110void private_RC2_set_key(RC2_KEY *key, int len, const unsigned char *data,
111 int bits)
112#else
113void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits)
114#endif
115 {
116 int i,j; 99 int i,j;
117 unsigned char *k; 100 unsigned char *k;
118 RC2_INT *ki; 101 RC2_INT *ki;
diff --git a/src/lib/libssl/src/crypto/rc4/Makefile b/src/lib/libssl/src/crypto/rc4/Makefile
index f0bd7678fc..264451a213 100644
--- a/src/lib/libssl/src/crypto/rc4/Makefile
+++ b/src/lib/libssl/src/crypto/rc4/Makefile
@@ -21,8 +21,8 @@ TEST=rc4test.c
21APPS= 21APPS=
22 22
23LIB=$(TOP)/libcrypto.a 23LIB=$(TOP)/libcrypto.a
24LIBSRC=rc4_skey.c rc4_enc.c rc4_fblk.c 24LIBSRC=rc4_skey.c rc4_enc.c
25LIBOBJ=$(RC4_ENC) rc4_fblk.o 25LIBOBJ=$(RC4_ENC)
26 26
27SRC= $(LIBSRC) 27SRC= $(LIBSRC)
28 28
@@ -37,26 +37,26 @@ top:
37all: lib 37all: lib
38 38
39lib: $(LIBOBJ) 39lib: $(LIBOBJ)
40 $(ARX) $(LIB) $(LIBOBJ) 40 $(AR) $(LIB) $(LIBOBJ)
41 $(RANLIB) $(LIB) || echo Never mind. 41 $(RANLIB) $(LIB) || echo Never mind.
42 @touch lib 42 @touch lib
43 43
44# ELF 44rc4-586.s: asm/rc4-586.pl ../perlasm/x86asm.pl
45rx86-elf.s: asm/rc4-586.pl ../perlasm/x86asm.pl 45 $(PERL) asm/rc4-586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
46 (cd asm; $(PERL) rc4-586.pl elf $(CFLAGS) > ../$@)
47# COFF
48rx86-cof.s: asm/rc4-586.pl ../perlasm/x86asm.pl
49 (cd asm; $(PERL) rc4-586.pl coff $(CFLAGS) > ../$@)
50# a.out
51rx86-out.s: asm/rc4-586.pl ../perlasm/x86asm.pl
52 (cd asm; $(PERL) rc4-586.pl a.out $(CFLAGS) > ../$@)
53 46
54rc4-x86_64.s: asm/rc4-x86_64.pl; $(PERL) asm/rc4-x86_64.pl $@ 47rc4-x86_64.s: asm/rc4-x86_64.pl
48 $(PERL) asm/rc4-x86_64.pl $(PERLASM_SCHEME) > $@
55 49
56rc4-ia64.s: asm/rc4-ia64.S 50rc4-ia64.S: asm/rc4-ia64.pl
51 $(PERL) asm/rc4-ia64.pl $(CFLAGS) > $@
52
53rc4-s390x.s: asm/rc4-s390x.pl
54 $(PERL) asm/rc4-s390x.pl > $@
55
56rc4-ia64.s: rc4-ia64.S
57 @case `awk '/^#define RC4_INT/{print$$NF}' $(TOP)/include/openssl/opensslconf.h` in \ 57 @case `awk '/^#define RC4_INT/{print$$NF}' $(TOP)/include/openssl/opensslconf.h` in \
58 int) set -x; $(CC) $(CFLAGS) -DSZ=4 -E asm/rc4-ia64.S > $@ ;; \ 58 int) set -x; $(CC) $(CFLAGS) -DSZ=4 -E rc4-ia64.S > $@ ;; \
59 char) set -x; $(CC) $(CFLAGS) -DSZ=1 -E asm/rc4-ia64.S > $@ ;; \ 59 char) set -x; $(CC) $(CFLAGS) -DSZ=1 -E rc4-ia64.S > $@ ;; \
60 *) exit 1 ;; \ 60 *) exit 1 ;; \
61 esac 61 esac
62 62
@@ -105,20 +105,10 @@ rc4_enc.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
105rc4_enc.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h 105rc4_enc.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h
106rc4_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 106rc4_enc.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
107rc4_enc.o: ../cryptlib.h rc4_enc.c rc4_locl.h 107rc4_enc.o: ../cryptlib.h rc4_enc.c rc4_locl.h
108rc4_fblk.o: ../../e_os.h ../../include/openssl/bio.h
109rc4_fblk.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
110rc4_fblk.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
111rc4_fblk.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
112rc4_fblk.o: ../../include/openssl/opensslconf.h
113rc4_fblk.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
114rc4_fblk.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h
115rc4_fblk.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
116rc4_fblk.o: ../cryptlib.h rc4_fblk.c rc4_locl.h
117rc4_skey.o: ../../e_os.h ../../include/openssl/bio.h 108rc4_skey.o: ../../e_os.h ../../include/openssl/bio.h
118rc4_skey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 109rc4_skey.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
119rc4_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 110rc4_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
120rc4_skey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 111rc4_skey.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
121rc4_skey.o: ../../include/openssl/opensslconf.h
122rc4_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 112rc4_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
123rc4_skey.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h 113rc4_skey.o: ../../include/openssl/rc4.h ../../include/openssl/safestack.h
124rc4_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 114rc4_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
diff --git a/src/lib/libssl/src/crypto/rc4/asm/rc4-586.pl b/src/lib/libssl/src/crypto/rc4/asm/rc4-586.pl
index ef7eee766c..38a44a70ef 100644
--- a/src/lib/libssl/src/crypto/rc4/asm/rc4-586.pl
+++ b/src/lib/libssl/src/crypto/rc4/asm/rc4-586.pl
@@ -1,14 +1,21 @@
1#!/usr/local/bin/perl 1#!/usr/bin/env perl
2
3# ====================================================================
4# [Re]written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
5# project. The module is, however, dual licensed under OpenSSL and
6# CRYPTOGAMS licenses depending on where you obtain it. For further
7# details see http://www.openssl.org/~appro/cryptogams/.
8# ====================================================================
2 9
3# At some point it became apparent that the original SSLeay RC4 10# At some point it became apparent that the original SSLeay RC4
4# assembler implementation performs suboptimaly on latest IA-32 11# assembler implementation performs suboptimally on latest IA-32
5# microarchitectures. After re-tuning performance has changed as 12# microarchitectures. After re-tuning performance has changed as
6# following: 13# following:
7# 14#
8# Pentium +0% 15# Pentium -10%
9# Pentium III +17% 16# Pentium III +12%
10# AMD +52%(*) 17# AMD +50%(*)
11# P4 +180%(**) 18# P4 +250%(**)
12# 19#
13# (*) This number is actually a trade-off:-) It's possible to 20# (*) This number is actually a trade-off:-) It's possible to
14# achieve +72%, but at the cost of -48% off PIII performance. 21# achieve +72%, but at the cost of -48% off PIII performance.
@@ -17,214 +24,247 @@
17# For reference! This code delivers ~80% of rc4-amd64.pl 24# For reference! This code delivers ~80% of rc4-amd64.pl
18# performance on the same Opteron machine. 25# performance on the same Opteron machine.
19# (**) This number requires compressed key schedule set up by 26# (**) This number requires compressed key schedule set up by
20# RC4_set_key and therefore doesn't apply to 0.9.7 [option for 27# RC4_set_key [see commentary below for further details].
21# compressed key schedule is implemented in 0.9.8 and later,
22# see commentary section in rc4_skey.c for further details].
23# 28#
24# <appro@fy.chalmers.se> 29# <appro@fy.chalmers.se>
25 30
26push(@INC,"perlasm","../../perlasm"); 31$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
32push(@INC,"${dir}","${dir}../../perlasm");
27require "x86asm.pl"; 33require "x86asm.pl";
28 34
29&asm_init($ARGV[0],"rc4-586.pl"); 35&asm_init($ARGV[0],"rc4-586.pl");
30 36
31$x="eax"; 37$xx="eax";
32$y="ebx"; 38$yy="ebx";
33$tx="ecx"; 39$tx="ecx";
34$ty="edx"; 40$ty="edx";
35$in="esi"; 41$inp="esi";
36$out="edi"; 42$out="ebp";
37$d="ebp"; 43$dat="edi";
38 44
39&RC4("RC4"); 45sub RC4_loop {
40 46 my $i=shift;
41&asm_finish(); 47 my $func = ($i==0)?*mov:*or;
42 48
43sub RC4_loop 49 &add (&LB($yy),&LB($tx));
44 { 50 &mov ($ty,&DWP(0,$dat,$yy,4));
45 local($n,$p,$char)=@_; 51 &mov (&DWP(0,$dat,$yy,4),$tx);
46 52 &mov (&DWP(0,$dat,$xx,4),$ty);
47 &comment("Round $n"); 53 &add ($ty,$tx);
48 54 &inc (&LB($xx));
49 if ($char) 55 &and ($ty,0xff);
50 { 56 &ror ($out,8) if ($i!=0);
51 if ($p >= 0) 57 if ($i<3) {
52 { 58 &mov ($tx,&DWP(0,$dat,$xx,4));
53 &mov($ty, &swtmp(2)); 59 } else {
54 &cmp($ty, $in); 60 &mov ($tx,&wparam(3)); # reload [re-biased] out
55 &jbe(&label("finished"));
56 &inc($in);
57 }
58 else
59 {
60 &add($ty, 8);
61 &inc($in);
62 &cmp($ty, $in);
63 &jb(&label("finished"));
64 &mov(&swtmp(2), $ty);
65 }
66 }
67 # Moved out
68 # &mov( $tx, &DWP(0,$d,$x,4)) if $p < 0;
69
70 &add( &LB($y), &LB($tx));
71 &mov( $ty, &DWP(0,$d,$y,4));
72 # XXX
73 &mov( &DWP(0,$d,$x,4),$ty);
74 &add( $ty, $tx);
75 &mov( &DWP(0,$d,$y,4),$tx);
76 &and( $ty, 0xff);
77 &inc( &LB($x)); # NEXT ROUND
78 &mov( $tx, &DWP(0,$d,$x,4)) if $p < 1; # NEXT ROUND
79 &mov( $ty, &DWP(0,$d,$ty,4));
80
81 if (!$char)
82 {
83 #moved up into last round
84 if ($p >= 1)
85 {
86 &add( $out, 8)
87 }
88 &movb( &BP($n,"esp","",0), &LB($ty));
89 }
90 else
91 {
92 # Note in+=8 has occured
93 &movb( &HB($ty), &BP(-1,$in,"",0));
94 # XXX
95 &xorb(&LB($ty), &HB($ty));
96 # XXX
97 &movb(&BP($n,$out,"",0),&LB($ty));
98 }
99 } 61 }
100 62 &$func ($out,&DWP(0,$dat,$ty,4));
101 63}
102sub RC4 64
103 { 65# void RC4(RC4_KEY *key,size_t len,const unsigned char *inp,unsigned char *out);
104 local($name)=@_; 66&function_begin("RC4");
105 67 &mov ($dat,&wparam(0)); # load key schedule pointer
106 &function_begin_B($name,""); 68 &mov ($ty, &wparam(1)); # load len
107 69 &mov ($inp,&wparam(2)); # load inp
108 &mov($ty,&wparam(1)); # len 70 &mov ($out,&wparam(3)); # load out
109 &cmp($ty,0); 71
110 &jne(&label("proceed")); 72 &xor ($xx,$xx); # avoid partial register stalls
111 &ret(); 73 &xor ($yy,$yy);
112 &set_label("proceed"); 74
113 75 &cmp ($ty,0); # safety net
114 &comment(""); 76 &je (&label("abort"));
115 77
116 &push("ebp"); 78 &mov (&LB($xx),&BP(0,$dat)); # load key->x
117 &push("ebx"); 79 &mov (&LB($yy),&BP(4,$dat)); # load key->y
118 &push("esi"); 80 &add ($dat,8);
119 &xor( $x, $x); # avoid partial register stalls 81
120 &push("edi"); 82 &lea ($tx,&DWP(0,$inp,$ty));
121 &xor( $y, $y); # avoid partial register stalls 83 &sub ($out,$inp); # re-bias out
122 &mov( $d, &wparam(0)); # key 84 &mov (&wparam(1),$tx); # save input+len
123 &mov( $in, &wparam(2)); 85
124 86 &inc (&LB($xx));
125 &movb( &LB($x), &BP(0,$d,"",1)); 87
126 &movb( &LB($y), &BP(4,$d,"",1)); 88 # detect compressed key schedule...
127 89 &cmp (&DWP(256,$dat),-1);
128 &mov( $out, &wparam(3)); 90 &je (&label("RC4_CHAR"));
129 &inc( &LB($x)); 91
130 92 &mov ($tx,&DWP(0,$dat,$xx,4));
131 &stack_push(3); # 3 temp variables 93
132 &add( $d, 8); 94 &and ($ty,-4); # how many 4-byte chunks?
133 95 &jz (&label("loop1"));
134 # detect compressed schedule, see commentary section in rc4_skey.c... 96
135 # in 0.9.7 context ~50 bytes below RC4_CHAR label remain redundant, 97 &lea ($ty,&DWP(-4,$inp,$ty));
136 # as compressed key schedule is set up in 0.9.8 and later. 98 &mov (&wparam(2),$ty); # save input+(len/4)*4-4
137 &cmp(&DWP(256,$d),-1); 99 &mov (&wparam(3),$out); # $out as accumulator in this loop
138 &je(&label("RC4_CHAR")); 100
139 101 &set_label("loop4",16);
140 &lea( $ty, &DWP(-8,$ty,$in)); 102 for ($i=0;$i<4;$i++) { RC4_loop($i); }
141 103 &ror ($out,8);
142 # check for 0 length input 104 &xor ($out,&DWP(0,$inp));
143 105 &cmp ($inp,&wparam(2)); # compare to input+(len/4)*4-4
144 &mov( &swtmp(2), $ty); # this is now address to exit at 106 &mov (&DWP(0,$tx,$inp),$out);# $tx holds re-biased out here
145 &mov( $tx, &DWP(0,$d,$x,4)); 107 &lea ($inp,&DWP(4,$inp));
146 108 &mov ($tx,&DWP(0,$dat,$xx,4));
147 &cmp( $ty, $in); 109 &jb (&label("loop4"));
148 &jb( &label("end")); # less than 8 bytes 110
149 111 &cmp ($inp,&wparam(1)); # compare to input+len
150 &set_label("start"); 112 &je (&label("done"));
151 113 &mov ($out,&wparam(3)); # restore $out
152 # filling DELAY SLOT 114
153 &add( $in, 8); 115 &set_label("loop1",16);
154 116 &add (&LB($yy),&LB($tx));
155 &RC4_loop(0,-1,0); 117 &mov ($ty,&DWP(0,$dat,$yy,4));
156 &RC4_loop(1,0,0); 118 &mov (&DWP(0,$dat,$yy,4),$tx);
157 &RC4_loop(2,0,0); 119 &mov (&DWP(0,$dat,$xx,4),$ty);
158 &RC4_loop(3,0,0); 120 &add ($ty,$tx);
159 &RC4_loop(4,0,0); 121 &inc (&LB($xx));
160 &RC4_loop(5,0,0); 122 &and ($ty,0xff);
161 &RC4_loop(6,0,0); 123 &mov ($ty,&DWP(0,$dat,$ty,4));
162 &RC4_loop(7,1,0); 124 &xor (&LB($ty),&BP(0,$inp));
163 125 &lea ($inp,&DWP(1,$inp));
164 &comment("apply the cipher text"); 126 &mov ($tx,&DWP(0,$dat,$xx,4));
165 # xor the cipher data with input 127 &cmp ($inp,&wparam(1)); # compare to input+len
166 128 &mov (&BP(-1,$out,$inp),&LB($ty));
167 #&add( $out, 8); #moved up into last round 129 &jb (&label("loop1"));
168 130
169 &mov( $tx, &swtmp(0)); 131 &jmp (&label("done"));
170 &mov( $ty, &DWP(-8,$in,"",0)); 132
171 &xor( $tx, $ty); 133# this is essentially Intel P4 specific codepath...
172 &mov( $ty, &DWP(-4,$in,"",0)); 134&set_label("RC4_CHAR",16);
173 &mov( &DWP(-8,$out,"",0), $tx); 135 &movz ($tx,&BP(0,$dat,$xx));
174 &mov( $tx, &swtmp(1));
175 &xor( $tx, $ty);
176 &mov( $ty, &swtmp(2)); # load end ptr;
177 &mov( &DWP(-4,$out,"",0), $tx);
178 &mov( $tx, &DWP(0,$d,$x,4));
179 &cmp($in, $ty);
180 &jbe(&label("start"));
181
182 &set_label("end");
183
184 # There is quite a bit of extra crap in RC4_loop() for this
185 # first round
186 &RC4_loop(0,-1,1);
187 &RC4_loop(1,0,1);
188 &RC4_loop(2,0,1);
189 &RC4_loop(3,0,1);
190 &RC4_loop(4,0,1);
191 &RC4_loop(5,0,1);
192 &RC4_loop(6,1,1);
193
194 &jmp(&label("finished"));
195
196 &align(16);
197 # this is essentially Intel P4 specific codepath, see rc4_skey.c,
198 # and is engaged in 0.9.8 and later context...
199 &set_label("RC4_CHAR");
200
201 &lea ($ty,&DWP(0,$in,$ty));
202 &mov (&swtmp(2),$ty);
203 &movz ($tx,&BP(0,$d,$x));
204
205 # strangely enough unrolled loop performs over 20% slower... 136 # strangely enough unrolled loop performs over 20% slower...
206 &set_label("RC4_CHAR_loop"); 137 &set_label("cloop1");
207 &add (&LB($y),&LB($tx)); 138 &add (&LB($yy),&LB($tx));
208 &movz ($ty,&BP(0,$d,$y)); 139 &movz ($ty,&BP(0,$dat,$yy));
209 &movb (&BP(0,$d,$y),&LB($tx)); 140 &mov (&BP(0,$dat,$yy),&LB($tx));
210 &movb (&BP(0,$d,$x),&LB($ty)); 141 &mov (&BP(0,$dat,$xx),&LB($ty));
211 &add (&LB($ty),&LB($tx)); 142 &add (&LB($ty),&LB($tx));
212 &movz ($ty,&BP(0,$d,$ty)); 143 &movz ($ty,&BP(0,$dat,$ty));
213 &add (&LB($x),1); 144 &add (&LB($xx),1);
214 &xorb (&LB($ty),&BP(0,$in)); 145 &xor (&LB($ty),&BP(0,$inp));
215 &lea ($in,&DWP(1,$in)); 146 &lea ($inp,&DWP(1,$inp));
216 &movz ($tx,&BP(0,$d,$x)); 147 &movz ($tx,&BP(0,$dat,$xx));
217 &cmp ($in,&swtmp(2)); 148 &cmp ($inp,&wparam(1));
218 &movb (&BP(0,$out),&LB($ty)); 149 &mov (&BP(-1,$out,$inp),&LB($ty));
219 &lea ($out,&DWP(1,$out)); 150 &jb (&label("cloop1"));
220 &jb (&label("RC4_CHAR_loop")); 151
221 152&set_label("done");
222 &set_label("finished"); 153 &dec (&LB($xx));
223 &dec( $x); 154 &mov (&BP(-4,$dat),&LB($yy)); # save key->y
224 &stack_pop(3); 155 &mov (&BP(-8,$dat),&LB($xx)); # save key->x
225 &movb( &BP(-4,$d,"",0),&LB($y)); 156&set_label("abort");
226 &movb( &BP(-8,$d,"",0),&LB($x)); 157&function_end("RC4");
227 158
228 &function_end($name); 159########################################################################
229 } 160
161$inp="esi";
162$out="edi";
163$idi="ebp";
164$ido="ecx";
165$idx="edx";
166
167&external_label("OPENSSL_ia32cap_P");
168
169# void RC4_set_key(RC4_KEY *key,int len,const unsigned char *data);
170&function_begin("RC4_set_key");
171 &mov ($out,&wparam(0)); # load key
172 &mov ($idi,&wparam(1)); # load len
173 &mov ($inp,&wparam(2)); # load data
174 &picmeup($idx,"OPENSSL_ia32cap_P");
175
176 &lea ($out,&DWP(2*4,$out)); # &key->data
177 &lea ($inp,&DWP(0,$inp,$idi)); # $inp to point at the end
178 &neg ($idi);
179 &xor ("eax","eax");
180 &mov (&DWP(-4,$out),$idi); # borrow key->y
181
182 &bt (&DWP(0,$idx),20); # check for bit#20
183 &jc (&label("c1stloop"));
184
185&set_label("w1stloop",16);
186 &mov (&DWP(0,$out,"eax",4),"eax"); # key->data[i]=i;
187 &add (&LB("eax"),1); # i++;
188 &jnc (&label("w1stloop"));
189
190 &xor ($ido,$ido);
191 &xor ($idx,$idx);
192
193&set_label("w2ndloop",16);
194 &mov ("eax",&DWP(0,$out,$ido,4));
195 &add (&LB($idx),&BP(0,$inp,$idi));
196 &add (&LB($idx),&LB("eax"));
197 &add ($idi,1);
198 &mov ("ebx",&DWP(0,$out,$idx,4));
199 &jnz (&label("wnowrap"));
200 &mov ($idi,&DWP(-4,$out));
201 &set_label("wnowrap");
202 &mov (&DWP(0,$out,$idx,4),"eax");
203 &mov (&DWP(0,$out,$ido,4),"ebx");
204 &add (&LB($ido),1);
205 &jnc (&label("w2ndloop"));
206&jmp (&label("exit"));
207
208# Unlike all other x86 [and x86_64] implementations, Intel P4 core
209# [including EM64T] was found to perform poorly with above "32-bit" key
210# schedule, a.k.a. RC4_INT. Performance improvement for IA-32 hand-coded
211# assembler turned out to be 3.5x if re-coded for compressed 8-bit one,
212# a.k.a. RC4_CHAR! It's however inappropriate to just switch to 8-bit
213# schedule for x86[_64], because non-P4 implementations suffer from
214# significant performance losses then, e.g. PIII exhibits >2x
215# deterioration, and so does Opteron. In order to assure optimal
216# all-round performance, we detect P4 at run-time and set up compressed
217# key schedule, which is recognized by RC4 procedure.
218
219&set_label("c1stloop",16);
220 &mov (&BP(0,$out,"eax"),&LB("eax")); # key->data[i]=i;
221 &add (&LB("eax"),1); # i++;
222 &jnc (&label("c1stloop"));
223
224 &xor ($ido,$ido);
225 &xor ($idx,$idx);
226 &xor ("ebx","ebx");
227
228&set_label("c2ndloop",16);
229 &mov (&LB("eax"),&BP(0,$out,$ido));
230 &add (&LB($idx),&BP(0,$inp,$idi));
231 &add (&LB($idx),&LB("eax"));
232 &add ($idi,1);
233 &mov (&LB("ebx"),&BP(0,$out,$idx));
234 &jnz (&label("cnowrap"));
235 &mov ($idi,&DWP(-4,$out));
236 &set_label("cnowrap");
237 &mov (&BP(0,$out,$idx),&LB("eax"));
238 &mov (&BP(0,$out,$ido),&LB("ebx"));
239 &add (&LB($ido),1);
240 &jnc (&label("c2ndloop"));
241
242 &mov (&DWP(256,$out),-1); # mark schedule as compressed
243
244&set_label("exit");
245 &xor ("eax","eax");
246 &mov (&DWP(-8,$out),"eax"); # key->x=0;
247 &mov (&DWP(-4,$out),"eax"); # key->y=0;
248&function_end("RC4_set_key");
249
250# const char *RC4_options(void);
251&function_begin_B("RC4_options");
252 &call (&label("pic_point"));
253&set_label("pic_point");
254 &blindpop("eax");
255 &lea ("eax",&DWP(&label("opts")."-".&label("pic_point"),"eax"));
256 &picmeup("edx","OPENSSL_ia32cap_P");
257 &bt (&DWP(0,"edx"),20);
258 &jnc (&label("skip"));
259 &add ("eax",12);
260 &set_label("skip");
261 &ret ();
262&set_label("opts",64);
263&asciz ("rc4(4x,int)");
264&asciz ("rc4(1x,char)");
265&asciz ("RC4 for x86, CRYPTOGAMS by <appro\@openssl.org>");
266&align (64);
267&function_end_B("RC4_options");
268
269&asm_finish();
230 270
diff --git a/src/lib/libssl/src/crypto/rc4/rc4.h b/src/lib/libssl/src/crypto/rc4/rc4.h
index 2d8620d33b..29d1acccf5 100644
--- a/src/lib/libssl/src/crypto/rc4/rc4.h
+++ b/src/lib/libssl/src/crypto/rc4/rc4.h
@@ -64,6 +64,8 @@
64#error RC4 is disabled. 64#error RC4 is disabled.
65#endif 65#endif
66 66
67#include <stddef.h>
68
67#ifdef __cplusplus 69#ifdef __cplusplus
68extern "C" { 70extern "C" {
69#endif 71#endif
@@ -76,11 +78,8 @@ typedef struct rc4_key_st
76 78
77 79
78const char *RC4_options(void); 80const char *RC4_options(void);
79#ifdef OPENSSL_FIPS
80void private_RC4_set_key(RC4_KEY *key, int len, const unsigned char *data);
81#endif
82void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data); 81void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data);
83void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata, 82void RC4(RC4_KEY *key, size_t len, const unsigned char *indata,
84 unsigned char *outdata); 83 unsigned char *outdata);
85 84
86#ifdef __cplusplus 85#ifdef __cplusplus
diff --git a/src/lib/libssl/src/crypto/rc4/rc4_enc.c b/src/lib/libssl/src/crypto/rc4/rc4_enc.c
index 0660ea60a2..8c4fc6c7a3 100644
--- a/src/lib/libssl/src/crypto/rc4/rc4_enc.c
+++ b/src/lib/libssl/src/crypto/rc4/rc4_enc.c
@@ -67,12 +67,12 @@
67 * Date: Wed, 14 Sep 1994 06:35:31 GMT 67 * Date: Wed, 14 Sep 1994 06:35:31 GMT
68 */ 68 */
69 69
70void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata, 70void RC4(RC4_KEY *key, size_t len, const unsigned char *indata,
71 unsigned char *outdata) 71 unsigned char *outdata)
72 { 72 {
73 register RC4_INT *d; 73 register RC4_INT *d;
74 register RC4_INT x,y,tx,ty; 74 register RC4_INT x,y,tx,ty;
75 int i; 75 size_t i;
76 76
77 x=key->x; 77 x=key->x;
78 y=key->y; 78 y=key->y;
@@ -120,8 +120,8 @@ void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata,
120 (RC4_CHUNK)d[(tx+ty)&0xff]\ 120 (RC4_CHUNK)d[(tx+ty)&0xff]\
121 ) 121 )
122 122
123 if ( ( ((unsigned long)indata & (sizeof(RC4_CHUNK)-1)) | 123 if ( ( ((size_t)indata & (sizeof(RC4_CHUNK)-1)) |
124 ((unsigned long)outdata & (sizeof(RC4_CHUNK)-1)) ) == 0 ) 124 ((size_t)outdata & (sizeof(RC4_CHUNK)-1)) ) == 0 )
125 { 125 {
126 RC4_CHUNK ichunk,otp; 126 RC4_CHUNK ichunk,otp;
127 const union { long one; char little; } is_endian = {1}; 127 const union { long one; char little; } is_endian = {1};
@@ -157,7 +157,7 @@ void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata,
157 if (!is_endian.little) 157 if (!is_endian.little)
158 { /* BIG-ENDIAN CASE */ 158 { /* BIG-ENDIAN CASE */
159# define BESHFT(c) (((sizeof(RC4_CHUNK)-(c)-1)*8)&(sizeof(RC4_CHUNK)*8-1)) 159# define BESHFT(c) (((sizeof(RC4_CHUNK)-(c)-1)*8)&(sizeof(RC4_CHUNK)*8-1))
160 for (;len&~(sizeof(RC4_CHUNK)-1);len-=sizeof(RC4_CHUNK)) 160 for (;len&(0-sizeof(RC4_CHUNK));len-=sizeof(RC4_CHUNK))
161 { 161 {
162 ichunk = *(RC4_CHUNK *)indata; 162 ichunk = *(RC4_CHUNK *)indata;
163 otp = RC4_STEP<<BESHFT(0); 163 otp = RC4_STEP<<BESHFT(0);
@@ -210,7 +210,7 @@ void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata,
210 else 210 else
211 { /* LITTLE-ENDIAN CASE */ 211 { /* LITTLE-ENDIAN CASE */
212# define LESHFT(c) (((c)*8)&(sizeof(RC4_CHUNK)*8-1)) 212# define LESHFT(c) (((c)*8)&(sizeof(RC4_CHUNK)*8-1))
213 for (;len&~(sizeof(RC4_CHUNK)-1);len-=sizeof(RC4_CHUNK)) 213 for (;len&(0-sizeof(RC4_CHUNK));len-=sizeof(RC4_CHUNK))
214 { 214 {
215 ichunk = *(RC4_CHUNK *)indata; 215 ichunk = *(RC4_CHUNK *)indata;
216 otp = RC4_STEP; 216 otp = RC4_STEP;
@@ -276,7 +276,7 @@ void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata,
276#define RC4_LOOP(a,b,i) LOOP(a[i],b[i]) 276#define RC4_LOOP(a,b,i) LOOP(a[i],b[i])
277#endif 277#endif
278 278
279 i=(int)(len>>3L); 279 i=len>>3;
280 if (i) 280 if (i)
281 { 281 {
282 for (;;) 282 for (;;)
@@ -296,7 +296,7 @@ void RC4(RC4_KEY *key, unsigned long len, const unsigned char *indata,
296 if (--i == 0) break; 296 if (--i == 0) break;
297 } 297 }
298 } 298 }
299 i=(int)len&0x07; 299 i=len&0x07;
300 if (i) 300 if (i)
301 { 301 {
302 for (;;) 302 for (;;)
diff --git a/src/lib/libssl/src/crypto/rc4/rc4_skey.c b/src/lib/libssl/src/crypto/rc4/rc4_skey.c
index 4478d1a4b3..b22c40b0bd 100644
--- a/src/lib/libssl/src/crypto/rc4/rc4_skey.c
+++ b/src/lib/libssl/src/crypto/rc4/rc4_skey.c
@@ -59,11 +59,6 @@
59#include <openssl/rc4.h> 59#include <openssl/rc4.h>
60#include "rc4_locl.h" 60#include "rc4_locl.h"
61#include <openssl/opensslv.h> 61#include <openssl/opensslv.h>
62#include <openssl/crypto.h>
63#ifdef OPENSSL_FIPS
64#include <openssl/fips.h>
65#endif
66
67 62
68const char RC4_version[]="RC4" OPENSSL_VERSION_PTEXT; 63const char RC4_version[]="RC4" OPENSSL_VERSION_PTEXT;
69 64
@@ -90,11 +85,7 @@ const char *RC4_options(void)
90 * Date: Wed, 14 Sep 1994 06:35:31 GMT 85 * Date: Wed, 14 Sep 1994 06:35:31 GMT
91 */ 86 */
92 87
93#ifdef OPENSSL_FIPS
94void private_RC4_set_key(RC4_KEY *key, int len, const unsigned char *data)
95#else
96void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data) 88void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data)
97#endif
98 { 89 {
99 register RC4_INT tmp; 90 register RC4_INT tmp;
100 register int id1,id2; 91 register int id1,id2;
@@ -128,20 +119,14 @@ void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data)
128 * implementations suffer from significant performance 119 * implementations suffer from significant performance
129 * losses then, e.g. PIII exhibits >2x deterioration, 120 * losses then, e.g. PIII exhibits >2x deterioration,
130 * and so does Opteron. In order to assure optimal 121 * and so does Opteron. In order to assure optimal
131 * all-round performance, we detect P4 at run-time by 122 * all-round performance, let us [try to] detect P4 at
132 * checking upon reserved bit 20 in CPU capability 123 * run-time by checking upon HTT bit in CPU capability
133 * vector and set up compressed key schedule, which is 124 * vector and set up compressed key schedule, which is
134 * recognized by correspondingly updated assembler 125 * recognized by correspondingly updated assembler
135 * module... Bit 20 is set up by OPENSSL_ia32_cpuid. 126 * module...
136 *
137 * <appro@fy.chalmers.se> 127 * <appro@fy.chalmers.se>
138 */ 128 */
139#ifdef OPENSSL_FIPS
140 unsigned long *ia32cap_ptr = OPENSSL_ia32cap_loc();
141 if (ia32cap_ptr && (*ia32cap_ptr & (1<<28))) {
142#else
143 if (OPENSSL_ia32cap_P & (1<<28)) { 129 if (OPENSSL_ia32cap_P & (1<<28)) {
144#endif
145 unsigned char *cp=(unsigned char *)d; 130 unsigned char *cp=(unsigned char *)d;
146 131
147 for (i=0;i<256;i++) cp[i]=i; 132 for (i=0;i<256;i++) cp[i]=i;
diff --git a/src/lib/libssl/src/crypto/rc4/rc4test.c b/src/lib/libssl/src/crypto/rc4/rc4test.c
index 54b597fa26..633a79e758 100644
--- a/src/lib/libssl/src/crypto/rc4/rc4test.c
+++ b/src/lib/libssl/src/crypto/rc4/rc4test.c
@@ -114,8 +114,8 @@ static unsigned char output[7][30]={
114 114
115int main(int argc, char *argv[]) 115int main(int argc, char *argv[])
116 { 116 {
117 int err=0; 117 int i,err=0;
118 unsigned int i, j; 118 int j;
119 unsigned char *p; 119 unsigned char *p;
120 RC4_KEY key; 120 RC4_KEY key;
121 unsigned char obuf[512]; 121 unsigned char obuf[512];
@@ -129,12 +129,12 @@ int main(int argc, char *argv[])
129 { 129 {
130 printf("error calculating RC4\n"); 130 printf("error calculating RC4\n");
131 printf("output:"); 131 printf("output:");
132 for (j=0; j<data_len[i]+1U; j++) 132 for (j=0; j<data_len[i]+1; j++)
133 printf(" %02x",obuf[j]); 133 printf(" %02x",obuf[j]);
134 printf("\n"); 134 printf("\n");
135 printf("expect:"); 135 printf("expect:");
136 p= &(output[i][0]); 136 p= &(output[i][0]);
137 for (j=0; j<data_len[i]+1U; j++) 137 for (j=0; j<data_len[i]+1; j++)
138 printf(" %02x",*(p++)); 138 printf(" %02x",*(p++));
139 printf("\n"); 139 printf("\n");
140 err++; 140 err++;
@@ -180,12 +180,12 @@ int main(int argc, char *argv[])
180 { 180 {
181 printf("error in RC4 multi-call processing\n"); 181 printf("error in RC4 multi-call processing\n");
182 printf("output:"); 182 printf("output:");
183 for (j=0; j<data_len[3]+1U; j++) 183 for (j=0; j<data_len[3]+1; j++)
184 printf(" %02x",obuf[j]); 184 printf(" %02x",obuf[j]);
185 printf("\n"); 185 printf("\n");
186 printf("expect:"); 186 printf("expect:");
187 p= &(output[3][0]); 187 p= &(output[3][0]);
188 for (j=0; j<data_len[3]+1U; j++) 188 for (j=0; j<data_len[3]+1; j++)
189 printf(" %02x",*(p++)); 189 printf(" %02x",*(p++));
190 err++; 190 err++;
191 } 191 }
@@ -216,11 +216,11 @@ int main(int argc, char *argv[])
216 if (memcmp(md,expected,sizeof(md))) { 216 if (memcmp(md,expected,sizeof(md))) {
217 printf("error in RC4 bulk test\n"); 217 printf("error in RC4 bulk test\n");
218 printf("output:"); 218 printf("output:");
219 for (j=0; j<sizeof(md); j++) 219 for (j=0; j<(int)sizeof(md); j++)
220 printf(" %02x",md[j]); 220 printf(" %02x",md[j]);
221 printf("\n"); 221 printf("\n");
222 printf("expect:"); 222 printf("expect:");
223 for (j=0; j<sizeof(md); j++) 223 for (j=0; j<(int)sizeof(md); j++)
224 printf(" %02x",expected[j]); 224 printf(" %02x",expected[j]);
225 printf("\n"); 225 printf("\n");
226 err++; 226 err++;
diff --git a/src/lib/libssl/src/crypto/rc5/Makefile b/src/lib/libssl/src/crypto/rc5/Makefile
index b4e21c9bb2..8a8b00eb89 100644
--- a/src/lib/libssl/src/crypto/rc5/Makefile
+++ b/src/lib/libssl/src/crypto/rc5/Makefile
@@ -12,8 +12,6 @@ MAKEFILE= Makefile
12AR= ar r 12AR= ar r
13 13
14RC5_ENC= rc5_enc.o 14RC5_ENC= rc5_enc.o
15# or use
16#DES_ENC= r586-elf.o
17 15
18CFLAGS= $(INCLUDES) $(CFLAG) 16CFLAGS= $(INCLUDES) $(CFLAG)
19ASFLAGS= $(INCLUDES) $(ASFLAG) 17ASFLAGS= $(INCLUDES) $(ASFLAG)
@@ -40,19 +38,12 @@ top:
40all: lib 38all: lib
41 39
42lib: $(LIBOBJ) 40lib: $(LIBOBJ)
43 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
44 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
45 @touch lib 43 @touch lib
46 44
47# ELF 45rc5-586.s: asm/rc5-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
48r586-elf.s: asm/rc5-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl 46 $(PERL) asm/rc5-586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
49 (cd asm; $(PERL) rc5-586.pl elf $(CFLAGS) > ../$@)
50# COFF
51r586-cof.s: asm/rc5-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
52 (cd asm; $(PERL) rc5-586.pl coff $(CFLAGS) > ../$@)
53# a.out
54r586-out.s: asm/rc5-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
55 (cd asm; $(PERL) rc5-586.pl a.out $(CFLAGS) > ../$@)
56 47
57files: 48files:
58 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 49 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
diff --git a/src/lib/libssl/src/crypto/rc5/rc5.h b/src/lib/libssl/src/crypto/rc5/rc5.h
index f73a2a02a4..4b3c153b50 100644
--- a/src/lib/libssl/src/crypto/rc5/rc5.h
+++ b/src/lib/libssl/src/crypto/rc5/rc5.h
@@ -94,10 +94,7 @@ typedef struct rc5_key_st
94 RC5_32_INT data[2*(RC5_16_ROUNDS+1)]; 94 RC5_32_INT data[2*(RC5_16_ROUNDS+1)];
95 } RC5_32_KEY; 95 } RC5_32_KEY;
96 96
97#ifdef OPENSSL_FIPS 97
98void private_RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data,
99 int rounds);
100#endif
101void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data, 98void RC5_32_set_key(RC5_32_KEY *key, int len, const unsigned char *data,
102 int rounds); 99 int rounds);
103void RC5_32_ecb_encrypt(const unsigned char *in,unsigned char *out,RC5_32_KEY *key, 100void RC5_32_ecb_encrypt(const unsigned char *in,unsigned char *out,RC5_32_KEY *key,
diff --git a/src/lib/libssl/src/crypto/ripemd/Makefile b/src/lib/libssl/src/crypto/ripemd/Makefile
index 6145f13699..d5b1067dbe 100644
--- a/src/lib/libssl/src/crypto/ripemd/Makefile
+++ b/src/lib/libssl/src/crypto/ripemd/Makefile
@@ -38,19 +38,12 @@ top:
38all: lib 38all: lib
39 39
40lib: $(LIBOBJ) 40lib: $(LIBOBJ)
41 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
42 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
43 @touch lib 43 @touch lib
44 44
45# ELF 45rmd-586.s: asm/rmd-586.pl ../perlasm/x86asm.pl
46rm86-elf.s: asm/rmd-586.pl ../perlasm/x86asm.pl 46 $(PERL) asm/rmd-586.pl $(PERLASM_SCHEME) $(CFLAGS) > $@
47 (cd asm; $(PERL) rmd-586.pl elf $(CFLAGS) > ../$@)
48# COFF
49rm86-cof.s: asm/rmd-586.pl ../perlasm/x86asm.pl
50 (cd asm; $(PERL) rmd-586.pl coff $(CFLAGS) > ../$@)
51# a.out
52rm86-out.s: asm/rmd-586.pl ../perlasm/x86asm.pl
53 (cd asm; $(PERL) rmd-586.pl a.out $(CFLAGS) > ../$@)
54 47
55files: 48files:
56 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 49 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -89,13 +82,8 @@ clean:
89 82
90# DO NOT DELETE THIS LINE -- make depend depends on it. 83# DO NOT DELETE THIS LINE -- make depend depends on it.
91 84
92rmd_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 85rmd_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
93rmd_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 86rmd_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ripemd.h
94rmd_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
95rmd_dgst.o: ../../include/openssl/opensslconf.h
96rmd_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
97rmd_dgst.o: ../../include/openssl/ripemd.h ../../include/openssl/safestack.h
98rmd_dgst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
99rmd_dgst.o: ../md32_common.h rmd_dgst.c rmd_locl.h rmdconst.h 87rmd_dgst.o: ../md32_common.h rmd_dgst.c rmd_locl.h rmdconst.h
100rmd_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 88rmd_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
101rmd_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 89rmd_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
diff --git a/src/lib/libssl/src/crypto/ripemd/asm/rmd-586.pl b/src/lib/libssl/src/crypto/ripemd/asm/rmd-586.pl
index 4f3c4c967f..e8b2bc2db2 100644
--- a/src/lib/libssl/src/crypto/ripemd/asm/rmd-586.pl
+++ b/src/lib/libssl/src/crypto/ripemd/asm/rmd-586.pl
@@ -5,7 +5,8 @@
5 5
6$normal=0; 6$normal=0;
7 7
8push(@INC,"perlasm","../../perlasm"); 8$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
9push(@INC,"${dir}","${dir}../../perlasm");
9require "x86asm.pl"; 10require "x86asm.pl";
10 11
11&asm_init($ARGV[0],$0); 12&asm_init($ARGV[0],$0);
diff --git a/src/lib/libssl/src/crypto/ripemd/ripemd.h b/src/lib/libssl/src/crypto/ripemd/ripemd.h
index 3b6d04386d..5942eb6180 100644
--- a/src/lib/libssl/src/crypto/ripemd/ripemd.h
+++ b/src/lib/libssl/src/crypto/ripemd/ripemd.h
@@ -70,7 +70,7 @@ extern "C" {
70#error RIPEMD is disabled. 70#error RIPEMD is disabled.
71#endif 71#endif
72 72
73#if defined(OPENSSL_SYS_WIN16) || defined(__LP32__) 73#if defined(__LP32__)
74#define RIPEMD160_LONG unsigned long 74#define RIPEMD160_LONG unsigned long
75#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) 75#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__)
76#define RIPEMD160_LONG unsigned long 76#define RIPEMD160_LONG unsigned long
@@ -90,9 +90,7 @@ typedef struct RIPEMD160state_st
90 RIPEMD160_LONG data[RIPEMD160_LBLOCK]; 90 RIPEMD160_LONG data[RIPEMD160_LBLOCK];
91 unsigned int num; 91 unsigned int num;
92 } RIPEMD160_CTX; 92 } RIPEMD160_CTX;
93#ifdef OPENSSL_FIPS 93
94int private_RIPEMD160_Init(RIPEMD160_CTX *c);
95#endif
96int RIPEMD160_Init(RIPEMD160_CTX *c); 94int RIPEMD160_Init(RIPEMD160_CTX *c);
97int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, size_t len); 95int RIPEMD160_Update(RIPEMD160_CTX *c, const void *data, size_t len);
98int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c); 96int RIPEMD160_Final(unsigned char *md, RIPEMD160_CTX *c);
diff --git a/src/lib/libssl/src/crypto/ripemd/rmd_dgst.c b/src/lib/libssl/src/crypto/ripemd/rmd_dgst.c
index ead11d075a..59b017f8c0 100644
--- a/src/lib/libssl/src/crypto/ripemd/rmd_dgst.c
+++ b/src/lib/libssl/src/crypto/ripemd/rmd_dgst.c
@@ -59,11 +59,6 @@
59#include <stdio.h> 59#include <stdio.h>
60#include "rmd_locl.h" 60#include "rmd_locl.h"
61#include <openssl/opensslv.h> 61#include <openssl/opensslv.h>
62#include <openssl/err.h>
63#ifdef OPENSSL_FIPS
64#include <openssl/fips.h>
65#endif
66
67 62
68const char RMD160_version[]="RIPE-MD160" OPENSSL_VERSION_PTEXT; 63const char RMD160_version[]="RIPE-MD160" OPENSSL_VERSION_PTEXT;
69 64
@@ -74,16 +69,14 @@ const char RMD160_version[]="RIPE-MD160" OPENSSL_VERSION_PTEXT;
74 void ripemd160_block(RIPEMD160_CTX *c, unsigned long *p,size_t num); 69 void ripemd160_block(RIPEMD160_CTX *c, unsigned long *p,size_t num);
75# endif 70# endif
76 71
77FIPS_NON_FIPS_MD_Init(RIPEMD160) 72int RIPEMD160_Init(RIPEMD160_CTX *c)
78 { 73 {
74 memset (c,0,sizeof(*c));
79 c->A=RIPEMD160_A; 75 c->A=RIPEMD160_A;
80 c->B=RIPEMD160_B; 76 c->B=RIPEMD160_B;
81 c->C=RIPEMD160_C; 77 c->C=RIPEMD160_C;
82 c->D=RIPEMD160_D; 78 c->D=RIPEMD160_D;
83 c->E=RIPEMD160_E; 79 c->E=RIPEMD160_E;
84 c->Nl=0;
85 c->Nh=0;
86 c->num=0;
87 return 1; 80 return 1;
88 } 81 }
89 82
diff --git a/src/lib/libssl/src/crypto/ripemd/rmd_locl.h b/src/lib/libssl/src/crypto/ripemd/rmd_locl.h
index ce12a8000e..f14b346e66 100644
--- a/src/lib/libssl/src/crypto/ripemd/rmd_locl.h
+++ b/src/lib/libssl/src/crypto/ripemd/rmd_locl.h
@@ -72,7 +72,7 @@
72 */ 72 */
73#ifdef RMD160_ASM 73#ifdef RMD160_ASM
74# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__INTEL__) 74# if defined(__i386) || defined(__i386__) || defined(_M_IX86) || defined(__INTEL__)
75# define ripemd160_block_host_order ripemd160_block_asm_data_order 75# define ripemd160_block_data_order ripemd160_block_asm_data_order
76# endif 76# endif
77#endif 77#endif
78 78
diff --git a/src/lib/libssl/src/crypto/rsa/Makefile b/src/lib/libssl/src/crypto/rsa/Makefile
index 7b1fd6428c..bb64223e05 100644
--- a/src/lib/libssl/src/crypto/rsa/Makefile
+++ b/src/lib/libssl/src/crypto/rsa/Makefile
@@ -19,10 +19,12 @@ APPS=
19LIB=$(TOP)/libcrypto.a 19LIB=$(TOP)/libcrypto.a
20LIBSRC= rsa_eay.c rsa_gen.c rsa_lib.c rsa_sign.c rsa_saos.c rsa_err.c \ 20LIBSRC= rsa_eay.c rsa_gen.c rsa_lib.c rsa_sign.c rsa_saos.c rsa_err.c \
21 rsa_pk1.c rsa_ssl.c rsa_none.c rsa_oaep.c rsa_chk.c rsa_null.c \ 21 rsa_pk1.c rsa_ssl.c rsa_none.c rsa_oaep.c rsa_chk.c rsa_null.c \
22 rsa_pss.c rsa_x931.c rsa_x931g.c rsa_asn1.c rsa_depr.c rsa_eng.c 22 rsa_pss.c rsa_x931.c rsa_asn1.c rsa_depr.c rsa_ameth.c rsa_prn.c \
23 rsa_pmeth.c
23LIBOBJ= rsa_eay.o rsa_gen.o rsa_lib.o rsa_sign.o rsa_saos.o rsa_err.o \ 24LIBOBJ= rsa_eay.o rsa_gen.o rsa_lib.o rsa_sign.o rsa_saos.o rsa_err.o \
24 rsa_pk1.o rsa_ssl.o rsa_none.o rsa_oaep.o rsa_chk.o rsa_null.o \ 25 rsa_pk1.o rsa_ssl.o rsa_none.o rsa_oaep.o rsa_chk.o rsa_null.o \
25 rsa_pss.o rsa_x931.o rsa_x931g.o rsa_asn1.o rsa_depr.o rsa_eng.o 26 rsa_pss.o rsa_x931.o rsa_asn1.o rsa_depr.o rsa_ameth.o rsa_prn.o \
27 rsa_pmeth.o
26 28
27SRC= $(LIBSRC) 29SRC= $(LIBSRC)
28 30
@@ -37,7 +39,7 @@ top:
37all: lib 39all: lib
38 40
39lib: $(LIBOBJ) 41lib: $(LIBOBJ)
40 $(ARX) $(LIB) $(LIBOBJ) 42 $(AR) $(LIB) $(LIBOBJ)
41 $(RANLIB) $(LIB) || echo Never mind. 43 $(RANLIB) $(LIB) || echo Never mind.
42 @touch lib 44 @touch lib
43 45
@@ -78,6 +80,22 @@ clean:
78 80
79# DO NOT DELETE THIS LINE -- make depend depends on it. 81# DO NOT DELETE THIS LINE -- make depend depends on it.
80 82
83rsa_ameth.o: ../../e_os.h ../../include/openssl/asn1.h
84rsa_ameth.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
85rsa_ameth.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
86rsa_ameth.o: ../../include/openssl/cms.h ../../include/openssl/crypto.h
87rsa_ameth.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
88rsa_ameth.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
89rsa_ameth.o: ../../include/openssl/err.h ../../include/openssl/evp.h
90rsa_ameth.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
91rsa_ameth.o: ../../include/openssl/objects.h
92rsa_ameth.o: ../../include/openssl/opensslconf.h
93rsa_ameth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
94rsa_ameth.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
95rsa_ameth.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
96rsa_ameth.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
97rsa_ameth.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
98rsa_ameth.o: ../asn1/asn1_locl.h ../cryptlib.h rsa_ameth.c
81rsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h 99rsa_asn1.o: ../../e_os.h ../../include/openssl/asn1.h
82rsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 100rsa_asn1.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
83rsa_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 101rsa_asn1.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
@@ -114,21 +132,6 @@ rsa_eay.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
114rsa_eay.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 132rsa_eay.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
115rsa_eay.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 133rsa_eay.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
116rsa_eay.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_eay.c 134rsa_eay.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_eay.c
117rsa_eng.o: ../../e_os.h ../../include/openssl/asn1.h
118rsa_eng.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
119rsa_eng.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
120rsa_eng.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
121rsa_eng.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
122rsa_eng.o: ../../include/openssl/engine.h ../../include/openssl/err.h
123rsa_eng.o: ../../include/openssl/evp.h ../../include/openssl/fips.h
124rsa_eng.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
125rsa_eng.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
126rsa_eng.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
127rsa_eng.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h
128rsa_eng.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
129rsa_eng.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
130rsa_eng.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
131rsa_eng.o: ../../include/openssl/x509_vfy.h ../cryptlib.h rsa_eng.c
132rsa_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 135rsa_err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
133rsa_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 136rsa_err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
134rsa_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h 137rsa_err.o: ../../include/openssl/err.h ../../include/openssl/lhash.h
@@ -151,15 +154,15 @@ rsa_lib.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
151rsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 154rsa_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
152rsa_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 155rsa_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
153rsa_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h 156rsa_lib.o: ../../include/openssl/engine.h ../../include/openssl/err.h
154rsa_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 157rsa_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
155rsa_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 158rsa_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
156rsa_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 159rsa_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
157rsa_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 160rsa_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
158rsa_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/rand.h 161rsa_lib.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
159rsa_lib.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h 162rsa_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
160rsa_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 163rsa_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
161rsa_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 164rsa_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
162rsa_lib.o: ../../include/openssl/x509_vfy.h ../cryptlib.h rsa_lib.c 165rsa_lib.o: ../cryptlib.h rsa_lib.c
163rsa_none.o: ../../e_os.h ../../include/openssl/asn1.h 166rsa_none.o: ../../e_os.h ../../include/openssl/asn1.h
164rsa_none.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 167rsa_none.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
165rsa_none.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 168rsa_none.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -182,9 +185,9 @@ rsa_oaep.o: ../../e_os.h ../../include/openssl/asn1.h
182rsa_oaep.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 185rsa_oaep.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
183rsa_oaep.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 186rsa_oaep.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
184rsa_oaep.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 187rsa_oaep.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
185rsa_oaep.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 188rsa_oaep.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
186rsa_oaep.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 189rsa_oaep.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
187rsa_oaep.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 190rsa_oaep.o: ../../include/openssl/opensslconf.h
188rsa_oaep.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 191rsa_oaep.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
189rsa_oaep.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 192rsa_oaep.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
190rsa_oaep.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 193rsa_oaep.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -199,27 +202,50 @@ rsa_pk1.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
199rsa_pk1.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 202rsa_pk1.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
200rsa_pk1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 203rsa_pk1.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
201rsa_pk1.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_pk1.c 204rsa_pk1.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_pk1.c
205rsa_pmeth.o: ../../e_os.h ../../include/openssl/asn1.h
206rsa_pmeth.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
207rsa_pmeth.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
208rsa_pmeth.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
209rsa_pmeth.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
210rsa_pmeth.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
211rsa_pmeth.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
212rsa_pmeth.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
213rsa_pmeth.o: ../../include/openssl/opensslconf.h
214rsa_pmeth.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
215rsa_pmeth.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
216rsa_pmeth.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
217rsa_pmeth.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
218rsa_pmeth.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
219rsa_pmeth.o: ../cryptlib.h ../evp/evp_locl.h rsa_locl.h rsa_pmeth.c
220rsa_prn.o: ../../e_os.h ../../include/openssl/asn1.h
221rsa_prn.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
222rsa_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
223rsa_prn.o: ../../include/openssl/err.h ../../include/openssl/evp.h
224rsa_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
225rsa_prn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
226rsa_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
227rsa_prn.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
228rsa_prn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
229rsa_prn.o: ../cryptlib.h rsa_prn.c
202rsa_pss.o: ../../e_os.h ../../include/openssl/asn1.h 230rsa_pss.o: ../../e_os.h ../../include/openssl/asn1.h
203rsa_pss.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 231rsa_pss.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
204rsa_pss.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 232rsa_pss.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
205rsa_pss.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 233rsa_pss.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
206rsa_pss.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 234rsa_pss.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
207rsa_pss.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 235rsa_pss.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
208rsa_pss.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 236rsa_pss.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
209rsa_pss.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 237rsa_pss.o: ../../include/openssl/ossl_typ.h ../../include/openssl/rand.h
210rsa_pss.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 238rsa_pss.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
211rsa_pss.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 239rsa_pss.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
212rsa_pss.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 240rsa_pss.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_pss.c
213rsa_pss.o: ../cryptlib.h rsa_pss.c
214rsa_saos.o: ../../e_os.h ../../include/openssl/asn1.h 241rsa_saos.o: ../../e_os.h ../../include/openssl/asn1.h
215rsa_saos.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 242rsa_saos.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
216rsa_saos.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 243rsa_saos.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
217rsa_saos.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 244rsa_saos.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
218rsa_saos.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 245rsa_saos.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
219rsa_saos.o: ../../include/openssl/err.h ../../include/openssl/evp.h 246rsa_saos.o: ../../include/openssl/err.h ../../include/openssl/evp.h
220rsa_saos.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 247rsa_saos.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
221rsa_saos.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 248rsa_saos.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
222rsa_saos.o: ../../include/openssl/opensslconf.h
223rsa_saos.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 249rsa_saos.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
224rsa_saos.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 250rsa_saos.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
225rsa_saos.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 251rsa_saos.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
@@ -232,15 +258,14 @@ rsa_sign.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
232rsa_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 258rsa_sign.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
233rsa_sign.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 259rsa_sign.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
234rsa_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h 260rsa_sign.o: ../../include/openssl/err.h ../../include/openssl/evp.h
235rsa_sign.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 261rsa_sign.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
236rsa_sign.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 262rsa_sign.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
237rsa_sign.o: ../../include/openssl/opensslconf.h
238rsa_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 263rsa_sign.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
239rsa_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 264rsa_sign.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h
240rsa_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 265rsa_sign.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
241rsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 266rsa_sign.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
242rsa_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 267rsa_sign.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
243rsa_sign.o: ../cryptlib.h rsa_sign.c 268rsa_sign.o: ../cryptlib.h rsa_locl.h rsa_sign.c
244rsa_ssl.o: ../../e_os.h ../../include/openssl/asn1.h 269rsa_ssl.o: ../../e_os.h ../../include/openssl/asn1.h
245rsa_ssl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 270rsa_ssl.o: ../../include/openssl/bio.h ../../include/openssl/bn.h
246rsa_ssl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 271rsa_ssl.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
@@ -260,11 +285,3 @@ rsa_x931.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
260rsa_x931.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h 285rsa_x931.o: ../../include/openssl/rand.h ../../include/openssl/rsa.h
261rsa_x931.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h 286rsa_x931.o: ../../include/openssl/safestack.h ../../include/openssl/stack.h
262rsa_x931.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_x931.c 287rsa_x931.o: ../../include/openssl/symhacks.h ../cryptlib.h rsa_x931.c
263rsa_x931g.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
264rsa_x931g.o: ../../include/openssl/bn.h ../../include/openssl/crypto.h
265rsa_x931g.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
266rsa_x931g.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
267rsa_x931g.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
268rsa_x931g.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
269rsa_x931g.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
270rsa_x931g.o: rsa_x931g.c
diff --git a/src/lib/libssl/src/crypto/rsa/rsa.h b/src/lib/libssl/src/crypto/rsa/rsa.h
index 5bb932ae15..cf74343657 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa.h
+++ b/src/lib/libssl/src/crypto/rsa/rsa.h
@@ -74,25 +74,6 @@
74#error RSA is disabled. 74#error RSA is disabled.
75#endif 75#endif
76 76
77/* If this flag is set the RSA method is FIPS compliant and can be used
78 * in FIPS mode. This is set in the validated module method. If an
79 * application sets this flag in its own methods it is its reposibility
80 * to ensure the result is compliant.
81 */
82
83#define RSA_FLAG_FIPS_METHOD 0x0400
84
85/* If this flag is set the operations normally disabled in FIPS mode are
86 * permitted it is then the applications responsibility to ensure that the
87 * usage is compliant.
88 */
89
90#define RSA_FLAG_NON_FIPS_ALLOW 0x0400
91
92#ifdef OPENSSL_FIPS
93#define FIPS_RSA_SIZE_T int
94#endif
95
96#ifdef __cplusplus 77#ifdef __cplusplus
97extern "C" { 78extern "C" {
98#endif 79#endif
@@ -136,7 +117,8 @@ struct rsa_meth_st
136 unsigned char *sigret, unsigned int *siglen, const RSA *rsa); 117 unsigned char *sigret, unsigned int *siglen, const RSA *rsa);
137 int (*rsa_verify)(int dtype, 118 int (*rsa_verify)(int dtype,
138 const unsigned char *m, unsigned int m_length, 119 const unsigned char *m, unsigned int m_length,
139 unsigned char *sigbuf, unsigned int siglen, const RSA *rsa); 120 const unsigned char *sigbuf, unsigned int siglen,
121 const RSA *rsa);
140/* If this callback is NULL, the builtin software RSA key-gen will be used. This 122/* If this callback is NULL, the builtin software RSA key-gen will be used. This
141 * is for behavioural compatibility whilst the code gets rewired, but one day 123 * is for behavioural compatibility whilst the code gets rewired, but one day
142 * it would be nice to assume there are no such things as "builtin software" 124 * it would be nice to assume there are no such things as "builtin software"
@@ -182,8 +164,6 @@ struct rsa_st
182# define OPENSSL_RSA_MAX_MODULUS_BITS 16384 164# define OPENSSL_RSA_MAX_MODULUS_BITS 16384
183#endif 165#endif
184 166
185#define OPENSSL_RSA_FIPS_MIN_MODULUS_BITS 1024
186
187#ifndef OPENSSL_RSA_SMALL_MODULUS_BITS 167#ifndef OPENSSL_RSA_SMALL_MODULUS_BITS
188# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072 168# define OPENSSL_RSA_SMALL_MODULUS_BITS 3072
189#endif 169#endif
@@ -238,11 +218,37 @@ struct rsa_st
238#endif 218#endif
239 219
240 220
221#define EVP_PKEY_CTX_set_rsa_padding(ctx, pad) \
222 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, -1, EVP_PKEY_CTRL_RSA_PADDING, \
223 pad, NULL)
224
225#define EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, len) \
226 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, \
227 (EVP_PKEY_OP_SIGN|EVP_PKEY_OP_VERIFY), \
228 EVP_PKEY_CTRL_RSA_PSS_SALTLEN, \
229 len, NULL)
230
231#define EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, bits) \
232 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_KEYGEN, \
233 EVP_PKEY_CTRL_RSA_KEYGEN_BITS, bits, NULL)
234
235#define EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, pubexp) \
236 EVP_PKEY_CTX_ctrl(ctx, EVP_PKEY_RSA, EVP_PKEY_OP_KEYGEN, \
237 EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP, 0, pubexp)
238
239#define EVP_PKEY_CTRL_RSA_PADDING (EVP_PKEY_ALG_CTRL + 1)
240#define EVP_PKEY_CTRL_RSA_PSS_SALTLEN (EVP_PKEY_ALG_CTRL + 2)
241
242#define EVP_PKEY_CTRL_RSA_KEYGEN_BITS (EVP_PKEY_ALG_CTRL + 3)
243#define EVP_PKEY_CTRL_RSA_KEYGEN_PUBEXP (EVP_PKEY_ALG_CTRL + 4)
244
241#define RSA_PKCS1_PADDING 1 245#define RSA_PKCS1_PADDING 1
242#define RSA_SSLV23_PADDING 2 246#define RSA_SSLV23_PADDING 2
243#define RSA_NO_PADDING 3 247#define RSA_NO_PADDING 3
244#define RSA_PKCS1_OAEP_PADDING 4 248#define RSA_PKCS1_OAEP_PADDING 4
245#define RSA_X931_PADDING 5 249#define RSA_X931_PADDING 5
250/* EVP_PKEY_ only */
251#define RSA_PKCS1_PSS_PADDING 6
246 252
247#define RSA_PKCS1_PADDING_SIZE 11 253#define RSA_PKCS1_PADDING_SIZE 11
248 254
@@ -261,11 +267,6 @@ RSA * RSA_generate_key(int bits, unsigned long e,void
261 267
262/* New version */ 268/* New version */
263int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); 269int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb);
264int RSA_X931_derive_ex(RSA *rsa, BIGNUM *p1, BIGNUM *p2, BIGNUM *q1, BIGNUM *q2,
265 const BIGNUM *Xp1, const BIGNUM *Xp2, const BIGNUM *Xp,
266 const BIGNUM *Xq1, const BIGNUM *Xq2, const BIGNUM *Xq,
267 const BIGNUM *e, BN_GENCB *cb);
268int RSA_X931_generate_key_ex(RSA *rsa, int bits, const BIGNUM *e, BN_GENCB *cb);
269 270
270int RSA_check_key(const RSA *); 271int RSA_check_key(const RSA *);
271 /* next 4 return -1 on error */ 272 /* next 4 return -1 on error */
@@ -283,11 +284,6 @@ int RSA_up_ref(RSA *r);
283 284
284int RSA_flags(const RSA *r); 285int RSA_flags(const RSA *r);
285 286
286#ifdef OPENSSL_FIPS
287RSA *FIPS_rsa_new(void);
288void FIPS_rsa_free(RSA *r);
289#endif
290
291void RSA_set_default_method(const RSA_METHOD *meth); 287void RSA_set_default_method(const RSA_METHOD *meth);
292const RSA_METHOD *RSA_get_default_method(void); 288const RSA_METHOD *RSA_get_default_method(void);
293const RSA_METHOD *RSA_get_method(const RSA *rsa); 289const RSA_METHOD *RSA_get_method(const RSA *rsa);
@@ -333,7 +329,7 @@ RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length,
333int RSA_sign(int type, const unsigned char *m, unsigned int m_length, 329int RSA_sign(int type, const unsigned char *m, unsigned int m_length,
334 unsigned char *sigret, unsigned int *siglen, RSA *rsa); 330 unsigned char *sigret, unsigned int *siglen, RSA *rsa);
335int RSA_verify(int type, const unsigned char *m, unsigned int m_length, 331int RSA_verify(int type, const unsigned char *m, unsigned int m_length,
336 unsigned char *sigbuf, unsigned int siglen, RSA *rsa); 332 const unsigned char *sigbuf, unsigned int siglen, RSA *rsa);
337 333
338/* The following 2 function sign and verify a ASN1_OCTET_STRING 334/* The following 2 function sign and verify a ASN1_OCTET_STRING
339 * object inside PKCS#1 padded RSA encryption */ 335 * object inside PKCS#1 padded RSA encryption */
@@ -401,9 +397,15 @@ void ERR_load_RSA_strings(void);
401/* Error codes for the RSA functions. */ 397/* Error codes for the RSA functions. */
402 398
403/* Function codes. */ 399/* Function codes. */
404#define RSA_F_FIPS_RSA_SIGN 140 400#define RSA_F_CHECK_PADDING_MD 140
405#define RSA_F_FIPS_RSA_VERIFY 141 401#define RSA_F_DO_RSA_PRINT 146
402#define RSA_F_INT_RSA_VERIFY 145
406#define RSA_F_MEMORY_LOCK 100 403#define RSA_F_MEMORY_LOCK 100
404#define RSA_F_OLD_RSA_PRIV_DECODE 147
405#define RSA_F_PKEY_RSA_CTRL 143
406#define RSA_F_PKEY_RSA_CTRL_STR 144
407#define RSA_F_PKEY_RSA_SIGN 142
408#define RSA_F_PKEY_RSA_VERIFYRECOVER 141
407#define RSA_F_RSA_BUILTIN_KEYGEN 129 409#define RSA_F_RSA_BUILTIN_KEYGEN 129
408#define RSA_F_RSA_CHECK_KEY 123 410#define RSA_F_RSA_CHECK_KEY 123
409#define RSA_F_RSA_EAY_PRIVATE_DECRYPT 101 411#define RSA_F_RSA_EAY_PRIVATE_DECRYPT 101
@@ -434,11 +436,10 @@ void ERR_load_RSA_strings(void);
434#define RSA_F_RSA_PADDING_CHECK_X931 128 436#define RSA_F_RSA_PADDING_CHECK_X931 128
435#define RSA_F_RSA_PRINT 115 437#define RSA_F_RSA_PRINT 115
436#define RSA_F_RSA_PRINT_FP 116 438#define RSA_F_RSA_PRINT_FP 116
437#define RSA_F_RSA_PRIVATE_ENCRYPT 137 439#define RSA_F_RSA_PRIV_DECODE 137
438#define RSA_F_RSA_PUBLIC_DECRYPT 138 440#define RSA_F_RSA_PRIV_ENCODE 138
441#define RSA_F_RSA_PUB_DECODE 139
439#define RSA_F_RSA_SETUP_BLINDING 136 442#define RSA_F_RSA_SETUP_BLINDING 136
440#define RSA_F_RSA_SET_DEFAULT_METHOD 139
441#define RSA_F_RSA_SET_METHOD 142
442#define RSA_F_RSA_SIGN 117 443#define RSA_F_RSA_SIGN 117
443#define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118 444#define RSA_F_RSA_SIGN_ASN1_OCTET_STRING 118
444#define RSA_F_RSA_VERIFY 119 445#define RSA_F_RSA_VERIFY 119
@@ -464,20 +465,25 @@ void ERR_load_RSA_strings(void);
464#define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125 465#define RSA_R_DMQ1_NOT_CONGRUENT_TO_D 125
465#define RSA_R_D_E_NOT_CONGRUENT_TO_1 123 466#define RSA_R_D_E_NOT_CONGRUENT_TO_1 123
466#define RSA_R_FIRST_OCTET_INVALID 133 467#define RSA_R_FIRST_OCTET_INVALID 133
468#define RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE 144
469#define RSA_R_INVALID_DIGEST_LENGTH 143
467#define RSA_R_INVALID_HEADER 137 470#define RSA_R_INVALID_HEADER 137
471#define RSA_R_INVALID_KEYBITS 145
468#define RSA_R_INVALID_MESSAGE_LENGTH 131 472#define RSA_R_INVALID_MESSAGE_LENGTH 131
469#define RSA_R_INVALID_PADDING 138 473#define RSA_R_INVALID_PADDING 138
474#define RSA_R_INVALID_PADDING_MODE 141
475#define RSA_R_INVALID_PSS_SALTLEN 146
470#define RSA_R_INVALID_TRAILER 139 476#define RSA_R_INVALID_TRAILER 139
477#define RSA_R_INVALID_X931_DIGEST 142
471#define RSA_R_IQMP_NOT_INVERSE_OF_Q 126 478#define RSA_R_IQMP_NOT_INVERSE_OF_Q 126
472#define RSA_R_KEY_SIZE_TOO_SMALL 120 479#define RSA_R_KEY_SIZE_TOO_SMALL 120
473#define RSA_R_LAST_OCTET_INVALID 134 480#define RSA_R_LAST_OCTET_INVALID 134
474#define RSA_R_MODULUS_TOO_LARGE 105 481#define RSA_R_MODULUS_TOO_LARGE 105
475#define RSA_R_NON_FIPS_METHOD 141
476#define RSA_R_NO_PUBLIC_EXPONENT 140 482#define RSA_R_NO_PUBLIC_EXPONENT 140
477#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113 483#define RSA_R_NULL_BEFORE_BLOCK_MISSING 113
478#define RSA_R_N_DOES_NOT_EQUAL_P_Q 127 484#define RSA_R_N_DOES_NOT_EQUAL_P_Q 127
479#define RSA_R_OAEP_DECODING_ERROR 121 485#define RSA_R_OAEP_DECODING_ERROR 121
480#define RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE 142 486#define RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE 148
481#define RSA_R_PADDING_CHECK_FAILED 114 487#define RSA_R_PADDING_CHECK_FAILED 114
482#define RSA_R_P_NOT_PRIME 128 488#define RSA_R_P_NOT_PRIME 128
483#define RSA_R_Q_NOT_PRIME 129 489#define RSA_R_Q_NOT_PRIME 129
@@ -488,6 +494,7 @@ void ERR_load_RSA_strings(void);
488#define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116 494#define RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 116
489#define RSA_R_UNKNOWN_ALGORITHM_TYPE 117 495#define RSA_R_UNKNOWN_ALGORITHM_TYPE 117
490#define RSA_R_UNKNOWN_PADDING_TYPE 118 496#define RSA_R_UNKNOWN_PADDING_TYPE 118
497#define RSA_R_VALUE_MISSING 147
491#define RSA_R_WRONG_SIGNATURE_LENGTH 119 498#define RSA_R_WRONG_SIGNATURE_LENGTH 119
492 499
493#ifdef __cplusplus 500#ifdef __cplusplus
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_asn1.c b/src/lib/libssl/src/crypto/rsa/rsa_asn1.c
index 6e8a803e81..4efca8cdc8 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_asn1.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_asn1.c
@@ -3,7 +3,7 @@
3 * project 2000. 3 * project 2000.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 2000 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -62,19 +62,9 @@
62#include <openssl/rsa.h> 62#include <openssl/rsa.h>
63#include <openssl/asn1t.h> 63#include <openssl/asn1t.h>
64 64
65static ASN1_METHOD method={
66 (I2D_OF(void)) i2d_RSAPrivateKey,
67 (D2I_OF(void)) d2i_RSAPrivateKey,
68 (void *(*)(void)) RSA_new,
69 (void (*)(void *)) RSA_free};
70
71ASN1_METHOD *RSAPrivateKey_asn1_meth(void)
72 {
73 return(&method);
74 }
75
76/* Override the default free and new methods */ 65/* Override the default free and new methods */
77static int rsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it) 66static int rsa_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
67 void *exarg)
78{ 68{
79 if(operation == ASN1_OP_NEW_PRE) { 69 if(operation == ASN1_OP_NEW_PRE) {
80 *pval = (ASN1_VALUE *)RSA_new(); 70 *pval = (ASN1_VALUE *)RSA_new();
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_eay.c b/src/lib/libssl/src/crypto/rsa/rsa_eay.c
index 0ac6418449..c5eaeeae6b 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_eay.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_eay.c
@@ -115,7 +115,7 @@
115#include <openssl/rsa.h> 115#include <openssl/rsa.h>
116#include <openssl/rand.h> 116#include <openssl/rand.h>
117 117
118#if !defined(RSA_NULL) && !defined(OPENSSL_FIPS) 118#ifndef RSA_NULL
119 119
120static int RSA_eay_public_encrypt(int flen, const unsigned char *from, 120static int RSA_eay_public_encrypt(int flen, const unsigned char *from,
121 unsigned char *to, RSA *rsa,int padding); 121 unsigned char *to, RSA *rsa,int padding);
@@ -256,6 +256,7 @@ static BN_BLINDING *rsa_get_blinding(RSA *rsa, int *local, BN_CTX *ctx)
256{ 256{
257 BN_BLINDING *ret; 257 BN_BLINDING *ret;
258 int got_write_lock = 0; 258 int got_write_lock = 0;
259 CRYPTO_THREADID cur;
259 260
260 CRYPTO_r_lock(CRYPTO_LOCK_RSA); 261 CRYPTO_r_lock(CRYPTO_LOCK_RSA);
261 262
@@ -273,7 +274,8 @@ static BN_BLINDING *rsa_get_blinding(RSA *rsa, int *local, BN_CTX *ctx)
273 if (ret == NULL) 274 if (ret == NULL)
274 goto err; 275 goto err;
275 276
276 if (BN_BLINDING_get_thread_id(ret) == CRYPTO_thread_id()) 277 CRYPTO_THREADID_current(&cur);
278 if (!CRYPTO_THREADID_cmp(&cur, BN_BLINDING_thread_id(ret)))
277 { 279 {
278 /* rsa->blinding is ours! */ 280 /* rsa->blinding is ours! */
279 281
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_err.c b/src/lib/libssl/src/crypto/rsa/rsa_err.c
index 501f5ea389..cf9f1106b0 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_err.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_err.c
@@ -1,6 +1,6 @@
1/* crypto/rsa/rsa_err.c */ 1/* crypto/rsa/rsa_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -70,9 +70,15 @@
70 70
71static ERR_STRING_DATA RSA_str_functs[]= 71static ERR_STRING_DATA RSA_str_functs[]=
72 { 72 {
73{ERR_FUNC(RSA_F_FIPS_RSA_SIGN), "FIPS_RSA_SIGN"}, 73{ERR_FUNC(RSA_F_CHECK_PADDING_MD), "CHECK_PADDING_MD"},
74{ERR_FUNC(RSA_F_FIPS_RSA_VERIFY), "FIPS_RSA_VERIFY"}, 74{ERR_FUNC(RSA_F_DO_RSA_PRINT), "DO_RSA_PRINT"},
75{ERR_FUNC(RSA_F_INT_RSA_VERIFY), "INT_RSA_VERIFY"},
75{ERR_FUNC(RSA_F_MEMORY_LOCK), "MEMORY_LOCK"}, 76{ERR_FUNC(RSA_F_MEMORY_LOCK), "MEMORY_LOCK"},
77{ERR_FUNC(RSA_F_OLD_RSA_PRIV_DECODE), "OLD_RSA_PRIV_DECODE"},
78{ERR_FUNC(RSA_F_PKEY_RSA_CTRL), "PKEY_RSA_CTRL"},
79{ERR_FUNC(RSA_F_PKEY_RSA_CTRL_STR), "PKEY_RSA_CTRL_STR"},
80{ERR_FUNC(RSA_F_PKEY_RSA_SIGN), "PKEY_RSA_SIGN"},
81{ERR_FUNC(RSA_F_PKEY_RSA_VERIFYRECOVER), "PKEY_RSA_VERIFYRECOVER"},
76{ERR_FUNC(RSA_F_RSA_BUILTIN_KEYGEN), "RSA_BUILTIN_KEYGEN"}, 82{ERR_FUNC(RSA_F_RSA_BUILTIN_KEYGEN), "RSA_BUILTIN_KEYGEN"},
77{ERR_FUNC(RSA_F_RSA_CHECK_KEY), "RSA_check_key"}, 83{ERR_FUNC(RSA_F_RSA_CHECK_KEY), "RSA_check_key"},
78{ERR_FUNC(RSA_F_RSA_EAY_PRIVATE_DECRYPT), "RSA_EAY_PRIVATE_DECRYPT"}, 84{ERR_FUNC(RSA_F_RSA_EAY_PRIVATE_DECRYPT), "RSA_EAY_PRIVATE_DECRYPT"},
@@ -103,11 +109,10 @@ static ERR_STRING_DATA RSA_str_functs[]=
103{ERR_FUNC(RSA_F_RSA_PADDING_CHECK_X931), "RSA_padding_check_X931"}, 109{ERR_FUNC(RSA_F_RSA_PADDING_CHECK_X931), "RSA_padding_check_X931"},
104{ERR_FUNC(RSA_F_RSA_PRINT), "RSA_print"}, 110{ERR_FUNC(RSA_F_RSA_PRINT), "RSA_print"},
105{ERR_FUNC(RSA_F_RSA_PRINT_FP), "RSA_print_fp"}, 111{ERR_FUNC(RSA_F_RSA_PRINT_FP), "RSA_print_fp"},
106{ERR_FUNC(RSA_F_RSA_PRIVATE_ENCRYPT), "RSA_private_encrypt"}, 112{ERR_FUNC(RSA_F_RSA_PRIV_DECODE), "RSA_PRIV_DECODE"},
107{ERR_FUNC(RSA_F_RSA_PUBLIC_DECRYPT), "RSA_public_decrypt"}, 113{ERR_FUNC(RSA_F_RSA_PRIV_ENCODE), "RSA_PRIV_ENCODE"},
114{ERR_FUNC(RSA_F_RSA_PUB_DECODE), "RSA_PUB_DECODE"},
108{ERR_FUNC(RSA_F_RSA_SETUP_BLINDING), "RSA_setup_blinding"}, 115{ERR_FUNC(RSA_F_RSA_SETUP_BLINDING), "RSA_setup_blinding"},
109{ERR_FUNC(RSA_F_RSA_SET_DEFAULT_METHOD), "RSA_set_default_method"},
110{ERR_FUNC(RSA_F_RSA_SET_METHOD), "RSA_set_method"},
111{ERR_FUNC(RSA_F_RSA_SIGN), "RSA_sign"}, 116{ERR_FUNC(RSA_F_RSA_SIGN), "RSA_sign"},
112{ERR_FUNC(RSA_F_RSA_SIGN_ASN1_OCTET_STRING), "RSA_sign_ASN1_OCTET_STRING"}, 117{ERR_FUNC(RSA_F_RSA_SIGN_ASN1_OCTET_STRING), "RSA_sign_ASN1_OCTET_STRING"},
113{ERR_FUNC(RSA_F_RSA_VERIFY), "RSA_verify"}, 118{ERR_FUNC(RSA_F_RSA_VERIFY), "RSA_verify"},
@@ -136,20 +141,25 @@ static ERR_STRING_DATA RSA_str_reasons[]=
136{ERR_REASON(RSA_R_DMQ1_NOT_CONGRUENT_TO_D),"dmq1 not congruent to d"}, 141{ERR_REASON(RSA_R_DMQ1_NOT_CONGRUENT_TO_D),"dmq1 not congruent to d"},
137{ERR_REASON(RSA_R_D_E_NOT_CONGRUENT_TO_1),"d e not congruent to 1"}, 142{ERR_REASON(RSA_R_D_E_NOT_CONGRUENT_TO_1),"d e not congruent to 1"},
138{ERR_REASON(RSA_R_FIRST_OCTET_INVALID) ,"first octet invalid"}, 143{ERR_REASON(RSA_R_FIRST_OCTET_INVALID) ,"first octet invalid"},
144{ERR_REASON(RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE),"illegal or unsupported padding mode"},
145{ERR_REASON(RSA_R_INVALID_DIGEST_LENGTH) ,"invalid digest length"},
139{ERR_REASON(RSA_R_INVALID_HEADER) ,"invalid header"}, 146{ERR_REASON(RSA_R_INVALID_HEADER) ,"invalid header"},
147{ERR_REASON(RSA_R_INVALID_KEYBITS) ,"invalid keybits"},
140{ERR_REASON(RSA_R_INVALID_MESSAGE_LENGTH),"invalid message length"}, 148{ERR_REASON(RSA_R_INVALID_MESSAGE_LENGTH),"invalid message length"},
141{ERR_REASON(RSA_R_INVALID_PADDING) ,"invalid padding"}, 149{ERR_REASON(RSA_R_INVALID_PADDING) ,"invalid padding"},
150{ERR_REASON(RSA_R_INVALID_PADDING_MODE) ,"invalid padding mode"},
151{ERR_REASON(RSA_R_INVALID_PSS_SALTLEN) ,"invalid pss saltlen"},
142{ERR_REASON(RSA_R_INVALID_TRAILER) ,"invalid trailer"}, 152{ERR_REASON(RSA_R_INVALID_TRAILER) ,"invalid trailer"},
153{ERR_REASON(RSA_R_INVALID_X931_DIGEST) ,"invalid x931 digest"},
143{ERR_REASON(RSA_R_IQMP_NOT_INVERSE_OF_Q) ,"iqmp not inverse of q"}, 154{ERR_REASON(RSA_R_IQMP_NOT_INVERSE_OF_Q) ,"iqmp not inverse of q"},
144{ERR_REASON(RSA_R_KEY_SIZE_TOO_SMALL) ,"key size too small"}, 155{ERR_REASON(RSA_R_KEY_SIZE_TOO_SMALL) ,"key size too small"},
145{ERR_REASON(RSA_R_LAST_OCTET_INVALID) ,"last octet invalid"}, 156{ERR_REASON(RSA_R_LAST_OCTET_INVALID) ,"last octet invalid"},
146{ERR_REASON(RSA_R_MODULUS_TOO_LARGE) ,"modulus too large"}, 157{ERR_REASON(RSA_R_MODULUS_TOO_LARGE) ,"modulus too large"},
147{ERR_REASON(RSA_R_NON_FIPS_METHOD) ,"non fips method"},
148{ERR_REASON(RSA_R_NO_PUBLIC_EXPONENT) ,"no public exponent"}, 158{ERR_REASON(RSA_R_NO_PUBLIC_EXPONENT) ,"no public exponent"},
149{ERR_REASON(RSA_R_NULL_BEFORE_BLOCK_MISSING),"null before block missing"}, 159{ERR_REASON(RSA_R_NULL_BEFORE_BLOCK_MISSING),"null before block missing"},
150{ERR_REASON(RSA_R_N_DOES_NOT_EQUAL_P_Q) ,"n does not equal p q"}, 160{ERR_REASON(RSA_R_N_DOES_NOT_EQUAL_P_Q) ,"n does not equal p q"},
151{ERR_REASON(RSA_R_OAEP_DECODING_ERROR) ,"oaep decoding error"}, 161{ERR_REASON(RSA_R_OAEP_DECODING_ERROR) ,"oaep decoding error"},
152{ERR_REASON(RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE),"operation not allowed in fips mode"}, 162{ERR_REASON(RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE),"operation not supported for this keytype"},
153{ERR_REASON(RSA_R_PADDING_CHECK_FAILED) ,"padding check failed"}, 163{ERR_REASON(RSA_R_PADDING_CHECK_FAILED) ,"padding check failed"},
154{ERR_REASON(RSA_R_P_NOT_PRIME) ,"p not prime"}, 164{ERR_REASON(RSA_R_P_NOT_PRIME) ,"p not prime"},
155{ERR_REASON(RSA_R_Q_NOT_PRIME) ,"q not prime"}, 165{ERR_REASON(RSA_R_Q_NOT_PRIME) ,"q not prime"},
@@ -160,6 +170,7 @@ static ERR_STRING_DATA RSA_str_reasons[]=
160{ERR_REASON(RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD),"the asn1 object identifier is not known for this md"}, 170{ERR_REASON(RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD),"the asn1 object identifier is not known for this md"},
161{ERR_REASON(RSA_R_UNKNOWN_ALGORITHM_TYPE),"unknown algorithm type"}, 171{ERR_REASON(RSA_R_UNKNOWN_ALGORITHM_TYPE),"unknown algorithm type"},
162{ERR_REASON(RSA_R_UNKNOWN_PADDING_TYPE) ,"unknown padding type"}, 172{ERR_REASON(RSA_R_UNKNOWN_PADDING_TYPE) ,"unknown padding type"},
173{ERR_REASON(RSA_R_VALUE_MISSING) ,"value missing"},
163{ERR_REASON(RSA_R_WRONG_SIGNATURE_LENGTH),"wrong signature length"}, 174{ERR_REASON(RSA_R_WRONG_SIGNATURE_LENGTH),"wrong signature length"},
164{0,NULL} 175{0,NULL}
165 }; 176 };
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_gen.c b/src/lib/libssl/src/crypto/rsa/rsa_gen.c
index 41278f83c6..767f7ab682 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_gen.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_gen.c
@@ -68,8 +68,6 @@
68#include <openssl/bn.h> 68#include <openssl/bn.h>
69#include <openssl/rsa.h> 69#include <openssl/rsa.h>
70 70
71#ifndef OPENSSL_FIPS
72
73static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb); 71static int rsa_builtin_keygen(RSA *rsa, int bits, BIGNUM *e_value, BN_GENCB *cb);
74 72
75/* NB: this wrapper would normally be placed in rsa_lib.c and the static 73/* NB: this wrapper would normally be placed in rsa_lib.c and the static
@@ -219,4 +217,3 @@ err:
219 return ok; 217 return ok;
220 } 218 }
221 219
222#endif
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_lib.c b/src/lib/libssl/src/crypto/rsa/rsa_lib.c
index 5714841f4c..de45088d76 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_lib.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_lib.c
@@ -67,6 +67,224 @@
67#include <openssl/engine.h> 67#include <openssl/engine.h>
68#endif 68#endif
69 69
70const char RSA_version[]="RSA" OPENSSL_VERSION_PTEXT;
71
72static const RSA_METHOD *default_RSA_meth=NULL;
73
74RSA *RSA_new(void)
75 {
76 RSA *r=RSA_new_method(NULL);
77
78 return r;
79 }
80
81void RSA_set_default_method(const RSA_METHOD *meth)
82 {
83 default_RSA_meth = meth;
84 }
85
86const RSA_METHOD *RSA_get_default_method(void)
87 {
88 if (default_RSA_meth == NULL)
89 {
90#ifdef RSA_NULL
91 default_RSA_meth=RSA_null_method();
92#else
93#if 0 /* was: #ifdef RSAref */
94 default_RSA_meth=RSA_PKCS1_RSAref();
95#else
96 default_RSA_meth=RSA_PKCS1_SSLeay();
97#endif
98#endif
99 }
100
101 return default_RSA_meth;
102 }
103
104const RSA_METHOD *RSA_get_method(const RSA *rsa)
105 {
106 return rsa->meth;
107 }
108
109int RSA_set_method(RSA *rsa, const RSA_METHOD *meth)
110 {
111 /* NB: The caller is specifically setting a method, so it's not up to us
112 * to deal with which ENGINE it comes from. */
113 const RSA_METHOD *mtmp;
114 mtmp = rsa->meth;
115 if (mtmp->finish) mtmp->finish(rsa);
116#ifndef OPENSSL_NO_ENGINE
117 if (rsa->engine)
118 {
119 ENGINE_finish(rsa->engine);
120 rsa->engine = NULL;
121 }
122#endif
123 rsa->meth = meth;
124 if (meth->init) meth->init(rsa);
125 return 1;
126 }
127
128RSA *RSA_new_method(ENGINE *engine)
129 {
130 RSA *ret;
131
132 ret=(RSA *)OPENSSL_malloc(sizeof(RSA));
133 if (ret == NULL)
134 {
135 RSAerr(RSA_F_RSA_NEW_METHOD,ERR_R_MALLOC_FAILURE);
136 return NULL;
137 }
138
139 ret->meth = RSA_get_default_method();
140#ifndef OPENSSL_NO_ENGINE
141 if (engine)
142 {
143 if (!ENGINE_init(engine))
144 {
145 RSAerr(RSA_F_RSA_NEW_METHOD, ERR_R_ENGINE_LIB);
146 OPENSSL_free(ret);
147 return NULL;
148 }
149 ret->engine = engine;
150 }
151 else
152 ret->engine = ENGINE_get_default_RSA();
153 if(ret->engine)
154 {
155 ret->meth = ENGINE_get_RSA(ret->engine);
156 if(!ret->meth)
157 {
158 RSAerr(RSA_F_RSA_NEW_METHOD,
159 ERR_R_ENGINE_LIB);
160 ENGINE_finish(ret->engine);
161 OPENSSL_free(ret);
162 return NULL;
163 }
164 }
165#endif
166
167 ret->pad=0;
168 ret->version=0;
169 ret->n=NULL;
170 ret->e=NULL;
171 ret->d=NULL;
172 ret->p=NULL;
173 ret->q=NULL;
174 ret->dmp1=NULL;
175 ret->dmq1=NULL;
176 ret->iqmp=NULL;
177 ret->references=1;
178 ret->_method_mod_n=NULL;
179 ret->_method_mod_p=NULL;
180 ret->_method_mod_q=NULL;
181 ret->blinding=NULL;
182 ret->mt_blinding=NULL;
183 ret->bignum_data=NULL;
184 ret->flags=ret->meth->flags;
185 if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_RSA, ret, &ret->ex_data))
186 {
187#ifndef OPENSSL_NO_ENGINE
188 if (ret->engine)
189 ENGINE_finish(ret->engine);
190#endif
191 OPENSSL_free(ret);
192 return(NULL);
193 }
194
195 if ((ret->meth->init != NULL) && !ret->meth->init(ret))
196 {
197#ifndef OPENSSL_NO_ENGINE
198 if (ret->engine)
199 ENGINE_finish(ret->engine);
200#endif
201 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_RSA, ret, &ret->ex_data);
202 OPENSSL_free(ret);
203 ret=NULL;
204 }
205 return(ret);
206 }
207
208void RSA_free(RSA *r)
209 {
210 int i;
211
212 if (r == NULL) return;
213
214 i=CRYPTO_add(&r->references,-1,CRYPTO_LOCK_RSA);
215#ifdef REF_PRINT
216 REF_PRINT("RSA",r);
217#endif
218 if (i > 0) return;
219#ifdef REF_CHECK
220 if (i < 0)
221 {
222 fprintf(stderr,"RSA_free, bad reference count\n");
223 abort();
224 }
225#endif
226
227 if (r->meth->finish)
228 r->meth->finish(r);
229#ifndef OPENSSL_NO_ENGINE
230 if (r->engine)
231 ENGINE_finish(r->engine);
232#endif
233
234 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_RSA, r, &r->ex_data);
235
236 if (r->n != NULL) BN_clear_free(r->n);
237 if (r->e != NULL) BN_clear_free(r->e);
238 if (r->d != NULL) BN_clear_free(r->d);
239 if (r->p != NULL) BN_clear_free(r->p);
240 if (r->q != NULL) BN_clear_free(r->q);
241 if (r->dmp1 != NULL) BN_clear_free(r->dmp1);
242 if (r->dmq1 != NULL) BN_clear_free(r->dmq1);
243 if (r->iqmp != NULL) BN_clear_free(r->iqmp);
244 if (r->blinding != NULL) BN_BLINDING_free(r->blinding);
245 if (r->mt_blinding != NULL) BN_BLINDING_free(r->mt_blinding);
246 if (r->bignum_data != NULL) OPENSSL_free_locked(r->bignum_data);
247 OPENSSL_free(r);
248 }
249
250int RSA_up_ref(RSA *r)
251 {
252 int i = CRYPTO_add(&r->references, 1, CRYPTO_LOCK_RSA);
253#ifdef REF_PRINT
254 REF_PRINT("RSA",r);
255#endif
256#ifdef REF_CHECK
257 if (i < 2)
258 {
259 fprintf(stderr, "RSA_up_ref, bad reference count\n");
260 abort();
261 }
262#endif
263 return ((i > 1) ? 1 : 0);
264 }
265
266int RSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func,
267 CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func)
268 {
269 return CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_RSA, argl, argp,
270 new_func, dup_func, free_func);
271 }
272
273int RSA_set_ex_data(RSA *r, int idx, void *arg)
274 {
275 return(CRYPTO_set_ex_data(&r->ex_data,idx,arg));
276 }
277
278void *RSA_get_ex_data(const RSA *r, int idx)
279 {
280 return(CRYPTO_get_ex_data(&r->ex_data,idx));
281 }
282
283int RSA_size(const RSA *r)
284 {
285 return(BN_num_bytes(r->n));
286 }
287
70int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to, 288int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to,
71 RSA *rsa, int padding) 289 RSA *rsa, int padding)
72 { 290 {
@@ -76,13 +294,6 @@ int RSA_public_encrypt(int flen, const unsigned char *from, unsigned char *to,
76int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to, 294int RSA_private_encrypt(int flen, const unsigned char *from, unsigned char *to,
77 RSA *rsa, int padding) 295 RSA *rsa, int padding)
78 { 296 {
79#ifdef OPENSSL_FIPS
80 if(FIPS_mode() && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW))
81 {
82 RSAerr(RSA_F_RSA_PRIVATE_ENCRYPT, RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
83 return 0;
84 }
85#endif
86 return(rsa->meth->rsa_priv_enc(flen, from, to, rsa, padding)); 297 return(rsa->meth->rsa_priv_enc(flen, from, to, rsa, padding));
87 } 298 }
88 299
@@ -95,19 +306,12 @@ int RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to,
95int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to, 306int RSA_public_decrypt(int flen, const unsigned char *from, unsigned char *to,
96 RSA *rsa, int padding) 307 RSA *rsa, int padding)
97 { 308 {
98#ifdef OPENSSL_FIPS
99 if(FIPS_mode() && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW))
100 {
101 RSAerr(RSA_F_RSA_PUBLIC_DECRYPT, RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
102 return 0;
103 }
104#endif
105 return(rsa->meth->rsa_pub_dec(flen, from, to, rsa, padding)); 309 return(rsa->meth->rsa_pub_dec(flen, from, to, rsa, padding));
106 } 310 }
107 311
108int RSA_size(const RSA *r) 312int RSA_flags(const RSA *r)
109 { 313 {
110 return(BN_num_bytes(r->n)); 314 return((r == NULL)?0:r->meth->flags);
111 } 315 }
112 316
113void RSA_blinding_off(RSA *rsa) 317void RSA_blinding_off(RSA *rsa)
@@ -222,7 +426,7 @@ BN_BLINDING *RSA_setup_blinding(RSA *rsa, BN_CTX *in_ctx)
222 RSAerr(RSA_F_RSA_SETUP_BLINDING, ERR_R_BN_LIB); 426 RSAerr(RSA_F_RSA_SETUP_BLINDING, ERR_R_BN_LIB);
223 goto err; 427 goto err;
224 } 428 }
225 BN_BLINDING_set_thread_id(ret, CRYPTO_thread_id()); 429 CRYPTO_THREADID_current(BN_BLINDING_thread_id(ret));
226err: 430err:
227 BN_CTX_end(ctx); 431 BN_CTX_end(ctx);
228 if (in_ctx == NULL) 432 if (in_ctx == NULL)
@@ -232,3 +436,48 @@ err:
232 436
233 return ret; 437 return ret;
234} 438}
439
440int RSA_memory_lock(RSA *r)
441 {
442 int i,j,k,off;
443 char *p;
444 BIGNUM *bn,**t[6],*b;
445 BN_ULONG *ul;
446
447 if (r->d == NULL) return(1);
448 t[0]= &r->d;
449 t[1]= &r->p;
450 t[2]= &r->q;
451 t[3]= &r->dmp1;
452 t[4]= &r->dmq1;
453 t[5]= &r->iqmp;
454 k=sizeof(BIGNUM)*6;
455 off=k/sizeof(BN_ULONG)+1;
456 j=1;
457 for (i=0; i<6; i++)
458 j+= (*t[i])->top;
459 if ((p=OPENSSL_malloc_locked((off+j)*sizeof(BN_ULONG))) == NULL)
460 {
461 RSAerr(RSA_F_RSA_MEMORY_LOCK,ERR_R_MALLOC_FAILURE);
462 return(0);
463 }
464 bn=(BIGNUM *)p;
465 ul=(BN_ULONG *)&(p[off]);
466 for (i=0; i<6; i++)
467 {
468 b= *(t[i]);
469 *(t[i])= &(bn[i]);
470 memcpy((char *)&(bn[i]),(char *)b,sizeof(BIGNUM));
471 bn[i].flags=BN_FLG_STATIC_DATA;
472 bn[i].d=ul;
473 memcpy((char *)ul,b->d,sizeof(BN_ULONG)*b->top);
474 ul+=b->top;
475 BN_clear_free(b);
476 }
477
478 /* I should fix this so it can still be done */
479 r->flags&= ~(RSA_FLAG_CACHE_PRIVATE|RSA_FLAG_CACHE_PUBLIC);
480
481 r->bignum_data=p;
482 return(1);
483 }
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_oaep.c b/src/lib/libssl/src/crypto/rsa/rsa_oaep.c
index 4d30c9d2d3..e238d10e5c 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_oaep.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_oaep.c
@@ -28,7 +28,7 @@
28#include <openssl/rand.h> 28#include <openssl/rand.h>
29#include <openssl/sha.h> 29#include <openssl/sha.h>
30 30
31int MGF1(unsigned char *mask, long len, 31static int MGF1(unsigned char *mask, long len,
32 const unsigned char *seed, long seedlen); 32 const unsigned char *seed, long seedlen);
33 33
34int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen, 34int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
@@ -52,13 +52,6 @@ int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
52 return 0; 52 return 0;
53 } 53 }
54 54
55 dbmask = OPENSSL_malloc(emlen - SHA_DIGEST_LENGTH);
56 if (dbmask == NULL)
57 {
58 RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_OAEP, ERR_R_MALLOC_FAILURE);
59 return 0;
60 }
61
62 to[0] = 0; 55 to[0] = 0;
63 seed = to + 1; 56 seed = to + 1;
64 db = to + SHA_DIGEST_LENGTH + 1; 57 db = to + SHA_DIGEST_LENGTH + 1;
@@ -76,11 +69,20 @@ int RSA_padding_add_PKCS1_OAEP(unsigned char *to, int tlen,
76 20); 69 20);
77#endif 70#endif
78 71
79 MGF1(dbmask, emlen - SHA_DIGEST_LENGTH, seed, SHA_DIGEST_LENGTH); 72 dbmask = OPENSSL_malloc(emlen - SHA_DIGEST_LENGTH);
73 if (dbmask == NULL)
74 {
75 RSAerr(RSA_F_RSA_PADDING_ADD_PKCS1_OAEP, ERR_R_MALLOC_FAILURE);
76 return 0;
77 }
78
79 if (MGF1(dbmask, emlen - SHA_DIGEST_LENGTH, seed, SHA_DIGEST_LENGTH) < 0)
80 return 0;
80 for (i = 0; i < emlen - SHA_DIGEST_LENGTH; i++) 81 for (i = 0; i < emlen - SHA_DIGEST_LENGTH; i++)
81 db[i] ^= dbmask[i]; 82 db[i] ^= dbmask[i];
82 83
83 MGF1(seedmask, SHA_DIGEST_LENGTH, db, emlen - SHA_DIGEST_LENGTH); 84 if (MGF1(seedmask, SHA_DIGEST_LENGTH, db, emlen - SHA_DIGEST_LENGTH) < 0)
85 return 0;
84 for (i = 0; i < SHA_DIGEST_LENGTH; i++) 86 for (i = 0; i < SHA_DIGEST_LENGTH; i++)
85 seed[i] ^= seedmask[i]; 87 seed[i] ^= seedmask[i];
86 88
@@ -133,11 +135,13 @@ int RSA_padding_check_PKCS1_OAEP(unsigned char *to, int tlen,
133 135
134 maskeddb = padded_from + SHA_DIGEST_LENGTH; 136 maskeddb = padded_from + SHA_DIGEST_LENGTH;
135 137
136 MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen); 138 if (MGF1(seed, SHA_DIGEST_LENGTH, maskeddb, dblen))
139 return -1;
137 for (i = 0; i < SHA_DIGEST_LENGTH; i++) 140 for (i = 0; i < SHA_DIGEST_LENGTH; i++)
138 seed[i] ^= padded_from[i]; 141 seed[i] ^= padded_from[i];
139 142
140 MGF1(db, dblen, seed, SHA_DIGEST_LENGTH); 143 if (MGF1(db, dblen, seed, SHA_DIGEST_LENGTH))
144 return -1;
141 for (i = 0; i < dblen; i++) 145 for (i = 0; i < dblen; i++)
142 db[i] ^= maskeddb[i]; 146 db[i] ^= maskeddb[i];
143 147
@@ -187,7 +191,9 @@ int PKCS1_MGF1(unsigned char *mask, long len,
187 int mdlen; 191 int mdlen;
188 192
189 EVP_MD_CTX_init(&c); 193 EVP_MD_CTX_init(&c);
190 mdlen = M_EVP_MD_size(dgst); 194 mdlen = EVP_MD_size(dgst);
195 if (mdlen < 0)
196 return -1;
191 for (i = 0; outlen < len; i++) 197 for (i = 0; outlen < len; i++)
192 { 198 {
193 cnt[0] = (unsigned char)((i >> 24) & 255); 199 cnt[0] = (unsigned char)((i >> 24) & 255);
@@ -213,7 +219,8 @@ int PKCS1_MGF1(unsigned char *mask, long len,
213 return 0; 219 return 0;
214 } 220 }
215 221
216int MGF1(unsigned char *mask, long len, const unsigned char *seed, long seedlen) 222static int MGF1(unsigned char *mask, long len, const unsigned char *seed,
223 long seedlen)
217 { 224 {
218 return PKCS1_MGF1(mask, len, seed, seedlen, EVP_sha1()); 225 return PKCS1_MGF1(mask, len, seed, seedlen, EVP_sha1());
219 } 226 }
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_sign.c b/src/lib/libssl/src/crypto/rsa/rsa_sign.c
index 5488c06f6d..0be4ec7fb0 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_sign.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_sign.c
@@ -62,6 +62,7 @@
62#include <openssl/rsa.h> 62#include <openssl/rsa.h>
63#include <openssl/objects.h> 63#include <openssl/objects.h>
64#include <openssl/x509.h> 64#include <openssl/x509.h>
65#include "rsa_locl.h"
65 66
66/* Size of an SSL signature: MD5+SHA1 */ 67/* Size of an SSL signature: MD5+SHA1 */
67#define SSL_SIG_LENGTH 36 68#define SSL_SIG_LENGTH 36
@@ -90,14 +91,6 @@ int RSA_sign(int type, const unsigned char *m, unsigned int m_len,
90 i = SSL_SIG_LENGTH; 91 i = SSL_SIG_LENGTH;
91 s = m; 92 s = m;
92 } else { 93 } else {
93 /* NB: in FIPS mode block anything that isn't a TLS signature */
94#ifdef OPENSSL_FIPS
95 if(FIPS_mode() && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW))
96 {
97 RSAerr(RSA_F_RSA_SIGN, RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
98 return 0;
99 }
100#endif
101 sig.algor= &algor; 94 sig.algor= &algor;
102 sig.algor->algorithm=OBJ_nid2obj(type); 95 sig.algor->algorithm=OBJ_nid2obj(type);
103 if (sig.algor->algorithm == NULL) 96 if (sig.algor->algorithm == NULL)
@@ -150,8 +143,11 @@ int RSA_sign(int type, const unsigned char *m, unsigned int m_len,
150 return(ret); 143 return(ret);
151 } 144 }
152 145
153int RSA_verify(int dtype, const unsigned char *m, unsigned int m_len, 146int int_rsa_verify(int dtype, const unsigned char *m,
154 unsigned char *sigbuf, unsigned int siglen, RSA *rsa) 147 unsigned int m_len,
148 unsigned char *rm, size_t *prm_len,
149 const unsigned char *sigbuf, size_t siglen,
150 RSA *rsa)
155 { 151 {
156 int i,ret=0,sigtype; 152 int i,ret=0,sigtype;
157 unsigned char *s; 153 unsigned char *s;
@@ -159,38 +155,30 @@ int RSA_verify(int dtype, const unsigned char *m, unsigned int m_len,
159 155
160 if (siglen != (unsigned int)RSA_size(rsa)) 156 if (siglen != (unsigned int)RSA_size(rsa))
161 { 157 {
162 RSAerr(RSA_F_RSA_VERIFY,RSA_R_WRONG_SIGNATURE_LENGTH); 158 RSAerr(RSA_F_INT_RSA_VERIFY,RSA_R_WRONG_SIGNATURE_LENGTH);
163 return(0); 159 return(0);
164 } 160 }
165 161
166 if((rsa->flags & RSA_FLAG_SIGN_VER) && rsa->meth->rsa_verify) 162 if((dtype == NID_md5_sha1) && rm)
167 { 163 {
168 return rsa->meth->rsa_verify(dtype, m, m_len, 164 i = RSA_public_decrypt((int)siglen,
169 sigbuf, siglen, rsa); 165 sigbuf,rm,rsa,RSA_PKCS1_PADDING);
166 if (i <= 0)
167 return 0;
168 *prm_len = i;
169 return 1;
170 } 170 }
171 171
172 s=(unsigned char *)OPENSSL_malloc((unsigned int)siglen); 172 s=(unsigned char *)OPENSSL_malloc((unsigned int)siglen);
173 if (s == NULL) 173 if (s == NULL)
174 { 174 {
175 RSAerr(RSA_F_RSA_VERIFY,ERR_R_MALLOC_FAILURE); 175 RSAerr(RSA_F_INT_RSA_VERIFY,ERR_R_MALLOC_FAILURE);
176 goto err; 176 goto err;
177 } 177 }
178 if(dtype == NID_md5_sha1) 178 if((dtype == NID_md5_sha1) && (m_len != SSL_SIG_LENGTH) ) {
179 { 179 RSAerr(RSA_F_INT_RSA_VERIFY,RSA_R_INVALID_MESSAGE_LENGTH);
180 if (m_len != SSL_SIG_LENGTH)
181 {
182 RSAerr(RSA_F_RSA_VERIFY,RSA_R_INVALID_MESSAGE_LENGTH);
183 goto err; 180 goto err;
184 } 181 }
185 }
186 /* NB: in FIPS mode block anything that isn't a TLS signature */
187#ifdef OPENSSL_FIPS
188 else if(FIPS_mode() && !(rsa->flags & RSA_FLAG_NON_FIPS_ALLOW))
189 {
190 RSAerr(RSA_F_RSA_VERIFY, RSA_R_OPERATION_NOT_ALLOWED_IN_FIPS_MODE);
191 return 0;
192 }
193#endif
194 i=RSA_public_decrypt((int)siglen,sigbuf,s,rsa,RSA_PKCS1_PADDING); 182 i=RSA_public_decrypt((int)siglen,sigbuf,s,rsa,RSA_PKCS1_PADDING);
195 183
196 if (i <= 0) goto err; 184 if (i <= 0) goto err;
@@ -198,7 +186,7 @@ int RSA_verify(int dtype, const unsigned char *m, unsigned int m_len,
198 /* Special case: SSL signature */ 186 /* Special case: SSL signature */
199 if(dtype == NID_md5_sha1) { 187 if(dtype == NID_md5_sha1) {
200 if((i != SSL_SIG_LENGTH) || memcmp(s, m, SSL_SIG_LENGTH)) 188 if((i != SSL_SIG_LENGTH) || memcmp(s, m, SSL_SIG_LENGTH))
201 RSAerr(RSA_F_RSA_VERIFY,RSA_R_BAD_SIGNATURE); 189 RSAerr(RSA_F_INT_RSA_VERIFY,RSA_R_BAD_SIGNATURE);
202 else ret = 1; 190 else ret = 1;
203 } else { 191 } else {
204 const unsigned char *p=s; 192 const unsigned char *p=s;
@@ -209,7 +197,7 @@ int RSA_verify(int dtype, const unsigned char *m, unsigned int m_len,
209 /* Excess data can be used to create forgeries */ 197 /* Excess data can be used to create forgeries */
210 if(p != s+i) 198 if(p != s+i)
211 { 199 {
212 RSAerr(RSA_F_RSA_VERIFY,RSA_R_BAD_SIGNATURE); 200 RSAerr(RSA_F_INT_RSA_VERIFY,RSA_R_BAD_SIGNATURE);
213 goto err; 201 goto err;
214 } 202 }
215 203
@@ -218,7 +206,7 @@ int RSA_verify(int dtype, const unsigned char *m, unsigned int m_len,
218 if(sig->algor->parameter 206 if(sig->algor->parameter
219 && ASN1_TYPE_get(sig->algor->parameter) != V_ASN1_NULL) 207 && ASN1_TYPE_get(sig->algor->parameter) != V_ASN1_NULL)
220 { 208 {
221 RSAerr(RSA_F_RSA_VERIFY,RSA_R_BAD_SIGNATURE); 209 RSAerr(RSA_F_INT_RSA_VERIFY,RSA_R_BAD_SIGNATURE);
222 goto err; 210 goto err;
223 } 211 }
224 212
@@ -244,15 +232,30 @@ int RSA_verify(int dtype, const unsigned char *m, unsigned int m_len,
244 } 232 }
245 else 233 else
246 { 234 {
247 RSAerr(RSA_F_RSA_VERIFY, 235 RSAerr(RSA_F_INT_RSA_VERIFY,
248 RSA_R_ALGORITHM_MISMATCH); 236 RSA_R_ALGORITHM_MISMATCH);
249 goto err; 237 goto err;
250 } 238 }
251 } 239 }
252 if ( ((unsigned int)sig->digest->length != m_len) || 240 if (rm)
241 {
242 const EVP_MD *md;
243 md = EVP_get_digestbynid(dtype);
244 if (md && (EVP_MD_size(md) != sig->digest->length))
245 RSAerr(RSA_F_INT_RSA_VERIFY,
246 RSA_R_INVALID_DIGEST_LENGTH);
247 else
248 {
249 memcpy(rm, sig->digest->data,
250 sig->digest->length);
251 *prm_len = sig->digest->length;
252 ret = 1;
253 }
254 }
255 else if (((unsigned int)sig->digest->length != m_len) ||
253 (memcmp(m,sig->digest->data,m_len) != 0)) 256 (memcmp(m,sig->digest->data,m_len) != 0))
254 { 257 {
255 RSAerr(RSA_F_RSA_VERIFY,RSA_R_BAD_SIGNATURE); 258 RSAerr(RSA_F_INT_RSA_VERIFY,RSA_R_BAD_SIGNATURE);
256 } 259 }
257 else 260 else
258 ret=1; 261 ret=1;
@@ -267,3 +270,16 @@ err:
267 return(ret); 270 return(ret);
268 } 271 }
269 272
273int RSA_verify(int dtype, const unsigned char *m, unsigned int m_len,
274 const unsigned char *sigbuf, unsigned int siglen,
275 RSA *rsa)
276 {
277
278 if((rsa->flags & RSA_FLAG_SIGN_VER) && rsa->meth->rsa_verify)
279 {
280 return rsa->meth->rsa_verify(dtype, m, m_len,
281 sigbuf, siglen, rsa);
282 }
283
284 return int_rsa_verify(dtype, m, m_len, NULL, NULL, sigbuf, siglen, rsa);
285 }
diff --git a/src/lib/libssl/src/crypto/rsa/rsa_test.c b/src/lib/libssl/src/crypto/rsa/rsa_test.c
index 4080de8bcf..c8705a0f6e 100644
--- a/src/lib/libssl/src/crypto/rsa/rsa_test.c
+++ b/src/lib/libssl/src/crypto/rsa/rsa_test.c
@@ -328,7 +328,7 @@ int main(int argc, char *argv[])
328 } 328 }
329 329
330 CRYPTO_cleanup_all_ex_data(); 330 CRYPTO_cleanup_all_ex_data();
331 ERR_remove_state(0); 331 ERR_remove_thread_state(NULL);
332 332
333 CRYPTO_mem_leaks_fp(stderr); 333 CRYPTO_mem_leaks_fp(stderr);
334 334
diff --git a/src/lib/libssl/src/crypto/sha/Makefile b/src/lib/libssl/src/crypto/sha/Makefile
index f4741b9ee6..e6eccb05f9 100644
--- a/src/lib/libssl/src/crypto/sha/Makefile
+++ b/src/lib/libssl/src/crypto/sha/Makefile
@@ -38,25 +38,16 @@ top:
38all: lib 38all: lib
39 39
40lib: $(LIBOBJ) 40lib: $(LIBOBJ)
41 $(ARX) $(LIB) $(LIBOBJ) 41 $(AR) $(LIB) $(LIBOBJ)
42 $(RANLIB) $(LIB) || echo Never mind. 42 $(RANLIB) $(LIB) || echo Never mind.
43 @touch lib 43 @touch lib
44 44
45# ELF 45sha1-586.s: asm/sha1-586.pl ../perlasm/x86asm.pl
46sx86-elf.s: asm/sha1-586.pl ../perlasm/x86asm.pl 46 $(PERL) asm/sha1-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
47 (cd asm; $(PERL) sha1-586.pl elf $(CFLAGS) $(PROCESSOR) > ../$@) 47sha256-586.s: asm/sha256-586.pl ../perlasm/x86asm.pl
48s512sse2-elf.s: asm/sha512-sse2.pl ../perlasm/x86asm.pl 48 $(PERL) asm/sha256-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
49 (cd asm; $(PERL) sha512-sse2.pl elf $(CFLAGS) $(PROCESSOR) > ../$@) 49sha512-586.s: asm/sha512-586.pl ../perlasm/x86asm.pl
50# COFF 50 $(PERL) asm/sha512-586.pl $(PERLASM_SCHEME) $(CFLAGS) $(PROCESSOR) > $@
51sx86-cof.s: asm/sha1-586.pl ../perlasm/x86asm.pl
52 (cd asm; $(PERL) sha1-586.pl coff $(CFLAGS) $(PROCESSOR) > ../$@)
53s512sse2-cof.s: asm/sha512-sse2.pl ../perlasm/x86asm.pl
54 (cd asm; $(PERL) sha512-sse2.pl coff $(CFLAGS) $(PROCESSOR) > ../$@)
55# a.out
56sx86-out.s: asm/sha1-586.pl ../perlasm/x86asm.pl
57 (cd asm; $(PERL) sha1-586.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
58s512sse2-out.s: asm/sha512-sse2.pl ../perlasm/x86asm.pl
59 (cd asm; $(PERL) sha512-sse2.pl a.out $(CFLAGS) $(PROCESSOR) > ../$@)
60 51
61sha1-ia64.s: asm/sha1-ia64.pl 52sha1-ia64.s: asm/sha1-ia64.pl
62 (cd asm; $(PERL) sha1-ia64.pl ../$@ $(CFLAGS)) 53 (cd asm; $(PERL) sha1-ia64.pl ../$@ $(CFLAGS))
@@ -65,10 +56,25 @@ sha256-ia64.s: asm/sha512-ia64.pl
65sha512-ia64.s: asm/sha512-ia64.pl 56sha512-ia64.s: asm/sha512-ia64.pl
66 (cd asm; $(PERL) sha512-ia64.pl ../$@ $(CFLAGS)) 57 (cd asm; $(PERL) sha512-ia64.pl ../$@ $(CFLAGS))
67 58
59sha256-armv4.s: asm/sha256-armv4.pl
60 $(PERL) $< $@
61
68# Solaris make has to be explicitly told 62# Solaris make has to be explicitly told
69sha1-x86_64.s: asm/sha1-x86_64.pl; $(PERL) asm/sha1-x86_64.pl $@ 63sha1-x86_64.s: asm/sha1-x86_64.pl; $(PERL) asm/sha1-x86_64.pl $(PERLASM_SCHEME) > $@
70sha256-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $@ 64sha256-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $(PERLASM_SCHEME) $@
71sha512-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $@ 65sha512-x86_64.s:asm/sha512-x86_64.pl; $(PERL) asm/sha512-x86_64.pl $(PERLASM_SCHEME) $@
66sha1-sparcv9.s: asm/sha1-sparcv9.pl; $(PERL) asm/sha1-sparcv9.pl $@ $(CFLAGS)
67sha256-sparcv9.s:asm/sha512-sparcv9.pl; $(PERL) asm/sha512-sparcv9.pl $@ $(CFLAGS)
68sha512-sparcv9.s:asm/sha512-sparcv9.pl; $(PERL) asm/sha512-sparcv9.pl $@ $(CFLAGS)
69
70sha1-ppc.s: asm/sha1-ppc.pl; $(PERL) asm/sha1-ppc.pl $(PERLASM_SCHEME) $@
71sha256-ppc.s: asm/sha512-ppc.pl; $(PERL) asm/sha512-ppc.pl $(PERLASM_SCHEME) $@
72sha512-ppc.s: asm/sha512-ppc.pl; $(PERL) asm/sha512-ppc.pl $(PERLASM_SCHEME) $@
73
74# GNU make "catch all"
75sha1-%.s: asm/sha1-%.pl; $(PERL) $< $@
76sha256-%.s: asm/sha512-%.pl; $(PERL) $< $@
77sha512-%.s: asm/sha512-%.pl; $(PERL) $< $@
72 78
73files: 79files:
74 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO 80 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
@@ -113,31 +119,24 @@ sha1_one.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
113sha1_one.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 119sha1_one.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
114sha1_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 120sha1_one.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
115sha1_one.o: sha1_one.c 121sha1_one.o: sha1_one.c
116sha1dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/fips.h 122sha1dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
117sha1dgst.o: ../../include/openssl/opensslconf.h
118sha1dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h 123sha1dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h
119sha1dgst.o: ../md32_common.h sha1dgst.c sha_locl.h 124sha1dgst.o: ../md32_common.h sha1dgst.c sha_locl.h
120sha256.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 125sha256.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
121sha256.o: ../../include/openssl/fips.h ../../include/openssl/opensslconf.h 126sha256.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
122sha256.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 127sha256.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
123sha256.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 128sha256.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
124sha256.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 129sha256.o: ../../include/openssl/symhacks.h ../md32_common.h sha256.c
125sha256.o: ../md32_common.h sha256.c
126sha512.o: ../../e_os.h ../../include/openssl/bio.h 130sha512.o: ../../e_os.h ../../include/openssl/bio.h
127sha512.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 131sha512.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
128sha512.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 132sha512.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h
129sha512.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 133sha512.o: ../../include/openssl/lhash.h ../../include/openssl/opensslconf.h
130sha512.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 134sha512.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
131sha512.o: ../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h 135sha512.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
132sha512.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 136sha512.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
133sha512.o: ../../include/openssl/symhacks.h ../cryptlib.h sha512.c 137sha512.o: ../cryptlib.h sha512.c
134sha_dgst.o: ../../include/openssl/bio.h ../../include/openssl/crypto.h 138sha_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
135sha_dgst.o: ../../include/openssl/e_os2.h ../../include/openssl/err.h 139sha_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/sha.h
136sha_dgst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h
137sha_dgst.o: ../../include/openssl/opensslconf.h
138sha_dgst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
139sha_dgst.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
140sha_dgst.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
141sha_dgst.o: ../md32_common.h sha_dgst.c sha_locl.h 140sha_dgst.o: ../md32_common.h sha_dgst.c sha_locl.h
142sha_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 141sha_one.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
143sha_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 142sha_one.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
diff --git a/src/lib/libssl/src/crypto/sha/asm/sha1-586.pl b/src/lib/libssl/src/crypto/sha/asm/sha1-586.pl
index a787dd37da..a1f876281a 100644
--- a/src/lib/libssl/src/crypto/sha/asm/sha1-586.pl
+++ b/src/lib/libssl/src/crypto/sha/asm/sha1-586.pl
@@ -215,5 +215,6 @@ sub BODY_40_59
215 215
216 &stack_pop(16); 216 &stack_pop(16);
217&function_end("sha1_block_data_order"); 217&function_end("sha1_block_data_order");
218&asciz("SHA1 block transform for x86, CRYPTOGAMS by <appro\@openssl.org>");
218 219
219&asm_finish(); 220&asm_finish();
diff --git a/src/lib/libssl/src/crypto/sha/sha.h b/src/lib/libssl/src/crypto/sha/sha.h
index 47a2c29f66..16cacf9fc0 100644
--- a/src/lib/libssl/src/crypto/sha/sha.h
+++ b/src/lib/libssl/src/crypto/sha/sha.h
@@ -81,7 +81,7 @@ extern "C" {
81 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 81 * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
82 */ 82 */
83 83
84#if defined(OPENSSL_SYS_WIN16) || defined(__LP32__) 84#if defined(__LP32__)
85#define SHA_LONG unsigned long 85#define SHA_LONG unsigned long
86#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) 86#elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__)
87#define SHA_LONG unsigned long 87#define SHA_LONG unsigned long
@@ -106,9 +106,6 @@ typedef struct SHAstate_st
106 } SHA_CTX; 106 } SHA_CTX;
107 107
108#ifndef OPENSSL_NO_SHA0 108#ifndef OPENSSL_NO_SHA0
109#ifdef OPENSSL_FIPS
110int private_SHA_Init(SHA_CTX *c);
111#endif
112int SHA_Init(SHA_CTX *c); 109int SHA_Init(SHA_CTX *c);
113int SHA_Update(SHA_CTX *c, const void *data, size_t len); 110int SHA_Update(SHA_CTX *c, const void *data, size_t len);
114int SHA_Final(unsigned char *md, SHA_CTX *c); 111int SHA_Final(unsigned char *md, SHA_CTX *c);
diff --git a/src/lib/libssl/src/crypto/sha/sha1_one.c b/src/lib/libssl/src/crypto/sha/sha1_one.c
index 4831174198..7c65b60276 100644
--- a/src/lib/libssl/src/crypto/sha/sha1_one.c
+++ b/src/lib/libssl/src/crypto/sha/sha1_one.c
@@ -61,7 +61,7 @@
61#include <openssl/sha.h> 61#include <openssl/sha.h>
62#include <openssl/crypto.h> 62#include <openssl/crypto.h>
63 63
64#if !defined(OPENSSL_NO_SHA1) 64#ifndef OPENSSL_NO_SHA1
65unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md) 65unsigned char *SHA1(const unsigned char *d, size_t n, unsigned char *md)
66 { 66 {
67 SHA_CTX c; 67 SHA_CTX c;
diff --git a/src/lib/libssl/src/crypto/sha/sha1dgst.c b/src/lib/libssl/src/crypto/sha/sha1dgst.c
index d31f0781a0..50d1925cde 100644
--- a/src/lib/libssl/src/crypto/sha/sha1dgst.c
+++ b/src/lib/libssl/src/crypto/sha/sha1dgst.c
@@ -63,10 +63,6 @@
63#define SHA_1 63#define SHA_1
64 64
65#include <openssl/opensslv.h> 65#include <openssl/opensslv.h>
66#ifdef OPENSSL_FIPS
67#include <openssl/fips.h>
68#endif
69
70 66
71const char SHA1_version[]="SHA1" OPENSSL_VERSION_PTEXT; 67const char SHA1_version[]="SHA1" OPENSSL_VERSION_PTEXT;
72 68
diff --git a/src/lib/libssl/src/crypto/sha/sha_dgst.c b/src/lib/libssl/src/crypto/sha/sha_dgst.c
index 598f4d721a..70eb56032c 100644
--- a/src/lib/libssl/src/crypto/sha/sha_dgst.c
+++ b/src/lib/libssl/src/crypto/sha/sha_dgst.c
@@ -57,12 +57,6 @@
57 */ 57 */
58 58
59#include <openssl/opensslconf.h> 59#include <openssl/opensslconf.h>
60#include <openssl/crypto.h>
61#ifdef OPENSSL_FIPS
62#include <openssl/fips.h>
63#endif
64
65#include <openssl/err.h>
66#if !defined(OPENSSL_NO_SHA0) && !defined(OPENSSL_NO_SHA) 60#if !defined(OPENSSL_NO_SHA0) && !defined(OPENSSL_NO_SHA)
67 61
68#undef SHA_1 62#undef SHA_1
diff --git a/src/lib/libssl/src/crypto/sha/sha_locl.h b/src/lib/libssl/src/crypto/sha/sha_locl.h
index da46ddfe79..672c26eee1 100644
--- a/src/lib/libssl/src/crypto/sha/sha_locl.h
+++ b/src/lib/libssl/src/crypto/sha/sha_locl.h
@@ -122,23 +122,14 @@ void sha1_block_data_order (SHA_CTX *c, const void *p,size_t num);
122#define INIT_DATA_h3 0x10325476UL 122#define INIT_DATA_h3 0x10325476UL
123#define INIT_DATA_h4 0xc3d2e1f0UL 123#define INIT_DATA_h4 0xc3d2e1f0UL
124 124
125#if defined(SHA_0) && defined(OPENSSL_FIPS)
126FIPS_NON_FIPS_MD_Init(SHA)
127#else
128int HASH_INIT (SHA_CTX *c) 125int HASH_INIT (SHA_CTX *c)
129#endif
130 { 126 {
131#if defined(SHA_1) && defined(OPENSSL_FIPS) 127 memset (c,0,sizeof(*c));
132 FIPS_selftest_check();
133#endif
134 c->h0=INIT_DATA_h0; 128 c->h0=INIT_DATA_h0;
135 c->h1=INIT_DATA_h1; 129 c->h1=INIT_DATA_h1;
136 c->h2=INIT_DATA_h2; 130 c->h2=INIT_DATA_h2;
137 c->h3=INIT_DATA_h3; 131 c->h3=INIT_DATA_h3;
138 c->h4=INIT_DATA_h4; 132 c->h4=INIT_DATA_h4;
139 c->Nl=0;
140 c->Nh=0;
141 c->num=0;
142 return 1; 133 return 1;
143 } 134 }
144 135
diff --git a/src/lib/libssl/src/crypto/sha/shatest.c b/src/lib/libssl/src/crypto/sha/shatest.c
index ed0fe06a7b..27614646d1 100644
--- a/src/lib/libssl/src/crypto/sha/shatest.c
+++ b/src/lib/libssl/src/crypto/sha/shatest.c
@@ -123,9 +123,9 @@ int main(int argc, char *argv[])
123 i=1; 123 i=1;
124 while (*P != NULL) 124 while (*P != NULL)
125 { 125 {
126 EVP_Digest(*P,strlen((char *)*P),md,NULL,EVP_sha(), NULL); 126 EVP_Digest(*P,strlen(*P),md,NULL,EVP_sha(), NULL);
127 p=pt(md); 127 p=pt(md);
128 if (strcmp(p,(char *)*R) != 0) 128 if (strcmp(p,*R) != 0)
129 { 129 {
130 printf("error calculating SHA on '%s'\n",*P); 130 printf("error calculating SHA on '%s'\n",*P);
131 printf("got %s instead of %s\n",p,*R); 131 printf("got %s instead of %s\n",p,*R);
diff --git a/src/lib/libssl/src/crypto/stack/Makefile b/src/lib/libssl/src/crypto/stack/Makefile
index 489a77b93c..5327692ac8 100644
--- a/src/lib/libssl/src/crypto/stack/Makefile
+++ b/src/lib/libssl/src/crypto/stack/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
diff --git a/src/lib/libssl/src/crypto/stack/safestack.h b/src/lib/libssl/src/crypto/stack/safestack.h
index 40b17902e0..891cb84a51 100644
--- a/src/lib/libssl/src/crypto/stack/safestack.h
+++ b/src/lib/libssl/src/crypto/stack/safestack.h
@@ -57,18 +57,27 @@
57 57
58#include <openssl/stack.h> 58#include <openssl/stack.h>
59 59
60#ifdef DEBUG_SAFESTACK
61
62#ifndef CHECKED_PTR_OF 60#ifndef CHECKED_PTR_OF
63#define CHECKED_PTR_OF(type, p) \ 61#define CHECKED_PTR_OF(type, p) \
64 ((void*) (1 ? p : (type*)0)) 62 ((void*) (1 ? p : (type*)0))
65#endif 63#endif
66 64
65/* In C++ we get problems because an explicit cast is needed from (void *)
66 * we use CHECKED_STACK_OF to ensure the correct type is passed in the macros
67 * below.
68 */
69
70#define CHECKED_STACK_OF(type, p) \
71 ((_STACK*) (1 ? p : (STACK_OF(type)*)0))
72
67#define CHECKED_SK_FREE_FUNC(type, p) \ 73#define CHECKED_SK_FREE_FUNC(type, p) \
68 ((void (*)(void *)) ((1 ? p : (void (*)(type *))0))) 74 ((void (*)(void *)) ((1 ? p : (void (*)(type *))0)))
69 75
76#define CHECKED_SK_FREE_FUNC2(type, p) \
77 ((void (*)(void *)) ((1 ? p : (void (*)(type))0)))
78
70#define CHECKED_SK_CMP_FUNC(type, p) \ 79#define CHECKED_SK_CMP_FUNC(type, p) \
71 ((int (*)(const char * const *, const char * const *)) \ 80 ((int (*)(const void *, const void *)) \
72 ((1 ? p : (int (*)(const type * const *, const type * const *))0))) 81 ((1 ? p : (int (*)(const type * const *, const type * const *))0)))
73 82
74#define STACK_OF(type) struct stack_st_##type 83#define STACK_OF(type) struct stack_st_##type
@@ -77,11 +86,51 @@
77#define DECLARE_STACK_OF(type) \ 86#define DECLARE_STACK_OF(type) \
78STACK_OF(type) \ 87STACK_OF(type) \
79 { \ 88 { \
80 STACK stack; \ 89 _STACK stack; \
90 };
91#define DECLARE_SPECIAL_STACK_OF(type, type2) \
92STACK_OF(type) \
93 { \
94 _STACK stack; \
81 }; 95 };
82 96
83#define IMPLEMENT_STACK_OF(type) /* nada (obsolete in new safestack approach)*/ 97#define IMPLEMENT_STACK_OF(type) /* nada (obsolete in new safestack approach)*/
84 98
99
100/* Strings are special: normally an lhash entry will point to a single
101 * (somewhat) mutable object. In the case of strings:
102 *
103 * a) Instead of a single char, there is an array of chars, NUL-terminated.
104 * b) The string may have be immutable.
105 *
106 * So, they need their own declarations. Especially important for
107 * type-checking tools, such as Deputy.
108 *
109o * In practice, however, it appears to be hard to have a const
110 * string. For now, I'm settling for dealing with the fact it is a
111 * string at all.
112 */
113typedef char *OPENSSL_STRING;
114
115typedef const char *OPENSSL_CSTRING;
116
117/* Confusingly, LHASH_OF(STRING) deals with char ** throughout, but
118 * STACK_OF(STRING) is really more like STACK_OF(char), only, as
119 * mentioned above, instead of a single char each entry is a
120 * NUL-terminated array of chars. So, we have to implement STRING
121 * specially for STACK_OF. This is dealt with in the autogenerated
122 * macros below.
123 */
124
125DECLARE_SPECIAL_STACK_OF(OPENSSL_STRING, char)
126
127/* Similarly, we sometimes use a block of characters, NOT
128 * nul-terminated. These should also be distinguished from "normal"
129 * stacks. */
130
131typedef void *OPENSSL_BLOCK;
132DECLARE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void)
133
85/* SKM_sk_... stack macros are internal to safestack.h: 134/* SKM_sk_... stack macros are internal to safestack.h:
86 * never use them directly, use sk_<type>_... instead */ 135 * never use them directly, use sk_<type>_... instead */
87#define SKM_sk_new(type, cmp) \ 136#define SKM_sk_new(type, cmp) \
@@ -89,52 +138,55 @@ STACK_OF(type) \
89#define SKM_sk_new_null(type) \ 138#define SKM_sk_new_null(type) \
90 ((STACK_OF(type) *)sk_new_null()) 139 ((STACK_OF(type) *)sk_new_null())
91#define SKM_sk_free(type, st) \ 140#define SKM_sk_free(type, st) \
92 sk_free(CHECKED_PTR_OF(STACK_OF(type), st)) 141 sk_free(CHECKED_STACK_OF(type, st))
93#define SKM_sk_num(type, st) \ 142#define SKM_sk_num(type, st) \
94 sk_num(CHECKED_PTR_OF(STACK_OF(type), st)) 143 sk_num(CHECKED_STACK_OF(type, st))
95#define SKM_sk_value(type, st,i) \ 144#define SKM_sk_value(type, st,i) \
96 ((type *)sk_value(CHECKED_PTR_OF(STACK_OF(type), st), i)) 145 ((type *)sk_value(CHECKED_STACK_OF(type, st), i))
97#define SKM_sk_set(type, st,i,val) \ 146#define SKM_sk_set(type, st,i,val) \
98 sk_set(CHECKED_PTR_OF(STACK_OF(type), st), i, CHECKED_PTR_OF(type, val)) 147 sk_set(CHECKED_STACK_OF(type, st), i, CHECKED_PTR_OF(type, val))
99#define SKM_sk_zero(type, st) \ 148#define SKM_sk_zero(type, st) \
100 sk_zero(CHECKED_PTR_OF(STACK_OF(type), st)) 149 sk_zero(CHECKED_STACK_OF(type, st))
101#define SKM_sk_push(type, st,val) \ 150#define SKM_sk_push(type, st, val) \
102 sk_push(CHECKED_PTR_OF(STACK_OF(type), st), CHECKED_PTR_OF(type, val)) 151 sk_push(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val))
103#define SKM_sk_unshift(type, st,val) \ 152#define SKM_sk_unshift(type, st, val) \
104 sk_unshift(CHECKED_PTR_OF(STACK_OF(type), st), CHECKED_PTR_OF(type, val)) 153 sk_unshift(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val))
105#define SKM_sk_find(type, st,val) \ 154#define SKM_sk_find(type, st, val) \
106 sk_find(CHECKED_PTR_OF(STACK_OF(type), st), CHECKED_PTR_OF(type, val)) 155 sk_find(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val))
107#define SKM_sk_delete(type, st,i) \ 156#define SKM_sk_find_ex(type, st, val) \
108 (type *)sk_delete(CHECKED_PTR_OF(STACK_OF(type), st), i) 157 sk_find_ex(CHECKED_STACK_OF(type, st), \
109#define SKM_sk_delete_ptr(type, st,ptr) \ 158 CHECKED_PTR_OF(type, val))
110 (type *)sk_delete_ptr(CHECKED_PTR_OF(STACK_OF(type), st), CHECKED_PTR_OF(type, ptr)) 159#define SKM_sk_delete(type, st, i) \
111#define SKM_sk_insert(type, st,val,i) \ 160 (type *)sk_delete(CHECKED_STACK_OF(type, st), i)
112 sk_insert(CHECKED_PTR_OF(STACK_OF(type), st), CHECKED_PTR_OF(type, val), i) 161#define SKM_sk_delete_ptr(type, st, ptr) \
113#define SKM_sk_set_cmp_func(type, st,cmp) \ 162 (type *)sk_delete_ptr(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, ptr))
163#define SKM_sk_insert(type, st,val, i) \
164 sk_insert(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val), i)
165#define SKM_sk_set_cmp_func(type, st, cmp) \
114 ((int (*)(const type * const *,const type * const *)) \ 166 ((int (*)(const type * const *,const type * const *)) \
115 sk_set_cmp_func(CHECKED_PTR_OF(STACK_OF(type), st), CHECKED_SK_CMP_FUNC(type, cmp))) 167 sk_set_cmp_func(CHECKED_STACK_OF(type, st), CHECKED_SK_CMP_FUNC(type, cmp)))
116#define SKM_sk_dup(type, st) \ 168#define SKM_sk_dup(type, st) \
117 (STACK_OF(type) *)sk_dup(CHECKED_PTR_OF(STACK_OF(type), st)) 169 (STACK_OF(type) *)sk_dup(CHECKED_STACK_OF(type, st))
118#define SKM_sk_pop_free(type, st,free_func) \ 170#define SKM_sk_pop_free(type, st, free_func) \
119 sk_pop_free(CHECKED_PTR_OF(STACK_OF(type), st), CHECKED_SK_FREE_FUNC(type, free_func)) 171 sk_pop_free(CHECKED_STACK_OF(type, st), CHECKED_SK_FREE_FUNC(type, free_func))
120#define SKM_sk_shift(type, st) \ 172#define SKM_sk_shift(type, st) \
121 (type *)sk_shift(CHECKED_PTR_OF(STACK_OF(type), st)) 173 (type *)sk_shift(CHECKED_STACK_OF(type, st))
122#define SKM_sk_pop(type, st) \ 174#define SKM_sk_pop(type, st) \
123 (type *)sk_pop(CHECKED_PTR_OF(STACK_OF(type), st)) 175 (type *)sk_pop(CHECKED_STACK_OF(type, st))
124#define SKM_sk_sort(type, st) \ 176#define SKM_sk_sort(type, st) \
125 sk_sort(CHECKED_PTR_OF(STACK_OF(type), st)) 177 sk_sort(CHECKED_STACK_OF(type, st))
126#define SKM_sk_is_sorted(type, st) \ 178#define SKM_sk_is_sorted(type, st) \
127 sk_is_sorted(CHECKED_PTR_OF(STACK_OF(type), st)) 179 sk_is_sorted(CHECKED_STACK_OF(type, st))
128 180
129#define SKM_ASN1_SET_OF_d2i(type, st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 181#define SKM_ASN1_SET_OF_d2i(type, st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
130 (STACK_OF(type) *)d2i_ASN1_SET(CHECKED_PTR_OF(STACK_OF(type), st), \ 182 (STACK_OF(type) *)d2i_ASN1_SET((STACK_OF(OPENSSL_BLOCK) **)CHECKED_STACK_OF(type, st), \
131 pp, length, \ 183 pp, length, \
132 CHECKED_D2I_OF(type, d2i_func), \ 184 CHECKED_D2I_OF(type, d2i_func), \
133 CHECKED_SK_FREE_FUNC(type, free_func), \ 185 CHECKED_SK_FREE_FUNC(type, free_func), \
134 ex_tag, ex_class) 186 ex_tag, ex_class)
135 187
136#define SKM_ASN1_SET_OF_i2d(type, st, pp, i2d_func, ex_tag, ex_class, is_set) \ 188#define SKM_ASN1_SET_OF_i2d(type, st, pp, i2d_func, ex_tag, ex_class, is_set) \
137 i2d_ASN1_SET(CHECKED_PTR_OF(STACK_OF(type), st), pp, \ 189 i2d_ASN1_SET((STACK_OF(OPENSSL_BLOCK) *)CHECKED_STACK_OF(type, st), pp, \
138 CHECKED_I2D_OF(type, i2d_func), \ 190 CHECKED_I2D_OF(type, i2d_func), \
139 ex_tag, ex_class, is_set) 191 ex_tag, ex_class, is_set)
140 192
@@ -151,72 +203,8 @@ STACK_OF(type) \
151 CHECKED_SK_FREE_FUNC(type, free_func), \ 203 CHECKED_SK_FREE_FUNC(type, free_func), \
152 pass, passlen, oct, seq) 204 pass, passlen, oct, seq)
153 205
154#else
155
156#define STACK_OF(type) STACK
157#define PREDECLARE_STACK_OF(type) /* nada */
158#define DECLARE_STACK_OF(type) /* nada */
159#define IMPLEMENT_STACK_OF(type) /* nada */
160
161#define SKM_sk_new(type, cmp) \
162 sk_new((int (*)(const char * const *, const char * const *))(cmp))
163#define SKM_sk_new_null(type) \
164 sk_new_null()
165#define SKM_sk_free(type, st) \
166 sk_free(st)
167#define SKM_sk_num(type, st) \
168 sk_num(st)
169#define SKM_sk_value(type, st,i) \
170 ((type *)sk_value(st, i))
171#define SKM_sk_set(type, st,i,val) \
172 ((type *)sk_set(st, i,(char *)val))
173#define SKM_sk_zero(type, st) \
174 sk_zero(st)
175#define SKM_sk_push(type, st,val) \
176 sk_push(st, (char *)val)
177#define SKM_sk_unshift(type, st,val) \
178 sk_unshift(st, (char *)val)
179#define SKM_sk_find(type, st,val) \
180 sk_find(st, (char *)val)
181#define SKM_sk_delete(type, st,i) \
182 ((type *)sk_delete(st, i))
183#define SKM_sk_delete_ptr(type, st,ptr) \
184 ((type *)sk_delete_ptr(st,(char *)ptr))
185#define SKM_sk_insert(type, st,val,i) \
186 sk_insert(st, (char *)val, i)
187#define SKM_sk_set_cmp_func(type, st,cmp) \
188 ((int (*)(const type * const *,const type * const *)) \
189 sk_set_cmp_func(st, (int (*)(const char * const *, const char * const *))(cmp)))
190#define SKM_sk_dup(type, st) \
191 sk_dup(st)
192#define SKM_sk_pop_free(type, st,free_func) \
193 sk_pop_free(st, (void (*)(void *))free_func)
194#define SKM_sk_shift(type, st) \
195 ((type *)sk_shift(st))
196#define SKM_sk_pop(type, st) \
197 ((type *)sk_pop(st))
198#define SKM_sk_sort(type, st) \
199 sk_sort(st)
200#define SKM_sk_is_sorted(type, st) \
201 sk_is_sorted(st)
202
203#define SKM_ASN1_SET_OF_d2i(type, st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
204 d2i_ASN1_SET(st,pp,length, (void *(*)(void ** ,const unsigned char ** ,long))d2i_func, (void (*)(void *))free_func, ex_tag,ex_class)
205#define SKM_ASN1_SET_OF_i2d(type, st, pp, i2d_func, ex_tag, ex_class, is_set) \
206 i2d_ASN1_SET(st,pp,(int (*)(void *, unsigned char **))i2d_func,ex_tag,ex_class,is_set)
207
208#define SKM_ASN1_seq_pack(type, st, i2d_func, buf, len) \
209 ASN1_seq_pack(st, (int (*)(void *, unsigned char **))i2d_func, buf, len)
210#define SKM_ASN1_seq_unpack(type, buf, len, d2i_func, free_func) \
211 ASN1_seq_unpack(buf,len,(void *(*)(void **,const unsigned char **,long))d2i_func, (void(*)(void *))free_func)
212
213#define SKM_PKCS12_decrypt_d2i(type, algor, d2i_func, free_func, pass, passlen, oct, seq) \
214 ((STACK *)PKCS12_decrypt_d2i(algor,(char *(*)())d2i_func, (void(*)(void *))free_func,pass,passlen,oct,seq))
215
216#endif
217
218/* This block of defines is updated by util/mkstack.pl, please do not touch! */ 206/* This block of defines is updated by util/mkstack.pl, please do not touch! */
219#define sk_ACCESS_DESCRIPTION_new(st) SKM_sk_new(ACCESS_DESCRIPTION, (st)) 207#define sk_ACCESS_DESCRIPTION_new(cmp) SKM_sk_new(ACCESS_DESCRIPTION, (cmp))
220#define sk_ACCESS_DESCRIPTION_new_null() SKM_sk_new_null(ACCESS_DESCRIPTION) 208#define sk_ACCESS_DESCRIPTION_new_null() SKM_sk_new_null(ACCESS_DESCRIPTION)
221#define sk_ACCESS_DESCRIPTION_free(st) SKM_sk_free(ACCESS_DESCRIPTION, (st)) 209#define sk_ACCESS_DESCRIPTION_free(st) SKM_sk_free(ACCESS_DESCRIPTION, (st))
222#define sk_ACCESS_DESCRIPTION_num(st) SKM_sk_num(ACCESS_DESCRIPTION, (st)) 210#define sk_ACCESS_DESCRIPTION_num(st) SKM_sk_num(ACCESS_DESCRIPTION, (st))
@@ -238,7 +226,7 @@ STACK_OF(type) \
238#define sk_ACCESS_DESCRIPTION_sort(st) SKM_sk_sort(ACCESS_DESCRIPTION, (st)) 226#define sk_ACCESS_DESCRIPTION_sort(st) SKM_sk_sort(ACCESS_DESCRIPTION, (st))
239#define sk_ACCESS_DESCRIPTION_is_sorted(st) SKM_sk_is_sorted(ACCESS_DESCRIPTION, (st)) 227#define sk_ACCESS_DESCRIPTION_is_sorted(st) SKM_sk_is_sorted(ACCESS_DESCRIPTION, (st))
240 228
241#define sk_ASIdOrRange_new(st) SKM_sk_new(ASIdOrRange, (st)) 229#define sk_ASIdOrRange_new(cmp) SKM_sk_new(ASIdOrRange, (cmp))
242#define sk_ASIdOrRange_new_null() SKM_sk_new_null(ASIdOrRange) 230#define sk_ASIdOrRange_new_null() SKM_sk_new_null(ASIdOrRange)
243#define sk_ASIdOrRange_free(st) SKM_sk_free(ASIdOrRange, (st)) 231#define sk_ASIdOrRange_free(st) SKM_sk_free(ASIdOrRange, (st))
244#define sk_ASIdOrRange_num(st) SKM_sk_num(ASIdOrRange, (st)) 232#define sk_ASIdOrRange_num(st) SKM_sk_num(ASIdOrRange, (st))
@@ -260,7 +248,7 @@ STACK_OF(type) \
260#define sk_ASIdOrRange_sort(st) SKM_sk_sort(ASIdOrRange, (st)) 248#define sk_ASIdOrRange_sort(st) SKM_sk_sort(ASIdOrRange, (st))
261#define sk_ASIdOrRange_is_sorted(st) SKM_sk_is_sorted(ASIdOrRange, (st)) 249#define sk_ASIdOrRange_is_sorted(st) SKM_sk_is_sorted(ASIdOrRange, (st))
262 250
263#define sk_ASN1_GENERALSTRING_new(st) SKM_sk_new(ASN1_GENERALSTRING, (st)) 251#define sk_ASN1_GENERALSTRING_new(cmp) SKM_sk_new(ASN1_GENERALSTRING, (cmp))
264#define sk_ASN1_GENERALSTRING_new_null() SKM_sk_new_null(ASN1_GENERALSTRING) 252#define sk_ASN1_GENERALSTRING_new_null() SKM_sk_new_null(ASN1_GENERALSTRING)
265#define sk_ASN1_GENERALSTRING_free(st) SKM_sk_free(ASN1_GENERALSTRING, (st)) 253#define sk_ASN1_GENERALSTRING_free(st) SKM_sk_free(ASN1_GENERALSTRING, (st))
266#define sk_ASN1_GENERALSTRING_num(st) SKM_sk_num(ASN1_GENERALSTRING, (st)) 254#define sk_ASN1_GENERALSTRING_num(st) SKM_sk_num(ASN1_GENERALSTRING, (st))
@@ -282,7 +270,7 @@ STACK_OF(type) \
282#define sk_ASN1_GENERALSTRING_sort(st) SKM_sk_sort(ASN1_GENERALSTRING, (st)) 270#define sk_ASN1_GENERALSTRING_sort(st) SKM_sk_sort(ASN1_GENERALSTRING, (st))
283#define sk_ASN1_GENERALSTRING_is_sorted(st) SKM_sk_is_sorted(ASN1_GENERALSTRING, (st)) 271#define sk_ASN1_GENERALSTRING_is_sorted(st) SKM_sk_is_sorted(ASN1_GENERALSTRING, (st))
284 272
285#define sk_ASN1_INTEGER_new(st) SKM_sk_new(ASN1_INTEGER, (st)) 273#define sk_ASN1_INTEGER_new(cmp) SKM_sk_new(ASN1_INTEGER, (cmp))
286#define sk_ASN1_INTEGER_new_null() SKM_sk_new_null(ASN1_INTEGER) 274#define sk_ASN1_INTEGER_new_null() SKM_sk_new_null(ASN1_INTEGER)
287#define sk_ASN1_INTEGER_free(st) SKM_sk_free(ASN1_INTEGER, (st)) 275#define sk_ASN1_INTEGER_free(st) SKM_sk_free(ASN1_INTEGER, (st))
288#define sk_ASN1_INTEGER_num(st) SKM_sk_num(ASN1_INTEGER, (st)) 276#define sk_ASN1_INTEGER_num(st) SKM_sk_num(ASN1_INTEGER, (st))
@@ -304,7 +292,7 @@ STACK_OF(type) \
304#define sk_ASN1_INTEGER_sort(st) SKM_sk_sort(ASN1_INTEGER, (st)) 292#define sk_ASN1_INTEGER_sort(st) SKM_sk_sort(ASN1_INTEGER, (st))
305#define sk_ASN1_INTEGER_is_sorted(st) SKM_sk_is_sorted(ASN1_INTEGER, (st)) 293#define sk_ASN1_INTEGER_is_sorted(st) SKM_sk_is_sorted(ASN1_INTEGER, (st))
306 294
307#define sk_ASN1_OBJECT_new(st) SKM_sk_new(ASN1_OBJECT, (st)) 295#define sk_ASN1_OBJECT_new(cmp) SKM_sk_new(ASN1_OBJECT, (cmp))
308#define sk_ASN1_OBJECT_new_null() SKM_sk_new_null(ASN1_OBJECT) 296#define sk_ASN1_OBJECT_new_null() SKM_sk_new_null(ASN1_OBJECT)
309#define sk_ASN1_OBJECT_free(st) SKM_sk_free(ASN1_OBJECT, (st)) 297#define sk_ASN1_OBJECT_free(st) SKM_sk_free(ASN1_OBJECT, (st))
310#define sk_ASN1_OBJECT_num(st) SKM_sk_num(ASN1_OBJECT, (st)) 298#define sk_ASN1_OBJECT_num(st) SKM_sk_num(ASN1_OBJECT, (st))
@@ -326,7 +314,7 @@ STACK_OF(type) \
326#define sk_ASN1_OBJECT_sort(st) SKM_sk_sort(ASN1_OBJECT, (st)) 314#define sk_ASN1_OBJECT_sort(st) SKM_sk_sort(ASN1_OBJECT, (st))
327#define sk_ASN1_OBJECT_is_sorted(st) SKM_sk_is_sorted(ASN1_OBJECT, (st)) 315#define sk_ASN1_OBJECT_is_sorted(st) SKM_sk_is_sorted(ASN1_OBJECT, (st))
328 316
329#define sk_ASN1_STRING_TABLE_new(st) SKM_sk_new(ASN1_STRING_TABLE, (st)) 317#define sk_ASN1_STRING_TABLE_new(cmp) SKM_sk_new(ASN1_STRING_TABLE, (cmp))
330#define sk_ASN1_STRING_TABLE_new_null() SKM_sk_new_null(ASN1_STRING_TABLE) 318#define sk_ASN1_STRING_TABLE_new_null() SKM_sk_new_null(ASN1_STRING_TABLE)
331#define sk_ASN1_STRING_TABLE_free(st) SKM_sk_free(ASN1_STRING_TABLE, (st)) 319#define sk_ASN1_STRING_TABLE_free(st) SKM_sk_free(ASN1_STRING_TABLE, (st))
332#define sk_ASN1_STRING_TABLE_num(st) SKM_sk_num(ASN1_STRING_TABLE, (st)) 320#define sk_ASN1_STRING_TABLE_num(st) SKM_sk_num(ASN1_STRING_TABLE, (st))
@@ -348,7 +336,7 @@ STACK_OF(type) \
348#define sk_ASN1_STRING_TABLE_sort(st) SKM_sk_sort(ASN1_STRING_TABLE, (st)) 336#define sk_ASN1_STRING_TABLE_sort(st) SKM_sk_sort(ASN1_STRING_TABLE, (st))
349#define sk_ASN1_STRING_TABLE_is_sorted(st) SKM_sk_is_sorted(ASN1_STRING_TABLE, (st)) 337#define sk_ASN1_STRING_TABLE_is_sorted(st) SKM_sk_is_sorted(ASN1_STRING_TABLE, (st))
350 338
351#define sk_ASN1_TYPE_new(st) SKM_sk_new(ASN1_TYPE, (st)) 339#define sk_ASN1_TYPE_new(cmp) SKM_sk_new(ASN1_TYPE, (cmp))
352#define sk_ASN1_TYPE_new_null() SKM_sk_new_null(ASN1_TYPE) 340#define sk_ASN1_TYPE_new_null() SKM_sk_new_null(ASN1_TYPE)
353#define sk_ASN1_TYPE_free(st) SKM_sk_free(ASN1_TYPE, (st)) 341#define sk_ASN1_TYPE_free(st) SKM_sk_free(ASN1_TYPE, (st))
354#define sk_ASN1_TYPE_num(st) SKM_sk_num(ASN1_TYPE, (st)) 342#define sk_ASN1_TYPE_num(st) SKM_sk_num(ASN1_TYPE, (st))
@@ -370,7 +358,29 @@ STACK_OF(type) \
370#define sk_ASN1_TYPE_sort(st) SKM_sk_sort(ASN1_TYPE, (st)) 358#define sk_ASN1_TYPE_sort(st) SKM_sk_sort(ASN1_TYPE, (st))
371#define sk_ASN1_TYPE_is_sorted(st) SKM_sk_is_sorted(ASN1_TYPE, (st)) 359#define sk_ASN1_TYPE_is_sorted(st) SKM_sk_is_sorted(ASN1_TYPE, (st))
372 360
373#define sk_ASN1_VALUE_new(st) SKM_sk_new(ASN1_VALUE, (st)) 361#define sk_ASN1_UTF8STRING_new(cmp) SKM_sk_new(ASN1_UTF8STRING, (cmp))
362#define sk_ASN1_UTF8STRING_new_null() SKM_sk_new_null(ASN1_UTF8STRING)
363#define sk_ASN1_UTF8STRING_free(st) SKM_sk_free(ASN1_UTF8STRING, (st))
364#define sk_ASN1_UTF8STRING_num(st) SKM_sk_num(ASN1_UTF8STRING, (st))
365#define sk_ASN1_UTF8STRING_value(st, i) SKM_sk_value(ASN1_UTF8STRING, (st), (i))
366#define sk_ASN1_UTF8STRING_set(st, i, val) SKM_sk_set(ASN1_UTF8STRING, (st), (i), (val))
367#define sk_ASN1_UTF8STRING_zero(st) SKM_sk_zero(ASN1_UTF8STRING, (st))
368#define sk_ASN1_UTF8STRING_push(st, val) SKM_sk_push(ASN1_UTF8STRING, (st), (val))
369#define sk_ASN1_UTF8STRING_unshift(st, val) SKM_sk_unshift(ASN1_UTF8STRING, (st), (val))
370#define sk_ASN1_UTF8STRING_find(st, val) SKM_sk_find(ASN1_UTF8STRING, (st), (val))
371#define sk_ASN1_UTF8STRING_find_ex(st, val) SKM_sk_find_ex(ASN1_UTF8STRING, (st), (val))
372#define sk_ASN1_UTF8STRING_delete(st, i) SKM_sk_delete(ASN1_UTF8STRING, (st), (i))
373#define sk_ASN1_UTF8STRING_delete_ptr(st, ptr) SKM_sk_delete_ptr(ASN1_UTF8STRING, (st), (ptr))
374#define sk_ASN1_UTF8STRING_insert(st, val, i) SKM_sk_insert(ASN1_UTF8STRING, (st), (val), (i))
375#define sk_ASN1_UTF8STRING_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ASN1_UTF8STRING, (st), (cmp))
376#define sk_ASN1_UTF8STRING_dup(st) SKM_sk_dup(ASN1_UTF8STRING, st)
377#define sk_ASN1_UTF8STRING_pop_free(st, free_func) SKM_sk_pop_free(ASN1_UTF8STRING, (st), (free_func))
378#define sk_ASN1_UTF8STRING_shift(st) SKM_sk_shift(ASN1_UTF8STRING, (st))
379#define sk_ASN1_UTF8STRING_pop(st) SKM_sk_pop(ASN1_UTF8STRING, (st))
380#define sk_ASN1_UTF8STRING_sort(st) SKM_sk_sort(ASN1_UTF8STRING, (st))
381#define sk_ASN1_UTF8STRING_is_sorted(st) SKM_sk_is_sorted(ASN1_UTF8STRING, (st))
382
383#define sk_ASN1_VALUE_new(cmp) SKM_sk_new(ASN1_VALUE, (cmp))
374#define sk_ASN1_VALUE_new_null() SKM_sk_new_null(ASN1_VALUE) 384#define sk_ASN1_VALUE_new_null() SKM_sk_new_null(ASN1_VALUE)
375#define sk_ASN1_VALUE_free(st) SKM_sk_free(ASN1_VALUE, (st)) 385#define sk_ASN1_VALUE_free(st) SKM_sk_free(ASN1_VALUE, (st))
376#define sk_ASN1_VALUE_num(st) SKM_sk_num(ASN1_VALUE, (st)) 386#define sk_ASN1_VALUE_num(st) SKM_sk_num(ASN1_VALUE, (st))
@@ -392,7 +402,7 @@ STACK_OF(type) \
392#define sk_ASN1_VALUE_sort(st) SKM_sk_sort(ASN1_VALUE, (st)) 402#define sk_ASN1_VALUE_sort(st) SKM_sk_sort(ASN1_VALUE, (st))
393#define sk_ASN1_VALUE_is_sorted(st) SKM_sk_is_sorted(ASN1_VALUE, (st)) 403#define sk_ASN1_VALUE_is_sorted(st) SKM_sk_is_sorted(ASN1_VALUE, (st))
394 404
395#define sk_BIO_new(st) SKM_sk_new(BIO, (st)) 405#define sk_BIO_new(cmp) SKM_sk_new(BIO, (cmp))
396#define sk_BIO_new_null() SKM_sk_new_null(BIO) 406#define sk_BIO_new_null() SKM_sk_new_null(BIO)
397#define sk_BIO_free(st) SKM_sk_free(BIO, (st)) 407#define sk_BIO_free(st) SKM_sk_free(BIO, (st))
398#define sk_BIO_num(st) SKM_sk_num(BIO, (st)) 408#define sk_BIO_num(st) SKM_sk_num(BIO, (st))
@@ -414,7 +424,51 @@ STACK_OF(type) \
414#define sk_BIO_sort(st) SKM_sk_sort(BIO, (st)) 424#define sk_BIO_sort(st) SKM_sk_sort(BIO, (st))
415#define sk_BIO_is_sorted(st) SKM_sk_is_sorted(BIO, (st)) 425#define sk_BIO_is_sorted(st) SKM_sk_is_sorted(BIO, (st))
416 426
417#define sk_CMS_CertificateChoices_new(st) SKM_sk_new(CMS_CertificateChoices, (st)) 427#define sk_BY_DIR_ENTRY_new(cmp) SKM_sk_new(BY_DIR_ENTRY, (cmp))
428#define sk_BY_DIR_ENTRY_new_null() SKM_sk_new_null(BY_DIR_ENTRY)
429#define sk_BY_DIR_ENTRY_free(st) SKM_sk_free(BY_DIR_ENTRY, (st))
430#define sk_BY_DIR_ENTRY_num(st) SKM_sk_num(BY_DIR_ENTRY, (st))
431#define sk_BY_DIR_ENTRY_value(st, i) SKM_sk_value(BY_DIR_ENTRY, (st), (i))
432#define sk_BY_DIR_ENTRY_set(st, i, val) SKM_sk_set(BY_DIR_ENTRY, (st), (i), (val))
433#define sk_BY_DIR_ENTRY_zero(st) SKM_sk_zero(BY_DIR_ENTRY, (st))
434#define sk_BY_DIR_ENTRY_push(st, val) SKM_sk_push(BY_DIR_ENTRY, (st), (val))
435#define sk_BY_DIR_ENTRY_unshift(st, val) SKM_sk_unshift(BY_DIR_ENTRY, (st), (val))
436#define sk_BY_DIR_ENTRY_find(st, val) SKM_sk_find(BY_DIR_ENTRY, (st), (val))
437#define sk_BY_DIR_ENTRY_find_ex(st, val) SKM_sk_find_ex(BY_DIR_ENTRY, (st), (val))
438#define sk_BY_DIR_ENTRY_delete(st, i) SKM_sk_delete(BY_DIR_ENTRY, (st), (i))
439#define sk_BY_DIR_ENTRY_delete_ptr(st, ptr) SKM_sk_delete_ptr(BY_DIR_ENTRY, (st), (ptr))
440#define sk_BY_DIR_ENTRY_insert(st, val, i) SKM_sk_insert(BY_DIR_ENTRY, (st), (val), (i))
441#define sk_BY_DIR_ENTRY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(BY_DIR_ENTRY, (st), (cmp))
442#define sk_BY_DIR_ENTRY_dup(st) SKM_sk_dup(BY_DIR_ENTRY, st)
443#define sk_BY_DIR_ENTRY_pop_free(st, free_func) SKM_sk_pop_free(BY_DIR_ENTRY, (st), (free_func))
444#define sk_BY_DIR_ENTRY_shift(st) SKM_sk_shift(BY_DIR_ENTRY, (st))
445#define sk_BY_DIR_ENTRY_pop(st) SKM_sk_pop(BY_DIR_ENTRY, (st))
446#define sk_BY_DIR_ENTRY_sort(st) SKM_sk_sort(BY_DIR_ENTRY, (st))
447#define sk_BY_DIR_ENTRY_is_sorted(st) SKM_sk_is_sorted(BY_DIR_ENTRY, (st))
448
449#define sk_BY_DIR_HASH_new(cmp) SKM_sk_new(BY_DIR_HASH, (cmp))
450#define sk_BY_DIR_HASH_new_null() SKM_sk_new_null(BY_DIR_HASH)
451#define sk_BY_DIR_HASH_free(st) SKM_sk_free(BY_DIR_HASH, (st))
452#define sk_BY_DIR_HASH_num(st) SKM_sk_num(BY_DIR_HASH, (st))
453#define sk_BY_DIR_HASH_value(st, i) SKM_sk_value(BY_DIR_HASH, (st), (i))
454#define sk_BY_DIR_HASH_set(st, i, val) SKM_sk_set(BY_DIR_HASH, (st), (i), (val))
455#define sk_BY_DIR_HASH_zero(st) SKM_sk_zero(BY_DIR_HASH, (st))
456#define sk_BY_DIR_HASH_push(st, val) SKM_sk_push(BY_DIR_HASH, (st), (val))
457#define sk_BY_DIR_HASH_unshift(st, val) SKM_sk_unshift(BY_DIR_HASH, (st), (val))
458#define sk_BY_DIR_HASH_find(st, val) SKM_sk_find(BY_DIR_HASH, (st), (val))
459#define sk_BY_DIR_HASH_find_ex(st, val) SKM_sk_find_ex(BY_DIR_HASH, (st), (val))
460#define sk_BY_DIR_HASH_delete(st, i) SKM_sk_delete(BY_DIR_HASH, (st), (i))
461#define sk_BY_DIR_HASH_delete_ptr(st, ptr) SKM_sk_delete_ptr(BY_DIR_HASH, (st), (ptr))
462#define sk_BY_DIR_HASH_insert(st, val, i) SKM_sk_insert(BY_DIR_HASH, (st), (val), (i))
463#define sk_BY_DIR_HASH_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(BY_DIR_HASH, (st), (cmp))
464#define sk_BY_DIR_HASH_dup(st) SKM_sk_dup(BY_DIR_HASH, st)
465#define sk_BY_DIR_HASH_pop_free(st, free_func) SKM_sk_pop_free(BY_DIR_HASH, (st), (free_func))
466#define sk_BY_DIR_HASH_shift(st) SKM_sk_shift(BY_DIR_HASH, (st))
467#define sk_BY_DIR_HASH_pop(st) SKM_sk_pop(BY_DIR_HASH, (st))
468#define sk_BY_DIR_HASH_sort(st) SKM_sk_sort(BY_DIR_HASH, (st))
469#define sk_BY_DIR_HASH_is_sorted(st) SKM_sk_is_sorted(BY_DIR_HASH, (st))
470
471#define sk_CMS_CertificateChoices_new(cmp) SKM_sk_new(CMS_CertificateChoices, (cmp))
418#define sk_CMS_CertificateChoices_new_null() SKM_sk_new_null(CMS_CertificateChoices) 472#define sk_CMS_CertificateChoices_new_null() SKM_sk_new_null(CMS_CertificateChoices)
419#define sk_CMS_CertificateChoices_free(st) SKM_sk_free(CMS_CertificateChoices, (st)) 473#define sk_CMS_CertificateChoices_free(st) SKM_sk_free(CMS_CertificateChoices, (st))
420#define sk_CMS_CertificateChoices_num(st) SKM_sk_num(CMS_CertificateChoices, (st)) 474#define sk_CMS_CertificateChoices_num(st) SKM_sk_num(CMS_CertificateChoices, (st))
@@ -436,7 +490,7 @@ STACK_OF(type) \
436#define sk_CMS_CertificateChoices_sort(st) SKM_sk_sort(CMS_CertificateChoices, (st)) 490#define sk_CMS_CertificateChoices_sort(st) SKM_sk_sort(CMS_CertificateChoices, (st))
437#define sk_CMS_CertificateChoices_is_sorted(st) SKM_sk_is_sorted(CMS_CertificateChoices, (st)) 491#define sk_CMS_CertificateChoices_is_sorted(st) SKM_sk_is_sorted(CMS_CertificateChoices, (st))
438 492
439#define sk_CMS_RecipientInfo_new(st) SKM_sk_new(CMS_RecipientInfo, (st)) 493#define sk_CMS_RecipientInfo_new(cmp) SKM_sk_new(CMS_RecipientInfo, (cmp))
440#define sk_CMS_RecipientInfo_new_null() SKM_sk_new_null(CMS_RecipientInfo) 494#define sk_CMS_RecipientInfo_new_null() SKM_sk_new_null(CMS_RecipientInfo)
441#define sk_CMS_RecipientInfo_free(st) SKM_sk_free(CMS_RecipientInfo, (st)) 495#define sk_CMS_RecipientInfo_free(st) SKM_sk_free(CMS_RecipientInfo, (st))
442#define sk_CMS_RecipientInfo_num(st) SKM_sk_num(CMS_RecipientInfo, (st)) 496#define sk_CMS_RecipientInfo_num(st) SKM_sk_num(CMS_RecipientInfo, (st))
@@ -458,7 +512,7 @@ STACK_OF(type) \
458#define sk_CMS_RecipientInfo_sort(st) SKM_sk_sort(CMS_RecipientInfo, (st)) 512#define sk_CMS_RecipientInfo_sort(st) SKM_sk_sort(CMS_RecipientInfo, (st))
459#define sk_CMS_RecipientInfo_is_sorted(st) SKM_sk_is_sorted(CMS_RecipientInfo, (st)) 513#define sk_CMS_RecipientInfo_is_sorted(st) SKM_sk_is_sorted(CMS_RecipientInfo, (st))
460 514
461#define sk_CMS_RevocationInfoChoice_new(st) SKM_sk_new(CMS_RevocationInfoChoice, (st)) 515#define sk_CMS_RevocationInfoChoice_new(cmp) SKM_sk_new(CMS_RevocationInfoChoice, (cmp))
462#define sk_CMS_RevocationInfoChoice_new_null() SKM_sk_new_null(CMS_RevocationInfoChoice) 516#define sk_CMS_RevocationInfoChoice_new_null() SKM_sk_new_null(CMS_RevocationInfoChoice)
463#define sk_CMS_RevocationInfoChoice_free(st) SKM_sk_free(CMS_RevocationInfoChoice, (st)) 517#define sk_CMS_RevocationInfoChoice_free(st) SKM_sk_free(CMS_RevocationInfoChoice, (st))
464#define sk_CMS_RevocationInfoChoice_num(st) SKM_sk_num(CMS_RevocationInfoChoice, (st)) 518#define sk_CMS_RevocationInfoChoice_num(st) SKM_sk_num(CMS_RevocationInfoChoice, (st))
@@ -480,7 +534,7 @@ STACK_OF(type) \
480#define sk_CMS_RevocationInfoChoice_sort(st) SKM_sk_sort(CMS_RevocationInfoChoice, (st)) 534#define sk_CMS_RevocationInfoChoice_sort(st) SKM_sk_sort(CMS_RevocationInfoChoice, (st))
481#define sk_CMS_RevocationInfoChoice_is_sorted(st) SKM_sk_is_sorted(CMS_RevocationInfoChoice, (st)) 535#define sk_CMS_RevocationInfoChoice_is_sorted(st) SKM_sk_is_sorted(CMS_RevocationInfoChoice, (st))
482 536
483#define sk_CMS_SignerInfo_new(st) SKM_sk_new(CMS_SignerInfo, (st)) 537#define sk_CMS_SignerInfo_new(cmp) SKM_sk_new(CMS_SignerInfo, (cmp))
484#define sk_CMS_SignerInfo_new_null() SKM_sk_new_null(CMS_SignerInfo) 538#define sk_CMS_SignerInfo_new_null() SKM_sk_new_null(CMS_SignerInfo)
485#define sk_CMS_SignerInfo_free(st) SKM_sk_free(CMS_SignerInfo, (st)) 539#define sk_CMS_SignerInfo_free(st) SKM_sk_free(CMS_SignerInfo, (st))
486#define sk_CMS_SignerInfo_num(st) SKM_sk_num(CMS_SignerInfo, (st)) 540#define sk_CMS_SignerInfo_num(st) SKM_sk_num(CMS_SignerInfo, (st))
@@ -502,7 +556,7 @@ STACK_OF(type) \
502#define sk_CMS_SignerInfo_sort(st) SKM_sk_sort(CMS_SignerInfo, (st)) 556#define sk_CMS_SignerInfo_sort(st) SKM_sk_sort(CMS_SignerInfo, (st))
503#define sk_CMS_SignerInfo_is_sorted(st) SKM_sk_is_sorted(CMS_SignerInfo, (st)) 557#define sk_CMS_SignerInfo_is_sorted(st) SKM_sk_is_sorted(CMS_SignerInfo, (st))
504 558
505#define sk_CONF_IMODULE_new(st) SKM_sk_new(CONF_IMODULE, (st)) 559#define sk_CONF_IMODULE_new(cmp) SKM_sk_new(CONF_IMODULE, (cmp))
506#define sk_CONF_IMODULE_new_null() SKM_sk_new_null(CONF_IMODULE) 560#define sk_CONF_IMODULE_new_null() SKM_sk_new_null(CONF_IMODULE)
507#define sk_CONF_IMODULE_free(st) SKM_sk_free(CONF_IMODULE, (st)) 561#define sk_CONF_IMODULE_free(st) SKM_sk_free(CONF_IMODULE, (st))
508#define sk_CONF_IMODULE_num(st) SKM_sk_num(CONF_IMODULE, (st)) 562#define sk_CONF_IMODULE_num(st) SKM_sk_num(CONF_IMODULE, (st))
@@ -524,7 +578,7 @@ STACK_OF(type) \
524#define sk_CONF_IMODULE_sort(st) SKM_sk_sort(CONF_IMODULE, (st)) 578#define sk_CONF_IMODULE_sort(st) SKM_sk_sort(CONF_IMODULE, (st))
525#define sk_CONF_IMODULE_is_sorted(st) SKM_sk_is_sorted(CONF_IMODULE, (st)) 579#define sk_CONF_IMODULE_is_sorted(st) SKM_sk_is_sorted(CONF_IMODULE, (st))
526 580
527#define sk_CONF_MODULE_new(st) SKM_sk_new(CONF_MODULE, (st)) 581#define sk_CONF_MODULE_new(cmp) SKM_sk_new(CONF_MODULE, (cmp))
528#define sk_CONF_MODULE_new_null() SKM_sk_new_null(CONF_MODULE) 582#define sk_CONF_MODULE_new_null() SKM_sk_new_null(CONF_MODULE)
529#define sk_CONF_MODULE_free(st) SKM_sk_free(CONF_MODULE, (st)) 583#define sk_CONF_MODULE_free(st) SKM_sk_free(CONF_MODULE, (st))
530#define sk_CONF_MODULE_num(st) SKM_sk_num(CONF_MODULE, (st)) 584#define sk_CONF_MODULE_num(st) SKM_sk_num(CONF_MODULE, (st))
@@ -546,7 +600,7 @@ STACK_OF(type) \
546#define sk_CONF_MODULE_sort(st) SKM_sk_sort(CONF_MODULE, (st)) 600#define sk_CONF_MODULE_sort(st) SKM_sk_sort(CONF_MODULE, (st))
547#define sk_CONF_MODULE_is_sorted(st) SKM_sk_is_sorted(CONF_MODULE, (st)) 601#define sk_CONF_MODULE_is_sorted(st) SKM_sk_is_sorted(CONF_MODULE, (st))
548 602
549#define sk_CONF_VALUE_new(st) SKM_sk_new(CONF_VALUE, (st)) 603#define sk_CONF_VALUE_new(cmp) SKM_sk_new(CONF_VALUE, (cmp))
550#define sk_CONF_VALUE_new_null() SKM_sk_new_null(CONF_VALUE) 604#define sk_CONF_VALUE_new_null() SKM_sk_new_null(CONF_VALUE)
551#define sk_CONF_VALUE_free(st) SKM_sk_free(CONF_VALUE, (st)) 605#define sk_CONF_VALUE_free(st) SKM_sk_free(CONF_VALUE, (st))
552#define sk_CONF_VALUE_num(st) SKM_sk_num(CONF_VALUE, (st)) 606#define sk_CONF_VALUE_num(st) SKM_sk_num(CONF_VALUE, (st))
@@ -568,7 +622,7 @@ STACK_OF(type) \
568#define sk_CONF_VALUE_sort(st) SKM_sk_sort(CONF_VALUE, (st)) 622#define sk_CONF_VALUE_sort(st) SKM_sk_sort(CONF_VALUE, (st))
569#define sk_CONF_VALUE_is_sorted(st) SKM_sk_is_sorted(CONF_VALUE, (st)) 623#define sk_CONF_VALUE_is_sorted(st) SKM_sk_is_sorted(CONF_VALUE, (st))
570 624
571#define sk_CRYPTO_EX_DATA_FUNCS_new(st) SKM_sk_new(CRYPTO_EX_DATA_FUNCS, (st)) 625#define sk_CRYPTO_EX_DATA_FUNCS_new(cmp) SKM_sk_new(CRYPTO_EX_DATA_FUNCS, (cmp))
572#define sk_CRYPTO_EX_DATA_FUNCS_new_null() SKM_sk_new_null(CRYPTO_EX_DATA_FUNCS) 626#define sk_CRYPTO_EX_DATA_FUNCS_new_null() SKM_sk_new_null(CRYPTO_EX_DATA_FUNCS)
573#define sk_CRYPTO_EX_DATA_FUNCS_free(st) SKM_sk_free(CRYPTO_EX_DATA_FUNCS, (st)) 627#define sk_CRYPTO_EX_DATA_FUNCS_free(st) SKM_sk_free(CRYPTO_EX_DATA_FUNCS, (st))
574#define sk_CRYPTO_EX_DATA_FUNCS_num(st) SKM_sk_num(CRYPTO_EX_DATA_FUNCS, (st)) 628#define sk_CRYPTO_EX_DATA_FUNCS_num(st) SKM_sk_num(CRYPTO_EX_DATA_FUNCS, (st))
@@ -590,7 +644,7 @@ STACK_OF(type) \
590#define sk_CRYPTO_EX_DATA_FUNCS_sort(st) SKM_sk_sort(CRYPTO_EX_DATA_FUNCS, (st)) 644#define sk_CRYPTO_EX_DATA_FUNCS_sort(st) SKM_sk_sort(CRYPTO_EX_DATA_FUNCS, (st))
591#define sk_CRYPTO_EX_DATA_FUNCS_is_sorted(st) SKM_sk_is_sorted(CRYPTO_EX_DATA_FUNCS, (st)) 645#define sk_CRYPTO_EX_DATA_FUNCS_is_sorted(st) SKM_sk_is_sorted(CRYPTO_EX_DATA_FUNCS, (st))
592 646
593#define sk_CRYPTO_dynlock_new(st) SKM_sk_new(CRYPTO_dynlock, (st)) 647#define sk_CRYPTO_dynlock_new(cmp) SKM_sk_new(CRYPTO_dynlock, (cmp))
594#define sk_CRYPTO_dynlock_new_null() SKM_sk_new_null(CRYPTO_dynlock) 648#define sk_CRYPTO_dynlock_new_null() SKM_sk_new_null(CRYPTO_dynlock)
595#define sk_CRYPTO_dynlock_free(st) SKM_sk_free(CRYPTO_dynlock, (st)) 649#define sk_CRYPTO_dynlock_free(st) SKM_sk_free(CRYPTO_dynlock, (st))
596#define sk_CRYPTO_dynlock_num(st) SKM_sk_num(CRYPTO_dynlock, (st)) 650#define sk_CRYPTO_dynlock_num(st) SKM_sk_num(CRYPTO_dynlock, (st))
@@ -612,7 +666,7 @@ STACK_OF(type) \
612#define sk_CRYPTO_dynlock_sort(st) SKM_sk_sort(CRYPTO_dynlock, (st)) 666#define sk_CRYPTO_dynlock_sort(st) SKM_sk_sort(CRYPTO_dynlock, (st))
613#define sk_CRYPTO_dynlock_is_sorted(st) SKM_sk_is_sorted(CRYPTO_dynlock, (st)) 667#define sk_CRYPTO_dynlock_is_sorted(st) SKM_sk_is_sorted(CRYPTO_dynlock, (st))
614 668
615#define sk_DIST_POINT_new(st) SKM_sk_new(DIST_POINT, (st)) 669#define sk_DIST_POINT_new(cmp) SKM_sk_new(DIST_POINT, (cmp))
616#define sk_DIST_POINT_new_null() SKM_sk_new_null(DIST_POINT) 670#define sk_DIST_POINT_new_null() SKM_sk_new_null(DIST_POINT)
617#define sk_DIST_POINT_free(st) SKM_sk_free(DIST_POINT, (st)) 671#define sk_DIST_POINT_free(st) SKM_sk_free(DIST_POINT, (st))
618#define sk_DIST_POINT_num(st) SKM_sk_num(DIST_POINT, (st)) 672#define sk_DIST_POINT_num(st) SKM_sk_num(DIST_POINT, (st))
@@ -634,7 +688,7 @@ STACK_OF(type) \
634#define sk_DIST_POINT_sort(st) SKM_sk_sort(DIST_POINT, (st)) 688#define sk_DIST_POINT_sort(st) SKM_sk_sort(DIST_POINT, (st))
635#define sk_DIST_POINT_is_sorted(st) SKM_sk_is_sorted(DIST_POINT, (st)) 689#define sk_DIST_POINT_is_sorted(st) SKM_sk_is_sorted(DIST_POINT, (st))
636 690
637#define sk_ENGINE_new(st) SKM_sk_new(ENGINE, (st)) 691#define sk_ENGINE_new(cmp) SKM_sk_new(ENGINE, (cmp))
638#define sk_ENGINE_new_null() SKM_sk_new_null(ENGINE) 692#define sk_ENGINE_new_null() SKM_sk_new_null(ENGINE)
639#define sk_ENGINE_free(st) SKM_sk_free(ENGINE, (st)) 693#define sk_ENGINE_free(st) SKM_sk_free(ENGINE, (st))
640#define sk_ENGINE_num(st) SKM_sk_num(ENGINE, (st)) 694#define sk_ENGINE_num(st) SKM_sk_num(ENGINE, (st))
@@ -656,7 +710,7 @@ STACK_OF(type) \
656#define sk_ENGINE_sort(st) SKM_sk_sort(ENGINE, (st)) 710#define sk_ENGINE_sort(st) SKM_sk_sort(ENGINE, (st))
657#define sk_ENGINE_is_sorted(st) SKM_sk_is_sorted(ENGINE, (st)) 711#define sk_ENGINE_is_sorted(st) SKM_sk_is_sorted(ENGINE, (st))
658 712
659#define sk_ENGINE_CLEANUP_ITEM_new(st) SKM_sk_new(ENGINE_CLEANUP_ITEM, (st)) 713#define sk_ENGINE_CLEANUP_ITEM_new(cmp) SKM_sk_new(ENGINE_CLEANUP_ITEM, (cmp))
660#define sk_ENGINE_CLEANUP_ITEM_new_null() SKM_sk_new_null(ENGINE_CLEANUP_ITEM) 714#define sk_ENGINE_CLEANUP_ITEM_new_null() SKM_sk_new_null(ENGINE_CLEANUP_ITEM)
661#define sk_ENGINE_CLEANUP_ITEM_free(st) SKM_sk_free(ENGINE_CLEANUP_ITEM, (st)) 715#define sk_ENGINE_CLEANUP_ITEM_free(st) SKM_sk_free(ENGINE_CLEANUP_ITEM, (st))
662#define sk_ENGINE_CLEANUP_ITEM_num(st) SKM_sk_num(ENGINE_CLEANUP_ITEM, (st)) 716#define sk_ENGINE_CLEANUP_ITEM_num(st) SKM_sk_num(ENGINE_CLEANUP_ITEM, (st))
@@ -678,7 +732,117 @@ STACK_OF(type) \
678#define sk_ENGINE_CLEANUP_ITEM_sort(st) SKM_sk_sort(ENGINE_CLEANUP_ITEM, (st)) 732#define sk_ENGINE_CLEANUP_ITEM_sort(st) SKM_sk_sort(ENGINE_CLEANUP_ITEM, (st))
679#define sk_ENGINE_CLEANUP_ITEM_is_sorted(st) SKM_sk_is_sorted(ENGINE_CLEANUP_ITEM, (st)) 733#define sk_ENGINE_CLEANUP_ITEM_is_sorted(st) SKM_sk_is_sorted(ENGINE_CLEANUP_ITEM, (st))
680 734
681#define sk_GENERAL_NAME_new(st) SKM_sk_new(GENERAL_NAME, (st)) 735#define sk_ESS_CERT_ID_new(cmp) SKM_sk_new(ESS_CERT_ID, (cmp))
736#define sk_ESS_CERT_ID_new_null() SKM_sk_new_null(ESS_CERT_ID)
737#define sk_ESS_CERT_ID_free(st) SKM_sk_free(ESS_CERT_ID, (st))
738#define sk_ESS_CERT_ID_num(st) SKM_sk_num(ESS_CERT_ID, (st))
739#define sk_ESS_CERT_ID_value(st, i) SKM_sk_value(ESS_CERT_ID, (st), (i))
740#define sk_ESS_CERT_ID_set(st, i, val) SKM_sk_set(ESS_CERT_ID, (st), (i), (val))
741#define sk_ESS_CERT_ID_zero(st) SKM_sk_zero(ESS_CERT_ID, (st))
742#define sk_ESS_CERT_ID_push(st, val) SKM_sk_push(ESS_CERT_ID, (st), (val))
743#define sk_ESS_CERT_ID_unshift(st, val) SKM_sk_unshift(ESS_CERT_ID, (st), (val))
744#define sk_ESS_CERT_ID_find(st, val) SKM_sk_find(ESS_CERT_ID, (st), (val))
745#define sk_ESS_CERT_ID_find_ex(st, val) SKM_sk_find_ex(ESS_CERT_ID, (st), (val))
746#define sk_ESS_CERT_ID_delete(st, i) SKM_sk_delete(ESS_CERT_ID, (st), (i))
747#define sk_ESS_CERT_ID_delete_ptr(st, ptr) SKM_sk_delete_ptr(ESS_CERT_ID, (st), (ptr))
748#define sk_ESS_CERT_ID_insert(st, val, i) SKM_sk_insert(ESS_CERT_ID, (st), (val), (i))
749#define sk_ESS_CERT_ID_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(ESS_CERT_ID, (st), (cmp))
750#define sk_ESS_CERT_ID_dup(st) SKM_sk_dup(ESS_CERT_ID, st)
751#define sk_ESS_CERT_ID_pop_free(st, free_func) SKM_sk_pop_free(ESS_CERT_ID, (st), (free_func))
752#define sk_ESS_CERT_ID_shift(st) SKM_sk_shift(ESS_CERT_ID, (st))
753#define sk_ESS_CERT_ID_pop(st) SKM_sk_pop(ESS_CERT_ID, (st))
754#define sk_ESS_CERT_ID_sort(st) SKM_sk_sort(ESS_CERT_ID, (st))
755#define sk_ESS_CERT_ID_is_sorted(st) SKM_sk_is_sorted(ESS_CERT_ID, (st))
756
757#define sk_EVP_MD_new(cmp) SKM_sk_new(EVP_MD, (cmp))
758#define sk_EVP_MD_new_null() SKM_sk_new_null(EVP_MD)
759#define sk_EVP_MD_free(st) SKM_sk_free(EVP_MD, (st))
760#define sk_EVP_MD_num(st) SKM_sk_num(EVP_MD, (st))
761#define sk_EVP_MD_value(st, i) SKM_sk_value(EVP_MD, (st), (i))
762#define sk_EVP_MD_set(st, i, val) SKM_sk_set(EVP_MD, (st), (i), (val))
763#define sk_EVP_MD_zero(st) SKM_sk_zero(EVP_MD, (st))
764#define sk_EVP_MD_push(st, val) SKM_sk_push(EVP_MD, (st), (val))
765#define sk_EVP_MD_unshift(st, val) SKM_sk_unshift(EVP_MD, (st), (val))
766#define sk_EVP_MD_find(st, val) SKM_sk_find(EVP_MD, (st), (val))
767#define sk_EVP_MD_find_ex(st, val) SKM_sk_find_ex(EVP_MD, (st), (val))
768#define sk_EVP_MD_delete(st, i) SKM_sk_delete(EVP_MD, (st), (i))
769#define sk_EVP_MD_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_MD, (st), (ptr))
770#define sk_EVP_MD_insert(st, val, i) SKM_sk_insert(EVP_MD, (st), (val), (i))
771#define sk_EVP_MD_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_MD, (st), (cmp))
772#define sk_EVP_MD_dup(st) SKM_sk_dup(EVP_MD, st)
773#define sk_EVP_MD_pop_free(st, free_func) SKM_sk_pop_free(EVP_MD, (st), (free_func))
774#define sk_EVP_MD_shift(st) SKM_sk_shift(EVP_MD, (st))
775#define sk_EVP_MD_pop(st) SKM_sk_pop(EVP_MD, (st))
776#define sk_EVP_MD_sort(st) SKM_sk_sort(EVP_MD, (st))
777#define sk_EVP_MD_is_sorted(st) SKM_sk_is_sorted(EVP_MD, (st))
778
779#define sk_EVP_PBE_CTL_new(cmp) SKM_sk_new(EVP_PBE_CTL, (cmp))
780#define sk_EVP_PBE_CTL_new_null() SKM_sk_new_null(EVP_PBE_CTL)
781#define sk_EVP_PBE_CTL_free(st) SKM_sk_free(EVP_PBE_CTL, (st))
782#define sk_EVP_PBE_CTL_num(st) SKM_sk_num(EVP_PBE_CTL, (st))
783#define sk_EVP_PBE_CTL_value(st, i) SKM_sk_value(EVP_PBE_CTL, (st), (i))
784#define sk_EVP_PBE_CTL_set(st, i, val) SKM_sk_set(EVP_PBE_CTL, (st), (i), (val))
785#define sk_EVP_PBE_CTL_zero(st) SKM_sk_zero(EVP_PBE_CTL, (st))
786#define sk_EVP_PBE_CTL_push(st, val) SKM_sk_push(EVP_PBE_CTL, (st), (val))
787#define sk_EVP_PBE_CTL_unshift(st, val) SKM_sk_unshift(EVP_PBE_CTL, (st), (val))
788#define sk_EVP_PBE_CTL_find(st, val) SKM_sk_find(EVP_PBE_CTL, (st), (val))
789#define sk_EVP_PBE_CTL_find_ex(st, val) SKM_sk_find_ex(EVP_PBE_CTL, (st), (val))
790#define sk_EVP_PBE_CTL_delete(st, i) SKM_sk_delete(EVP_PBE_CTL, (st), (i))
791#define sk_EVP_PBE_CTL_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_PBE_CTL, (st), (ptr))
792#define sk_EVP_PBE_CTL_insert(st, val, i) SKM_sk_insert(EVP_PBE_CTL, (st), (val), (i))
793#define sk_EVP_PBE_CTL_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_PBE_CTL, (st), (cmp))
794#define sk_EVP_PBE_CTL_dup(st) SKM_sk_dup(EVP_PBE_CTL, st)
795#define sk_EVP_PBE_CTL_pop_free(st, free_func) SKM_sk_pop_free(EVP_PBE_CTL, (st), (free_func))
796#define sk_EVP_PBE_CTL_shift(st) SKM_sk_shift(EVP_PBE_CTL, (st))
797#define sk_EVP_PBE_CTL_pop(st) SKM_sk_pop(EVP_PBE_CTL, (st))
798#define sk_EVP_PBE_CTL_sort(st) SKM_sk_sort(EVP_PBE_CTL, (st))
799#define sk_EVP_PBE_CTL_is_sorted(st) SKM_sk_is_sorted(EVP_PBE_CTL, (st))
800
801#define sk_EVP_PKEY_ASN1_METHOD_new(cmp) SKM_sk_new(EVP_PKEY_ASN1_METHOD, (cmp))
802#define sk_EVP_PKEY_ASN1_METHOD_new_null() SKM_sk_new_null(EVP_PKEY_ASN1_METHOD)
803#define sk_EVP_PKEY_ASN1_METHOD_free(st) SKM_sk_free(EVP_PKEY_ASN1_METHOD, (st))
804#define sk_EVP_PKEY_ASN1_METHOD_num(st) SKM_sk_num(EVP_PKEY_ASN1_METHOD, (st))
805#define sk_EVP_PKEY_ASN1_METHOD_value(st, i) SKM_sk_value(EVP_PKEY_ASN1_METHOD, (st), (i))
806#define sk_EVP_PKEY_ASN1_METHOD_set(st, i, val) SKM_sk_set(EVP_PKEY_ASN1_METHOD, (st), (i), (val))
807#define sk_EVP_PKEY_ASN1_METHOD_zero(st) SKM_sk_zero(EVP_PKEY_ASN1_METHOD, (st))
808#define sk_EVP_PKEY_ASN1_METHOD_push(st, val) SKM_sk_push(EVP_PKEY_ASN1_METHOD, (st), (val))
809#define sk_EVP_PKEY_ASN1_METHOD_unshift(st, val) SKM_sk_unshift(EVP_PKEY_ASN1_METHOD, (st), (val))
810#define sk_EVP_PKEY_ASN1_METHOD_find(st, val) SKM_sk_find(EVP_PKEY_ASN1_METHOD, (st), (val))
811#define sk_EVP_PKEY_ASN1_METHOD_find_ex(st, val) SKM_sk_find_ex(EVP_PKEY_ASN1_METHOD, (st), (val))
812#define sk_EVP_PKEY_ASN1_METHOD_delete(st, i) SKM_sk_delete(EVP_PKEY_ASN1_METHOD, (st), (i))
813#define sk_EVP_PKEY_ASN1_METHOD_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_PKEY_ASN1_METHOD, (st), (ptr))
814#define sk_EVP_PKEY_ASN1_METHOD_insert(st, val, i) SKM_sk_insert(EVP_PKEY_ASN1_METHOD, (st), (val), (i))
815#define sk_EVP_PKEY_ASN1_METHOD_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_PKEY_ASN1_METHOD, (st), (cmp))
816#define sk_EVP_PKEY_ASN1_METHOD_dup(st) SKM_sk_dup(EVP_PKEY_ASN1_METHOD, st)
817#define sk_EVP_PKEY_ASN1_METHOD_pop_free(st, free_func) SKM_sk_pop_free(EVP_PKEY_ASN1_METHOD, (st), (free_func))
818#define sk_EVP_PKEY_ASN1_METHOD_shift(st) SKM_sk_shift(EVP_PKEY_ASN1_METHOD, (st))
819#define sk_EVP_PKEY_ASN1_METHOD_pop(st) SKM_sk_pop(EVP_PKEY_ASN1_METHOD, (st))
820#define sk_EVP_PKEY_ASN1_METHOD_sort(st) SKM_sk_sort(EVP_PKEY_ASN1_METHOD, (st))
821#define sk_EVP_PKEY_ASN1_METHOD_is_sorted(st) SKM_sk_is_sorted(EVP_PKEY_ASN1_METHOD, (st))
822
823#define sk_EVP_PKEY_METHOD_new(cmp) SKM_sk_new(EVP_PKEY_METHOD, (cmp))
824#define sk_EVP_PKEY_METHOD_new_null() SKM_sk_new_null(EVP_PKEY_METHOD)
825#define sk_EVP_PKEY_METHOD_free(st) SKM_sk_free(EVP_PKEY_METHOD, (st))
826#define sk_EVP_PKEY_METHOD_num(st) SKM_sk_num(EVP_PKEY_METHOD, (st))
827#define sk_EVP_PKEY_METHOD_value(st, i) SKM_sk_value(EVP_PKEY_METHOD, (st), (i))
828#define sk_EVP_PKEY_METHOD_set(st, i, val) SKM_sk_set(EVP_PKEY_METHOD, (st), (i), (val))
829#define sk_EVP_PKEY_METHOD_zero(st) SKM_sk_zero(EVP_PKEY_METHOD, (st))
830#define sk_EVP_PKEY_METHOD_push(st, val) SKM_sk_push(EVP_PKEY_METHOD, (st), (val))
831#define sk_EVP_PKEY_METHOD_unshift(st, val) SKM_sk_unshift(EVP_PKEY_METHOD, (st), (val))
832#define sk_EVP_PKEY_METHOD_find(st, val) SKM_sk_find(EVP_PKEY_METHOD, (st), (val))
833#define sk_EVP_PKEY_METHOD_find_ex(st, val) SKM_sk_find_ex(EVP_PKEY_METHOD, (st), (val))
834#define sk_EVP_PKEY_METHOD_delete(st, i) SKM_sk_delete(EVP_PKEY_METHOD, (st), (i))
835#define sk_EVP_PKEY_METHOD_delete_ptr(st, ptr) SKM_sk_delete_ptr(EVP_PKEY_METHOD, (st), (ptr))
836#define sk_EVP_PKEY_METHOD_insert(st, val, i) SKM_sk_insert(EVP_PKEY_METHOD, (st), (val), (i))
837#define sk_EVP_PKEY_METHOD_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(EVP_PKEY_METHOD, (st), (cmp))
838#define sk_EVP_PKEY_METHOD_dup(st) SKM_sk_dup(EVP_PKEY_METHOD, st)
839#define sk_EVP_PKEY_METHOD_pop_free(st, free_func) SKM_sk_pop_free(EVP_PKEY_METHOD, (st), (free_func))
840#define sk_EVP_PKEY_METHOD_shift(st) SKM_sk_shift(EVP_PKEY_METHOD, (st))
841#define sk_EVP_PKEY_METHOD_pop(st) SKM_sk_pop(EVP_PKEY_METHOD, (st))
842#define sk_EVP_PKEY_METHOD_sort(st) SKM_sk_sort(EVP_PKEY_METHOD, (st))
843#define sk_EVP_PKEY_METHOD_is_sorted(st) SKM_sk_is_sorted(EVP_PKEY_METHOD, (st))
844
845#define sk_GENERAL_NAME_new(cmp) SKM_sk_new(GENERAL_NAME, (cmp))
682#define sk_GENERAL_NAME_new_null() SKM_sk_new_null(GENERAL_NAME) 846#define sk_GENERAL_NAME_new_null() SKM_sk_new_null(GENERAL_NAME)
683#define sk_GENERAL_NAME_free(st) SKM_sk_free(GENERAL_NAME, (st)) 847#define sk_GENERAL_NAME_free(st) SKM_sk_free(GENERAL_NAME, (st))
684#define sk_GENERAL_NAME_num(st) SKM_sk_num(GENERAL_NAME, (st)) 848#define sk_GENERAL_NAME_num(st) SKM_sk_num(GENERAL_NAME, (st))
@@ -700,7 +864,7 @@ STACK_OF(type) \
700#define sk_GENERAL_NAME_sort(st) SKM_sk_sort(GENERAL_NAME, (st)) 864#define sk_GENERAL_NAME_sort(st) SKM_sk_sort(GENERAL_NAME, (st))
701#define sk_GENERAL_NAME_is_sorted(st) SKM_sk_is_sorted(GENERAL_NAME, (st)) 865#define sk_GENERAL_NAME_is_sorted(st) SKM_sk_is_sorted(GENERAL_NAME, (st))
702 866
703#define sk_GENERAL_NAMES_new(st) SKM_sk_new(GENERAL_NAMES, (st)) 867#define sk_GENERAL_NAMES_new(cmp) SKM_sk_new(GENERAL_NAMES, (cmp))
704#define sk_GENERAL_NAMES_new_null() SKM_sk_new_null(GENERAL_NAMES) 868#define sk_GENERAL_NAMES_new_null() SKM_sk_new_null(GENERAL_NAMES)
705#define sk_GENERAL_NAMES_free(st) SKM_sk_free(GENERAL_NAMES, (st)) 869#define sk_GENERAL_NAMES_free(st) SKM_sk_free(GENERAL_NAMES, (st))
706#define sk_GENERAL_NAMES_num(st) SKM_sk_num(GENERAL_NAMES, (st)) 870#define sk_GENERAL_NAMES_num(st) SKM_sk_num(GENERAL_NAMES, (st))
@@ -722,7 +886,7 @@ STACK_OF(type) \
722#define sk_GENERAL_NAMES_sort(st) SKM_sk_sort(GENERAL_NAMES, (st)) 886#define sk_GENERAL_NAMES_sort(st) SKM_sk_sort(GENERAL_NAMES, (st))
723#define sk_GENERAL_NAMES_is_sorted(st) SKM_sk_is_sorted(GENERAL_NAMES, (st)) 887#define sk_GENERAL_NAMES_is_sorted(st) SKM_sk_is_sorted(GENERAL_NAMES, (st))
724 888
725#define sk_GENERAL_SUBTREE_new(st) SKM_sk_new(GENERAL_SUBTREE, (st)) 889#define sk_GENERAL_SUBTREE_new(cmp) SKM_sk_new(GENERAL_SUBTREE, (cmp))
726#define sk_GENERAL_SUBTREE_new_null() SKM_sk_new_null(GENERAL_SUBTREE) 890#define sk_GENERAL_SUBTREE_new_null() SKM_sk_new_null(GENERAL_SUBTREE)
727#define sk_GENERAL_SUBTREE_free(st) SKM_sk_free(GENERAL_SUBTREE, (st)) 891#define sk_GENERAL_SUBTREE_free(st) SKM_sk_free(GENERAL_SUBTREE, (st))
728#define sk_GENERAL_SUBTREE_num(st) SKM_sk_num(GENERAL_SUBTREE, (st)) 892#define sk_GENERAL_SUBTREE_num(st) SKM_sk_num(GENERAL_SUBTREE, (st))
@@ -744,7 +908,7 @@ STACK_OF(type) \
744#define sk_GENERAL_SUBTREE_sort(st) SKM_sk_sort(GENERAL_SUBTREE, (st)) 908#define sk_GENERAL_SUBTREE_sort(st) SKM_sk_sort(GENERAL_SUBTREE, (st))
745#define sk_GENERAL_SUBTREE_is_sorted(st) SKM_sk_is_sorted(GENERAL_SUBTREE, (st)) 909#define sk_GENERAL_SUBTREE_is_sorted(st) SKM_sk_is_sorted(GENERAL_SUBTREE, (st))
746 910
747#define sk_IPAddressFamily_new(st) SKM_sk_new(IPAddressFamily, (st)) 911#define sk_IPAddressFamily_new(cmp) SKM_sk_new(IPAddressFamily, (cmp))
748#define sk_IPAddressFamily_new_null() SKM_sk_new_null(IPAddressFamily) 912#define sk_IPAddressFamily_new_null() SKM_sk_new_null(IPAddressFamily)
749#define sk_IPAddressFamily_free(st) SKM_sk_free(IPAddressFamily, (st)) 913#define sk_IPAddressFamily_free(st) SKM_sk_free(IPAddressFamily, (st))
750#define sk_IPAddressFamily_num(st) SKM_sk_num(IPAddressFamily, (st)) 914#define sk_IPAddressFamily_num(st) SKM_sk_num(IPAddressFamily, (st))
@@ -766,7 +930,7 @@ STACK_OF(type) \
766#define sk_IPAddressFamily_sort(st) SKM_sk_sort(IPAddressFamily, (st)) 930#define sk_IPAddressFamily_sort(st) SKM_sk_sort(IPAddressFamily, (st))
767#define sk_IPAddressFamily_is_sorted(st) SKM_sk_is_sorted(IPAddressFamily, (st)) 931#define sk_IPAddressFamily_is_sorted(st) SKM_sk_is_sorted(IPAddressFamily, (st))
768 932
769#define sk_IPAddressOrRange_new(st) SKM_sk_new(IPAddressOrRange, (st)) 933#define sk_IPAddressOrRange_new(cmp) SKM_sk_new(IPAddressOrRange, (cmp))
770#define sk_IPAddressOrRange_new_null() SKM_sk_new_null(IPAddressOrRange) 934#define sk_IPAddressOrRange_new_null() SKM_sk_new_null(IPAddressOrRange)
771#define sk_IPAddressOrRange_free(st) SKM_sk_free(IPAddressOrRange, (st)) 935#define sk_IPAddressOrRange_free(st) SKM_sk_free(IPAddressOrRange, (st))
772#define sk_IPAddressOrRange_num(st) SKM_sk_num(IPAddressOrRange, (st)) 936#define sk_IPAddressOrRange_num(st) SKM_sk_num(IPAddressOrRange, (st))
@@ -788,7 +952,7 @@ STACK_OF(type) \
788#define sk_IPAddressOrRange_sort(st) SKM_sk_sort(IPAddressOrRange, (st)) 952#define sk_IPAddressOrRange_sort(st) SKM_sk_sort(IPAddressOrRange, (st))
789#define sk_IPAddressOrRange_is_sorted(st) SKM_sk_is_sorted(IPAddressOrRange, (st)) 953#define sk_IPAddressOrRange_is_sorted(st) SKM_sk_is_sorted(IPAddressOrRange, (st))
790 954
791#define sk_KRB5_APREQBODY_new(st) SKM_sk_new(KRB5_APREQBODY, (st)) 955#define sk_KRB5_APREQBODY_new(cmp) SKM_sk_new(KRB5_APREQBODY, (cmp))
792#define sk_KRB5_APREQBODY_new_null() SKM_sk_new_null(KRB5_APREQBODY) 956#define sk_KRB5_APREQBODY_new_null() SKM_sk_new_null(KRB5_APREQBODY)
793#define sk_KRB5_APREQBODY_free(st) SKM_sk_free(KRB5_APREQBODY, (st)) 957#define sk_KRB5_APREQBODY_free(st) SKM_sk_free(KRB5_APREQBODY, (st))
794#define sk_KRB5_APREQBODY_num(st) SKM_sk_num(KRB5_APREQBODY, (st)) 958#define sk_KRB5_APREQBODY_num(st) SKM_sk_num(KRB5_APREQBODY, (st))
@@ -810,7 +974,7 @@ STACK_OF(type) \
810#define sk_KRB5_APREQBODY_sort(st) SKM_sk_sort(KRB5_APREQBODY, (st)) 974#define sk_KRB5_APREQBODY_sort(st) SKM_sk_sort(KRB5_APREQBODY, (st))
811#define sk_KRB5_APREQBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_APREQBODY, (st)) 975#define sk_KRB5_APREQBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_APREQBODY, (st))
812 976
813#define sk_KRB5_AUTHDATA_new(st) SKM_sk_new(KRB5_AUTHDATA, (st)) 977#define sk_KRB5_AUTHDATA_new(cmp) SKM_sk_new(KRB5_AUTHDATA, (cmp))
814#define sk_KRB5_AUTHDATA_new_null() SKM_sk_new_null(KRB5_AUTHDATA) 978#define sk_KRB5_AUTHDATA_new_null() SKM_sk_new_null(KRB5_AUTHDATA)
815#define sk_KRB5_AUTHDATA_free(st) SKM_sk_free(KRB5_AUTHDATA, (st)) 979#define sk_KRB5_AUTHDATA_free(st) SKM_sk_free(KRB5_AUTHDATA, (st))
816#define sk_KRB5_AUTHDATA_num(st) SKM_sk_num(KRB5_AUTHDATA, (st)) 980#define sk_KRB5_AUTHDATA_num(st) SKM_sk_num(KRB5_AUTHDATA, (st))
@@ -832,7 +996,7 @@ STACK_OF(type) \
832#define sk_KRB5_AUTHDATA_sort(st) SKM_sk_sort(KRB5_AUTHDATA, (st)) 996#define sk_KRB5_AUTHDATA_sort(st) SKM_sk_sort(KRB5_AUTHDATA, (st))
833#define sk_KRB5_AUTHDATA_is_sorted(st) SKM_sk_is_sorted(KRB5_AUTHDATA, (st)) 997#define sk_KRB5_AUTHDATA_is_sorted(st) SKM_sk_is_sorted(KRB5_AUTHDATA, (st))
834 998
835#define sk_KRB5_AUTHENTBODY_new(st) SKM_sk_new(KRB5_AUTHENTBODY, (st)) 999#define sk_KRB5_AUTHENTBODY_new(cmp) SKM_sk_new(KRB5_AUTHENTBODY, (cmp))
836#define sk_KRB5_AUTHENTBODY_new_null() SKM_sk_new_null(KRB5_AUTHENTBODY) 1000#define sk_KRB5_AUTHENTBODY_new_null() SKM_sk_new_null(KRB5_AUTHENTBODY)
837#define sk_KRB5_AUTHENTBODY_free(st) SKM_sk_free(KRB5_AUTHENTBODY, (st)) 1001#define sk_KRB5_AUTHENTBODY_free(st) SKM_sk_free(KRB5_AUTHENTBODY, (st))
838#define sk_KRB5_AUTHENTBODY_num(st) SKM_sk_num(KRB5_AUTHENTBODY, (st)) 1002#define sk_KRB5_AUTHENTBODY_num(st) SKM_sk_num(KRB5_AUTHENTBODY, (st))
@@ -854,7 +1018,7 @@ STACK_OF(type) \
854#define sk_KRB5_AUTHENTBODY_sort(st) SKM_sk_sort(KRB5_AUTHENTBODY, (st)) 1018#define sk_KRB5_AUTHENTBODY_sort(st) SKM_sk_sort(KRB5_AUTHENTBODY, (st))
855#define sk_KRB5_AUTHENTBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_AUTHENTBODY, (st)) 1019#define sk_KRB5_AUTHENTBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_AUTHENTBODY, (st))
856 1020
857#define sk_KRB5_CHECKSUM_new(st) SKM_sk_new(KRB5_CHECKSUM, (st)) 1021#define sk_KRB5_CHECKSUM_new(cmp) SKM_sk_new(KRB5_CHECKSUM, (cmp))
858#define sk_KRB5_CHECKSUM_new_null() SKM_sk_new_null(KRB5_CHECKSUM) 1022#define sk_KRB5_CHECKSUM_new_null() SKM_sk_new_null(KRB5_CHECKSUM)
859#define sk_KRB5_CHECKSUM_free(st) SKM_sk_free(KRB5_CHECKSUM, (st)) 1023#define sk_KRB5_CHECKSUM_free(st) SKM_sk_free(KRB5_CHECKSUM, (st))
860#define sk_KRB5_CHECKSUM_num(st) SKM_sk_num(KRB5_CHECKSUM, (st)) 1024#define sk_KRB5_CHECKSUM_num(st) SKM_sk_num(KRB5_CHECKSUM, (st))
@@ -876,7 +1040,7 @@ STACK_OF(type) \
876#define sk_KRB5_CHECKSUM_sort(st) SKM_sk_sort(KRB5_CHECKSUM, (st)) 1040#define sk_KRB5_CHECKSUM_sort(st) SKM_sk_sort(KRB5_CHECKSUM, (st))
877#define sk_KRB5_CHECKSUM_is_sorted(st) SKM_sk_is_sorted(KRB5_CHECKSUM, (st)) 1041#define sk_KRB5_CHECKSUM_is_sorted(st) SKM_sk_is_sorted(KRB5_CHECKSUM, (st))
878 1042
879#define sk_KRB5_ENCDATA_new(st) SKM_sk_new(KRB5_ENCDATA, (st)) 1043#define sk_KRB5_ENCDATA_new(cmp) SKM_sk_new(KRB5_ENCDATA, (cmp))
880#define sk_KRB5_ENCDATA_new_null() SKM_sk_new_null(KRB5_ENCDATA) 1044#define sk_KRB5_ENCDATA_new_null() SKM_sk_new_null(KRB5_ENCDATA)
881#define sk_KRB5_ENCDATA_free(st) SKM_sk_free(KRB5_ENCDATA, (st)) 1045#define sk_KRB5_ENCDATA_free(st) SKM_sk_free(KRB5_ENCDATA, (st))
882#define sk_KRB5_ENCDATA_num(st) SKM_sk_num(KRB5_ENCDATA, (st)) 1046#define sk_KRB5_ENCDATA_num(st) SKM_sk_num(KRB5_ENCDATA, (st))
@@ -898,7 +1062,7 @@ STACK_OF(type) \
898#define sk_KRB5_ENCDATA_sort(st) SKM_sk_sort(KRB5_ENCDATA, (st)) 1062#define sk_KRB5_ENCDATA_sort(st) SKM_sk_sort(KRB5_ENCDATA, (st))
899#define sk_KRB5_ENCDATA_is_sorted(st) SKM_sk_is_sorted(KRB5_ENCDATA, (st)) 1063#define sk_KRB5_ENCDATA_is_sorted(st) SKM_sk_is_sorted(KRB5_ENCDATA, (st))
900 1064
901#define sk_KRB5_ENCKEY_new(st) SKM_sk_new(KRB5_ENCKEY, (st)) 1065#define sk_KRB5_ENCKEY_new(cmp) SKM_sk_new(KRB5_ENCKEY, (cmp))
902#define sk_KRB5_ENCKEY_new_null() SKM_sk_new_null(KRB5_ENCKEY) 1066#define sk_KRB5_ENCKEY_new_null() SKM_sk_new_null(KRB5_ENCKEY)
903#define sk_KRB5_ENCKEY_free(st) SKM_sk_free(KRB5_ENCKEY, (st)) 1067#define sk_KRB5_ENCKEY_free(st) SKM_sk_free(KRB5_ENCKEY, (st))
904#define sk_KRB5_ENCKEY_num(st) SKM_sk_num(KRB5_ENCKEY, (st)) 1068#define sk_KRB5_ENCKEY_num(st) SKM_sk_num(KRB5_ENCKEY, (st))
@@ -920,7 +1084,7 @@ STACK_OF(type) \
920#define sk_KRB5_ENCKEY_sort(st) SKM_sk_sort(KRB5_ENCKEY, (st)) 1084#define sk_KRB5_ENCKEY_sort(st) SKM_sk_sort(KRB5_ENCKEY, (st))
921#define sk_KRB5_ENCKEY_is_sorted(st) SKM_sk_is_sorted(KRB5_ENCKEY, (st)) 1085#define sk_KRB5_ENCKEY_is_sorted(st) SKM_sk_is_sorted(KRB5_ENCKEY, (st))
922 1086
923#define sk_KRB5_PRINCNAME_new(st) SKM_sk_new(KRB5_PRINCNAME, (st)) 1087#define sk_KRB5_PRINCNAME_new(cmp) SKM_sk_new(KRB5_PRINCNAME, (cmp))
924#define sk_KRB5_PRINCNAME_new_null() SKM_sk_new_null(KRB5_PRINCNAME) 1088#define sk_KRB5_PRINCNAME_new_null() SKM_sk_new_null(KRB5_PRINCNAME)
925#define sk_KRB5_PRINCNAME_free(st) SKM_sk_free(KRB5_PRINCNAME, (st)) 1089#define sk_KRB5_PRINCNAME_free(st) SKM_sk_free(KRB5_PRINCNAME, (st))
926#define sk_KRB5_PRINCNAME_num(st) SKM_sk_num(KRB5_PRINCNAME, (st)) 1090#define sk_KRB5_PRINCNAME_num(st) SKM_sk_num(KRB5_PRINCNAME, (st))
@@ -942,7 +1106,7 @@ STACK_OF(type) \
942#define sk_KRB5_PRINCNAME_sort(st) SKM_sk_sort(KRB5_PRINCNAME, (st)) 1106#define sk_KRB5_PRINCNAME_sort(st) SKM_sk_sort(KRB5_PRINCNAME, (st))
943#define sk_KRB5_PRINCNAME_is_sorted(st) SKM_sk_is_sorted(KRB5_PRINCNAME, (st)) 1107#define sk_KRB5_PRINCNAME_is_sorted(st) SKM_sk_is_sorted(KRB5_PRINCNAME, (st))
944 1108
945#define sk_KRB5_TKTBODY_new(st) SKM_sk_new(KRB5_TKTBODY, (st)) 1109#define sk_KRB5_TKTBODY_new(cmp) SKM_sk_new(KRB5_TKTBODY, (cmp))
946#define sk_KRB5_TKTBODY_new_null() SKM_sk_new_null(KRB5_TKTBODY) 1110#define sk_KRB5_TKTBODY_new_null() SKM_sk_new_null(KRB5_TKTBODY)
947#define sk_KRB5_TKTBODY_free(st) SKM_sk_free(KRB5_TKTBODY, (st)) 1111#define sk_KRB5_TKTBODY_free(st) SKM_sk_free(KRB5_TKTBODY, (st))
948#define sk_KRB5_TKTBODY_num(st) SKM_sk_num(KRB5_TKTBODY, (st)) 1112#define sk_KRB5_TKTBODY_num(st) SKM_sk_num(KRB5_TKTBODY, (st))
@@ -964,7 +1128,29 @@ STACK_OF(type) \
964#define sk_KRB5_TKTBODY_sort(st) SKM_sk_sort(KRB5_TKTBODY, (st)) 1128#define sk_KRB5_TKTBODY_sort(st) SKM_sk_sort(KRB5_TKTBODY, (st))
965#define sk_KRB5_TKTBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_TKTBODY, (st)) 1129#define sk_KRB5_TKTBODY_is_sorted(st) SKM_sk_is_sorted(KRB5_TKTBODY, (st))
966 1130
967#define sk_MIME_HEADER_new(st) SKM_sk_new(MIME_HEADER, (st)) 1131#define sk_MEM_OBJECT_DATA_new(cmp) SKM_sk_new(MEM_OBJECT_DATA, (cmp))
1132#define sk_MEM_OBJECT_DATA_new_null() SKM_sk_new_null(MEM_OBJECT_DATA)
1133#define sk_MEM_OBJECT_DATA_free(st) SKM_sk_free(MEM_OBJECT_DATA, (st))
1134#define sk_MEM_OBJECT_DATA_num(st) SKM_sk_num(MEM_OBJECT_DATA, (st))
1135#define sk_MEM_OBJECT_DATA_value(st, i) SKM_sk_value(MEM_OBJECT_DATA, (st), (i))
1136#define sk_MEM_OBJECT_DATA_set(st, i, val) SKM_sk_set(MEM_OBJECT_DATA, (st), (i), (val))
1137#define sk_MEM_OBJECT_DATA_zero(st) SKM_sk_zero(MEM_OBJECT_DATA, (st))
1138#define sk_MEM_OBJECT_DATA_push(st, val) SKM_sk_push(MEM_OBJECT_DATA, (st), (val))
1139#define sk_MEM_OBJECT_DATA_unshift(st, val) SKM_sk_unshift(MEM_OBJECT_DATA, (st), (val))
1140#define sk_MEM_OBJECT_DATA_find(st, val) SKM_sk_find(MEM_OBJECT_DATA, (st), (val))
1141#define sk_MEM_OBJECT_DATA_find_ex(st, val) SKM_sk_find_ex(MEM_OBJECT_DATA, (st), (val))
1142#define sk_MEM_OBJECT_DATA_delete(st, i) SKM_sk_delete(MEM_OBJECT_DATA, (st), (i))
1143#define sk_MEM_OBJECT_DATA_delete_ptr(st, ptr) SKM_sk_delete_ptr(MEM_OBJECT_DATA, (st), (ptr))
1144#define sk_MEM_OBJECT_DATA_insert(st, val, i) SKM_sk_insert(MEM_OBJECT_DATA, (st), (val), (i))
1145#define sk_MEM_OBJECT_DATA_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(MEM_OBJECT_DATA, (st), (cmp))
1146#define sk_MEM_OBJECT_DATA_dup(st) SKM_sk_dup(MEM_OBJECT_DATA, st)
1147#define sk_MEM_OBJECT_DATA_pop_free(st, free_func) SKM_sk_pop_free(MEM_OBJECT_DATA, (st), (free_func))
1148#define sk_MEM_OBJECT_DATA_shift(st) SKM_sk_shift(MEM_OBJECT_DATA, (st))
1149#define sk_MEM_OBJECT_DATA_pop(st) SKM_sk_pop(MEM_OBJECT_DATA, (st))
1150#define sk_MEM_OBJECT_DATA_sort(st) SKM_sk_sort(MEM_OBJECT_DATA, (st))
1151#define sk_MEM_OBJECT_DATA_is_sorted(st) SKM_sk_is_sorted(MEM_OBJECT_DATA, (st))
1152
1153#define sk_MIME_HEADER_new(cmp) SKM_sk_new(MIME_HEADER, (cmp))
968#define sk_MIME_HEADER_new_null() SKM_sk_new_null(MIME_HEADER) 1154#define sk_MIME_HEADER_new_null() SKM_sk_new_null(MIME_HEADER)
969#define sk_MIME_HEADER_free(st) SKM_sk_free(MIME_HEADER, (st)) 1155#define sk_MIME_HEADER_free(st) SKM_sk_free(MIME_HEADER, (st))
970#define sk_MIME_HEADER_num(st) SKM_sk_num(MIME_HEADER, (st)) 1156#define sk_MIME_HEADER_num(st) SKM_sk_num(MIME_HEADER, (st))
@@ -986,51 +1172,7 @@ STACK_OF(type) \
986#define sk_MIME_HEADER_sort(st) SKM_sk_sort(MIME_HEADER, (st)) 1172#define sk_MIME_HEADER_sort(st) SKM_sk_sort(MIME_HEADER, (st))
987#define sk_MIME_HEADER_is_sorted(st) SKM_sk_is_sorted(MIME_HEADER, (st)) 1173#define sk_MIME_HEADER_is_sorted(st) SKM_sk_is_sorted(MIME_HEADER, (st))
988 1174
989#define sk_MIME_HEADER_new(st) SKM_sk_new(MIME_HEADER, (st)) 1175#define sk_MIME_PARAM_new(cmp) SKM_sk_new(MIME_PARAM, (cmp))
990#define sk_MIME_HEADER_new_null() SKM_sk_new_null(MIME_HEADER)
991#define sk_MIME_HEADER_free(st) SKM_sk_free(MIME_HEADER, (st))
992#define sk_MIME_HEADER_num(st) SKM_sk_num(MIME_HEADER, (st))
993#define sk_MIME_HEADER_value(st, i) SKM_sk_value(MIME_HEADER, (st), (i))
994#define sk_MIME_HEADER_set(st, i, val) SKM_sk_set(MIME_HEADER, (st), (i), (val))
995#define sk_MIME_HEADER_zero(st) SKM_sk_zero(MIME_HEADER, (st))
996#define sk_MIME_HEADER_push(st, val) SKM_sk_push(MIME_HEADER, (st), (val))
997#define sk_MIME_HEADER_unshift(st, val) SKM_sk_unshift(MIME_HEADER, (st), (val))
998#define sk_MIME_HEADER_find(st, val) SKM_sk_find(MIME_HEADER, (st), (val))
999#define sk_MIME_HEADER_find_ex(st, val) SKM_sk_find_ex(MIME_HEADER, (st), (val))
1000#define sk_MIME_HEADER_delete(st, i) SKM_sk_delete(MIME_HEADER, (st), (i))
1001#define sk_MIME_HEADER_delete_ptr(st, ptr) SKM_sk_delete_ptr(MIME_HEADER, (st), (ptr))
1002#define sk_MIME_HEADER_insert(st, val, i) SKM_sk_insert(MIME_HEADER, (st), (val), (i))
1003#define sk_MIME_HEADER_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(MIME_HEADER, (st), (cmp))
1004#define sk_MIME_HEADER_dup(st) SKM_sk_dup(MIME_HEADER, st)
1005#define sk_MIME_HEADER_pop_free(st, free_func) SKM_sk_pop_free(MIME_HEADER, (st), (free_func))
1006#define sk_MIME_HEADER_shift(st) SKM_sk_shift(MIME_HEADER, (st))
1007#define sk_MIME_HEADER_pop(st) SKM_sk_pop(MIME_HEADER, (st))
1008#define sk_MIME_HEADER_sort(st) SKM_sk_sort(MIME_HEADER, (st))
1009#define sk_MIME_HEADER_is_sorted(st) SKM_sk_is_sorted(MIME_HEADER, (st))
1010
1011#define sk_MIME_PARAM_new(st) SKM_sk_new(MIME_PARAM, (st))
1012#define sk_MIME_PARAM_new_null() SKM_sk_new_null(MIME_PARAM)
1013#define sk_MIME_PARAM_free(st) SKM_sk_free(MIME_PARAM, (st))
1014#define sk_MIME_PARAM_num(st) SKM_sk_num(MIME_PARAM, (st))
1015#define sk_MIME_PARAM_value(st, i) SKM_sk_value(MIME_PARAM, (st), (i))
1016#define sk_MIME_PARAM_set(st, i, val) SKM_sk_set(MIME_PARAM, (st), (i), (val))
1017#define sk_MIME_PARAM_zero(st) SKM_sk_zero(MIME_PARAM, (st))
1018#define sk_MIME_PARAM_push(st, val) SKM_sk_push(MIME_PARAM, (st), (val))
1019#define sk_MIME_PARAM_unshift(st, val) SKM_sk_unshift(MIME_PARAM, (st), (val))
1020#define sk_MIME_PARAM_find(st, val) SKM_sk_find(MIME_PARAM, (st), (val))
1021#define sk_MIME_PARAM_find_ex(st, val) SKM_sk_find_ex(MIME_PARAM, (st), (val))
1022#define sk_MIME_PARAM_delete(st, i) SKM_sk_delete(MIME_PARAM, (st), (i))
1023#define sk_MIME_PARAM_delete_ptr(st, ptr) SKM_sk_delete_ptr(MIME_PARAM, (st), (ptr))
1024#define sk_MIME_PARAM_insert(st, val, i) SKM_sk_insert(MIME_PARAM, (st), (val), (i))
1025#define sk_MIME_PARAM_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(MIME_PARAM, (st), (cmp))
1026#define sk_MIME_PARAM_dup(st) SKM_sk_dup(MIME_PARAM, st)
1027#define sk_MIME_PARAM_pop_free(st, free_func) SKM_sk_pop_free(MIME_PARAM, (st), (free_func))
1028#define sk_MIME_PARAM_shift(st) SKM_sk_shift(MIME_PARAM, (st))
1029#define sk_MIME_PARAM_pop(st) SKM_sk_pop(MIME_PARAM, (st))
1030#define sk_MIME_PARAM_sort(st) SKM_sk_sort(MIME_PARAM, (st))
1031#define sk_MIME_PARAM_is_sorted(st) SKM_sk_is_sorted(MIME_PARAM, (st))
1032
1033#define sk_MIME_PARAM_new(st) SKM_sk_new(MIME_PARAM, (st))
1034#define sk_MIME_PARAM_new_null() SKM_sk_new_null(MIME_PARAM) 1176#define sk_MIME_PARAM_new_null() SKM_sk_new_null(MIME_PARAM)
1035#define sk_MIME_PARAM_free(st) SKM_sk_free(MIME_PARAM, (st)) 1177#define sk_MIME_PARAM_free(st) SKM_sk_free(MIME_PARAM, (st))
1036#define sk_MIME_PARAM_num(st) SKM_sk_num(MIME_PARAM, (st)) 1178#define sk_MIME_PARAM_num(st) SKM_sk_num(MIME_PARAM, (st))
@@ -1052,7 +1194,7 @@ STACK_OF(type) \
1052#define sk_MIME_PARAM_sort(st) SKM_sk_sort(MIME_PARAM, (st)) 1194#define sk_MIME_PARAM_sort(st) SKM_sk_sort(MIME_PARAM, (st))
1053#define sk_MIME_PARAM_is_sorted(st) SKM_sk_is_sorted(MIME_PARAM, (st)) 1195#define sk_MIME_PARAM_is_sorted(st) SKM_sk_is_sorted(MIME_PARAM, (st))
1054 1196
1055#define sk_NAME_FUNCS_new(st) SKM_sk_new(NAME_FUNCS, (st)) 1197#define sk_NAME_FUNCS_new(cmp) SKM_sk_new(NAME_FUNCS, (cmp))
1056#define sk_NAME_FUNCS_new_null() SKM_sk_new_null(NAME_FUNCS) 1198#define sk_NAME_FUNCS_new_null() SKM_sk_new_null(NAME_FUNCS)
1057#define sk_NAME_FUNCS_free(st) SKM_sk_free(NAME_FUNCS, (st)) 1199#define sk_NAME_FUNCS_free(st) SKM_sk_free(NAME_FUNCS, (st))
1058#define sk_NAME_FUNCS_num(st) SKM_sk_num(NAME_FUNCS, (st)) 1200#define sk_NAME_FUNCS_num(st) SKM_sk_num(NAME_FUNCS, (st))
@@ -1074,7 +1216,7 @@ STACK_OF(type) \
1074#define sk_NAME_FUNCS_sort(st) SKM_sk_sort(NAME_FUNCS, (st)) 1216#define sk_NAME_FUNCS_sort(st) SKM_sk_sort(NAME_FUNCS, (st))
1075#define sk_NAME_FUNCS_is_sorted(st) SKM_sk_is_sorted(NAME_FUNCS, (st)) 1217#define sk_NAME_FUNCS_is_sorted(st) SKM_sk_is_sorted(NAME_FUNCS, (st))
1076 1218
1077#define sk_OCSP_CERTID_new(st) SKM_sk_new(OCSP_CERTID, (st)) 1219#define sk_OCSP_CERTID_new(cmp) SKM_sk_new(OCSP_CERTID, (cmp))
1078#define sk_OCSP_CERTID_new_null() SKM_sk_new_null(OCSP_CERTID) 1220#define sk_OCSP_CERTID_new_null() SKM_sk_new_null(OCSP_CERTID)
1079#define sk_OCSP_CERTID_free(st) SKM_sk_free(OCSP_CERTID, (st)) 1221#define sk_OCSP_CERTID_free(st) SKM_sk_free(OCSP_CERTID, (st))
1080#define sk_OCSP_CERTID_num(st) SKM_sk_num(OCSP_CERTID, (st)) 1222#define sk_OCSP_CERTID_num(st) SKM_sk_num(OCSP_CERTID, (st))
@@ -1096,7 +1238,7 @@ STACK_OF(type) \
1096#define sk_OCSP_CERTID_sort(st) SKM_sk_sort(OCSP_CERTID, (st)) 1238#define sk_OCSP_CERTID_sort(st) SKM_sk_sort(OCSP_CERTID, (st))
1097#define sk_OCSP_CERTID_is_sorted(st) SKM_sk_is_sorted(OCSP_CERTID, (st)) 1239#define sk_OCSP_CERTID_is_sorted(st) SKM_sk_is_sorted(OCSP_CERTID, (st))
1098 1240
1099#define sk_OCSP_ONEREQ_new(st) SKM_sk_new(OCSP_ONEREQ, (st)) 1241#define sk_OCSP_ONEREQ_new(cmp) SKM_sk_new(OCSP_ONEREQ, (cmp))
1100#define sk_OCSP_ONEREQ_new_null() SKM_sk_new_null(OCSP_ONEREQ) 1242#define sk_OCSP_ONEREQ_new_null() SKM_sk_new_null(OCSP_ONEREQ)
1101#define sk_OCSP_ONEREQ_free(st) SKM_sk_free(OCSP_ONEREQ, (st)) 1243#define sk_OCSP_ONEREQ_free(st) SKM_sk_free(OCSP_ONEREQ, (st))
1102#define sk_OCSP_ONEREQ_num(st) SKM_sk_num(OCSP_ONEREQ, (st)) 1244#define sk_OCSP_ONEREQ_num(st) SKM_sk_num(OCSP_ONEREQ, (st))
@@ -1118,7 +1260,7 @@ STACK_OF(type) \
1118#define sk_OCSP_ONEREQ_sort(st) SKM_sk_sort(OCSP_ONEREQ, (st)) 1260#define sk_OCSP_ONEREQ_sort(st) SKM_sk_sort(OCSP_ONEREQ, (st))
1119#define sk_OCSP_ONEREQ_is_sorted(st) SKM_sk_is_sorted(OCSP_ONEREQ, (st)) 1261#define sk_OCSP_ONEREQ_is_sorted(st) SKM_sk_is_sorted(OCSP_ONEREQ, (st))
1120 1262
1121#define sk_OCSP_RESPID_new(st) SKM_sk_new(OCSP_RESPID, (st)) 1263#define sk_OCSP_RESPID_new(cmp) SKM_sk_new(OCSP_RESPID, (cmp))
1122#define sk_OCSP_RESPID_new_null() SKM_sk_new_null(OCSP_RESPID) 1264#define sk_OCSP_RESPID_new_null() SKM_sk_new_null(OCSP_RESPID)
1123#define sk_OCSP_RESPID_free(st) SKM_sk_free(OCSP_RESPID, (st)) 1265#define sk_OCSP_RESPID_free(st) SKM_sk_free(OCSP_RESPID, (st))
1124#define sk_OCSP_RESPID_num(st) SKM_sk_num(OCSP_RESPID, (st)) 1266#define sk_OCSP_RESPID_num(st) SKM_sk_num(OCSP_RESPID, (st))
@@ -1140,7 +1282,7 @@ STACK_OF(type) \
1140#define sk_OCSP_RESPID_sort(st) SKM_sk_sort(OCSP_RESPID, (st)) 1282#define sk_OCSP_RESPID_sort(st) SKM_sk_sort(OCSP_RESPID, (st))
1141#define sk_OCSP_RESPID_is_sorted(st) SKM_sk_is_sorted(OCSP_RESPID, (st)) 1283#define sk_OCSP_RESPID_is_sorted(st) SKM_sk_is_sorted(OCSP_RESPID, (st))
1142 1284
1143#define sk_OCSP_SINGLERESP_new(st) SKM_sk_new(OCSP_SINGLERESP, (st)) 1285#define sk_OCSP_SINGLERESP_new(cmp) SKM_sk_new(OCSP_SINGLERESP, (cmp))
1144#define sk_OCSP_SINGLERESP_new_null() SKM_sk_new_null(OCSP_SINGLERESP) 1286#define sk_OCSP_SINGLERESP_new_null() SKM_sk_new_null(OCSP_SINGLERESP)
1145#define sk_OCSP_SINGLERESP_free(st) SKM_sk_free(OCSP_SINGLERESP, (st)) 1287#define sk_OCSP_SINGLERESP_free(st) SKM_sk_free(OCSP_SINGLERESP, (st))
1146#define sk_OCSP_SINGLERESP_num(st) SKM_sk_num(OCSP_SINGLERESP, (st)) 1288#define sk_OCSP_SINGLERESP_num(st) SKM_sk_num(OCSP_SINGLERESP, (st))
@@ -1162,7 +1304,7 @@ STACK_OF(type) \
1162#define sk_OCSP_SINGLERESP_sort(st) SKM_sk_sort(OCSP_SINGLERESP, (st)) 1304#define sk_OCSP_SINGLERESP_sort(st) SKM_sk_sort(OCSP_SINGLERESP, (st))
1163#define sk_OCSP_SINGLERESP_is_sorted(st) SKM_sk_is_sorted(OCSP_SINGLERESP, (st)) 1305#define sk_OCSP_SINGLERESP_is_sorted(st) SKM_sk_is_sorted(OCSP_SINGLERESP, (st))
1164 1306
1165#define sk_PKCS12_SAFEBAG_new(st) SKM_sk_new(PKCS12_SAFEBAG, (st)) 1307#define sk_PKCS12_SAFEBAG_new(cmp) SKM_sk_new(PKCS12_SAFEBAG, (cmp))
1166#define sk_PKCS12_SAFEBAG_new_null() SKM_sk_new_null(PKCS12_SAFEBAG) 1308#define sk_PKCS12_SAFEBAG_new_null() SKM_sk_new_null(PKCS12_SAFEBAG)
1167#define sk_PKCS12_SAFEBAG_free(st) SKM_sk_free(PKCS12_SAFEBAG, (st)) 1309#define sk_PKCS12_SAFEBAG_free(st) SKM_sk_free(PKCS12_SAFEBAG, (st))
1168#define sk_PKCS12_SAFEBAG_num(st) SKM_sk_num(PKCS12_SAFEBAG, (st)) 1310#define sk_PKCS12_SAFEBAG_num(st) SKM_sk_num(PKCS12_SAFEBAG, (st))
@@ -1184,7 +1326,7 @@ STACK_OF(type) \
1184#define sk_PKCS12_SAFEBAG_sort(st) SKM_sk_sort(PKCS12_SAFEBAG, (st)) 1326#define sk_PKCS12_SAFEBAG_sort(st) SKM_sk_sort(PKCS12_SAFEBAG, (st))
1185#define sk_PKCS12_SAFEBAG_is_sorted(st) SKM_sk_is_sorted(PKCS12_SAFEBAG, (st)) 1327#define sk_PKCS12_SAFEBAG_is_sorted(st) SKM_sk_is_sorted(PKCS12_SAFEBAG, (st))
1186 1328
1187#define sk_PKCS7_new(st) SKM_sk_new(PKCS7, (st)) 1329#define sk_PKCS7_new(cmp) SKM_sk_new(PKCS7, (cmp))
1188#define sk_PKCS7_new_null() SKM_sk_new_null(PKCS7) 1330#define sk_PKCS7_new_null() SKM_sk_new_null(PKCS7)
1189#define sk_PKCS7_free(st) SKM_sk_free(PKCS7, (st)) 1331#define sk_PKCS7_free(st) SKM_sk_free(PKCS7, (st))
1190#define sk_PKCS7_num(st) SKM_sk_num(PKCS7, (st)) 1332#define sk_PKCS7_num(st) SKM_sk_num(PKCS7, (st))
@@ -1206,7 +1348,7 @@ STACK_OF(type) \
1206#define sk_PKCS7_sort(st) SKM_sk_sort(PKCS7, (st)) 1348#define sk_PKCS7_sort(st) SKM_sk_sort(PKCS7, (st))
1207#define sk_PKCS7_is_sorted(st) SKM_sk_is_sorted(PKCS7, (st)) 1349#define sk_PKCS7_is_sorted(st) SKM_sk_is_sorted(PKCS7, (st))
1208 1350
1209#define sk_PKCS7_RECIP_INFO_new(st) SKM_sk_new(PKCS7_RECIP_INFO, (st)) 1351#define sk_PKCS7_RECIP_INFO_new(cmp) SKM_sk_new(PKCS7_RECIP_INFO, (cmp))
1210#define sk_PKCS7_RECIP_INFO_new_null() SKM_sk_new_null(PKCS7_RECIP_INFO) 1352#define sk_PKCS7_RECIP_INFO_new_null() SKM_sk_new_null(PKCS7_RECIP_INFO)
1211#define sk_PKCS7_RECIP_INFO_free(st) SKM_sk_free(PKCS7_RECIP_INFO, (st)) 1353#define sk_PKCS7_RECIP_INFO_free(st) SKM_sk_free(PKCS7_RECIP_INFO, (st))
1212#define sk_PKCS7_RECIP_INFO_num(st) SKM_sk_num(PKCS7_RECIP_INFO, (st)) 1354#define sk_PKCS7_RECIP_INFO_num(st) SKM_sk_num(PKCS7_RECIP_INFO, (st))
@@ -1228,7 +1370,7 @@ STACK_OF(type) \
1228#define sk_PKCS7_RECIP_INFO_sort(st) SKM_sk_sort(PKCS7_RECIP_INFO, (st)) 1370#define sk_PKCS7_RECIP_INFO_sort(st) SKM_sk_sort(PKCS7_RECIP_INFO, (st))
1229#define sk_PKCS7_RECIP_INFO_is_sorted(st) SKM_sk_is_sorted(PKCS7_RECIP_INFO, (st)) 1371#define sk_PKCS7_RECIP_INFO_is_sorted(st) SKM_sk_is_sorted(PKCS7_RECIP_INFO, (st))
1230 1372
1231#define sk_PKCS7_SIGNER_INFO_new(st) SKM_sk_new(PKCS7_SIGNER_INFO, (st)) 1373#define sk_PKCS7_SIGNER_INFO_new(cmp) SKM_sk_new(PKCS7_SIGNER_INFO, (cmp))
1232#define sk_PKCS7_SIGNER_INFO_new_null() SKM_sk_new_null(PKCS7_SIGNER_INFO) 1374#define sk_PKCS7_SIGNER_INFO_new_null() SKM_sk_new_null(PKCS7_SIGNER_INFO)
1233#define sk_PKCS7_SIGNER_INFO_free(st) SKM_sk_free(PKCS7_SIGNER_INFO, (st)) 1375#define sk_PKCS7_SIGNER_INFO_free(st) SKM_sk_free(PKCS7_SIGNER_INFO, (st))
1234#define sk_PKCS7_SIGNER_INFO_num(st) SKM_sk_num(PKCS7_SIGNER_INFO, (st)) 1376#define sk_PKCS7_SIGNER_INFO_num(st) SKM_sk_num(PKCS7_SIGNER_INFO, (st))
@@ -1250,7 +1392,7 @@ STACK_OF(type) \
1250#define sk_PKCS7_SIGNER_INFO_sort(st) SKM_sk_sort(PKCS7_SIGNER_INFO, (st)) 1392#define sk_PKCS7_SIGNER_INFO_sort(st) SKM_sk_sort(PKCS7_SIGNER_INFO, (st))
1251#define sk_PKCS7_SIGNER_INFO_is_sorted(st) SKM_sk_is_sorted(PKCS7_SIGNER_INFO, (st)) 1393#define sk_PKCS7_SIGNER_INFO_is_sorted(st) SKM_sk_is_sorted(PKCS7_SIGNER_INFO, (st))
1252 1394
1253#define sk_POLICYINFO_new(st) SKM_sk_new(POLICYINFO, (st)) 1395#define sk_POLICYINFO_new(cmp) SKM_sk_new(POLICYINFO, (cmp))
1254#define sk_POLICYINFO_new_null() SKM_sk_new_null(POLICYINFO) 1396#define sk_POLICYINFO_new_null() SKM_sk_new_null(POLICYINFO)
1255#define sk_POLICYINFO_free(st) SKM_sk_free(POLICYINFO, (st)) 1397#define sk_POLICYINFO_free(st) SKM_sk_free(POLICYINFO, (st))
1256#define sk_POLICYINFO_num(st) SKM_sk_num(POLICYINFO, (st)) 1398#define sk_POLICYINFO_num(st) SKM_sk_num(POLICYINFO, (st))
@@ -1272,7 +1414,7 @@ STACK_OF(type) \
1272#define sk_POLICYINFO_sort(st) SKM_sk_sort(POLICYINFO, (st)) 1414#define sk_POLICYINFO_sort(st) SKM_sk_sort(POLICYINFO, (st))
1273#define sk_POLICYINFO_is_sorted(st) SKM_sk_is_sorted(POLICYINFO, (st)) 1415#define sk_POLICYINFO_is_sorted(st) SKM_sk_is_sorted(POLICYINFO, (st))
1274 1416
1275#define sk_POLICYQUALINFO_new(st) SKM_sk_new(POLICYQUALINFO, (st)) 1417#define sk_POLICYQUALINFO_new(cmp) SKM_sk_new(POLICYQUALINFO, (cmp))
1276#define sk_POLICYQUALINFO_new_null() SKM_sk_new_null(POLICYQUALINFO) 1418#define sk_POLICYQUALINFO_new_null() SKM_sk_new_null(POLICYQUALINFO)
1277#define sk_POLICYQUALINFO_free(st) SKM_sk_free(POLICYQUALINFO, (st)) 1419#define sk_POLICYQUALINFO_free(st) SKM_sk_free(POLICYQUALINFO, (st))
1278#define sk_POLICYQUALINFO_num(st) SKM_sk_num(POLICYQUALINFO, (st)) 1420#define sk_POLICYQUALINFO_num(st) SKM_sk_num(POLICYQUALINFO, (st))
@@ -1294,7 +1436,7 @@ STACK_OF(type) \
1294#define sk_POLICYQUALINFO_sort(st) SKM_sk_sort(POLICYQUALINFO, (st)) 1436#define sk_POLICYQUALINFO_sort(st) SKM_sk_sort(POLICYQUALINFO, (st))
1295#define sk_POLICYQUALINFO_is_sorted(st) SKM_sk_is_sorted(POLICYQUALINFO, (st)) 1437#define sk_POLICYQUALINFO_is_sorted(st) SKM_sk_is_sorted(POLICYQUALINFO, (st))
1296 1438
1297#define sk_POLICY_MAPPING_new(st) SKM_sk_new(POLICY_MAPPING, (st)) 1439#define sk_POLICY_MAPPING_new(cmp) SKM_sk_new(POLICY_MAPPING, (cmp))
1298#define sk_POLICY_MAPPING_new_null() SKM_sk_new_null(POLICY_MAPPING) 1440#define sk_POLICY_MAPPING_new_null() SKM_sk_new_null(POLICY_MAPPING)
1299#define sk_POLICY_MAPPING_free(st) SKM_sk_free(POLICY_MAPPING, (st)) 1441#define sk_POLICY_MAPPING_free(st) SKM_sk_free(POLICY_MAPPING, (st))
1300#define sk_POLICY_MAPPING_num(st) SKM_sk_num(POLICY_MAPPING, (st)) 1442#define sk_POLICY_MAPPING_num(st) SKM_sk_num(POLICY_MAPPING, (st))
@@ -1316,7 +1458,7 @@ STACK_OF(type) \
1316#define sk_POLICY_MAPPING_sort(st) SKM_sk_sort(POLICY_MAPPING, (st)) 1458#define sk_POLICY_MAPPING_sort(st) SKM_sk_sort(POLICY_MAPPING, (st))
1317#define sk_POLICY_MAPPING_is_sorted(st) SKM_sk_is_sorted(POLICY_MAPPING, (st)) 1459#define sk_POLICY_MAPPING_is_sorted(st) SKM_sk_is_sorted(POLICY_MAPPING, (st))
1318 1460
1319#define sk_SSL_CIPHER_new(st) SKM_sk_new(SSL_CIPHER, (st)) 1461#define sk_SSL_CIPHER_new(cmp) SKM_sk_new(SSL_CIPHER, (cmp))
1320#define sk_SSL_CIPHER_new_null() SKM_sk_new_null(SSL_CIPHER) 1462#define sk_SSL_CIPHER_new_null() SKM_sk_new_null(SSL_CIPHER)
1321#define sk_SSL_CIPHER_free(st) SKM_sk_free(SSL_CIPHER, (st)) 1463#define sk_SSL_CIPHER_free(st) SKM_sk_free(SSL_CIPHER, (st))
1322#define sk_SSL_CIPHER_num(st) SKM_sk_num(SSL_CIPHER, (st)) 1464#define sk_SSL_CIPHER_num(st) SKM_sk_num(SSL_CIPHER, (st))
@@ -1338,7 +1480,7 @@ STACK_OF(type) \
1338#define sk_SSL_CIPHER_sort(st) SKM_sk_sort(SSL_CIPHER, (st)) 1480#define sk_SSL_CIPHER_sort(st) SKM_sk_sort(SSL_CIPHER, (st))
1339#define sk_SSL_CIPHER_is_sorted(st) SKM_sk_is_sorted(SSL_CIPHER, (st)) 1481#define sk_SSL_CIPHER_is_sorted(st) SKM_sk_is_sorted(SSL_CIPHER, (st))
1340 1482
1341#define sk_SSL_COMP_new(st) SKM_sk_new(SSL_COMP, (st)) 1483#define sk_SSL_COMP_new(cmp) SKM_sk_new(SSL_COMP, (cmp))
1342#define sk_SSL_COMP_new_null() SKM_sk_new_null(SSL_COMP) 1484#define sk_SSL_COMP_new_null() SKM_sk_new_null(SSL_COMP)
1343#define sk_SSL_COMP_free(st) SKM_sk_free(SSL_COMP, (st)) 1485#define sk_SSL_COMP_free(st) SKM_sk_free(SSL_COMP, (st))
1344#define sk_SSL_COMP_num(st) SKM_sk_num(SSL_COMP, (st)) 1486#define sk_SSL_COMP_num(st) SKM_sk_num(SSL_COMP, (st))
@@ -1360,7 +1502,51 @@ STACK_OF(type) \
1360#define sk_SSL_COMP_sort(st) SKM_sk_sort(SSL_COMP, (st)) 1502#define sk_SSL_COMP_sort(st) SKM_sk_sort(SSL_COMP, (st))
1361#define sk_SSL_COMP_is_sorted(st) SKM_sk_is_sorted(SSL_COMP, (st)) 1503#define sk_SSL_COMP_is_sorted(st) SKM_sk_is_sorted(SSL_COMP, (st))
1362 1504
1363#define sk_STORE_OBJECT_new(st) SKM_sk_new(STORE_OBJECT, (st)) 1505#define sk_STACK_OF_X509_NAME_ENTRY_new(cmp) SKM_sk_new(STACK_OF_X509_NAME_ENTRY, (cmp))
1506#define sk_STACK_OF_X509_NAME_ENTRY_new_null() SKM_sk_new_null(STACK_OF_X509_NAME_ENTRY)
1507#define sk_STACK_OF_X509_NAME_ENTRY_free(st) SKM_sk_free(STACK_OF_X509_NAME_ENTRY, (st))
1508#define sk_STACK_OF_X509_NAME_ENTRY_num(st) SKM_sk_num(STACK_OF_X509_NAME_ENTRY, (st))
1509#define sk_STACK_OF_X509_NAME_ENTRY_value(st, i) SKM_sk_value(STACK_OF_X509_NAME_ENTRY, (st), (i))
1510#define sk_STACK_OF_X509_NAME_ENTRY_set(st, i, val) SKM_sk_set(STACK_OF_X509_NAME_ENTRY, (st), (i), (val))
1511#define sk_STACK_OF_X509_NAME_ENTRY_zero(st) SKM_sk_zero(STACK_OF_X509_NAME_ENTRY, (st))
1512#define sk_STACK_OF_X509_NAME_ENTRY_push(st, val) SKM_sk_push(STACK_OF_X509_NAME_ENTRY, (st), (val))
1513#define sk_STACK_OF_X509_NAME_ENTRY_unshift(st, val) SKM_sk_unshift(STACK_OF_X509_NAME_ENTRY, (st), (val))
1514#define sk_STACK_OF_X509_NAME_ENTRY_find(st, val) SKM_sk_find(STACK_OF_X509_NAME_ENTRY, (st), (val))
1515#define sk_STACK_OF_X509_NAME_ENTRY_find_ex(st, val) SKM_sk_find_ex(STACK_OF_X509_NAME_ENTRY, (st), (val))
1516#define sk_STACK_OF_X509_NAME_ENTRY_delete(st, i) SKM_sk_delete(STACK_OF_X509_NAME_ENTRY, (st), (i))
1517#define sk_STACK_OF_X509_NAME_ENTRY_delete_ptr(st, ptr) SKM_sk_delete_ptr(STACK_OF_X509_NAME_ENTRY, (st), (ptr))
1518#define sk_STACK_OF_X509_NAME_ENTRY_insert(st, val, i) SKM_sk_insert(STACK_OF_X509_NAME_ENTRY, (st), (val), (i))
1519#define sk_STACK_OF_X509_NAME_ENTRY_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(STACK_OF_X509_NAME_ENTRY, (st), (cmp))
1520#define sk_STACK_OF_X509_NAME_ENTRY_dup(st) SKM_sk_dup(STACK_OF_X509_NAME_ENTRY, st)
1521#define sk_STACK_OF_X509_NAME_ENTRY_pop_free(st, free_func) SKM_sk_pop_free(STACK_OF_X509_NAME_ENTRY, (st), (free_func))
1522#define sk_STACK_OF_X509_NAME_ENTRY_shift(st) SKM_sk_shift(STACK_OF_X509_NAME_ENTRY, (st))
1523#define sk_STACK_OF_X509_NAME_ENTRY_pop(st) SKM_sk_pop(STACK_OF_X509_NAME_ENTRY, (st))
1524#define sk_STACK_OF_X509_NAME_ENTRY_sort(st) SKM_sk_sort(STACK_OF_X509_NAME_ENTRY, (st))
1525#define sk_STACK_OF_X509_NAME_ENTRY_is_sorted(st) SKM_sk_is_sorted(STACK_OF_X509_NAME_ENTRY, (st))
1526
1527#define sk_STORE_ATTR_INFO_new(cmp) SKM_sk_new(STORE_ATTR_INFO, (cmp))
1528#define sk_STORE_ATTR_INFO_new_null() SKM_sk_new_null(STORE_ATTR_INFO)
1529#define sk_STORE_ATTR_INFO_free(st) SKM_sk_free(STORE_ATTR_INFO, (st))
1530#define sk_STORE_ATTR_INFO_num(st) SKM_sk_num(STORE_ATTR_INFO, (st))
1531#define sk_STORE_ATTR_INFO_value(st, i) SKM_sk_value(STORE_ATTR_INFO, (st), (i))
1532#define sk_STORE_ATTR_INFO_set(st, i, val) SKM_sk_set(STORE_ATTR_INFO, (st), (i), (val))
1533#define sk_STORE_ATTR_INFO_zero(st) SKM_sk_zero(STORE_ATTR_INFO, (st))
1534#define sk_STORE_ATTR_INFO_push(st, val) SKM_sk_push(STORE_ATTR_INFO, (st), (val))
1535#define sk_STORE_ATTR_INFO_unshift(st, val) SKM_sk_unshift(STORE_ATTR_INFO, (st), (val))
1536#define sk_STORE_ATTR_INFO_find(st, val) SKM_sk_find(STORE_ATTR_INFO, (st), (val))
1537#define sk_STORE_ATTR_INFO_find_ex(st, val) SKM_sk_find_ex(STORE_ATTR_INFO, (st), (val))
1538#define sk_STORE_ATTR_INFO_delete(st, i) SKM_sk_delete(STORE_ATTR_INFO, (st), (i))
1539#define sk_STORE_ATTR_INFO_delete_ptr(st, ptr) SKM_sk_delete_ptr(STORE_ATTR_INFO, (st), (ptr))
1540#define sk_STORE_ATTR_INFO_insert(st, val, i) SKM_sk_insert(STORE_ATTR_INFO, (st), (val), (i))
1541#define sk_STORE_ATTR_INFO_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(STORE_ATTR_INFO, (st), (cmp))
1542#define sk_STORE_ATTR_INFO_dup(st) SKM_sk_dup(STORE_ATTR_INFO, st)
1543#define sk_STORE_ATTR_INFO_pop_free(st, free_func) SKM_sk_pop_free(STORE_ATTR_INFO, (st), (free_func))
1544#define sk_STORE_ATTR_INFO_shift(st) SKM_sk_shift(STORE_ATTR_INFO, (st))
1545#define sk_STORE_ATTR_INFO_pop(st) SKM_sk_pop(STORE_ATTR_INFO, (st))
1546#define sk_STORE_ATTR_INFO_sort(st) SKM_sk_sort(STORE_ATTR_INFO, (st))
1547#define sk_STORE_ATTR_INFO_is_sorted(st) SKM_sk_is_sorted(STORE_ATTR_INFO, (st))
1548
1549#define sk_STORE_OBJECT_new(cmp) SKM_sk_new(STORE_OBJECT, (cmp))
1364#define sk_STORE_OBJECT_new_null() SKM_sk_new_null(STORE_OBJECT) 1550#define sk_STORE_OBJECT_new_null() SKM_sk_new_null(STORE_OBJECT)
1365#define sk_STORE_OBJECT_free(st) SKM_sk_free(STORE_OBJECT, (st)) 1551#define sk_STORE_OBJECT_free(st) SKM_sk_free(STORE_OBJECT, (st))
1366#define sk_STORE_OBJECT_num(st) SKM_sk_num(STORE_OBJECT, (st)) 1552#define sk_STORE_OBJECT_num(st) SKM_sk_num(STORE_OBJECT, (st))
@@ -1382,7 +1568,7 @@ STACK_OF(type) \
1382#define sk_STORE_OBJECT_sort(st) SKM_sk_sort(STORE_OBJECT, (st)) 1568#define sk_STORE_OBJECT_sort(st) SKM_sk_sort(STORE_OBJECT, (st))
1383#define sk_STORE_OBJECT_is_sorted(st) SKM_sk_is_sorted(STORE_OBJECT, (st)) 1569#define sk_STORE_OBJECT_is_sorted(st) SKM_sk_is_sorted(STORE_OBJECT, (st))
1384 1570
1385#define sk_SXNETID_new(st) SKM_sk_new(SXNETID, (st)) 1571#define sk_SXNETID_new(cmp) SKM_sk_new(SXNETID, (cmp))
1386#define sk_SXNETID_new_null() SKM_sk_new_null(SXNETID) 1572#define sk_SXNETID_new_null() SKM_sk_new_null(SXNETID)
1387#define sk_SXNETID_free(st) SKM_sk_free(SXNETID, (st)) 1573#define sk_SXNETID_free(st) SKM_sk_free(SXNETID, (st))
1388#define sk_SXNETID_num(st) SKM_sk_num(SXNETID, (st)) 1574#define sk_SXNETID_num(st) SKM_sk_num(SXNETID, (st))
@@ -1404,7 +1590,7 @@ STACK_OF(type) \
1404#define sk_SXNETID_sort(st) SKM_sk_sort(SXNETID, (st)) 1590#define sk_SXNETID_sort(st) SKM_sk_sort(SXNETID, (st))
1405#define sk_SXNETID_is_sorted(st) SKM_sk_is_sorted(SXNETID, (st)) 1591#define sk_SXNETID_is_sorted(st) SKM_sk_is_sorted(SXNETID, (st))
1406 1592
1407#define sk_UI_STRING_new(st) SKM_sk_new(UI_STRING, (st)) 1593#define sk_UI_STRING_new(cmp) SKM_sk_new(UI_STRING, (cmp))
1408#define sk_UI_STRING_new_null() SKM_sk_new_null(UI_STRING) 1594#define sk_UI_STRING_new_null() SKM_sk_new_null(UI_STRING)
1409#define sk_UI_STRING_free(st) SKM_sk_free(UI_STRING, (st)) 1595#define sk_UI_STRING_free(st) SKM_sk_free(UI_STRING, (st))
1410#define sk_UI_STRING_num(st) SKM_sk_num(UI_STRING, (st)) 1596#define sk_UI_STRING_num(st) SKM_sk_num(UI_STRING, (st))
@@ -1426,7 +1612,7 @@ STACK_OF(type) \
1426#define sk_UI_STRING_sort(st) SKM_sk_sort(UI_STRING, (st)) 1612#define sk_UI_STRING_sort(st) SKM_sk_sort(UI_STRING, (st))
1427#define sk_UI_STRING_is_sorted(st) SKM_sk_is_sorted(UI_STRING, (st)) 1613#define sk_UI_STRING_is_sorted(st) SKM_sk_is_sorted(UI_STRING, (st))
1428 1614
1429#define sk_X509_new(st) SKM_sk_new(X509, (st)) 1615#define sk_X509_new(cmp) SKM_sk_new(X509, (cmp))
1430#define sk_X509_new_null() SKM_sk_new_null(X509) 1616#define sk_X509_new_null() SKM_sk_new_null(X509)
1431#define sk_X509_free(st) SKM_sk_free(X509, (st)) 1617#define sk_X509_free(st) SKM_sk_free(X509, (st))
1432#define sk_X509_num(st) SKM_sk_num(X509, (st)) 1618#define sk_X509_num(st) SKM_sk_num(X509, (st))
@@ -1448,7 +1634,7 @@ STACK_OF(type) \
1448#define sk_X509_sort(st) SKM_sk_sort(X509, (st)) 1634#define sk_X509_sort(st) SKM_sk_sort(X509, (st))
1449#define sk_X509_is_sorted(st) SKM_sk_is_sorted(X509, (st)) 1635#define sk_X509_is_sorted(st) SKM_sk_is_sorted(X509, (st))
1450 1636
1451#define sk_X509V3_EXT_METHOD_new(st) SKM_sk_new(X509V3_EXT_METHOD, (st)) 1637#define sk_X509V3_EXT_METHOD_new(cmp) SKM_sk_new(X509V3_EXT_METHOD, (cmp))
1452#define sk_X509V3_EXT_METHOD_new_null() SKM_sk_new_null(X509V3_EXT_METHOD) 1638#define sk_X509V3_EXT_METHOD_new_null() SKM_sk_new_null(X509V3_EXT_METHOD)
1453#define sk_X509V3_EXT_METHOD_free(st) SKM_sk_free(X509V3_EXT_METHOD, (st)) 1639#define sk_X509V3_EXT_METHOD_free(st) SKM_sk_free(X509V3_EXT_METHOD, (st))
1454#define sk_X509V3_EXT_METHOD_num(st) SKM_sk_num(X509V3_EXT_METHOD, (st)) 1640#define sk_X509V3_EXT_METHOD_num(st) SKM_sk_num(X509V3_EXT_METHOD, (st))
@@ -1470,7 +1656,7 @@ STACK_OF(type) \
1470#define sk_X509V3_EXT_METHOD_sort(st) SKM_sk_sort(X509V3_EXT_METHOD, (st)) 1656#define sk_X509V3_EXT_METHOD_sort(st) SKM_sk_sort(X509V3_EXT_METHOD, (st))
1471#define sk_X509V3_EXT_METHOD_is_sorted(st) SKM_sk_is_sorted(X509V3_EXT_METHOD, (st)) 1657#define sk_X509V3_EXT_METHOD_is_sorted(st) SKM_sk_is_sorted(X509V3_EXT_METHOD, (st))
1472 1658
1473#define sk_X509_ALGOR_new(st) SKM_sk_new(X509_ALGOR, (st)) 1659#define sk_X509_ALGOR_new(cmp) SKM_sk_new(X509_ALGOR, (cmp))
1474#define sk_X509_ALGOR_new_null() SKM_sk_new_null(X509_ALGOR) 1660#define sk_X509_ALGOR_new_null() SKM_sk_new_null(X509_ALGOR)
1475#define sk_X509_ALGOR_free(st) SKM_sk_free(X509_ALGOR, (st)) 1661#define sk_X509_ALGOR_free(st) SKM_sk_free(X509_ALGOR, (st))
1476#define sk_X509_ALGOR_num(st) SKM_sk_num(X509_ALGOR, (st)) 1662#define sk_X509_ALGOR_num(st) SKM_sk_num(X509_ALGOR, (st))
@@ -1492,7 +1678,7 @@ STACK_OF(type) \
1492#define sk_X509_ALGOR_sort(st) SKM_sk_sort(X509_ALGOR, (st)) 1678#define sk_X509_ALGOR_sort(st) SKM_sk_sort(X509_ALGOR, (st))
1493#define sk_X509_ALGOR_is_sorted(st) SKM_sk_is_sorted(X509_ALGOR, (st)) 1679#define sk_X509_ALGOR_is_sorted(st) SKM_sk_is_sorted(X509_ALGOR, (st))
1494 1680
1495#define sk_X509_ATTRIBUTE_new(st) SKM_sk_new(X509_ATTRIBUTE, (st)) 1681#define sk_X509_ATTRIBUTE_new(cmp) SKM_sk_new(X509_ATTRIBUTE, (cmp))
1496#define sk_X509_ATTRIBUTE_new_null() SKM_sk_new_null(X509_ATTRIBUTE) 1682#define sk_X509_ATTRIBUTE_new_null() SKM_sk_new_null(X509_ATTRIBUTE)
1497#define sk_X509_ATTRIBUTE_free(st) SKM_sk_free(X509_ATTRIBUTE, (st)) 1683#define sk_X509_ATTRIBUTE_free(st) SKM_sk_free(X509_ATTRIBUTE, (st))
1498#define sk_X509_ATTRIBUTE_num(st) SKM_sk_num(X509_ATTRIBUTE, (st)) 1684#define sk_X509_ATTRIBUTE_num(st) SKM_sk_num(X509_ATTRIBUTE, (st))
@@ -1514,7 +1700,7 @@ STACK_OF(type) \
1514#define sk_X509_ATTRIBUTE_sort(st) SKM_sk_sort(X509_ATTRIBUTE, (st)) 1700#define sk_X509_ATTRIBUTE_sort(st) SKM_sk_sort(X509_ATTRIBUTE, (st))
1515#define sk_X509_ATTRIBUTE_is_sorted(st) SKM_sk_is_sorted(X509_ATTRIBUTE, (st)) 1701#define sk_X509_ATTRIBUTE_is_sorted(st) SKM_sk_is_sorted(X509_ATTRIBUTE, (st))
1516 1702
1517#define sk_X509_CRL_new(st) SKM_sk_new(X509_CRL, (st)) 1703#define sk_X509_CRL_new(cmp) SKM_sk_new(X509_CRL, (cmp))
1518#define sk_X509_CRL_new_null() SKM_sk_new_null(X509_CRL) 1704#define sk_X509_CRL_new_null() SKM_sk_new_null(X509_CRL)
1519#define sk_X509_CRL_free(st) SKM_sk_free(X509_CRL, (st)) 1705#define sk_X509_CRL_free(st) SKM_sk_free(X509_CRL, (st))
1520#define sk_X509_CRL_num(st) SKM_sk_num(X509_CRL, (st)) 1706#define sk_X509_CRL_num(st) SKM_sk_num(X509_CRL, (st))
@@ -1536,7 +1722,7 @@ STACK_OF(type) \
1536#define sk_X509_CRL_sort(st) SKM_sk_sort(X509_CRL, (st)) 1722#define sk_X509_CRL_sort(st) SKM_sk_sort(X509_CRL, (st))
1537#define sk_X509_CRL_is_sorted(st) SKM_sk_is_sorted(X509_CRL, (st)) 1723#define sk_X509_CRL_is_sorted(st) SKM_sk_is_sorted(X509_CRL, (st))
1538 1724
1539#define sk_X509_EXTENSION_new(st) SKM_sk_new(X509_EXTENSION, (st)) 1725#define sk_X509_EXTENSION_new(cmp) SKM_sk_new(X509_EXTENSION, (cmp))
1540#define sk_X509_EXTENSION_new_null() SKM_sk_new_null(X509_EXTENSION) 1726#define sk_X509_EXTENSION_new_null() SKM_sk_new_null(X509_EXTENSION)
1541#define sk_X509_EXTENSION_free(st) SKM_sk_free(X509_EXTENSION, (st)) 1727#define sk_X509_EXTENSION_free(st) SKM_sk_free(X509_EXTENSION, (st))
1542#define sk_X509_EXTENSION_num(st) SKM_sk_num(X509_EXTENSION, (st)) 1728#define sk_X509_EXTENSION_num(st) SKM_sk_num(X509_EXTENSION, (st))
@@ -1558,7 +1744,7 @@ STACK_OF(type) \
1558#define sk_X509_EXTENSION_sort(st) SKM_sk_sort(X509_EXTENSION, (st)) 1744#define sk_X509_EXTENSION_sort(st) SKM_sk_sort(X509_EXTENSION, (st))
1559#define sk_X509_EXTENSION_is_sorted(st) SKM_sk_is_sorted(X509_EXTENSION, (st)) 1745#define sk_X509_EXTENSION_is_sorted(st) SKM_sk_is_sorted(X509_EXTENSION, (st))
1560 1746
1561#define sk_X509_INFO_new(st) SKM_sk_new(X509_INFO, (st)) 1747#define sk_X509_INFO_new(cmp) SKM_sk_new(X509_INFO, (cmp))
1562#define sk_X509_INFO_new_null() SKM_sk_new_null(X509_INFO) 1748#define sk_X509_INFO_new_null() SKM_sk_new_null(X509_INFO)
1563#define sk_X509_INFO_free(st) SKM_sk_free(X509_INFO, (st)) 1749#define sk_X509_INFO_free(st) SKM_sk_free(X509_INFO, (st))
1564#define sk_X509_INFO_num(st) SKM_sk_num(X509_INFO, (st)) 1750#define sk_X509_INFO_num(st) SKM_sk_num(X509_INFO, (st))
@@ -1580,7 +1766,7 @@ STACK_OF(type) \
1580#define sk_X509_INFO_sort(st) SKM_sk_sort(X509_INFO, (st)) 1766#define sk_X509_INFO_sort(st) SKM_sk_sort(X509_INFO, (st))
1581#define sk_X509_INFO_is_sorted(st) SKM_sk_is_sorted(X509_INFO, (st)) 1767#define sk_X509_INFO_is_sorted(st) SKM_sk_is_sorted(X509_INFO, (st))
1582 1768
1583#define sk_X509_LOOKUP_new(st) SKM_sk_new(X509_LOOKUP, (st)) 1769#define sk_X509_LOOKUP_new(cmp) SKM_sk_new(X509_LOOKUP, (cmp))
1584#define sk_X509_LOOKUP_new_null() SKM_sk_new_null(X509_LOOKUP) 1770#define sk_X509_LOOKUP_new_null() SKM_sk_new_null(X509_LOOKUP)
1585#define sk_X509_LOOKUP_free(st) SKM_sk_free(X509_LOOKUP, (st)) 1771#define sk_X509_LOOKUP_free(st) SKM_sk_free(X509_LOOKUP, (st))
1586#define sk_X509_LOOKUP_num(st) SKM_sk_num(X509_LOOKUP, (st)) 1772#define sk_X509_LOOKUP_num(st) SKM_sk_num(X509_LOOKUP, (st))
@@ -1602,7 +1788,7 @@ STACK_OF(type) \
1602#define sk_X509_LOOKUP_sort(st) SKM_sk_sort(X509_LOOKUP, (st)) 1788#define sk_X509_LOOKUP_sort(st) SKM_sk_sort(X509_LOOKUP, (st))
1603#define sk_X509_LOOKUP_is_sorted(st) SKM_sk_is_sorted(X509_LOOKUP, (st)) 1789#define sk_X509_LOOKUP_is_sorted(st) SKM_sk_is_sorted(X509_LOOKUP, (st))
1604 1790
1605#define sk_X509_NAME_new(st) SKM_sk_new(X509_NAME, (st)) 1791#define sk_X509_NAME_new(cmp) SKM_sk_new(X509_NAME, (cmp))
1606#define sk_X509_NAME_new_null() SKM_sk_new_null(X509_NAME) 1792#define sk_X509_NAME_new_null() SKM_sk_new_null(X509_NAME)
1607#define sk_X509_NAME_free(st) SKM_sk_free(X509_NAME, (st)) 1793#define sk_X509_NAME_free(st) SKM_sk_free(X509_NAME, (st))
1608#define sk_X509_NAME_num(st) SKM_sk_num(X509_NAME, (st)) 1794#define sk_X509_NAME_num(st) SKM_sk_num(X509_NAME, (st))
@@ -1624,7 +1810,7 @@ STACK_OF(type) \
1624#define sk_X509_NAME_sort(st) SKM_sk_sort(X509_NAME, (st)) 1810#define sk_X509_NAME_sort(st) SKM_sk_sort(X509_NAME, (st))
1625#define sk_X509_NAME_is_sorted(st) SKM_sk_is_sorted(X509_NAME, (st)) 1811#define sk_X509_NAME_is_sorted(st) SKM_sk_is_sorted(X509_NAME, (st))
1626 1812
1627#define sk_X509_NAME_ENTRY_new(st) SKM_sk_new(X509_NAME_ENTRY, (st)) 1813#define sk_X509_NAME_ENTRY_new(cmp) SKM_sk_new(X509_NAME_ENTRY, (cmp))
1628#define sk_X509_NAME_ENTRY_new_null() SKM_sk_new_null(X509_NAME_ENTRY) 1814#define sk_X509_NAME_ENTRY_new_null() SKM_sk_new_null(X509_NAME_ENTRY)
1629#define sk_X509_NAME_ENTRY_free(st) SKM_sk_free(X509_NAME_ENTRY, (st)) 1815#define sk_X509_NAME_ENTRY_free(st) SKM_sk_free(X509_NAME_ENTRY, (st))
1630#define sk_X509_NAME_ENTRY_num(st) SKM_sk_num(X509_NAME_ENTRY, (st)) 1816#define sk_X509_NAME_ENTRY_num(st) SKM_sk_num(X509_NAME_ENTRY, (st))
@@ -1646,7 +1832,7 @@ STACK_OF(type) \
1646#define sk_X509_NAME_ENTRY_sort(st) SKM_sk_sort(X509_NAME_ENTRY, (st)) 1832#define sk_X509_NAME_ENTRY_sort(st) SKM_sk_sort(X509_NAME_ENTRY, (st))
1647#define sk_X509_NAME_ENTRY_is_sorted(st) SKM_sk_is_sorted(X509_NAME_ENTRY, (st)) 1833#define sk_X509_NAME_ENTRY_is_sorted(st) SKM_sk_is_sorted(X509_NAME_ENTRY, (st))
1648 1834
1649#define sk_X509_OBJECT_new(st) SKM_sk_new(X509_OBJECT, (st)) 1835#define sk_X509_OBJECT_new(cmp) SKM_sk_new(X509_OBJECT, (cmp))
1650#define sk_X509_OBJECT_new_null() SKM_sk_new_null(X509_OBJECT) 1836#define sk_X509_OBJECT_new_null() SKM_sk_new_null(X509_OBJECT)
1651#define sk_X509_OBJECT_free(st) SKM_sk_free(X509_OBJECT, (st)) 1837#define sk_X509_OBJECT_free(st) SKM_sk_free(X509_OBJECT, (st))
1652#define sk_X509_OBJECT_num(st) SKM_sk_num(X509_OBJECT, (st)) 1838#define sk_X509_OBJECT_num(st) SKM_sk_num(X509_OBJECT, (st))
@@ -1668,7 +1854,7 @@ STACK_OF(type) \
1668#define sk_X509_OBJECT_sort(st) SKM_sk_sort(X509_OBJECT, (st)) 1854#define sk_X509_OBJECT_sort(st) SKM_sk_sort(X509_OBJECT, (st))
1669#define sk_X509_OBJECT_is_sorted(st) SKM_sk_is_sorted(X509_OBJECT, (st)) 1855#define sk_X509_OBJECT_is_sorted(st) SKM_sk_is_sorted(X509_OBJECT, (st))
1670 1856
1671#define sk_X509_POLICY_DATA_new(st) SKM_sk_new(X509_POLICY_DATA, (st)) 1857#define sk_X509_POLICY_DATA_new(cmp) SKM_sk_new(X509_POLICY_DATA, (cmp))
1672#define sk_X509_POLICY_DATA_new_null() SKM_sk_new_null(X509_POLICY_DATA) 1858#define sk_X509_POLICY_DATA_new_null() SKM_sk_new_null(X509_POLICY_DATA)
1673#define sk_X509_POLICY_DATA_free(st) SKM_sk_free(X509_POLICY_DATA, (st)) 1859#define sk_X509_POLICY_DATA_free(st) SKM_sk_free(X509_POLICY_DATA, (st))
1674#define sk_X509_POLICY_DATA_num(st) SKM_sk_num(X509_POLICY_DATA, (st)) 1860#define sk_X509_POLICY_DATA_num(st) SKM_sk_num(X509_POLICY_DATA, (st))
@@ -1690,7 +1876,7 @@ STACK_OF(type) \
1690#define sk_X509_POLICY_DATA_sort(st) SKM_sk_sort(X509_POLICY_DATA, (st)) 1876#define sk_X509_POLICY_DATA_sort(st) SKM_sk_sort(X509_POLICY_DATA, (st))
1691#define sk_X509_POLICY_DATA_is_sorted(st) SKM_sk_is_sorted(X509_POLICY_DATA, (st)) 1877#define sk_X509_POLICY_DATA_is_sorted(st) SKM_sk_is_sorted(X509_POLICY_DATA, (st))
1692 1878
1693#define sk_X509_POLICY_NODE_new(st) SKM_sk_new(X509_POLICY_NODE, (st)) 1879#define sk_X509_POLICY_NODE_new(cmp) SKM_sk_new(X509_POLICY_NODE, (cmp))
1694#define sk_X509_POLICY_NODE_new_null() SKM_sk_new_null(X509_POLICY_NODE) 1880#define sk_X509_POLICY_NODE_new_null() SKM_sk_new_null(X509_POLICY_NODE)
1695#define sk_X509_POLICY_NODE_free(st) SKM_sk_free(X509_POLICY_NODE, (st)) 1881#define sk_X509_POLICY_NODE_free(st) SKM_sk_free(X509_POLICY_NODE, (st))
1696#define sk_X509_POLICY_NODE_num(st) SKM_sk_num(X509_POLICY_NODE, (st)) 1882#define sk_X509_POLICY_NODE_num(st) SKM_sk_num(X509_POLICY_NODE, (st))
@@ -1712,29 +1898,7 @@ STACK_OF(type) \
1712#define sk_X509_POLICY_NODE_sort(st) SKM_sk_sort(X509_POLICY_NODE, (st)) 1898#define sk_X509_POLICY_NODE_sort(st) SKM_sk_sort(X509_POLICY_NODE, (st))
1713#define sk_X509_POLICY_NODE_is_sorted(st) SKM_sk_is_sorted(X509_POLICY_NODE, (st)) 1899#define sk_X509_POLICY_NODE_is_sorted(st) SKM_sk_is_sorted(X509_POLICY_NODE, (st))
1714 1900
1715#define sk_X509_POLICY_REF_new(st) SKM_sk_new(X509_POLICY_REF, (st)) 1901#define sk_X509_PURPOSE_new(cmp) SKM_sk_new(X509_PURPOSE, (cmp))
1716#define sk_X509_POLICY_REF_new_null() SKM_sk_new_null(X509_POLICY_REF)
1717#define sk_X509_POLICY_REF_free(st) SKM_sk_free(X509_POLICY_REF, (st))
1718#define sk_X509_POLICY_REF_num(st) SKM_sk_num(X509_POLICY_REF, (st))
1719#define sk_X509_POLICY_REF_value(st, i) SKM_sk_value(X509_POLICY_REF, (st), (i))
1720#define sk_X509_POLICY_REF_set(st, i, val) SKM_sk_set(X509_POLICY_REF, (st), (i), (val))
1721#define sk_X509_POLICY_REF_zero(st) SKM_sk_zero(X509_POLICY_REF, (st))
1722#define sk_X509_POLICY_REF_push(st, val) SKM_sk_push(X509_POLICY_REF, (st), (val))
1723#define sk_X509_POLICY_REF_unshift(st, val) SKM_sk_unshift(X509_POLICY_REF, (st), (val))
1724#define sk_X509_POLICY_REF_find(st, val) SKM_sk_find(X509_POLICY_REF, (st), (val))
1725#define sk_X509_POLICY_REF_find_ex(st, val) SKM_sk_find_ex(X509_POLICY_REF, (st), (val))
1726#define sk_X509_POLICY_REF_delete(st, i) SKM_sk_delete(X509_POLICY_REF, (st), (i))
1727#define sk_X509_POLICY_REF_delete_ptr(st, ptr) SKM_sk_delete_ptr(X509_POLICY_REF, (st), (ptr))
1728#define sk_X509_POLICY_REF_insert(st, val, i) SKM_sk_insert(X509_POLICY_REF, (st), (val), (i))
1729#define sk_X509_POLICY_REF_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(X509_POLICY_REF, (st), (cmp))
1730#define sk_X509_POLICY_REF_dup(st) SKM_sk_dup(X509_POLICY_REF, st)
1731#define sk_X509_POLICY_REF_pop_free(st, free_func) SKM_sk_pop_free(X509_POLICY_REF, (st), (free_func))
1732#define sk_X509_POLICY_REF_shift(st) SKM_sk_shift(X509_POLICY_REF, (st))
1733#define sk_X509_POLICY_REF_pop(st) SKM_sk_pop(X509_POLICY_REF, (st))
1734#define sk_X509_POLICY_REF_sort(st) SKM_sk_sort(X509_POLICY_REF, (st))
1735#define sk_X509_POLICY_REF_is_sorted(st) SKM_sk_is_sorted(X509_POLICY_REF, (st))
1736
1737#define sk_X509_PURPOSE_new(st) SKM_sk_new(X509_PURPOSE, (st))
1738#define sk_X509_PURPOSE_new_null() SKM_sk_new_null(X509_PURPOSE) 1902#define sk_X509_PURPOSE_new_null() SKM_sk_new_null(X509_PURPOSE)
1739#define sk_X509_PURPOSE_free(st) SKM_sk_free(X509_PURPOSE, (st)) 1903#define sk_X509_PURPOSE_free(st) SKM_sk_free(X509_PURPOSE, (st))
1740#define sk_X509_PURPOSE_num(st) SKM_sk_num(X509_PURPOSE, (st)) 1904#define sk_X509_PURPOSE_num(st) SKM_sk_num(X509_PURPOSE, (st))
@@ -1756,7 +1920,7 @@ STACK_OF(type) \
1756#define sk_X509_PURPOSE_sort(st) SKM_sk_sort(X509_PURPOSE, (st)) 1920#define sk_X509_PURPOSE_sort(st) SKM_sk_sort(X509_PURPOSE, (st))
1757#define sk_X509_PURPOSE_is_sorted(st) SKM_sk_is_sorted(X509_PURPOSE, (st)) 1921#define sk_X509_PURPOSE_is_sorted(st) SKM_sk_is_sorted(X509_PURPOSE, (st))
1758 1922
1759#define sk_X509_REVOKED_new(st) SKM_sk_new(X509_REVOKED, (st)) 1923#define sk_X509_REVOKED_new(cmp) SKM_sk_new(X509_REVOKED, (cmp))
1760#define sk_X509_REVOKED_new_null() SKM_sk_new_null(X509_REVOKED) 1924#define sk_X509_REVOKED_new_null() SKM_sk_new_null(X509_REVOKED)
1761#define sk_X509_REVOKED_free(st) SKM_sk_free(X509_REVOKED, (st)) 1925#define sk_X509_REVOKED_free(st) SKM_sk_free(X509_REVOKED, (st))
1762#define sk_X509_REVOKED_num(st) SKM_sk_num(X509_REVOKED, (st)) 1926#define sk_X509_REVOKED_num(st) SKM_sk_num(X509_REVOKED, (st))
@@ -1778,7 +1942,7 @@ STACK_OF(type) \
1778#define sk_X509_REVOKED_sort(st) SKM_sk_sort(X509_REVOKED, (st)) 1942#define sk_X509_REVOKED_sort(st) SKM_sk_sort(X509_REVOKED, (st))
1779#define sk_X509_REVOKED_is_sorted(st) SKM_sk_is_sorted(X509_REVOKED, (st)) 1943#define sk_X509_REVOKED_is_sorted(st) SKM_sk_is_sorted(X509_REVOKED, (st))
1780 1944
1781#define sk_X509_TRUST_new(st) SKM_sk_new(X509_TRUST, (st)) 1945#define sk_X509_TRUST_new(cmp) SKM_sk_new(X509_TRUST, (cmp))
1782#define sk_X509_TRUST_new_null() SKM_sk_new_null(X509_TRUST) 1946#define sk_X509_TRUST_new_null() SKM_sk_new_null(X509_TRUST)
1783#define sk_X509_TRUST_free(st) SKM_sk_free(X509_TRUST, (st)) 1947#define sk_X509_TRUST_free(st) SKM_sk_free(X509_TRUST, (st))
1784#define sk_X509_TRUST_num(st) SKM_sk_num(X509_TRUST, (st)) 1948#define sk_X509_TRUST_num(st) SKM_sk_num(X509_TRUST, (st))
@@ -1800,7 +1964,7 @@ STACK_OF(type) \
1800#define sk_X509_TRUST_sort(st) SKM_sk_sort(X509_TRUST, (st)) 1964#define sk_X509_TRUST_sort(st) SKM_sk_sort(X509_TRUST, (st))
1801#define sk_X509_TRUST_is_sorted(st) SKM_sk_is_sorted(X509_TRUST, (st)) 1965#define sk_X509_TRUST_is_sorted(st) SKM_sk_is_sorted(X509_TRUST, (st))
1802 1966
1803#define sk_X509_VERIFY_PARAM_new(st) SKM_sk_new(X509_VERIFY_PARAM, (st)) 1967#define sk_X509_VERIFY_PARAM_new(cmp) SKM_sk_new(X509_VERIFY_PARAM, (cmp))
1804#define sk_X509_VERIFY_PARAM_new_null() SKM_sk_new_null(X509_VERIFY_PARAM) 1968#define sk_X509_VERIFY_PARAM_new_null() SKM_sk_new_null(X509_VERIFY_PARAM)
1805#define sk_X509_VERIFY_PARAM_free(st) SKM_sk_free(X509_VERIFY_PARAM, (st)) 1969#define sk_X509_VERIFY_PARAM_free(st) SKM_sk_free(X509_VERIFY_PARAM, (st))
1806#define sk_X509_VERIFY_PARAM_num(st) SKM_sk_num(X509_VERIFY_PARAM, (st)) 1970#define sk_X509_VERIFY_PARAM_num(st) SKM_sk_num(X509_VERIFY_PARAM, (st))
@@ -1822,6 +1986,125 @@ STACK_OF(type) \
1822#define sk_X509_VERIFY_PARAM_sort(st) SKM_sk_sort(X509_VERIFY_PARAM, (st)) 1986#define sk_X509_VERIFY_PARAM_sort(st) SKM_sk_sort(X509_VERIFY_PARAM, (st))
1823#define sk_X509_VERIFY_PARAM_is_sorted(st) SKM_sk_is_sorted(X509_VERIFY_PARAM, (st)) 1987#define sk_X509_VERIFY_PARAM_is_sorted(st) SKM_sk_is_sorted(X509_VERIFY_PARAM, (st))
1824 1988
1989#define sk_nid_triple_new(cmp) SKM_sk_new(nid_triple, (cmp))
1990#define sk_nid_triple_new_null() SKM_sk_new_null(nid_triple)
1991#define sk_nid_triple_free(st) SKM_sk_free(nid_triple, (st))
1992#define sk_nid_triple_num(st) SKM_sk_num(nid_triple, (st))
1993#define sk_nid_triple_value(st, i) SKM_sk_value(nid_triple, (st), (i))
1994#define sk_nid_triple_set(st, i, val) SKM_sk_set(nid_triple, (st), (i), (val))
1995#define sk_nid_triple_zero(st) SKM_sk_zero(nid_triple, (st))
1996#define sk_nid_triple_push(st, val) SKM_sk_push(nid_triple, (st), (val))
1997#define sk_nid_triple_unshift(st, val) SKM_sk_unshift(nid_triple, (st), (val))
1998#define sk_nid_triple_find(st, val) SKM_sk_find(nid_triple, (st), (val))
1999#define sk_nid_triple_find_ex(st, val) SKM_sk_find_ex(nid_triple, (st), (val))
2000#define sk_nid_triple_delete(st, i) SKM_sk_delete(nid_triple, (st), (i))
2001#define sk_nid_triple_delete_ptr(st, ptr) SKM_sk_delete_ptr(nid_triple, (st), (ptr))
2002#define sk_nid_triple_insert(st, val, i) SKM_sk_insert(nid_triple, (st), (val), (i))
2003#define sk_nid_triple_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(nid_triple, (st), (cmp))
2004#define sk_nid_triple_dup(st) SKM_sk_dup(nid_triple, st)
2005#define sk_nid_triple_pop_free(st, free_func) SKM_sk_pop_free(nid_triple, (st), (free_func))
2006#define sk_nid_triple_shift(st) SKM_sk_shift(nid_triple, (st))
2007#define sk_nid_triple_pop(st) SKM_sk_pop(nid_triple, (st))
2008#define sk_nid_triple_sort(st) SKM_sk_sort(nid_triple, (st))
2009#define sk_nid_triple_is_sorted(st) SKM_sk_is_sorted(nid_triple, (st))
2010
2011#define sk_void_new(cmp) SKM_sk_new(void, (cmp))
2012#define sk_void_new_null() SKM_sk_new_null(void)
2013#define sk_void_free(st) SKM_sk_free(void, (st))
2014#define sk_void_num(st) SKM_sk_num(void, (st))
2015#define sk_void_value(st, i) SKM_sk_value(void, (st), (i))
2016#define sk_void_set(st, i, val) SKM_sk_set(void, (st), (i), (val))
2017#define sk_void_zero(st) SKM_sk_zero(void, (st))
2018#define sk_void_push(st, val) SKM_sk_push(void, (st), (val))
2019#define sk_void_unshift(st, val) SKM_sk_unshift(void, (st), (val))
2020#define sk_void_find(st, val) SKM_sk_find(void, (st), (val))
2021#define sk_void_find_ex(st, val) SKM_sk_find_ex(void, (st), (val))
2022#define sk_void_delete(st, i) SKM_sk_delete(void, (st), (i))
2023#define sk_void_delete_ptr(st, ptr) SKM_sk_delete_ptr(void, (st), (ptr))
2024#define sk_void_insert(st, val, i) SKM_sk_insert(void, (st), (val), (i))
2025#define sk_void_set_cmp_func(st, cmp) SKM_sk_set_cmp_func(void, (st), (cmp))
2026#define sk_void_dup(st) SKM_sk_dup(void, st)
2027#define sk_void_pop_free(st, free_func) SKM_sk_pop_free(void, (st), (free_func))
2028#define sk_void_shift(st) SKM_sk_shift(void, (st))
2029#define sk_void_pop(st) SKM_sk_pop(void, (st))
2030#define sk_void_sort(st) SKM_sk_sort(void, (st))
2031#define sk_void_is_sorted(st) SKM_sk_is_sorted(void, (st))
2032
2033#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)sk_new(CHECKED_SK_CMP_FUNC(void, cmp)))
2034#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)sk_new_null())
2035#define sk_OPENSSL_BLOCK_push(st, val) sk_push(CHECKED_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), CHECKED_PTR_OF(void, val))
2036#define sk_OPENSSL_BLOCK_find(st, val) sk_find(CHECKED_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), CHECKED_PTR_OF(void, val))
2037#define sk_OPENSSL_BLOCK_value(st, i) ((OPENSSL_BLOCK)sk_value(CHECKED_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), i))
2038#define sk_OPENSSL_BLOCK_num(st) SKM_sk_num(OPENSSL_BLOCK, st)
2039#define sk_OPENSSL_BLOCK_pop_free(st, free_func) sk_pop_free(CHECKED_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), CHECKED_SK_FREE_FUNC2(OPENSSL_BLOCK, free_func))
2040#define sk_OPENSSL_BLOCK_insert(st, val, i) sk_insert(CHECKED_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), CHECKED_PTR_OF(void, val), i)
2041#define sk_OPENSSL_BLOCK_free(st) SKM_sk_free(OPENSSL_BLOCK, st)
2042#define sk_OPENSSL_BLOCK_set(st, i, val) sk_set((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), i, CHECKED_PTR_OF(void, val))
2043#define sk_OPENSSL_BLOCK_zero(st) SKM_sk_zero(OPENSSL_BLOCK, (st))
2044#define sk_OPENSSL_BLOCK_unshift(st, val) sk_unshift((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), CHECKED_PTR_OF(void, val))
2045#define sk_OPENSSL_BLOCK_find_ex(st, val) sk_find_ex((_STACK *)CHECKED_CONST_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), CHECKED_CONST_PTR_OF(void, val))
2046#define sk_OPENSSL_BLOCK_delete(st, i) SKM_sk_delete(OPENSSL_BLOCK, (st), (i))
2047#define sk_OPENSSL_BLOCK_delete_ptr(st, ptr) (OPENSSL_BLOCK *)sk_delete_ptr((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), CHECKED_PTR_OF(void, ptr))
2048#define sk_OPENSSL_BLOCK_set_cmp_func(st, cmp) \
2049 ((int (*)(const void * const *,const void * const *)) \
2050 sk_set_cmp_func((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_BLOCK), st), CHECKED_SK_CMP_FUNC(void, cmp)))
2051#define sk_OPENSSL_BLOCK_dup(st) SKM_sk_dup(OPENSSL_BLOCK, st)
2052#define sk_OPENSSL_BLOCK_shift(st) SKM_sk_shift(OPENSSL_BLOCK, (st))
2053#define sk_OPENSSL_BLOCK_pop(st) (void *)sk_pop((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_BLOCK), st))
2054#define sk_OPENSSL_BLOCK_sort(st) SKM_sk_sort(OPENSSL_BLOCK, (st))
2055#define sk_OPENSSL_BLOCK_is_sorted(st) SKM_sk_is_sorted(OPENSSL_BLOCK, (st))
2056
2057
2058#define sk_OPENSSL_PSTRING_new(cmp) ((STACK_OF(OPENSSL_PSTRING) *)sk_new(CHECKED_SK_CMP_FUNC(OPENSSL_STRING, cmp)))
2059#define sk_OPENSSL_PSTRING_new_null() ((STACK_OF(OPENSSL_PSTRING) *)sk_new_null())
2060#define sk_OPENSSL_PSTRING_push(st, val) sk_push(CHECKED_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), CHECKED_PTR_OF(OPENSSL_STRING, val))
2061#define sk_OPENSSL_PSTRING_find(st, val) sk_find(CHECKED_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), CHECKED_PTR_OF(OPENSSL_STRING, val))
2062#define sk_OPENSSL_PSTRING_value(st, i) ((OPENSSL_PSTRING)sk_value(CHECKED_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), i))
2063#define sk_OPENSSL_PSTRING_num(st) SKM_sk_num(OPENSSL_PSTRING, st)
2064#define sk_OPENSSL_PSTRING_pop_free(st, free_func) sk_pop_free(CHECKED_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), CHECKED_SK_FREE_FUNC2(OPENSSL_PSTRING, free_func))
2065#define sk_OPENSSL_PSTRING_insert(st, val, i) sk_insert(CHECKED_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), CHECKED_PTR_OF(OPENSSL_STRING, val), i)
2066#define sk_OPENSSL_PSTRING_free(st) SKM_sk_free(OPENSSL_PSTRING, st)
2067#define sk_OPENSSL_PSTRING_set(st, i, val) sk_set((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), i, CHECKED_PTR_OF(OPENSSL_STRING, val))
2068#define sk_OPENSSL_PSTRING_zero(st) SKM_sk_zero(OPENSSL_PSTRING, (st))
2069#define sk_OPENSSL_PSTRING_unshift(st, val) sk_unshift((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), CHECKED_PTR_OF(OPENSSL_STRING, val))
2070#define sk_OPENSSL_PSTRING_find_ex(st, val) sk_find_ex((_STACK *)CHECKED_CONST_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), CHECKED_CONST_PTR_OF(OPENSSL_STRING, val))
2071#define sk_OPENSSL_PSTRING_delete(st, i) SKM_sk_delete(OPENSSL_PSTRING, (st), (i))
2072#define sk_OPENSSL_PSTRING_delete_ptr(st, ptr) (OPENSSL_PSTRING *)sk_delete_ptr((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), CHECKED_PTR_OF(OPENSSL_STRING, ptr))
2073#define sk_OPENSSL_PSTRING_set_cmp_func(st, cmp) \
2074 ((int (*)(const OPENSSL_STRING * const *,const OPENSSL_STRING * const *)) \
2075 sk_set_cmp_func((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_PSTRING), st), CHECKED_SK_CMP_FUNC(OPENSSL_STRING, cmp)))
2076#define sk_OPENSSL_PSTRING_dup(st) SKM_sk_dup(OPENSSL_PSTRING, st)
2077#define sk_OPENSSL_PSTRING_shift(st) SKM_sk_shift(OPENSSL_PSTRING, (st))
2078#define sk_OPENSSL_PSTRING_pop(st) (OPENSSL_STRING *)sk_pop((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_PSTRING), st))
2079#define sk_OPENSSL_PSTRING_sort(st) SKM_sk_sort(OPENSSL_PSTRING, (st))
2080#define sk_OPENSSL_PSTRING_is_sorted(st) SKM_sk_is_sorted(OPENSSL_PSTRING, (st))
2081
2082
2083#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)sk_new(CHECKED_SK_CMP_FUNC(char, cmp)))
2084#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)sk_new_null())
2085#define sk_OPENSSL_STRING_push(st, val) sk_push(CHECKED_PTR_OF(STACK_OF(OPENSSL_STRING), st), CHECKED_PTR_OF(char, val))
2086#define sk_OPENSSL_STRING_find(st, val) sk_find(CHECKED_PTR_OF(STACK_OF(OPENSSL_STRING), st), CHECKED_PTR_OF(char, val))
2087#define sk_OPENSSL_STRING_value(st, i) ((OPENSSL_STRING)sk_value(CHECKED_PTR_OF(STACK_OF(OPENSSL_STRING), st), i))
2088#define sk_OPENSSL_STRING_num(st) SKM_sk_num(OPENSSL_STRING, st)
2089#define sk_OPENSSL_STRING_pop_free(st, free_func) sk_pop_free(CHECKED_PTR_OF(STACK_OF(OPENSSL_STRING), st), CHECKED_SK_FREE_FUNC2(OPENSSL_STRING, free_func))
2090#define sk_OPENSSL_STRING_insert(st, val, i) sk_insert(CHECKED_PTR_OF(STACK_OF(OPENSSL_STRING), st), CHECKED_PTR_OF(char, val), i)
2091#define sk_OPENSSL_STRING_free(st) SKM_sk_free(OPENSSL_STRING, st)
2092#define sk_OPENSSL_STRING_set(st, i, val) sk_set((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_STRING), st), i, CHECKED_PTR_OF(char, val))
2093#define sk_OPENSSL_STRING_zero(st) SKM_sk_zero(OPENSSL_STRING, (st))
2094#define sk_OPENSSL_STRING_unshift(st, val) sk_unshift((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_STRING), st), CHECKED_PTR_OF(char, val))
2095#define sk_OPENSSL_STRING_find_ex(st, val) sk_find_ex((_STACK *)CHECKED_CONST_PTR_OF(STACK_OF(OPENSSL_STRING), st), CHECKED_CONST_PTR_OF(char, val))
2096#define sk_OPENSSL_STRING_delete(st, i) SKM_sk_delete(OPENSSL_STRING, (st), (i))
2097#define sk_OPENSSL_STRING_delete_ptr(st, ptr) (OPENSSL_STRING *)sk_delete_ptr((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_STRING), st), CHECKED_PTR_OF(char, ptr))
2098#define sk_OPENSSL_STRING_set_cmp_func(st, cmp) \
2099 ((int (*)(const char * const *,const char * const *)) \
2100 sk_set_cmp_func((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_STRING), st), CHECKED_SK_CMP_FUNC(char, cmp)))
2101#define sk_OPENSSL_STRING_dup(st) SKM_sk_dup(OPENSSL_STRING, st)
2102#define sk_OPENSSL_STRING_shift(st) SKM_sk_shift(OPENSSL_STRING, (st))
2103#define sk_OPENSSL_STRING_pop(st) (char *)sk_pop((_STACK *)CHECKED_PTR_OF(STACK_OF(OPENSSL_STRING), st))
2104#define sk_OPENSSL_STRING_sort(st) SKM_sk_sort(OPENSSL_STRING, (st))
2105#define sk_OPENSSL_STRING_is_sorted(st) SKM_sk_is_sorted(OPENSSL_STRING, (st))
2106
2107
1825#define d2i_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2108#define d2i_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
1826 SKM_ASN1_SET_OF_d2i(ACCESS_DESCRIPTION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2109 SKM_ASN1_SET_OF_d2i(ACCESS_DESCRIPTION, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
1827#define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2110#define i2d_ASN1_SET_OF_ACCESS_DESCRIPTION(st, pp, i2d_func, ex_tag, ex_class, is_set) \
@@ -1858,6 +2141,15 @@ STACK_OF(type) \
1858#define ASN1_seq_unpack_ASN1_TYPE(buf, len, d2i_func, free_func) \ 2141#define ASN1_seq_unpack_ASN1_TYPE(buf, len, d2i_func, free_func) \
1859 SKM_ASN1_seq_unpack(ASN1_TYPE, (buf), (len), (d2i_func), (free_func)) 2142 SKM_ASN1_seq_unpack(ASN1_TYPE, (buf), (len), (d2i_func), (free_func))
1860 2143
2144#define d2i_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2145 SKM_ASN1_SET_OF_d2i(ASN1_UTF8STRING, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2146#define i2d_ASN1_SET_OF_ASN1_UTF8STRING(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2147 SKM_ASN1_SET_OF_i2d(ASN1_UTF8STRING, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2148#define ASN1_seq_pack_ASN1_UTF8STRING(st, i2d_func, buf, len) \
2149 SKM_ASN1_seq_pack(ASN1_UTF8STRING, (st), (i2d_func), (buf), (len))
2150#define ASN1_seq_unpack_ASN1_UTF8STRING(buf, len, d2i_func, free_func) \
2151 SKM_ASN1_seq_unpack(ASN1_UTF8STRING, (buf), (len), (d2i_func), (free_func))
2152
1861#define d2i_ASN1_SET_OF_DIST_POINT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2153#define d2i_ASN1_SET_OF_DIST_POINT(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
1862 SKM_ASN1_SET_OF_d2i(DIST_POINT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2154 SKM_ASN1_SET_OF_d2i(DIST_POINT, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
1863#define i2d_ASN1_SET_OF_DIST_POINT(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2155#define i2d_ASN1_SET_OF_DIST_POINT(st, pp, i2d_func, ex_tag, ex_class, is_set) \
@@ -1867,6 +2159,24 @@ STACK_OF(type) \
1867#define ASN1_seq_unpack_DIST_POINT(buf, len, d2i_func, free_func) \ 2159#define ASN1_seq_unpack_DIST_POINT(buf, len, d2i_func, free_func) \
1868 SKM_ASN1_seq_unpack(DIST_POINT, (buf), (len), (d2i_func), (free_func)) 2160 SKM_ASN1_seq_unpack(DIST_POINT, (buf), (len), (d2i_func), (free_func))
1869 2161
2162#define d2i_ASN1_SET_OF_ESS_CERT_ID(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2163 SKM_ASN1_SET_OF_d2i(ESS_CERT_ID, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2164#define i2d_ASN1_SET_OF_ESS_CERT_ID(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2165 SKM_ASN1_SET_OF_i2d(ESS_CERT_ID, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2166#define ASN1_seq_pack_ESS_CERT_ID(st, i2d_func, buf, len) \
2167 SKM_ASN1_seq_pack(ESS_CERT_ID, (st), (i2d_func), (buf), (len))
2168#define ASN1_seq_unpack_ESS_CERT_ID(buf, len, d2i_func, free_func) \
2169 SKM_ASN1_seq_unpack(ESS_CERT_ID, (buf), (len), (d2i_func), (free_func))
2170
2171#define d2i_ASN1_SET_OF_EVP_MD(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
2172 SKM_ASN1_SET_OF_d2i(EVP_MD, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
2173#define i2d_ASN1_SET_OF_EVP_MD(st, pp, i2d_func, ex_tag, ex_class, is_set) \
2174 SKM_ASN1_SET_OF_i2d(EVP_MD, (st), (pp), (i2d_func), (ex_tag), (ex_class), (is_set))
2175#define ASN1_seq_pack_EVP_MD(st, i2d_func, buf, len) \
2176 SKM_ASN1_seq_pack(EVP_MD, (st), (i2d_func), (buf), (len))
2177#define ASN1_seq_unpack_EVP_MD(buf, len, d2i_func, free_func) \
2178 SKM_ASN1_seq_unpack(EVP_MD, (buf), (len), (d2i_func), (free_func))
2179
1870#define d2i_ASN1_SET_OF_GENERAL_NAME(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \ 2180#define d2i_ASN1_SET_OF_GENERAL_NAME(st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
1871 SKM_ASN1_SET_OF_d2i(GENERAL_NAME, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class)) 2181 SKM_ASN1_SET_OF_d2i(GENERAL_NAME, (st), (pp), (length), (d2i_func), (free_func), (ex_tag), (ex_class))
1872#define i2d_ASN1_SET_OF_GENERAL_NAME(st, pp, i2d_func, ex_tag, ex_class, is_set) \ 2182#define i2d_ASN1_SET_OF_GENERAL_NAME(st, pp, i2d_func, ex_tag, ex_class, is_set) \
@@ -2025,6 +2335,240 @@ STACK_OF(type) \
2025 2335
2026#define PKCS12_decrypt_d2i_PKCS7(algor, d2i_func, free_func, pass, passlen, oct, seq) \ 2336#define PKCS12_decrypt_d2i_PKCS7(algor, d2i_func, free_func, pass, passlen, oct, seq) \
2027 SKM_PKCS12_decrypt_d2i(PKCS7, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq)) 2337 SKM_PKCS12_decrypt_d2i(PKCS7, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq))
2338
2339#define lh_ADDED_OBJ_new() LHM_lh_new(ADDED_OBJ,added_obj)
2340#define lh_ADDED_OBJ_insert(lh,inst) LHM_lh_insert(ADDED_OBJ,lh,inst)
2341#define lh_ADDED_OBJ_retrieve(lh,inst) LHM_lh_retrieve(ADDED_OBJ,lh,inst)
2342#define lh_ADDED_OBJ_delete(lh,inst) LHM_lh_delete(ADDED_OBJ,lh,inst)
2343#define lh_ADDED_OBJ_doall(lh,fn) LHM_lh_doall(ADDED_OBJ,lh,fn)
2344#define lh_ADDED_OBJ_doall_arg(lh,fn,arg_type,arg) \
2345 LHM_lh_doall_arg(ADDED_OBJ,lh,fn,arg_type,arg)
2346#define lh_ADDED_OBJ_error(lh) LHM_lh_error(ADDED_OBJ,lh)
2347#define lh_ADDED_OBJ_num_items(lh) LHM_lh_num_items(ADDED_OBJ,lh)
2348#define lh_ADDED_OBJ_down_load(lh) LHM_lh_down_load(ADDED_OBJ,lh)
2349#define lh_ADDED_OBJ_node_stats_bio(lh,out) \
2350 LHM_lh_node_stats_bio(ADDED_OBJ,lh,out)
2351#define lh_ADDED_OBJ_node_usage_stats_bio(lh,out) \
2352 LHM_lh_node_usage_stats_bio(ADDED_OBJ,lh,out)
2353#define lh_ADDED_OBJ_stats_bio(lh,out) \
2354 LHM_lh_stats_bio(ADDED_OBJ,lh,out)
2355#define lh_ADDED_OBJ_free(lh) LHM_lh_free(ADDED_OBJ,lh)
2356
2357#define lh_APP_INFO_new() LHM_lh_new(APP_INFO,app_info)
2358#define lh_APP_INFO_insert(lh,inst) LHM_lh_insert(APP_INFO,lh,inst)
2359#define lh_APP_INFO_retrieve(lh,inst) LHM_lh_retrieve(APP_INFO,lh,inst)
2360#define lh_APP_INFO_delete(lh,inst) LHM_lh_delete(APP_INFO,lh,inst)
2361#define lh_APP_INFO_doall(lh,fn) LHM_lh_doall(APP_INFO,lh,fn)
2362#define lh_APP_INFO_doall_arg(lh,fn,arg_type,arg) \
2363 LHM_lh_doall_arg(APP_INFO,lh,fn,arg_type,arg)
2364#define lh_APP_INFO_error(lh) LHM_lh_error(APP_INFO,lh)
2365#define lh_APP_INFO_num_items(lh) LHM_lh_num_items(APP_INFO,lh)
2366#define lh_APP_INFO_down_load(lh) LHM_lh_down_load(APP_INFO,lh)
2367#define lh_APP_INFO_node_stats_bio(lh,out) \
2368 LHM_lh_node_stats_bio(APP_INFO,lh,out)
2369#define lh_APP_INFO_node_usage_stats_bio(lh,out) \
2370 LHM_lh_node_usage_stats_bio(APP_INFO,lh,out)
2371#define lh_APP_INFO_stats_bio(lh,out) \
2372 LHM_lh_stats_bio(APP_INFO,lh,out)
2373#define lh_APP_INFO_free(lh) LHM_lh_free(APP_INFO,lh)
2374
2375#define lh_CONF_VALUE_new() LHM_lh_new(CONF_VALUE,conf_value)
2376#define lh_CONF_VALUE_insert(lh,inst) LHM_lh_insert(CONF_VALUE,lh,inst)
2377#define lh_CONF_VALUE_retrieve(lh,inst) LHM_lh_retrieve(CONF_VALUE,lh,inst)
2378#define lh_CONF_VALUE_delete(lh,inst) LHM_lh_delete(CONF_VALUE,lh,inst)
2379#define lh_CONF_VALUE_doall(lh,fn) LHM_lh_doall(CONF_VALUE,lh,fn)
2380#define lh_CONF_VALUE_doall_arg(lh,fn,arg_type,arg) \
2381 LHM_lh_doall_arg(CONF_VALUE,lh,fn,arg_type,arg)
2382#define lh_CONF_VALUE_error(lh) LHM_lh_error(CONF_VALUE,lh)
2383#define lh_CONF_VALUE_num_items(lh) LHM_lh_num_items(CONF_VALUE,lh)
2384#define lh_CONF_VALUE_down_load(lh) LHM_lh_down_load(CONF_VALUE,lh)
2385#define lh_CONF_VALUE_node_stats_bio(lh,out) \
2386 LHM_lh_node_stats_bio(CONF_VALUE,lh,out)
2387#define lh_CONF_VALUE_node_usage_stats_bio(lh,out) \
2388 LHM_lh_node_usage_stats_bio(CONF_VALUE,lh,out)
2389#define lh_CONF_VALUE_stats_bio(lh,out) \
2390 LHM_lh_stats_bio(CONF_VALUE,lh,out)
2391#define lh_CONF_VALUE_free(lh) LHM_lh_free(CONF_VALUE,lh)
2392
2393#define lh_ENGINE_PILE_new() LHM_lh_new(ENGINE_PILE,engine_pile)
2394#define lh_ENGINE_PILE_insert(lh,inst) LHM_lh_insert(ENGINE_PILE,lh,inst)
2395#define lh_ENGINE_PILE_retrieve(lh,inst) LHM_lh_retrieve(ENGINE_PILE,lh,inst)
2396#define lh_ENGINE_PILE_delete(lh,inst) LHM_lh_delete(ENGINE_PILE,lh,inst)
2397#define lh_ENGINE_PILE_doall(lh,fn) LHM_lh_doall(ENGINE_PILE,lh,fn)
2398#define lh_ENGINE_PILE_doall_arg(lh,fn,arg_type,arg) \
2399 LHM_lh_doall_arg(ENGINE_PILE,lh,fn,arg_type,arg)
2400#define lh_ENGINE_PILE_error(lh) LHM_lh_error(ENGINE_PILE,lh)
2401#define lh_ENGINE_PILE_num_items(lh) LHM_lh_num_items(ENGINE_PILE,lh)
2402#define lh_ENGINE_PILE_down_load(lh) LHM_lh_down_load(ENGINE_PILE,lh)
2403#define lh_ENGINE_PILE_node_stats_bio(lh,out) \
2404 LHM_lh_node_stats_bio(ENGINE_PILE,lh,out)
2405#define lh_ENGINE_PILE_node_usage_stats_bio(lh,out) \
2406 LHM_lh_node_usage_stats_bio(ENGINE_PILE,lh,out)
2407#define lh_ENGINE_PILE_stats_bio(lh,out) \
2408 LHM_lh_stats_bio(ENGINE_PILE,lh,out)
2409#define lh_ENGINE_PILE_free(lh) LHM_lh_free(ENGINE_PILE,lh)
2410
2411#define lh_ERR_STATE_new() LHM_lh_new(ERR_STATE,err_state)
2412#define lh_ERR_STATE_insert(lh,inst) LHM_lh_insert(ERR_STATE,lh,inst)
2413#define lh_ERR_STATE_retrieve(lh,inst) LHM_lh_retrieve(ERR_STATE,lh,inst)
2414#define lh_ERR_STATE_delete(lh,inst) LHM_lh_delete(ERR_STATE,lh,inst)
2415#define lh_ERR_STATE_doall(lh,fn) LHM_lh_doall(ERR_STATE,lh,fn)
2416#define lh_ERR_STATE_doall_arg(lh,fn,arg_type,arg) \
2417 LHM_lh_doall_arg(ERR_STATE,lh,fn,arg_type,arg)
2418#define lh_ERR_STATE_error(lh) LHM_lh_error(ERR_STATE,lh)
2419#define lh_ERR_STATE_num_items(lh) LHM_lh_num_items(ERR_STATE,lh)
2420#define lh_ERR_STATE_down_load(lh) LHM_lh_down_load(ERR_STATE,lh)
2421#define lh_ERR_STATE_node_stats_bio(lh,out) \
2422 LHM_lh_node_stats_bio(ERR_STATE,lh,out)
2423#define lh_ERR_STATE_node_usage_stats_bio(lh,out) \
2424 LHM_lh_node_usage_stats_bio(ERR_STATE,lh,out)
2425#define lh_ERR_STATE_stats_bio(lh,out) \
2426 LHM_lh_stats_bio(ERR_STATE,lh,out)
2427#define lh_ERR_STATE_free(lh) LHM_lh_free(ERR_STATE,lh)
2428
2429#define lh_ERR_STRING_DATA_new() LHM_lh_new(ERR_STRING_DATA,err_string_data)
2430#define lh_ERR_STRING_DATA_insert(lh,inst) LHM_lh_insert(ERR_STRING_DATA,lh,inst)
2431#define lh_ERR_STRING_DATA_retrieve(lh,inst) LHM_lh_retrieve(ERR_STRING_DATA,lh,inst)
2432#define lh_ERR_STRING_DATA_delete(lh,inst) LHM_lh_delete(ERR_STRING_DATA,lh,inst)
2433#define lh_ERR_STRING_DATA_doall(lh,fn) LHM_lh_doall(ERR_STRING_DATA,lh,fn)
2434#define lh_ERR_STRING_DATA_doall_arg(lh,fn,arg_type,arg) \
2435 LHM_lh_doall_arg(ERR_STRING_DATA,lh,fn,arg_type,arg)
2436#define lh_ERR_STRING_DATA_error(lh) LHM_lh_error(ERR_STRING_DATA,lh)
2437#define lh_ERR_STRING_DATA_num_items(lh) LHM_lh_num_items(ERR_STRING_DATA,lh)
2438#define lh_ERR_STRING_DATA_down_load(lh) LHM_lh_down_load(ERR_STRING_DATA,lh)
2439#define lh_ERR_STRING_DATA_node_stats_bio(lh,out) \
2440 LHM_lh_node_stats_bio(ERR_STRING_DATA,lh,out)
2441#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh,out) \
2442 LHM_lh_node_usage_stats_bio(ERR_STRING_DATA,lh,out)
2443#define lh_ERR_STRING_DATA_stats_bio(lh,out) \
2444 LHM_lh_stats_bio(ERR_STRING_DATA,lh,out)
2445#define lh_ERR_STRING_DATA_free(lh) LHM_lh_free(ERR_STRING_DATA,lh)
2446
2447#define lh_EX_CLASS_ITEM_new() LHM_lh_new(EX_CLASS_ITEM,ex_class_item)
2448#define lh_EX_CLASS_ITEM_insert(lh,inst) LHM_lh_insert(EX_CLASS_ITEM,lh,inst)
2449#define lh_EX_CLASS_ITEM_retrieve(lh,inst) LHM_lh_retrieve(EX_CLASS_ITEM,lh,inst)
2450#define lh_EX_CLASS_ITEM_delete(lh,inst) LHM_lh_delete(EX_CLASS_ITEM,lh,inst)
2451#define lh_EX_CLASS_ITEM_doall(lh,fn) LHM_lh_doall(EX_CLASS_ITEM,lh,fn)
2452#define lh_EX_CLASS_ITEM_doall_arg(lh,fn,arg_type,arg) \
2453 LHM_lh_doall_arg(EX_CLASS_ITEM,lh,fn,arg_type,arg)
2454#define lh_EX_CLASS_ITEM_error(lh) LHM_lh_error(EX_CLASS_ITEM,lh)
2455#define lh_EX_CLASS_ITEM_num_items(lh) LHM_lh_num_items(EX_CLASS_ITEM,lh)
2456#define lh_EX_CLASS_ITEM_down_load(lh) LHM_lh_down_load(EX_CLASS_ITEM,lh)
2457#define lh_EX_CLASS_ITEM_node_stats_bio(lh,out) \
2458 LHM_lh_node_stats_bio(EX_CLASS_ITEM,lh,out)
2459#define lh_EX_CLASS_ITEM_node_usage_stats_bio(lh,out) \
2460 LHM_lh_node_usage_stats_bio(EX_CLASS_ITEM,lh,out)
2461#define lh_EX_CLASS_ITEM_stats_bio(lh,out) \
2462 LHM_lh_stats_bio(EX_CLASS_ITEM,lh,out)
2463#define lh_EX_CLASS_ITEM_free(lh) LHM_lh_free(EX_CLASS_ITEM,lh)
2464
2465#define lh_FUNCTION_new() LHM_lh_new(FUNCTION,function)
2466#define lh_FUNCTION_insert(lh,inst) LHM_lh_insert(FUNCTION,lh,inst)
2467#define lh_FUNCTION_retrieve(lh,inst) LHM_lh_retrieve(FUNCTION,lh,inst)
2468#define lh_FUNCTION_delete(lh,inst) LHM_lh_delete(FUNCTION,lh,inst)
2469#define lh_FUNCTION_doall(lh,fn) LHM_lh_doall(FUNCTION,lh,fn)
2470#define lh_FUNCTION_doall_arg(lh,fn,arg_type,arg) \
2471 LHM_lh_doall_arg(FUNCTION,lh,fn,arg_type,arg)
2472#define lh_FUNCTION_error(lh) LHM_lh_error(FUNCTION,lh)
2473#define lh_FUNCTION_num_items(lh) LHM_lh_num_items(FUNCTION,lh)
2474#define lh_FUNCTION_down_load(lh) LHM_lh_down_load(FUNCTION,lh)
2475#define lh_FUNCTION_node_stats_bio(lh,out) \
2476 LHM_lh_node_stats_bio(FUNCTION,lh,out)
2477#define lh_FUNCTION_node_usage_stats_bio(lh,out) \
2478 LHM_lh_node_usage_stats_bio(FUNCTION,lh,out)
2479#define lh_FUNCTION_stats_bio(lh,out) \
2480 LHM_lh_stats_bio(FUNCTION,lh,out)
2481#define lh_FUNCTION_free(lh) LHM_lh_free(FUNCTION,lh)
2482
2483#define lh_MEM_new() LHM_lh_new(MEM,mem)
2484#define lh_MEM_insert(lh,inst) LHM_lh_insert(MEM,lh,inst)
2485#define lh_MEM_retrieve(lh,inst) LHM_lh_retrieve(MEM,lh,inst)
2486#define lh_MEM_delete(lh,inst) LHM_lh_delete(MEM,lh,inst)
2487#define lh_MEM_doall(lh,fn) LHM_lh_doall(MEM,lh,fn)
2488#define lh_MEM_doall_arg(lh,fn,arg_type,arg) \
2489 LHM_lh_doall_arg(MEM,lh,fn,arg_type,arg)
2490#define lh_MEM_error(lh) LHM_lh_error(MEM,lh)
2491#define lh_MEM_num_items(lh) LHM_lh_num_items(MEM,lh)
2492#define lh_MEM_down_load(lh) LHM_lh_down_load(MEM,lh)
2493#define lh_MEM_node_stats_bio(lh,out) \
2494 LHM_lh_node_stats_bio(MEM,lh,out)
2495#define lh_MEM_node_usage_stats_bio(lh,out) \
2496 LHM_lh_node_usage_stats_bio(MEM,lh,out)
2497#define lh_MEM_stats_bio(lh,out) \
2498 LHM_lh_stats_bio(MEM,lh,out)
2499#define lh_MEM_free(lh) LHM_lh_free(MEM,lh)
2500
2501#define lh_OBJ_NAME_new() LHM_lh_new(OBJ_NAME,obj_name)
2502#define lh_OBJ_NAME_insert(lh,inst) LHM_lh_insert(OBJ_NAME,lh,inst)
2503#define lh_OBJ_NAME_retrieve(lh,inst) LHM_lh_retrieve(OBJ_NAME,lh,inst)
2504#define lh_OBJ_NAME_delete(lh,inst) LHM_lh_delete(OBJ_NAME,lh,inst)
2505#define lh_OBJ_NAME_doall(lh,fn) LHM_lh_doall(OBJ_NAME,lh,fn)
2506#define lh_OBJ_NAME_doall_arg(lh,fn,arg_type,arg) \
2507 LHM_lh_doall_arg(OBJ_NAME,lh,fn,arg_type,arg)
2508#define lh_OBJ_NAME_error(lh) LHM_lh_error(OBJ_NAME,lh)
2509#define lh_OBJ_NAME_num_items(lh) LHM_lh_num_items(OBJ_NAME,lh)
2510#define lh_OBJ_NAME_down_load(lh) LHM_lh_down_load(OBJ_NAME,lh)
2511#define lh_OBJ_NAME_node_stats_bio(lh,out) \
2512 LHM_lh_node_stats_bio(OBJ_NAME,lh,out)
2513#define lh_OBJ_NAME_node_usage_stats_bio(lh,out) \
2514 LHM_lh_node_usage_stats_bio(OBJ_NAME,lh,out)
2515#define lh_OBJ_NAME_stats_bio(lh,out) \
2516 LHM_lh_stats_bio(OBJ_NAME,lh,out)
2517#define lh_OBJ_NAME_free(lh) LHM_lh_free(OBJ_NAME,lh)
2518
2519#define lh_OPENSSL_CSTRING_new() LHM_lh_new(OPENSSL_CSTRING,openssl_cstring)
2520#define lh_OPENSSL_CSTRING_insert(lh,inst) LHM_lh_insert(OPENSSL_CSTRING,lh,inst)
2521#define lh_OPENSSL_CSTRING_retrieve(lh,inst) LHM_lh_retrieve(OPENSSL_CSTRING,lh,inst)
2522#define lh_OPENSSL_CSTRING_delete(lh,inst) LHM_lh_delete(OPENSSL_CSTRING,lh,inst)
2523#define lh_OPENSSL_CSTRING_doall(lh,fn) LHM_lh_doall(OPENSSL_CSTRING,lh,fn)
2524#define lh_OPENSSL_CSTRING_doall_arg(lh,fn,arg_type,arg) \
2525 LHM_lh_doall_arg(OPENSSL_CSTRING,lh,fn,arg_type,arg)
2526#define lh_OPENSSL_CSTRING_error(lh) LHM_lh_error(OPENSSL_CSTRING,lh)
2527#define lh_OPENSSL_CSTRING_num_items(lh) LHM_lh_num_items(OPENSSL_CSTRING,lh)
2528#define lh_OPENSSL_CSTRING_down_load(lh) LHM_lh_down_load(OPENSSL_CSTRING,lh)
2529#define lh_OPENSSL_CSTRING_node_stats_bio(lh,out) \
2530 LHM_lh_node_stats_bio(OPENSSL_CSTRING,lh,out)
2531#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh,out) \
2532 LHM_lh_node_usage_stats_bio(OPENSSL_CSTRING,lh,out)
2533#define lh_OPENSSL_CSTRING_stats_bio(lh,out) \
2534 LHM_lh_stats_bio(OPENSSL_CSTRING,lh,out)
2535#define lh_OPENSSL_CSTRING_free(lh) LHM_lh_free(OPENSSL_CSTRING,lh)
2536
2537#define lh_OPENSSL_STRING_new() LHM_lh_new(OPENSSL_STRING,openssl_string)
2538#define lh_OPENSSL_STRING_insert(lh,inst) LHM_lh_insert(OPENSSL_STRING,lh,inst)
2539#define lh_OPENSSL_STRING_retrieve(lh,inst) LHM_lh_retrieve(OPENSSL_STRING,lh,inst)
2540#define lh_OPENSSL_STRING_delete(lh,inst) LHM_lh_delete(OPENSSL_STRING,lh,inst)
2541#define lh_OPENSSL_STRING_doall(lh,fn) LHM_lh_doall(OPENSSL_STRING,lh,fn)
2542#define lh_OPENSSL_STRING_doall_arg(lh,fn,arg_type,arg) \
2543 LHM_lh_doall_arg(OPENSSL_STRING,lh,fn,arg_type,arg)
2544#define lh_OPENSSL_STRING_error(lh) LHM_lh_error(OPENSSL_STRING,lh)
2545#define lh_OPENSSL_STRING_num_items(lh) LHM_lh_num_items(OPENSSL_STRING,lh)
2546#define lh_OPENSSL_STRING_down_load(lh) LHM_lh_down_load(OPENSSL_STRING,lh)
2547#define lh_OPENSSL_STRING_node_stats_bio(lh,out) \
2548 LHM_lh_node_stats_bio(OPENSSL_STRING,lh,out)
2549#define lh_OPENSSL_STRING_node_usage_stats_bio(lh,out) \
2550 LHM_lh_node_usage_stats_bio(OPENSSL_STRING,lh,out)
2551#define lh_OPENSSL_STRING_stats_bio(lh,out) \
2552 LHM_lh_stats_bio(OPENSSL_STRING,lh,out)
2553#define lh_OPENSSL_STRING_free(lh) LHM_lh_free(OPENSSL_STRING,lh)
2554
2555#define lh_SSL_SESSION_new() LHM_lh_new(SSL_SESSION,ssl_session)
2556#define lh_SSL_SESSION_insert(lh,inst) LHM_lh_insert(SSL_SESSION,lh,inst)
2557#define lh_SSL_SESSION_retrieve(lh,inst) LHM_lh_retrieve(SSL_SESSION,lh,inst)
2558#define lh_SSL_SESSION_delete(lh,inst) LHM_lh_delete(SSL_SESSION,lh,inst)
2559#define lh_SSL_SESSION_doall(lh,fn) LHM_lh_doall(SSL_SESSION,lh,fn)
2560#define lh_SSL_SESSION_doall_arg(lh,fn,arg_type,arg) \
2561 LHM_lh_doall_arg(SSL_SESSION,lh,fn,arg_type,arg)
2562#define lh_SSL_SESSION_error(lh) LHM_lh_error(SSL_SESSION,lh)
2563#define lh_SSL_SESSION_num_items(lh) LHM_lh_num_items(SSL_SESSION,lh)
2564#define lh_SSL_SESSION_down_load(lh) LHM_lh_down_load(SSL_SESSION,lh)
2565#define lh_SSL_SESSION_node_stats_bio(lh,out) \
2566 LHM_lh_node_stats_bio(SSL_SESSION,lh,out)
2567#define lh_SSL_SESSION_node_usage_stats_bio(lh,out) \
2568 LHM_lh_node_usage_stats_bio(SSL_SESSION,lh,out)
2569#define lh_SSL_SESSION_stats_bio(lh,out) \
2570 LHM_lh_stats_bio(SSL_SESSION,lh,out)
2571#define lh_SSL_SESSION_free(lh) LHM_lh_free(SSL_SESSION,lh)
2028/* End of util/mkstack.pl block, you may now edit :-) */ 2572/* End of util/mkstack.pl block, you may now edit :-) */
2029 2573
2030#endif /* !defined HEADER_SAFESTACK_H */ 2574#endif /* !defined HEADER_SAFESTACK_H */
diff --git a/src/lib/libssl/src/crypto/stack/stack.c b/src/lib/libssl/src/crypto/stack/stack.c
index 378bd7c796..76cf1a1168 100644
--- a/src/lib/libssl/src/crypto/stack/stack.c
+++ b/src/lib/libssl/src/crypto/stack/stack.c
@@ -77,10 +77,10 @@ const char STACK_version[]="Stack" OPENSSL_VERSION_PTEXT;
77 77
78#include <errno.h> 78#include <errno.h>
79 79
80int (*sk_set_cmp_func(STACK *sk, int (*c)(const char * const *,const char * const *))) 80int (*sk_set_cmp_func(_STACK *sk, int (*c)(const void *, const void *)))
81 (const char * const *, const char * const *) 81 (const void *, const void *)
82 { 82 {
83 int (*old)(const char * const *,const char * const *)=sk->comp; 83 int (*old)(const void *,const void *)=sk->comp;
84 84
85 if (sk->comp != c) 85 if (sk->comp != c)
86 sk->sorted=0; 86 sk->sorted=0;
@@ -89,9 +89,9 @@ int (*sk_set_cmp_func(STACK *sk, int (*c)(const char * const *,const char * cons
89 return old; 89 return old;
90 } 90 }
91 91
92STACK *sk_dup(STACK *sk) 92_STACK *sk_dup(_STACK *sk)
93 { 93 {
94 STACK *ret; 94 _STACK *ret;
95 char **s; 95 char **s;
96 96
97 if ((ret=sk_new(sk->comp)) == NULL) goto err; 97 if ((ret=sk_new(sk->comp)) == NULL) goto err;
@@ -112,19 +112,19 @@ err:
112 return(NULL); 112 return(NULL);
113 } 113 }
114 114
115STACK *sk_new_null(void) 115_STACK *sk_new_null(void)
116 { 116 {
117 return sk_new((int (*)(const char * const *, const char * const *))0); 117 return sk_new((int (*)(const void *, const void *))0);
118 } 118 }
119 119
120STACK *sk_new(int (*c)(const char * const *, const char * const *)) 120_STACK *sk_new(int (*c)(const void *, const void *))
121 { 121 {
122 STACK *ret; 122 _STACK *ret;
123 int i; 123 int i;
124 124
125 if ((ret=(STACK *)OPENSSL_malloc(sizeof(STACK))) == NULL) 125 if ((ret=OPENSSL_malloc(sizeof(_STACK))) == NULL)
126 goto err; 126 goto err;
127 if ((ret->data=(char **)OPENSSL_malloc(sizeof(char *)*MIN_NODES)) == NULL) 127 if ((ret->data=OPENSSL_malloc(sizeof(char *)*MIN_NODES)) == NULL)
128 goto err; 128 goto err;
129 for (i=0; i<MIN_NODES; i++) 129 for (i=0; i<MIN_NODES; i++)
130 ret->data[i]=NULL; 130 ret->data[i]=NULL;
@@ -139,14 +139,14 @@ err:
139 return(NULL); 139 return(NULL);
140 } 140 }
141 141
142int sk_insert(STACK *st, char *data, int loc) 142int sk_insert(_STACK *st, void *data, int loc)
143 { 143 {
144 char **s; 144 char **s;
145 145
146 if(st == NULL) return 0; 146 if(st == NULL) return 0;
147 if (st->num_alloc <= st->num+1) 147 if (st->num_alloc <= st->num+1)
148 { 148 {
149 s=(char **)OPENSSL_realloc((char *)st->data, 149 s=OPENSSL_realloc((char *)st->data,
150 (unsigned int)sizeof(char *)*st->num_alloc*2); 150 (unsigned int)sizeof(char *)*st->num_alloc*2);
151 if (s == NULL) 151 if (s == NULL)
152 return(0); 152 return(0);
@@ -160,14 +160,14 @@ int sk_insert(STACK *st, char *data, int loc)
160 int i; 160 int i;
161 char **f,**t; 161 char **f,**t;
162 162
163 f=(char **)st->data; 163 f=st->data;
164 t=(char **)&(st->data[1]); 164 t=&(st->data[1]);
165 for (i=st->num; i>=loc; i--) 165 for (i=st->num; i>=loc; i--)
166 t[i]=f[i]; 166 t[i]=f[i];
167 167
168#ifdef undef /* no memmove on sunos :-( */ 168#ifdef undef /* no memmove on sunos :-( */
169 memmove( (char *)&(st->data[loc+1]), 169 memmove(&(st->data[loc+1]),
170 (char *)&(st->data[loc]), 170 &(st->data[loc]),
171 sizeof(char *)*(st->num-loc)); 171 sizeof(char *)*(st->num-loc));
172#endif 172#endif
173 st->data[loc]=data; 173 st->data[loc]=data;
@@ -177,7 +177,7 @@ int sk_insert(STACK *st, char *data, int loc)
177 return(st->num); 177 return(st->num);
178 } 178 }
179 179
180char *sk_delete_ptr(STACK *st, char *p) 180void *sk_delete_ptr(_STACK *st, void *p)
181 { 181 {
182 int i; 182 int i;
183 183
@@ -187,7 +187,7 @@ char *sk_delete_ptr(STACK *st, char *p)
187 return(NULL); 187 return(NULL);
188 } 188 }
189 189
190char *sk_delete(STACK *st, int loc) 190void *sk_delete(_STACK *st, int loc)
191 { 191 {
192 char *ret; 192 char *ret;
193 int i,j; 193 int i,j;
@@ -210,11 +210,11 @@ char *sk_delete(STACK *st, int loc)
210 return(ret); 210 return(ret);
211 } 211 }
212 212
213static int internal_find(STACK *st, char *data, int ret_val_options) 213static int internal_find(_STACK *st, void *data, int ret_val_options)
214 { 214 {
215 char **r; 215 const void * const *r;
216 int i; 216 int i;
217 int (*comp_func)(const void *,const void *); 217
218 if(st == NULL) return -1; 218 if(st == NULL) return -1;
219 219
220 if (st->comp == NULL) 220 if (st->comp == NULL)
@@ -226,53 +226,46 @@ static int internal_find(STACK *st, char *data, int ret_val_options)
226 } 226 }
227 sk_sort(st); 227 sk_sort(st);
228 if (data == NULL) return(-1); 228 if (data == NULL) return(-1);
229 /* This (and the "qsort" below) are the two places in OpenSSL 229 r=OBJ_bsearch_ex_(&data,st->data,st->num,sizeof(void *),st->comp,
230 * where we need to convert from our standard (type **,type **) 230 ret_val_options);
231 * compare callback type to the (void *,void *) type required by
232 * bsearch. However, the "data" it is being called(back) with are
233 * not (type *) pointers, but the *pointers* to (type *) pointers,
234 * so we get our extra level of pointer dereferencing that way. */
235 comp_func=(int (*)(const void *,const void *))(st->comp);
236 r=(char **)OBJ_bsearch_ex((char *)&data,(char *)st->data,
237 st->num,sizeof(char *),comp_func,ret_val_options);
238 if (r == NULL) return(-1); 231 if (r == NULL) return(-1);
239 return((int)(r-st->data)); 232 return (int)((char **)r-st->data);
240 } 233 }
241 234
242int sk_find(STACK *st, char *data) 235int sk_find(_STACK *st, void *data)
243 { 236 {
244 return internal_find(st, data, OBJ_BSEARCH_FIRST_VALUE_ON_MATCH); 237 return internal_find(st, data, OBJ_BSEARCH_FIRST_VALUE_ON_MATCH);
245 } 238 }
246int sk_find_ex(STACK *st, char *data) 239int sk_find_ex(_STACK *st, void *data)
247 { 240 {
248 return internal_find(st, data, OBJ_BSEARCH_VALUE_ON_NOMATCH); 241 return internal_find(st, data, OBJ_BSEARCH_VALUE_ON_NOMATCH);
249 } 242 }
250 243
251int sk_push(STACK *st, char *data) 244int sk_push(_STACK *st, void *data)
252 { 245 {
253 return(sk_insert(st,data,st->num)); 246 return(sk_insert(st,data,st->num));
254 } 247 }
255 248
256int sk_unshift(STACK *st, char *data) 249int sk_unshift(_STACK *st, void *data)
257 { 250 {
258 return(sk_insert(st,data,0)); 251 return(sk_insert(st,data,0));
259 } 252 }
260 253
261char *sk_shift(STACK *st) 254void *sk_shift(_STACK *st)
262 { 255 {
263 if (st == NULL) return(NULL); 256 if (st == NULL) return(NULL);
264 if (st->num <= 0) return(NULL); 257 if (st->num <= 0) return(NULL);
265 return(sk_delete(st,0)); 258 return(sk_delete(st,0));
266 } 259 }
267 260
268char *sk_pop(STACK *st) 261void *sk_pop(_STACK *st)
269 { 262 {
270 if (st == NULL) return(NULL); 263 if (st == NULL) return(NULL);
271 if (st->num <= 0) return(NULL); 264 if (st->num <= 0) return(NULL);
272 return(sk_delete(st,st->num-1)); 265 return(sk_delete(st,st->num-1));
273 } 266 }
274 267
275void sk_zero(STACK *st) 268void sk_zero(_STACK *st)
276 { 269 {
277 if (st == NULL) return; 270 if (st == NULL) return;
278 if (st->num <= 0) return; 271 if (st->num <= 0) return;
@@ -280,7 +273,7 @@ void sk_zero(STACK *st)
280 st->num=0; 273 st->num=0;
281 } 274 }
282 275
283void sk_pop_free(STACK *st, void (*func)(void *)) 276void sk_pop_free(_STACK *st, void (*func)(void *))
284 { 277 {
285 int i; 278 int i;
286 279
@@ -291,32 +284,32 @@ void sk_pop_free(STACK *st, void (*func)(void *))
291 sk_free(st); 284 sk_free(st);
292 } 285 }
293 286
294void sk_free(STACK *st) 287void sk_free(_STACK *st)
295 { 288 {
296 if (st == NULL) return; 289 if (st == NULL) return;
297 if (st->data != NULL) OPENSSL_free(st->data); 290 if (st->data != NULL) OPENSSL_free(st->data);
298 OPENSSL_free(st); 291 OPENSSL_free(st);
299 } 292 }
300 293
301int sk_num(const STACK *st) 294int sk_num(const _STACK *st)
302{ 295{
303 if(st == NULL) return -1; 296 if(st == NULL) return -1;
304 return st->num; 297 return st->num;
305} 298}
306 299
307char *sk_value(const STACK *st, int i) 300void *sk_value(const _STACK *st, int i)
308{ 301{
309 if(!st || (i < 0) || (i >= st->num)) return NULL; 302 if(!st || (i < 0) || (i >= st->num)) return NULL;
310 return st->data[i]; 303 return st->data[i];
311} 304}
312 305
313char *sk_set(STACK *st, int i, char *value) 306void *sk_set(_STACK *st, int i, void *value)
314{ 307{
315 if(!st || (i < 0) || (i >= st->num)) return NULL; 308 if(!st || (i < 0) || (i >= st->num)) return NULL;
316 return (st->data[i] = value); 309 return (st->data[i] = value);
317} 310}
318 311
319void sk_sort(STACK *st) 312void sk_sort(_STACK *st)
320 { 313 {
321 if (st && !st->sorted) 314 if (st && !st->sorted)
322 { 315 {
@@ -333,7 +326,7 @@ void sk_sort(STACK *st)
333 } 326 }
334 } 327 }
335 328
336int sk_is_sorted(const STACK *st) 329int sk_is_sorted(const _STACK *st)
337 { 330 {
338 if (!st) 331 if (!st)
339 return 1; 332 return 1;
diff --git a/src/lib/libssl/src/crypto/stack/stack.h b/src/lib/libssl/src/crypto/stack/stack.h
index 5cbb116a8b..ce35e554eb 100644
--- a/src/lib/libssl/src/crypto/stack/stack.h
+++ b/src/lib/libssl/src/crypto/stack/stack.h
@@ -70,37 +70,36 @@ typedef struct stack_st
70 int sorted; 70 int sorted;
71 71
72 int num_alloc; 72 int num_alloc;
73 int (*comp)(const char * const *, const char * const *); 73 int (*comp)(const void *, const void *);
74 } STACK; 74 } _STACK; /* Use STACK_OF(...) instead */
75 75
76#define M_sk_num(sk) ((sk) ? (sk)->num:-1) 76#define M_sk_num(sk) ((sk) ? (sk)->num:-1)
77#define M_sk_value(sk,n) ((sk) ? (sk)->data[n] : NULL) 77#define M_sk_value(sk,n) ((sk) ? (sk)->data[n] : NULL)
78 78
79int sk_num(const STACK *); 79int sk_num(const _STACK *);
80char *sk_value(const STACK *, int); 80void *sk_value(const _STACK *, int);
81 81
82char *sk_set(STACK *, int, char *); 82void *sk_set(_STACK *, int, void *);
83 83
84STACK *sk_new(int (*cmp)(const char * const *, const char * const *)); 84_STACK *sk_new(int (*cmp)(const void *, const void *));
85STACK *sk_new_null(void); 85_STACK *sk_new_null(void);
86void sk_free(STACK *); 86void sk_free(_STACK *);
87void sk_pop_free(STACK *st, void (*func)(void *)); 87void sk_pop_free(_STACK *st, void (*func)(void *));
88int sk_insert(STACK *sk,char *data,int where); 88int sk_insert(_STACK *sk, void *data, int where);
89char *sk_delete(STACK *st,int loc); 89void *sk_delete(_STACK *st, int loc);
90char *sk_delete_ptr(STACK *st, char *p); 90void *sk_delete_ptr(_STACK *st, void *p);
91int sk_find(STACK *st,char *data); 91int sk_find(_STACK *st, void *data);
92int sk_find_ex(STACK *st,char *data); 92int sk_find_ex(_STACK *st, void *data);
93int sk_push(STACK *st,char *data); 93int sk_push(_STACK *st, void *data);
94int sk_unshift(STACK *st,char *data); 94int sk_unshift(_STACK *st, void *data);
95char *sk_shift(STACK *st); 95void *sk_shift(_STACK *st);
96char *sk_pop(STACK *st); 96void *sk_pop(_STACK *st);
97void sk_zero(STACK *st); 97void sk_zero(_STACK *st);
98int (*sk_set_cmp_func(STACK *sk, int (*c)(const char * const *, 98int (*sk_set_cmp_func(_STACK *sk, int (*c)(const void *, const void *)))
99 const char * const *))) 99 (const void *, const void *);
100 (const char * const *, const char * const *); 100_STACK *sk_dup(_STACK *st);
101STACK *sk_dup(STACK *st); 101void sk_sort(_STACK *st);
102void sk_sort(STACK *st); 102int sk_is_sorted(const _STACK *st);
103int sk_is_sorted(const STACK *st);
104 103
105#ifdef __cplusplus 104#ifdef __cplusplus
106} 105}
diff --git a/src/lib/libssl/src/crypto/symhacks.h b/src/lib/libssl/src/crypto/symhacks.h
index 8728e6124d..3fd4a81692 100644
--- a/src/lib/libssl/src/crypto/symhacks.h
+++ b/src/lib/libssl/src/crypto/symhacks.h
@@ -60,12 +60,13 @@
60/* Hacks to solve the problem with linkers incapable of handling very long 60/* Hacks to solve the problem with linkers incapable of handling very long
61 symbol names. In the case of VMS, the limit is 31 characters on VMS for 61 symbol names. In the case of VMS, the limit is 31 characters on VMS for
62 VAX. */ 62 VAX. */
63/* Note that this affects util/libeay.num and util/ssleay.num... you may
64 change those manually, but that's not recommended, as those files are
65 controlled centrally and updated on Unix, and the central definition
66 may disagree with yours, which in turn may come with shareable library
67 incompatibilities. */
63#ifdef OPENSSL_SYS_VMS 68#ifdef OPENSSL_SYS_VMS
64 69
65/* Hack a long name in crypto/cryptlib.c */
66#undef int_CRYPTO_set_do_dynlock_callback
67#define int_CRYPTO_set_do_dynlock_callback int_CRYPTO_set_do_dynlock_cb
68
69/* Hack a long name in crypto/ex_data.c */ 70/* Hack a long name in crypto/ex_data.c */
70#undef CRYPTO_get_ex_data_implementation 71#undef CRYPTO_get_ex_data_implementation
71#define CRYPTO_get_ex_data_implementation CRYPTO_get_ex_data_impl 72#define CRYPTO_get_ex_data_implementation CRYPTO_get_ex_data_impl
@@ -137,6 +138,8 @@
137#define X509_policy_node_get0_qualifiers X509_pcy_node_get0_qualifiers 138#define X509_policy_node_get0_qualifiers X509_pcy_node_get0_qualifiers
138#undef X509_STORE_CTX_get_explicit_policy 139#undef X509_STORE_CTX_get_explicit_policy
139#define X509_STORE_CTX_get_explicit_policy X509_STORE_CTX_get_expl_policy 140#define X509_STORE_CTX_get_explicit_policy X509_STORE_CTX_get_expl_policy
141#undef X509_STORE_CTX_get0_current_issuer
142#define X509_STORE_CTX_get0_current_issuer X509_STORE_CTX_get0_cur_issuer
140 143
141/* Hack some long CRYPTO names */ 144/* Hack some long CRYPTO names */
142#undef CRYPTO_set_dynlock_destroy_callback 145#undef CRYPTO_set_dynlock_destroy_callback
@@ -144,9 +147,9 @@
144#undef CRYPTO_set_dynlock_create_callback 147#undef CRYPTO_set_dynlock_create_callback
145#define CRYPTO_set_dynlock_create_callback CRYPTO_set_dynlock_create_cb 148#define CRYPTO_set_dynlock_create_callback CRYPTO_set_dynlock_create_cb
146#undef CRYPTO_set_dynlock_lock_callback 149#undef CRYPTO_set_dynlock_lock_callback
147#define CRYPTO_set_dynlock_lock_callback CRYPTO_set_dynlock_lock_cb 150#define CRYPTO_set_dynlock_lock_callback CRYPTO_set_dynlock_lock_cb
148#undef CRYPTO_get_dynlock_lock_callback 151#undef CRYPTO_get_dynlock_lock_callback
149#define CRYPTO_get_dynlock_lock_callback CRYPTO_get_dynlock_lock_cb 152#define CRYPTO_get_dynlock_lock_callback CRYPTO_get_dynlock_lock_cb
150#undef CRYPTO_get_dynlock_destroy_callback 153#undef CRYPTO_get_dynlock_destroy_callback
151#define CRYPTO_get_dynlock_destroy_callback CRYPTO_get_dynlock_destroy_cb 154#define CRYPTO_get_dynlock_destroy_callback CRYPTO_get_dynlock_destroy_cb
152#undef CRYPTO_get_dynlock_create_callback 155#undef CRYPTO_get_dynlock_create_callback
@@ -158,7 +161,7 @@
158 161
159/* Hack some long SSL names */ 162/* Hack some long SSL names */
160#undef SSL_CTX_set_default_verify_paths 163#undef SSL_CTX_set_default_verify_paths
161#define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths 164#define SSL_CTX_set_default_verify_paths SSL_CTX_set_def_verify_paths
162#undef SSL_get_ex_data_X509_STORE_CTX_idx 165#undef SSL_get_ex_data_X509_STORE_CTX_idx
163#define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_d_X509_STORE_CTX_idx 166#define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_d_X509_STORE_CTX_idx
164#undef SSL_add_file_cert_subjects_to_stack 167#undef SSL_add_file_cert_subjects_to_stack
@@ -168,21 +171,38 @@
168#undef SSL_CTX_use_certificate_chain_file 171#undef SSL_CTX_use_certificate_chain_file
169#define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file 172#define SSL_CTX_use_certificate_chain_file SSL_CTX_use_cert_chain_file
170#undef SSL_CTX_set_cert_verify_callback 173#undef SSL_CTX_set_cert_verify_callback
171#define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb 174#define SSL_CTX_set_cert_verify_callback SSL_CTX_set_cert_verify_cb
172#undef SSL_CTX_set_default_passwd_cb_userdata 175#undef SSL_CTX_set_default_passwd_cb_userdata
173#define SSL_CTX_set_default_passwd_cb_userdata SSL_CTX_set_def_passwd_cb_ud 176#define SSL_CTX_set_default_passwd_cb_userdata SSL_CTX_set_def_passwd_cb_ud
174#undef SSL_COMP_get_compression_methods 177#undef SSL_COMP_get_compression_methods
175#define SSL_COMP_get_compression_methods SSL_COMP_get_compress_methods 178#define SSL_COMP_get_compression_methods SSL_COMP_get_compress_methods
176 179
180#undef ssl_add_clienthello_renegotiate_ext
181#define ssl_add_clienthello_renegotiate_ext ssl_add_clienthello_reneg_ext
182#undef ssl_add_serverhello_renegotiate_ext
183#define ssl_add_serverhello_renegotiate_ext ssl_add_serverhello_reneg_ext
184#undef ssl_parse_clienthello_renegotiate_ext
185#define ssl_parse_clienthello_renegotiate_ext ssl_parse_clienthello_reneg_ext
186#undef ssl_parse_serverhello_renegotiate_ext
187#define ssl_parse_serverhello_renegotiate_ext ssl_parse_serverhello_reneg_ext
188
177/* Hack some long ENGINE names */ 189/* Hack some long ENGINE names */
178#undef ENGINE_get_default_BN_mod_exp_crt 190#undef ENGINE_get_default_BN_mod_exp_crt
179#define ENGINE_get_default_BN_mod_exp_crt ENGINE_get_def_BN_mod_exp_crt 191#define ENGINE_get_default_BN_mod_exp_crt ENGINE_get_def_BN_mod_exp_crt
180#undef ENGINE_set_default_BN_mod_exp_crt 192#undef ENGINE_set_default_BN_mod_exp_crt
181#define ENGINE_set_default_BN_mod_exp_crt ENGINE_set_def_BN_mod_exp_crt 193#define ENGINE_set_default_BN_mod_exp_crt ENGINE_set_def_BN_mod_exp_crt
182#undef ENGINE_set_load_privkey_function 194#undef ENGINE_set_load_privkey_function
183#define ENGINE_set_load_privkey_function ENGINE_set_load_privkey_fn 195#define ENGINE_set_load_privkey_function ENGINE_set_load_privkey_fn
184#undef ENGINE_get_load_privkey_function 196#undef ENGINE_get_load_privkey_function
185#define ENGINE_get_load_privkey_function ENGINE_get_load_privkey_fn 197#define ENGINE_get_load_privkey_function ENGINE_get_load_privkey_fn
198#undef ENGINE_unregister_pkey_asn1_meths
199#define ENGINE_unregister_pkey_asn1_meths ENGINE_unreg_pkey_asn1_meths
200#undef ENGINE_register_all_pkey_asn1_meths
201#define ENGINE_register_all_pkey_asn1_meths ENGINE_reg_all_pkey_asn1_meths
202#undef ENGINE_set_default_pkey_asn1_meths
203#define ENGINE_set_default_pkey_asn1_meths ENGINE_set_def_pkey_asn1_meths
204#undef ENGINE_get_pkey_asn1_meth_engine
205#define ENGINE_get_pkey_asn1_meth_engine ENGINE_get_pkey_asn1_meth_eng
186#undef ENGINE_set_load_ssl_client_cert_function 206#undef ENGINE_set_load_ssl_client_cert_function
187#define ENGINE_set_load_ssl_client_cert_function \ 207#define ENGINE_set_load_ssl_client_cert_function \
188 ENGINE_set_ld_ssl_clnt_cert_fn 208 ENGINE_set_ld_ssl_clnt_cert_fn
@@ -191,7 +211,7 @@
191 211
192/* Hack some long OCSP names */ 212/* Hack some long OCSP names */
193#undef OCSP_REQUEST_get_ext_by_critical 213#undef OCSP_REQUEST_get_ext_by_critical
194#define OCSP_REQUEST_get_ext_by_critical OCSP_REQUEST_get_ext_by_crit 214#define OCSP_REQUEST_get_ext_by_critical OCSP_REQUEST_get_ext_by_crit
195#undef OCSP_BASICRESP_get_ext_by_critical 215#undef OCSP_BASICRESP_get_ext_by_critical
196#define OCSP_BASICRESP_get_ext_by_critical OCSP_BASICRESP_get_ext_by_crit 216#define OCSP_BASICRESP_get_ext_by_critical OCSP_BASICRESP_get_ext_by_crit
197#undef OCSP_SINGLERESP_get_ext_by_critical 217#undef OCSP_SINGLERESP_get_ext_by_critical
@@ -208,6 +228,8 @@
208#define OPENSSL_add_all_algorithms_noconf OPENSSL_add_all_algo_noconf 228#define OPENSSL_add_all_algorithms_noconf OPENSSL_add_all_algo_noconf
209#undef OPENSSL_add_all_algorithms_conf 229#undef OPENSSL_add_all_algorithms_conf
210#define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf 230#define OPENSSL_add_all_algorithms_conf OPENSSL_add_all_algo_conf
231#undef EVP_PKEY_meth_set_verify_recover
232#define EVP_PKEY_meth_set_verify_recover EVP_PKEY_meth_set_vrfy_recover
211 233
212/* Hack some long EC names */ 234/* Hack some long EC names */
213#undef EC_GROUP_set_point_conversion_form 235#undef EC_GROUP_set_point_conversion_form
@@ -236,15 +258,15 @@
236#define EC_POINT_set_compressed_coordinates_GF2m \ 258#define EC_POINT_set_compressed_coordinates_GF2m \
237 EC_POINT_set_compr_coords_GF2m 259 EC_POINT_set_compr_coords_GF2m
238#undef ec_GF2m_simple_group_clear_finish 260#undef ec_GF2m_simple_group_clear_finish
239#define ec_GF2m_simple_group_clear_finish ec_GF2m_simple_grp_clr_finish 261#define ec_GF2m_simple_group_clear_finish ec_GF2m_simple_grp_clr_finish
240#undef ec_GF2m_simple_group_check_discriminant 262#undef ec_GF2m_simple_group_check_discriminant
241#define ec_GF2m_simple_group_check_discriminant ec_GF2m_simple_grp_chk_discrim 263#define ec_GF2m_simple_group_check_discriminant ec_GF2m_simple_grp_chk_discrim
242#undef ec_GF2m_simple_point_clear_finish 264#undef ec_GF2m_simple_point_clear_finish
243#define ec_GF2m_simple_point_clear_finish ec_GF2m_simple_pt_clr_finish 265#define ec_GF2m_simple_point_clear_finish ec_GF2m_simple_pt_clr_finish
244#undef ec_GF2m_simple_point_set_to_infinity 266#undef ec_GF2m_simple_point_set_to_infinity
245#define ec_GF2m_simple_point_set_to_infinity ec_GF2m_simple_pt_set_to_inf 267#define ec_GF2m_simple_point_set_to_infinity ec_GF2m_simple_pt_set_to_inf
246#undef ec_GF2m_simple_points_make_affine 268#undef ec_GF2m_simple_points_make_affine
247#define ec_GF2m_simple_points_make_affine ec_GF2m_simple_pts_make_affine 269#define ec_GF2m_simple_points_make_affine ec_GF2m_simple_pts_make_affine
248#undef ec_GF2m_simple_point_set_affine_coordinates 270#undef ec_GF2m_simple_point_set_affine_coordinates
249#define ec_GF2m_simple_point_set_affine_coordinates \ 271#define ec_GF2m_simple_point_set_affine_coordinates \
250 ec_GF2m_smp_pt_set_af_coords 272 ec_GF2m_smp_pt_set_af_coords
@@ -259,19 +281,19 @@
259#undef ec_GFp_simple_group_get_curve_GFp 281#undef ec_GFp_simple_group_get_curve_GFp
260#define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp 282#define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp
261#undef ec_GFp_simple_group_clear_finish 283#undef ec_GFp_simple_group_clear_finish
262#define ec_GFp_simple_group_clear_finish ec_GFp_simple_grp_clear_finish 284#define ec_GFp_simple_group_clear_finish ec_GFp_simple_grp_clear_finish
263#undef ec_GFp_simple_group_set_generator 285#undef ec_GFp_simple_group_set_generator
264#define ec_GFp_simple_group_set_generator ec_GFp_simple_grp_set_generator 286#define ec_GFp_simple_group_set_generator ec_GFp_simple_grp_set_generator
265#undef ec_GFp_simple_group_get0_generator 287#undef ec_GFp_simple_group_get0_generator
266#define ec_GFp_simple_group_get0_generator ec_GFp_simple_grp_gt0_generator 288#define ec_GFp_simple_group_get0_generator ec_GFp_simple_grp_gt0_generator
267#undef ec_GFp_simple_group_get_cofactor 289#undef ec_GFp_simple_group_get_cofactor
268#define ec_GFp_simple_group_get_cofactor ec_GFp_simple_grp_get_cofactor 290#define ec_GFp_simple_group_get_cofactor ec_GFp_simple_grp_get_cofactor
269#undef ec_GFp_simple_point_clear_finish 291#undef ec_GFp_simple_point_clear_finish
270#define ec_GFp_simple_point_clear_finish ec_GFp_simple_pt_clear_finish 292#define ec_GFp_simple_point_clear_finish ec_GFp_simple_pt_clear_finish
271#undef ec_GFp_simple_point_set_to_infinity 293#undef ec_GFp_simple_point_set_to_infinity
272#define ec_GFp_simple_point_set_to_infinity ec_GFp_simple_pt_set_to_inf 294#define ec_GFp_simple_point_set_to_infinity ec_GFp_simple_pt_set_to_inf
273#undef ec_GFp_simple_points_make_affine 295#undef ec_GFp_simple_points_make_affine
274#define ec_GFp_simple_points_make_affine ec_GFp_simple_pts_make_affine 296#define ec_GFp_simple_points_make_affine ec_GFp_simple_pts_make_affine
275#undef ec_GFp_simple_group_get_curve_GFp 297#undef ec_GFp_simple_group_get_curve_GFp
276#define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp 298#define ec_GFp_simple_group_get_curve_GFp ec_GFp_simple_grp_get_curve_GFp
277#undef ec_GFp_simple_set_Jprojective_coordinates_GFp 299#undef ec_GFp_simple_set_Jprojective_coordinates_GFp
@@ -351,6 +373,14 @@
351#undef STORE_method_get_unlock_store_function 373#undef STORE_method_get_unlock_store_function
352#define STORE_method_get_unlock_store_function STORE_meth_get_unlock_store_fn 374#define STORE_method_get_unlock_store_function STORE_meth_get_unlock_store_fn
353 375
376/* Hack some long TS names */
377#undef TS_RESP_CTX_set_status_info_cond
378#define TS_RESP_CTX_set_status_info_cond TS_RESP_CTX_set_stat_info_cond
379#undef TS_RESP_CTX_set_clock_precision_digits
380#define TS_RESP_CTX_set_clock_precision_digits TS_RESP_CTX_set_clk_prec_digits
381#undef TS_CONF_set_clock_precision_digits
382#define TS_CONF_set_clock_precision_digits TS_CONF_set_clk_prec_digits
383
354/* Hack some long CMS names */ 384/* Hack some long CMS names */
355#undef CMS_RecipientInfo_ktri_get0_algs 385#undef CMS_RecipientInfo_ktri_get0_algs
356#define CMS_RecipientInfo_ktri_get0_algs CMS_RecipInfo_ktri_get0_algs 386#define CMS_RecipientInfo_ktri_get0_algs CMS_RecipInfo_ktri_get0_algs
@@ -365,24 +395,34 @@
365#undef cms_SignerIdentifier_get0_signer_id 395#undef cms_SignerIdentifier_get0_signer_id
366#define cms_SignerIdentifier_get0_signer_id cms_SignerId_get0_signer_id 396#define cms_SignerIdentifier_get0_signer_id cms_SignerId_get0_signer_id
367 397
398/* Hack some long DTLS1 names */
399#undef dtls1_retransmit_buffered_messages
400#define dtls1_retransmit_buffered_messages dtls1_retransmit_buffered_msgs
401
402/* Hack some long UI names */
403#undef UI_method_get_prompt_constructor
404#define UI_method_get_prompt_constructor UI_method_get_prompt_constructr
405#undef UI_method_set_prompt_constructor
406#define UI_method_set_prompt_constructor UI_method_set_prompt_constructr
407
368#endif /* defined OPENSSL_SYS_VMS */ 408#endif /* defined OPENSSL_SYS_VMS */
369 409
370 410
371/* Case insensiteve linking causes problems.... */ 411/* Case insensitive linking causes problems.... */
372#if defined(OPENSSL_SYS_WIN16) || defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2) 412#if defined(OPENSSL_SYS_VMS) || defined(OPENSSL_SYS_OS2)
373#undef ERR_load_CRYPTO_strings 413#undef ERR_load_CRYPTO_strings
374#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings 414#define ERR_load_CRYPTO_strings ERR_load_CRYPTOlib_strings
375#undef OCSP_crlID_new 415#undef OCSP_crlID_new
376#define OCSP_crlID_new OCSP_crlID2_new 416#define OCSP_crlID_new OCSP_crlID2_new
377 417
378#undef d2i_ECPARAMETERS 418#undef d2i_ECPARAMETERS
379#define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS 419#define d2i_ECPARAMETERS d2i_UC_ECPARAMETERS
380#undef i2d_ECPARAMETERS 420#undef i2d_ECPARAMETERS
381#define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS 421#define i2d_ECPARAMETERS i2d_UC_ECPARAMETERS
382#undef d2i_ECPKPARAMETERS 422#undef d2i_ECPKPARAMETERS
383#define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS 423#define d2i_ECPKPARAMETERS d2i_UC_ECPKPARAMETERS
384#undef i2d_ECPKPARAMETERS 424#undef i2d_ECPKPARAMETERS
385#define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS 425#define i2d_ECPKPARAMETERS i2d_UC_ECPKPARAMETERS
386 426
387/* These functions do not seem to exist! However, I'm paranoid... 427/* These functions do not seem to exist! However, I'm paranoid...
388 Original command in x509v3.h: 428 Original command in x509v3.h:
@@ -391,19 +431,19 @@
391 hide them a little, by giving them an extra 'o' at the 431 hide them a little, by giving them an extra 'o' at the
392 beginning of the name... */ 432 beginning of the name... */
393#undef X509v3_cleanup_extensions 433#undef X509v3_cleanup_extensions
394#define X509v3_cleanup_extensions oX509v3_cleanup_extensions 434#define X509v3_cleanup_extensions oX509v3_cleanup_extensions
395#undef X509v3_add_extension 435#undef X509v3_add_extension
396#define X509v3_add_extension oX509v3_add_extension 436#define X509v3_add_extension oX509v3_add_extension
397#undef X509v3_add_netscape_extensions 437#undef X509v3_add_netscape_extensions
398#define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions 438#define X509v3_add_netscape_extensions oX509v3_add_netscape_extensions
399#undef X509v3_add_standard_extensions 439#undef X509v3_add_standard_extensions
400#define X509v3_add_standard_extensions oX509v3_add_standard_extensions 440#define X509v3_add_standard_extensions oX509v3_add_standard_extensions
401 441
442/* This one clashes with CMS_data_create */
443#undef cms_Data_create
444#define cms_Data_create priv_cms_Data_create
402 445
403#endif 446#endif
404 447
405 448
406#endif /* ! defined HEADER_VMS_IDHACKS_H */ 449#endif /* ! defined HEADER_VMS_IDHACKS_H */
407/* This one clashes with CMS_data_create */
408#undef cms_Data_create
409#define cms_Data_create priv_cms_Data_create
diff --git a/src/lib/libssl/src/crypto/threads/mttest.c b/src/lib/libssl/src/crypto/threads/mttest.c
index f6f3df4b6a..eba7aa8a6e 100644
--- a/src/lib/libssl/src/crypto/threads/mttest.c
+++ b/src/lib/libssl/src/crypto/threads/mttest.c
@@ -117,11 +117,13 @@ void solaris_locking_callback(int mode,int type,char *file,int line);
117void win32_locking_callback(int mode,int type,char *file,int line); 117void win32_locking_callback(int mode,int type,char *file,int line);
118void pthreads_locking_callback(int mode,int type,char *file,int line); 118void pthreads_locking_callback(int mode,int type,char *file,int line);
119void netware_locking_callback(int mode,int type,char *file,int line); 119void netware_locking_callback(int mode,int type,char *file,int line);
120void beos_locking_callback(int mode,int type,const char *file,int line);
120 121
121unsigned long irix_thread_id(void ); 122unsigned long irix_thread_id(void );
122unsigned long solaris_thread_id(void ); 123unsigned long solaris_thread_id(void );
123unsigned long pthreads_thread_id(void ); 124unsigned long pthreads_thread_id(void );
124unsigned long netware_thread_id(void ); 125unsigned long netware_thread_id(void );
126unsigned long beos_thread_id(void );
125 127
126#if defined(OPENSSL_SYS_NETWARE) 128#if defined(OPENSSL_SYS_NETWARE)
127static MPKMutex *lock_cs; 129static MPKMutex *lock_cs;
@@ -1209,3 +1211,100 @@ unsigned long netware_thread_id(void)
1209 return(ret); 1211 return(ret);
1210} 1212}
1211#endif /* NETWARE */ 1213#endif /* NETWARE */
1214
1215#ifdef BEOS_THREADS
1216
1217#include <Locker.h>
1218
1219static BLocker** lock_cs;
1220static long* lock_count;
1221
1222void thread_setup(void)
1223 {
1224 int i;
1225
1226 lock_cs=(BLocker**)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(BLocker*));
1227 lock_count=(long*)OPENSSL_malloc(CRYPTO_num_locks() * sizeof(long));
1228 for (i=0; i<CRYPTO_num_locks(); i++)
1229 {
1230 lock_count[i]=0;
1231 lock_cs[i] = new BLocker(CRYPTO_get_lock_name(i));
1232 }
1233
1234 CRYPTO_set_id_callback((unsigned long (*)())beos_thread_id);
1235 CRYPTO_set_locking_callback(beos_locking_callback);
1236 }
1237
1238void thread_cleanup(void)
1239 {
1240 int i;
1241
1242 CRYPTO_set_locking_callback(NULL);
1243 fprintf(stderr,"cleanup\n");
1244 for (i=0; i<CRYPTO_num_locks(); i++)
1245 {
1246 delete lock_cs[i];
1247 fprintf(stderr,"%8ld:%s\n",lock_count[i],
1248 CRYPTO_get_lock_name(i));
1249 }
1250 OPENSSL_free(lock_cs);
1251 OPENSSL_free(lock_count);
1252
1253 fprintf(stderr,"done cleanup\n");
1254 }
1255
1256void beos_locking_callback(int mode, int type, const char *file, int line)
1257 {
1258#if 0
1259 fprintf(stderr,"thread=%4d mode=%s lock=%s %s:%d\n",
1260 CRYPTO_thread_id(),
1261 (mode&CRYPTO_LOCK)?"l":"u",
1262 (type&CRYPTO_READ)?"r":"w",file,line);
1263#endif
1264 if (mode & CRYPTO_LOCK)
1265 {
1266 lock_cs[type]->Lock();
1267 lock_count[type]++;
1268 }
1269 else
1270 {
1271 lock_cs[type]->Unlock();
1272 }
1273 }
1274
1275void do_threads(SSL_CTX *s_ctx, SSL_CTX *c_ctx)
1276 {
1277 SSL_CTX *ssl_ctx[2];
1278 thread_id thread_ctx[MAX_THREAD_NUMBER];
1279 int i;
1280
1281 ssl_ctx[0]=s_ctx;
1282 ssl_ctx[1]=c_ctx;
1283
1284 for (i=0; i<thread_number; i++)
1285 {
1286 thread_ctx[i] = spawn_thread((thread_func)ndoit,
1287 NULL, B_NORMAL_PRIORITY, (void *)ssl_ctx);
1288 resume_thread(thread_ctx[i]);
1289 }
1290
1291 printf("waiting...\n");
1292 for (i=0; i<thread_number; i++)
1293 {
1294 status_t result;
1295 wait_for_thread(thread_ctx[i], &result);
1296 }
1297
1298 printf("beos threads done (%d,%d)\n",
1299 s_ctx->references,c_ctx->references);
1300 }
1301
1302unsigned long beos_thread_id(void)
1303 {
1304 unsigned long ret;
1305
1306 ret=(unsigned long)find_thread(NULL);
1307 return(ret);
1308 }
1309
1310#endif /* BEOS_THREADS */
diff --git a/src/lib/libssl/src/crypto/threads/pthreads-vms.com b/src/lib/libssl/src/crypto/threads/pthreads-vms.com
index 63f5b8cc2e..1cf92bdf57 100644
--- a/src/lib/libssl/src/crypto/threads/pthreads-vms.com
+++ b/src/lib/libssl/src/crypto/threads/pthreads-vms.com
@@ -2,8 +2,13 @@ $! To compile mttest on VMS.
2$! 2$!
3$! WARNING: only tested with DEC C so far. 3$! WARNING: only tested with DEC C so far.
4$ 4$
5$ arch := vax 5$ if (f$getsyi("cpu").lt.128)
6$ if f$getsyi("CPU") .ge. 128 then arch := axp 6$ then
7$ arch := VAX
8$ else
9$ arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
10$ if (arch .eqs. "") then arch = "UNK"
11$ endif
7$ define/user openssl [--.include.openssl] 12$ define/user openssl [--.include.openssl]
8$ cc/def=PTHREADS mttest.c 13$ cc/def=PTHREADS mttest.c
9$ link mttest,[--.'arch'.exe.ssl]libssl/lib,[--.'arch'.exe.crypto]libcrypto/lib 14$ link mttest,[--.'arch'.exe.ssl]libssl/lib,[--.'arch'.exe.crypto]libcrypto/lib
diff --git a/src/lib/libssl/src/crypto/txt_db/Makefile b/src/lib/libssl/src/crypto/txt_db/Makefile
index 87e57b49f6..e6f30331d8 100644
--- a/src/lib/libssl/src/crypto/txt_db/Makefile
+++ b/src/lib/libssl/src/crypto/txt_db/Makefile
@@ -33,7 +33,7 @@ top:
33all: lib 33all: lib
34 34
35lib: $(LIBOBJ) 35lib: $(LIBOBJ)
36 $(ARX) $(LIB) $(LIBOBJ) 36 $(AR) $(LIB) $(LIBOBJ)
37 $(RANLIB) $(LIB) || echo Never mind. 37 $(RANLIB) $(LIB) || echo Never mind.
38 @touch lib 38 @touch lib
39 39
diff --git a/src/lib/libssl/src/crypto/txt_db/txt_db.c b/src/lib/libssl/src/crypto/txt_db/txt_db.c
index 3ed5f72ee9..6f2ce3b5a4 100644
--- a/src/lib/libssl/src/crypto/txt_db/txt_db.c
+++ b/src/lib/libssl/src/crypto/txt_db/txt_db.c
@@ -77,22 +77,23 @@ TXT_DB *TXT_DB_read(BIO *in, int num)
77 int i,add,n; 77 int i,add,n;
78 int size=BUFSIZE; 78 int size=BUFSIZE;
79 int offset=0; 79 int offset=0;
80 char *p,**pp,*f; 80 char *p,*f;
81 OPENSSL_STRING *pp;
81 BUF_MEM *buf=NULL; 82 BUF_MEM *buf=NULL;
82 83
83 if ((buf=BUF_MEM_new()) == NULL) goto err; 84 if ((buf=BUF_MEM_new()) == NULL) goto err;
84 if (!BUF_MEM_grow(buf,size)) goto err; 85 if (!BUF_MEM_grow(buf,size)) goto err;
85 86
86 if ((ret=(TXT_DB *)OPENSSL_malloc(sizeof(TXT_DB))) == NULL) 87 if ((ret=OPENSSL_malloc(sizeof(TXT_DB))) == NULL)
87 goto err; 88 goto err;
88 ret->num_fields=num; 89 ret->num_fields=num;
89 ret->index=NULL; 90 ret->index=NULL;
90 ret->qual=NULL; 91 ret->qual=NULL;
91 if ((ret->data=sk_new_null()) == NULL) 92 if ((ret->data=sk_OPENSSL_PSTRING_new_null()) == NULL)
92 goto err; 93 goto err;
93 if ((ret->index=(LHASH **)OPENSSL_malloc(sizeof(LHASH *)*num)) == NULL) 94 if ((ret->index=OPENSSL_malloc(sizeof(*ret->index)*num)) == NULL)
94 goto err; 95 goto err;
95 if ((ret->qual=(int (**)(char **))OPENSSL_malloc(sizeof(int (**)(char **))*num)) == NULL) 96 if ((ret->qual=OPENSSL_malloc(sizeof(*(ret->qual))*num)) == NULL)
96 goto err; 97 goto err;
97 for (i=0; i<num; i++) 98 for (i=0; i<num; i++)
98 { 99 {
@@ -122,7 +123,7 @@ TXT_DB *TXT_DB_read(BIO *in, int num)
122 else 123 else
123 { 124 {
124 buf->data[offset-1]='\0'; /* blat the '\n' */ 125 buf->data[offset-1]='\0'; /* blat the '\n' */
125 if (!(p=(char *)OPENSSL_malloc(add+offset))) goto err; 126 if (!(p=OPENSSL_malloc(add+offset))) goto err;
126 offset=0; 127 offset=0;
127 } 128 }
128 pp=(char **)p; 129 pp=(char **)p;
@@ -155,16 +156,16 @@ TXT_DB *TXT_DB_read(BIO *in, int num)
155 *(p++)='\0'; 156 *(p++)='\0';
156 if ((n != num) || (*f != '\0')) 157 if ((n != num) || (*f != '\0'))
157 { 158 {
158#if !defined(OPENSSL_NO_STDIO) && !defined(OPENSSL_SYS_WIN16) /* temporaty fix :-( */ 159#if !defined(OPENSSL_NO_STDIO) && !defined(OPENSSL_SYS_WIN16) /* temporary fix :-( */
159 fprintf(stderr,"wrong number of fields on line %ld (looking for field %d, got %d, '%s' left)\n",ln,num,n,f); 160 fprintf(stderr,"wrong number of fields on line %ld (looking for field %d, got %d, '%s' left)\n",ln,num,n,f);
160#endif 161#endif
161 er=2; 162 er=2;
162 goto err; 163 goto err;
163 } 164 }
164 pp[n]=p; 165 pp[n]=p;
165 if (!sk_push(ret->data,(char *)pp)) 166 if (!sk_OPENSSL_PSTRING_push(ret->data,pp))
166 { 167 {
167#if !defined(OPENSSL_NO_STDIO) && !defined(OPENSSL_SYS_WIN16) /* temporaty fix :-( */ 168#if !defined(OPENSSL_NO_STDIO) && !defined(OPENSSL_SYS_WIN16) /* temporary fix :-( */
168 fprintf(stderr,"failure in sk_push\n"); 169 fprintf(stderr,"failure in sk_push\n");
169#endif 170#endif
170 er=2; 171 er=2;
@@ -181,7 +182,7 @@ err:
181#endif 182#endif
182 if (ret != NULL) 183 if (ret != NULL)
183 { 184 {
184 if (ret->data != NULL) sk_free(ret->data); 185 if (ret->data != NULL) sk_OPENSSL_PSTRING_free(ret->data);
185 if (ret->index != NULL) OPENSSL_free(ret->index); 186 if (ret->index != NULL) OPENSSL_free(ret->index);
186 if (ret->qual != NULL) OPENSSL_free(ret->qual); 187 if (ret->qual != NULL) OPENSSL_free(ret->qual);
187 if (ret != NULL) OPENSSL_free(ret); 188 if (ret != NULL) OPENSSL_free(ret);
@@ -192,10 +193,10 @@ err:
192 return(ret); 193 return(ret);
193 } 194 }
194 195
195char **TXT_DB_get_by_index(TXT_DB *db, int idx, char **value) 196OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, OPENSSL_STRING *value)
196 { 197 {
197 char **ret; 198 OPENSSL_STRING *ret;
198 LHASH *lh; 199 LHASH_OF(OPENSSL_STRING) *lh;
199 200
200 if (idx >= db->num_fields) 201 if (idx >= db->num_fields)
201 { 202 {
@@ -208,16 +209,16 @@ char **TXT_DB_get_by_index(TXT_DB *db, int idx, char **value)
208 db->error=DB_ERROR_NO_INDEX; 209 db->error=DB_ERROR_NO_INDEX;
209 return(NULL); 210 return(NULL);
210 } 211 }
211 ret=(char **)lh_retrieve(lh,value); 212 ret=lh_OPENSSL_STRING_retrieve(lh,value);
212 db->error=DB_ERROR_OK; 213 db->error=DB_ERROR_OK;
213 return(ret); 214 return(ret);
214 } 215 }
215 216
216int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(char **), 217int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(OPENSSL_STRING *),
217 LHASH_HASH_FN_TYPE hash, LHASH_COMP_FN_TYPE cmp) 218 LHASH_HASH_FN_TYPE hash, LHASH_COMP_FN_TYPE cmp)
218 { 219 {
219 LHASH *idx; 220 LHASH_OF(OPENSSL_STRING) *idx;
220 char **r; 221 OPENSSL_STRING *r;
221 int i,n; 222 int i,n;
222 223
223 if (field >= db->num_fields) 224 if (field >= db->num_fields)
@@ -225,26 +226,27 @@ int TXT_DB_create_index(TXT_DB *db, int field, int (*qual)(char **),
225 db->error=DB_ERROR_INDEX_OUT_OF_RANGE; 226 db->error=DB_ERROR_INDEX_OUT_OF_RANGE;
226 return(0); 227 return(0);
227 } 228 }
228 if ((idx=lh_new(hash,cmp)) == NULL) 229 /* FIXME: we lose type checking at this point */
230 if ((idx=(LHASH_OF(OPENSSL_STRING) *)lh_new(hash,cmp)) == NULL)
229 { 231 {
230 db->error=DB_ERROR_MALLOC; 232 db->error=DB_ERROR_MALLOC;
231 return(0); 233 return(0);
232 } 234 }
233 n=sk_num(db->data); 235 n=sk_OPENSSL_PSTRING_num(db->data);
234 for (i=0; i<n; i++) 236 for (i=0; i<n; i++)
235 { 237 {
236 r=(char **)sk_value(db->data,i); 238 r=sk_OPENSSL_PSTRING_value(db->data,i);
237 if ((qual != NULL) && (qual(r) == 0)) continue; 239 if ((qual != NULL) && (qual(r) == 0)) continue;
238 if ((r=lh_insert(idx,r)) != NULL) 240 if ((r=lh_OPENSSL_STRING_insert(idx,r)) != NULL)
239 { 241 {
240 db->error=DB_ERROR_INDEX_CLASH; 242 db->error=DB_ERROR_INDEX_CLASH;
241 db->arg1=sk_find(db->data,(char *)r); 243 db->arg1=sk_OPENSSL_PSTRING_find(db->data,r);
242 db->arg2=i; 244 db->arg2=i;
243 lh_free(idx); 245 lh_OPENSSL_STRING_free(idx);
244 return(0); 246 return(0);
245 } 247 }
246 } 248 }
247 if (db->index[field] != NULL) lh_free(db->index[field]); 249 if (db->index[field] != NULL) lh_OPENSSL_STRING_free(db->index[field]);
248 db->index[field]=idx; 250 db->index[field]=idx;
249 db->qual[field]=qual; 251 db->qual[field]=qual;
250 return(1); 252 return(1);
@@ -259,11 +261,11 @@ long TXT_DB_write(BIO *out, TXT_DB *db)
259 261
260 if ((buf=BUF_MEM_new()) == NULL) 262 if ((buf=BUF_MEM_new()) == NULL)
261 goto err; 263 goto err;
262 n=sk_num(db->data); 264 n=sk_OPENSSL_PSTRING_num(db->data);
263 nn=db->num_fields; 265 nn=db->num_fields;
264 for (i=0; i<n; i++) 266 for (i=0; i<n; i++)
265 { 267 {
266 pp=(char **)sk_value(db->data,i); 268 pp=sk_OPENSSL_PSTRING_value(db->data,i);
267 269
268 l=0; 270 l=0;
269 for (j=0; j<nn; j++) 271 for (j=0; j<nn; j++)
@@ -298,10 +300,10 @@ err:
298 return(ret); 300 return(ret);
299 } 301 }
300 302
301int TXT_DB_insert(TXT_DB *db, char **row) 303int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *row)
302 { 304 {
303 int i; 305 int i;
304 char **r; 306 OPENSSL_STRING *r;
305 307
306 for (i=0; i<db->num_fields; i++) 308 for (i=0; i<db->num_fields; i++)
307 { 309 {
@@ -309,7 +311,7 @@ int TXT_DB_insert(TXT_DB *db, char **row)
309 { 311 {
310 if ((db->qual[i] != NULL) && 312 if ((db->qual[i] != NULL) &&
311 (db->qual[i](row) == 0)) continue; 313 (db->qual[i](row) == 0)) continue;
312 r=(char **)lh_retrieve(db->index[i],row); 314 r=lh_OPENSSL_STRING_retrieve(db->index[i],row);
313 if (r != NULL) 315 if (r != NULL)
314 { 316 {
315 db->error=DB_ERROR_INDEX_CLASH; 317 db->error=DB_ERROR_INDEX_CLASH;
@@ -320,7 +322,7 @@ int TXT_DB_insert(TXT_DB *db, char **row)
320 } 322 }
321 } 323 }
322 /* We have passed the index checks, now just append and insert */ 324 /* We have passed the index checks, now just append and insert */
323 if (!sk_push(db->data,(char *)row)) 325 if (!sk_OPENSSL_PSTRING_push(db->data,row))
324 { 326 {
325 db->error=DB_ERROR_MALLOC; 327 db->error=DB_ERROR_MALLOC;
326 goto err; 328 goto err;
@@ -332,7 +334,7 @@ int TXT_DB_insert(TXT_DB *db, char **row)
332 { 334 {
333 if ((db->qual[i] != NULL) && 335 if ((db->qual[i] != NULL) &&
334 (db->qual[i](row) == 0)) continue; 336 (db->qual[i](row) == 0)) continue;
335 lh_insert(db->index[i],row); 337 (void)lh_OPENSSL_STRING_insert(db->index[i],row);
336 } 338 }
337 } 339 }
338 return(1); 340 return(1);
@@ -351,18 +353,18 @@ void TXT_DB_free(TXT_DB *db)
351 if (db->index != NULL) 353 if (db->index != NULL)
352 { 354 {
353 for (i=db->num_fields-1; i>=0; i--) 355 for (i=db->num_fields-1; i>=0; i--)
354 if (db->index[i] != NULL) lh_free(db->index[i]); 356 if (db->index[i] != NULL) lh_OPENSSL_STRING_free(db->index[i]);
355 OPENSSL_free(db->index); 357 OPENSSL_free(db->index);
356 } 358 }
357 if (db->qual != NULL) 359 if (db->qual != NULL)
358 OPENSSL_free(db->qual); 360 OPENSSL_free(db->qual);
359 if (db->data != NULL) 361 if (db->data != NULL)
360 { 362 {
361 for (i=sk_num(db->data)-1; i>=0; i--) 363 for (i=sk_OPENSSL_PSTRING_num(db->data)-1; i>=0; i--)
362 { 364 {
363 /* check if any 'fields' have been allocated 365 /* check if any 'fields' have been allocated
364 * from outside of the initial block */ 366 * from outside of the initial block */
365 p=(char **)sk_value(db->data,i); 367 p=sk_OPENSSL_PSTRING_value(db->data,i);
366 max=p[db->num_fields]; /* last address */ 368 max=p[db->num_fields]; /* last address */
367 if (max == NULL) /* new row */ 369 if (max == NULL) /* new row */
368 { 370 {
@@ -378,9 +380,9 @@ void TXT_DB_free(TXT_DB *db)
378 OPENSSL_free(p[n]); 380 OPENSSL_free(p[n]);
379 } 381 }
380 } 382 }
381 OPENSSL_free(sk_value(db->data,i)); 383 OPENSSL_free(sk_OPENSSL_PSTRING_value(db->data,i));
382 } 384 }
383 sk_free(db->data); 385 sk_OPENSSL_PSTRING_free(db->data);
384 } 386 }
385 OPENSSL_free(db); 387 OPENSSL_free(db);
386 } 388 }
diff --git a/src/lib/libssl/src/crypto/txt_db/txt_db.h b/src/lib/libssl/src/crypto/txt_db/txt_db.h
index 307e1ba23f..6abe435bc8 100644
--- a/src/lib/libssl/src/crypto/txt_db/txt_db.h
+++ b/src/lib/libssl/src/crypto/txt_db/txt_db.h
@@ -77,16 +77,19 @@
77extern "C" { 77extern "C" {
78#endif 78#endif
79 79
80typedef OPENSSL_STRING *OPENSSL_PSTRING;
81DECLARE_SPECIAL_STACK_OF(OPENSSL_PSTRING, OPENSSL_STRING)
82
80typedef struct txt_db_st 83typedef struct txt_db_st
81 { 84 {
82 int num_fields; 85 int num_fields;
83 STACK /* char ** */ *data; 86 STACK_OF(OPENSSL_PSTRING) *data;
84 LHASH **index; 87 LHASH_OF(OPENSSL_STRING) **index;
85 int (**qual)(char **); 88 int (**qual)(OPENSSL_STRING *);
86 long error; 89 long error;
87 long arg1; 90 long arg1;
88 long arg2; 91 long arg2;
89 char **arg_row; 92 OPENSSL_STRING *arg_row;
90 } TXT_DB; 93 } TXT_DB;
91 94
92#ifndef OPENSSL_NO_BIO 95#ifndef OPENSSL_NO_BIO
@@ -96,11 +99,11 @@ long TXT_DB_write(BIO *out, TXT_DB *db);
96TXT_DB *TXT_DB_read(char *in, int num); 99TXT_DB *TXT_DB_read(char *in, int num);
97long TXT_DB_write(char *out, TXT_DB *db); 100long TXT_DB_write(char *out, TXT_DB *db);
98#endif 101#endif
99int TXT_DB_create_index(TXT_DB *db,int field,int (*qual)(char **), 102int TXT_DB_create_index(TXT_DB *db,int field,int (*qual)(OPENSSL_STRING *),
100 LHASH_HASH_FN_TYPE hash, LHASH_COMP_FN_TYPE cmp); 103 LHASH_HASH_FN_TYPE hash, LHASH_COMP_FN_TYPE cmp);
101void TXT_DB_free(TXT_DB *db); 104void TXT_DB_free(TXT_DB *db);
102char **TXT_DB_get_by_index(TXT_DB *db, int idx, char **value); 105OPENSSL_STRING *TXT_DB_get_by_index(TXT_DB *db, int idx, OPENSSL_STRING *value);
103int TXT_DB_insert(TXT_DB *db,char **value); 106int TXT_DB_insert(TXT_DB *db, OPENSSL_STRING *value);
104 107
105#ifdef __cplusplus 108#ifdef __cplusplus
106} 109}
diff --git a/src/lib/libssl/src/crypto/ui/Makefile b/src/lib/libssl/src/crypto/ui/Makefile
index 4755e206f6..a685659fb4 100644
--- a/src/lib/libssl/src/crypto/ui/Makefile
+++ b/src/lib/libssl/src/crypto/ui/Makefile
@@ -37,7 +37,7 @@ top:
37all: lib 37all: lib
38 38
39lib: $(LIBOBJ) 39lib: $(LIBOBJ)
40 $(ARX) $(LIB) $(LIBOBJ) 40 $(AR) $(LIB) $(LIBOBJ)
41 $(RANLIB) $(LIB) || echo Never mind. 41 $(RANLIB) $(LIB) || echo Never mind.
42 @touch lib 42 @touch lib
43 43
diff --git a/src/lib/libssl/src/crypto/ui/ui.h b/src/lib/libssl/src/crypto/ui/ui.h
index 018296412b..2b1cfa2289 100644
--- a/src/lib/libssl/src/crypto/ui/ui.h
+++ b/src/lib/libssl/src/crypto/ui/ui.h
@@ -287,8 +287,8 @@ UI_METHOD *UI_OpenSSL(void);
287/* The UI_STRING type is the data structure that contains all the needed info 287/* The UI_STRING type is the data structure that contains all the needed info
288 about a string or a prompt, including test data for a verification prompt. 288 about a string or a prompt, including test data for a verification prompt.
289*/ 289*/
290DECLARE_STACK_OF(UI_STRING)
291typedef struct ui_string_st UI_STRING; 290typedef struct ui_string_st UI_STRING;
291DECLARE_STACK_OF(UI_STRING)
292 292
293/* The different types of strings that are currently supported. 293/* The different types of strings that are currently supported.
294 This is only needed by method authors. */ 294 This is only needed by method authors. */
@@ -310,11 +310,13 @@ int UI_method_set_writer(UI_METHOD *method, int (*writer)(UI *ui, UI_STRING *uis
310int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui)); 310int UI_method_set_flusher(UI_METHOD *method, int (*flusher)(UI *ui));
311int UI_method_set_reader(UI_METHOD *method, int (*reader)(UI *ui, UI_STRING *uis)); 311int UI_method_set_reader(UI_METHOD *method, int (*reader)(UI *ui, UI_STRING *uis));
312int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui)); 312int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui));
313int UI_method_set_prompt_constructor(UI_METHOD *method, char *(*prompt_constructor)(UI* ui, const char* object_desc, const char* object_name));
313int (*UI_method_get_opener(UI_METHOD *method))(UI*); 314int (*UI_method_get_opener(UI_METHOD *method))(UI*);
314int (*UI_method_get_writer(UI_METHOD *method))(UI*,UI_STRING*); 315int (*UI_method_get_writer(UI_METHOD *method))(UI*,UI_STRING*);
315int (*UI_method_get_flusher(UI_METHOD *method))(UI*); 316int (*UI_method_get_flusher(UI_METHOD *method))(UI*);
316int (*UI_method_get_reader(UI_METHOD *method))(UI*,UI_STRING*); 317int (*UI_method_get_reader(UI_METHOD *method))(UI*,UI_STRING*);
317int (*UI_method_get_closer(UI_METHOD *method))(UI*); 318int (*UI_method_get_closer(UI_METHOD *method))(UI*);
319char* (*UI_method_get_prompt_constructor(UI_METHOD *method))(UI*, const char*, const char*);
318 320
319/* The following functions are helpers for method writers to access relevant 321/* The following functions are helpers for method writers to access relevant
320 data from a UI_STRING. */ 322 data from a UI_STRING. */
diff --git a/src/lib/libssl/src/crypto/ui/ui_err.c b/src/lib/libssl/src/crypto/ui/ui_err.c
index 786bd0dbc3..a6b96299a0 100644
--- a/src/lib/libssl/src/crypto/ui/ui_err.c
+++ b/src/lib/libssl/src/crypto/ui/ui_err.c
@@ -1,6 +1,6 @@
1/* crypto/ui/ui_err.c */ 1/* crypto/ui/ui_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
diff --git a/src/lib/libssl/src/crypto/ui/ui_lib.c b/src/lib/libssl/src/crypto/ui/ui_lib.c
index ac0100808f..a8abc27064 100644
--- a/src/lib/libssl/src/crypto/ui/ui_lib.c
+++ b/src/lib/libssl/src/crypto/ui/ui_lib.c
@@ -693,6 +693,17 @@ int UI_method_set_closer(UI_METHOD *method, int (*closer)(UI *ui))
693 return -1; 693 return -1;
694 } 694 }
695 695
696int UI_method_set_prompt_constructor(UI_METHOD *method, char *(*prompt_constructor)(UI* ui, const char* object_desc, const char* object_name))
697 {
698 if (method)
699 {
700 method->ui_construct_prompt = prompt_constructor;
701 return 0;
702 }
703 else
704 return -1;
705 }
706
696int (*UI_method_get_opener(UI_METHOD *method))(UI*) 707int (*UI_method_get_opener(UI_METHOD *method))(UI*)
697 { 708 {
698 if (method) 709 if (method)
@@ -733,6 +744,14 @@ int (*UI_method_get_closer(UI_METHOD *method))(UI*)
733 return NULL; 744 return NULL;
734 } 745 }
735 746
747char* (*UI_method_get_prompt_constructor(UI_METHOD *method))(UI*, const char*, const char*)
748 {
749 if (method)
750 return method->ui_construct_prompt;
751 else
752 return NULL;
753 }
754
736enum UI_string_types UI_get_string_type(UI_STRING *uis) 755enum UI_string_types UI_get_string_type(UI_STRING *uis)
737 { 756 {
738 if (!uis) 757 if (!uis)
diff --git a/src/lib/libssl/src/crypto/ui/ui_openssl.c b/src/lib/libssl/src/crypto/ui/ui_openssl.c
index ef930bf247..1bc25f48d5 100644
--- a/src/lib/libssl/src/crypto/ui/ui_openssl.c
+++ b/src/lib/libssl/src/crypto/ui/ui_openssl.c
@@ -122,7 +122,9 @@
122 * sigaction and fileno included. -pedantic would be more appropriate for 122 * sigaction and fileno included. -pedantic would be more appropriate for
123 * the intended purposes, but we can't prevent users from adding -ansi. 123 * the intended purposes, but we can't prevent users from adding -ansi.
124 */ 124 */
125#define _POSIX_C_SOURCE 1 125#ifndef _POSIX_C_SOURCE
126#define _POSIX_C_SOURCE 2
127#endif
126#include <signal.h> 128#include <signal.h>
127#include <stdio.h> 129#include <stdio.h>
128#include <string.h> 130#include <string.h>
@@ -297,7 +299,7 @@ static int is_a_tty;
297 299
298/* Declare static functions */ 300/* Declare static functions */
299#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) 301#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE)
300static void read_till_nl(FILE *); 302static int read_till_nl(FILE *);
301static void recsig(int); 303static void recsig(int);
302static void pushsig(void); 304static void pushsig(void);
303static void popsig(void); 305static void popsig(void);
@@ -390,14 +392,16 @@ static int read_string(UI *ui, UI_STRING *uis)
390 392
391#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE) 393#if !defined(OPENSSL_SYS_WIN16) && !defined(OPENSSL_SYS_WINCE)
392/* Internal functions to read a string without echoing */ 394/* Internal functions to read a string without echoing */
393static void read_till_nl(FILE *in) 395static int read_till_nl(FILE *in)
394 { 396 {
395#define SIZE 4 397#define SIZE 4
396 char buf[SIZE+1]; 398 char buf[SIZE+1];
397 399
398 do { 400 do {
399 fgets(buf,SIZE,in); 401 if (!fgets(buf,SIZE,in))
402 return 0;
400 } while (strchr(buf,'\n') == NULL); 403 } while (strchr(buf,'\n') == NULL);
404 return 1;
401 } 405 }
402 406
403static volatile sig_atomic_t intr_signal; 407static volatile sig_atomic_t intr_signal;
@@ -445,7 +449,8 @@ static int read_string_inner(UI *ui, UI_STRING *uis, int echo, int strip_nl)
445 *p='\0'; 449 *p='\0';
446 } 450 }
447 else 451 else
448 read_till_nl(tty_in); 452 if (!read_till_nl(tty_in))
453 goto error;
449 if (UI_set_result(ui, uis, result) >= 0) 454 if (UI_set_result(ui, uis, result) >= 0)
450 ok=1; 455 ok=1;
451 456
@@ -473,7 +478,7 @@ static int open_console(UI *ui)
473 CRYPTO_w_lock(CRYPTO_LOCK_UI); 478 CRYPTO_w_lock(CRYPTO_LOCK_UI);
474 is_a_tty = 1; 479 is_a_tty = 1;
475 480
476#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) 481#if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) || defined(OPENSSL_SYS_VXWORKS) || defined(OPENSSL_SYS_NETWARE) || defined(OPENSSL_SYS_BEOS)
477 tty_in=stdin; 482 tty_in=stdin;
478 tty_out=stderr; 483 tty_out=stderr;
479#else 484#else
diff --git a/src/lib/libssl/src/crypto/x509/Makefile b/src/lib/libssl/src/crypto/x509/Makefile
index 464752b159..72c82278f4 100644
--- a/src/lib/libssl/src/crypto/x509/Makefile
+++ b/src/lib/libssl/src/crypto/x509/Makefile
@@ -43,12 +43,12 @@ top:
43all: lib 43all: lib
44 44
45lib: $(LIBOBJ) 45lib: $(LIBOBJ)
46 $(ARX) $(LIB) $(LIBOBJ) 46 $(AR) $(LIB) $(LIBOBJ)
47 $(RANLIB) $(LIB) || echo Never mind. 47 $(RANLIB) $(LIB) || echo Never mind.
48 @touch lib 48 @touch lib
49 49
50files: 50files:
51 $(PERL) $(TOP)/util/files.pl Makefile.ssl >> $(TOP)/MINFO 51 $(PERL) $(TOP)/util/files.pl Makefile >> $(TOP)/MINFO
52 52
53links: 53links:
54 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER) 54 @$(PERL) $(TOP)/util/mklink.pl ../../include/openssl $(EXHEADER)
@@ -89,37 +89,35 @@ by_dir.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
89by_dir.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 89by_dir.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
90by_dir.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 90by_dir.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
91by_dir.o: ../../include/openssl/err.h ../../include/openssl/evp.h 91by_dir.o: ../../include/openssl/err.h ../../include/openssl/evp.h
92by_dir.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 92by_dir.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
93by_dir.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 93by_dir.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
94by_dir.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 94by_dir.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
95by_dir.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 95by_dir.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
96by_dir.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 96by_dir.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
97by_dir.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 97by_dir.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
98by_dir.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 98by_dir.o: ../../include/openssl/x509_vfy.h ../cryptlib.h by_dir.c
99by_dir.o: ../cryptlib.h by_dir.c
100by_file.o: ../../e_os.h ../../include/openssl/asn1.h 99by_file.o: ../../e_os.h ../../include/openssl/asn1.h
101by_file.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 100by_file.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
102by_file.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 101by_file.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
103by_file.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 102by_file.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
104by_file.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 103by_file.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
105by_file.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 104by_file.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
106by_file.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 105by_file.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
107by_file.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 106by_file.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
108by_file.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 107by_file.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pem.h
109by_file.o: ../../include/openssl/pem.h ../../include/openssl/pem2.h 108by_file.o: ../../include/openssl/pem2.h ../../include/openssl/pkcs7.h
110by_file.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 109by_file.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
111by_file.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 110by_file.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
112by_file.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 111by_file.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
113by_file.o: ../../include/openssl/x509_vfy.h ../cryptlib.h by_file.c 112by_file.o: ../cryptlib.h by_file.c
114x509_att.o: ../../e_os.h ../../include/openssl/asn1.h 113x509_att.o: ../../e_os.h ../../include/openssl/asn1.h
115x509_att.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 114x509_att.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
116x509_att.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 115x509_att.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
117x509_att.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 116x509_att.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
118x509_att.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 117x509_att.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
119x509_att.o: ../../include/openssl/err.h ../../include/openssl/evp.h 118x509_att.o: ../../include/openssl/err.h ../../include/openssl/evp.h
120x509_att.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 119x509_att.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
121x509_att.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 120x509_att.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
122x509_att.o: ../../include/openssl/opensslconf.h
123x509_att.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 121x509_att.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
124x509_att.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 122x509_att.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
125x509_att.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 123x509_att.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -132,9 +130,8 @@ x509_cmp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
132x509_cmp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 130x509_cmp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
133x509_cmp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 131x509_cmp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
134x509_cmp.o: ../../include/openssl/err.h ../../include/openssl/evp.h 132x509_cmp.o: ../../include/openssl/err.h ../../include/openssl/evp.h
135x509_cmp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 133x509_cmp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
136x509_cmp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 134x509_cmp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
137x509_cmp.o: ../../include/openssl/opensslconf.h
138x509_cmp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 135x509_cmp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
139x509_cmp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 136x509_cmp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
140x509_cmp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 137x509_cmp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -146,22 +143,22 @@ x509_d2.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
146x509_d2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 143x509_d2.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
147x509_d2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 144x509_d2.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
148x509_d2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 145x509_d2.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
149x509_d2.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 146x509_d2.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
150x509_d2.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 147x509_d2.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
151x509_d2.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 148x509_d2.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
152x509_d2.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 149x509_d2.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
153x509_d2.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 150x509_d2.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
154x509_d2.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 151x509_d2.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
155x509_d2.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 152x509_d2.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
156x509_d2.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x509_d2.c 153x509_d2.o: ../cryptlib.h x509_d2.c
157x509_def.o: ../../e_os.h ../../include/openssl/asn1.h 154x509_def.o: ../../e_os.h ../../include/openssl/asn1.h
158x509_def.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 155x509_def.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
159x509_def.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 156x509_def.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
160x509_def.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 157x509_def.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
161x509_def.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 158x509_def.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
162x509_def.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 159x509_def.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
163x509_def.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 160x509_def.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
164x509_def.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 161x509_def.o: ../../include/openssl/opensslconf.h
165x509_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 162x509_def.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
166x509_def.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 163x509_def.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
167x509_def.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 164x509_def.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -172,9 +169,8 @@ x509_err.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
172x509_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 169x509_err.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
173x509_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 170x509_err.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
174x509_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h 171x509_err.o: ../../include/openssl/err.h ../../include/openssl/evp.h
175x509_err.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 172x509_err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
176x509_err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 173x509_err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
177x509_err.o: ../../include/openssl/opensslconf.h
178x509_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 174x509_err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
179x509_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 175x509_err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
180x509_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 176x509_err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -186,9 +182,8 @@ x509_ext.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
186x509_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 182x509_ext.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
187x509_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 183x509_ext.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
188x509_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h 184x509_ext.o: ../../include/openssl/err.h ../../include/openssl/evp.h
189x509_ext.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 185x509_ext.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
190x509_ext.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 186x509_ext.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
191x509_ext.o: ../../include/openssl/opensslconf.h
192x509_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 187x509_ext.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
193x509_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 188x509_ext.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
194x509_ext.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 189x509_ext.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -201,22 +196,22 @@ x509_lu.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
201x509_lu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 196x509_lu.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
202x509_lu.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 197x509_lu.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
203x509_lu.o: ../../include/openssl/err.h ../../include/openssl/evp.h 198x509_lu.o: ../../include/openssl/err.h ../../include/openssl/evp.h
204x509_lu.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 199x509_lu.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
205x509_lu.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 200x509_lu.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
206x509_lu.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 201x509_lu.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
207x509_lu.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 202x509_lu.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
208x509_lu.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 203x509_lu.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
209x509_lu.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 204x509_lu.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
210x509_lu.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 205x509_lu.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
211x509_lu.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_lu.c 206x509_lu.o: ../cryptlib.h x509_lu.c
212x509_obj.o: ../../e_os.h ../../include/openssl/asn1.h 207x509_obj.o: ../../e_os.h ../../include/openssl/asn1.h
213x509_obj.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 208x509_obj.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
214x509_obj.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 209x509_obj.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
215x509_obj.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 210x509_obj.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
216x509_obj.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 211x509_obj.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
217x509_obj.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 212x509_obj.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
218x509_obj.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 213x509_obj.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
219x509_obj.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 214x509_obj.o: ../../include/openssl/opensslconf.h
220x509_obj.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 215x509_obj.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
221x509_obj.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 216x509_obj.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
222x509_obj.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 217x509_obj.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -228,21 +223,20 @@ x509_r2x.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
228x509_r2x.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 223x509_r2x.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
229x509_r2x.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 224x509_r2x.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
230x509_r2x.o: ../../include/openssl/err.h ../../include/openssl/evp.h 225x509_r2x.o: ../../include/openssl/err.h ../../include/openssl/evp.h
231x509_r2x.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 226x509_r2x.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
232x509_r2x.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 227x509_r2x.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
233x509_r2x.o: ../../include/openssl/opensslconf.h
234x509_r2x.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 228x509_r2x.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
235x509_r2x.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 229x509_r2x.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
236x509_r2x.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 230x509_r2x.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
237x509_r2x.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 231x509_r2x.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
238x509_r2x.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x509_r2x.c 232x509_r2x.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x509_r2x.c
239x509_req.o: ../../e_os.h ../../include/openssl/asn1.h 233x509_req.o: ../../e_os.h ../../include/openssl/asn1.h
240x509_req.o: ../../include/openssl/bio.h ../../include/openssl/bn.h 234x509_req.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
241x509_req.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h 235x509_req.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
242x509_req.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 236x509_req.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
243x509_req.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 237x509_req.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
244x509_req.o: ../../include/openssl/err.h ../../include/openssl/evp.h 238x509_req.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
245x509_req.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 239x509_req.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
246x509_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 240x509_req.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
247x509_req.o: ../../include/openssl/opensslconf.h 241x509_req.o: ../../include/openssl/opensslconf.h
248x509_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 242x509_req.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
@@ -256,9 +250,9 @@ x509_set.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
256x509_set.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 250x509_set.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
257x509_set.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 251x509_set.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
258x509_set.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 252x509_set.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
259x509_set.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 253x509_set.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
260x509_set.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 254x509_set.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
261x509_set.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 255x509_set.o: ../../include/openssl/opensslconf.h
262x509_set.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 256x509_set.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
263x509_set.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 257x509_set.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
264x509_set.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 258x509_set.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -270,9 +264,8 @@ x509_trs.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
270x509_trs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 264x509_trs.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
271x509_trs.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 265x509_trs.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
272x509_trs.o: ../../include/openssl/err.h ../../include/openssl/evp.h 266x509_trs.o: ../../include/openssl/err.h ../../include/openssl/evp.h
273x509_trs.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 267x509_trs.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
274x509_trs.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 268x509_trs.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
275x509_trs.o: ../../include/openssl/opensslconf.h
276x509_trs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 269x509_trs.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
277x509_trs.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 270x509_trs.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
278x509_trs.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 271x509_trs.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -284,9 +277,9 @@ x509_txt.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
284x509_txt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 277x509_txt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
285x509_txt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 278x509_txt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
286x509_txt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 279x509_txt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
287x509_txt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 280x509_txt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
288x509_txt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 281x509_txt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
289x509_txt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 282x509_txt.o: ../../include/openssl/opensslconf.h
290x509_txt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 283x509_txt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
291x509_txt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 284x509_txt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
292x509_txt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 285x509_txt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -298,23 +291,22 @@ x509_v3.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
298x509_v3.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 291x509_v3.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
299x509_v3.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 292x509_v3.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
300x509_v3.o: ../../include/openssl/err.h ../../include/openssl/evp.h 293x509_v3.o: ../../include/openssl/err.h ../../include/openssl/evp.h
301x509_v3.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 294x509_v3.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
302x509_v3.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 295x509_v3.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
303x509_v3.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 296x509_v3.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
304x509_v3.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 297x509_v3.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
305x509_v3.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 298x509_v3.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
306x509_v3.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 299x509_v3.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
307x509_v3.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 300x509_v3.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
308x509_v3.o: ../../include/openssl/x509v3.h ../cryptlib.h x509_v3.c 301x509_v3.o: ../cryptlib.h x509_v3.c
309x509_vfy.o: ../../e_os.h ../../include/openssl/asn1.h 302x509_vfy.o: ../../e_os.h ../../include/openssl/asn1.h
310x509_vfy.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 303x509_vfy.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
311x509_vfy.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 304x509_vfy.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
312x509_vfy.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 305x509_vfy.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
313x509_vfy.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 306x509_vfy.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
314x509_vfy.o: ../../include/openssl/err.h ../../include/openssl/evp.h 307x509_vfy.o: ../../include/openssl/err.h ../../include/openssl/evp.h
315x509_vfy.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 308x509_vfy.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
316x509_vfy.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 309x509_vfy.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
317x509_vfy.o: ../../include/openssl/opensslconf.h
318x509_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 310x509_vfy.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
319x509_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 311x509_vfy.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
320x509_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 312x509_vfy.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -327,9 +319,8 @@ x509_vpm.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
327x509_vpm.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 319x509_vpm.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
328x509_vpm.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 320x509_vpm.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
329x509_vpm.o: ../../include/openssl/err.h ../../include/openssl/evp.h 321x509_vpm.o: ../../include/openssl/err.h ../../include/openssl/evp.h
330x509_vpm.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 322x509_vpm.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
331x509_vpm.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 323x509_vpm.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
332x509_vpm.o: ../../include/openssl/opensslconf.h
333x509_vpm.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 324x509_vpm.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
334x509_vpm.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 325x509_vpm.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
335x509_vpm.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 326x509_vpm.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -341,9 +332,9 @@ x509cset.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
341x509cset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 332x509cset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
342x509cset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 333x509cset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
343x509cset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 334x509cset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
344x509cset.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 335x509cset.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
345x509cset.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 336x509cset.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
346x509cset.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 337x509cset.o: ../../include/openssl/opensslconf.h
347x509cset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 338x509cset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
348x509cset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 339x509cset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
349x509cset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 340x509cset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -354,9 +345,9 @@ x509name.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
354x509name.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 345x509name.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
355x509name.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 346x509name.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
356x509name.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 347x509name.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
357x509name.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 348x509name.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
358x509name.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 349x509name.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
359x509name.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 350x509name.o: ../../include/openssl/opensslconf.h
360x509name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 351x509name.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
361x509name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 352x509name.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
362x509name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 353x509name.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -367,9 +358,9 @@ x509rset.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
367x509rset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 358x509rset.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
368x509rset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 359x509rset.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
369x509rset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 360x509rset.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
370x509rset.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 361x509rset.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
371x509rset.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 362x509rset.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
372x509rset.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 363x509rset.o: ../../include/openssl/opensslconf.h
373x509rset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 364x509rset.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
374x509rset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 365x509rset.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
375x509rset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 366x509rset.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -380,9 +371,9 @@ x509spki.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
380x509spki.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 371x509spki.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
381x509spki.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 372x509spki.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
382x509spki.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 373x509spki.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
383x509spki.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 374x509spki.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
384x509spki.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 375x509spki.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
385x509spki.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 376x509spki.o: ../../include/openssl/opensslconf.h
386x509spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 377x509spki.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
387x509spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 378x509spki.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
388x509spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 379x509spki.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -393,9 +384,9 @@ x509type.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
393x509type.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 384x509type.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
394x509type.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 385x509type.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
395x509type.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 386x509type.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
396x509type.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 387x509type.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
397x509type.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 388x509type.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
398x509type.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 389x509type.o: ../../include/openssl/opensslconf.h
399x509type.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 390x509type.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
400x509type.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 391x509type.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
401x509type.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 392x509type.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -406,12 +397,11 @@ x_all.o: ../../include/openssl/buffer.h ../../include/openssl/crypto.h
406x_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h 397x_all.o: ../../include/openssl/dsa.h ../../include/openssl/e_os2.h
407x_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 398x_all.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
408x_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 399x_all.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
409x_all.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 400x_all.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
410x_all.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 401x_all.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
411x_all.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 402x_all.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
412x_all.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 403x_all.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
413x_all.o: ../../include/openssl/pkcs7.h ../../include/openssl/rsa.h 404x_all.o: ../../include/openssl/rsa.h ../../include/openssl/safestack.h
414x_all.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 405x_all.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
415x_all.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 406x_all.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
416x_all.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 407x_all.o: ../../include/openssl/x509_vfy.h ../cryptlib.h x_all.c
417x_all.o: ../cryptlib.h x_all.c
diff --git a/src/lib/libssl/src/crypto/x509/by_dir.c b/src/lib/libssl/src/crypto/x509/by_dir.c
index 341e0ba6a4..27ca5150c1 100644
--- a/src/lib/libssl/src/crypto/x509/by_dir.c
+++ b/src/lib/libssl/src/crypto/x509/by_dir.c
@@ -65,28 +65,36 @@
65#ifndef NO_SYS_TYPES_H 65#ifndef NO_SYS_TYPES_H
66# include <sys/types.h> 66# include <sys/types.h>
67#endif 67#endif
68#ifdef MAC_OS_pre_X 68#ifndef OPENSSL_NO_POSIX_IO
69# include <stat.h>
70#else
71# include <sys/stat.h> 69# include <sys/stat.h>
72#endif 70#endif
73 71
74#include <openssl/lhash.h> 72#include <openssl/lhash.h>
75#include <openssl/x509.h> 73#include <openssl/x509.h>
76 74
77#ifdef _WIN32 75
78#define stat _stat 76typedef struct lookup_dir_hashes_st
79#endif 77 {
78 unsigned long hash;
79 int suffix;
80 } BY_DIR_HASH;
81
82typedef struct lookup_dir_entry_st
83 {
84 char *dir;
85 int dir_type;
86 STACK_OF(BY_DIR_HASH) *hashes;
87 } BY_DIR_ENTRY;
80 88
81typedef struct lookup_dir_st 89typedef struct lookup_dir_st
82 { 90 {
83 BUF_MEM *buffer; 91 BUF_MEM *buffer;
84 int num_dirs; 92 STACK_OF(BY_DIR_ENTRY) *dirs;
85 char **dirs;
86 int *dirs_type;
87 int num_dirs_alloced;
88 } BY_DIR; 93 } BY_DIR;
89 94
95DECLARE_STACK_OF(BY_DIR_HASH)
96DECLARE_STACK_OF(BY_DIR_ENTRY)
97
90static int dir_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl, 98static int dir_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl,
91 char **ret); 99 char **ret);
92static int new_dir(X509_LOOKUP *lu); 100static int new_dir(X509_LOOKUP *lu);
@@ -127,7 +135,7 @@ static int dir_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl,
127 case X509_L_ADD_DIR: 135 case X509_L_ADD_DIR:
128 if (argl == X509_FILETYPE_DEFAULT) 136 if (argl == X509_FILETYPE_DEFAULT)
129 { 137 {
130 dir=(char *)Getenv(X509_get_default_cert_dir_env()); 138 dir=(char *)getenv(X509_get_default_cert_dir_env());
131 if (dir) 139 if (dir)
132 ret=add_cert_dir(ld,dir,X509_FILETYPE_PEM); 140 ret=add_cert_dir(ld,dir,X509_FILETYPE_PEM);
133 else 141 else
@@ -156,34 +164,51 @@ static int new_dir(X509_LOOKUP *lu)
156 OPENSSL_free(a); 164 OPENSSL_free(a);
157 return(0); 165 return(0);
158 } 166 }
159 a->num_dirs=0;
160 a->dirs=NULL; 167 a->dirs=NULL;
161 a->dirs_type=NULL;
162 a->num_dirs_alloced=0;
163 lu->method_data=(char *)a; 168 lu->method_data=(char *)a;
164 return(1); 169 return(1);
165 } 170 }
166 171
172static void by_dir_hash_free(BY_DIR_HASH *hash)
173 {
174 OPENSSL_free(hash);
175 }
176
177static int by_dir_hash_cmp(const BY_DIR_HASH * const *a,
178 const BY_DIR_HASH * const *b)
179 {
180 if ((*a)->hash > (*b)->hash)
181 return 1;
182 if ((*a)->hash < (*b)->hash)
183 return -1;
184 return 0;
185 }
186
187static void by_dir_entry_free(BY_DIR_ENTRY *ent)
188 {
189 if (ent->dir)
190 OPENSSL_free(ent->dir);
191 if (ent->hashes)
192 sk_BY_DIR_HASH_pop_free(ent->hashes, by_dir_hash_free);
193 OPENSSL_free(ent);
194 }
195
167static void free_dir(X509_LOOKUP *lu) 196static void free_dir(X509_LOOKUP *lu)
168 { 197 {
169 BY_DIR *a; 198 BY_DIR *a;
170 int i;
171 199
172 a=(BY_DIR *)lu->method_data; 200 a=(BY_DIR *)lu->method_data;
173 for (i=0; i<a->num_dirs; i++) 201 if (a->dirs != NULL)
174 if (a->dirs[i] != NULL) OPENSSL_free(a->dirs[i]); 202 sk_BY_DIR_ENTRY_pop_free(a->dirs, by_dir_entry_free);
175 if (a->dirs != NULL) OPENSSL_free(a->dirs); 203 if (a->buffer != NULL)
176 if (a->dirs_type != NULL) OPENSSL_free(a->dirs_type); 204 BUF_MEM_free(a->buffer);
177 if (a->buffer != NULL) BUF_MEM_free(a->buffer);
178 OPENSSL_free(a); 205 OPENSSL_free(a);
179 } 206 }
180 207
181static int add_cert_dir(BY_DIR *ctx, const char *dir, int type) 208static int add_cert_dir(BY_DIR *ctx, const char *dir, int type)
182 { 209 {
183 int j,len; 210 int j,len;
184 int *ip;
185 const char *s,*ss,*p; 211 const char *s,*ss,*p;
186 char **pp;
187 212
188 if (dir == NULL || !*dir) 213 if (dir == NULL || !*dir)
189 { 214 {
@@ -197,49 +222,52 @@ static int add_cert_dir(BY_DIR *ctx, const char *dir, int type)
197 { 222 {
198 if ((*p == LIST_SEPARATOR_CHAR) || (*p == '\0')) 223 if ((*p == LIST_SEPARATOR_CHAR) || (*p == '\0'))
199 { 224 {
225 BY_DIR_ENTRY *ent;
200 ss=s; 226 ss=s;
201 s=p+1; 227 s=p+1;
202 len=(int)(p-ss); 228 len=(int)(p-ss);
203 if (len == 0) continue; 229 if (len == 0) continue;
204 for (j=0; j<ctx->num_dirs; j++) 230 for (j=0; j < sk_BY_DIR_ENTRY_num(ctx->dirs); j++)
205 if (strlen(ctx->dirs[j]) == (size_t)len && 231 {
206 strncmp(ctx->dirs[j],ss,(unsigned int)len) == 0) 232 ent = sk_BY_DIR_ENTRY_value(ctx->dirs, j);
233 if (strlen(ent->dir) == (size_t)len &&
234 strncmp(ent->dir,ss,(unsigned int)len) == 0)
207 break; 235 break;
208 if (j<ctx->num_dirs) 236 }
237 if (j < sk_BY_DIR_ENTRY_num(ctx->dirs))
209 continue; 238 continue;
210 if (ctx->num_dirs_alloced < (ctx->num_dirs+1)) 239 if (ctx->dirs == NULL)
211 { 240 {
212 ctx->num_dirs_alloced+=10; 241 ctx->dirs = sk_BY_DIR_ENTRY_new_null();
213 pp=(char **)OPENSSL_malloc(ctx->num_dirs_alloced* 242 if (!ctx->dirs)
214 sizeof(char *));
215 ip=(int *)OPENSSL_malloc(ctx->num_dirs_alloced*
216 sizeof(int));
217 if ((pp == NULL) || (ip == NULL))
218 { 243 {
219 X509err(X509_F_ADD_CERT_DIR,ERR_R_MALLOC_FAILURE); 244 X509err(X509_F_ADD_CERT_DIR,ERR_R_MALLOC_FAILURE);
220 return(0); 245 return 0;
221 } 246 }
222 memcpy(pp,ctx->dirs,(ctx->num_dirs_alloced-10)*
223 sizeof(char *));
224 memcpy(ip,ctx->dirs_type,(ctx->num_dirs_alloced-10)*
225 sizeof(int));
226 if (ctx->dirs != NULL)
227 OPENSSL_free(ctx->dirs);
228 if (ctx->dirs_type != NULL)
229 OPENSSL_free(ctx->dirs_type);
230 ctx->dirs=pp;
231 ctx->dirs_type=ip;
232 } 247 }
233 ctx->dirs_type[ctx->num_dirs]=type; 248 ent = OPENSSL_malloc(sizeof(BY_DIR_ENTRY));
234 ctx->dirs[ctx->num_dirs]=(char *)OPENSSL_malloc((unsigned int)len+1); 249 if (!ent)
235 if (ctx->dirs[ctx->num_dirs] == NULL) return(0); 250 return 0;
236 strncpy(ctx->dirs[ctx->num_dirs],ss,(unsigned int)len); 251 ent->dir_type = type;
237 ctx->dirs[ctx->num_dirs][len]='\0'; 252 ent->hashes = sk_BY_DIR_HASH_new(by_dir_hash_cmp);
238 ctx->num_dirs++; 253 ent->dir = OPENSSL_malloc((unsigned int)len+1);
254 if (!ent->dir || !ent->hashes)
255 {
256 by_dir_entry_free(ent);
257 return 0;
258 }
259 strncpy(ent->dir,ss,(unsigned int)len);
260 ent->dir[len] = '\0';
261 if (!sk_BY_DIR_ENTRY_push(ctx->dirs, ent))
262 {
263 by_dir_entry_free(ent);
264 return 0;
265 }
239 } 266 }
240 if (*p == '\0') break; 267 if (*p == '\0')
268 break;
241 } 269 }
242 return(1); 270 return 1;
243 } 271 }
244 272
245static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name, 273static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name,
@@ -260,7 +288,6 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name,
260 int i,j,k; 288 int i,j,k;
261 unsigned long h; 289 unsigned long h;
262 BUF_MEM *b=NULL; 290 BUF_MEM *b=NULL;
263 struct stat st;
264 X509_OBJECT stmp,*tmp; 291 X509_OBJECT stmp,*tmp;
265 const char *postfix=""; 292 const char *postfix="";
266 293
@@ -296,20 +323,45 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name,
296 ctx=(BY_DIR *)xl->method_data; 323 ctx=(BY_DIR *)xl->method_data;
297 324
298 h=X509_NAME_hash(name); 325 h=X509_NAME_hash(name);
299 for (i=0; i<ctx->num_dirs; i++) 326 for (i=0; i < sk_BY_DIR_ENTRY_num(ctx->dirs); i++)
300 { 327 {
301 j=strlen(ctx->dirs[i])+1+8+6+1+1; 328 BY_DIR_ENTRY *ent;
329 int idx;
330 BY_DIR_HASH htmp, *hent;
331 ent = sk_BY_DIR_ENTRY_value(ctx->dirs, i);
332 j=strlen(ent->dir)+1+8+6+1+1;
302 if (!BUF_MEM_grow(b,j)) 333 if (!BUF_MEM_grow(b,j))
303 { 334 {
304 X509err(X509_F_GET_CERT_BY_SUBJECT,ERR_R_MALLOC_FAILURE); 335 X509err(X509_F_GET_CERT_BY_SUBJECT,ERR_R_MALLOC_FAILURE);
305 goto finish; 336 goto finish;
306 } 337 }
307 k=0; 338 if (type == X509_LU_CRL && ent->hashes)
339 {
340 htmp.hash = h;
341 CRYPTO_r_lock(CRYPTO_LOCK_X509_STORE);
342 idx = sk_BY_DIR_HASH_find(ent->hashes, &htmp);
343 if (idx >= 0)
344 {
345 hent = sk_BY_DIR_HASH_value(ent->hashes, idx);
346 k = hent->suffix;
347 }
348 else
349 {
350 hent = NULL;
351 k=0;
352 }
353 CRYPTO_r_unlock(CRYPTO_LOCK_X509_STORE);
354 }
355 else
356 {
357 k = 0;
358 hent = NULL;
359 }
308 for (;;) 360 for (;;)
309 { 361 {
310 char c = '/'; 362 char c = '/';
311#ifdef OPENSSL_SYS_VMS 363#ifdef OPENSSL_SYS_VMS
312 c = ctx->dirs[i][strlen(ctx->dirs[i])-1]; 364 c = ent->dir[strlen(ent->dir)-1];
313 if (c != ':' && c != '>' && c != ']') 365 if (c != ':' && c != '>' && c != ']')
314 { 366 {
315 /* If no separator is present, we assume the 367 /* If no separator is present, we assume the
@@ -330,41 +382,86 @@ static int get_cert_by_subject(X509_LOOKUP *xl, int type, X509_NAME *name,
330 /* This is special. When c == '\0', no 382 /* This is special. When c == '\0', no
331 directory separator should be added. */ 383 directory separator should be added. */
332 BIO_snprintf(b->data,b->max, 384 BIO_snprintf(b->data,b->max,
333 "%s%08lx.%s%d",ctx->dirs[i],h, 385 "%s%08lx.%s%d",ent->dir,h,
334 postfix,k); 386 postfix,k);
335 } 387 }
336 else 388 else
337 { 389 {
338 BIO_snprintf(b->data,b->max, 390 BIO_snprintf(b->data,b->max,
339 "%s%c%08lx.%s%d",ctx->dirs[i],c,h, 391 "%s%c%08lx.%s%d",ent->dir,c,h,
340 postfix,k); 392 postfix,k);
341 } 393 }
342 k++; 394#ifndef OPENSSL_NO_POSIX_IO
395#ifdef _WIN32
396#define stat _stat
397#endif
398 {
399 struct stat st;
343 if (stat(b->data,&st) < 0) 400 if (stat(b->data,&st) < 0)
344 break; 401 break;
402 }
403#endif
345 /* found one. */ 404 /* found one. */
346 if (type == X509_LU_X509) 405 if (type == X509_LU_X509)
347 { 406 {
348 if ((X509_load_cert_file(xl,b->data, 407 if ((X509_load_cert_file(xl,b->data,
349 ctx->dirs_type[i])) == 0) 408 ent->dir_type)) == 0)
350 break; 409 break;
351 } 410 }
352 else if (type == X509_LU_CRL) 411 else if (type == X509_LU_CRL)
353 { 412 {
354 if ((X509_load_crl_file(xl,b->data, 413 if ((X509_load_crl_file(xl,b->data,
355 ctx->dirs_type[i])) == 0) 414 ent->dir_type)) == 0)
356 break; 415 break;
357 } 416 }
358 /* else case will caught higher up */ 417 /* else case will caught higher up */
418 k++;
359 } 419 }
360 420
361 /* we have added it to the cache so now pull 421 /* we have added it to the cache so now pull
362 * it out again */ 422 * it out again */
363 CRYPTO_r_lock(CRYPTO_LOCK_X509_STORE); 423 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
364 j = sk_X509_OBJECT_find(xl->store_ctx->objs,&stmp); 424 j = sk_X509_OBJECT_find(xl->store_ctx->objs,&stmp);
365 if(j != -1) tmp=sk_X509_OBJECT_value(xl->store_ctx->objs,j); 425 if(j != -1) tmp=sk_X509_OBJECT_value(xl->store_ctx->objs,j);
366 else tmp = NULL; 426 else tmp = NULL;
367 CRYPTO_r_unlock(CRYPTO_LOCK_X509_STORE); 427 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
428
429
430 /* If a CRL, update the last file suffix added for this */
431
432 if (type == X509_LU_CRL)
433 {
434 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
435 /* Look for entry again in case another thread added
436 * an entry first.
437 */
438 if (!hent)
439 {
440 htmp.hash = h;
441 idx = sk_BY_DIR_HASH_find(ent->hashes, &htmp);
442 if (idx >= 0)
443 hent =
444 sk_BY_DIR_HASH_value(ent->hashes, idx);
445 }
446 if (!hent)
447 {
448 hent = OPENSSL_malloc(sizeof(BY_DIR_HASH));
449 hent->hash = h;
450 hent->suffix = k;
451 if (!sk_BY_DIR_HASH_push(ent->hashes, hent))
452 {
453 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
454 OPENSSL_free(hent);
455 ok = 0;
456 goto finish;
457 }
458 }
459 else if (hent->suffix < k)
460 hent->suffix = k;
461
462 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
463
464 }
368 465
369 if (tmp != NULL) 466 if (tmp != NULL)
370 { 467 {
@@ -383,4 +480,3 @@ finish:
383 if (b != NULL) BUF_MEM_free(b); 480 if (b != NULL) BUF_MEM_free(b);
384 return(ok); 481 return(ok);
385 } 482 }
386
diff --git a/src/lib/libssl/src/crypto/x509/by_file.c b/src/lib/libssl/src/crypto/x509/by_file.c
index a5e0d4aefa..57b08ee094 100644
--- a/src/lib/libssl/src/crypto/x509/by_file.c
+++ b/src/lib/libssl/src/crypto/x509/by_file.c
@@ -100,7 +100,7 @@ static int by_file_ctrl(X509_LOOKUP *ctx, int cmd, const char *argp, long argl,
100 case X509_L_FILE_LOAD: 100 case X509_L_FILE_LOAD:
101 if (argl == X509_FILETYPE_DEFAULT) 101 if (argl == X509_FILETYPE_DEFAULT)
102 { 102 {
103 file = (char *)Getenv(X509_get_default_cert_file_env()); 103 file = (char *)getenv(X509_get_default_cert_file_env());
104 if (file) 104 if (file)
105 ok = (X509_load_cert_crl_file(ctx,file, 105 ok = (X509_load_cert_crl_file(ctx,file,
106 X509_FILETYPE_PEM) != 0); 106 X509_FILETYPE_PEM) != 0);
diff --git a/src/lib/libssl/src/crypto/x509/x509.h b/src/lib/libssl/src/crypto/x509/x509.h
index e71b5257e5..604f4fb27f 100644
--- a/src/lib/libssl/src/crypto/x509/x509.h
+++ b/src/lib/libssl/src/crypto/x509/x509.h
@@ -116,6 +116,7 @@ extern "C" {
116/* Under Win32 these are defined in wincrypt.h */ 116/* Under Win32 these are defined in wincrypt.h */
117#undef X509_NAME 117#undef X509_NAME
118#undef X509_CERT_PAIR 118#undef X509_CERT_PAIR
119#undef X509_EXTENSIONS
119#endif 120#endif
120 121
121#define X509_FILETYPE_PEM 1 122#define X509_FILETYPE_PEM 1
@@ -156,12 +157,12 @@ typedef struct X509_val_st
156 ASN1_TIME *notAfter; 157 ASN1_TIME *notAfter;
157 } X509_VAL; 158 } X509_VAL;
158 159
159typedef struct X509_pubkey_st 160struct X509_pubkey_st
160 { 161 {
161 X509_ALGOR *algor; 162 X509_ALGOR *algor;
162 ASN1_BIT_STRING *public_key; 163 ASN1_BIT_STRING *public_key;
163 EVP_PKEY *pkey; 164 EVP_PKEY *pkey;
164 } X509_PUBKEY; 165 };
165 166
166typedef struct X509_sig_st 167typedef struct X509_sig_st
167 { 168 {
@@ -190,7 +191,9 @@ struct X509_name_st
190#else 191#else
191 char *bytes; 192 char *bytes;
192#endif 193#endif
193 unsigned long hash; /* Keep the hash around for lookups */ 194/* unsigned long hash; Keep the hash around for lookups */
195 unsigned char *canon_enc;
196 int canon_enclen;
194 } /* X509_NAME */; 197 } /* X509_NAME */;
195 198
196DECLARE_STACK_OF(X509_NAME) 199DECLARE_STACK_OF(X509_NAME)
@@ -289,8 +292,11 @@ struct x509_st
289 unsigned long ex_xkusage; 292 unsigned long ex_xkusage;
290 unsigned long ex_nscert; 293 unsigned long ex_nscert;
291 ASN1_OCTET_STRING *skid; 294 ASN1_OCTET_STRING *skid;
292 struct AUTHORITY_KEYID_st *akid; 295 AUTHORITY_KEYID *akid;
293 X509_POLICY_CACHE *policy_cache; 296 X509_POLICY_CACHE *policy_cache;
297 STACK_OF(DIST_POINT) *crldp;
298 STACK_OF(GENERAL_NAME) *altname;
299 NAME_CONSTRAINTS *nc;
294#ifndef OPENSSL_NO_RFC3779 300#ifndef OPENSSL_NO_RFC3779
295 STACK_OF(IPAddressFamily) *rfc3779_addr; 301 STACK_OF(IPAddressFamily) *rfc3779_addr;
296 struct ASIdentifiers_st *rfc3779_asid; 302 struct ASIdentifiers_st *rfc3779_asid;
@@ -333,10 +339,11 @@ typedef struct x509_cert_pair_st {
333#define X509_TRUST_OBJECT_SIGN 5 339#define X509_TRUST_OBJECT_SIGN 5
334#define X509_TRUST_OCSP_SIGN 6 340#define X509_TRUST_OCSP_SIGN 6
335#define X509_TRUST_OCSP_REQUEST 7 341#define X509_TRUST_OCSP_REQUEST 7
342#define X509_TRUST_TSA 8
336 343
337/* Keep these up to date! */ 344/* Keep these up to date! */
338#define X509_TRUST_MIN 1 345#define X509_TRUST_MIN 1
339#define X509_TRUST_MAX 7 346#define X509_TRUST_MAX 8
340 347
341 348
342/* trust_flags values */ 349/* trust_flags values */
@@ -423,13 +430,17 @@ typedef struct x509_cert_pair_st {
423 XN_FLAG_FN_LN | \ 430 XN_FLAG_FN_LN | \
424 XN_FLAG_FN_ALIGN) 431 XN_FLAG_FN_ALIGN)
425 432
426typedef struct X509_revoked_st 433struct x509_revoked_st
427 { 434 {
428 ASN1_INTEGER *serialNumber; 435 ASN1_INTEGER *serialNumber;
429 ASN1_TIME *revocationDate; 436 ASN1_TIME *revocationDate;
430 STACK_OF(X509_EXTENSION) /* optional */ *extensions; 437 STACK_OF(X509_EXTENSION) /* optional */ *extensions;
438 /* Set up if indirect CRL */
439 STACK_OF(GENERAL_NAME) *issuer;
440 /* Revocation reason */
441 int reason;
431 int sequence; /* load sequence */ 442 int sequence; /* load sequence */
432 } X509_REVOKED; 443 };
433 444
434DECLARE_STACK_OF(X509_REVOKED) 445DECLARE_STACK_OF(X509_REVOKED)
435DECLARE_ASN1_SET_OF(X509_REVOKED) 446DECLARE_ASN1_SET_OF(X509_REVOKED)
@@ -453,6 +464,22 @@ struct X509_crl_st
453 X509_ALGOR *sig_alg; 464 X509_ALGOR *sig_alg;
454 ASN1_BIT_STRING *signature; 465 ASN1_BIT_STRING *signature;
455 int references; 466 int references;
467 int flags;
468 /* Copies of various extensions */
469 AUTHORITY_KEYID *akid;
470 ISSUING_DIST_POINT *idp;
471 /* Convenient breakdown of IDP */
472 int idp_flags;
473 int idp_reasons;
474 /* CRL and base CRL numbers for delta processing */
475 ASN1_INTEGER *crl_number;
476 ASN1_INTEGER *base_crl_number;
477#ifndef OPENSSL_NO_SHA
478 unsigned char sha1_hash[SHA_DIGEST_LENGTH];
479#endif
480 STACK_OF(GENERAL_NAMES) *issuers;
481 const X509_CRL_METHOD *meth;
482 void *meth_data;
456 } /* X509_CRL */; 483 } /* X509_CRL */;
457 484
458DECLARE_STACK_OF(X509_CRL) 485DECLARE_STACK_OF(X509_CRL)
@@ -551,18 +578,19 @@ X509_ALGOR *prf;
551 578
552/* PKCS#8 private key info structure */ 579/* PKCS#8 private key info structure */
553 580
554typedef struct pkcs8_priv_key_info_st 581struct pkcs8_priv_key_info_st
555 { 582 {
556 int broken; /* Flag for various broken formats */ 583 int broken; /* Flag for various broken formats */
557#define PKCS8_OK 0 584#define PKCS8_OK 0
558#define PKCS8_NO_OCTET 1 585#define PKCS8_NO_OCTET 1
559#define PKCS8_EMBEDDED_PARAM 2 586#define PKCS8_EMBEDDED_PARAM 2
560#define PKCS8_NS_DB 3 587#define PKCS8_NS_DB 3
588#define PKCS8_NEG_PRIVKEY 4
561 ASN1_INTEGER *version; 589 ASN1_INTEGER *version;
562 X509_ALGOR *pkeyalg; 590 X509_ALGOR *pkeyalg;
563 ASN1_TYPE *pkey; /* Should be OCTET STRING but some are broken */ 591 ASN1_TYPE *pkey; /* Should be OCTET STRING but some are broken */
564 STACK_OF(X509_ATTRIBUTE) *attributes; 592 STACK_OF(X509_ATTRIBUTE) *attributes;
565 } PKCS8_PRIV_KEY_INFO; 593 };
566 594
567#ifdef __cplusplus 595#ifdef __cplusplus
568} 596}
@@ -575,151 +603,6 @@ typedef struct pkcs8_priv_key_info_st
575extern "C" { 603extern "C" {
576#endif 604#endif
577 605
578#ifdef SSLEAY_MACROS
579#define X509_verify(a,r) ASN1_verify((int (*)())i2d_X509_CINF,a->sig_alg,\
580 a->signature,(char *)a->cert_info,r)
581#define X509_REQ_verify(a,r) ASN1_verify((int (*)())i2d_X509_REQ_INFO, \
582 a->sig_alg,a->signature,(char *)a->req_info,r)
583#define X509_CRL_verify(a,r) ASN1_verify((int (*)())i2d_X509_CRL_INFO, \
584 a->sig_alg, a->signature,(char *)a->crl,r)
585
586#define X509_sign(x,pkey,md) \
587 ASN1_sign((int (*)())i2d_X509_CINF, x->cert_info->signature, \
588 x->sig_alg, x->signature, (char *)x->cert_info,pkey,md)
589#define X509_REQ_sign(x,pkey,md) \
590 ASN1_sign((int (*)())i2d_X509_REQ_INFO,x->sig_alg, NULL, \
591 x->signature, (char *)x->req_info,pkey,md)
592#define X509_CRL_sign(x,pkey,md) \
593 ASN1_sign((int (*)())i2d_X509_CRL_INFO,x->crl->sig_alg,x->sig_alg, \
594 x->signature, (char *)x->crl,pkey,md)
595#define NETSCAPE_SPKI_sign(x,pkey,md) \
596 ASN1_sign((int (*)())i2d_NETSCAPE_SPKAC, x->sig_algor,NULL, \
597 x->signature, (char *)x->spkac,pkey,md)
598
599#define X509_dup(x509) (X509 *)ASN1_dup((int (*)())i2d_X509, \
600 (char *(*)())d2i_X509,(char *)x509)
601#define X509_ATTRIBUTE_dup(xa) (X509_ATTRIBUTE *)ASN1_dup(\
602 (int (*)())i2d_X509_ATTRIBUTE, \
603 (char *(*)())d2i_X509_ATTRIBUTE,(char *)xa)
604#define X509_EXTENSION_dup(ex) (X509_EXTENSION *)ASN1_dup( \
605 (int (*)())i2d_X509_EXTENSION, \
606 (char *(*)())d2i_X509_EXTENSION,(char *)ex)
607#define d2i_X509_fp(fp,x509) (X509 *)ASN1_d2i_fp((char *(*)())X509_new, \
608 (char *(*)())d2i_X509, (fp),(unsigned char **)(x509))
609#define i2d_X509_fp(fp,x509) ASN1_i2d_fp(i2d_X509,fp,(unsigned char *)x509)
610#define d2i_X509_bio(bp,x509) (X509 *)ASN1_d2i_bio((char *(*)())X509_new, \
611 (char *(*)())d2i_X509, (bp),(unsigned char **)(x509))
612#define i2d_X509_bio(bp,x509) ASN1_i2d_bio(i2d_X509,bp,(unsigned char *)x509)
613
614#define X509_CRL_dup(crl) (X509_CRL *)ASN1_dup((int (*)())i2d_X509_CRL, \
615 (char *(*)())d2i_X509_CRL,(char *)crl)
616#define d2i_X509_CRL_fp(fp,crl) (X509_CRL *)ASN1_d2i_fp((char *(*)()) \
617 X509_CRL_new,(char *(*)())d2i_X509_CRL, (fp),\
618 (unsigned char **)(crl))
619#define i2d_X509_CRL_fp(fp,crl) ASN1_i2d_fp(i2d_X509_CRL,fp,\
620 (unsigned char *)crl)
621#define d2i_X509_CRL_bio(bp,crl) (X509_CRL *)ASN1_d2i_bio((char *(*)()) \
622 X509_CRL_new,(char *(*)())d2i_X509_CRL, (bp),\
623 (unsigned char **)(crl))
624#define i2d_X509_CRL_bio(bp,crl) ASN1_i2d_bio(i2d_X509_CRL,bp,\
625 (unsigned char *)crl)
626
627#define PKCS7_dup(p7) (PKCS7 *)ASN1_dup((int (*)())i2d_PKCS7, \
628 (char *(*)())d2i_PKCS7,(char *)p7)
629#define d2i_PKCS7_fp(fp,p7) (PKCS7 *)ASN1_d2i_fp((char *(*)()) \
630 PKCS7_new,(char *(*)())d2i_PKCS7, (fp),\
631 (unsigned char **)(p7))
632#define i2d_PKCS7_fp(fp,p7) ASN1_i2d_fp(i2d_PKCS7,fp,\
633 (unsigned char *)p7)
634#define d2i_PKCS7_bio(bp,p7) (PKCS7 *)ASN1_d2i_bio((char *(*)()) \
635 PKCS7_new,(char *(*)())d2i_PKCS7, (bp),\
636 (unsigned char **)(p7))
637#define i2d_PKCS7_bio(bp,p7) ASN1_i2d_bio(i2d_PKCS7,bp,\
638 (unsigned char *)p7)
639
640#define X509_REQ_dup(req) (X509_REQ *)ASN1_dup((int (*)())i2d_X509_REQ, \
641 (char *(*)())d2i_X509_REQ,(char *)req)
642#define d2i_X509_REQ_fp(fp,req) (X509_REQ *)ASN1_d2i_fp((char *(*)())\
643 X509_REQ_new, (char *(*)())d2i_X509_REQ, (fp),\
644 (unsigned char **)(req))
645#define i2d_X509_REQ_fp(fp,req) ASN1_i2d_fp(i2d_X509_REQ,fp,\
646 (unsigned char *)req)
647#define d2i_X509_REQ_bio(bp,req) (X509_REQ *)ASN1_d2i_bio((char *(*)())\
648 X509_REQ_new, (char *(*)())d2i_X509_REQ, (bp),\
649 (unsigned char **)(req))
650#define i2d_X509_REQ_bio(bp,req) ASN1_i2d_bio(i2d_X509_REQ,bp,\
651 (unsigned char *)req)
652
653#define RSAPublicKey_dup(rsa) (RSA *)ASN1_dup((int (*)())i2d_RSAPublicKey, \
654 (char *(*)())d2i_RSAPublicKey,(char *)rsa)
655#define RSAPrivateKey_dup(rsa) (RSA *)ASN1_dup((int (*)())i2d_RSAPrivateKey, \
656 (char *(*)())d2i_RSAPrivateKey,(char *)rsa)
657
658#define d2i_RSAPrivateKey_fp(fp,rsa) (RSA *)ASN1_d2i_fp((char *(*)())\
659 RSA_new,(char *(*)())d2i_RSAPrivateKey, (fp), \
660 (unsigned char **)(rsa))
661#define i2d_RSAPrivateKey_fp(fp,rsa) ASN1_i2d_fp(i2d_RSAPrivateKey,fp, \
662 (unsigned char *)rsa)
663#define d2i_RSAPrivateKey_bio(bp,rsa) (RSA *)ASN1_d2i_bio((char *(*)())\
664 RSA_new,(char *(*)())d2i_RSAPrivateKey, (bp), \
665 (unsigned char **)(rsa))
666#define i2d_RSAPrivateKey_bio(bp,rsa) ASN1_i2d_bio(i2d_RSAPrivateKey,bp, \
667 (unsigned char *)rsa)
668
669#define d2i_RSAPublicKey_fp(fp,rsa) (RSA *)ASN1_d2i_fp((char *(*)())\
670 RSA_new,(char *(*)())d2i_RSAPublicKey, (fp), \
671 (unsigned char **)(rsa))
672#define i2d_RSAPublicKey_fp(fp,rsa) ASN1_i2d_fp(i2d_RSAPublicKey,fp, \
673 (unsigned char *)rsa)
674#define d2i_RSAPublicKey_bio(bp,rsa) (RSA *)ASN1_d2i_bio((char *(*)())\
675 RSA_new,(char *(*)())d2i_RSAPublicKey, (bp), \
676 (unsigned char **)(rsa))
677#define i2d_RSAPublicKey_bio(bp,rsa) ASN1_i2d_bio(i2d_RSAPublicKey,bp, \
678 (unsigned char *)rsa)
679
680#define d2i_DSAPrivateKey_fp(fp,dsa) (DSA *)ASN1_d2i_fp((char *(*)())\
681 DSA_new,(char *(*)())d2i_DSAPrivateKey, (fp), \
682 (unsigned char **)(dsa))
683#define i2d_DSAPrivateKey_fp(fp,dsa) ASN1_i2d_fp(i2d_DSAPrivateKey,fp, \
684 (unsigned char *)dsa)
685#define d2i_DSAPrivateKey_bio(bp,dsa) (DSA *)ASN1_d2i_bio((char *(*)())\
686 DSA_new,(char *(*)())d2i_DSAPrivateKey, (bp), \
687 (unsigned char **)(dsa))
688#define i2d_DSAPrivateKey_bio(bp,dsa) ASN1_i2d_bio(i2d_DSAPrivateKey,bp, \
689 (unsigned char *)dsa)
690
691#define d2i_ECPrivateKey_fp(fp,ecdsa) (EC_KEY *)ASN1_d2i_fp((char *(*)())\
692 EC_KEY_new,(char *(*)())d2i_ECPrivateKey, (fp), \
693 (unsigned char **)(ecdsa))
694#define i2d_ECPrivateKey_fp(fp,ecdsa) ASN1_i2d_fp(i2d_ECPrivateKey,fp, \
695 (unsigned char *)ecdsa)
696#define d2i_ECPrivateKey_bio(bp,ecdsa) (EC_KEY *)ASN1_d2i_bio((char *(*)())\
697 EC_KEY_new,(char *(*)())d2i_ECPrivateKey, (bp), \
698 (unsigned char **)(ecdsa))
699#define i2d_ECPrivateKey_bio(bp,ecdsa) ASN1_i2d_bio(i2d_ECPrivateKey,bp, \
700 (unsigned char *)ecdsa)
701
702#define X509_ALGOR_dup(xn) (X509_ALGOR *)ASN1_dup((int (*)())i2d_X509_ALGOR,\
703 (char *(*)())d2i_X509_ALGOR,(char *)xn)
704
705#define X509_NAME_dup(xn) (X509_NAME *)ASN1_dup((int (*)())i2d_X509_NAME, \
706 (char *(*)())d2i_X509_NAME,(char *)xn)
707#define X509_NAME_ENTRY_dup(ne) (X509_NAME_ENTRY *)ASN1_dup( \
708 (int (*)())i2d_X509_NAME_ENTRY, \
709 (char *(*)())d2i_X509_NAME_ENTRY,\
710 (char *)ne)
711
712#define X509_digest(data,type,md,len) \
713 ASN1_digest((int (*)())i2d_X509,type,(char *)data,md,len)
714#define X509_NAME_digest(data,type,md,len) \
715 ASN1_digest((int (*)())i2d_X509_NAME,type,(char *)data,md,len)
716#ifndef PKCS7_ISSUER_AND_SERIAL_digest
717#define PKCS7_ISSUER_AND_SERIAL_digest(data,type,md,len) \
718 ASN1_digest((int (*)())i2d_PKCS7_ISSUER_AND_SERIAL,type,\
719 (char *)data,md,len)
720#endif
721#endif
722
723#define X509_EXT_PACK_UNKNOWN 1 606#define X509_EXT_PACK_UNKNOWN 1
724#define X509_EXT_PACK_STRING 2 607#define X509_EXT_PACK_STRING 2
725 608
@@ -740,6 +623,18 @@ extern "C" {
740#define X509_CRL_get_issuer(x) ((x)->crl->issuer) 623#define X509_CRL_get_issuer(x) ((x)->crl->issuer)
741#define X509_CRL_get_REVOKED(x) ((x)->crl->revoked) 624#define X509_CRL_get_REVOKED(x) ((x)->crl->revoked)
742 625
626void X509_CRL_set_default_method(const X509_CRL_METHOD *meth);
627X509_CRL_METHOD *X509_CRL_METHOD_new(
628 int (*crl_init)(X509_CRL *crl),
629 int (*crl_free)(X509_CRL *crl),
630 int (*crl_lookup)(X509_CRL *crl, X509_REVOKED **ret,
631 ASN1_INTEGER *ser, X509_NAME *issuer),
632 int (*crl_verify)(X509_CRL *crl, EVP_PKEY *pk));
633void X509_CRL_METHOD_free(X509_CRL_METHOD *m);
634
635void X509_CRL_set_meth_data(X509_CRL *crl, void *dat);
636void *X509_CRL_get_meth_data(X509_CRL *crl);
637
743/* This one is only used so that a binary form can output, as in 638/* This one is only used so that a binary form can output, as in
744 * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf) */ 639 * i2d_X509_NAME(X509_get_X509_PUBKEY(x),&buf) */
745#define X509_get_X509_PUBKEY(x) ((x)->cert_info->key) 640#define X509_get_X509_PUBKEY(x) ((x)->cert_info->key)
@@ -747,7 +642,6 @@ extern "C" {
747 642
748const char *X509_verify_cert_error_string(long n); 643const char *X509_verify_cert_error_string(long n);
749 644
750#ifndef SSLEAY_MACROS
751#ifndef OPENSSL_NO_EVP 645#ifndef OPENSSL_NO_EVP
752int X509_verify(X509 *a, EVP_PKEY *r); 646int X509_verify(X509 *a, EVP_PKEY *r);
753 647
@@ -872,11 +766,11 @@ void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval,
872X509_NAME *X509_NAME_dup(X509_NAME *xn); 766X509_NAME *X509_NAME_dup(X509_NAME *xn);
873X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne); 767X509_NAME_ENTRY *X509_NAME_ENTRY_dup(X509_NAME_ENTRY *ne);
874 768
875#endif /* !SSLEAY_MACROS */ 769int X509_cmp_time(const ASN1_TIME *s, time_t *t);
876 770int X509_cmp_current_time(const ASN1_TIME *s);
877int X509_cmp_time(ASN1_TIME *s, time_t *t);
878int X509_cmp_current_time(ASN1_TIME *s);
879ASN1_TIME * X509_time_adj(ASN1_TIME *s, long adj, time_t *t); 771ASN1_TIME * X509_time_adj(ASN1_TIME *s, long adj, time_t *t);
772ASN1_TIME * X509_time_adj_ex(ASN1_TIME *s,
773 int offset_day, long offset_sec, time_t *t);
880ASN1_TIME * X509_gmtime_adj(ASN1_TIME *s, long adj); 774ASN1_TIME * X509_gmtime_adj(ASN1_TIME *s, long adj);
881 775
882const char * X509_get_default_cert_area(void ); 776const char * X509_get_default_cert_area(void );
@@ -964,6 +858,9 @@ DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO)
964DECLARE_ASN1_FUNCTIONS(X509_CRL) 858DECLARE_ASN1_FUNCTIONS(X509_CRL)
965 859
966int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); 860int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev);
861int X509_CRL_get0_by_serial(X509_CRL *crl,
862 X509_REVOKED **ret, ASN1_INTEGER *serial);
863int X509_CRL_get0_by_cert(X509_CRL *crl, X509_REVOKED **ret, X509 *x);
967 864
968X509_PKEY * X509_PKEY_new(void ); 865X509_PKEY * X509_PKEY_new(void );
969void X509_PKEY_free(X509_PKEY *a); 866void X509_PKEY_free(X509_PKEY *a);
@@ -1007,8 +904,8 @@ int X509_set_issuer_name(X509 *x, X509_NAME *name);
1007X509_NAME * X509_get_issuer_name(X509 *a); 904X509_NAME * X509_get_issuer_name(X509 *a);
1008int X509_set_subject_name(X509 *x, X509_NAME *name); 905int X509_set_subject_name(X509 *x, X509_NAME *name);
1009X509_NAME * X509_get_subject_name(X509 *a); 906X509_NAME * X509_get_subject_name(X509 *a);
1010int X509_set_notBefore(X509 *x, ASN1_TIME *tm); 907int X509_set_notBefore(X509 *x, const ASN1_TIME *tm);
1011int X509_set_notAfter(X509 *x, ASN1_TIME *tm); 908int X509_set_notAfter(X509 *x, const ASN1_TIME *tm);
1012int X509_set_pubkey(X509 *x, EVP_PKEY *pkey); 909int X509_set_pubkey(X509 *x, EVP_PKEY *pkey);
1013EVP_PKEY * X509_get_pubkey(X509 *x); 910EVP_PKEY * X509_get_pubkey(X509 *x);
1014ASN1_BIT_STRING * X509_get0_pubkey_bitstr(const X509 *x); 911ASN1_BIT_STRING * X509_get0_pubkey_bitstr(const X509 *x);
@@ -1045,8 +942,8 @@ int X509_REQ_add1_attr_by_txt(X509_REQ *req,
1045 942
1046int X509_CRL_set_version(X509_CRL *x, long version); 943int X509_CRL_set_version(X509_CRL *x, long version);
1047int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name); 944int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name);
1048int X509_CRL_set_lastUpdate(X509_CRL *x, ASN1_TIME *tm); 945int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm);
1049int X509_CRL_set_nextUpdate(X509_CRL *x, ASN1_TIME *tm); 946int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm);
1050int X509_CRL_sort(X509_CRL *crl); 947int X509_CRL_sort(X509_CRL *crl);
1051 948
1052int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial); 949int X509_REVOKED_set_serialNumber(X509_REVOKED *x, ASN1_INTEGER *serial);
@@ -1065,11 +962,18 @@ unsigned long X509_issuer_name_hash(X509 *a);
1065int X509_subject_name_cmp(const X509 *a, const X509 *b); 962int X509_subject_name_cmp(const X509 *a, const X509 *b);
1066unsigned long X509_subject_name_hash(X509 *x); 963unsigned long X509_subject_name_hash(X509 *x);
1067 964
965#ifndef OPENSSL_NO_MD5
966unsigned long X509_issuer_name_hash_old(X509 *a);
967unsigned long X509_subject_name_hash_old(X509 *x);
968#endif
969
1068int X509_cmp(const X509 *a, const X509 *b); 970int X509_cmp(const X509 *a, const X509 *b);
1069int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); 971int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b);
1070unsigned long X509_NAME_hash(X509_NAME *x); 972unsigned long X509_NAME_hash(X509_NAME *x);
973unsigned long X509_NAME_hash_old(X509_NAME *x);
1071 974
1072int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b); 975int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b);
976int X509_CRL_match(const X509_CRL *a, const X509_CRL *b);
1073#ifndef OPENSSL_NO_FP_API 977#ifndef OPENSSL_NO_FP_API
1074int X509_print_ex_fp(FILE *bp,X509 *x, unsigned long nmflag, unsigned long cflag); 978int X509_print_ex_fp(FILE *bp,X509 *x, unsigned long nmflag, unsigned long cflag);
1075int X509_print_fp(FILE *bp,X509 *x); 979int X509_print_fp(FILE *bp,X509 *x);
@@ -1245,9 +1149,16 @@ DECLARE_ASN1_FUNCTIONS(PBEPARAM)
1245DECLARE_ASN1_FUNCTIONS(PBE2PARAM) 1149DECLARE_ASN1_FUNCTIONS(PBE2PARAM)
1246DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM) 1150DECLARE_ASN1_FUNCTIONS(PBKDF2PARAM)
1247 1151
1248X509_ALGOR *PKCS5_pbe_set(int alg, int iter, unsigned char *salt, int saltlen); 1152int PKCS5_pbe_set0_algor(X509_ALGOR *algor, int alg, int iter,
1153 const unsigned char *salt, int saltlen);
1154
1155X509_ALGOR *PKCS5_pbe_set(int alg, int iter,
1156 const unsigned char *salt, int saltlen);
1249X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, 1157X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter,
1250 unsigned char *salt, int saltlen); 1158 unsigned char *salt, int saltlen);
1159X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter,
1160 unsigned char *salt, int saltlen,
1161 unsigned char *aiv, int prf_nid);
1251 1162
1252/* PKCS#8 utilities */ 1163/* PKCS#8 utilities */
1253 1164
@@ -1258,6 +1169,22 @@ PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(EVP_PKEY *pkey);
1258PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken); 1169PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8_broken(EVP_PKEY *pkey, int broken);
1259PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken); 1170PKCS8_PRIV_KEY_INFO *PKCS8_set_broken(PKCS8_PRIV_KEY_INFO *p8, int broken);
1260 1171
1172int PKCS8_pkey_set0(PKCS8_PRIV_KEY_INFO *priv, ASN1_OBJECT *aobj,
1173 int version, int ptype, void *pval,
1174 unsigned char *penc, int penclen);
1175int PKCS8_pkey_get0(ASN1_OBJECT **ppkalg,
1176 const unsigned char **pk, int *ppklen,
1177 X509_ALGOR **pa,
1178 PKCS8_PRIV_KEY_INFO *p8);
1179
1180int X509_PUBKEY_set0_param(X509_PUBKEY *pub, ASN1_OBJECT *aobj,
1181 int ptype, void *pval,
1182 unsigned char *penc, int penclen);
1183int X509_PUBKEY_get0_param(ASN1_OBJECT **ppkalg,
1184 const unsigned char **pk, int *ppklen,
1185 X509_ALGOR **pa,
1186 X509_PUBKEY *pub);
1187
1261int X509_check_trust(X509 *x, int id, int flags); 1188int X509_check_trust(X509 *x, int id, int flags);
1262int X509_TRUST_get_count(void); 1189int X509_TRUST_get_count(void);
1263X509_TRUST * X509_TRUST_get0(int idx); 1190X509_TRUST * X509_TRUST_get0(int idx);
@@ -1337,7 +1264,10 @@ void ERR_load_X509_strings(void);
1337#define X509_R_KEY_VALUES_MISMATCH 116 1264#define X509_R_KEY_VALUES_MISMATCH 116
1338#define X509_R_LOADING_CERT_DIR 103 1265#define X509_R_LOADING_CERT_DIR 103
1339#define X509_R_LOADING_DEFAULTS 104 1266#define X509_R_LOADING_DEFAULTS 104
1267#define X509_R_METHOD_NOT_SUPPORTED 124
1340#define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105 1268#define X509_R_NO_CERT_SET_FOR_US_TO_VERIFY 105
1269#define X509_R_PUBLIC_KEY_DECODE_ERROR 125
1270#define X509_R_PUBLIC_KEY_ENCODE_ERROR 126
1341#define X509_R_SHOULD_RETRY 106 1271#define X509_R_SHOULD_RETRY 106
1342#define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107 1272#define X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN 107
1343#define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108 1273#define X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY 108
diff --git a/src/lib/libssl/src/crypto/x509/x509_cmp.c b/src/lib/libssl/src/crypto/x509/x509_cmp.c
index 2faf92514a..4bc9da07e0 100644
--- a/src/lib/libssl/src/crypto/x509/x509_cmp.c
+++ b/src/lib/libssl/src/crypto/x509/x509_cmp.c
@@ -116,6 +116,13 @@ int X509_CRL_cmp(const X509_CRL *a, const X509_CRL *b)
116 return(X509_NAME_cmp(a->crl->issuer,b->crl->issuer)); 116 return(X509_NAME_cmp(a->crl->issuer,b->crl->issuer));
117 } 117 }
118 118
119#ifndef OPENSSL_NO_SHA
120int X509_CRL_match(const X509_CRL *a, const X509_CRL *b)
121 {
122 return memcmp(a->sha1_hash, b->sha1_hash, 20);
123 }
124#endif
125
119X509_NAME *X509_get_issuer_name(X509 *a) 126X509_NAME *X509_get_issuer_name(X509 *a)
120 { 127 {
121 return(a->cert_info->issuer); 128 return(a->cert_info->issuer);
@@ -126,6 +133,13 @@ unsigned long X509_issuer_name_hash(X509 *x)
126 return(X509_NAME_hash(x->cert_info->issuer)); 133 return(X509_NAME_hash(x->cert_info->issuer));
127 } 134 }
128 135
136#ifndef OPENSSL_NO_MD5
137unsigned long X509_issuer_name_hash_old(X509 *x)
138 {
139 return(X509_NAME_hash_old(x->cert_info->issuer));
140 }
141#endif
142
129X509_NAME *X509_get_subject_name(X509 *a) 143X509_NAME *X509_get_subject_name(X509 *a)
130 { 144 {
131 return(a->cert_info->subject); 145 return(a->cert_info->subject);
@@ -141,6 +155,13 @@ unsigned long X509_subject_name_hash(X509 *x)
141 return(X509_NAME_hash(x->cert_info->subject)); 155 return(X509_NAME_hash(x->cert_info->subject));
142 } 156 }
143 157
158#ifndef OPENSSL_NO_MD5
159unsigned long X509_subject_name_hash_old(X509 *x)
160 {
161 return(X509_NAME_hash_old(x->cert_info->subject));
162 }
163#endif
164
144#ifndef OPENSSL_NO_SHA 165#ifndef OPENSSL_NO_SHA
145/* Compare two certificates: they must be identical for 166/* Compare two certificates: they must be identical for
146 * this to work. NB: Although "cmp" operations are generally 167 * this to work. NB: Although "cmp" operations are generally
@@ -162,177 +183,63 @@ int X509_cmp(const X509 *a, const X509 *b)
162#endif 183#endif
163 184
164 185
165/* Case insensitive string comparision */ 186int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b)
166static int nocase_cmp(const ASN1_STRING *a, const ASN1_STRING *b)
167{
168 int i;
169
170 if (a->length != b->length)
171 return (a->length - b->length);
172
173 for (i=0; i<a->length; i++)
174 {
175 int ca, cb;
176
177 ca = tolower(a->data[i]);
178 cb = tolower(b->data[i]);
179
180 if (ca != cb)
181 return(ca-cb);
182 }
183 return 0;
184}
185
186/* Case insensitive string comparision with space normalization
187 * Space normalization - ignore leading, trailing spaces,
188 * multiple spaces between characters are replaced by single space
189 */
190static int nocase_spacenorm_cmp(const ASN1_STRING *a, const ASN1_STRING *b)
191{
192 unsigned char *pa = NULL, *pb = NULL;
193 int la, lb;
194
195 la = a->length;
196 lb = b->length;
197 pa = a->data;
198 pb = b->data;
199
200 /* skip leading spaces */
201 while (la > 0 && isspace(*pa))
202 {
203 la--;
204 pa++;
205 }
206 while (lb > 0 && isspace(*pb))
207 {
208 lb--;
209 pb++;
210 }
211
212 /* skip trailing spaces */
213 while (la > 0 && isspace(pa[la-1]))
214 la--;
215 while (lb > 0 && isspace(pb[lb-1]))
216 lb--;
217
218 /* compare strings with space normalization */
219 while (la > 0 && lb > 0)
220 { 187 {
221 int ca, cb; 188 int ret;
222
223 /* compare character */
224 ca = tolower(*pa);
225 cb = tolower(*pb);
226 if (ca != cb)
227 return (ca - cb);
228 189
229 pa++; pb++; 190 /* Ensure canonical encoding is present and up to date */
230 la--; lb--;
231 191
232 if (la <= 0 || lb <= 0) 192 if (!a->canon_enc || a->modified)
233 break; 193 {
194 ret = i2d_X509_NAME((X509_NAME *)a, NULL);
195 if (ret < 0)
196 return -2;
197 }
234 198
235 /* is white space next character ? */ 199 if (!b->canon_enc || b->modified)
236 if (isspace(*pa) && isspace(*pb))
237 { 200 {
238 /* skip remaining white spaces */ 201 ret = i2d_X509_NAME((X509_NAME *)b, NULL);
239 while (la > 0 && isspace(*pa)) 202 if (ret < 0)
240 { 203 return -2;
241 la--;
242 pa++;
243 }
244 while (lb > 0 && isspace(*pb))
245 {
246 lb--;
247 pb++;
248 }
249 } 204 }
250 }
251 if (la > 0 || lb > 0)
252 return la - lb;
253 205
254 return 0; 206 ret = a->canon_enclen - b->canon_enclen;
255}
256 207
257static int asn1_string_memcmp(ASN1_STRING *a, ASN1_STRING *b) 208 if (ret)
258 { 209 return ret;
259 int j;
260 j = a->length - b->length;
261 if (j)
262 return j;
263 return memcmp(a->data, b->data, a->length);
264 }
265 210
266#define STR_TYPE_CMP (B_ASN1_PRINTABLESTRING|B_ASN1_T61STRING|B_ASN1_UTF8STRING) 211 return memcmp(a->canon_enc, b->canon_enc, a->canon_enclen);
267 212
268int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b) 213 }
269 {
270 int i,j;
271 X509_NAME_ENTRY *na,*nb;
272 214
273 unsigned long nabit, nbbit; 215unsigned long X509_NAME_hash(X509_NAME *x)
216 {
217 unsigned long ret=0;
218 unsigned char md[SHA_DIGEST_LENGTH];
274 219
275 j = sk_X509_NAME_ENTRY_num(a->entries) 220 /* Make sure X509_NAME structure contains valid cached encoding */
276 - sk_X509_NAME_ENTRY_num(b->entries); 221 i2d_X509_NAME(x,NULL);
277 if (j) 222 EVP_Digest(x->canon_enc, x->canon_enclen, md, NULL, EVP_sha1(), NULL);
278 return j;
279 for (i=sk_X509_NAME_ENTRY_num(a->entries)-1; i>=0; i--)
280 {
281 na=sk_X509_NAME_ENTRY_value(a->entries,i);
282 nb=sk_X509_NAME_ENTRY_value(b->entries,i);
283 j=na->value->type-nb->value->type;
284 if (j)
285 {
286 nabit = ASN1_tag2bit(na->value->type);
287 nbbit = ASN1_tag2bit(nb->value->type);
288 if (!(nabit & STR_TYPE_CMP) ||
289 !(nbbit & STR_TYPE_CMP))
290 return j;
291 if (!asn1_string_memcmp(na->value, nb->value))
292 j = 0;
293 }
294 else if (na->value->type == V_ASN1_PRINTABLESTRING)
295 j=nocase_spacenorm_cmp(na->value, nb->value);
296 else if (na->value->type == V_ASN1_IA5STRING
297 && OBJ_obj2nid(na->object) == NID_pkcs9_emailAddress)
298 j=nocase_cmp(na->value, nb->value);
299 else
300 j = asn1_string_memcmp(na->value, nb->value);
301 if (j) return(j);
302 j=na->set-nb->set;
303 if (j) return(j);
304 }
305 223
306 /* We will check the object types after checking the values 224 ret=( ((unsigned long)md[0] )|((unsigned long)md[1]<<8L)|
307 * since the values will more often be different than the object 225 ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L)
308 * types. */ 226 )&0xffffffffL;
309 for (i=sk_X509_NAME_ENTRY_num(a->entries)-1; i>=0; i--) 227 return(ret);
310 {
311 na=sk_X509_NAME_ENTRY_value(a->entries,i);
312 nb=sk_X509_NAME_ENTRY_value(b->entries,i);
313 j=OBJ_cmp(na->object,nb->object);
314 if (j) return(j);
315 }
316 return(0);
317 } 228 }
318 229
230
319#ifndef OPENSSL_NO_MD5 231#ifndef OPENSSL_NO_MD5
320/* I now DER encode the name and hash it. Since I cache the DER encoding, 232/* I now DER encode the name and hash it. Since I cache the DER encoding,
321 * this is reasonably efficient. */ 233 * this is reasonably efficient. */
322unsigned long X509_NAME_hash(X509_NAME *x) 234
235unsigned long X509_NAME_hash_old(X509_NAME *x)
323 { 236 {
324 unsigned long ret=0; 237 unsigned long ret=0;
325 unsigned char md[16]; 238 unsigned char md[16];
326 EVP_MD_CTX md_ctx;
327 239
328 /* Make sure X509_NAME structure contains valid cached encoding */ 240 /* Make sure X509_NAME structure contains valid cached encoding */
329 i2d_X509_NAME(x,NULL); 241 i2d_X509_NAME(x,NULL);
330 EVP_MD_CTX_init(&md_ctx); 242 EVP_Digest(x->bytes->data, x->bytes->length, md, NULL, EVP_md5(), NULL);
331 EVP_MD_CTX_set_flags(&md_ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
332 EVP_DigestInit_ex(&md_ctx, EVP_md5(), NULL);
333 EVP_DigestUpdate(&md_ctx, x->bytes->data, x->bytes->length);
334 EVP_DigestFinal_ex(&md_ctx,md,NULL);
335 EVP_MD_CTX_cleanup(&md_ctx);
336 243
337 ret=( ((unsigned long)md[0] )|((unsigned long)md[1]<<8L)| 244 ret=( ((unsigned long)md[0] )|((unsigned long)md[1]<<8L)|
338 ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L) 245 ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L)
@@ -393,14 +300,19 @@ ASN1_BIT_STRING *X509_get0_pubkey_bitstr(const X509 *x)
393 300
394int X509_check_private_key(X509 *x, EVP_PKEY *k) 301int X509_check_private_key(X509 *x, EVP_PKEY *k)
395 { 302 {
396 EVP_PKEY *xk=NULL; 303 EVP_PKEY *xk;
397 int ok=0; 304 int ret;
398 305
399 xk=X509_get_pubkey(x); 306 xk=X509_get_pubkey(x);
400 switch (EVP_PKEY_cmp(xk, k)) 307
308 if (xk)
309 ret = EVP_PKEY_cmp(xk, k);
310 else
311 ret = -2;
312
313 switch (ret)
401 { 314 {
402 case 1: 315 case 1:
403 ok=1;
404 break; 316 break;
405 case 0: 317 case 0:
406 X509err(X509_F_X509_CHECK_PRIVATE_KEY,X509_R_KEY_VALUES_MISMATCH); 318 X509err(X509_F_X509_CHECK_PRIVATE_KEY,X509_R_KEY_VALUES_MISMATCH);
@@ -409,24 +321,11 @@ int X509_check_private_key(X509 *x, EVP_PKEY *k)
409 X509err(X509_F_X509_CHECK_PRIVATE_KEY,X509_R_KEY_TYPE_MISMATCH); 321 X509err(X509_F_X509_CHECK_PRIVATE_KEY,X509_R_KEY_TYPE_MISMATCH);
410 break; 322 break;
411 case -2: 323 case -2:
412#ifndef OPENSSL_NO_EC
413 if (k->type == EVP_PKEY_EC)
414 {
415 X509err(X509_F_X509_CHECK_PRIVATE_KEY, ERR_R_EC_LIB);
416 break;
417 }
418#endif
419#ifndef OPENSSL_NO_DH
420 if (k->type == EVP_PKEY_DH)
421 {
422 /* No idea */
423 X509err(X509_F_X509_CHECK_PRIVATE_KEY,X509_R_CANT_CHECK_DH_KEY);
424 break;
425 }
426#endif
427 X509err(X509_F_X509_CHECK_PRIVATE_KEY,X509_R_UNKNOWN_KEY_TYPE); 324 X509err(X509_F_X509_CHECK_PRIVATE_KEY,X509_R_UNKNOWN_KEY_TYPE);
428 } 325 }
429 326 if (xk)
430 EVP_PKEY_free(xk); 327 EVP_PKEY_free(xk);
431 return(ok); 328 if (ret > 0)
329 return 1;
330 return 0;
432 } 331 }
diff --git a/src/lib/libssl/src/crypto/x509/x509_err.c b/src/lib/libssl/src/crypto/x509/x509_err.c
index fb377292da..a01402f416 100644
--- a/src/lib/libssl/src/crypto/x509/x509_err.c
+++ b/src/lib/libssl/src/crypto/x509/x509_err.c
@@ -1,6 +1,6 @@
1/* crypto/x509/x509_err.c */ 1/* crypto/x509/x509_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -132,7 +132,10 @@ static ERR_STRING_DATA X509_str_reasons[]=
132{ERR_REASON(X509_R_KEY_VALUES_MISMATCH) ,"key values mismatch"}, 132{ERR_REASON(X509_R_KEY_VALUES_MISMATCH) ,"key values mismatch"},
133{ERR_REASON(X509_R_LOADING_CERT_DIR) ,"loading cert dir"}, 133{ERR_REASON(X509_R_LOADING_CERT_DIR) ,"loading cert dir"},
134{ERR_REASON(X509_R_LOADING_DEFAULTS) ,"loading defaults"}, 134{ERR_REASON(X509_R_LOADING_DEFAULTS) ,"loading defaults"},
135{ERR_REASON(X509_R_METHOD_NOT_SUPPORTED) ,"method not supported"},
135{ERR_REASON(X509_R_NO_CERT_SET_FOR_US_TO_VERIFY),"no cert set for us to verify"}, 136{ERR_REASON(X509_R_NO_CERT_SET_FOR_US_TO_VERIFY),"no cert set for us to verify"},
137{ERR_REASON(X509_R_PUBLIC_KEY_DECODE_ERROR),"public key decode error"},
138{ERR_REASON(X509_R_PUBLIC_KEY_ENCODE_ERROR),"public key encode error"},
136{ERR_REASON(X509_R_SHOULD_RETRY) ,"should retry"}, 139{ERR_REASON(X509_R_SHOULD_RETRY) ,"should retry"},
137{ERR_REASON(X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN),"unable to find parameters in chain"}, 140{ERR_REASON(X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN),"unable to find parameters in chain"},
138{ERR_REASON(X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY),"unable to get certs public key"}, 141{ERR_REASON(X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY),"unable to get certs public key"},
diff --git a/src/lib/libssl/src/crypto/x509/x509_lu.c b/src/lib/libssl/src/crypto/x509/x509_lu.c
index cd2cfb6d85..3a6e04a1de 100644
--- a/src/lib/libssl/src/crypto/x509/x509_lu.c
+++ b/src/lib/libssl/src/crypto/x509/x509_lu.c
@@ -196,9 +196,17 @@ X509_STORE *X509_STORE_new(void)
196 ret->get_crl = 0; 196 ret->get_crl = 0;
197 ret->check_crl = 0; 197 ret->check_crl = 0;
198 ret->cert_crl = 0; 198 ret->cert_crl = 0;
199 ret->lookup_certs = 0;
200 ret->lookup_crls = 0;
199 ret->cleanup = 0; 201 ret->cleanup = 0;
200 202
201 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, ret, &ret->ex_data); 203 if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, ret, &ret->ex_data))
204 {
205 sk_X509_OBJECT_free(ret->objs);
206 OPENSSL_free(ret);
207 return NULL;
208 }
209
202 ret->references=1; 210 ret->references=1;
203 return ret; 211 return ret;
204 } 212 }
@@ -286,9 +294,11 @@ int X509_STORE_get_by_subject(X509_STORE_CTX *vs, int type, X509_NAME *name,
286 X509_OBJECT stmp,*tmp; 294 X509_OBJECT stmp,*tmp;
287 int i,j; 295 int i,j;
288 296
297 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
289 tmp=X509_OBJECT_retrieve_by_subject(ctx->objs,type,name); 298 tmp=X509_OBJECT_retrieve_by_subject(ctx->objs,type,name);
299 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
290 300
291 if (tmp == NULL) 301 if (tmp == NULL || type == X509_LU_CRL)
292 { 302 {
293 for (i=vs->current_method; i<sk_X509_LOOKUP_num(ctx->get_cert_methods); i++) 303 for (i=vs->current_method; i<sk_X509_LOOKUP_num(ctx->get_cert_methods); i++)
294 { 304 {
@@ -340,7 +350,6 @@ int X509_STORE_add_cert(X509_STORE *ctx, X509 *x)
340 350
341 X509_OBJECT_up_ref_count(obj); 351 X509_OBJECT_up_ref_count(obj);
342 352
343
344 if (X509_OBJECT_retrieve_match(ctx->objs, obj)) 353 if (X509_OBJECT_retrieve_match(ctx->objs, obj))
345 { 354 {
346 X509_OBJECT_free_contents(obj); 355 X509_OBJECT_free_contents(obj);
@@ -414,14 +423,15 @@ void X509_OBJECT_free_contents(X509_OBJECT *a)
414 } 423 }
415 } 424 }
416 425
417int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, int type, 426static int x509_object_idx_cnt(STACK_OF(X509_OBJECT) *h, int type,
418 X509_NAME *name) 427 X509_NAME *name, int *pnmatch)
419 { 428 {
420 X509_OBJECT stmp; 429 X509_OBJECT stmp;
421 X509 x509_s; 430 X509 x509_s;
422 X509_CINF cinf_s; 431 X509_CINF cinf_s;
423 X509_CRL crl_s; 432 X509_CRL crl_s;
424 X509_CRL_INFO crl_info_s; 433 X509_CRL_INFO crl_info_s;
434 int idx;
425 435
426 stmp.type=type; 436 stmp.type=type;
427 switch (type) 437 switch (type)
@@ -441,41 +451,169 @@ int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, int type,
441 return -1; 451 return -1;
442 } 452 }
443 453
444 return sk_X509_OBJECT_find(h,&stmp); 454 idx = sk_X509_OBJECT_find(h,&stmp);
455 if (idx >= 0 && pnmatch)
456 {
457 int tidx;
458 const X509_OBJECT *tobj, *pstmp;
459 *pnmatch = 1;
460 pstmp = &stmp;
461 for (tidx = idx + 1; tidx < sk_X509_OBJECT_num(h); tidx++)
462 {
463 tobj = sk_X509_OBJECT_value(h, tidx);
464 if (x509_object_cmp(&tobj, &pstmp))
465 break;
466 (*pnmatch)++;
467 }
468 }
469 return idx;
470 }
471
472
473int X509_OBJECT_idx_by_subject(STACK_OF(X509_OBJECT) *h, int type,
474 X509_NAME *name)
475 {
476 return x509_object_idx_cnt(h, type, name, NULL);
445 } 477 }
446 478
447X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, int type, 479X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, int type,
448 X509_NAME *name) 480 X509_NAME *name)
449{ 481 {
450 int idx; 482 int idx;
451 idx = X509_OBJECT_idx_by_subject(h, type, name); 483 idx = X509_OBJECT_idx_by_subject(h, type, name);
452 if (idx==-1) return NULL; 484 if (idx==-1) return NULL;
453 return sk_X509_OBJECT_value(h, idx); 485 return sk_X509_OBJECT_value(h, idx);
454} 486 }
487
488STACK_OF(X509)* X509_STORE_get1_certs(X509_STORE_CTX *ctx, X509_NAME *nm)
489 {
490 int i, idx, cnt;
491 STACK_OF(X509) *sk;
492 X509 *x;
493 X509_OBJECT *obj;
494 sk = sk_X509_new_null();
495 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
496 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_X509, nm, &cnt);
497 if (idx < 0)
498 {
499 /* Nothing found in cache: do lookup to possibly add new
500 * objects to cache
501 */
502 X509_OBJECT xobj;
503 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
504 if (!X509_STORE_get_by_subject(ctx, X509_LU_X509, nm, &xobj))
505 {
506 sk_X509_free(sk);
507 return NULL;
508 }
509 X509_OBJECT_free_contents(&xobj);
510 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
511 idx = x509_object_idx_cnt(ctx->ctx->objs,X509_LU_X509,nm, &cnt);
512 if (idx < 0)
513 {
514 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
515 sk_X509_free(sk);
516 return NULL;
517 }
518 }
519 for (i = 0; i < cnt; i++, idx++)
520 {
521 obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);
522 x = obj->data.x509;
523 CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509);
524 if (!sk_X509_push(sk, x))
525 {
526 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
527 X509_free(x);
528 sk_X509_pop_free(sk, X509_free);
529 return NULL;
530 }
531 }
532 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
533 return sk;
534
535 }
536
537STACK_OF(X509_CRL)* X509_STORE_get1_crls(X509_STORE_CTX *ctx, X509_NAME *nm)
538 {
539 int i, idx, cnt;
540 STACK_OF(X509_CRL) *sk;
541 X509_CRL *x;
542 X509_OBJECT *obj, xobj;
543 sk = sk_X509_CRL_new_null();
544 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
545 /* Check cache first */
546 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_CRL, nm, &cnt);
547
548 /* Always do lookup to possibly add new CRLs to cache
549 */
550 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
551 if (!X509_STORE_get_by_subject(ctx, X509_LU_CRL, nm, &xobj))
552 {
553 sk_X509_CRL_free(sk);
554 return NULL;
555 }
556 X509_OBJECT_free_contents(&xobj);
557 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
558 idx = x509_object_idx_cnt(ctx->ctx->objs,X509_LU_CRL, nm, &cnt);
559 if (idx < 0)
560 {
561 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
562 sk_X509_CRL_free(sk);
563 return NULL;
564 }
565
566 for (i = 0; i < cnt; i++, idx++)
567 {
568 obj = sk_X509_OBJECT_value(ctx->ctx->objs, idx);
569 x = obj->data.crl;
570 CRYPTO_add(&x->references, 1, CRYPTO_LOCK_X509_CRL);
571 if (!sk_X509_CRL_push(sk, x))
572 {
573 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
574 X509_CRL_free(x);
575 sk_X509_CRL_pop_free(sk, X509_CRL_free);
576 return NULL;
577 }
578 }
579 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
580 return sk;
581 }
455 582
456X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, X509_OBJECT *x) 583X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, X509_OBJECT *x)
457{ 584 {
458 int idx, i; 585 int idx, i;
459 X509_OBJECT *obj; 586 X509_OBJECT *obj;
460 idx = sk_X509_OBJECT_find(h, x); 587 idx = sk_X509_OBJECT_find(h, x);
461 if (idx == -1) return NULL; 588 if (idx == -1) return NULL;
462 if (x->type != X509_LU_X509) return sk_X509_OBJECT_value(h, idx); 589 if ((x->type != X509_LU_X509) && (x->type != X509_LU_CRL))
590 return sk_X509_OBJECT_value(h, idx);
463 for (i = idx; i < sk_X509_OBJECT_num(h); i++) 591 for (i = idx; i < sk_X509_OBJECT_num(h); i++)
464 { 592 {
465 obj = sk_X509_OBJECT_value(h, i); 593 obj = sk_X509_OBJECT_value(h, i);
466 if (x509_object_cmp((const X509_OBJECT **)&obj, (const X509_OBJECT **)&x)) 594 if (x509_object_cmp((const X509_OBJECT **)&obj, (const X509_OBJECT **)&x))
467 return NULL; 595 return NULL;
468 if ((x->type != X509_LU_X509) || !X509_cmp(obj->data.x509, x->data.x509)) 596 if (x->type == X509_LU_X509)
597 {
598 if (!X509_cmp(obj->data.x509, x->data.x509))
599 return obj;
600 }
601 else if (x->type == X509_LU_CRL)
602 {
603 if (!X509_CRL_match(obj->data.crl, x->data.crl))
604 return obj;
605 }
606 else
469 return obj; 607 return obj;
470 } 608 }
471 return NULL; 609 return NULL;
472} 610 }
473 611
474 612
475/* Try to get issuer certificate from store. Due to limitations 613/* Try to get issuer certificate from store. Due to limitations
476 * of the API this can only retrieve a single certificate matching 614 * of the API this can only retrieve a single certificate matching
477 * a given subject name. However it will fill the cache with all 615 * a given subject name. However it will fill the cache with all
478 * matching certificates, so we can examine the cache for all 616 * matching certificates, so we can examine the cache for all
479 * matches. 617 * matches.
480 * 618 *
481 * Return values are: 619 * Return values are:
@@ -483,13 +621,11 @@ X509_OBJECT *X509_OBJECT_retrieve_match(STACK_OF(X509_OBJECT) *h, X509_OBJECT *x
483 * 0 certificate not found. 621 * 0 certificate not found.
484 * -1 some other error. 622 * -1 some other error.
485 */ 623 */
486
487
488int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x) 624int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x)
489{ 625 {
490 X509_NAME *xn; 626 X509_NAME *xn;
491 X509_OBJECT obj, *pobj; 627 X509_OBJECT obj, *pobj;
492 int i, ok, idx; 628 int i, ok, idx, ret;
493 xn=X509_get_issuer_name(x); 629 xn=X509_get_issuer_name(x);
494 ok=X509_STORE_get_by_subject(ctx,X509_LU_X509,xn,&obj); 630 ok=X509_STORE_get_by_subject(ctx,X509_LU_X509,xn,&obj);
495 if (ok != X509_LU_X509) 631 if (ok != X509_LU_X509)
@@ -515,27 +651,34 @@ int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x)
515 return 1; 651 return 1;
516 } 652 }
517 X509_OBJECT_free_contents(&obj); 653 X509_OBJECT_free_contents(&obj);
518 /* Else find index of first matching cert */
519 idx = X509_OBJECT_idx_by_subject(ctx->ctx->objs, X509_LU_X509, xn);
520 /* This shouldn't normally happen since we already have one match */
521 if (idx == -1) return 0;
522 654
523 /* Look through all matching certificates for a suitable issuer */ 655 /* Else find index of first cert accepted by 'check_issued' */
524 for (i = idx; i < sk_X509_OBJECT_num(ctx->ctx->objs); i++) 656 ret = 0;
657 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
658 idx = X509_OBJECT_idx_by_subject(ctx->ctx->objs, X509_LU_X509, xn);
659 if (idx != -1) /* should be true as we've had at least one match */
525 { 660 {
526 pobj = sk_X509_OBJECT_value(ctx->ctx->objs, i); 661 /* Look through all matching certs for suitable issuer */
527 /* See if we've ran out of matches */ 662 for (i = idx; i < sk_X509_OBJECT_num(ctx->ctx->objs); i++)
528 if (pobj->type != X509_LU_X509) return 0;
529 if (X509_NAME_cmp(xn, X509_get_subject_name(pobj->data.x509))) return 0;
530 if (ctx->check_issued(ctx, x, pobj->data.x509))
531 { 663 {
532 *issuer = pobj->data.x509; 664 pobj = sk_X509_OBJECT_value(ctx->ctx->objs, i);
533 X509_OBJECT_up_ref_count(pobj); 665 /* See if we've run past the matches */
534 return 1; 666 if (pobj->type != X509_LU_X509)
667 break;
668 if (X509_NAME_cmp(xn, X509_get_subject_name(pobj->data.x509)))
669 break;
670 if (ctx->check_issued(ctx, x, pobj->data.x509))
671 {
672 *issuer = pobj->data.x509;
673 X509_OBJECT_up_ref_count(pobj);
674 ret = 1;
675 break;
676 }
535 } 677 }
536 } 678 }
537 return 0; 679 CRYPTO_w_unlock(CRYPTO_LOCK_X509_STORE);
538} 680 return ret;
681 }
539 682
540int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags) 683int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags)
541 { 684 {
@@ -563,5 +706,11 @@ int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *param)
563 return X509_VERIFY_PARAM_set1(ctx->param, param); 706 return X509_VERIFY_PARAM_set1(ctx->param, param);
564 } 707 }
565 708
709void X509_STORE_set_verify_cb(X509_STORE *ctx,
710 int (*verify_cb)(int, X509_STORE_CTX *))
711 {
712 ctx->verify_cb = verify_cb;
713 }
714
566IMPLEMENT_STACK_OF(X509_LOOKUP) 715IMPLEMENT_STACK_OF(X509_LOOKUP)
567IMPLEMENT_STACK_OF(X509_OBJECT) 716IMPLEMENT_STACK_OF(X509_OBJECT)
diff --git a/src/lib/libssl/src/crypto/x509/x509_obj.c b/src/lib/libssl/src/crypto/x509/x509_obj.c
index 1e718f76eb..21fed9f838 100644
--- a/src/lib/libssl/src/crypto/x509/x509_obj.c
+++ b/src/lib/libssl/src/crypto/x509/x509_obj.c
@@ -72,7 +72,7 @@ int i;
72 char *p; 72 char *p;
73 unsigned char *q; 73 unsigned char *q;
74 BUF_MEM *b=NULL; 74 BUF_MEM *b=NULL;
75 static char hex[17]="0123456789ABCDEF"; 75 static const char hex[17]="0123456789ABCDEF";
76 int gs_doit[4]; 76 int gs_doit[4];
77 char tmp_buf[80]; 77 char tmp_buf[80];
78#ifdef CHARSET_EBCDIC 78#ifdef CHARSET_EBCDIC
diff --git a/src/lib/libssl/src/crypto/x509/x509_req.c b/src/lib/libssl/src/crypto/x509/x509_req.c
index 3872e1fb64..48183dc00c 100644
--- a/src/lib/libssl/src/crypto/x509/x509_req.c
+++ b/src/lib/libssl/src/crypto/x509/x509_req.c
@@ -61,6 +61,7 @@
61#include <openssl/bn.h> 61#include <openssl/bn.h>
62#include <openssl/evp.h> 62#include <openssl/evp.h>
63#include <openssl/asn1.h> 63#include <openssl/asn1.h>
64#include <openssl/asn1t.h>
64#include <openssl/x509.h> 65#include <openssl/x509.h>
65#include <openssl/objects.h> 66#include <openssl/objects.h>
66#include <openssl/buffer.h> 67#include <openssl/buffer.h>
@@ -205,10 +206,9 @@ STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req)
205 if(!ext || (ext->type != V_ASN1_SEQUENCE)) 206 if(!ext || (ext->type != V_ASN1_SEQUENCE))
206 return NULL; 207 return NULL;
207 p = ext->value.sequence->data; 208 p = ext->value.sequence->data;
208 return d2i_ASN1_SET_OF_X509_EXTENSION(NULL, &p, 209 return (STACK_OF(X509_EXTENSION) *)
209 ext->value.sequence->length, 210 ASN1_item_d2i(NULL, &p, ext->value.sequence->length,
210 d2i_X509_EXTENSION, X509_EXTENSION_free, 211 ASN1_ITEM_rptr(X509_EXTENSIONS));
211 V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL);
212} 212}
213 213
214/* Add a STACK_OF extensions to a certificate request: allow alternative OIDs 214/* Add a STACK_OF extensions to a certificate request: allow alternative OIDs
@@ -218,8 +218,6 @@ STACK_OF(X509_EXTENSION) *X509_REQ_get_extensions(X509_REQ *req)
218int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts, 218int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts,
219 int nid) 219 int nid)
220{ 220{
221 unsigned char *p = NULL, *q;
222 long len;
223 ASN1_TYPE *at = NULL; 221 ASN1_TYPE *at = NULL;
224 X509_ATTRIBUTE *attr = NULL; 222 X509_ATTRIBUTE *attr = NULL;
225 if(!(at = ASN1_TYPE_new()) || 223 if(!(at = ASN1_TYPE_new()) ||
@@ -227,15 +225,10 @@ int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts,
227 225
228 at->type = V_ASN1_SEQUENCE; 226 at->type = V_ASN1_SEQUENCE;
229 /* Generate encoding of extensions */ 227 /* Generate encoding of extensions */
230 len = i2d_ASN1_SET_OF_X509_EXTENSION(exts, NULL, i2d_X509_EXTENSION, 228 at->value.sequence->length =
231 V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL, IS_SEQUENCE); 229 ASN1_item_i2d((ASN1_VALUE *)exts,
232 if(!(p = OPENSSL_malloc(len))) goto err; 230 &at->value.sequence->data,
233 q = p; 231 ASN1_ITEM_rptr(X509_EXTENSIONS));
234 i2d_ASN1_SET_OF_X509_EXTENSION(exts, &q, i2d_X509_EXTENSION,
235 V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL, IS_SEQUENCE);
236 at->value.sequence->data = p;
237 p = NULL;
238 at->value.sequence->length = len;
239 if(!(attr = X509_ATTRIBUTE_new())) goto err; 232 if(!(attr = X509_ATTRIBUTE_new())) goto err;
240 if(!(attr->value.set = sk_ASN1_TYPE_new_null())) goto err; 233 if(!(attr->value.set = sk_ASN1_TYPE_new_null())) goto err;
241 if(!sk_ASN1_TYPE_push(attr->value.set, at)) goto err; 234 if(!sk_ASN1_TYPE_push(attr->value.set, at)) goto err;
@@ -250,7 +243,6 @@ int X509_REQ_add_extensions_nid(X509_REQ *req, STACK_OF(X509_EXTENSION) *exts,
250 if(!sk_X509_ATTRIBUTE_push(req->req_info->attributes, attr)) goto err; 243 if(!sk_X509_ATTRIBUTE_push(req->req_info->attributes, attr)) goto err;
251 return 1; 244 return 1;
252 err: 245 err:
253 if(p) OPENSSL_free(p);
254 X509_ATTRIBUTE_free(attr); 246 X509_ATTRIBUTE_free(attr);
255 ASN1_TYPE_free(at); 247 ASN1_TYPE_free(at);
256 return 0; 248 return 0;
diff --git a/src/lib/libssl/src/crypto/x509/x509_set.c b/src/lib/libssl/src/crypto/x509/x509_set.c
index aaf61ca062..4b94fc5847 100644
--- a/src/lib/libssl/src/crypto/x509/x509_set.c
+++ b/src/lib/libssl/src/crypto/x509/x509_set.c
@@ -104,7 +104,7 @@ int X509_set_subject_name(X509 *x, X509_NAME *name)
104 return(X509_NAME_set(&x->cert_info->subject,name)); 104 return(X509_NAME_set(&x->cert_info->subject,name));
105 } 105 }
106 106
107int X509_set_notBefore(X509 *x, ASN1_TIME *tm) 107int X509_set_notBefore(X509 *x, const ASN1_TIME *tm)
108 { 108 {
109 ASN1_TIME *in; 109 ASN1_TIME *in;
110 110
@@ -122,7 +122,7 @@ int X509_set_notBefore(X509 *x, ASN1_TIME *tm)
122 return(in != NULL); 122 return(in != NULL);
123 } 123 }
124 124
125int X509_set_notAfter(X509 *x, ASN1_TIME *tm) 125int X509_set_notAfter(X509 *x, const ASN1_TIME *tm)
126 { 126 {
127 ASN1_TIME *in; 127 ASN1_TIME *in;
128 128
diff --git a/src/lib/libssl/src/crypto/x509/x509_trs.c b/src/lib/libssl/src/crypto/x509/x509_trs.c
index ed18700585..a6cb9c8b1b 100644
--- a/src/lib/libssl/src/crypto/x509/x509_trs.c
+++ b/src/lib/libssl/src/crypto/x509/x509_trs.c
@@ -84,7 +84,8 @@ static X509_TRUST trstandard[] = {
84{X509_TRUST_EMAIL, 0, trust_1oidany, "S/MIME email", NID_email_protect, NULL}, 84{X509_TRUST_EMAIL, 0, trust_1oidany, "S/MIME email", NID_email_protect, NULL},
85{X509_TRUST_OBJECT_SIGN, 0, trust_1oidany, "Object Signer", NID_code_sign, NULL}, 85{X509_TRUST_OBJECT_SIGN, 0, trust_1oidany, "Object Signer", NID_code_sign, NULL},
86{X509_TRUST_OCSP_SIGN, 0, trust_1oid, "OCSP responder", NID_OCSP_sign, NULL}, 86{X509_TRUST_OCSP_SIGN, 0, trust_1oid, "OCSP responder", NID_OCSP_sign, NULL},
87{X509_TRUST_OCSP_REQUEST, 0, trust_1oid, "OCSP request", NID_ad_OCSP, NULL} 87{X509_TRUST_OCSP_REQUEST, 0, trust_1oid, "OCSP request", NID_ad_OCSP, NULL},
88{X509_TRUST_TSA, 0, trust_1oidany, "TSA server", NID_time_stamp, NULL}
88}; 89};
89 90
90#define X509_TRUST_COUNT (sizeof(trstandard)/sizeof(X509_TRUST)) 91#define X509_TRUST_COUNT (sizeof(trstandard)/sizeof(X509_TRUST))
diff --git a/src/lib/libssl/src/crypto/x509/x509_txt.c b/src/lib/libssl/src/crypto/x509/x509_txt.c
index 73a8ec726f..c44f753c46 100644
--- a/src/lib/libssl/src/crypto/x509/x509_txt.c
+++ b/src/lib/libssl/src/crypto/x509/x509_txt.c
@@ -162,8 +162,28 @@ const char *X509_verify_cert_error_string(long n)
162 return("invalid or inconsistent certificate policy extension"); 162 return("invalid or inconsistent certificate policy extension");
163 case X509_V_ERR_NO_EXPLICIT_POLICY: 163 case X509_V_ERR_NO_EXPLICIT_POLICY:
164 return("no explicit policy"); 164 return("no explicit policy");
165 case X509_V_ERR_UNNESTED_RESOURCE: 165 case X509_V_ERR_DIFFERENT_CRL_SCOPE:
166 return("RFC 3779 resource not subset of parent's resources"); 166 return("Different CRL scope");
167 case X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE:
168 return("Unsupported extension feature");
169 case X509_V_ERR_UNNESTED_RESOURCE:
170 return("RFC 3779 resource not subset of parent's resources");
171
172 case X509_V_ERR_PERMITTED_VIOLATION:
173 return("permitted subtree violation");
174 case X509_V_ERR_EXCLUDED_VIOLATION:
175 return("excluded subtree violation");
176 case X509_V_ERR_SUBTREE_MINMAX:
177 return("name constraints minimum and maximum not supported");
178 case X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE:
179 return("unsupported name constraint type");
180 case X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX:
181 return("unsupported or invalid name constraint syntax");
182 case X509_V_ERR_UNSUPPORTED_NAME_SYNTAX:
183 return("unsupported or invalid name syntax");
184 case X509_V_ERR_CRL_PATH_VALIDATION_ERROR:
185 return("CRL path validation error");
186
167 default: 187 default:
168 BIO_snprintf(buf,sizeof buf,"error number %ld",n); 188 BIO_snprintf(buf,sizeof buf,"error number %ld",n);
169 return(buf); 189 return(buf);
diff --git a/src/lib/libssl/src/crypto/x509/x509_vfy.c b/src/lib/libssl/src/crypto/x509/x509_vfy.c
index 336c40ddd7..87ebf62525 100644
--- a/src/lib/libssl/src/crypto/x509/x509_vfy.c
+++ b/src/lib/libssl/src/crypto/x509/x509_vfy.c
@@ -70,14 +70,70 @@
70#include <openssl/x509v3.h> 70#include <openssl/x509v3.h>
71#include <openssl/objects.h> 71#include <openssl/objects.h>
72 72
73/* CRL score values */
74
75/* No unhandled critical extensions */
76
77#define CRL_SCORE_NOCRITICAL 0x100
78
79/* certificate is within CRL scope */
80
81#define CRL_SCORE_SCOPE 0x080
82
83/* CRL times valid */
84
85#define CRL_SCORE_TIME 0x040
86
87/* Issuer name matches certificate */
88
89#define CRL_SCORE_ISSUER_NAME 0x020
90
91/* If this score or above CRL is probably valid */
92
93#define CRL_SCORE_VALID (CRL_SCORE_NOCRITICAL|CRL_SCORE_TIME|CRL_SCORE_SCOPE)
94
95/* CRL issuer is certificate issuer */
96
97#define CRL_SCORE_ISSUER_CERT 0x018
98
99/* CRL issuer is on certificate path */
100
101#define CRL_SCORE_SAME_PATH 0x008
102
103/* CRL issuer matches CRL AKID */
104
105#define CRL_SCORE_AKID 0x004
106
107/* Have a delta CRL with valid times */
108
109#define CRL_SCORE_TIME_DELTA 0x002
110
73static int null_callback(int ok,X509_STORE_CTX *e); 111static int null_callback(int ok,X509_STORE_CTX *e);
74static int check_issued(X509_STORE_CTX *ctx, X509 *x, X509 *issuer); 112static int check_issued(X509_STORE_CTX *ctx, X509 *x, X509 *issuer);
75static X509 *find_issuer(X509_STORE_CTX *ctx, STACK_OF(X509) *sk, X509 *x); 113static X509 *find_issuer(X509_STORE_CTX *ctx, STACK_OF(X509) *sk, X509 *x);
76static int check_chain_extensions(X509_STORE_CTX *ctx); 114static int check_chain_extensions(X509_STORE_CTX *ctx);
115static int check_name_constraints(X509_STORE_CTX *ctx);
77static int check_trust(X509_STORE_CTX *ctx); 116static int check_trust(X509_STORE_CTX *ctx);
78static int check_revocation(X509_STORE_CTX *ctx); 117static int check_revocation(X509_STORE_CTX *ctx);
79static int check_cert(X509_STORE_CTX *ctx); 118static int check_cert(X509_STORE_CTX *ctx);
80static int check_policy(X509_STORE_CTX *ctx); 119static int check_policy(X509_STORE_CTX *ctx);
120
121static int get_crl_score(X509_STORE_CTX *ctx, X509 **pissuer,
122 unsigned int *preasons,
123 X509_CRL *crl, X509 *x);
124static int get_crl_delta(X509_STORE_CTX *ctx,
125 X509_CRL **pcrl, X509_CRL **pdcrl, X509 *x);
126static void get_delta_sk(X509_STORE_CTX *ctx, X509_CRL **dcrl, int *pcrl_score,
127 X509_CRL *base, STACK_OF(X509_CRL) *crls);
128static void crl_akid_check(X509_STORE_CTX *ctx, X509_CRL *crl,
129 X509 **pissuer, int *pcrl_score);
130static int crl_crldp_check(X509 *x, X509_CRL *crl, int crl_score,
131 unsigned int *preasons);
132static int check_crl_path(X509_STORE_CTX *ctx, X509 *x);
133static int check_crl_chain(X509_STORE_CTX *ctx,
134 STACK_OF(X509) *cert_path,
135 STACK_OF(X509) *crl_path);
136
81static int internal_verify(X509_STORE_CTX *ctx); 137static int internal_verify(X509_STORE_CTX *ctx);
82const char X509_version[]="X.509" OPENSSL_VERSION_PTEXT; 138const char X509_version[]="X.509" OPENSSL_VERSION_PTEXT;
83 139
@@ -289,6 +345,12 @@ int X509_verify_cert(X509_STORE_CTX *ctx)
289 345
290 if (!ok) goto end; 346 if (!ok) goto end;
291 347
348 /* Check name constraints */
349
350 ok = check_name_constraints(ctx);
351
352 if (!ok) goto end;
353
292 /* The chain extensions are OK: check trust */ 354 /* The chain extensions are OK: check trust */
293 355
294 if (param->trust > 0) ok = check_trust(ctx); 356 if (param->trust > 0) ok = check_trust(ctx);
@@ -398,8 +460,8 @@ static int check_chain_extensions(X509_STORE_CTX *ctx)
398 X509 *x; 460 X509 *x;
399 int (*cb)(int xok,X509_STORE_CTX *xctx); 461 int (*cb)(int xok,X509_STORE_CTX *xctx);
400 int proxy_path_length = 0; 462 int proxy_path_length = 0;
401 int allow_proxy_certs = 463 int purpose;
402 !!(ctx->param->flags & X509_V_FLAG_ALLOW_PROXY_CERTS); 464 int allow_proxy_certs;
403 cb=ctx->verify_cb; 465 cb=ctx->verify_cb;
404 466
405 /* must_be_ca can have 1 of 3 values: 467 /* must_be_ca can have 1 of 3 values:
@@ -412,10 +474,22 @@ static int check_chain_extensions(X509_STORE_CTX *ctx)
412 */ 474 */
413 must_be_ca = -1; 475 must_be_ca = -1;
414 476
415 /* A hack to keep people who don't want to modify their software 477 /* CRL path validation */
416 happy */ 478 if (ctx->parent)
417 if (getenv("OPENSSL_ALLOW_PROXY_CERTS")) 479 {
418 allow_proxy_certs = 1; 480 allow_proxy_certs = 0;
481 purpose = X509_PURPOSE_CRL_SIGN;
482 }
483 else
484 {
485 allow_proxy_certs =
486 !!(ctx->param->flags & X509_V_FLAG_ALLOW_PROXY_CERTS);
487 /* A hack to keep people who don't want to modify their
488 software happy */
489 if (getenv("OPENSSL_ALLOW_PROXY_CERTS"))
490 allow_proxy_certs = 1;
491 purpose = ctx->param->purpose;
492 }
419 493
420 /* Check all untrusted certificates */ 494 /* Check all untrusted certificates */
421 for (i = 0; i < ctx->last_untrusted; i++) 495 for (i = 0; i < ctx->last_untrusted; i++)
@@ -482,8 +556,7 @@ static int check_chain_extensions(X509_STORE_CTX *ctx)
482 } 556 }
483 if (ctx->param->purpose > 0) 557 if (ctx->param->purpose > 0)
484 { 558 {
485 ret = X509_check_purpose(x, ctx->param->purpose, 559 ret = X509_check_purpose(x, purpose, must_be_ca > 0);
486 must_be_ca > 0);
487 if ((ret == 0) 560 if ((ret == 0)
488 || ((ctx->param->flags & X509_V_FLAG_X509_STRICT) 561 || ((ctx->param->flags & X509_V_FLAG_X509_STRICT)
489 && (ret != 1))) 562 && (ret != 1)))
@@ -536,6 +609,42 @@ static int check_chain_extensions(X509_STORE_CTX *ctx)
536#endif 609#endif
537} 610}
538 611
612static int check_name_constraints(X509_STORE_CTX *ctx)
613 {
614 X509 *x;
615 int i, j, rv;
616 /* Check name constraints for all certificates */
617 for (i = sk_X509_num(ctx->chain) - 1; i >= 0; i--)
618 {
619 x = sk_X509_value(ctx->chain, i);
620 /* Ignore self issued certs unless last in chain */
621 if (i && (x->ex_flags & EXFLAG_SI))
622 continue;
623 /* Check against constraints for all certificates higher in
624 * chain including trust anchor. Trust anchor not strictly
625 * speaking needed but if it includes constraints it is to be
626 * assumed it expects them to be obeyed.
627 */
628 for (j = sk_X509_num(ctx->chain) - 1; j > i; j--)
629 {
630 NAME_CONSTRAINTS *nc = sk_X509_value(ctx->chain, j)->nc;
631 if (nc)
632 {
633 rv = NAME_CONSTRAINTS_check(x, nc);
634 if (rv != X509_V_OK)
635 {
636 ctx->error = rv;
637 ctx->error_depth = i;
638 ctx->current_cert = x;
639 if (!ctx->verify_cb(0,ctx))
640 return 0;
641 }
642 }
643 }
644 }
645 return 1;
646 }
647
539static int check_trust(X509_STORE_CTX *ctx) 648static int check_trust(X509_STORE_CTX *ctx)
540{ 649{
541#ifdef OPENSSL_NO_CHAIN_VERIFY 650#ifdef OPENSSL_NO_CHAIN_VERIFY
@@ -570,7 +679,12 @@ static int check_revocation(X509_STORE_CTX *ctx)
570 if (ctx->param->flags & X509_V_FLAG_CRL_CHECK_ALL) 679 if (ctx->param->flags & X509_V_FLAG_CRL_CHECK_ALL)
571 last = sk_X509_num(ctx->chain) - 1; 680 last = sk_X509_num(ctx->chain) - 1;
572 else 681 else
682 {
683 /* If checking CRL paths this isn't the EE certificate */
684 if (ctx->parent)
685 return 1;
573 last = 0; 686 last = 0;
687 }
574 for(i = 0; i <= last; i++) 688 for(i = 0; i <= last; i++)
575 { 689 {
576 ctx->error_depth = i; 690 ctx->error_depth = i;
@@ -582,30 +696,65 @@ static int check_revocation(X509_STORE_CTX *ctx)
582 696
583static int check_cert(X509_STORE_CTX *ctx) 697static int check_cert(X509_STORE_CTX *ctx)
584 { 698 {
585 X509_CRL *crl = NULL; 699 X509_CRL *crl = NULL, *dcrl = NULL;
586 X509 *x; 700 X509 *x;
587 int ok, cnum; 701 int ok, cnum;
588 cnum = ctx->error_depth; 702 cnum = ctx->error_depth;
589 x = sk_X509_value(ctx->chain, cnum); 703 x = sk_X509_value(ctx->chain, cnum);
590 ctx->current_cert = x; 704 ctx->current_cert = x;
591 /* Try to retrieve relevant CRL */ 705 ctx->current_issuer = NULL;
592 ok = ctx->get_crl(ctx, &crl, x); 706 ctx->current_reasons = 0;
593 /* If error looking up CRL, nothing we can do except 707 while (ctx->current_reasons != CRLDP_ALL_REASONS)
594 * notify callback
595 */
596 if(!ok)
597 { 708 {
598 ctx->error = X509_V_ERR_UNABLE_TO_GET_CRL; 709 /* Try to retrieve relevant CRL */
599 ok = ctx->verify_cb(0, ctx); 710 if (ctx->get_crl)
600 goto err; 711 ok = ctx->get_crl(ctx, &crl, x);
712 else
713 ok = get_crl_delta(ctx, &crl, &dcrl, x);
714 /* If error looking up CRL, nothing we can do except
715 * notify callback
716 */
717 if(!ok)
718 {
719 ctx->error = X509_V_ERR_UNABLE_TO_GET_CRL;
720 ok = ctx->verify_cb(0, ctx);
721 goto err;
722 }
723 ctx->current_crl = crl;
724 ok = ctx->check_crl(ctx, crl);
725 if (!ok)
726 goto err;
727
728 if (dcrl)
729 {
730 ok = ctx->check_crl(ctx, dcrl);
731 if (!ok)
732 goto err;
733 ok = ctx->cert_crl(ctx, dcrl, x);
734 if (!ok)
735 goto err;
736 }
737 else
738 ok = 1;
739
740 /* Don't look in full CRL if delta reason is removefromCRL */
741 if (ok != 2)
742 {
743 ok = ctx->cert_crl(ctx, crl, x);
744 if (!ok)
745 goto err;
746 }
747
748 X509_CRL_free(crl);
749 X509_CRL_free(dcrl);
750 crl = NULL;
751 dcrl = NULL;
601 } 752 }
602 ctx->current_crl = crl;
603 ok = ctx->check_crl(ctx, crl);
604 if (!ok) goto err;
605 ok = ctx->cert_crl(ctx, crl, x);
606 err: 753 err:
607 ctx->current_crl = NULL;
608 X509_CRL_free(crl); 754 X509_CRL_free(crl);
755 X509_CRL_free(dcrl);
756
757 ctx->current_crl = NULL;
609 return ok; 758 return ok;
610 759
611 } 760 }
@@ -616,7 +765,8 @@ static int check_crl_time(X509_STORE_CTX *ctx, X509_CRL *crl, int notify)
616 { 765 {
617 time_t *ptime; 766 time_t *ptime;
618 int i; 767 int i;
619 ctx->current_crl = crl; 768 if (notify)
769 ctx->current_crl = crl;
620 if (ctx->param->flags & X509_V_FLAG_USE_CHECK_TIME) 770 if (ctx->param->flags & X509_V_FLAG_USE_CHECK_TIME)
621 ptime = &ctx->param->check_time; 771 ptime = &ctx->param->check_time;
622 else 772 else
@@ -625,15 +775,19 @@ static int check_crl_time(X509_STORE_CTX *ctx, X509_CRL *crl, int notify)
625 i=X509_cmp_time(X509_CRL_get_lastUpdate(crl), ptime); 775 i=X509_cmp_time(X509_CRL_get_lastUpdate(crl), ptime);
626 if (i == 0) 776 if (i == 0)
627 { 777 {
778 if (!notify)
779 return 0;
628 ctx->error=X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD; 780 ctx->error=X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD;
629 if (!notify || !ctx->verify_cb(0, ctx)) 781 if (!ctx->verify_cb(0, ctx))
630 return 0; 782 return 0;
631 } 783 }
632 784
633 if (i > 0) 785 if (i > 0)
634 { 786 {
787 if (!notify)
788 return 0;
635 ctx->error=X509_V_ERR_CRL_NOT_YET_VALID; 789 ctx->error=X509_V_ERR_CRL_NOT_YET_VALID;
636 if (!notify || !ctx->verify_cb(0, ctx)) 790 if (!ctx->verify_cb(0, ctx))
637 return 0; 791 return 0;
638 } 792 }
639 793
@@ -643,92 +797,545 @@ static int check_crl_time(X509_STORE_CTX *ctx, X509_CRL *crl, int notify)
643 797
644 if (i == 0) 798 if (i == 0)
645 { 799 {
800 if (!notify)
801 return 0;
646 ctx->error=X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD; 802 ctx->error=X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD;
647 if (!notify || !ctx->verify_cb(0, ctx)) 803 if (!ctx->verify_cb(0, ctx))
648 return 0; 804 return 0;
649 } 805 }
650 806 /* Ignore expiry of base CRL is delta is valid */
651 if (i < 0) 807 if ((i < 0) && !(ctx->current_crl_score & CRL_SCORE_TIME_DELTA))
652 { 808 {
809 if (!notify)
810 return 0;
653 ctx->error=X509_V_ERR_CRL_HAS_EXPIRED; 811 ctx->error=X509_V_ERR_CRL_HAS_EXPIRED;
654 if (!notify || !ctx->verify_cb(0, ctx)) 812 if (!ctx->verify_cb(0, ctx))
655 return 0; 813 return 0;
656 } 814 }
657 } 815 }
658 816
659 ctx->current_crl = NULL; 817 if (notify)
818 ctx->current_crl = NULL;
660 819
661 return 1; 820 return 1;
662 } 821 }
663 822
664/* Lookup CRLs from the supplied list. Look for matching isser name 823static int get_crl_sk(X509_STORE_CTX *ctx, X509_CRL **pcrl, X509_CRL **pdcrl,
665 * and validity. If we can't find a valid CRL return the last one 824 X509 **pissuer, int *pscore, unsigned int *preasons,
666 * with matching name. This gives more meaningful error codes. Otherwise 825 STACK_OF(X509_CRL) *crls)
667 * we'd get a CRL not found error if a CRL existed with matching name but
668 * was invalid.
669 */
670
671static int get_crl_sk(X509_STORE_CTX *ctx, X509_CRL **pcrl,
672 X509_NAME *nm, STACK_OF(X509_CRL) *crls)
673 { 826 {
674 int i; 827 int i, crl_score, best_score = *pscore;
828 unsigned int reasons, best_reasons = 0;
829 X509 *x = ctx->current_cert;
675 X509_CRL *crl, *best_crl = NULL; 830 X509_CRL *crl, *best_crl = NULL;
831 X509 *crl_issuer = NULL, *best_crl_issuer = NULL;
832
676 for (i = 0; i < sk_X509_CRL_num(crls); i++) 833 for (i = 0; i < sk_X509_CRL_num(crls); i++)
677 { 834 {
678 crl = sk_X509_CRL_value(crls, i); 835 crl = sk_X509_CRL_value(crls, i);
679 if (X509_NAME_cmp(nm, X509_CRL_get_issuer(crl))) 836 reasons = *preasons;
680 continue; 837 crl_score = get_crl_score(ctx, &crl_issuer, &reasons, crl, x);
681 if (check_crl_time(ctx, crl, 0)) 838
839 if (crl_score > best_score)
682 { 840 {
683 *pcrl = crl; 841 best_crl = crl;
684 CRYPTO_add(&crl->references, 1, CRYPTO_LOCK_X509); 842 best_crl_issuer = crl_issuer;
685 return 1; 843 best_score = crl_score;
844 best_reasons = reasons;
686 } 845 }
687 best_crl = crl;
688 } 846 }
847
689 if (best_crl) 848 if (best_crl)
690 { 849 {
850 if (*pcrl)
851 X509_CRL_free(*pcrl);
691 *pcrl = best_crl; 852 *pcrl = best_crl;
692 CRYPTO_add(&best_crl->references, 1, CRYPTO_LOCK_X509); 853 *pissuer = best_crl_issuer;
854 *pscore = best_score;
855 *preasons = best_reasons;
856 CRYPTO_add(&best_crl->references, 1, CRYPTO_LOCK_X509_CRL);
857 if (*pdcrl)
858 {
859 X509_CRL_free(*pdcrl);
860 *pdcrl = NULL;
861 }
862 get_delta_sk(ctx, pdcrl, pscore, best_crl, crls);
693 } 863 }
694 864
865 if (best_score >= CRL_SCORE_VALID)
866 return 1;
867
695 return 0; 868 return 0;
696 } 869 }
697 870
698/* Retrieve CRL corresponding to certificate: currently just a 871/* Compare two CRL extensions for delta checking purposes. They should be
699 * subject lookup: maybe use AKID later... 872 * both present or both absent. If both present all fields must be identical.
700 */ 873 */
701static int get_crl(X509_STORE_CTX *ctx, X509_CRL **pcrl, X509 *x) 874
875static int crl_extension_match(X509_CRL *a, X509_CRL *b, int nid)
702 { 876 {
703 int ok; 877 ASN1_OCTET_STRING *exta, *extb;
704 X509_CRL *crl = NULL; 878 int i;
705 X509_OBJECT xobj; 879 i = X509_CRL_get_ext_by_NID(a, nid, 0);
706 X509_NAME *nm; 880 if (i >= 0)
707 nm = X509_get_issuer_name(x);
708 ok = get_crl_sk(ctx, &crl, nm, ctx->crls);
709 if (ok)
710 { 881 {
711 *pcrl = crl; 882 /* Can't have multiple occurrences */
883 if (X509_CRL_get_ext_by_NID(a, nid, i) != -1)
884 return 0;
885 exta = X509_EXTENSION_get_data(X509_CRL_get_ext(a, i));
886 }
887 else
888 exta = NULL;
889
890 i = X509_CRL_get_ext_by_NID(b, nid, 0);
891
892 if (i >= 0)
893 {
894
895 if (X509_CRL_get_ext_by_NID(b, nid, i) != -1)
896 return 0;
897 extb = X509_EXTENSION_get_data(X509_CRL_get_ext(b, i));
898 }
899 else
900 extb = NULL;
901
902 if (!exta && !extb)
712 return 1; 903 return 1;
904
905 if (!exta || !extb)
906 return 0;
907
908
909 if (ASN1_OCTET_STRING_cmp(exta, extb))
910 return 0;
911
912 return 1;
913 }
914
915/* See if a base and delta are compatible */
916
917static int check_delta_base(X509_CRL *delta, X509_CRL *base)
918 {
919 /* Delta CRL must be a delta */
920 if (!delta->base_crl_number)
921 return 0;
922 /* Base must have a CRL number */
923 if (!base->crl_number)
924 return 0;
925 /* Issuer names must match */
926 if (X509_NAME_cmp(X509_CRL_get_issuer(base),
927 X509_CRL_get_issuer(delta)))
928 return 0;
929 /* AKID and IDP must match */
930 if (!crl_extension_match(delta, base, NID_authority_key_identifier))
931 return 0;
932 if (!crl_extension_match(delta, base, NID_issuing_distribution_point))
933 return 0;
934 /* Delta CRL base number must not exceed Full CRL number. */
935 if (ASN1_INTEGER_cmp(delta->base_crl_number, base->crl_number) > 0)
936 return 0;
937 /* Delta CRL number must exceed full CRL number */
938 if (ASN1_INTEGER_cmp(delta->crl_number, base->crl_number) > 0)
939 return 1;
940 return 0;
941 }
942
943/* For a given base CRL find a delta... maybe extend to delta scoring
944 * or retrieve a chain of deltas...
945 */
946
947static void get_delta_sk(X509_STORE_CTX *ctx, X509_CRL **dcrl, int *pscore,
948 X509_CRL *base, STACK_OF(X509_CRL) *crls)
949 {
950 X509_CRL *delta;
951 int i;
952 if (!(ctx->param->flags & X509_V_FLAG_USE_DELTAS))
953 return;
954 if (!((ctx->current_cert->ex_flags | base->flags) & EXFLAG_FRESHEST))
955 return;
956 for (i = 0; i < sk_X509_CRL_num(crls); i++)
957 {
958 delta = sk_X509_CRL_value(crls, i);
959 if (check_delta_base(delta, base))
960 {
961 if (check_crl_time(ctx, delta, 0))
962 *pscore |= CRL_SCORE_TIME_DELTA;
963 CRYPTO_add(&delta->references, 1, CRYPTO_LOCK_X509_CRL);
964 *dcrl = delta;
965 return;
966 }
967 }
968 *dcrl = NULL;
969 }
970
971/* For a given CRL return how suitable it is for the supplied certificate 'x'.
972 * The return value is a mask of several criteria.
973 * If the issuer is not the certificate issuer this is returned in *pissuer.
974 * The reasons mask is also used to determine if the CRL is suitable: if
975 * no new reasons the CRL is rejected, otherwise reasons is updated.
976 */
977
978static int get_crl_score(X509_STORE_CTX *ctx, X509 **pissuer,
979 unsigned int *preasons,
980 X509_CRL *crl, X509 *x)
981 {
982
983 int crl_score = 0;
984 unsigned int tmp_reasons = *preasons, crl_reasons;
985
986 /* First see if we can reject CRL straight away */
987
988 /* Invalid IDP cannot be processed */
989 if (crl->idp_flags & IDP_INVALID)
990 return 0;
991 /* Reason codes or indirect CRLs need extended CRL support */
992 if (!(ctx->param->flags & X509_V_FLAG_EXTENDED_CRL_SUPPORT))
993 {
994 if (crl->idp_flags & (IDP_INDIRECT | IDP_REASONS))
995 return 0;
996 }
997 else if (crl->idp_flags & IDP_REASONS)
998 {
999 /* If no new reasons reject */
1000 if (!(crl->idp_reasons & ~tmp_reasons))
1001 return 0;
1002 }
1003 /* Don't process deltas at this stage */
1004 else if (crl->base_crl_number)
1005 return 0;
1006 /* If issuer name doesn't match certificate need indirect CRL */
1007 if (X509_NAME_cmp(X509_get_issuer_name(x), X509_CRL_get_issuer(crl)))
1008 {
1009 if (!(crl->idp_flags & IDP_INDIRECT))
1010 return 0;
1011 }
1012 else
1013 crl_score |= CRL_SCORE_ISSUER_NAME;
1014
1015 if (!(crl->flags & EXFLAG_CRITICAL))
1016 crl_score |= CRL_SCORE_NOCRITICAL;
1017
1018 /* Check expiry */
1019 if (check_crl_time(ctx, crl, 0))
1020 crl_score |= CRL_SCORE_TIME;
1021
1022 /* Check authority key ID and locate certificate issuer */
1023 crl_akid_check(ctx, crl, pissuer, &crl_score);
1024
1025 /* If we can't locate certificate issuer at this point forget it */
1026
1027 if (!(crl_score & CRL_SCORE_AKID))
1028 return 0;
1029
1030 /* Check cert for matching CRL distribution points */
1031
1032 if (crl_crldp_check(x, crl, crl_score, &crl_reasons))
1033 {
1034 /* If no new reasons reject */
1035 if (!(crl_reasons & ~tmp_reasons))
1036 return 0;
1037 tmp_reasons |= crl_reasons;
1038 crl_score |= CRL_SCORE_SCOPE;
713 } 1039 }
714 1040
715 ok = X509_STORE_get_by_subject(ctx, X509_LU_CRL, nm, &xobj); 1041 *preasons = tmp_reasons;
1042
1043 return crl_score;
1044
1045 }
1046
1047static void crl_akid_check(X509_STORE_CTX *ctx, X509_CRL *crl,
1048 X509 **pissuer, int *pcrl_score)
1049 {
1050 X509 *crl_issuer = NULL;
1051 X509_NAME *cnm = X509_CRL_get_issuer(crl);
1052 int cidx = ctx->error_depth;
1053 int i;
716 1054
717 if (!ok) 1055 if (cidx != sk_X509_num(ctx->chain) - 1)
1056 cidx++;
1057
1058 crl_issuer = sk_X509_value(ctx->chain, cidx);
1059
1060 if (X509_check_akid(crl_issuer, crl->akid) == X509_V_OK)
718 { 1061 {
719 /* If we got a near match from get_crl_sk use that */ 1062 if (*pcrl_score & CRL_SCORE_ISSUER_NAME)
720 if (crl)
721 { 1063 {
722 *pcrl = crl; 1064 *pcrl_score |= CRL_SCORE_AKID|CRL_SCORE_ISSUER_CERT;
723 return 1; 1065 *pissuer = crl_issuer;
1066 return;
1067 }
1068 }
1069
1070 for (cidx++; cidx < sk_X509_num(ctx->chain); cidx++)
1071 {
1072 crl_issuer = sk_X509_value(ctx->chain, cidx);
1073 if (X509_NAME_cmp(X509_get_subject_name(crl_issuer), cnm))
1074 continue;
1075 if (X509_check_akid(crl_issuer, crl->akid) == X509_V_OK)
1076 {
1077 *pcrl_score |= CRL_SCORE_AKID|CRL_SCORE_SAME_PATH;
1078 *pissuer = crl_issuer;
1079 return;
1080 }
1081 }
1082
1083 /* Anything else needs extended CRL support */
1084
1085 if (!(ctx->param->flags & X509_V_FLAG_EXTENDED_CRL_SUPPORT))
1086 return;
1087
1088 /* Otherwise the CRL issuer is not on the path. Look for it in the
1089 * set of untrusted certificates.
1090 */
1091 for (i = 0; i < sk_X509_num(ctx->untrusted); i++)
1092 {
1093 crl_issuer = sk_X509_value(ctx->untrusted, i);
1094 if (X509_NAME_cmp(X509_get_subject_name(crl_issuer), cnm))
1095 continue;
1096 if (X509_check_akid(crl_issuer, crl->akid) == X509_V_OK)
1097 {
1098 *pissuer = crl_issuer;
1099 *pcrl_score |= CRL_SCORE_AKID;
1100 return;
724 } 1101 }
1102 }
1103 }
1104
1105/* Check the path of a CRL issuer certificate. This creates a new
1106 * X509_STORE_CTX and populates it with most of the parameters from the
1107 * parent. This could be optimised somewhat since a lot of path checking
1108 * will be duplicated by the parent, but this will rarely be used in
1109 * practice.
1110 */
1111
1112static int check_crl_path(X509_STORE_CTX *ctx, X509 *x)
1113 {
1114 X509_STORE_CTX crl_ctx;
1115 int ret;
1116 /* Don't allow recursive CRL path validation */
1117 if (ctx->parent)
725 return 0; 1118 return 0;
1119 if (!X509_STORE_CTX_init(&crl_ctx, ctx->ctx, x, ctx->untrusted))
1120 return -1;
1121
1122 crl_ctx.crls = ctx->crls;
1123 /* Copy verify params across */
1124 X509_STORE_CTX_set0_param(&crl_ctx, ctx->param);
1125
1126 crl_ctx.parent = ctx;
1127 crl_ctx.verify_cb = ctx->verify_cb;
1128
1129 /* Verify CRL issuer */
1130 ret = X509_verify_cert(&crl_ctx);
1131
1132 if (ret <= 0)
1133 goto err;
1134
1135 /* Check chain is acceptable */
1136
1137 ret = check_crl_chain(ctx, ctx->chain, crl_ctx.chain);
1138 err:
1139 X509_STORE_CTX_cleanup(&crl_ctx);
1140 return ret;
1141 }
1142
1143/* RFC3280 says nothing about the relationship between CRL path
1144 * and certificate path, which could lead to situations where a
1145 * certificate could be revoked or validated by a CA not authorised
1146 * to do so. RFC5280 is more strict and states that the two paths must
1147 * end in the same trust anchor, though some discussions remain...
1148 * until this is resolved we use the RFC5280 version
1149 */
1150
1151static int check_crl_chain(X509_STORE_CTX *ctx,
1152 STACK_OF(X509) *cert_path,
1153 STACK_OF(X509) *crl_path)
1154 {
1155 X509 *cert_ta, *crl_ta;
1156 cert_ta = sk_X509_value(cert_path, sk_X509_num(cert_path) - 1);
1157 crl_ta = sk_X509_value(crl_path, sk_X509_num(crl_path) - 1);
1158 if (!X509_cmp(cert_ta, crl_ta))
1159 return 1;
1160 return 0;
1161 }
1162
1163/* Check for match between two dist point names: three separate cases.
1164 * 1. Both are relative names and compare X509_NAME types.
1165 * 2. One full, one relative. Compare X509_NAME to GENERAL_NAMES.
1166 * 3. Both are full names and compare two GENERAL_NAMES.
1167 * 4. One is NULL: automatic match.
1168 */
1169
1170
1171static int idp_check_dp(DIST_POINT_NAME *a, DIST_POINT_NAME *b)
1172 {
1173 X509_NAME *nm = NULL;
1174 GENERAL_NAMES *gens = NULL;
1175 GENERAL_NAME *gena, *genb;
1176 int i, j;
1177 if (!a || !b)
1178 return 1;
1179 if (a->type == 1)
1180 {
1181 if (!a->dpname)
1182 return 0;
1183 /* Case 1: two X509_NAME */
1184 if (b->type == 1)
1185 {
1186 if (!b->dpname)
1187 return 0;
1188 if (!X509_NAME_cmp(a->dpname, b->dpname))
1189 return 1;
1190 else
1191 return 0;
1192 }
1193 /* Case 2: set name and GENERAL_NAMES appropriately */
1194 nm = a->dpname;
1195 gens = b->name.fullname;
1196 }
1197 else if (b->type == 1)
1198 {
1199 if (!b->dpname)
1200 return 0;
1201 /* Case 2: set name and GENERAL_NAMES appropriately */
1202 gens = a->name.fullname;
1203 nm = b->dpname;
726 } 1204 }
727 1205
728 *pcrl = xobj.data.crl; 1206 /* Handle case 2 with one GENERAL_NAMES and one X509_NAME */
1207 if (nm)
1208 {
1209 for (i = 0; i < sk_GENERAL_NAME_num(gens); i++)
1210 {
1211 gena = sk_GENERAL_NAME_value(gens, i);
1212 if (gena->type != GEN_DIRNAME)
1213 continue;
1214 if (!X509_NAME_cmp(nm, gena->d.directoryName))
1215 return 1;
1216 }
1217 return 0;
1218 }
1219
1220 /* Else case 3: two GENERAL_NAMES */
1221
1222 for (i = 0; i < sk_GENERAL_NAME_num(a->name.fullname); i++)
1223 {
1224 gena = sk_GENERAL_NAME_value(a->name.fullname, i);
1225 for (j = 0; j < sk_GENERAL_NAME_num(b->name.fullname); j++)
1226 {
1227 genb = sk_GENERAL_NAME_value(b->name.fullname, j);
1228 if (!GENERAL_NAME_cmp(gena, genb))
1229 return 1;
1230 }
1231 }
1232
1233 return 0;
1234
1235 }
1236
1237static int crldp_check_crlissuer(DIST_POINT *dp, X509_CRL *crl, int crl_score)
1238 {
1239 int i;
1240 X509_NAME *nm = X509_CRL_get_issuer(crl);
1241 /* If no CRLissuer return is successful iff don't need a match */
1242 if (!dp->CRLissuer)
1243 return !!(crl_score & CRL_SCORE_ISSUER_NAME);
1244 for (i = 0; i < sk_GENERAL_NAME_num(dp->CRLissuer); i++)
1245 {
1246 GENERAL_NAME *gen = sk_GENERAL_NAME_value(dp->CRLissuer, i);
1247 if (gen->type != GEN_DIRNAME)
1248 continue;
1249 if (!X509_NAME_cmp(gen->d.directoryName, nm))
1250 return 1;
1251 }
1252 return 0;
1253 }
1254
1255/* Check CRLDP and IDP */
1256
1257static int crl_crldp_check(X509 *x, X509_CRL *crl, int crl_score,
1258 unsigned int *preasons)
1259 {
1260 int i;
1261 if (crl->idp_flags & IDP_ONLYATTR)
1262 return 0;
1263 if (x->ex_flags & EXFLAG_CA)
1264 {
1265 if (crl->idp_flags & IDP_ONLYUSER)
1266 return 0;
1267 }
1268 else
1269 {
1270 if (crl->idp_flags & IDP_ONLYCA)
1271 return 0;
1272 }
1273 *preasons = crl->idp_reasons;
1274 for (i = 0; i < sk_DIST_POINT_num(x->crldp); i++)
1275 {
1276 DIST_POINT *dp = sk_DIST_POINT_value(x->crldp, i);
1277 if (crldp_check_crlissuer(dp, crl, crl_score))
1278 {
1279 if (!crl->idp ||
1280 idp_check_dp(dp->distpoint, crl->idp->distpoint))
1281 {
1282 *preasons &= dp->dp_reasons;
1283 return 1;
1284 }
1285 }
1286 }
1287 if ((!crl->idp || !crl->idp->distpoint) && (crl_score & CRL_SCORE_ISSUER_NAME))
1288 return 1;
1289 return 0;
1290 }
1291
1292/* Retrieve CRL corresponding to current certificate.
1293 * If deltas enabled try to find a delta CRL too
1294 */
1295
1296static int get_crl_delta(X509_STORE_CTX *ctx,
1297 X509_CRL **pcrl, X509_CRL **pdcrl, X509 *x)
1298 {
1299 int ok;
1300 X509 *issuer = NULL;
1301 int crl_score = 0;
1302 unsigned int reasons;
1303 X509_CRL *crl = NULL, *dcrl = NULL;
1304 STACK_OF(X509_CRL) *skcrl;
1305 X509_NAME *nm = X509_get_issuer_name(x);
1306 reasons = ctx->current_reasons;
1307 ok = get_crl_sk(ctx, &crl, &dcrl,
1308 &issuer, &crl_score, &reasons, ctx->crls);
1309
1310 if (ok)
1311 goto done;
1312
1313 /* Lookup CRLs from store */
1314
1315 skcrl = ctx->lookup_crls(ctx, nm);
1316
1317 /* If no CRLs found and a near match from get_crl_sk use that */
1318 if (!skcrl && crl)
1319 goto done;
1320
1321 get_crl_sk(ctx, &crl, &dcrl, &issuer, &crl_score, &reasons, skcrl);
1322
1323 sk_X509_CRL_pop_free(skcrl, X509_CRL_free);
1324
1325 done:
1326
1327 /* If we got any kind of CRL use it and return success */
729 if (crl) 1328 if (crl)
730 X509_CRL_free(crl); 1329 {
731 return 1; 1330 ctx->current_issuer = issuer;
1331 ctx->current_crl_score = crl_score;
1332 ctx->current_reasons = reasons;
1333 *pcrl = crl;
1334 *pdcrl = dcrl;
1335 return 1;
1336 }
1337
1338 return 0;
732 } 1339 }
733 1340
734/* Check CRL validity */ 1341/* Check CRL validity */
@@ -739,10 +1346,14 @@ static int check_crl(X509_STORE_CTX *ctx, X509_CRL *crl)
739 int ok = 0, chnum, cnum; 1346 int ok = 0, chnum, cnum;
740 cnum = ctx->error_depth; 1347 cnum = ctx->error_depth;
741 chnum = sk_X509_num(ctx->chain) - 1; 1348 chnum = sk_X509_num(ctx->chain) - 1;
742 /* Find CRL issuer: if not last certificate then issuer 1349 /* if we have an alternative CRL issuer cert use that */
1350 if (ctx->current_issuer)
1351 issuer = ctx->current_issuer;
1352
1353 /* Else find CRL issuer: if not last certificate then issuer
743 * is next certificate in chain. 1354 * is next certificate in chain.
744 */ 1355 */
745 if(cnum < chnum) 1356 else if (cnum < chnum)
746 issuer = sk_X509_value(ctx->chain, cnum + 1); 1357 issuer = sk_X509_value(ctx->chain, cnum + 1);
747 else 1358 else
748 { 1359 {
@@ -758,13 +1369,52 @@ static int check_crl(X509_STORE_CTX *ctx, X509_CRL *crl)
758 1369
759 if(issuer) 1370 if(issuer)
760 { 1371 {
761 /* Check for cRLSign bit if keyUsage present */ 1372 /* Skip most tests for deltas because they have already
762 if ((issuer->ex_flags & EXFLAG_KUSAGE) && 1373 * been done
763 !(issuer->ex_kusage & KU_CRL_SIGN)) 1374 */
1375 if (!crl->base_crl_number)
764 { 1376 {
765 ctx->error = X509_V_ERR_KEYUSAGE_NO_CRL_SIGN; 1377 /* Check for cRLSign bit if keyUsage present */
766 ok = ctx->verify_cb(0, ctx); 1378 if ((issuer->ex_flags & EXFLAG_KUSAGE) &&
767 if(!ok) goto err; 1379 !(issuer->ex_kusage & KU_CRL_SIGN))
1380 {
1381 ctx->error = X509_V_ERR_KEYUSAGE_NO_CRL_SIGN;
1382 ok = ctx->verify_cb(0, ctx);
1383 if(!ok) goto err;
1384 }
1385
1386 if (!(ctx->current_crl_score & CRL_SCORE_SCOPE))
1387 {
1388 ctx->error = X509_V_ERR_DIFFERENT_CRL_SCOPE;
1389 ok = ctx->verify_cb(0, ctx);
1390 if(!ok) goto err;
1391 }
1392
1393 if (!(ctx->current_crl_score & CRL_SCORE_SAME_PATH))
1394 {
1395 if (check_crl_path(ctx, ctx->current_issuer) <= 0)
1396 {
1397 ctx->error = X509_V_ERR_CRL_PATH_VALIDATION_ERROR;
1398 ok = ctx->verify_cb(0, ctx);
1399 if(!ok) goto err;
1400 }
1401 }
1402
1403 if (crl->idp_flags & IDP_INVALID)
1404 {
1405 ctx->error = X509_V_ERR_INVALID_EXTENSION;
1406 ok = ctx->verify_cb(0, ctx);
1407 if(!ok) goto err;
1408 }
1409
1410
1411 }
1412
1413 if (!(ctx->current_crl_score & CRL_SCORE_TIME))
1414 {
1415 ok = check_crl_time(ctx, crl, 1);
1416 if (!ok)
1417 goto err;
768 } 1418 }
769 1419
770 /* Attempt to get issuer certificate public key */ 1420 /* Attempt to get issuer certificate public key */
@@ -788,10 +1438,6 @@ static int check_crl(X509_STORE_CTX *ctx, X509_CRL *crl)
788 } 1438 }
789 } 1439 }
790 1440
791 ok = check_crl_time(ctx, crl, 1);
792 if (!ok)
793 goto err;
794
795 ok = 1; 1441 ok = 1;
796 1442
797 err: 1443 err:
@@ -802,62 +1448,43 @@ static int check_crl(X509_STORE_CTX *ctx, X509_CRL *crl)
802/* Check certificate against CRL */ 1448/* Check certificate against CRL */
803static int cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x) 1449static int cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x)
804 { 1450 {
805 int idx, ok; 1451 int ok;
806 X509_REVOKED rtmp; 1452 X509_REVOKED *rev;
807 STACK_OF(X509_EXTENSION) *exts; 1453 /* The rules changed for this... previously if a CRL contained
808 X509_EXTENSION *ext; 1454 * unhandled critical extensions it could still be used to indicate
809 /* Look for serial number of certificate in CRL */ 1455 * a certificate was revoked. This has since been changed since
810 rtmp.serialNumber = X509_get_serialNumber(x); 1456 * critical extension can change the meaning of CRL entries.
811 /* Sort revoked into serial number order if not already sorted. 1457 */
812 * Do this under a lock to avoid race condition. 1458 if (crl->flags & EXFLAG_CRITICAL)
813 */
814 if (!sk_X509_REVOKED_is_sorted(crl->crl->revoked))
815 { 1459 {
816 CRYPTO_w_lock(CRYPTO_LOCK_X509_CRL); 1460 if (ctx->param->flags & X509_V_FLAG_IGNORE_CRITICAL)
817 sk_X509_REVOKED_sort(crl->crl->revoked); 1461 return 1;
818 CRYPTO_w_unlock(CRYPTO_LOCK_X509_CRL); 1462 ctx->error = X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION;
1463 ok = ctx->verify_cb(0, ctx);
1464 if(!ok)
1465 return 0;
819 } 1466 }
820 idx = sk_X509_REVOKED_find(crl->crl->revoked, &rtmp); 1467 /* Look for serial number of certificate in CRL
821 /* If found assume revoked: want something cleverer than 1468 * If found make sure reason is not removeFromCRL.
822 * this to handle entry extensions in V2 CRLs.
823 */ 1469 */
824 if(idx >= 0) 1470 if (X509_CRL_get0_by_cert(crl, &rev, x))
825 { 1471 {
1472 if (rev->reason == CRL_REASON_REMOVE_FROM_CRL)
1473 return 2;
826 ctx->error = X509_V_ERR_CERT_REVOKED; 1474 ctx->error = X509_V_ERR_CERT_REVOKED;
827 ok = ctx->verify_cb(0, ctx); 1475 ok = ctx->verify_cb(0, ctx);
828 if (!ok) return 0; 1476 if (!ok)
1477 return 0;
829 } 1478 }
830 1479
831 if (ctx->param->flags & X509_V_FLAG_IGNORE_CRITICAL)
832 return 1;
833
834 /* See if we have any critical CRL extensions: since we
835 * currently don't handle any CRL extensions the CRL must be
836 * rejected.
837 * This code accesses the X509_CRL structure directly: applications
838 * shouldn't do this.
839 */
840
841 exts = crl->crl->extensions;
842
843 for (idx = 0; idx < sk_X509_EXTENSION_num(exts); idx++)
844 {
845 ext = sk_X509_EXTENSION_value(exts, idx);
846 if (ext->critical > 0)
847 {
848 ctx->error =
849 X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION;
850 ok = ctx->verify_cb(0, ctx);
851 if(!ok) return 0;
852 break;
853 }
854 }
855 return 1; 1480 return 1;
856 } 1481 }
857 1482
858static int check_policy(X509_STORE_CTX *ctx) 1483static int check_policy(X509_STORE_CTX *ctx)
859 { 1484 {
860 int ret; 1485 int ret;
1486 if (ctx->parent)
1487 return 1;
861 ret = X509_policy_check(&ctx->tree, &ctx->explicit_policy, ctx->chain, 1488 ret = X509_policy_check(&ctx->tree, &ctx->explicit_policy, ctx->chain,
862 ctx->param->policies, ctx->param->flags); 1489 ctx->param->policies, ctx->param->flags);
863 if (ret == 0) 1490 if (ret == 0)
@@ -880,7 +1507,8 @@ static int check_policy(X509_STORE_CTX *ctx)
880 continue; 1507 continue;
881 ctx->current_cert = x; 1508 ctx->current_cert = x;
882 ctx->error = X509_V_ERR_INVALID_POLICY_EXTENSION; 1509 ctx->error = X509_V_ERR_INVALID_POLICY_EXTENSION;
883 ret = ctx->verify_cb(0, ctx); 1510 if(!ctx->verify_cb(0, ctx))
1511 return 0;
884 } 1512 }
885 return 1; 1513 return 1;
886 } 1514 }
@@ -986,7 +1614,12 @@ static int internal_verify(X509_STORE_CTX *ctx)
986 while (n >= 0) 1614 while (n >= 0)
987 { 1615 {
988 ctx->error_depth=n; 1616 ctx->error_depth=n;
989 if (!xs->valid) 1617
1618 /* Skip signature check for self signed certificates unless
1619 * explicitly asked for. It doesn't add any security and
1620 * just wastes time.
1621 */
1622 if (!xs->valid && (xs != xi || (ctx->param->flags & X509_V_FLAG_CHECK_SS_SIGNATURE)))
990 { 1623 {
991 if ((pkey=X509_get_pubkey(xi)) == NULL) 1624 if ((pkey=X509_get_pubkey(xi)) == NULL)
992 { 1625 {
@@ -996,13 +1629,6 @@ static int internal_verify(X509_STORE_CTX *ctx)
996 if (!ok) goto end; 1629 if (!ok) goto end;
997 } 1630 }
998 else if (X509_verify(xs,pkey) <= 0) 1631 else if (X509_verify(xs,pkey) <= 0)
999 /* XXX For the final trusted self-signed cert,
1000 * this is a waste of time. That check should
1001 * optional so that e.g. 'openssl x509' can be
1002 * used to detect invalid self-signatures, but
1003 * we don't verify again and again in SSL
1004 * handshakes and the like once the cert has
1005 * been declared trusted. */
1006 { 1632 {
1007 ctx->error=X509_V_ERR_CERT_SIGNATURE_FAILURE; 1633 ctx->error=X509_V_ERR_CERT_SIGNATURE_FAILURE;
1008 ctx->current_cert=xs; 1634 ctx->current_cert=xs;
@@ -1041,12 +1667,12 @@ end:
1041 return ok; 1667 return ok;
1042 } 1668 }
1043 1669
1044int X509_cmp_current_time(ASN1_TIME *ctm) 1670int X509_cmp_current_time(const ASN1_TIME *ctm)
1045{ 1671{
1046 return X509_cmp_time(ctm, NULL); 1672 return X509_cmp_time(ctm, NULL);
1047} 1673}
1048 1674
1049int X509_cmp_time(ASN1_TIME *ctm, time_t *cmp_time) 1675int X509_cmp_time(const ASN1_TIME *ctm, time_t *cmp_time)
1050 { 1676 {
1051 char *str; 1677 char *str;
1052 ASN1_TIME atm; 1678 ASN1_TIME atm;
@@ -1101,6 +1727,7 @@ int X509_cmp_time(ASN1_TIME *ctm, time_t *cmp_time)
1101 offset= -offset; 1727 offset= -offset;
1102 } 1728 }
1103 atm.type=ctm->type; 1729 atm.type=ctm->type;
1730 atm.flags = 0;
1104 atm.length=sizeof(buff2); 1731 atm.length=sizeof(buff2);
1105 atm.data=(unsigned char *)buff2; 1732 atm.data=(unsigned char *)buff2;
1106 1733
@@ -1129,19 +1756,28 @@ ASN1_TIME *X509_gmtime_adj(ASN1_TIME *s, long adj)
1129 return X509_time_adj(s, adj, NULL); 1756 return X509_time_adj(s, adj, NULL);
1130} 1757}
1131 1758
1132ASN1_TIME *X509_time_adj(ASN1_TIME *s, long adj, time_t *in_tm) 1759ASN1_TIME *X509_time_adj(ASN1_TIME *s, long offset_sec, time_t *in_tm)
1760 {
1761 return X509_time_adj_ex(s, 0, offset_sec, in_tm);
1762 }
1763
1764ASN1_TIME *X509_time_adj_ex(ASN1_TIME *s,
1765 int offset_day, long offset_sec, time_t *in_tm)
1133 { 1766 {
1134 time_t t; 1767 time_t t;
1135 int type = -1;
1136 1768
1137 if (in_tm) t = *in_tm; 1769 if (in_tm) t = *in_tm;
1138 else time(&t); 1770 else time(&t);
1139 1771
1140 t+=adj; 1772 if (s && !(s->flags & ASN1_STRING_FLAG_MSTRING))
1141 if (s) type = s->type; 1773 {
1142 if (type == V_ASN1_UTCTIME) return ASN1_UTCTIME_set(s,t); 1774 if (s->type == V_ASN1_UTCTIME)
1143 if (type == V_ASN1_GENERALIZEDTIME) return ASN1_GENERALIZEDTIME_set(s, t); 1775 return ASN1_UTCTIME_adj(s,t, offset_day, offset_sec);
1144 return ASN1_TIME_set(s, t); 1776 if (s->type == V_ASN1_GENERALIZEDTIME)
1777 return ASN1_GENERALIZEDTIME_adj(s, t, offset_day,
1778 offset_sec);
1779 }
1780 return ASN1_TIME_adj(s, t, offset_day, offset_sec);
1145 } 1781 }
1146 1782
1147int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain) 1783int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain)
@@ -1244,6 +1880,21 @@ STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx)
1244 return chain; 1880 return chain;
1245 } 1881 }
1246 1882
1883X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx)
1884 {
1885 return ctx->current_issuer;
1886 }
1887
1888X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx)
1889 {
1890 return ctx->current_crl;
1891 }
1892
1893X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx)
1894 {
1895 return ctx->parent;
1896 }
1897
1247void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *x) 1898void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *x)
1248 { 1899 {
1249 ctx->cert=x; 1900 ctx->cert=x;
@@ -1365,6 +2016,7 @@ int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,
1365 ctx->current_cert=NULL; 2016 ctx->current_cert=NULL;
1366 ctx->current_issuer=NULL; 2017 ctx->current_issuer=NULL;
1367 ctx->tree = NULL; 2018 ctx->tree = NULL;
2019 ctx->parent = NULL;
1368 2020
1369 ctx->param = X509_VERIFY_PARAM_new(); 2021 ctx->param = X509_VERIFY_PARAM_new();
1370 2022
@@ -1430,7 +2082,7 @@ int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,
1430 if (store && store->get_crl) 2082 if (store && store->get_crl)
1431 ctx->get_crl = store->get_crl; 2083 ctx->get_crl = store->get_crl;
1432 else 2084 else
1433 ctx->get_crl = get_crl; 2085 ctx->get_crl = NULL;
1434 2086
1435 if (store && store->check_crl) 2087 if (store && store->check_crl)
1436 ctx->check_crl = store->check_crl; 2088 ctx->check_crl = store->check_crl;
@@ -1442,6 +2094,16 @@ int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,
1442 else 2094 else
1443 ctx->cert_crl = cert_crl; 2095 ctx->cert_crl = cert_crl;
1444 2096
2097 if (store && store->lookup_certs)
2098 ctx->lookup_certs = store->lookup_certs;
2099 else
2100 ctx->lookup_certs = X509_STORE_get1_certs;
2101
2102 if (store && store->lookup_crls)
2103 ctx->lookup_crls = store->lookup_crls;
2104 else
2105 ctx->lookup_crls = X509_STORE_get1_crls;
2106
1445 ctx->check_policy = check_policy; 2107 ctx->check_policy = check_policy;
1446 2108
1447 2109
@@ -1474,7 +2136,8 @@ void X509_STORE_CTX_cleanup(X509_STORE_CTX *ctx)
1474 if (ctx->cleanup) ctx->cleanup(ctx); 2136 if (ctx->cleanup) ctx->cleanup(ctx);
1475 if (ctx->param != NULL) 2137 if (ctx->param != NULL)
1476 { 2138 {
1477 X509_VERIFY_PARAM_free(ctx->param); 2139 if (ctx->parent == NULL)
2140 X509_VERIFY_PARAM_free(ctx->param);
1478 ctx->param=NULL; 2141 ctx->param=NULL;
1479 } 2142 }
1480 if (ctx->tree != NULL) 2143 if (ctx->tree != NULL)
diff --git a/src/lib/libssl/src/crypto/x509/x509_vfy.h b/src/lib/libssl/src/crypto/x509/x509_vfy.h
index 76c76e1719..fe09b30aaa 100644
--- a/src/lib/libssl/src/crypto/x509/x509_vfy.h
+++ b/src/lib/libssl/src/crypto/x509/x509_vfy.h
@@ -77,6 +77,7 @@
77extern "C" { 77extern "C" {
78#endif 78#endif
79 79
80#if 0
80/* Outer object */ 81/* Outer object */
81typedef struct x509_hash_dir_st 82typedef struct x509_hash_dir_st
82 { 83 {
@@ -85,6 +86,7 @@ typedef struct x509_hash_dir_st
85 int *dirs_type; 86 int *dirs_type;
86 int num_dirs_alloced; 87 int num_dirs_alloced;
87 } X509_HASH_DIR_CTX; 88 } X509_HASH_DIR_CTX;
89#endif
88 90
89typedef struct x509_file_st 91typedef struct x509_file_st
90 { 92 {
@@ -198,6 +200,8 @@ struct x509_store_st
198 int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); /* retrieve CRL */ 200 int (*get_crl)(X509_STORE_CTX *ctx, X509_CRL **crl, X509 *x); /* retrieve CRL */
199 int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */ 201 int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */
200 int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */ 202 int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */
203 STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm);
204 STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm);
201 int (*cleanup)(X509_STORE_CTX *ctx); 205 int (*cleanup)(X509_STORE_CTX *ctx);
202 206
203 CRYPTO_EX_DATA ex_data; 207 CRYPTO_EX_DATA ex_data;
@@ -246,6 +250,8 @@ struct x509_store_ctx_st /* X509_STORE_CTX */
246 int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */ 250 int (*check_crl)(X509_STORE_CTX *ctx, X509_CRL *crl); /* Check CRL validity */
247 int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */ 251 int (*cert_crl)(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x); /* Check certificate against CRL */
248 int (*check_policy)(X509_STORE_CTX *ctx); 252 int (*check_policy)(X509_STORE_CTX *ctx);
253 STACK_OF(X509) * (*lookup_certs)(X509_STORE_CTX *ctx, X509_NAME *nm);
254 STACK_OF(X509_CRL) * (*lookup_crls)(X509_STORE_CTX *ctx, X509_NAME *nm);
249 int (*cleanup)(X509_STORE_CTX *ctx); 255 int (*cleanup)(X509_STORE_CTX *ctx);
250 256
251 /* The following is built up */ 257 /* The following is built up */
@@ -263,6 +269,11 @@ struct x509_store_ctx_st /* X509_STORE_CTX */
263 X509 *current_issuer; /* cert currently being tested as valid issuer */ 269 X509 *current_issuer; /* cert currently being tested as valid issuer */
264 X509_CRL *current_crl; /* current CRL */ 270 X509_CRL *current_crl; /* current CRL */
265 271
272 int current_crl_score; /* score of current CRL */
273 unsigned int current_reasons; /* Reason mask */
274
275 X509_STORE_CTX *parent; /* For CRL path validation: parent context */
276
266 CRYPTO_EX_DATA ex_data; 277 CRYPTO_EX_DATA ex_data;
267 } /* X509_STORE_CTX */; 278 } /* X509_STORE_CTX */;
268 279
@@ -330,8 +341,18 @@ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
330#define X509_V_ERR_INVALID_EXTENSION 41 341#define X509_V_ERR_INVALID_EXTENSION 41
331#define X509_V_ERR_INVALID_POLICY_EXTENSION 42 342#define X509_V_ERR_INVALID_POLICY_EXTENSION 42
332#define X509_V_ERR_NO_EXPLICIT_POLICY 43 343#define X509_V_ERR_NO_EXPLICIT_POLICY 43
344#define X509_V_ERR_DIFFERENT_CRL_SCOPE 44
345#define X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE 45
346
347#define X509_V_ERR_UNNESTED_RESOURCE 46
333 348
334#define X509_V_ERR_UNNESTED_RESOURCE 44 349#define X509_V_ERR_PERMITTED_VIOLATION 47
350#define X509_V_ERR_EXCLUDED_VIOLATION 48
351#define X509_V_ERR_SUBTREE_MINMAX 49
352#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE 51
353#define X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX 52
354#define X509_V_ERR_UNSUPPORTED_NAME_SYNTAX 53
355#define X509_V_ERR_CRL_PATH_VALIDATION_ERROR 54
335 356
336/* The application is not happy */ 357/* The application is not happy */
337#define X509_V_ERR_APPLICATION_VERIFICATION 50 358#define X509_V_ERR_APPLICATION_VERIFICATION 50
@@ -362,6 +383,13 @@ void X509_STORE_CTX_set_depth(X509_STORE_CTX *ctx, int depth);
362#define X509_V_FLAG_INHIBIT_MAP 0x400 383#define X509_V_FLAG_INHIBIT_MAP 0x400
363/* Notify callback that policy is OK */ 384/* Notify callback that policy is OK */
364#define X509_V_FLAG_NOTIFY_POLICY 0x800 385#define X509_V_FLAG_NOTIFY_POLICY 0x800
386/* Extended CRL features such as indirect CRLs, alternate CRL signing keys */
387#define X509_V_FLAG_EXTENDED_CRL_SUPPORT 0x1000
388/* Delta CRL support */
389#define X509_V_FLAG_USE_DELTAS 0x2000
390/* Check selfsigned CA signature */
391#define X509_V_FLAG_CHECK_SS_SIGNATURE 0x4000
392
365 393
366#define X509_VP_FLAG_DEFAULT 0x1 394#define X509_VP_FLAG_DEFAULT 0x1
367#define X509_VP_FLAG_OVERWRITE 0x2 395#define X509_VP_FLAG_OVERWRITE 0x2
@@ -384,11 +412,16 @@ void X509_OBJECT_free_contents(X509_OBJECT *a);
384X509_STORE *X509_STORE_new(void ); 412X509_STORE *X509_STORE_new(void );
385void X509_STORE_free(X509_STORE *v); 413void X509_STORE_free(X509_STORE *v);
386 414
415STACK_OF(X509)* X509_STORE_get1_certs(X509_STORE_CTX *st, X509_NAME *nm);
416STACK_OF(X509_CRL)* X509_STORE_get1_crls(X509_STORE_CTX *st, X509_NAME *nm);
387int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags); 417int X509_STORE_set_flags(X509_STORE *ctx, unsigned long flags);
388int X509_STORE_set_purpose(X509_STORE *ctx, int purpose); 418int X509_STORE_set_purpose(X509_STORE *ctx, int purpose);
389int X509_STORE_set_trust(X509_STORE *ctx, int trust); 419int X509_STORE_set_trust(X509_STORE *ctx, int trust);
390int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm); 420int X509_STORE_set1_param(X509_STORE *ctx, X509_VERIFY_PARAM *pm);
391 421
422void X509_STORE_set_verify_cb(X509_STORE *ctx,
423 int (*verify_cb)(int, X509_STORE_CTX *));
424
392X509_STORE_CTX *X509_STORE_CTX_new(void); 425X509_STORE_CTX *X509_STORE_CTX_new(void);
393 426
394int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x); 427int X509_STORE_CTX_get1_issuer(X509 **issuer, X509_STORE_CTX *ctx, X509 *x);
@@ -447,6 +480,9 @@ int X509_STORE_CTX_get_error(X509_STORE_CTX *ctx);
447void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx,int s); 480void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx,int s);
448int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx); 481int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *ctx);
449X509 * X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx); 482X509 * X509_STORE_CTX_get_current_cert(X509_STORE_CTX *ctx);
483X509 *X509_STORE_CTX_get0_current_issuer(X509_STORE_CTX *ctx);
484X509_CRL *X509_STORE_CTX_get0_current_crl(X509_STORE_CTX *ctx);
485X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(X509_STORE_CTX *ctx);
450STACK_OF(X509) *X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx); 486STACK_OF(X509) *X509_STORE_CTX_get_chain(X509_STORE_CTX *ctx);
451STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx); 487STACK_OF(X509) *X509_STORE_CTX_get1_chain(X509_STORE_CTX *ctx);
452void X509_STORE_CTX_set_cert(X509_STORE_CTX *c,X509 *x); 488void X509_STORE_CTX_set_cert(X509_STORE_CTX *c,X509 *x);
diff --git a/src/lib/libssl/src/crypto/x509/x509cset.c b/src/lib/libssl/src/crypto/x509/x509cset.c
index 7f4004b291..3109defb0b 100644
--- a/src/lib/libssl/src/crypto/x509/x509cset.c
+++ b/src/lib/libssl/src/crypto/x509/x509cset.c
@@ -81,7 +81,7 @@ int X509_CRL_set_issuer_name(X509_CRL *x, X509_NAME *name)
81 } 81 }
82 82
83 83
84int X509_CRL_set_lastUpdate(X509_CRL *x, ASN1_TIME *tm) 84int X509_CRL_set_lastUpdate(X509_CRL *x, const ASN1_TIME *tm)
85 { 85 {
86 ASN1_TIME *in; 86 ASN1_TIME *in;
87 87
@@ -99,7 +99,7 @@ int X509_CRL_set_lastUpdate(X509_CRL *x, ASN1_TIME *tm)
99 return(in != NULL); 99 return(in != NULL);
100 } 100 }
101 101
102int X509_CRL_set_nextUpdate(X509_CRL *x, ASN1_TIME *tm) 102int X509_CRL_set_nextUpdate(X509_CRL *x, const ASN1_TIME *tm)
103 { 103 {
104 ASN1_TIME *in; 104 ASN1_TIME *in;
105 105
diff --git a/src/lib/libssl/src/crypto/x509/x509name.c b/src/lib/libssl/src/crypto/x509/x509name.c
index 068abfe5f0..27bc4dc9a3 100644
--- a/src/lib/libssl/src/crypto/x509/x509name.c
+++ b/src/lib/libssl/src/crypto/x509/x509name.c
@@ -356,7 +356,7 @@ int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
356 return ASN1_STRING_set_by_NID(&ne->value, bytes, 356 return ASN1_STRING_set_by_NID(&ne->value, bytes,
357 len, type, 357 len, type,
358 OBJ_obj2nid(ne->object)) ? 1 : 0; 358 OBJ_obj2nid(ne->object)) ? 1 : 0;
359 if (len < 0) len=strlen((char *)bytes); 359 if (len < 0) len=strlen((const char *)bytes);
360 i=ASN1_STRING_set(ne->value,bytes,len); 360 i=ASN1_STRING_set(ne->value,bytes,len);
361 if (!i) return(0); 361 if (!i) return(0);
362 if (type != V_ASN1_UNDEF) 362 if (type != V_ASN1_UNDEF)
diff --git a/src/lib/libssl/src/crypto/x509/x509type.c b/src/lib/libssl/src/crypto/x509/x509type.c
index 2cd994c5b0..3385ad3f67 100644
--- a/src/lib/libssl/src/crypto/x509/x509type.c
+++ b/src/lib/libssl/src/crypto/x509/x509type.c
@@ -91,6 +91,10 @@ int X509_certificate_type(X509 *x, EVP_PKEY *pkey)
91 break; 91 break;
92 case EVP_PKEY_DH: 92 case EVP_PKEY_DH:
93 ret=EVP_PK_DH|EVP_PKT_EXCH; 93 ret=EVP_PK_DH|EVP_PKT_EXCH;
94 break;
95 case NID_id_GostR3410_94:
96 case NID_id_GostR3410_2001:
97 ret=EVP_PKT_EXCH|EVP_PKT_SIGN;
94 break; 98 break;
95 default: 99 default:
96 break; 100 break;
diff --git a/src/lib/libssl/src/crypto/x509/x_all.c b/src/lib/libssl/src/crypto/x509/x_all.c
index 9039caad60..ebae30b701 100644
--- a/src/lib/libssl/src/crypto/x509/x_all.c
+++ b/src/lib/libssl/src/crypto/x509/x_all.c
@@ -57,7 +57,6 @@
57 */ 57 */
58 58
59#include <stdio.h> 59#include <stdio.h>
60#undef SSLEAY_MACROS
61#include <openssl/stack.h> 60#include <openssl/stack.h>
62#include "cryptlib.h" 61#include "cryptlib.h"
63#include <openssl/buffer.h> 62#include <openssl/buffer.h>
@@ -83,12 +82,6 @@ int X509_REQ_verify(X509_REQ *a, EVP_PKEY *r)
83 a->sig_alg,a->signature,a->req_info,r)); 82 a->sig_alg,a->signature,a->req_info,r));
84 } 83 }
85 84
86int X509_CRL_verify(X509_CRL *a, EVP_PKEY *r)
87 {
88 return(ASN1_item_verify(ASN1_ITEM_rptr(X509_CRL_INFO),
89 a->sig_alg, a->signature,a->crl,r));
90 }
91
92int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r) 85int NETSCAPE_SPKI_verify(NETSCAPE_SPKI *a, EVP_PKEY *r)
93 { 86 {
94 return(ASN1_item_verify(ASN1_ITEM_rptr(NETSCAPE_SPKAC), 87 return(ASN1_item_verify(ASN1_ITEM_rptr(NETSCAPE_SPKAC),
diff --git a/src/lib/libssl/src/crypto/x509v3/Makefile b/src/lib/libssl/src/crypto/x509v3/Makefile
index e71dc42f9f..556ef351bf 100644
--- a/src/lib/libssl/src/crypto/x509v3/Makefile
+++ b/src/lib/libssl/src/crypto/x509v3/Makefile
@@ -43,7 +43,7 @@ top:
43all: lib 43all: lib
44 44
45lib: $(LIBOBJ) 45lib: $(LIBOBJ)
46 $(ARX) $(LIB) $(LIBOBJ) 46 $(AR) $(LIB) $(LIBOBJ)
47 $(RANLIB) $(LIB) || echo Never mind. 47 $(RANLIB) $(LIB) || echo Never mind.
48 @touch lib 48 @touch lib
49 49
@@ -90,8 +90,8 @@ pcy_cache.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
90pcy_cache.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 90pcy_cache.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
91pcy_cache.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 91pcy_cache.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
92pcy_cache.o: ../../include/openssl/err.h ../../include/openssl/evp.h 92pcy_cache.o: ../../include/openssl/err.h ../../include/openssl/evp.h
93pcy_cache.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 93pcy_cache.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
94pcy_cache.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 94pcy_cache.o: ../../include/openssl/objects.h
95pcy_cache.o: ../../include/openssl/opensslconf.h 95pcy_cache.o: ../../include/openssl/opensslconf.h
96pcy_cache.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 96pcy_cache.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
97pcy_cache.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 97pcy_cache.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
@@ -105,9 +105,8 @@ pcy_data.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
105pcy_data.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 105pcy_data.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
106pcy_data.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 106pcy_data.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
107pcy_data.o: ../../include/openssl/err.h ../../include/openssl/evp.h 107pcy_data.o: ../../include/openssl/err.h ../../include/openssl/evp.h
108pcy_data.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 108pcy_data.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
109pcy_data.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 109pcy_data.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
110pcy_data.o: ../../include/openssl/opensslconf.h
111pcy_data.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 110pcy_data.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
112pcy_data.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 111pcy_data.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
113pcy_data.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 112pcy_data.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -120,36 +119,35 @@ pcy_lib.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
120pcy_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 119pcy_lib.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
121pcy_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 120pcy_lib.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
122pcy_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h 121pcy_lib.o: ../../include/openssl/err.h ../../include/openssl/evp.h
123pcy_lib.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 122pcy_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
124pcy_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 123pcy_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
125pcy_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 124pcy_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
126pcy_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 125pcy_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
127pcy_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 126pcy_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
128pcy_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 127pcy_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
129pcy_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 128pcy_lib.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
130pcy_lib.o: ../../include/openssl/x509v3.h ../cryptlib.h pcy_int.h pcy_lib.c 129pcy_lib.o: ../cryptlib.h pcy_int.h pcy_lib.c
131pcy_map.o: ../../e_os.h ../../include/openssl/asn1.h 130pcy_map.o: ../../e_os.h ../../include/openssl/asn1.h
132pcy_map.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 131pcy_map.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
133pcy_map.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 132pcy_map.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
134pcy_map.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 133pcy_map.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
135pcy_map.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 134pcy_map.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
136pcy_map.o: ../../include/openssl/err.h ../../include/openssl/evp.h 135pcy_map.o: ../../include/openssl/err.h ../../include/openssl/evp.h
137pcy_map.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 136pcy_map.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
138pcy_map.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 137pcy_map.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
139pcy_map.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 138pcy_map.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
140pcy_map.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 139pcy_map.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
141pcy_map.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 140pcy_map.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
142pcy_map.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 141pcy_map.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
143pcy_map.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 142pcy_map.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
144pcy_map.o: ../../include/openssl/x509v3.h ../cryptlib.h pcy_int.h pcy_map.c 143pcy_map.o: ../cryptlib.h pcy_int.h pcy_map.c
145pcy_node.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 144pcy_node.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
146pcy_node.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 145pcy_node.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
147pcy_node.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 146pcy_node.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
148pcy_node.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 147pcy_node.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
149pcy_node.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h 148pcy_node.o: ../../include/openssl/ecdsa.h ../../include/openssl/evp.h
150pcy_node.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 149pcy_node.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
151pcy_node.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 150pcy_node.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
152pcy_node.o: ../../include/openssl/opensslconf.h
153pcy_node.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 151pcy_node.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
154pcy_node.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 152pcy_node.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
155pcy_node.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 153pcy_node.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -162,9 +160,8 @@ pcy_tree.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
162pcy_tree.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 160pcy_tree.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
163pcy_tree.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 161pcy_tree.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
164pcy_tree.o: ../../include/openssl/err.h ../../include/openssl/evp.h 162pcy_tree.o: ../../include/openssl/err.h ../../include/openssl/evp.h
165pcy_tree.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 163pcy_tree.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
166pcy_tree.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 164pcy_tree.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
167pcy_tree.o: ../../include/openssl/opensslconf.h
168pcy_tree.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 165pcy_tree.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
169pcy_tree.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 166pcy_tree.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
170pcy_tree.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 167pcy_tree.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -177,39 +174,37 @@ v3_addr.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
177v3_addr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 174v3_addr.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
178v3_addr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 175v3_addr.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
179v3_addr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 176v3_addr.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
180v3_addr.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 177v3_addr.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
181v3_addr.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 178v3_addr.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
182v3_addr.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 179v3_addr.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
183v3_addr.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 180v3_addr.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
184v3_addr.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 181v3_addr.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
185v3_addr.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 182v3_addr.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
186v3_addr.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 183v3_addr.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
187v3_addr.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 184v3_addr.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_addr.c
188v3_addr.o: ../cryptlib.h v3_addr.c
189v3_akey.o: ../../e_os.h ../../include/openssl/asn1.h 185v3_akey.o: ../../e_os.h ../../include/openssl/asn1.h
190v3_akey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 186v3_akey.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
191v3_akey.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 187v3_akey.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
192v3_akey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 188v3_akey.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
193v3_akey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 189v3_akey.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
194v3_akey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 190v3_akey.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
195v3_akey.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 191v3_akey.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
196v3_akey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 192v3_akey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
197v3_akey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 193v3_akey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
198v3_akey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 194v3_akey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
199v3_akey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 195v3_akey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
200v3_akey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 196v3_akey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
201v3_akey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 197v3_akey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
202v3_akey.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 198v3_akey.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_akey.c
203v3_akey.o: ../cryptlib.h v3_akey.c
204v3_akeya.o: ../../e_os.h ../../include/openssl/asn1.h 199v3_akeya.o: ../../e_os.h ../../include/openssl/asn1.h
205v3_akeya.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 200v3_akeya.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
206v3_akeya.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 201v3_akeya.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
207v3_akeya.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 202v3_akeya.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
208v3_akeya.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 203v3_akeya.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
209v3_akeya.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 204v3_akeya.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
210v3_akeya.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 205v3_akeya.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
211v3_akeya.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 206v3_akeya.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
212v3_akeya.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 207v3_akeya.o: ../../include/openssl/opensslconf.h
213v3_akeya.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 208v3_akeya.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
214v3_akeya.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 209v3_akeya.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
215v3_akeya.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 210v3_akeya.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -221,15 +216,14 @@ v3_alt.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
221v3_alt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 216v3_alt.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
222v3_alt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 217v3_alt.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
223v3_alt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 218v3_alt.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
224v3_alt.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 219v3_alt.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
225v3_alt.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 220v3_alt.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
226v3_alt.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 221v3_alt.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
227v3_alt.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 222v3_alt.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
228v3_alt.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 223v3_alt.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
229v3_alt.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 224v3_alt.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
230v3_alt.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 225v3_alt.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
231v3_alt.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 226v3_alt.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_alt.c
232v3_alt.o: ../cryptlib.h v3_alt.c
233v3_asid.o: ../../e_os.h ../../include/openssl/asn1.h 227v3_asid.o: ../../e_os.h ../../include/openssl/asn1.h
234v3_asid.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 228v3_asid.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
235v3_asid.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h 229v3_asid.o: ../../include/openssl/bn.h ../../include/openssl/buffer.h
@@ -237,23 +231,23 @@ v3_asid.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
237v3_asid.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 231v3_asid.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
238v3_asid.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 232v3_asid.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
239v3_asid.o: ../../include/openssl/err.h ../../include/openssl/evp.h 233v3_asid.o: ../../include/openssl/err.h ../../include/openssl/evp.h
240v3_asid.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 234v3_asid.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
241v3_asid.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 235v3_asid.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
242v3_asid.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 236v3_asid.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
243v3_asid.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 237v3_asid.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
244v3_asid.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 238v3_asid.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
245v3_asid.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 239v3_asid.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
246v3_asid.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 240v3_asid.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
247v3_asid.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_asid.c 241v3_asid.o: ../cryptlib.h v3_asid.c
248v3_bcons.o: ../../e_os.h ../../include/openssl/asn1.h 242v3_bcons.o: ../../e_os.h ../../include/openssl/asn1.h
249v3_bcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 243v3_bcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
250v3_bcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 244v3_bcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
251v3_bcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 245v3_bcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
252v3_bcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 246v3_bcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
253v3_bcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 247v3_bcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
254v3_bcons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 248v3_bcons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
255v3_bcons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 249v3_bcons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
256v3_bcons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 250v3_bcons.o: ../../include/openssl/opensslconf.h
257v3_bcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 251v3_bcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
258v3_bcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 252v3_bcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
259v3_bcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 253v3_bcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -266,9 +260,8 @@ v3_bitst.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
266v3_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 260v3_bitst.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
267v3_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 261v3_bitst.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
268v3_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h 262v3_bitst.o: ../../include/openssl/err.h ../../include/openssl/evp.h
269v3_bitst.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 263v3_bitst.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
270v3_bitst.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 264v3_bitst.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
271v3_bitst.o: ../../include/openssl/opensslconf.h
272v3_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 265v3_bitst.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
273v3_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 266v3_bitst.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
274v3_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 267v3_bitst.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -281,23 +274,23 @@ v3_conf.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
281v3_conf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 274v3_conf.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
282v3_conf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 275v3_conf.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
283v3_conf.o: ../../include/openssl/err.h ../../include/openssl/evp.h 276v3_conf.o: ../../include/openssl/err.h ../../include/openssl/evp.h
284v3_conf.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 277v3_conf.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
285v3_conf.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 278v3_conf.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
286v3_conf.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 279v3_conf.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
287v3_conf.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 280v3_conf.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
288v3_conf.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 281v3_conf.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
289v3_conf.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 282v3_conf.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
290v3_conf.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 283v3_conf.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
291v3_conf.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_conf.c 284v3_conf.o: ../cryptlib.h v3_conf.c
292v3_cpols.o: ../../e_os.h ../../include/openssl/asn1.h 285v3_cpols.o: ../../e_os.h ../../include/openssl/asn1.h
293v3_cpols.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 286v3_cpols.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
294v3_cpols.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 287v3_cpols.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
295v3_cpols.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 288v3_cpols.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
296v3_cpols.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 289v3_cpols.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
297v3_cpols.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 290v3_cpols.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
298v3_cpols.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 291v3_cpols.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
299v3_cpols.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 292v3_cpols.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
300v3_cpols.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 293v3_cpols.o: ../../include/openssl/opensslconf.h
301v3_cpols.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 294v3_cpols.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
302v3_cpols.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 295v3_cpols.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
303v3_cpols.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 296v3_cpols.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -310,38 +303,37 @@ v3_crld.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
310v3_crld.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 303v3_crld.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
311v3_crld.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 304v3_crld.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
312v3_crld.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 305v3_crld.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
313v3_crld.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 306v3_crld.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
314v3_crld.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 307v3_crld.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
315v3_crld.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 308v3_crld.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
316v3_crld.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 309v3_crld.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
317v3_crld.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 310v3_crld.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
318v3_crld.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 311v3_crld.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
319v3_crld.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 312v3_crld.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
320v3_crld.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 313v3_crld.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_crld.c
321v3_crld.o: ../cryptlib.h v3_crld.c
322v3_enum.o: ../../e_os.h ../../include/openssl/asn1.h 314v3_enum.o: ../../e_os.h ../../include/openssl/asn1.h
323v3_enum.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 315v3_enum.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
324v3_enum.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 316v3_enum.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
325v3_enum.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 317v3_enum.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
326v3_enum.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 318v3_enum.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
327v3_enum.o: ../../include/openssl/err.h ../../include/openssl/evp.h 319v3_enum.o: ../../include/openssl/err.h ../../include/openssl/evp.h
328v3_enum.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 320v3_enum.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
329v3_enum.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 321v3_enum.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
330v3_enum.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 322v3_enum.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
331v3_enum.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 323v3_enum.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
332v3_enum.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 324v3_enum.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
333v3_enum.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 325v3_enum.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
334v3_enum.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 326v3_enum.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
335v3_enum.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_enum.c 327v3_enum.o: ../cryptlib.h v3_enum.c
336v3_extku.o: ../../e_os.h ../../include/openssl/asn1.h 328v3_extku.o: ../../e_os.h ../../include/openssl/asn1.h
337v3_extku.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 329v3_extku.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
338v3_extku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 330v3_extku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
339v3_extku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 331v3_extku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
340v3_extku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 332v3_extku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
341v3_extku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 333v3_extku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
342v3_extku.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 334v3_extku.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
343v3_extku.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 335v3_extku.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
344v3_extku.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 336v3_extku.o: ../../include/openssl/opensslconf.h
345v3_extku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 337v3_extku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
346v3_extku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 338v3_extku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
347v3_extku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 339v3_extku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -354,81 +346,76 @@ v3_genn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
354v3_genn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 346v3_genn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
355v3_genn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 347v3_genn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
356v3_genn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 348v3_genn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
357v3_genn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 349v3_genn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
358v3_genn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 350v3_genn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
359v3_genn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 351v3_genn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
360v3_genn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 352v3_genn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
361v3_genn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 353v3_genn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
362v3_genn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 354v3_genn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
363v3_genn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 355v3_genn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
364v3_genn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 356v3_genn.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_genn.c
365v3_genn.o: ../cryptlib.h v3_genn.c
366v3_ia5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 357v3_ia5.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
367v3_ia5.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 358v3_ia5.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
368v3_ia5.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 359v3_ia5.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
369v3_ia5.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 360v3_ia5.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
370v3_ia5.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 361v3_ia5.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
371v3_ia5.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 362v3_ia5.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
372v3_ia5.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 363v3_ia5.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
373v3_ia5.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 364v3_ia5.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
374v3_ia5.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 365v3_ia5.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
375v3_ia5.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 366v3_ia5.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
376v3_ia5.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 367v3_ia5.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
377v3_ia5.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 368v3_ia5.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
378v3_ia5.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 369v3_ia5.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_ia5.c
379v3_ia5.o: ../cryptlib.h v3_ia5.c
380v3_info.o: ../../e_os.h ../../include/openssl/asn1.h 370v3_info.o: ../../e_os.h ../../include/openssl/asn1.h
381v3_info.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 371v3_info.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
382v3_info.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 372v3_info.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
383v3_info.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 373v3_info.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
384v3_info.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 374v3_info.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
385v3_info.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 375v3_info.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
386v3_info.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 376v3_info.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
387v3_info.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 377v3_info.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
388v3_info.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 378v3_info.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
389v3_info.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 379v3_info.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
390v3_info.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 380v3_info.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
391v3_info.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 381v3_info.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
392v3_info.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 382v3_info.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
393v3_info.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 383v3_info.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_info.c
394v3_info.o: ../cryptlib.h v3_info.c
395v3_int.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 384v3_int.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
396v3_int.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 385v3_int.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
397v3_int.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 386v3_int.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
398v3_int.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 387v3_int.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
399v3_int.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 388v3_int.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
400v3_int.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 389v3_int.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
401v3_int.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 390v3_int.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
402v3_int.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 391v3_int.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
403v3_int.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 392v3_int.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
404v3_int.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 393v3_int.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
405v3_int.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 394v3_int.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
406v3_int.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 395v3_int.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
407v3_int.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 396v3_int.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_int.c
408v3_int.o: ../cryptlib.h v3_int.c
409v3_lib.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 397v3_lib.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
410v3_lib.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 398v3_lib.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
411v3_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 399v3_lib.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
412v3_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 400v3_lib.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
413v3_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 401v3_lib.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
414v3_lib.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 402v3_lib.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
415v3_lib.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 403v3_lib.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
416v3_lib.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 404v3_lib.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
417v3_lib.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 405v3_lib.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
418v3_lib.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 406v3_lib.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
419v3_lib.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 407v3_lib.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
420v3_lib.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 408v3_lib.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
421v3_lib.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 409v3_lib.o: ../../include/openssl/x509v3.h ../cryptlib.h ext_dat.h v3_lib.c
422v3_lib.o: ../cryptlib.h ext_dat.h v3_lib.c
423v3_ncons.o: ../../e_os.h ../../include/openssl/asn1.h 410v3_ncons.o: ../../e_os.h ../../include/openssl/asn1.h
424v3_ncons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 411v3_ncons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
425v3_ncons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 412v3_ncons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
426v3_ncons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 413v3_ncons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
427v3_ncons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 414v3_ncons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
428v3_ncons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 415v3_ncons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
429v3_ncons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 416v3_ncons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
430v3_ncons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 417v3_ncons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
431v3_ncons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 418v3_ncons.o: ../../include/openssl/opensslconf.h
432v3_ncons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 419v3_ncons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
433v3_ncons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 420v3_ncons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
434v3_ncons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 421v3_ncons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -441,52 +428,49 @@ v3_ocsp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
441v3_ocsp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 428v3_ocsp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
442v3_ocsp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 429v3_ocsp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
443v3_ocsp.o: ../../include/openssl/err.h ../../include/openssl/evp.h 430v3_ocsp.o: ../../include/openssl/err.h ../../include/openssl/evp.h
444v3_ocsp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 431v3_ocsp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
445v3_ocsp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 432v3_ocsp.o: ../../include/openssl/objects.h ../../include/openssl/ocsp.h
446v3_ocsp.o: ../../include/openssl/ocsp.h ../../include/openssl/opensslconf.h 433v3_ocsp.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
447v3_ocsp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 434v3_ocsp.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
448v3_ocsp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 435v3_ocsp.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
449v3_ocsp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 436v3_ocsp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
450v3_ocsp.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 437v3_ocsp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
451v3_ocsp.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 438v3_ocsp.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_ocsp.c
452v3_ocsp.o: ../cryptlib.h v3_ocsp.c
453v3_pci.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h 439v3_pci.o: ../../e_os.h ../../include/openssl/asn1.h ../../include/openssl/bio.h
454v3_pci.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 440v3_pci.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
455v3_pci.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 441v3_pci.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
456v3_pci.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 442v3_pci.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
457v3_pci.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 443v3_pci.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
458v3_pci.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 444v3_pci.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
459v3_pci.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 445v3_pci.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
460v3_pci.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 446v3_pci.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
461v3_pci.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 447v3_pci.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
462v3_pci.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 448v3_pci.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
463v3_pci.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 449v3_pci.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
464v3_pci.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 450v3_pci.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
465v3_pci.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 451v3_pci.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_pci.c
466v3_pci.o: ../cryptlib.h v3_pci.c
467v3_pcia.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h 452v3_pcia.o: ../../include/openssl/asn1.h ../../include/openssl/asn1t.h
468v3_pcia.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 453v3_pcia.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
469v3_pcia.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 454v3_pcia.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
470v3_pcia.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 455v3_pcia.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
471v3_pcia.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 456v3_pcia.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
472v3_pcia.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 457v3_pcia.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
473v3_pcia.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 458v3_pcia.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
474v3_pcia.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 459v3_pcia.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
475v3_pcia.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 460v3_pcia.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
476v3_pcia.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 461v3_pcia.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
477v3_pcia.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 462v3_pcia.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
478v3_pcia.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 463v3_pcia.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
479v3_pcia.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 464v3_pcia.o: ../../include/openssl/x509v3.h v3_pcia.c
480v3_pcia.o: v3_pcia.c
481v3_pcons.o: ../../e_os.h ../../include/openssl/asn1.h 465v3_pcons.o: ../../e_os.h ../../include/openssl/asn1.h
482v3_pcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 466v3_pcons.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
483v3_pcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 467v3_pcons.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
484v3_pcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 468v3_pcons.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
485v3_pcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 469v3_pcons.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
486v3_pcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 470v3_pcons.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
487v3_pcons.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 471v3_pcons.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
488v3_pcons.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 472v3_pcons.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
489v3_pcons.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 473v3_pcons.o: ../../include/openssl/opensslconf.h
490v3_pcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 474v3_pcons.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
491v3_pcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 475v3_pcons.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
492v3_pcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 476v3_pcons.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -499,24 +483,23 @@ v3_pku.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
499v3_pku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 483v3_pku.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
500v3_pku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 484v3_pku.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
501v3_pku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 485v3_pku.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
502v3_pku.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 486v3_pku.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
503v3_pku.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 487v3_pku.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
504v3_pku.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 488v3_pku.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
505v3_pku.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 489v3_pku.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
506v3_pku.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 490v3_pku.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
507v3_pku.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 491v3_pku.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
508v3_pku.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 492v3_pku.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
509v3_pku.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 493v3_pku.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_pku.c
510v3_pku.o: ../cryptlib.h v3_pku.c
511v3_pmaps.o: ../../e_os.h ../../include/openssl/asn1.h 494v3_pmaps.o: ../../e_os.h ../../include/openssl/asn1.h
512v3_pmaps.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 495v3_pmaps.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
513v3_pmaps.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 496v3_pmaps.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
514v3_pmaps.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 497v3_pmaps.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
515v3_pmaps.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 498v3_pmaps.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
516v3_pmaps.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 499v3_pmaps.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
517v3_pmaps.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 500v3_pmaps.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
518v3_pmaps.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 501v3_pmaps.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
519v3_pmaps.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 502v3_pmaps.o: ../../include/openssl/opensslconf.h
520v3_pmaps.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 503v3_pmaps.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
521v3_pmaps.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 504v3_pmaps.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
522v3_pmaps.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 505v3_pmaps.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -528,52 +511,51 @@ v3_prn.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
528v3_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 511v3_prn.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
529v3_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 512v3_prn.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
530v3_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 513v3_prn.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
531v3_prn.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 514v3_prn.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
532v3_prn.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 515v3_prn.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
533v3_prn.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 516v3_prn.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
534v3_prn.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 517v3_prn.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
535v3_prn.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 518v3_prn.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
536v3_prn.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 519v3_prn.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
537v3_prn.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 520v3_prn.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
538v3_prn.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 521v3_prn.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_prn.c
539v3_prn.o: ../cryptlib.h v3_prn.c
540v3_purp.o: ../../e_os.h ../../include/openssl/asn1.h 522v3_purp.o: ../../e_os.h ../../include/openssl/asn1.h
541v3_purp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 523v3_purp.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
542v3_purp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 524v3_purp.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
543v3_purp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 525v3_purp.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
544v3_purp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 526v3_purp.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
545v3_purp.o: ../../include/openssl/err.h ../../include/openssl/evp.h 527v3_purp.o: ../../include/openssl/err.h ../../include/openssl/evp.h
546v3_purp.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 528v3_purp.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
547v3_purp.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 529v3_purp.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
548v3_purp.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 530v3_purp.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
549v3_purp.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 531v3_purp.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
550v3_purp.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 532v3_purp.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
551v3_purp.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 533v3_purp.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
552v3_purp.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 534v3_purp.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
553v3_purp.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_purp.c 535v3_purp.o: ../cryptlib.h v3_purp.c
554v3_skey.o: ../../e_os.h ../../include/openssl/asn1.h 536v3_skey.o: ../../e_os.h ../../include/openssl/asn1.h
555v3_skey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h 537v3_skey.o: ../../include/openssl/bio.h ../../include/openssl/buffer.h
556v3_skey.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h 538v3_skey.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
557v3_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 539v3_skey.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
558v3_skey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 540v3_skey.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
559v3_skey.o: ../../include/openssl/err.h ../../include/openssl/evp.h 541v3_skey.o: ../../include/openssl/err.h ../../include/openssl/evp.h
560v3_skey.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 542v3_skey.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
561v3_skey.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 543v3_skey.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
562v3_skey.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 544v3_skey.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
563v3_skey.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 545v3_skey.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
564v3_skey.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 546v3_skey.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
565v3_skey.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 547v3_skey.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
566v3_skey.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 548v3_skey.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
567v3_skey.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_skey.c 549v3_skey.o: ../cryptlib.h v3_skey.c
568v3_sxnet.o: ../../e_os.h ../../include/openssl/asn1.h 550v3_sxnet.o: ../../e_os.h ../../include/openssl/asn1.h
569v3_sxnet.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h 551v3_sxnet.o: ../../include/openssl/asn1t.h ../../include/openssl/bio.h
570v3_sxnet.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 552v3_sxnet.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
571v3_sxnet.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 553v3_sxnet.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
572v3_sxnet.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 554v3_sxnet.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
573v3_sxnet.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 555v3_sxnet.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
574v3_sxnet.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 556v3_sxnet.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
575v3_sxnet.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 557v3_sxnet.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
576v3_sxnet.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 558v3_sxnet.o: ../../include/openssl/opensslconf.h
577v3_sxnet.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 559v3_sxnet.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
578v3_sxnet.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 560v3_sxnet.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
579v3_sxnet.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 561v3_sxnet.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
@@ -586,25 +568,24 @@ v3_utl.o: ../../include/openssl/conf.h ../../include/openssl/crypto.h
586v3_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h 568v3_utl.o: ../../include/openssl/e_os2.h ../../include/openssl/ec.h
587v3_utl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h 569v3_utl.o: ../../include/openssl/ecdh.h ../../include/openssl/ecdsa.h
588v3_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h 570v3_utl.o: ../../include/openssl/err.h ../../include/openssl/evp.h
589v3_utl.o: ../../include/openssl/fips.h ../../include/openssl/lhash.h 571v3_utl.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h
590v3_utl.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h 572v3_utl.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h
591v3_utl.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h 573v3_utl.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
592v3_utl.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h 574v3_utl.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h
593v3_utl.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h 575v3_utl.o: ../../include/openssl/sha.h ../../include/openssl/stack.h
594v3_utl.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h 576v3_utl.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h
595v3_utl.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h 577v3_utl.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h
596v3_utl.o: ../../include/openssl/x509v3.h ../cryptlib.h v3_utl.c 578v3_utl.o: ../cryptlib.h v3_utl.c
597v3err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h 579v3err.o: ../../include/openssl/asn1.h ../../include/openssl/bio.h
598v3err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h 580v3err.o: ../../include/openssl/buffer.h ../../include/openssl/conf.h
599v3err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h 581v3err.o: ../../include/openssl/crypto.h ../../include/openssl/e_os2.h
600v3err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h 582v3err.o: ../../include/openssl/ec.h ../../include/openssl/ecdh.h
601v3err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h 583v3err.o: ../../include/openssl/ecdsa.h ../../include/openssl/err.h
602v3err.o: ../../include/openssl/evp.h ../../include/openssl/fips.h 584v3err.o: ../../include/openssl/evp.h ../../include/openssl/lhash.h
603v3err.o: ../../include/openssl/lhash.h ../../include/openssl/obj_mac.h 585v3err.o: ../../include/openssl/obj_mac.h ../../include/openssl/objects.h
604v3err.o: ../../include/openssl/objects.h ../../include/openssl/opensslconf.h 586v3err.o: ../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
605v3err.o: ../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h 587v3err.o: ../../include/openssl/ossl_typ.h ../../include/openssl/pkcs7.h
606v3err.o: ../../include/openssl/pkcs7.h ../../include/openssl/safestack.h 588v3err.o: ../../include/openssl/safestack.h ../../include/openssl/sha.h
607v3err.o: ../../include/openssl/sha.h ../../include/openssl/stack.h 589v3err.o: ../../include/openssl/stack.h ../../include/openssl/symhacks.h
608v3err.o: ../../include/openssl/symhacks.h ../../include/openssl/x509.h 590v3err.o: ../../include/openssl/x509.h ../../include/openssl/x509_vfy.h
609v3err.o: ../../include/openssl/x509_vfy.h ../../include/openssl/x509v3.h 591v3err.o: ../../include/openssl/x509v3.h v3err.c
610v3err.o: v3err.c
diff --git a/src/lib/libssl/src/crypto/x509v3/ext_dat.h b/src/lib/libssl/src/crypto/x509v3/ext_dat.h
index 3eaec46f8a..76daee6fcd 100644
--- a/src/lib/libssl/src/crypto/x509v3/ext_dat.h
+++ b/src/lib/libssl/src/crypto/x509v3/ext_dat.h
@@ -61,21 +61,19 @@ extern X509V3_EXT_METHOD v3_bcons, v3_nscert, v3_key_usage, v3_ext_ku;
61extern X509V3_EXT_METHOD v3_pkey_usage_period, v3_sxnet, v3_info, v3_sinfo; 61extern X509V3_EXT_METHOD v3_pkey_usage_period, v3_sxnet, v3_info, v3_sinfo;
62extern X509V3_EXT_METHOD v3_ns_ia5_list[], v3_alt[], v3_skey_id, v3_akey_id; 62extern X509V3_EXT_METHOD v3_ns_ia5_list[], v3_alt[], v3_skey_id, v3_akey_id;
63extern X509V3_EXT_METHOD v3_crl_num, v3_crl_reason, v3_crl_invdate; 63extern X509V3_EXT_METHOD v3_crl_num, v3_crl_reason, v3_crl_invdate;
64extern X509V3_EXT_METHOD v3_delta_crl, v3_cpols, v3_crld; 64extern X509V3_EXT_METHOD v3_delta_crl, v3_cpols, v3_crld, v3_freshest_crl;
65extern X509V3_EXT_METHOD v3_ocsp_nonce, v3_ocsp_accresp, v3_ocsp_acutoff; 65extern X509V3_EXT_METHOD v3_ocsp_nonce, v3_ocsp_accresp, v3_ocsp_acutoff;
66extern X509V3_EXT_METHOD v3_ocsp_crlid, v3_ocsp_nocheck, v3_ocsp_serviceloc; 66extern X509V3_EXT_METHOD v3_ocsp_crlid, v3_ocsp_nocheck, v3_ocsp_serviceloc;
67extern X509V3_EXT_METHOD v3_crl_hold, v3_pci; 67extern X509V3_EXT_METHOD v3_crl_hold, v3_pci;
68extern X509V3_EXT_METHOD v3_policy_mappings, v3_policy_constraints; 68extern X509V3_EXT_METHOD v3_policy_mappings, v3_policy_constraints;
69extern X509V3_EXT_METHOD v3_name_constraints, v3_inhibit_anyp; 69extern X509V3_EXT_METHOD v3_name_constraints, v3_inhibit_anyp, v3_idp;
70#ifndef OPENSSL_NO_RFC3779
71extern X509V3_EXT_METHOD v3_addr, v3_asid; 70extern X509V3_EXT_METHOD v3_addr, v3_asid;
72#endif
73 71
74/* This table will be searched using OBJ_bsearch so it *must* kept in 72/* This table will be searched using OBJ_bsearch so it *must* kept in
75 * order of the ext_nid values. 73 * order of the ext_nid values.
76 */ 74 */
77 75
78static X509V3_EXT_METHOD *standard_exts[] = { 76static const X509V3_EXT_METHOD *standard_exts[] = {
79&v3_nscert, 77&v3_nscert,
80&v3_ns_ia5_list[0], 78&v3_ns_ia5_list[0],
81&v3_ns_ia5_list[1], 79&v3_ns_ia5_list[1],
@@ -122,7 +120,10 @@ static X509V3_EXT_METHOD *standard_exts[] = {
122&v3_pci, 120&v3_pci,
123&v3_name_constraints, 121&v3_name_constraints,
124&v3_policy_mappings, 122&v3_policy_mappings,
125&v3_inhibit_anyp 123&v3_inhibit_anyp,
124&v3_idp,
125&v3_alt[2],
126&v3_freshest_crl,
126}; 127};
127 128
128/* Number of standard extensions */ 129/* Number of standard extensions */
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_alt.c b/src/lib/libssl/src/crypto/x509v3/v3_alt.c
index 58b2952478..d29d94338e 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_alt.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_alt.c
@@ -82,6 +82,12 @@ NULL, NULL, NULL},
82(X509V3_EXT_I2V)i2v_GENERAL_NAMES, 82(X509V3_EXT_I2V)i2v_GENERAL_NAMES,
83(X509V3_EXT_V2I)v2i_issuer_alt, 83(X509V3_EXT_V2I)v2i_issuer_alt,
84NULL, NULL, NULL}, 84NULL, NULL, NULL},
85
86{ NID_certificate_issuer, 0, ASN1_ITEM_ref(GENERAL_NAMES),
870,0,0,0,
880,0,
89(X509V3_EXT_I2V)i2v_GENERAL_NAMES,
90NULL, NULL, NULL, NULL},
85}; 91};
86 92
87STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, 93STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method,
@@ -360,6 +366,7 @@ static int copy_email(X509V3_CTX *ctx, GENERAL_NAMES *gens, int move_p)
360 if (move_p) 366 if (move_p)
361 { 367 {
362 X509_NAME_delete_entry(nm, i); 368 X509_NAME_delete_entry(nm, i);
369 X509_NAME_ENTRY_free(ne);
363 i--; 370 i--;
364 } 371 }
365 if(!email || !(gen = GENERAL_NAME_new())) { 372 if(!email || !(gen = GENERAL_NAME_new())) {
@@ -386,8 +393,8 @@ static int copy_email(X509V3_CTX *ctx, GENERAL_NAMES *gens, int move_p)
386 393
387} 394}
388 395
389GENERAL_NAMES *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method, 396GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method,
390 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval) 397 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval)
391{ 398{
392 GENERAL_NAME *gen; 399 GENERAL_NAME *gen;
393 GENERAL_NAMES *gens = NULL; 400 GENERAL_NAMES *gens = NULL;
@@ -408,28 +415,22 @@ GENERAL_NAMES *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method,
408 return NULL; 415 return NULL;
409} 416}
410 417
411GENERAL_NAME *v2i_GENERAL_NAME(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, 418GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
412 CONF_VALUE *cnf) 419 CONF_VALUE *cnf)
413 { 420 {
414 return v2i_GENERAL_NAME_ex(NULL, method, ctx, cnf, 0); 421 return v2i_GENERAL_NAME_ex(NULL, method, ctx, cnf, 0);
415 } 422 }
416 423
417GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, 424GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out,
418 X509V3_EXT_METHOD *method, X509V3_CTX *ctx, 425 const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
419 CONF_VALUE *cnf, int is_nc) 426 int gen_type, char *value, int is_nc)
420 { 427 {
421 char is_string = 0; 428 char is_string = 0;
422 int type;
423 GENERAL_NAME *gen = NULL; 429 GENERAL_NAME *gen = NULL;
424 430
425 char *name, *value;
426
427 name = cnf->name;
428 value = cnf->value;
429
430 if(!value) 431 if(!value)
431 { 432 {
432 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,X509V3_R_MISSING_VALUE); 433 X509V3err(X509V3_F_A2I_GENERAL_NAME,X509V3_R_MISSING_VALUE);
433 return NULL; 434 return NULL;
434 } 435 }
435 436
@@ -440,74 +441,62 @@ GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
440 gen = GENERAL_NAME_new(); 441 gen = GENERAL_NAME_new();
441 if(gen == NULL) 442 if(gen == NULL)
442 { 443 {
443 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,ERR_R_MALLOC_FAILURE); 444 X509V3err(X509V3_F_A2I_GENERAL_NAME,ERR_R_MALLOC_FAILURE);
444 return NULL; 445 return NULL;
445 } 446 }
446 } 447 }
447 448
448 if(!name_cmp(name, "email")) 449 switch (gen_type)
449 {
450 is_string = 1;
451 type = GEN_EMAIL;
452 }
453 else if(!name_cmp(name, "URI"))
454 {
455 is_string = 1;
456 type = GEN_URI;
457 }
458 else if(!name_cmp(name, "DNS"))
459 { 450 {
451 case GEN_URI:
452 case GEN_EMAIL:
453 case GEN_DNS:
460 is_string = 1; 454 is_string = 1;
461 type = GEN_DNS; 455 break;
462 } 456
463 else if(!name_cmp(name, "RID")) 457 case GEN_RID:
464 { 458 {
465 ASN1_OBJECT *obj; 459 ASN1_OBJECT *obj;
466 if(!(obj = OBJ_txt2obj(value,0))) 460 if(!(obj = OBJ_txt2obj(value,0)))
467 { 461 {
468 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,X509V3_R_BAD_OBJECT); 462 X509V3err(X509V3_F_A2I_GENERAL_NAME,X509V3_R_BAD_OBJECT);
469 ERR_add_error_data(2, "value=", value); 463 ERR_add_error_data(2, "value=", value);
470 goto err; 464 goto err;
471 } 465 }
472 gen->d.rid = obj; 466 gen->d.rid = obj;
473 type = GEN_RID;
474 } 467 }
475 else if(!name_cmp(name, "IP")) 468 break;
476 { 469
470 case GEN_IPADD:
477 if (is_nc) 471 if (is_nc)
478 gen->d.ip = a2i_IPADDRESS_NC(value); 472 gen->d.ip = a2i_IPADDRESS_NC(value);
479 else 473 else
480 gen->d.ip = a2i_IPADDRESS(value); 474 gen->d.ip = a2i_IPADDRESS(value);
481 if(gen->d.ip == NULL) 475 if(gen->d.ip == NULL)
482 { 476 {
483 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,X509V3_R_BAD_IP_ADDRESS); 477 X509V3err(X509V3_F_A2I_GENERAL_NAME,X509V3_R_BAD_IP_ADDRESS);
484 ERR_add_error_data(2, "value=", value); 478 ERR_add_error_data(2, "value=", value);
485 goto err; 479 goto err;
486 } 480 }
487 type = GEN_IPADD; 481 break;
488 } 482
489 else if(!name_cmp(name, "dirName")) 483 case GEN_DIRNAME:
490 {
491 type = GEN_DIRNAME;
492 if (!do_dirname(gen, value, ctx)) 484 if (!do_dirname(gen, value, ctx))
493 { 485 {
494 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,X509V3_R_DIRNAME_ERROR); 486 X509V3err(X509V3_F_A2I_GENERAL_NAME,X509V3_R_DIRNAME_ERROR);
495 goto err; 487 goto err;
496 } 488 }
497 } 489 break;
498 else if(!name_cmp(name, "otherName")) 490
499 { 491 case GEN_OTHERNAME:
500 if (!do_othername(gen, value, ctx)) 492 if (!do_othername(gen, value, ctx))
501 { 493 {
502 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,X509V3_R_OTHERNAME_ERROR); 494 X509V3err(X509V3_F_A2I_GENERAL_NAME,X509V3_R_OTHERNAME_ERROR);
503 goto err; 495 goto err;
504 } 496 }
505 type = GEN_OTHERNAME; 497 break;
506 } 498 default:
507 else 499 X509V3err(X509V3_F_A2I_GENERAL_NAME,X509V3_R_UNSUPPORTED_TYPE);
508 {
509 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,X509V3_R_UNSUPPORTED_OPTION);
510 ERR_add_error_data(2, "name=", name);
511 goto err; 500 goto err;
512 } 501 }
513 502
@@ -517,12 +506,12 @@ GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
517 !ASN1_STRING_set(gen->d.ia5, (unsigned char*)value, 506 !ASN1_STRING_set(gen->d.ia5, (unsigned char*)value,
518 strlen(value))) 507 strlen(value)))
519 { 508 {
520 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,ERR_R_MALLOC_FAILURE); 509 X509V3err(X509V3_F_A2I_GENERAL_NAME,ERR_R_MALLOC_FAILURE);
521 goto err; 510 goto err;
522 } 511 }
523 } 512 }
524 513
525 gen->type = type; 514 gen->type = gen_type;
526 515
527 return gen; 516 return gen;
528 517
@@ -532,6 +521,48 @@ GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
532 return NULL; 521 return NULL;
533 } 522 }
534 523
524GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
525 const X509V3_EXT_METHOD *method,
526 X509V3_CTX *ctx, CONF_VALUE *cnf, int is_nc)
527 {
528 int type;
529
530 char *name, *value;
531
532 name = cnf->name;
533 value = cnf->value;
534
535 if(!value)
536 {
537 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,X509V3_R_MISSING_VALUE);
538 return NULL;
539 }
540
541 if(!name_cmp(name, "email"))
542 type = GEN_EMAIL;
543 else if(!name_cmp(name, "URI"))
544 type = GEN_URI;
545 else if(!name_cmp(name, "DNS"))
546 type = GEN_DNS;
547 else if(!name_cmp(name, "RID"))
548 type = GEN_RID;
549 else if(!name_cmp(name, "IP"))
550 type = GEN_IPADD;
551 else if(!name_cmp(name, "dirName"))
552 type = GEN_DIRNAME;
553 else if(!name_cmp(name, "otherName"))
554 type = GEN_OTHERNAME;
555 else
556 {
557 X509V3err(X509V3_F_V2I_GENERAL_NAME_EX,X509V3_R_UNSUPPORTED_OPTION);
558 ERR_add_error_data(2, "name=", name);
559 return NULL;
560 }
561
562 return a2i_GENERAL_NAME(out, method, ctx, type, value, is_nc);
563
564 }
565
535static int do_othername(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx) 566static int do_othername(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx)
536 { 567 {
537 char *objtmp = NULL, *p; 568 char *objtmp = NULL, *p;
@@ -577,6 +608,7 @@ static int do_dirname(GENERAL_NAME *gen, char *value, X509V3_CTX *ctx)
577 if (!ret) 608 if (!ret)
578 X509_NAME_free(nm); 609 X509_NAME_free(nm);
579 gen->d.dirn = nm; 610 gen->d.dirn = nm;
611 X509V3_section_free(ctx, sk);
580 612
581 return ret; 613 return ret;
582 } 614 }
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_conf.c b/src/lib/libssl/src/crypto/x509v3/v3_conf.c
index 11eb6b7fd5..6730f9a6ee 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_conf.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_conf.c
@@ -72,14 +72,14 @@ static X509_EXTENSION *do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid, in
72static X509_EXTENSION *v3_generic_extension(const char *ext, char *value, int crit, int type, X509V3_CTX *ctx); 72static X509_EXTENSION *v3_generic_extension(const char *ext, char *value, int crit, int type, X509V3_CTX *ctx);
73static char *conf_lhash_get_string(void *db, char *section, char *value); 73static char *conf_lhash_get_string(void *db, char *section, char *value);
74static STACK_OF(CONF_VALUE) *conf_lhash_get_section(void *db, char *section); 74static STACK_OF(CONF_VALUE) *conf_lhash_get_section(void *db, char *section);
75static X509_EXTENSION *do_ext_i2d(X509V3_EXT_METHOD *method, int ext_nid, 75static X509_EXTENSION *do_ext_i2d(const X509V3_EXT_METHOD *method, int ext_nid,
76 int crit, void *ext_struc); 76 int crit, void *ext_struc);
77static unsigned char *generic_asn1(char *value, X509V3_CTX *ctx, long *ext_len); 77static unsigned char *generic_asn1(char *value, X509V3_CTX *ctx, long *ext_len);
78/* CONF *conf: Config file */ 78/* CONF *conf: Config file */
79/* char *name: Name */ 79/* char *name: Name */
80/* char *value: Value */ 80/* char *value: Value */
81X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name, 81X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name,
82 char *value) 82 char *value)
83 { 83 {
84 int crit; 84 int crit;
85 int ext_type; 85 int ext_type;
@@ -99,7 +99,7 @@ X509_EXTENSION *X509V3_EXT_nconf(CONF *conf, X509V3_CTX *ctx, char *name,
99/* CONF *conf: Config file */ 99/* CONF *conf: Config file */
100/* char *value: Value */ 100/* char *value: Value */
101X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, 101X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid,
102 char *value) 102 char *value)
103 { 103 {
104 int crit; 104 int crit;
105 int ext_type; 105 int ext_type;
@@ -113,9 +113,9 @@ X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid,
113/* CONF *conf: Config file */ 113/* CONF *conf: Config file */
114/* char *value: Value */ 114/* char *value: Value */
115static X509_EXTENSION *do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid, 115static X509_EXTENSION *do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid,
116 int crit, char *value) 116 int crit, char *value)
117 { 117 {
118 X509V3_EXT_METHOD *method; 118 const X509V3_EXT_METHOD *method;
119 X509_EXTENSION *ext; 119 X509_EXTENSION *ext;
120 STACK_OF(CONF_VALUE) *nval; 120 STACK_OF(CONF_VALUE) *nval;
121 void *ext_struc; 121 void *ext_struc;
@@ -172,8 +172,8 @@ static X509_EXTENSION *do_ext_nconf(CONF *conf, X509V3_CTX *ctx, int ext_nid,
172 172
173 } 173 }
174 174
175static X509_EXTENSION *do_ext_i2d(X509V3_EXT_METHOD *method, int ext_nid, 175static X509_EXTENSION *do_ext_i2d(const X509V3_EXT_METHOD *method, int ext_nid,
176 int crit, void *ext_struc) 176 int crit, void *ext_struc)
177 { 177 {
178 unsigned char *ext_der; 178 unsigned char *ext_der;
179 int ext_len; 179 int ext_len;
@@ -214,7 +214,7 @@ static X509_EXTENSION *do_ext_i2d(X509V3_EXT_METHOD *method, int ext_nid,
214 214
215X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc) 215X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc)
216 { 216 {
217 X509V3_EXT_METHOD *method; 217 const X509V3_EXT_METHOD *method;
218 if (!(method = X509V3_EXT_get_nid(ext_nid))) { 218 if (!(method = X509V3_EXT_get_nid(ext_nid))) {
219 X509V3err(X509V3_F_X509V3_EXT_I2D,X509V3_R_UNKNOWN_EXTENSION); 219 X509V3err(X509V3_F_X509V3_EXT_I2D,X509V3_R_UNKNOWN_EXTENSION);
220 return NULL; 220 return NULL;
@@ -258,7 +258,8 @@ static int v3_check_generic(char **value)
258 258
259/* Create a generic extension: for now just handle DER type */ 259/* Create a generic extension: for now just handle DER type */
260static X509_EXTENSION *v3_generic_extension(const char *ext, char *value, 260static X509_EXTENSION *v3_generic_extension(const char *ext, char *value,
261 int crit, int gen_type, X509V3_CTX *ctx) 261 int crit, int gen_type,
262 X509V3_CTX *ctx)
262 { 263 {
263 unsigned char *ext_der=NULL; 264 unsigned char *ext_der=NULL;
264 long ext_len; 265 long ext_len;
@@ -322,7 +323,7 @@ static unsigned char *generic_asn1(char *value, X509V3_CTX *ctx, long *ext_len)
322 323
323 324
324int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section, 325int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section,
325 STACK_OF(X509_EXTENSION) **sk) 326 STACK_OF(X509_EXTENSION) **sk)
326 { 327 {
327 X509_EXTENSION *ext; 328 X509_EXTENSION *ext;
328 STACK_OF(CONF_VALUE) *nval; 329 STACK_OF(CONF_VALUE) *nval;
@@ -343,7 +344,7 @@ int X509V3_EXT_add_nconf_sk(CONF *conf, X509V3_CTX *ctx, char *section,
343/* Convenience functions to add extensions to a certificate, CRL and request */ 344/* Convenience functions to add extensions to a certificate, CRL and request */
344 345
345int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, 346int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section,
346 X509 *cert) 347 X509 *cert)
347 { 348 {
348 STACK_OF(X509_EXTENSION) **sk = NULL; 349 STACK_OF(X509_EXTENSION) **sk = NULL;
349 if (cert) 350 if (cert)
@@ -354,7 +355,7 @@ int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section,
354/* Same as above but for a CRL */ 355/* Same as above but for a CRL */
355 356
356int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, 357int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section,
357 X509_CRL *crl) 358 X509_CRL *crl)
358 { 359 {
359 STACK_OF(X509_EXTENSION) **sk = NULL; 360 STACK_OF(X509_EXTENSION) **sk = NULL;
360 if (crl) 361 if (crl)
@@ -443,7 +444,7 @@ void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf)
443 } 444 }
444 445
445void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subj, X509_REQ *req, 446void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subj, X509_REQ *req,
446 X509_CRL *crl, int flags) 447 X509_CRL *crl, int flags)
447 { 448 {
448 ctx->issuer_cert = issuer; 449 ctx->issuer_cert = issuer;
449 ctx->subject_cert = subj; 450 ctx->subject_cert = subj;
@@ -454,8 +455,8 @@ void X509V3_set_ctx(X509V3_CTX *ctx, X509 *issuer, X509 *subj, X509_REQ *req,
454 455
455/* Old conf compatibility functions */ 456/* Old conf compatibility functions */
456 457
457X509_EXTENSION *X509V3_EXT_conf(LHASH *conf, X509V3_CTX *ctx, char *name, 458X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
458 char *value) 459 char *name, char *value)
459 { 460 {
460 CONF ctmp; 461 CONF ctmp;
461 CONF_set_nconf(&ctmp, conf); 462 CONF_set_nconf(&ctmp, conf);
@@ -464,8 +465,8 @@ X509_EXTENSION *X509V3_EXT_conf(LHASH *conf, X509V3_CTX *ctx, char *name,
464 465
465/* LHASH *conf: Config file */ 466/* LHASH *conf: Config file */
466/* char *value: Value */ 467/* char *value: Value */
467X509_EXTENSION *X509V3_EXT_conf_nid(LHASH *conf, X509V3_CTX *ctx, int ext_nid, 468X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
468 char *value) 469 int ext_nid, char *value)
469 { 470 {
470 CONF ctmp; 471 CONF ctmp;
471 CONF_set_nconf(&ctmp, conf); 472 CONF_set_nconf(&ctmp, conf);
@@ -489,14 +490,14 @@ NULL,
489NULL 490NULL
490}; 491};
491 492
492void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH *lhash) 493void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash)
493 { 494 {
494 ctx->db_meth = &conf_lhash_method; 495 ctx->db_meth = &conf_lhash_method;
495 ctx->db = lhash; 496 ctx->db = lhash;
496 } 497 }
497 498
498int X509V3_EXT_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, 499int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
499 X509 *cert) 500 char *section, X509 *cert)
500 { 501 {
501 CONF ctmp; 502 CONF ctmp;
502 CONF_set_nconf(&ctmp, conf); 503 CONF_set_nconf(&ctmp, conf);
@@ -505,8 +506,8 @@ int X509V3_EXT_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section,
505 506
506/* Same as above but for a CRL */ 507/* Same as above but for a CRL */
507 508
508int X509V3_EXT_CRL_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, 509int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
509 X509_CRL *crl) 510 char *section, X509_CRL *crl)
510 { 511 {
511 CONF ctmp; 512 CONF ctmp;
512 CONF_set_nconf(&ctmp, conf); 513 CONF_set_nconf(&ctmp, conf);
@@ -515,8 +516,8 @@ int X509V3_EXT_CRL_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section,
515 516
516/* Add extensions to certificate request */ 517/* Add extensions to certificate request */
517 518
518int X509V3_EXT_REQ_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, 519int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
519 X509_REQ *req) 520 char *section, X509_REQ *req)
520 { 521 {
521 CONF ctmp; 522 CONF ctmp;
522 CONF_set_nconf(&ctmp, conf); 523 CONF_set_nconf(&ctmp, conf);
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_cpols.c b/src/lib/libssl/src/crypto/x509v3/v3_cpols.c
index ad0506d75c..1f0798b946 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_cpols.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_cpols.c
@@ -450,5 +450,8 @@ void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent)
450 else 450 else
451 BIO_printf(out, "%*sNo Qualifiers\n", indent + 2, ""); 451 BIO_printf(out, "%*sNo Qualifiers\n", indent + 2, "");
452 } 452 }
453 453
454
454IMPLEMENT_STACK_OF(X509_POLICY_NODE) 455IMPLEMENT_STACK_OF(X509_POLICY_NODE)
456IMPLEMENT_STACK_OF(X509_POLICY_DATA)
457
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_crld.c b/src/lib/libssl/src/crypto/x509v3/v3_crld.c
index 181a8977b1..790a6dd032 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_crld.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_crld.c
@@ -3,7 +3,7 @@
3 * project 1999. 3 * project 1999.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -63,45 +63,254 @@
63#include <openssl/asn1t.h> 63#include <openssl/asn1t.h>
64#include <openssl/x509v3.h> 64#include <openssl/x509v3.h>
65 65
66static STACK_OF(CONF_VALUE) *i2v_crld(X509V3_EXT_METHOD *method, 66static void *v2i_crld(const X509V3_EXT_METHOD *method,
67 STACK_OF(DIST_POINT) *crld, STACK_OF(CONF_VALUE) *extlist); 67 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
68static STACK_OF(DIST_POINT) *v2i_crld(X509V3_EXT_METHOD *method, 68static int i2r_crldp(const X509V3_EXT_METHOD *method, void *pcrldp, BIO *out,
69 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); 69 int indent);
70 70
71const X509V3_EXT_METHOD v3_crld = { 71const X509V3_EXT_METHOD v3_crld =
72NID_crl_distribution_points, X509V3_EXT_MULTILINE, ASN1_ITEM_ref(CRL_DIST_POINTS), 72 {
730,0,0,0, 73 NID_crl_distribution_points, 0, ASN1_ITEM_ref(CRL_DIST_POINTS),
740,0, 74 0,0,0,0,
75(X509V3_EXT_I2V)i2v_crld, 75 0,0,
76(X509V3_EXT_V2I)v2i_crld, 76 0,
770,0, 77 v2i_crld,
78NULL 78 i2r_crldp,0,
79 NULL
80 };
81
82const X509V3_EXT_METHOD v3_freshest_crl =
83 {
84 NID_freshest_crl, 0, ASN1_ITEM_ref(CRL_DIST_POINTS),
85 0,0,0,0,
86 0,0,
87 0,
88 v2i_crld,
89 i2r_crldp,0,
90 NULL
91 };
92
93static STACK_OF(GENERAL_NAME) *gnames_from_sectname(X509V3_CTX *ctx, char *sect)
94 {
95 STACK_OF(CONF_VALUE) *gnsect;
96 STACK_OF(GENERAL_NAME) *gens;
97 if (*sect == '@')
98 gnsect = X509V3_get_section(ctx, sect + 1);
99 else
100 gnsect = X509V3_parse_list(sect);
101 if (!gnsect)
102 {
103 X509V3err(X509V3_F_GNAMES_FROM_SECTNAME,
104 X509V3_R_SECTION_NOT_FOUND);
105 return NULL;
106 }
107 gens = v2i_GENERAL_NAMES(NULL, ctx, gnsect);
108 if (*sect == '@')
109 X509V3_section_free(ctx, gnsect);
110 else
111 sk_CONF_VALUE_pop_free(gnsect, X509V3_conf_free);
112 return gens;
113 }
114
115static int set_dist_point_name(DIST_POINT_NAME **pdp, X509V3_CTX *ctx,
116 CONF_VALUE *cnf)
117 {
118 STACK_OF(GENERAL_NAME) *fnm = NULL;
119 STACK_OF(X509_NAME_ENTRY) *rnm = NULL;
120 if (!strncmp(cnf->name, "fullname", 9))
121 {
122 fnm = gnames_from_sectname(ctx, cnf->value);
123 if (!fnm)
124 goto err;
125 }
126 else if (!strcmp(cnf->name, "relativename"))
127 {
128 int ret;
129 STACK_OF(CONF_VALUE) *dnsect;
130 X509_NAME *nm;
131 nm = X509_NAME_new();
132 if (!nm)
133 return -1;
134 dnsect = X509V3_get_section(ctx, cnf->value);
135 if (!dnsect)
136 {
137 X509V3err(X509V3_F_SET_DIST_POINT_NAME,
138 X509V3_R_SECTION_NOT_FOUND);
139 return -1;
140 }
141 ret = X509V3_NAME_from_section(nm, dnsect, MBSTRING_ASC);
142 X509V3_section_free(ctx, dnsect);
143 rnm = nm->entries;
144 nm->entries = NULL;
145 X509_NAME_free(nm);
146 if (!ret || sk_X509_NAME_ENTRY_num(rnm) <= 0)
147 goto err;
148 /* Since its a name fragment can't have more than one
149 * RDNSequence
150 */
151 if (sk_X509_NAME_ENTRY_value(rnm,
152 sk_X509_NAME_ENTRY_num(rnm) - 1)->set)
153 {
154 X509V3err(X509V3_F_SET_DIST_POINT_NAME,
155 X509V3_R_INVALID_MULTIPLE_RDNS);
156 goto err;
157 }
158 }
159 else
160 return 0;
161
162 if (*pdp)
163 {
164 X509V3err(X509V3_F_SET_DIST_POINT_NAME,
165 X509V3_R_DISTPOINT_ALREADY_SET);
166 goto err;
167 }
168
169 *pdp = DIST_POINT_NAME_new();
170 if (!*pdp)
171 goto err;
172 if (fnm)
173 {
174 (*pdp)->type = 0;
175 (*pdp)->name.fullname = fnm;
176 }
177 else
178 {
179 (*pdp)->type = 1;
180 (*pdp)->name.relativename = rnm;
181 }
182
183 return 1;
184
185 err:
186 if (fnm)
187 sk_GENERAL_NAME_pop_free(fnm, GENERAL_NAME_free);
188 if (rnm)
189 sk_X509_NAME_ENTRY_pop_free(rnm, X509_NAME_ENTRY_free);
190 return -1;
191 }
192
193static const BIT_STRING_BITNAME reason_flags[] = {
194{0, "Unused", "unused"},
195{1, "Key Compromise", "keyCompromise"},
196{2, "CA Compromise", "CACompromise"},
197{3, "Affiliation Changed", "affiliationChanged"},
198{4, "Superseded", "superseded"},
199{5, "Cessation Of Operation", "cessationOfOperation"},
200{6, "Certificate Hold", "certificateHold"},
201{7, "Privilege Withdrawn", "privilegeWithdrawn"},
202{8, "AA Compromise", "AACompromise"},
203{-1, NULL, NULL}
79}; 204};
80 205
81static STACK_OF(CONF_VALUE) *i2v_crld(X509V3_EXT_METHOD *method, 206static int set_reasons(ASN1_BIT_STRING **preas, char *value)
82 STACK_OF(DIST_POINT) *crld, STACK_OF(CONF_VALUE) *exts) 207 {
83{ 208 STACK_OF(CONF_VALUE) *rsk = NULL;
84 DIST_POINT *point; 209 const BIT_STRING_BITNAME *pbn;
210 const char *bnam;
211 int i, ret = 0;
212 rsk = X509V3_parse_list(value);
213 if (!rsk)
214 return 0;
215 if (*preas)
216 return 0;
217 for (i = 0; i < sk_CONF_VALUE_num(rsk); i++)
218 {
219 bnam = sk_CONF_VALUE_value(rsk, i)->name;
220 if (!*preas)
221 {
222 *preas = ASN1_BIT_STRING_new();
223 if (!*preas)
224 goto err;
225 }
226 for (pbn = reason_flags; pbn->lname; pbn++)
227 {
228 if (!strcmp(pbn->sname, bnam))
229 {
230 if (!ASN1_BIT_STRING_set_bit(*preas,
231 pbn->bitnum, 1))
232 goto err;
233 break;
234 }
235 }
236 if (!pbn->lname)
237 goto err;
238 }
239 ret = 1;
240
241 err:
242 sk_CONF_VALUE_pop_free(rsk, X509V3_conf_free);
243 return ret;
244 }
245
246static int print_reasons(BIO *out, const char *rname,
247 ASN1_BIT_STRING *rflags, int indent)
248 {
249 int first = 1;
250 const BIT_STRING_BITNAME *pbn;
251 BIO_printf(out, "%*s%s:\n%*s", indent, "", rname, indent + 2, "");
252 for (pbn = reason_flags; pbn->lname; pbn++)
253 {
254 if (ASN1_BIT_STRING_get_bit(rflags, pbn->bitnum))
255 {
256 if (first)
257 first = 0;
258 else
259 BIO_puts(out, ", ");
260 BIO_puts(out, pbn->lname);
261 }
262 }
263 if (first)
264 BIO_puts(out, "<EMPTY>\n");
265 else
266 BIO_puts(out, "\n");
267 return 1;
268 }
269
270static DIST_POINT *crldp_from_section(X509V3_CTX *ctx,
271 STACK_OF(CONF_VALUE) *nval)
272 {
85 int i; 273 int i;
86 for(i = 0; i < sk_DIST_POINT_num(crld); i++) { 274 CONF_VALUE *cnf;
87 point = sk_DIST_POINT_value(crld, i); 275 DIST_POINT *point = NULL;
88 if(point->distpoint) { 276 point = DIST_POINT_new();
89 if(point->distpoint->type == 0) 277 if (!point)
90 exts = i2v_GENERAL_NAMES(NULL, 278 goto err;
91 point->distpoint->name.fullname, exts); 279 for(i = 0; i < sk_CONF_VALUE_num(nval); i++)
92 else X509V3_add_value("RelativeName","<UNSUPPORTED>", &exts); 280 {
281 int ret;
282 cnf = sk_CONF_VALUE_value(nval, i);
283 ret = set_dist_point_name(&point->distpoint, ctx, cnf);
284 if (ret > 0)
285 continue;
286 if (ret < 0)
287 goto err;
288 if (!strcmp(cnf->name, "reasons"))
289 {
290 if (!set_reasons(&point->reasons, cnf->value))
291 goto err;
292 }
293 else if (!strcmp(cnf->name, "CRLissuer"))
294 {
295 point->CRLissuer =
296 gnames_from_sectname(ctx, cnf->value);
297 if (!point->CRLissuer)
298 goto err;
299 }
93 } 300 }
94 if(point->reasons) 301
95 X509V3_add_value("reasons","<UNSUPPORTED>", &exts); 302 return point;
96 if(point->CRLissuer) 303
97 X509V3_add_value("CRLissuer","<UNSUPPORTED>", &exts); 304
305 err:
306 if (point)
307 DIST_POINT_free(point);
308 return NULL;
98 } 309 }
99 return exts;
100}
101 310
102static STACK_OF(DIST_POINT) *v2i_crld(X509V3_EXT_METHOD *method, 311static void *v2i_crld(const X509V3_EXT_METHOD *method,
103 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval) 312 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval)
104{ 313 {
105 STACK_OF(DIST_POINT) *crld = NULL; 314 STACK_OF(DIST_POINT) *crld = NULL;
106 GENERAL_NAMES *gens = NULL; 315 GENERAL_NAMES *gens = NULL;
107 GENERAL_NAME *gen = NULL; 316 GENERAL_NAME *gen = NULL;
@@ -111,19 +320,44 @@ static STACK_OF(DIST_POINT) *v2i_crld(X509V3_EXT_METHOD *method,
111 for(i = 0; i < sk_CONF_VALUE_num(nval); i++) { 320 for(i = 0; i < sk_CONF_VALUE_num(nval); i++) {
112 DIST_POINT *point; 321 DIST_POINT *point;
113 cnf = sk_CONF_VALUE_value(nval, i); 322 cnf = sk_CONF_VALUE_value(nval, i);
114 if(!(gen = v2i_GENERAL_NAME(method, ctx, cnf))) goto err; 323 if (!cnf->value)
115 if(!(gens = GENERAL_NAMES_new())) goto merr; 324 {
116 if(!sk_GENERAL_NAME_push(gens, gen)) goto merr; 325 STACK_OF(CONF_VALUE) *dpsect;
117 gen = NULL; 326 dpsect = X509V3_get_section(ctx, cnf->name);
118 if(!(point = DIST_POINT_new())) goto merr; 327 if (!dpsect)
119 if(!sk_DIST_POINT_push(crld, point)) { 328 goto err;
120 DIST_POINT_free(point); 329 point = crldp_from_section(ctx, dpsect);
121 goto merr; 330 X509V3_section_free(ctx, dpsect);
122 } 331 if (!point)
123 if(!(point->distpoint = DIST_POINT_NAME_new())) goto merr; 332 goto err;
124 point->distpoint->name.fullname = gens; 333 if(!sk_DIST_POINT_push(crld, point))
125 point->distpoint->type = 0; 334 {
126 gens = NULL; 335 DIST_POINT_free(point);
336 goto merr;
337 }
338 }
339 else
340 {
341 if(!(gen = v2i_GENERAL_NAME(method, ctx, cnf)))
342 goto err;
343 if(!(gens = GENERAL_NAMES_new()))
344 goto merr;
345 if(!sk_GENERAL_NAME_push(gens, gen))
346 goto merr;
347 gen = NULL;
348 if(!(point = DIST_POINT_new()))
349 goto merr;
350 if(!sk_DIST_POINT_push(crld, point))
351 {
352 DIST_POINT_free(point);
353 goto merr;
354 }
355 if(!(point->distpoint = DIST_POINT_NAME_new()))
356 goto merr;
357 point->distpoint->name.fullname = gens;
358 point->distpoint->type = 0;
359 gens = NULL;
360 }
127 } 361 }
128 return crld; 362 return crld;
129 363
@@ -139,11 +373,31 @@ static STACK_OF(DIST_POINT) *v2i_crld(X509V3_EXT_METHOD *method,
139IMPLEMENT_STACK_OF(DIST_POINT) 373IMPLEMENT_STACK_OF(DIST_POINT)
140IMPLEMENT_ASN1_SET_OF(DIST_POINT) 374IMPLEMENT_ASN1_SET_OF(DIST_POINT)
141 375
376static int dpn_cb(int operation, ASN1_VALUE **pval, const ASN1_ITEM *it,
377 void *exarg)
378 {
379 DIST_POINT_NAME *dpn = (DIST_POINT_NAME *)*pval;
380
381 switch(operation)
382 {
383 case ASN1_OP_NEW_POST:
384 dpn->dpname = NULL;
385 break;
386
387 case ASN1_OP_FREE_POST:
388 if (dpn->dpname)
389 X509_NAME_free(dpn->dpname);
390 break;
391 }
392 return 1;
393 }
394
142 395
143ASN1_CHOICE(DIST_POINT_NAME) = { 396ASN1_CHOICE_cb(DIST_POINT_NAME, dpn_cb) = {
144 ASN1_IMP_SEQUENCE_OF(DIST_POINT_NAME, name.fullname, GENERAL_NAME, 0), 397 ASN1_IMP_SEQUENCE_OF(DIST_POINT_NAME, name.fullname, GENERAL_NAME, 0),
145 ASN1_IMP_SET_OF(DIST_POINT_NAME, name.relativename, X509_NAME_ENTRY, 1) 398 ASN1_IMP_SET_OF(DIST_POINT_NAME, name.relativename, X509_NAME_ENTRY, 1)
146} ASN1_CHOICE_END(DIST_POINT_NAME) 399} ASN1_CHOICE_END_cb(DIST_POINT_NAME, DIST_POINT_NAME, type)
400
147 401
148IMPLEMENT_ASN1_FUNCTIONS(DIST_POINT_NAME) 402IMPLEMENT_ASN1_FUNCTIONS(DIST_POINT_NAME)
149 403
@@ -160,3 +414,203 @@ ASN1_ITEM_TEMPLATE(CRL_DIST_POINTS) =
160ASN1_ITEM_TEMPLATE_END(CRL_DIST_POINTS) 414ASN1_ITEM_TEMPLATE_END(CRL_DIST_POINTS)
161 415
162IMPLEMENT_ASN1_FUNCTIONS(CRL_DIST_POINTS) 416IMPLEMENT_ASN1_FUNCTIONS(CRL_DIST_POINTS)
417
418ASN1_SEQUENCE(ISSUING_DIST_POINT) = {
419 ASN1_EXP_OPT(ISSUING_DIST_POINT, distpoint, DIST_POINT_NAME, 0),
420 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyuser, ASN1_FBOOLEAN, 1),
421 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyCA, ASN1_FBOOLEAN, 2),
422 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlysomereasons, ASN1_BIT_STRING, 3),
423 ASN1_IMP_OPT(ISSUING_DIST_POINT, indirectCRL, ASN1_FBOOLEAN, 4),
424 ASN1_IMP_OPT(ISSUING_DIST_POINT, onlyattr, ASN1_FBOOLEAN, 5)
425} ASN1_SEQUENCE_END(ISSUING_DIST_POINT)
426
427IMPLEMENT_ASN1_FUNCTIONS(ISSUING_DIST_POINT)
428
429static int i2r_idp(const X509V3_EXT_METHOD *method, void *pidp, BIO *out,
430 int indent);
431static void *v2i_idp(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
432 STACK_OF(CONF_VALUE) *nval);
433
434const X509V3_EXT_METHOD v3_idp =
435 {
436 NID_issuing_distribution_point, X509V3_EXT_MULTILINE,
437 ASN1_ITEM_ref(ISSUING_DIST_POINT),
438 0,0,0,0,
439 0,0,
440 0,
441 v2i_idp,
442 i2r_idp,0,
443 NULL
444 };
445
446static void *v2i_idp(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
447 STACK_OF(CONF_VALUE) *nval)
448 {
449 ISSUING_DIST_POINT *idp = NULL;
450 CONF_VALUE *cnf;
451 char *name, *val;
452 int i, ret;
453 idp = ISSUING_DIST_POINT_new();
454 if (!idp)
455 goto merr;
456 for(i = 0; i < sk_CONF_VALUE_num(nval); i++)
457 {
458 cnf = sk_CONF_VALUE_value(nval, i);
459 name = cnf->name;
460 val = cnf->value;
461 ret = set_dist_point_name(&idp->distpoint, ctx, cnf);
462 if (ret > 0)
463 continue;
464 if (ret < 0)
465 goto err;
466 if (!strcmp(name, "onlyuser"))
467 {
468 if (!X509V3_get_value_bool(cnf, &idp->onlyuser))
469 goto err;
470 }
471 else if (!strcmp(name, "onlyCA"))
472 {
473 if (!X509V3_get_value_bool(cnf, &idp->onlyCA))
474 goto err;
475 }
476 else if (!strcmp(name, "onlyAA"))
477 {
478 if (!X509V3_get_value_bool(cnf, &idp->onlyattr))
479 goto err;
480 }
481 else if (!strcmp(name, "indirectCRL"))
482 {
483 if (!X509V3_get_value_bool(cnf, &idp->indirectCRL))
484 goto err;
485 }
486 else if (!strcmp(name, "onlysomereasons"))
487 {
488 if (!set_reasons(&idp->onlysomereasons, val))
489 goto err;
490 }
491 else
492 {
493 X509V3err(X509V3_F_V2I_IDP, X509V3_R_INVALID_NAME);
494 X509V3_conf_err(cnf);
495 goto err;
496 }
497 }
498 return idp;
499
500 merr:
501 X509V3err(X509V3_F_V2I_IDP,ERR_R_MALLOC_FAILURE);
502 err:
503 ISSUING_DIST_POINT_free(idp);
504 return NULL;
505 }
506
507static int print_gens(BIO *out, STACK_OF(GENERAL_NAME) *gens, int indent)
508 {
509 int i;
510 for (i = 0; i < sk_GENERAL_NAME_num(gens); i++)
511 {
512 BIO_printf(out, "%*s", indent + 2, "");
513 GENERAL_NAME_print(out, sk_GENERAL_NAME_value(gens, i));
514 BIO_puts(out, "\n");
515 }
516 return 1;
517 }
518
519static int print_distpoint(BIO *out, DIST_POINT_NAME *dpn, int indent)
520 {
521 if (dpn->type == 0)
522 {
523 BIO_printf(out, "%*sFull Name:\n", indent, "");
524 print_gens(out, dpn->name.fullname, indent);
525 }
526 else
527 {
528 X509_NAME ntmp;
529 ntmp.entries = dpn->name.relativename;
530 BIO_printf(out, "%*sRelative Name:\n%*s",
531 indent, "", indent + 2, "");
532 X509_NAME_print_ex(out, &ntmp, 0, XN_FLAG_ONELINE);
533 BIO_puts(out, "\n");
534 }
535 return 1;
536 }
537
538static int i2r_idp(const X509V3_EXT_METHOD *method, void *pidp, BIO *out,
539 int indent)
540 {
541 ISSUING_DIST_POINT *idp = pidp;
542 if (idp->distpoint)
543 print_distpoint(out, idp->distpoint, indent);
544 if (idp->onlyuser > 0)
545 BIO_printf(out, "%*sOnly User Certificates\n", indent, "");
546 if (idp->onlyCA > 0)
547 BIO_printf(out, "%*sOnly CA Certificates\n", indent, "");
548 if (idp->indirectCRL > 0)
549 BIO_printf(out, "%*sIndirect CRL\n", indent, "");
550 if (idp->onlysomereasons)
551 print_reasons(out, "Only Some Reasons",
552 idp->onlysomereasons, indent);
553 if (idp->onlyattr > 0)
554 BIO_printf(out, "%*sOnly Attribute Certificates\n", indent, "");
555 if (!idp->distpoint && (idp->onlyuser <= 0) && (idp->onlyCA <= 0)
556 && (idp->indirectCRL <= 0) && !idp->onlysomereasons
557 && (idp->onlyattr <= 0))
558 BIO_printf(out, "%*s<EMPTY>\n", indent, "");
559
560 return 1;
561 }
562
563static int i2r_crldp(const X509V3_EXT_METHOD *method, void *pcrldp, BIO *out,
564 int indent)
565 {
566 STACK_OF(DIST_POINT) *crld = pcrldp;
567 DIST_POINT *point;
568 int i;
569 for(i = 0; i < sk_DIST_POINT_num(crld); i++)
570 {
571 BIO_puts(out, "\n");
572 point = sk_DIST_POINT_value(crld, i);
573 if(point->distpoint)
574 print_distpoint(out, point->distpoint, indent);
575 if(point->reasons)
576 print_reasons(out, "Reasons", point->reasons,
577 indent);
578 if(point->CRLissuer)
579 {
580 BIO_printf(out, "%*sCRL Issuer:\n", indent, "");
581 print_gens(out, point->CRLissuer, indent);
582 }
583 }
584 return 1;
585 }
586
587int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname)
588 {
589 int i;
590 STACK_OF(X509_NAME_ENTRY) *frag;
591 X509_NAME_ENTRY *ne;
592 if (!dpn || (dpn->type != 1))
593 return 1;
594 frag = dpn->name.relativename;
595 dpn->dpname = X509_NAME_dup(iname);
596 if (!dpn->dpname)
597 return 0;
598 for (i = 0; i < sk_X509_NAME_ENTRY_num(frag); i++)
599 {
600 ne = sk_X509_NAME_ENTRY_value(frag, i);
601 if (!X509_NAME_add_entry(dpn->dpname, ne, -1, i ? 0 : 1))
602 {
603 X509_NAME_free(dpn->dpname);
604 dpn->dpname = NULL;
605 return 0;
606 }
607 }
608 /* generate cached encoding of name */
609 if (i2d_X509_NAME(dpn->dpname, NULL) < 0)
610 {
611 X509_NAME_free(dpn->dpname);
612 dpn->dpname = NULL;
613 return 0;
614 }
615 return 1;
616 }
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_enum.c b/src/lib/libssl/src/crypto/x509v3/v3_enum.c
index 36576eaa4d..c0575e368d 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_enum.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_enum.c
@@ -61,14 +61,17 @@
61#include <openssl/x509v3.h> 61#include <openssl/x509v3.h>
62 62
63static ENUMERATED_NAMES crl_reasons[] = { 63static ENUMERATED_NAMES crl_reasons[] = {
64{0, "Unspecified", "unspecified"}, 64{CRL_REASON_UNSPECIFIED, "Unspecified", "unspecified"},
65{1, "Key Compromise", "keyCompromise"}, 65{CRL_REASON_KEY_COMPROMISE, "Key Compromise", "keyCompromise"},
66{2, "CA Compromise", "CACompromise"}, 66{CRL_REASON_CA_COMPROMISE, "CA Compromise", "CACompromise"},
67{3, "Affiliation Changed", "affiliationChanged"}, 67{CRL_REASON_AFFILIATION_CHANGED, "Affiliation Changed", "affiliationChanged"},
68{4, "Superseded", "superseded"}, 68{CRL_REASON_SUPERSEDED, "Superseded", "superseded"},
69{5, "Cessation Of Operation", "cessationOfOperation"}, 69{CRL_REASON_CESSATION_OF_OPERATION,
70{6, "Certificate Hold", "certificateHold"}, 70 "Cessation Of Operation", "cessationOfOperation"},
71{8, "Remove From CRL", "removeFromCRL"}, 71{CRL_REASON_CERTIFICATE_HOLD, "Certificate Hold", "certificateHold"},
72{CRL_REASON_REMOVE_FROM_CRL, "Remove From CRL", "removeFromCRL"},
73{CRL_REASON_PRIVILEGE_WITHDRAWN, "Privilege Withdrawn", "privilegeWithdrawn"},
74{CRL_REASON_AA_COMPROMISE, "AA Compromise", "AACompromise"},
72{-1, NULL, NULL} 75{-1, NULL, NULL}
73}; 76};
74 77
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_extku.c b/src/lib/libssl/src/crypto/x509v3/v3_extku.c
index c0d14500ed..1c66532757 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_extku.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_extku.c
@@ -63,9 +63,10 @@
63#include <openssl/conf.h> 63#include <openssl/conf.h>
64#include <openssl/x509v3.h> 64#include <openssl/x509v3.h>
65 65
66static void *v2i_EXTENDED_KEY_USAGE(X509V3_EXT_METHOD *method, 66static void *v2i_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method,
67 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); 67 X509V3_CTX *ctx,
68static STACK_OF(CONF_VALUE) *i2v_EXTENDED_KEY_USAGE(X509V3_EXT_METHOD *method, 68 STACK_OF(CONF_VALUE) *nval);
69static STACK_OF(CONF_VALUE) *i2v_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method,
69 void *eku, STACK_OF(CONF_VALUE) *extlist); 70 void *eku, STACK_OF(CONF_VALUE) *extlist);
70 71
71const X509V3_EXT_METHOD v3_ext_ku = { 72const X509V3_EXT_METHOD v3_ext_ku = {
@@ -97,8 +98,9 @@ ASN1_ITEM_TEMPLATE_END(EXTENDED_KEY_USAGE)
97 98
98IMPLEMENT_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE) 99IMPLEMENT_ASN1_FUNCTIONS(EXTENDED_KEY_USAGE)
99 100
100static STACK_OF(CONF_VALUE) *i2v_EXTENDED_KEY_USAGE(X509V3_EXT_METHOD *method, 101static STACK_OF(CONF_VALUE) *
101 void *a, STACK_OF(CONF_VALUE) *ext_list) 102 i2v_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method, void *a,
103 STACK_OF(CONF_VALUE) *ext_list)
102{ 104{
103 EXTENDED_KEY_USAGE *eku = a; 105 EXTENDED_KEY_USAGE *eku = a;
104 int i; 106 int i;
@@ -112,8 +114,8 @@ static STACK_OF(CONF_VALUE) *i2v_EXTENDED_KEY_USAGE(X509V3_EXT_METHOD *method,
112 return ext_list; 114 return ext_list;
113} 115}
114 116
115static void *v2i_EXTENDED_KEY_USAGE(X509V3_EXT_METHOD *method, 117static void *v2i_EXTENDED_KEY_USAGE(const X509V3_EXT_METHOD *method,
116 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval) 118 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval)
117{ 119{
118 EXTENDED_KEY_USAGE *extku; 120 EXTENDED_KEY_USAGE *extku;
119 char *extval; 121 char *extval;
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_genn.c b/src/lib/libssl/src/crypto/x509v3/v3_genn.c
index 84b4b1c881..b628357301 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_genn.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_genn.c
@@ -3,7 +3,7 @@
3 * project 1999. 3 * project 1999.
4 */ 4 */
5/* ==================================================================== 5/* ====================================================================
6 * Copyright (c) 1999 The OpenSSL Project. All rights reserved. 6 * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved.
7 * 7 *
8 * Redistribution and use in source and binary forms, with or without 8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions 9 * modification, are permitted provided that the following conditions
@@ -99,3 +99,154 @@ ASN1_ITEM_TEMPLATE(GENERAL_NAMES) =
99ASN1_ITEM_TEMPLATE_END(GENERAL_NAMES) 99ASN1_ITEM_TEMPLATE_END(GENERAL_NAMES)
100 100
101IMPLEMENT_ASN1_FUNCTIONS(GENERAL_NAMES) 101IMPLEMENT_ASN1_FUNCTIONS(GENERAL_NAMES)
102
103GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a)
104 {
105 return (GENERAL_NAME *) ASN1_dup((i2d_of_void *) i2d_GENERAL_NAME,
106 (d2i_of_void *) d2i_GENERAL_NAME,
107 (char *) a);
108 }
109
110/* Returns 0 if they are equal, != 0 otherwise. */
111int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b)
112 {
113 int result = -1;
114
115 if (!a || !b || a->type != b->type) return -1;
116 switch(a->type)
117 {
118 case GEN_X400:
119 case GEN_EDIPARTY:
120 result = ASN1_TYPE_cmp(a->d.other, b->d.other);
121 break;
122
123 case GEN_OTHERNAME:
124 result = OTHERNAME_cmp(a->d.otherName, b->d.otherName);
125 break;
126
127 case GEN_EMAIL:
128 case GEN_DNS:
129 case GEN_URI:
130 result = ASN1_STRING_cmp(a->d.ia5, b->d.ia5);
131 break;
132
133 case GEN_DIRNAME:
134 result = X509_NAME_cmp(a->d.dirn, b->d.dirn);
135 break;
136
137 case GEN_IPADD:
138 result = ASN1_OCTET_STRING_cmp(a->d.ip, b->d.ip);
139 break;
140
141 case GEN_RID:
142 result = OBJ_cmp(a->d.rid, b->d.rid);
143 break;
144 }
145 return result;
146 }
147
148/* Returns 0 if they are equal, != 0 otherwise. */
149int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b)
150 {
151 int result = -1;
152
153 if (!a || !b) return -1;
154 /* Check their type first. */
155 if ((result = OBJ_cmp(a->type_id, b->type_id)) != 0)
156 return result;
157 /* Check the value. */
158 result = ASN1_TYPE_cmp(a->value, b->value);
159 return result;
160 }
161
162void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value)
163 {
164 switch(type)
165 {
166 case GEN_X400:
167 case GEN_EDIPARTY:
168 a->d.other = value;
169 break;
170
171 case GEN_OTHERNAME:
172 a->d.otherName = value;
173 break;
174
175 case GEN_EMAIL:
176 case GEN_DNS:
177 case GEN_URI:
178 a->d.ia5 = value;
179 break;
180
181 case GEN_DIRNAME:
182 a->d.dirn = value;
183 break;
184
185 case GEN_IPADD:
186 a->d.ip = value;
187 break;
188
189 case GEN_RID:
190 a->d.rid = value;
191 break;
192 }
193 a->type = type;
194 }
195
196void *GENERAL_NAME_get0_value(GENERAL_NAME *a, int *ptype)
197 {
198 if (ptype)
199 *ptype = a->type;
200 switch(a->type)
201 {
202 case GEN_X400:
203 case GEN_EDIPARTY:
204 return a->d.other;
205
206 case GEN_OTHERNAME:
207 return a->d.otherName;
208
209 case GEN_EMAIL:
210 case GEN_DNS:
211 case GEN_URI:
212 return a->d.ia5;
213
214 case GEN_DIRNAME:
215 return a->d.dirn;
216
217 case GEN_IPADD:
218 return a->d.ip;
219
220 case GEN_RID:
221 return a->d.rid;
222
223 default:
224 return NULL;
225 }
226 }
227
228int GENERAL_NAME_set0_othername(GENERAL_NAME *gen,
229 ASN1_OBJECT *oid, ASN1_TYPE *value)
230 {
231 OTHERNAME *oth;
232 oth = OTHERNAME_new();
233 if (!oth)
234 return 0;
235 oth->type_id = oid;
236 oth->value = value;
237 GENERAL_NAME_set0_value(gen, GEN_OTHERNAME, oth);
238 return 1;
239 }
240
241int GENERAL_NAME_get0_otherName(GENERAL_NAME *gen,
242 ASN1_OBJECT **poid, ASN1_TYPE **pvalue)
243 {
244 if (gen->type != GEN_OTHERNAME)
245 return 0;
246 if (poid)
247 *poid = gen->d.otherName->type_id;
248 if (pvalue)
249 *pvalue = gen->d.otherName->value;
250 return 1;
251 }
252
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_lib.c b/src/lib/libssl/src/crypto/x509v3/v3_lib.c
index df3a48f43e..0f1e1d4422 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_lib.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_lib.c
@@ -84,20 +84,24 @@ int X509V3_EXT_add(X509V3_EXT_METHOD *ext)
84} 84}
85 85
86static int ext_cmp(const X509V3_EXT_METHOD * const *a, 86static int ext_cmp(const X509V3_EXT_METHOD * const *a,
87 const X509V3_EXT_METHOD * const *b) 87 const X509V3_EXT_METHOD * const *b)
88{ 88{
89 return ((*a)->ext_nid - (*b)->ext_nid); 89 return ((*a)->ext_nid - (*b)->ext_nid);
90} 90}
91 91
92X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid) 92DECLARE_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *, const X509V3_EXT_METHOD *,
93 ext);
94IMPLEMENT_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *,
95 const X509V3_EXT_METHOD *, ext);
96
97const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid)
93{ 98{
94 X509V3_EXT_METHOD tmp, *t = &tmp, **ret; 99 X509V3_EXT_METHOD tmp;
100 const X509V3_EXT_METHOD *t = &tmp, * const *ret;
95 int idx; 101 int idx;
96 if(nid < 0) return NULL; 102 if(nid < 0) return NULL;
97 tmp.ext_nid = nid; 103 tmp.ext_nid = nid;
98 ret = (X509V3_EXT_METHOD **) OBJ_bsearch((char *)&t, 104 ret = OBJ_bsearch_ext(&t, standard_exts, STANDARD_EXTENSION_COUNT);
99 (char *)standard_exts, STANDARD_EXTENSION_COUNT,
100 sizeof(X509V3_EXT_METHOD *), (int (*)(const void *, const void *))ext_cmp);
101 if(ret) return *ret; 105 if(ret) return *ret;
102 if(!ext_list) return NULL; 106 if(!ext_list) return NULL;
103 idx = sk_X509V3_EXT_METHOD_find(ext_list, &tmp); 107 idx = sk_X509V3_EXT_METHOD_find(ext_list, &tmp);
@@ -105,7 +109,7 @@ X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid)
105 return sk_X509V3_EXT_METHOD_value(ext_list, idx); 109 return sk_X509V3_EXT_METHOD_value(ext_list, idx);
106} 110}
107 111
108X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext) 112const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext)
109{ 113{
110 int nid; 114 int nid;
111 if((nid = OBJ_obj2nid(ext->object)) == NID_undef) return NULL; 115 if((nid = OBJ_obj2nid(ext->object)) == NID_undef) return NULL;
@@ -122,7 +126,9 @@ int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist)
122 126
123int X509V3_EXT_add_alias(int nid_to, int nid_from) 127int X509V3_EXT_add_alias(int nid_to, int nid_from)
124{ 128{
125 X509V3_EXT_METHOD *ext, *tmpext; 129 const X509V3_EXT_METHOD *ext;
130 X509V3_EXT_METHOD *tmpext;
131
126 if(!(ext = X509V3_EXT_get_nid(nid_from))) { 132 if(!(ext = X509V3_EXT_get_nid(nid_from))) {
127 X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,X509V3_R_EXTENSION_NOT_FOUND); 133 X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,X509V3_R_EXTENSION_NOT_FOUND);
128 return 0; 134 return 0;
@@ -161,7 +167,7 @@ int X509V3_add_standard_extensions(void)
161 167
162void *X509V3_EXT_d2i(X509_EXTENSION *ext) 168void *X509V3_EXT_d2i(X509_EXTENSION *ext)
163{ 169{
164 X509V3_EXT_METHOD *method; 170 const X509V3_EXT_METHOD *method;
165 const unsigned char *p; 171 const unsigned char *p;
166 172
167 if(!(method = X509V3_EXT_get(ext))) return NULL; 173 if(!(method = X509V3_EXT_get(ext))) return NULL;
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_ocsp.c b/src/lib/libssl/src/crypto/x509v3/v3_ocsp.c
index e426ea930c..0c165af314 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_ocsp.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_ocsp.c
@@ -68,19 +68,26 @@
68/* OCSP extensions and a couple of CRL entry extensions 68/* OCSP extensions and a couple of CRL entry extensions
69 */ 69 */
70 70
71static int i2r_ocsp_crlid(X509V3_EXT_METHOD *method, void *nonce, BIO *out, int indent); 71static int i2r_ocsp_crlid(const X509V3_EXT_METHOD *method, void *nonce,
72static int i2r_ocsp_acutoff(X509V3_EXT_METHOD *method, void *nonce, BIO *out, int indent); 72 BIO *out, int indent);
73static int i2r_object(X509V3_EXT_METHOD *method, void *obj, BIO *out, int indent); 73static int i2r_ocsp_acutoff(const X509V3_EXT_METHOD *method, void *nonce,
74 BIO *out, int indent);
75static int i2r_object(const X509V3_EXT_METHOD *method, void *obj, BIO *out,
76 int indent);
74 77
75static void *ocsp_nonce_new(void); 78static void *ocsp_nonce_new(void);
76static int i2d_ocsp_nonce(void *a, unsigned char **pp); 79static int i2d_ocsp_nonce(void *a, unsigned char **pp);
77static void *d2i_ocsp_nonce(void *a, const unsigned char **pp, long length); 80static void *d2i_ocsp_nonce(void *a, const unsigned char **pp, long length);
78static void ocsp_nonce_free(void *a); 81static void ocsp_nonce_free(void *a);
79static int i2r_ocsp_nonce(X509V3_EXT_METHOD *method, void *nonce, BIO *out, int indent); 82static int i2r_ocsp_nonce(const X509V3_EXT_METHOD *method, void *nonce,
83 BIO *out, int indent);
80 84
81static int i2r_ocsp_nocheck(X509V3_EXT_METHOD *method, void *nocheck, BIO *out, int indent); 85static int i2r_ocsp_nocheck(const X509V3_EXT_METHOD *method,
82static void *s2i_ocsp_nocheck(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, const char *str); 86 void *nocheck, BIO *out, int indent);
83static int i2r_ocsp_serviceloc(X509V3_EXT_METHOD *method, void *in, BIO *bp, int ind); 87static void *s2i_ocsp_nocheck(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
88 const char *str);
89static int i2r_ocsp_serviceloc(const X509V3_EXT_METHOD *method, void *in,
90 BIO *bp, int ind);
84 91
85const X509V3_EXT_METHOD v3_ocsp_crlid = { 92const X509V3_EXT_METHOD v3_ocsp_crlid = {
86 NID_id_pkix_OCSP_CrlID, 0, ASN1_ITEM_ref(OCSP_CRLID), 93 NID_id_pkix_OCSP_CrlID, 0, ASN1_ITEM_ref(OCSP_CRLID),
@@ -148,44 +155,47 @@ const X509V3_EXT_METHOD v3_ocsp_serviceloc = {
148 NULL 155 NULL
149}; 156};
150 157
151static int i2r_ocsp_crlid(X509V3_EXT_METHOD *method, void *in, BIO *bp, int ind) 158static int i2r_ocsp_crlid(const X509V3_EXT_METHOD *method, void *in, BIO *bp,
159 int ind)
152{ 160{
153 OCSP_CRLID *a = in; 161 OCSP_CRLID *a = in;
154 if (a->crlUrl) 162 if (a->crlUrl)
155 { 163 {
156 if (!BIO_printf(bp, "%*scrlUrl: ", ind, "")) goto err; 164 if (BIO_printf(bp, "%*scrlUrl: ", ind, "") <= 0) goto err;
157 if (!ASN1_STRING_print(bp, (ASN1_STRING*)a->crlUrl)) goto err; 165 if (!ASN1_STRING_print(bp, (ASN1_STRING*)a->crlUrl)) goto err;
158 if (!BIO_write(bp, "\n", 1)) goto err; 166 if (BIO_write(bp, "\n", 1) <= 0) goto err;
159 } 167 }
160 if (a->crlNum) 168 if (a->crlNum)
161 { 169 {
162 if (!BIO_printf(bp, "%*scrlNum: ", ind, "")) goto err; 170 if (BIO_printf(bp, "%*scrlNum: ", ind, "") <= 0) goto err;
163 if (!i2a_ASN1_INTEGER(bp, a->crlNum)) goto err; 171 if (i2a_ASN1_INTEGER(bp, a->crlNum) <= 0) goto err;
164 if (!BIO_write(bp, "\n", 1)) goto err; 172 if (BIO_write(bp, "\n", 1) <= 0) goto err;
165 } 173 }
166 if (a->crlTime) 174 if (a->crlTime)
167 { 175 {
168 if (!BIO_printf(bp, "%*scrlTime: ", ind, "")) goto err; 176 if (BIO_printf(bp, "%*scrlTime: ", ind, "") <= 0) goto err;
169 if (!ASN1_GENERALIZEDTIME_print(bp, a->crlTime)) goto err; 177 if (!ASN1_GENERALIZEDTIME_print(bp, a->crlTime)) goto err;
170 if (!BIO_write(bp, "\n", 1)) goto err; 178 if (BIO_write(bp, "\n", 1) <= 0) goto err;
171 } 179 }
172 return 1; 180 return 1;
173 err: 181 err:
174 return 0; 182 return 0;
175} 183}
176 184
177static int i2r_ocsp_acutoff(X509V3_EXT_METHOD *method, void *cutoff, BIO *bp, int ind) 185static int i2r_ocsp_acutoff(const X509V3_EXT_METHOD *method, void *cutoff,
186 BIO *bp, int ind)
178{ 187{
179 if (!BIO_printf(bp, "%*s", ind, "")) return 0; 188 if (BIO_printf(bp, "%*s", ind, "") <= 0) return 0;
180 if(!ASN1_GENERALIZEDTIME_print(bp, cutoff)) return 0; 189 if(!ASN1_GENERALIZEDTIME_print(bp, cutoff)) return 0;
181 return 1; 190 return 1;
182} 191}
183 192
184 193
185static int i2r_object(X509V3_EXT_METHOD *method, void *oid, BIO *bp, int ind) 194static int i2r_object(const X509V3_EXT_METHOD *method, void *oid, BIO *bp,
195 int ind)
186{ 196{
187 if (!BIO_printf(bp, "%*s", ind, "")) return 0; 197 if (BIO_printf(bp, "%*s", ind, "") <= 0) return 0;
188 if(!i2a_ASN1_OBJECT(bp, oid)) return 0; 198 if(i2a_ASN1_OBJECT(bp, oid) <= 0) return 0;
189 return 1; 199 return 1;
190} 200}
191 201
@@ -232,7 +242,8 @@ static void ocsp_nonce_free(void *a)
232 M_ASN1_OCTET_STRING_free(a); 242 M_ASN1_OCTET_STRING_free(a);
233} 243}
234 244
235static int i2r_ocsp_nonce(X509V3_EXT_METHOD *method, void *nonce, BIO *out, int indent) 245static int i2r_ocsp_nonce(const X509V3_EXT_METHOD *method, void *nonce,
246 BIO *out, int indent)
236{ 247{
237 if(BIO_printf(out, "%*s", indent, "") <= 0) return 0; 248 if(BIO_printf(out, "%*s", indent, "") <= 0) return 0;
238 if(i2a_ASN1_STRING(out, nonce, V_ASN1_OCTET_STRING) <= 0) return 0; 249 if(i2a_ASN1_STRING(out, nonce, V_ASN1_OCTET_STRING) <= 0) return 0;
@@ -241,17 +252,20 @@ static int i2r_ocsp_nonce(X509V3_EXT_METHOD *method, void *nonce, BIO *out, int
241 252
242/* Nocheck is just a single NULL. Don't print anything and always set it */ 253/* Nocheck is just a single NULL. Don't print anything and always set it */
243 254
244static int i2r_ocsp_nocheck(X509V3_EXT_METHOD *method, void *nocheck, BIO *out, int indent) 255static int i2r_ocsp_nocheck(const X509V3_EXT_METHOD *method, void *nocheck,
256 BIO *out, int indent)
245{ 257{
246 return 1; 258 return 1;
247} 259}
248 260
249static void *s2i_ocsp_nocheck(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, const char *str) 261static void *s2i_ocsp_nocheck(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
262 const char *str)
250{ 263{
251 return ASN1_NULL_new(); 264 return ASN1_NULL_new();
252} 265}
253 266
254static int i2r_ocsp_serviceloc(X509V3_EXT_METHOD *method, void *in, BIO *bp, int ind) 267static int i2r_ocsp_serviceloc(const X509V3_EXT_METHOD *method, void *in,
268 BIO *bp, int ind)
255 { 269 {
256 int i; 270 int i;
257 OCSP_SERVICELOC *a = in; 271 OCSP_SERVICELOC *a = in;
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_pci.c b/src/lib/libssl/src/crypto/x509v3/v3_pci.c
index 601211f416..0dcfa004fe 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_pci.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_pci.c
@@ -82,7 +82,7 @@ static int process_pci_value(CONF_VALUE *val,
82 { 82 {
83 if (*language) 83 if (*language)
84 { 84 {
85 X509V3err(X509V3_F_PROCESS_PCI_VALUE,X509V3_R_POLICY_LANGUAGE_ALREADTY_DEFINED); 85 X509V3err(X509V3_F_PROCESS_PCI_VALUE,X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED);
86 X509V3_conf_err(val); 86 X509V3_conf_err(val);
87 return 0; 87 return 0;
88 } 88 }
@@ -97,7 +97,7 @@ static int process_pci_value(CONF_VALUE *val,
97 { 97 {
98 if (*pathlen) 98 if (*pathlen)
99 { 99 {
100 X509V3err(X509V3_F_PROCESS_PCI_VALUE,X509V3_R_POLICY_PATH_LENGTH_ALREADTY_DEFINED); 100 X509V3err(X509V3_F_PROCESS_PCI_VALUE,X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED);
101 X509V3_conf_err(val); 101 X509V3_conf_err(val);
102 return 0; 102 return 0;
103 } 103 }
@@ -128,7 +128,12 @@ static int process_pci_value(CONF_VALUE *val,
128 unsigned char *tmp_data2 = 128 unsigned char *tmp_data2 =
129 string_to_hex(val->value + 4, &val_len); 129 string_to_hex(val->value + 4, &val_len);
130 130
131 if (!tmp_data2) goto err; 131 if (!tmp_data2)
132 {
133 X509V3err(X509V3_F_PROCESS_PCI_VALUE,X509V3_R_ILLEGAL_HEX_DIGIT);
134 X509V3_conf_err(val);
135 goto err;
136 }
132 137
133 tmp_data = OPENSSL_realloc((*policy)->data, 138 tmp_data = OPENSSL_realloc((*policy)->data,
134 (*policy)->length + val_len + 1); 139 (*policy)->length + val_len + 1);
@@ -140,6 +145,17 @@ static int process_pci_value(CONF_VALUE *val,
140 (*policy)->length += val_len; 145 (*policy)->length += val_len;
141 (*policy)->data[(*policy)->length] = '\0'; 146 (*policy)->data[(*policy)->length] = '\0';
142 } 147 }
148 else
149 {
150 OPENSSL_free(tmp_data2);
151 /* realloc failure implies the original data space is b0rked too! */
152 (*policy)->data = NULL;
153 (*policy)->length = 0;
154 X509V3err(X509V3_F_PROCESS_PCI_VALUE,ERR_R_MALLOC_FAILURE);
155 X509V3_conf_err(val);
156 goto err;
157 }
158 OPENSSL_free(tmp_data2);
143 } 159 }
144 else if (strncmp(val->value, "file:", 5) == 0) 160 else if (strncmp(val->value, "file:", 5) == 0)
145 { 161 {
@@ -169,6 +185,7 @@ static int process_pci_value(CONF_VALUE *val,
169 (*policy)->length += n; 185 (*policy)->length += n;
170 (*policy)->data[(*policy)->length] = '\0'; 186 (*policy)->data[(*policy)->length] = '\0';
171 } 187 }
188 BIO_free_all(b);
172 189
173 if (n < 0) 190 if (n < 0)
174 { 191 {
@@ -190,6 +207,15 @@ static int process_pci_value(CONF_VALUE *val,
190 (*policy)->length += val_len; 207 (*policy)->length += val_len;
191 (*policy)->data[(*policy)->length] = '\0'; 208 (*policy)->data[(*policy)->length] = '\0';
192 } 209 }
210 else
211 {
212 /* realloc failure implies the original data space is b0rked too! */
213 (*policy)->data = NULL;
214 (*policy)->length = 0;
215 X509V3err(X509V3_F_PROCESS_PCI_VALUE,ERR_R_MALLOC_FAILURE);
216 X509V3_conf_err(val);
217 goto err;
218 }
193 } 219 }
194 else 220 else
195 { 221 {
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_prn.c b/src/lib/libssl/src/crypto/x509v3/v3_prn.c
index c1bb17f105..3146218708 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_prn.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_prn.c
@@ -110,7 +110,7 @@ int X509V3_EXT_print(BIO *out, X509_EXTENSION *ext, unsigned long flag, int inde
110 void *ext_str = NULL; 110 void *ext_str = NULL;
111 char *value = NULL; 111 char *value = NULL;
112 const unsigned char *p; 112 const unsigned char *p;
113 X509V3_EXT_METHOD *method; 113 const X509V3_EXT_METHOD *method;
114 STACK_OF(CONF_VALUE) *nval = NULL; 114 STACK_OF(CONF_VALUE) *nval = NULL;
115 int ok = 1; 115 int ok = 1;
116 116
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_purp.c b/src/lib/libssl/src/crypto/x509v3/v3_purp.c
index e18751e01c..181bd34979 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_purp.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_purp.c
@@ -71,6 +71,7 @@ static int purpose_smime(const X509 *x, int ca);
71static int check_purpose_smime_sign(const X509_PURPOSE *xp, const X509 *x, int ca); 71static int check_purpose_smime_sign(const X509_PURPOSE *xp, const X509 *x, int ca);
72static int check_purpose_smime_encrypt(const X509_PURPOSE *xp, const X509 *x, int ca); 72static int check_purpose_smime_encrypt(const X509_PURPOSE *xp, const X509 *x, int ca);
73static int check_purpose_crl_sign(const X509_PURPOSE *xp, const X509 *x, int ca); 73static int check_purpose_crl_sign(const X509_PURPOSE *xp, const X509 *x, int ca);
74static int check_purpose_timestamp_sign(const X509_PURPOSE *xp, const X509 *x, int ca);
74static int no_check(const X509_PURPOSE *xp, const X509 *x, int ca); 75static int no_check(const X509_PURPOSE *xp, const X509 *x, int ca);
75static int ocsp_helper(const X509_PURPOSE *xp, const X509 *x, int ca); 76static int ocsp_helper(const X509_PURPOSE *xp, const X509 *x, int ca);
76 77
@@ -87,6 +88,7 @@ static X509_PURPOSE xstandard[] = {
87 {X509_PURPOSE_CRL_SIGN, X509_TRUST_COMPAT, 0, check_purpose_crl_sign, "CRL signing", "crlsign", NULL}, 88 {X509_PURPOSE_CRL_SIGN, X509_TRUST_COMPAT, 0, check_purpose_crl_sign, "CRL signing", "crlsign", NULL},
88 {X509_PURPOSE_ANY, X509_TRUST_DEFAULT, 0, no_check, "Any Purpose", "any", NULL}, 89 {X509_PURPOSE_ANY, X509_TRUST_DEFAULT, 0, no_check, "Any Purpose", "any", NULL},
89 {X509_PURPOSE_OCSP_HELPER, X509_TRUST_COMPAT, 0, ocsp_helper, "OCSP helper", "ocsphelper", NULL}, 90 {X509_PURPOSE_OCSP_HELPER, X509_TRUST_COMPAT, 0, ocsp_helper, "OCSP helper", "ocsphelper", NULL},
91 {X509_PURPOSE_TIMESTAMP_SIGN, X509_TRUST_TSA, 0, check_purpose_timestamp_sign, "Time Stamp signing", "timestampsign", NULL},
90}; 92};
91 93
92#define X509_PURPOSE_COUNT (sizeof(xstandard)/sizeof(X509_PURPOSE)) 94#define X509_PURPOSE_COUNT (sizeof(xstandard)/sizeof(X509_PURPOSE))
@@ -265,11 +267,14 @@ int X509_PURPOSE_get_trust(X509_PURPOSE *xp)
265 return xp->trust; 267 return xp->trust;
266} 268}
267 269
268static int nid_cmp(int *a, int *b) 270static int nid_cmp(const int *a, const int *b)
269 { 271 {
270 return *a - *b; 272 return *a - *b;
271 } 273 }
272 274
275DECLARE_OBJ_BSEARCH_CMP_FN(int, int, nid);
276IMPLEMENT_OBJ_BSEARCH_CMP_FN(int, int, nid);
277
273int X509_supported_extension(X509_EXTENSION *ex) 278int X509_supported_extension(X509_EXTENSION *ex)
274 { 279 {
275 /* This table is a list of the NIDs of supported extensions: 280 /* This table is a list of the NIDs of supported extensions:
@@ -280,7 +285,7 @@ int X509_supported_extension(X509_EXTENSION *ex)
280 * searched using bsearch. 285 * searched using bsearch.
281 */ 286 */
282 287
283 static int supported_nids[] = { 288 static const int supported_nids[] = {
284 NID_netscape_cert_type, /* 71 */ 289 NID_netscape_cert_type, /* 71 */
285 NID_key_usage, /* 83 */ 290 NID_key_usage, /* 83 */
286 NID_subject_alt_name, /* 85 */ 291 NID_subject_alt_name, /* 85 */
@@ -292,24 +297,62 @@ int X509_supported_extension(X509_EXTENSION *ex)
292 NID_sbgp_autonomousSysNum, /* 291 */ 297 NID_sbgp_autonomousSysNum, /* 291 */
293#endif 298#endif
294 NID_policy_constraints, /* 401 */ 299 NID_policy_constraints, /* 401 */
295 NID_proxyCertInfo, /* 661 */ 300 NID_proxyCertInfo, /* 663 */
301 NID_name_constraints, /* 666 */
302 NID_policy_mappings, /* 747 */
296 NID_inhibit_any_policy /* 748 */ 303 NID_inhibit_any_policy /* 748 */
297 }; 304 };
298 305
299 int ex_nid; 306 int ex_nid = OBJ_obj2nid(X509_EXTENSION_get_object(ex));
300
301 ex_nid = OBJ_obj2nid(X509_EXTENSION_get_object(ex));
302 307
303 if (ex_nid == NID_undef) 308 if (ex_nid == NID_undef)
304 return 0; 309 return 0;
305 310
306 if (OBJ_bsearch((char *)&ex_nid, (char *)supported_nids, 311 if (OBJ_bsearch_nid(&ex_nid, supported_nids,
307 sizeof(supported_nids)/sizeof(int), sizeof(int), 312 sizeof(supported_nids)/sizeof(int)))
308 (int (*)(const void *, const void *))nid_cmp))
309 return 1; 313 return 1;
310 return 0; 314 return 0;
311 } 315 }
312 316
317static void setup_dp(X509 *x, DIST_POINT *dp)
318 {
319 X509_NAME *iname = NULL;
320 int i;
321 if (dp->reasons)
322 {
323 if (dp->reasons->length > 0)
324 dp->dp_reasons = dp->reasons->data[0];
325 if (dp->reasons->length > 1)
326 dp->dp_reasons |= (dp->reasons->data[1] << 8);
327 dp->dp_reasons &= CRLDP_ALL_REASONS;
328 }
329 else
330 dp->dp_reasons = CRLDP_ALL_REASONS;
331 if (!dp->distpoint || (dp->distpoint->type != 1))
332 return;
333 for (i = 0; i < sk_GENERAL_NAME_num(dp->CRLissuer); i++)
334 {
335 GENERAL_NAME *gen = sk_GENERAL_NAME_value(dp->CRLissuer, i);
336 if (gen->type == GEN_DIRNAME)
337 {
338 iname = gen->d.directoryName;
339 break;
340 }
341 }
342 if (!iname)
343 iname = X509_get_issuer_name(x);
344
345 DIST_POINT_set_dpname(dp->distpoint, iname);
346
347 }
348
349static void setup_crldp(X509 *x)
350 {
351 int i;
352 x->crldp = X509_get_ext_d2i(x, NID_crl_distribution_points, NULL, NULL);
353 for (i = 0; i < sk_DIST_POINT_num(x->crldp); i++)
354 setup_dp(x, sk_DIST_POINT_value(x->crldp, i));
355 }
313 356
314static void x509v3_cache_extensions(X509 *x) 357static void x509v3_cache_extensions(X509 *x)
315{ 358{
@@ -417,16 +460,25 @@ static void x509v3_cache_extensions(X509 *x)
417 } 460 }
418 x->skid =X509_get_ext_d2i(x, NID_subject_key_identifier, NULL, NULL); 461 x->skid =X509_get_ext_d2i(x, NID_subject_key_identifier, NULL, NULL);
419 x->akid =X509_get_ext_d2i(x, NID_authority_key_identifier, NULL, NULL); 462 x->akid =X509_get_ext_d2i(x, NID_authority_key_identifier, NULL, NULL);
463 x->altname = X509_get_ext_d2i(x, NID_subject_alt_name, NULL, NULL);
464 x->nc = X509_get_ext_d2i(x, NID_name_constraints, &i, NULL);
465 if (!x->nc && (i != -1))
466 x->ex_flags |= EXFLAG_INVALID;
467 setup_crldp(x);
468
420#ifndef OPENSSL_NO_RFC3779 469#ifndef OPENSSL_NO_RFC3779
421 x->rfc3779_addr =X509_get_ext_d2i(x, NID_sbgp_ipAddrBlock, NULL, NULL); 470 x->rfc3779_addr =X509_get_ext_d2i(x, NID_sbgp_ipAddrBlock, NULL, NULL);
422 x->rfc3779_asid =X509_get_ext_d2i(x, NID_sbgp_autonomousSysNum, 471 x->rfc3779_asid =X509_get_ext_d2i(x, NID_sbgp_autonomousSysNum,
423 NULL, NULL); 472 NULL, NULL);
424#endif 473#endif
425 for (i = 0; i < X509_get_ext_count(x); i++) 474 for (i = 0; i < X509_get_ext_count(x); i++)
426 { 475 {
427 ex = X509_get_ext(x, i); 476 ex = X509_get_ext(x, i);
428 if (!X509_EXTENSION_get_critical(ex)) 477 if (!X509_EXTENSION_get_critical(ex))
429 continue; 478 continue;
479 if (OBJ_obj2nid(X509_EXTENSION_get_object(ex))
480 == NID_freshest_crl)
481 x->ex_flags |= EXFLAG_FRESHEST;
430 if (!X509_supported_extension(ex)) 482 if (!X509_supported_extension(ex))
431 { 483 {
432 x->ex_flags |= EXFLAG_CRITICAL; 484 x->ex_flags |= EXFLAG_CRITICAL;
@@ -594,6 +646,41 @@ static int ocsp_helper(const X509_PURPOSE *xp, const X509 *x, int ca)
594 return 1; 646 return 1;
595} 647}
596 648
649static int check_purpose_timestamp_sign(const X509_PURPOSE *xp, const X509 *x,
650 int ca)
651{
652 int i_ext;
653
654 /* If ca is true we must return if this is a valid CA certificate. */
655 if (ca) return check_ca(x);
656
657 /*
658 * Check the optional key usage field:
659 * if Key Usage is present, it must be one of digitalSignature
660 * and/or nonRepudiation (other values are not consistent and shall
661 * be rejected).
662 */
663 if ((x->ex_flags & EXFLAG_KUSAGE)
664 && ((x->ex_kusage & ~(KU_NON_REPUDIATION | KU_DIGITAL_SIGNATURE)) ||
665 !(x->ex_kusage & (KU_NON_REPUDIATION | KU_DIGITAL_SIGNATURE))))
666 return 0;
667
668 /* Only time stamp key usage is permitted and it's required. */
669 if (!(x->ex_flags & EXFLAG_XKUSAGE) || x->ex_xkusage != XKU_TIMESTAMP)
670 return 0;
671
672 /* Extended Key Usage MUST be critical */
673 i_ext = X509_get_ext_by_NID((X509 *) x, NID_ext_key_usage, 0);
674 if (i_ext >= 0)
675 {
676 X509_EXTENSION *ext = X509_get_ext((X509 *) x, i_ext);
677 if (!X509_EXTENSION_get_critical(ext))
678 return 0;
679 }
680
681 return 1;
682}
683
597static int no_check(const X509_PURPOSE *xp, const X509 *x, int ca) 684static int no_check(const X509_PURPOSE *xp, const X509 *x, int ca)
598{ 685{
599 return 1; 686 return 1;
@@ -618,39 +705,14 @@ int X509_check_issued(X509 *issuer, X509 *subject)
618 return X509_V_ERR_SUBJECT_ISSUER_MISMATCH; 705 return X509_V_ERR_SUBJECT_ISSUER_MISMATCH;
619 x509v3_cache_extensions(issuer); 706 x509v3_cache_extensions(issuer);
620 x509v3_cache_extensions(subject); 707 x509v3_cache_extensions(subject);
621 if(subject->akid) { 708
622 /* Check key ids (if present) */ 709 if(subject->akid)
623 if(subject->akid->keyid && issuer->skid && 710 {
624 ASN1_OCTET_STRING_cmp(subject->akid->keyid, issuer->skid) ) 711 int ret = X509_check_akid(issuer, subject->akid);
625 return X509_V_ERR_AKID_SKID_MISMATCH; 712 if (ret != X509_V_OK)
626 /* Check serial number */ 713 return ret;
627 if(subject->akid->serial &&
628 ASN1_INTEGER_cmp(X509_get_serialNumber(issuer),
629 subject->akid->serial))
630 return X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH;
631 /* Check issuer name */
632 if(subject->akid->issuer) {
633 /* Ugh, for some peculiar reason AKID includes
634 * SEQUENCE OF GeneralName. So look for a DirName.
635 * There may be more than one but we only take any
636 * notice of the first.
637 */
638 GENERAL_NAMES *gens;
639 GENERAL_NAME *gen;
640 X509_NAME *nm = NULL;
641 int i;
642 gens = subject->akid->issuer;
643 for(i = 0; i < sk_GENERAL_NAME_num(gens); i++) {
644 gen = sk_GENERAL_NAME_value(gens, i);
645 if(gen->type == GEN_DIRNAME) {
646 nm = gen->d.dirn;
647 break;
648 }
649 }
650 if(nm && X509_NAME_cmp(nm, X509_get_issuer_name(issuer)))
651 return X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH;
652 } 714 }
653 } 715
654 if(subject->ex_flags & EXFLAG_PROXY) 716 if(subject->ex_flags & EXFLAG_PROXY)
655 { 717 {
656 if(ku_reject(issuer, KU_DIGITAL_SIGNATURE)) 718 if(ku_reject(issuer, KU_DIGITAL_SIGNATURE))
@@ -661,3 +723,45 @@ int X509_check_issued(X509 *issuer, X509 *subject)
661 return X509_V_OK; 723 return X509_V_OK;
662} 724}
663 725
726int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid)
727 {
728
729 if(!akid)
730 return X509_V_OK;
731
732 /* Check key ids (if present) */
733 if(akid->keyid && issuer->skid &&
734 ASN1_OCTET_STRING_cmp(akid->keyid, issuer->skid) )
735 return X509_V_ERR_AKID_SKID_MISMATCH;
736 /* Check serial number */
737 if(akid->serial &&
738 ASN1_INTEGER_cmp(X509_get_serialNumber(issuer), akid->serial))
739 return X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH;
740 /* Check issuer name */
741 if(akid->issuer)
742 {
743 /* Ugh, for some peculiar reason AKID includes
744 * SEQUENCE OF GeneralName. So look for a DirName.
745 * There may be more than one but we only take any
746 * notice of the first.
747 */
748 GENERAL_NAMES *gens;
749 GENERAL_NAME *gen;
750 X509_NAME *nm = NULL;
751 int i;
752 gens = akid->issuer;
753 for(i = 0; i < sk_GENERAL_NAME_num(gens); i++)
754 {
755 gen = sk_GENERAL_NAME_value(gens, i);
756 if(gen->type == GEN_DIRNAME)
757 {
758 nm = gen->d.dirn;
759 break;
760 }
761 }
762 if(nm && X509_NAME_cmp(nm, X509_get_issuer_name(issuer)))
763 return X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH;
764 }
765 return X509_V_OK;
766 }
767
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_utl.c b/src/lib/libssl/src/crypto/x509v3/v3_utl.c
index 7a45216c00..e030234540 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_utl.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_utl.c
@@ -67,9 +67,9 @@
67 67
68static char *strip_spaces(char *name); 68static char *strip_spaces(char *name);
69static int sk_strcmp(const char * const *a, const char * const *b); 69static int sk_strcmp(const char * const *a, const char * const *b);
70static STACK *get_email(X509_NAME *name, GENERAL_NAMES *gens); 70static STACK_OF(OPENSSL_STRING) *get_email(X509_NAME *name, GENERAL_NAMES *gens);
71static void str_free(void *str); 71static void str_free(OPENSSL_STRING str);
72static int append_ia5(STACK **sk, ASN1_IA5STRING *email); 72static int append_ia5(STACK_OF(OPENSSL_STRING) **sk, ASN1_IA5STRING *email);
73 73
74static int ipv4_from_asc(unsigned char *v4, const char *in); 74static int ipv4_from_asc(unsigned char *v4, const char *in);
75static int ipv6_from_asc(unsigned char *v6, const char *in); 75static int ipv6_from_asc(unsigned char *v6, const char *in);
@@ -360,10 +360,10 @@ static char *strip_spaces(char *name)
360 * @@@ (Contents of buffer are always kept in ASCII, also on EBCDIC machines) 360 * @@@ (Contents of buffer are always kept in ASCII, also on EBCDIC machines)
361 */ 361 */
362 362
363char *hex_to_string(unsigned char *buffer, long len) 363char *hex_to_string(const unsigned char *buffer, long len)
364{ 364{
365 char *tmp, *q; 365 char *tmp, *q;
366 unsigned char *p; 366 const unsigned char *p;
367 int i; 367 int i;
368 const static char hexdig[] = "0123456789ABCDEF"; 368 const static char hexdig[] = "0123456789ABCDEF";
369 if(!buffer || !len) return NULL; 369 if(!buffer || !len) return NULL;
@@ -389,7 +389,7 @@ char *hex_to_string(unsigned char *buffer, long len)
389 * a buffer 389 * a buffer
390 */ 390 */
391 391
392unsigned char *string_to_hex(char *str, long *len) 392unsigned char *string_to_hex(const char *str, long *len)
393{ 393{
394 unsigned char *hexbuf, *q; 394 unsigned char *hexbuf, *q;
395 unsigned char ch, cl, *p; 395 unsigned char ch, cl, *p;
@@ -463,21 +463,23 @@ static int sk_strcmp(const char * const *a, const char * const *b)
463 return strcmp(*a, *b); 463 return strcmp(*a, *b);
464} 464}
465 465
466STACK *X509_get1_email(X509 *x) 466STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x)
467{ 467{
468 GENERAL_NAMES *gens; 468 GENERAL_NAMES *gens;
469 STACK *ret; 469 STACK_OF(OPENSSL_STRING) *ret;
470
470 gens = X509_get_ext_d2i(x, NID_subject_alt_name, NULL, NULL); 471 gens = X509_get_ext_d2i(x, NID_subject_alt_name, NULL, NULL);
471 ret = get_email(X509_get_subject_name(x), gens); 472 ret = get_email(X509_get_subject_name(x), gens);
472 sk_GENERAL_NAME_pop_free(gens, GENERAL_NAME_free); 473 sk_GENERAL_NAME_pop_free(gens, GENERAL_NAME_free);
473 return ret; 474 return ret;
474} 475}
475 476
476STACK *X509_get1_ocsp(X509 *x) 477STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x)
477{ 478{
478 AUTHORITY_INFO_ACCESS *info; 479 AUTHORITY_INFO_ACCESS *info;
479 STACK *ret = NULL; 480 STACK_OF(OPENSSL_STRING) *ret = NULL;
480 int i; 481 int i;
482
481 info = X509_get_ext_d2i(x, NID_info_access, NULL, NULL); 483 info = X509_get_ext_d2i(x, NID_info_access, NULL, NULL);
482 if (!info) 484 if (!info)
483 return NULL; 485 return NULL;
@@ -497,11 +499,12 @@ STACK *X509_get1_ocsp(X509 *x)
497 return ret; 499 return ret;
498} 500}
499 501
500STACK *X509_REQ_get1_email(X509_REQ *x) 502STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x)
501{ 503{
502 GENERAL_NAMES *gens; 504 GENERAL_NAMES *gens;
503 STACK_OF(X509_EXTENSION) *exts; 505 STACK_OF(X509_EXTENSION) *exts;
504 STACK *ret; 506 STACK_OF(OPENSSL_STRING) *ret;
507
505 exts = X509_REQ_get_extensions(x); 508 exts = X509_REQ_get_extensions(x);
506 gens = X509V3_get_d2i(exts, NID_subject_alt_name, NULL, NULL); 509 gens = X509V3_get_d2i(exts, NID_subject_alt_name, NULL, NULL);
507 ret = get_email(X509_REQ_get_subject_name(x), gens); 510 ret = get_email(X509_REQ_get_subject_name(x), gens);
@@ -511,9 +514,9 @@ STACK *X509_REQ_get1_email(X509_REQ *x)
511} 514}
512 515
513 516
514static STACK *get_email(X509_NAME *name, GENERAL_NAMES *gens) 517static STACK_OF(OPENSSL_STRING) *get_email(X509_NAME *name, GENERAL_NAMES *gens)
515{ 518{
516 STACK *ret = NULL; 519 STACK_OF(OPENSSL_STRING) *ret = NULL;
517 X509_NAME_ENTRY *ne; 520 X509_NAME_ENTRY *ne;
518 ASN1_IA5STRING *email; 521 ASN1_IA5STRING *email;
519 GENERAL_NAME *gen; 522 GENERAL_NAME *gen;
@@ -536,23 +539,23 @@ static STACK *get_email(X509_NAME *name, GENERAL_NAMES *gens)
536 return ret; 539 return ret;
537} 540}
538 541
539static void str_free(void *str) 542static void str_free(OPENSSL_STRING str)
540{ 543{
541 OPENSSL_free(str); 544 OPENSSL_free(str);
542} 545}
543 546
544static int append_ia5(STACK **sk, ASN1_IA5STRING *email) 547static int append_ia5(STACK_OF(OPENSSL_STRING) **sk, ASN1_IA5STRING *email)
545{ 548{
546 char *emtmp; 549 char *emtmp;
547 /* First some sanity checks */ 550 /* First some sanity checks */
548 if(email->type != V_ASN1_IA5STRING) return 1; 551 if(email->type != V_ASN1_IA5STRING) return 1;
549 if(!email->data || !email->length) return 1; 552 if(!email->data || !email->length) return 1;
550 if(!*sk) *sk = sk_new(sk_strcmp); 553 if(!*sk) *sk = sk_OPENSSL_STRING_new(sk_strcmp);
551 if(!*sk) return 0; 554 if(!*sk) return 0;
552 /* Don't add duplicates */ 555 /* Don't add duplicates */
553 if(sk_find(*sk, (char *)email->data) != -1) return 1; 556 if(sk_OPENSSL_STRING_find(*sk, (char *)email->data) != -1) return 1;
554 emtmp = BUF_strdup((char *)email->data); 557 emtmp = BUF_strdup((char *)email->data);
555 if(!emtmp || !sk_push(*sk, emtmp)) { 558 if(!emtmp || !sk_OPENSSL_STRING_push(*sk, emtmp)) {
556 X509_email_free(*sk); 559 X509_email_free(*sk);
557 *sk = NULL; 560 *sk = NULL;
558 return 0; 561 return 0;
@@ -560,9 +563,9 @@ static int append_ia5(STACK **sk, ASN1_IA5STRING *email)
560 return 1; 563 return 1;
561} 564}
562 565
563void X509_email_free(STACK *sk) 566void X509_email_free(STACK_OF(OPENSSL_STRING) *sk)
564{ 567{
565 sk_pop_free(sk, str_free); 568 sk_OPENSSL_STRING_pop_free(sk, str_free);
566} 569}
567 570
568/* Convert IP addresses both IPv4 and IPv6 into an 571/* Convert IP addresses both IPv4 and IPv6 into an
diff --git a/src/lib/libssl/src/crypto/x509v3/v3err.c b/src/lib/libssl/src/crypto/x509v3/v3err.c
index d538ad8b80..f9f6f1f91f 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3err.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3err.c
@@ -1,6 +1,6 @@
1/* crypto/x509v3/v3err.c */ 1/* crypto/x509v3/v3err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -70,6 +70,7 @@
70 70
71static ERR_STRING_DATA X509V3_str_functs[]= 71static ERR_STRING_DATA X509V3_str_functs[]=
72 { 72 {
73{ERR_FUNC(X509V3_F_A2I_GENERAL_NAME), "A2I_GENERAL_NAME"},
73{ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_CANONIZE), "ASIDENTIFIERCHOICE_CANONIZE"}, 74{ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_CANONIZE), "ASIDENTIFIERCHOICE_CANONIZE"},
74{ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL), "ASIDENTIFIERCHOICE_IS_CANONICAL"}, 75{ERR_FUNC(X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL), "ASIDENTIFIERCHOICE_IS_CANONICAL"},
75{ERR_FUNC(X509V3_F_COPY_EMAIL), "COPY_EMAIL"}, 76{ERR_FUNC(X509V3_F_COPY_EMAIL), "COPY_EMAIL"},
@@ -79,6 +80,7 @@ static ERR_STRING_DATA X509V3_str_functs[]=
79{ERR_FUNC(X509V3_F_DO_EXT_I2D), "DO_EXT_I2D"}, 80{ERR_FUNC(X509V3_F_DO_EXT_I2D), "DO_EXT_I2D"},
80{ERR_FUNC(X509V3_F_DO_EXT_NCONF), "DO_EXT_NCONF"}, 81{ERR_FUNC(X509V3_F_DO_EXT_NCONF), "DO_EXT_NCONF"},
81{ERR_FUNC(X509V3_F_DO_I2V_NAME_CONSTRAINTS), "DO_I2V_NAME_CONSTRAINTS"}, 82{ERR_FUNC(X509V3_F_DO_I2V_NAME_CONSTRAINTS), "DO_I2V_NAME_CONSTRAINTS"},
83{ERR_FUNC(X509V3_F_GNAMES_FROM_SECTNAME), "GNAMES_FROM_SECTNAME"},
82{ERR_FUNC(X509V3_F_HEX_TO_STRING), "hex_to_string"}, 84{ERR_FUNC(X509V3_F_HEX_TO_STRING), "hex_to_string"},
83{ERR_FUNC(X509V3_F_I2S_ASN1_ENUMERATED), "i2s_ASN1_ENUMERATED"}, 85{ERR_FUNC(X509V3_F_I2S_ASN1_ENUMERATED), "i2s_ASN1_ENUMERATED"},
84{ERR_FUNC(X509V3_F_I2S_ASN1_IA5STRING), "I2S_ASN1_IA5STRING"}, 86{ERR_FUNC(X509V3_F_I2S_ASN1_IA5STRING), "I2S_ASN1_IA5STRING"},
@@ -95,6 +97,7 @@ static ERR_STRING_DATA X509V3_str_functs[]=
95{ERR_FUNC(X509V3_F_S2I_ASN1_OCTET_STRING), "s2i_ASN1_OCTET_STRING"}, 97{ERR_FUNC(X509V3_F_S2I_ASN1_OCTET_STRING), "s2i_ASN1_OCTET_STRING"},
96{ERR_FUNC(X509V3_F_S2I_ASN1_SKEY_ID), "S2I_ASN1_SKEY_ID"}, 98{ERR_FUNC(X509V3_F_S2I_ASN1_SKEY_ID), "S2I_ASN1_SKEY_ID"},
97{ERR_FUNC(X509V3_F_S2I_SKEY_ID), "S2I_SKEY_ID"}, 99{ERR_FUNC(X509V3_F_S2I_SKEY_ID), "S2I_SKEY_ID"},
100{ERR_FUNC(X509V3_F_SET_DIST_POINT_NAME), "SET_DIST_POINT_NAME"},
98{ERR_FUNC(X509V3_F_STRING_TO_HEX), "string_to_hex"}, 101{ERR_FUNC(X509V3_F_STRING_TO_HEX), "string_to_hex"},
99{ERR_FUNC(X509V3_F_SXNET_ADD_ID_ASC), "SXNET_add_id_asc"}, 102{ERR_FUNC(X509V3_F_SXNET_ADD_ID_ASC), "SXNET_add_id_asc"},
100{ERR_FUNC(X509V3_F_SXNET_ADD_ID_INTEGER), "SXNET_add_id_INTEGER"}, 103{ERR_FUNC(X509V3_F_SXNET_ADD_ID_INTEGER), "SXNET_add_id_INTEGER"},
@@ -110,6 +113,7 @@ static ERR_STRING_DATA X509V3_str_functs[]=
110{ERR_FUNC(X509V3_F_V2I_EXTENDED_KEY_USAGE), "V2I_EXTENDED_KEY_USAGE"}, 113{ERR_FUNC(X509V3_F_V2I_EXTENDED_KEY_USAGE), "V2I_EXTENDED_KEY_USAGE"},
111{ERR_FUNC(X509V3_F_V2I_GENERAL_NAMES), "v2i_GENERAL_NAMES"}, 114{ERR_FUNC(X509V3_F_V2I_GENERAL_NAMES), "v2i_GENERAL_NAMES"},
112{ERR_FUNC(X509V3_F_V2I_GENERAL_NAME_EX), "v2i_GENERAL_NAME_ex"}, 115{ERR_FUNC(X509V3_F_V2I_GENERAL_NAME_EX), "v2i_GENERAL_NAME_ex"},
116{ERR_FUNC(X509V3_F_V2I_IDP), "V2I_IDP"},
113{ERR_FUNC(X509V3_F_V2I_IPADDRBLOCKS), "V2I_IPADDRBLOCKS"}, 117{ERR_FUNC(X509V3_F_V2I_IPADDRBLOCKS), "V2I_IPADDRBLOCKS"},
114{ERR_FUNC(X509V3_F_V2I_ISSUER_ALT), "V2I_ISSUER_ALT"}, 118{ERR_FUNC(X509V3_F_V2I_ISSUER_ALT), "V2I_ISSUER_ALT"},
115{ERR_FUNC(X509V3_F_V2I_NAME_CONSTRAINTS), "V2I_NAME_CONSTRAINTS"}, 119{ERR_FUNC(X509V3_F_V2I_NAME_CONSTRAINTS), "V2I_NAME_CONSTRAINTS"},
@@ -141,6 +145,7 @@ static ERR_STRING_DATA X509V3_str_reasons[]=
141{ERR_REASON(X509V3_R_BN_DEC2BN_ERROR) ,"bn dec2bn error"}, 145{ERR_REASON(X509V3_R_BN_DEC2BN_ERROR) ,"bn dec2bn error"},
142{ERR_REASON(X509V3_R_BN_TO_ASN1_INTEGER_ERROR),"bn to asn1 integer error"}, 146{ERR_REASON(X509V3_R_BN_TO_ASN1_INTEGER_ERROR),"bn to asn1 integer error"},
143{ERR_REASON(X509V3_R_DIRNAME_ERROR) ,"dirname error"}, 147{ERR_REASON(X509V3_R_DIRNAME_ERROR) ,"dirname error"},
148{ERR_REASON(X509V3_R_DISTPOINT_ALREADY_SET),"distpoint already set"},
144{ERR_REASON(X509V3_R_DUPLICATE_ZONE_ID) ,"duplicate zone id"}, 149{ERR_REASON(X509V3_R_DUPLICATE_ZONE_ID) ,"duplicate zone id"},
145{ERR_REASON(X509V3_R_ERROR_CONVERTING_ZONE),"error converting zone"}, 150{ERR_REASON(X509V3_R_ERROR_CONVERTING_ZONE),"error converting zone"},
146{ERR_REASON(X509V3_R_ERROR_CREATING_EXTENSION),"error creating extension"}, 151{ERR_REASON(X509V3_R_ERROR_CREATING_EXTENSION),"error creating extension"},
@@ -154,6 +159,7 @@ static ERR_STRING_DATA X509V3_str_reasons[]=
154{ERR_REASON(X509V3_R_ILLEGAL_EMPTY_EXTENSION),"illegal empty extension"}, 159{ERR_REASON(X509V3_R_ILLEGAL_EMPTY_EXTENSION),"illegal empty extension"},
155{ERR_REASON(X509V3_R_ILLEGAL_HEX_DIGIT) ,"illegal hex digit"}, 160{ERR_REASON(X509V3_R_ILLEGAL_HEX_DIGIT) ,"illegal hex digit"},
156{ERR_REASON(X509V3_R_INCORRECT_POLICY_SYNTAX_TAG),"incorrect policy syntax tag"}, 161{ERR_REASON(X509V3_R_INCORRECT_POLICY_SYNTAX_TAG),"incorrect policy syntax tag"},
162{ERR_REASON(X509V3_R_INVALID_MULTIPLE_RDNS),"invalid multiple rdns"},
157{ERR_REASON(X509V3_R_INVALID_ASNUMBER) ,"invalid asnumber"}, 163{ERR_REASON(X509V3_R_INVALID_ASNUMBER) ,"invalid asnumber"},
158{ERR_REASON(X509V3_R_INVALID_ASRANGE) ,"invalid asrange"}, 164{ERR_REASON(X509V3_R_INVALID_ASRANGE) ,"invalid asrange"},
159{ERR_REASON(X509V3_R_INVALID_BOOLEAN_STRING),"invalid boolean string"}, 165{ERR_REASON(X509V3_R_INVALID_BOOLEAN_STRING),"invalid boolean string"},
@@ -187,9 +193,9 @@ static ERR_STRING_DATA X509V3_str_reasons[]=
187{ERR_REASON(X509V3_R_ODD_NUMBER_OF_DIGITS),"odd number of digits"}, 193{ERR_REASON(X509V3_R_ODD_NUMBER_OF_DIGITS),"odd number of digits"},
188{ERR_REASON(X509V3_R_OPERATION_NOT_DEFINED),"operation not defined"}, 194{ERR_REASON(X509V3_R_OPERATION_NOT_DEFINED),"operation not defined"},
189{ERR_REASON(X509V3_R_OTHERNAME_ERROR) ,"othername error"}, 195{ERR_REASON(X509V3_R_OTHERNAME_ERROR) ,"othername error"},
190{ERR_REASON(X509V3_R_POLICY_LANGUAGE_ALREADTY_DEFINED),"policy language alreadty defined"}, 196{ERR_REASON(X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED),"policy language already defined"},
191{ERR_REASON(X509V3_R_POLICY_PATH_LENGTH) ,"policy path length"}, 197{ERR_REASON(X509V3_R_POLICY_PATH_LENGTH) ,"policy path length"},
192{ERR_REASON(X509V3_R_POLICY_PATH_LENGTH_ALREADTY_DEFINED),"policy path length alreadty defined"}, 198{ERR_REASON(X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED),"policy path length already defined"},
193{ERR_REASON(X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED),"policy syntax not currently supported"}, 199{ERR_REASON(X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED),"policy syntax not currently supported"},
194{ERR_REASON(X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY),"policy when proxy language requires no policy"}, 200{ERR_REASON(X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY),"policy when proxy language requires no policy"},
195{ERR_REASON(X509V3_R_SECTION_NOT_FOUND) ,"section not found"}, 201{ERR_REASON(X509V3_R_SECTION_NOT_FOUND) ,"section not found"},
@@ -200,6 +206,7 @@ static ERR_STRING_DATA X509V3_str_reasons[]=
200{ERR_REASON(X509V3_R_UNKNOWN_EXTENSION_NAME),"unknown extension name"}, 206{ERR_REASON(X509V3_R_UNKNOWN_EXTENSION_NAME),"unknown extension name"},
201{ERR_REASON(X509V3_R_UNKNOWN_OPTION) ,"unknown option"}, 207{ERR_REASON(X509V3_R_UNKNOWN_OPTION) ,"unknown option"},
202{ERR_REASON(X509V3_R_UNSUPPORTED_OPTION) ,"unsupported option"}, 208{ERR_REASON(X509V3_R_UNSUPPORTED_OPTION) ,"unsupported option"},
209{ERR_REASON(X509V3_R_UNSUPPORTED_TYPE) ,"unsupported type"},
203{ERR_REASON(X509V3_R_USER_TOO_LONG) ,"user too long"}, 210{ERR_REASON(X509V3_R_USER_TOO_LONG) ,"user too long"},
204{0,NULL} 211{0,NULL}
205 }; 212 };
diff --git a/src/lib/libssl/src/crypto/x509v3/x509v3.h b/src/lib/libssl/src/crypto/x509v3/x509v3.h
index 9ef83da755..b308abe7cd 100644
--- a/src/lib/libssl/src/crypto/x509v3/x509v3.h
+++ b/src/lib/libssl/src/crypto/x509v3/x509v3.h
@@ -76,12 +76,19 @@ typedef void * (*X509V3_EXT_NEW)(void);
76typedef void (*X509V3_EXT_FREE)(void *); 76typedef void (*X509V3_EXT_FREE)(void *);
77typedef void * (*X509V3_EXT_D2I)(void *, const unsigned char ** , long); 77typedef void * (*X509V3_EXT_D2I)(void *, const unsigned char ** , long);
78typedef int (*X509V3_EXT_I2D)(void *, unsigned char **); 78typedef int (*X509V3_EXT_I2D)(void *, unsigned char **);
79typedef STACK_OF(CONF_VALUE) * (*X509V3_EXT_I2V)(struct v3_ext_method *method, void *ext, STACK_OF(CONF_VALUE) *extlist); 79typedef STACK_OF(CONF_VALUE) *
80typedef void * (*X509V3_EXT_V2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, STACK_OF(CONF_VALUE) *values); 80 (*X509V3_EXT_I2V)(const struct v3_ext_method *method, void *ext,
81typedef char * (*X509V3_EXT_I2S)(struct v3_ext_method *method, void *ext); 81 STACK_OF(CONF_VALUE) *extlist);
82typedef void * (*X509V3_EXT_S2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, const char *str); 82typedef void * (*X509V3_EXT_V2I)(const struct v3_ext_method *method,
83typedef int (*X509V3_EXT_I2R)(struct v3_ext_method *method, void *ext, BIO *out, int indent); 83 struct v3_ext_ctx *ctx,
84typedef void * (*X509V3_EXT_R2I)(struct v3_ext_method *method, struct v3_ext_ctx *ctx, const char *str); 84 STACK_OF(CONF_VALUE) *values);
85typedef char * (*X509V3_EXT_I2S)(const struct v3_ext_method *method, void *ext);
86typedef void * (*X509V3_EXT_S2I)(const struct v3_ext_method *method,
87 struct v3_ext_ctx *ctx, const char *str);
88typedef int (*X509V3_EXT_I2R)(const struct v3_ext_method *method, void *ext,
89 BIO *out, int indent);
90typedef void * (*X509V3_EXT_R2I)(const struct v3_ext_method *method,
91 struct v3_ext_ctx *ctx, const char *str);
85 92
86/* V3 extension structure */ 93/* V3 extension structure */
87 94
@@ -220,24 +227,41 @@ union {
220 GENERAL_NAMES *fullname; 227 GENERAL_NAMES *fullname;
221 STACK_OF(X509_NAME_ENTRY) *relativename; 228 STACK_OF(X509_NAME_ENTRY) *relativename;
222} name; 229} name;
230/* If relativename then this contains the full distribution point name */
231X509_NAME *dpname;
223} DIST_POINT_NAME; 232} DIST_POINT_NAME;
224 233/* All existing reasons */
225typedef struct DIST_POINT_st { 234#define CRLDP_ALL_REASONS 0x807f
235
236#define CRL_REASON_NONE -1
237#define CRL_REASON_UNSPECIFIED 0
238#define CRL_REASON_KEY_COMPROMISE 1
239#define CRL_REASON_CA_COMPROMISE 2
240#define CRL_REASON_AFFILIATION_CHANGED 3
241#define CRL_REASON_SUPERSEDED 4
242#define CRL_REASON_CESSATION_OF_OPERATION 5
243#define CRL_REASON_CERTIFICATE_HOLD 6
244#define CRL_REASON_REMOVE_FROM_CRL 8
245#define CRL_REASON_PRIVILEGE_WITHDRAWN 9
246#define CRL_REASON_AA_COMPROMISE 10
247
248struct DIST_POINT_st {
226DIST_POINT_NAME *distpoint; 249DIST_POINT_NAME *distpoint;
227ASN1_BIT_STRING *reasons; 250ASN1_BIT_STRING *reasons;
228GENERAL_NAMES *CRLissuer; 251GENERAL_NAMES *CRLissuer;
229} DIST_POINT; 252int dp_reasons;
253};
230 254
231typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; 255typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS;
232 256
233DECLARE_STACK_OF(DIST_POINT) 257DECLARE_STACK_OF(DIST_POINT)
234DECLARE_ASN1_SET_OF(DIST_POINT) 258DECLARE_ASN1_SET_OF(DIST_POINT)
235 259
236typedef struct AUTHORITY_KEYID_st { 260struct AUTHORITY_KEYID_st {
237ASN1_OCTET_STRING *keyid; 261ASN1_OCTET_STRING *keyid;
238GENERAL_NAMES *issuer; 262GENERAL_NAMES *issuer;
239ASN1_INTEGER *serial; 263ASN1_INTEGER *serial;
240} AUTHORITY_KEYID; 264};
241 265
242/* Strong extranet structures */ 266/* Strong extranet structures */
243 267
@@ -303,10 +327,10 @@ typedef struct GENERAL_SUBTREE_st {
303 327
304DECLARE_STACK_OF(GENERAL_SUBTREE) 328DECLARE_STACK_OF(GENERAL_SUBTREE)
305 329
306typedef struct NAME_CONSTRAINTS_st { 330struct NAME_CONSTRAINTS_st {
307 STACK_OF(GENERAL_SUBTREE) *permittedSubtrees; 331 STACK_OF(GENERAL_SUBTREE) *permittedSubtrees;
308 STACK_OF(GENERAL_SUBTREE) *excludedSubtrees; 332 STACK_OF(GENERAL_SUBTREE) *excludedSubtrees;
309} NAME_CONSTRAINTS; 333};
310 334
311typedef struct POLICY_CONSTRAINTS_st { 335typedef struct POLICY_CONSTRAINTS_st {
312 ASN1_INTEGER *requireExplicitPolicy; 336 ASN1_INTEGER *requireExplicitPolicy;
@@ -329,6 +353,31 @@ typedef struct PROXY_CERT_INFO_EXTENSION_st
329DECLARE_ASN1_FUNCTIONS(PROXY_POLICY) 353DECLARE_ASN1_FUNCTIONS(PROXY_POLICY)
330DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION) 354DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION)
331 355
356struct ISSUING_DIST_POINT_st
357 {
358 DIST_POINT_NAME *distpoint;
359 int onlyuser;
360 int onlyCA;
361 ASN1_BIT_STRING *onlysomereasons;
362 int indirectCRL;
363 int onlyattr;
364 };
365
366/* Values in idp_flags field */
367/* IDP present */
368#define IDP_PRESENT 0x1
369/* IDP values inconsistent */
370#define IDP_INVALID 0x2
371/* onlyuser true */
372#define IDP_ONLYUSER 0x4
373/* onlyCA true */
374#define IDP_ONLYCA 0x8
375/* onlyattr true */
376#define IDP_ONLYATTR 0x10
377/* indirectCRL true */
378#define IDP_INDIRECT 0x20
379/* onlysomereasons present */
380#define IDP_REASONS 0x40
332 381
333#define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \ 382#define X509V3_conf_err(val) ERR_add_error_data(6, "section:", val->section, \
334",name:", val->name, ",value:", val->value); 383",name:", val->name, ",value:", val->value);
@@ -373,6 +422,7 @@ DECLARE_ASN1_FUNCTIONS(PROXY_CERT_INFO_EXTENSION)
373#define EXFLAG_PROXY 0x400 422#define EXFLAG_PROXY 0x400
374 423
375#define EXFLAG_INVALID_POLICY 0x800 424#define EXFLAG_INVALID_POLICY 0x800
425#define EXFLAG_FRESHEST 0x1000
376 426
377#define KU_DIGITAL_SIGNATURE 0x0080 427#define KU_DIGITAL_SIGNATURE 0x0080
378#define KU_NON_REPUDIATION 0x0040 428#define KU_NON_REPUDIATION 0x0040
@@ -424,9 +474,10 @@ typedef struct x509_purpose_st {
424#define X509_PURPOSE_CRL_SIGN 6 474#define X509_PURPOSE_CRL_SIGN 6
425#define X509_PURPOSE_ANY 7 475#define X509_PURPOSE_ANY 7
426#define X509_PURPOSE_OCSP_HELPER 8 476#define X509_PURPOSE_OCSP_HELPER 8
477#define X509_PURPOSE_TIMESTAMP_SIGN 9
427 478
428#define X509_PURPOSE_MIN 1 479#define X509_PURPOSE_MIN 1
429#define X509_PURPOSE_MAX 8 480#define X509_PURPOSE_MAX 9
430 481
431/* Flags for X509V3_EXT_print() */ 482/* Flags for X509V3_EXT_print() */
432 483
@@ -471,6 +522,9 @@ DECLARE_ASN1_FUNCTIONS(AUTHORITY_KEYID)
471DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD) 522DECLARE_ASN1_FUNCTIONS(PKEY_USAGE_PERIOD)
472 523
473DECLARE_ASN1_FUNCTIONS(GENERAL_NAME) 524DECLARE_ASN1_FUNCTIONS(GENERAL_NAME)
525GENERAL_NAME *GENERAL_NAME_dup(GENERAL_NAME *a);
526int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b);
527
474 528
475 529
476ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method, 530ASN1_BIT_STRING *v2i_ASN1_BIT_STRING(X509V3_EXT_METHOD *method,
@@ -486,11 +540,18 @@ DECLARE_ASN1_FUNCTIONS(GENERAL_NAMES)
486 540
487STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method, 541STACK_OF(CONF_VALUE) *i2v_GENERAL_NAMES(X509V3_EXT_METHOD *method,
488 GENERAL_NAMES *gen, STACK_OF(CONF_VALUE) *extlist); 542 GENERAL_NAMES *gen, STACK_OF(CONF_VALUE) *extlist);
489GENERAL_NAMES *v2i_GENERAL_NAMES(X509V3_EXT_METHOD *method, 543GENERAL_NAMES *v2i_GENERAL_NAMES(const X509V3_EXT_METHOD *method,
490 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval); 544 X509V3_CTX *ctx, STACK_OF(CONF_VALUE) *nval);
491 545
492DECLARE_ASN1_FUNCTIONS(OTHERNAME) 546DECLARE_ASN1_FUNCTIONS(OTHERNAME)
493DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME) 547DECLARE_ASN1_FUNCTIONS(EDIPARTYNAME)
548int OTHERNAME_cmp(OTHERNAME *a, OTHERNAME *b);
549void GENERAL_NAME_set0_value(GENERAL_NAME *a, int type, void *value);
550void *GENERAL_NAME_get0_value(GENERAL_NAME *a, int *ptype);
551int GENERAL_NAME_set0_othername(GENERAL_NAME *gen,
552 ASN1_OBJECT *oid, ASN1_TYPE *value);
553int GENERAL_NAME_get0_otherName(GENERAL_NAME *gen,
554 ASN1_OBJECT **poid, ASN1_TYPE **pvalue);
494 555
495char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5); 556char *i2s_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, ASN1_OCTET_STRING *ia5);
496ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str); 557ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, char *str);
@@ -507,6 +568,11 @@ DECLARE_ASN1_FUNCTIONS(NOTICEREF)
507DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS) 568DECLARE_ASN1_FUNCTIONS(CRL_DIST_POINTS)
508DECLARE_ASN1_FUNCTIONS(DIST_POINT) 569DECLARE_ASN1_FUNCTIONS(DIST_POINT)
509DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME) 570DECLARE_ASN1_FUNCTIONS(DIST_POINT_NAME)
571DECLARE_ASN1_FUNCTIONS(ISSUING_DIST_POINT)
572
573int DIST_POINT_set_dpname(DIST_POINT_NAME *dpn, X509_NAME *iname);
574
575int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc);
510 576
511DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION) 577DECLARE_ASN1_FUNCTIONS(ACCESS_DESCRIPTION)
512DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS) 578DECLARE_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS)
@@ -524,11 +590,16 @@ DECLARE_ASN1_ALLOC_FUNCTIONS(NAME_CONSTRAINTS)
524DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS) 590DECLARE_ASN1_ALLOC_FUNCTIONS(POLICY_CONSTRAINTS)
525DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS) 591DECLARE_ASN1_ITEM(POLICY_CONSTRAINTS)
526 592
593GENERAL_NAME *a2i_GENERAL_NAME(GENERAL_NAME *out,
594 const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
595 int gen_type, char *value, int is_nc);
596
527#ifdef HEADER_CONF_H 597#ifdef HEADER_CONF_H
528GENERAL_NAME *v2i_GENERAL_NAME(X509V3_EXT_METHOD *method, X509V3_CTX *ctx, 598GENERAL_NAME *v2i_GENERAL_NAME(const X509V3_EXT_METHOD *method, X509V3_CTX *ctx,
529 CONF_VALUE *cnf); 599 CONF_VALUE *cnf);
530GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out, X509V3_EXT_METHOD *method, 600GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
531 X509V3_CTX *ctx, CONF_VALUE *cnf, int is_nc); 601 const X509V3_EXT_METHOD *method,
602 X509V3_CTX *ctx, CONF_VALUE *cnf, int is_nc);
532void X509V3_conf_free(CONF_VALUE *val); 603void X509V3_conf_free(CONF_VALUE *val);
533 604
534X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, char *value); 605X509_EXTENSION *X509V3_EXT_nconf_nid(CONF *conf, X509V3_CTX *ctx, int ext_nid, char *value);
@@ -538,18 +609,23 @@ int X509V3_EXT_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509 *cert)
538int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_REQ *req); 609int X509V3_EXT_REQ_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_REQ *req);
539int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl); 610int X509V3_EXT_CRL_add_nconf(CONF *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl);
540 611
541X509_EXTENSION *X509V3_EXT_conf_nid(LHASH *conf, X509V3_CTX *ctx, int ext_nid, char *value); 612X509_EXTENSION *X509V3_EXT_conf_nid(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
542X509_EXTENSION *X509V3_EXT_conf(LHASH *conf, X509V3_CTX *ctx, char *name, char *value); 613 int ext_nid, char *value);
543int X509V3_EXT_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509 *cert); 614X509_EXTENSION *X509V3_EXT_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
544int X509V3_EXT_REQ_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_REQ *req); 615 char *name, char *value);
545int X509V3_EXT_CRL_add_conf(LHASH *conf, X509V3_CTX *ctx, char *section, X509_CRL *crl); 616int X509V3_EXT_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
617 char *section, X509 *cert);
618int X509V3_EXT_REQ_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
619 char *section, X509_REQ *req);
620int X509V3_EXT_CRL_add_conf(LHASH_OF(CONF_VALUE) *conf, X509V3_CTX *ctx,
621 char *section, X509_CRL *crl);
546 622
547int X509V3_add_value_bool_nf(char *name, int asn1_bool, 623int X509V3_add_value_bool_nf(char *name, int asn1_bool,
548 STACK_OF(CONF_VALUE) **extlist); 624 STACK_OF(CONF_VALUE) **extlist);
549int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool); 625int X509V3_get_value_bool(CONF_VALUE *value, int *asn1_bool);
550int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint); 626int X509V3_get_value_int(CONF_VALUE *value, ASN1_INTEGER **aint);
551void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf); 627void X509V3_set_nconf(X509V3_CTX *ctx, CONF *conf);
552void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH *lhash); 628void X509V3_set_conf_lhash(X509V3_CTX *ctx, LHASH_OF(CONF_VALUE) *lhash);
553#endif 629#endif
554 630
555char * X509V3_get_string(X509V3_CTX *ctx, char *name, char *section); 631char * X509V3_get_string(X509V3_CTX *ctx, char *name, char *section);
@@ -576,8 +652,8 @@ int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist);
576int X509V3_EXT_add_alias(int nid_to, int nid_from); 652int X509V3_EXT_add_alias(int nid_to, int nid_from);
577void X509V3_EXT_cleanup(void); 653void X509V3_EXT_cleanup(void);
578 654
579X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext); 655const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext);
580X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid); 656const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid);
581int X509V3_add_standard_extensions(void); 657int X509V3_add_standard_extensions(void);
582STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line); 658STACK_OF(CONF_VALUE) *X509V3_parse_list(const char *line);
583void *X509V3_EXT_d2i(X509_EXTENSION *ext); 659void *X509V3_EXT_d2i(X509_EXTENSION *ext);
@@ -587,8 +663,8 @@ void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx);
587X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc); 663X509_EXTENSION *X509V3_EXT_i2d(int ext_nid, int crit, void *ext_struc);
588int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, int crit, unsigned long flags); 664int X509V3_add1_i2d(STACK_OF(X509_EXTENSION) **x, int nid, void *value, int crit, unsigned long flags);
589 665
590char *hex_to_string(unsigned char *buffer, long len); 666char *hex_to_string(const unsigned char *buffer, long len);
591unsigned char *string_to_hex(char *str, long *len); 667unsigned char *string_to_hex(const char *str, long *len);
592int name_cmp(const char *name, const char *cmp); 668int name_cmp(const char *name, const char *cmp);
593 669
594void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent, 670void X509V3_EXT_val_prn(BIO *out, STACK_OF(CONF_VALUE) *val, int indent,
@@ -603,6 +679,7 @@ int X509_check_purpose(X509 *x, int id, int ca);
603int X509_supported_extension(X509_EXTENSION *ex); 679int X509_supported_extension(X509_EXTENSION *ex);
604int X509_PURPOSE_set(int *p, int purpose); 680int X509_PURPOSE_set(int *p, int purpose);
605int X509_check_issued(X509 *issuer, X509 *subject); 681int X509_check_issued(X509 *issuer, X509 *subject);
682int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid);
606int X509_PURPOSE_get_count(void); 683int X509_PURPOSE_get_count(void);
607X509_PURPOSE * X509_PURPOSE_get0(int idx); 684X509_PURPOSE * X509_PURPOSE_get0(int idx);
608int X509_PURPOSE_get_by_sname(char *sname); 685int X509_PURPOSE_get_by_sname(char *sname);
@@ -616,10 +693,10 @@ int X509_PURPOSE_get_trust(X509_PURPOSE *xp);
616void X509_PURPOSE_cleanup(void); 693void X509_PURPOSE_cleanup(void);
617int X509_PURPOSE_get_id(X509_PURPOSE *); 694int X509_PURPOSE_get_id(X509_PURPOSE *);
618 695
619STACK *X509_get1_email(X509 *x); 696STACK_OF(OPENSSL_STRING) *X509_get1_email(X509 *x);
620STACK *X509_REQ_get1_email(X509_REQ *x); 697STACK_OF(OPENSSL_STRING) *X509_REQ_get1_email(X509_REQ *x);
621void X509_email_free(STACK *sk); 698void X509_email_free(STACK_OF(OPENSSL_STRING) *sk);
622STACK *X509_get1_ocsp(X509 *x); 699STACK_OF(OPENSSL_STRING) *X509_get1_ocsp(X509 *x);
623 700
624ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc); 701ASN1_OCTET_STRING *a2i_IPADDRESS(const char *ipasc);
625ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc); 702ASN1_OCTET_STRING *a2i_IPADDRESS_NC(const char *ipasc);
@@ -628,6 +705,7 @@ int X509V3_NAME_from_section(X509_NAME *nm, STACK_OF(CONF_VALUE)*dn_sk,
628 unsigned long chtype); 705 unsigned long chtype);
629 706
630void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent); 707void X509_POLICY_NODE_print(BIO *out, X509_POLICY_NODE *node, int indent);
708DECLARE_STACK_OF(X509_POLICY_NODE)
631 709
632#ifndef OPENSSL_NO_RFC3779 710#ifndef OPENSSL_NO_RFC3779
633 711
@@ -787,8 +865,9 @@ void ERR_load_X509V3_strings(void);
787/* Error codes for the X509V3 functions. */ 865/* Error codes for the X509V3 functions. */
788 866
789/* Function codes. */ 867/* Function codes. */
790#define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 156 868#define X509V3_F_A2I_GENERAL_NAME 164
791#define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 157 869#define X509V3_F_ASIDENTIFIERCHOICE_CANONIZE 161
870#define X509V3_F_ASIDENTIFIERCHOICE_IS_CANONICAL 162
792#define X509V3_F_COPY_EMAIL 122 871#define X509V3_F_COPY_EMAIL 122
793#define X509V3_F_COPY_ISSUER 123 872#define X509V3_F_COPY_ISSUER 123
794#define X509V3_F_DO_DIRNAME 144 873#define X509V3_F_DO_DIRNAME 144
@@ -796,6 +875,7 @@ void ERR_load_X509V3_strings(void);
796#define X509V3_F_DO_EXT_I2D 135 875#define X509V3_F_DO_EXT_I2D 135
797#define X509V3_F_DO_EXT_NCONF 151 876#define X509V3_F_DO_EXT_NCONF 151
798#define X509V3_F_DO_I2V_NAME_CONSTRAINTS 148 877#define X509V3_F_DO_I2V_NAME_CONSTRAINTS 148
878#define X509V3_F_GNAMES_FROM_SECTNAME 156
799#define X509V3_F_HEX_TO_STRING 111 879#define X509V3_F_HEX_TO_STRING 111
800#define X509V3_F_I2S_ASN1_ENUMERATED 121 880#define X509V3_F_I2S_ASN1_ENUMERATED 121
801#define X509V3_F_I2S_ASN1_IA5STRING 149 881#define X509V3_F_I2S_ASN1_IA5STRING 149
@@ -812,13 +892,14 @@ void ERR_load_X509V3_strings(void);
812#define X509V3_F_S2I_ASN1_OCTET_STRING 112 892#define X509V3_F_S2I_ASN1_OCTET_STRING 112
813#define X509V3_F_S2I_ASN1_SKEY_ID 114 893#define X509V3_F_S2I_ASN1_SKEY_ID 114
814#define X509V3_F_S2I_SKEY_ID 115 894#define X509V3_F_S2I_SKEY_ID 115
895#define X509V3_F_SET_DIST_POINT_NAME 158
815#define X509V3_F_STRING_TO_HEX 113 896#define X509V3_F_STRING_TO_HEX 113
816#define X509V3_F_SXNET_ADD_ID_ASC 125 897#define X509V3_F_SXNET_ADD_ID_ASC 125
817#define X509V3_F_SXNET_ADD_ID_INTEGER 126 898#define X509V3_F_SXNET_ADD_ID_INTEGER 126
818#define X509V3_F_SXNET_ADD_ID_ULONG 127 899#define X509V3_F_SXNET_ADD_ID_ULONG 127
819#define X509V3_F_SXNET_GET_ID_ASC 128 900#define X509V3_F_SXNET_GET_ID_ASC 128
820#define X509V3_F_SXNET_GET_ID_ULONG 129 901#define X509V3_F_SXNET_GET_ID_ULONG 129
821#define X509V3_F_V2I_ASIDENTIFIERS 158 902#define X509V3_F_V2I_ASIDENTIFIERS 163
822#define X509V3_F_V2I_ASN1_BIT_STRING 101 903#define X509V3_F_V2I_ASN1_BIT_STRING 101
823#define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 139 904#define X509V3_F_V2I_AUTHORITY_INFO_ACCESS 139
824#define X509V3_F_V2I_AUTHORITY_KEYID 119 905#define X509V3_F_V2I_AUTHORITY_KEYID 119
@@ -827,6 +908,7 @@ void ERR_load_X509V3_strings(void);
827#define X509V3_F_V2I_EXTENDED_KEY_USAGE 103 908#define X509V3_F_V2I_EXTENDED_KEY_USAGE 103
828#define X509V3_F_V2I_GENERAL_NAMES 118 909#define X509V3_F_V2I_GENERAL_NAMES 118
829#define X509V3_F_V2I_GENERAL_NAME_EX 117 910#define X509V3_F_V2I_GENERAL_NAME_EX 117
911#define X509V3_F_V2I_IDP 157
830#define X509V3_F_V2I_IPADDRBLOCKS 159 912#define X509V3_F_V2I_IPADDRBLOCKS 159
831#define X509V3_F_V2I_ISSUER_ALT 153 913#define X509V3_F_V2I_ISSUER_ALT 153
832#define X509V3_F_V2I_NAME_CONSTRAINTS 147 914#define X509V3_F_V2I_NAME_CONSTRAINTS 147
@@ -855,6 +937,7 @@ void ERR_load_X509V3_strings(void);
855#define X509V3_R_BN_DEC2BN_ERROR 100 937#define X509V3_R_BN_DEC2BN_ERROR 100
856#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101 938#define X509V3_R_BN_TO_ASN1_INTEGER_ERROR 101
857#define X509V3_R_DIRNAME_ERROR 149 939#define X509V3_R_DIRNAME_ERROR 149
940#define X509V3_R_DISTPOINT_ALREADY_SET 160
858#define X509V3_R_DUPLICATE_ZONE_ID 133 941#define X509V3_R_DUPLICATE_ZONE_ID 133
859#define X509V3_R_ERROR_CONVERTING_ZONE 131 942#define X509V3_R_ERROR_CONVERTING_ZONE 131
860#define X509V3_R_ERROR_CREATING_EXTENSION 144 943#define X509V3_R_ERROR_CREATING_EXTENSION 144
@@ -868,12 +951,13 @@ void ERR_load_X509V3_strings(void);
868#define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151 951#define X509V3_R_ILLEGAL_EMPTY_EXTENSION 151
869#define X509V3_R_ILLEGAL_HEX_DIGIT 113 952#define X509V3_R_ILLEGAL_HEX_DIGIT 113
870#define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152 953#define X509V3_R_INCORRECT_POLICY_SYNTAX_TAG 152
871#define X509V3_R_INVALID_ASNUMBER 160 954#define X509V3_R_INVALID_MULTIPLE_RDNS 161
872#define X509V3_R_INVALID_ASRANGE 161 955#define X509V3_R_INVALID_ASNUMBER 162
956#define X509V3_R_INVALID_ASRANGE 163
873#define X509V3_R_INVALID_BOOLEAN_STRING 104 957#define X509V3_R_INVALID_BOOLEAN_STRING 104
874#define X509V3_R_INVALID_EXTENSION_STRING 105 958#define X509V3_R_INVALID_EXTENSION_STRING 105
875#define X509V3_R_INVALID_INHERITANCE 162 959#define X509V3_R_INVALID_INHERITANCE 165
876#define X509V3_R_INVALID_IPADDRESS 163 960#define X509V3_R_INVALID_IPADDRESS 166
877#define X509V3_R_INVALID_NAME 106 961#define X509V3_R_INVALID_NAME 106
878#define X509V3_R_INVALID_NULL_ARGUMENT 107 962#define X509V3_R_INVALID_NULL_ARGUMENT 107
879#define X509V3_R_INVALID_NULL_NAME 108 963#define X509V3_R_INVALID_NULL_NAME 108
@@ -901,9 +985,9 @@ void ERR_load_X509V3_strings(void);
901#define X509V3_R_ODD_NUMBER_OF_DIGITS 112 985#define X509V3_R_ODD_NUMBER_OF_DIGITS 112
902#define X509V3_R_OPERATION_NOT_DEFINED 148 986#define X509V3_R_OPERATION_NOT_DEFINED 148
903#define X509V3_R_OTHERNAME_ERROR 147 987#define X509V3_R_OTHERNAME_ERROR 147
904#define X509V3_R_POLICY_LANGUAGE_ALREADTY_DEFINED 155 988#define X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED 155
905#define X509V3_R_POLICY_PATH_LENGTH 156 989#define X509V3_R_POLICY_PATH_LENGTH 156
906#define X509V3_R_POLICY_PATH_LENGTH_ALREADTY_DEFINED 157 990#define X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED 157
907#define X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED 158 991#define X509V3_R_POLICY_SYNTAX_NOT_CURRENTLY_SUPPORTED 158
908#define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159 992#define X509V3_R_POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY 159
909#define X509V3_R_SECTION_NOT_FOUND 150 993#define X509V3_R_SECTION_NOT_FOUND 150
@@ -914,6 +998,7 @@ void ERR_load_X509V3_strings(void);
914#define X509V3_R_UNKNOWN_EXTENSION_NAME 130 998#define X509V3_R_UNKNOWN_EXTENSION_NAME 130
915#define X509V3_R_UNKNOWN_OPTION 120 999#define X509V3_R_UNKNOWN_OPTION 120
916#define X509V3_R_UNSUPPORTED_OPTION 117 1000#define X509V3_R_UNSUPPORTED_OPTION 117
1001#define X509V3_R_UNSUPPORTED_TYPE 167
917#define X509V3_R_USER_TOO_LONG 132 1002#define X509V3_R_USER_TOO_LONG 132
918 1003
919#ifdef __cplusplus 1004#ifdef __cplusplus
diff --git a/src/lib/libssl/src/demos/engines/rsaref/build.com b/src/lib/libssl/src/demos/engines/rsaref/build.com
index b956912916..72b013d45e 100644
--- a/src/lib/libssl/src/demos/engines/rsaref/build.com
+++ b/src/lib/libssl/src/demos/engines/rsaref/build.com
@@ -7,6 +7,14 @@ $ write sys$error "RSAref 2.0 hasn't been properly extracted."
7$ exit 7$ exit
8$ endif 8$ endif
9$ 9$
10$ if (f$getsyi("cpu").lt.128)
11$ then
12$ arch := vax
13$ else
14$ arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
15$ if (arch .eqs. "") then arch = "UNK"
16$ endif
17$
10$ _save_default = f$environment("default") 18$ _save_default = f$environment("default")
11$ set default [.install] 19$ set default [.install]
12$ files := desc,digit,md2c,md5c,nn,prime,- 20$ files := desc,digit,md2c,md5c,nn,prime,-
@@ -29,14 +37,8 @@ $ set default [-]
29$ define/user openssl [---.include.openssl] 37$ define/user openssl [---.include.openssl]
30$ cc/define=ENGINE_DYNAMIC_SUPPORT rsaref.c 38$ cc/define=ENGINE_DYNAMIC_SUPPORT rsaref.c
31$ 39$
32$ if f$getsyi("CPU") .ge. 128 40$ if arch .eqs. "VAX"
33$ then 41$ then
34$ link/share=librsaref.exe sys$input:/option
35[]rsaref.obj
36[.install]rsaref.olb/lib
37[---.axp.exe.crypto]libcrypto.olb/lib
38symbol_vector=(bind_engine=procedure,v_check=procedure)
39$ else
40$ macro/object=rsaref_vec.obj sys$input: 42$ macro/object=rsaref_vec.obj sys$input:
41; 43;
42; Transfer vector for VAX shareable image 44; Transfer vector for VAX shareable image
@@ -80,6 +82,24 @@ PSECT_ATTR=$CHAR_STRING_CONSTANTS,NOWRT
80[]rsaref.obj 82[]rsaref.obj
81[.install]rsaref.olb/lib 83[.install]rsaref.olb/lib
82[---.vax.exe.crypto]libcrypto.olb/lib 84[---.vax.exe.crypto]libcrypto.olb/lib
85$ else
86$ if arch_name .eqs. "ALPHA"
87$ then
88$ link/share=librsaref.exe sys$input:/option
89[]rsaref.obj
90[.install]rsaref.olb/lib
91[---.alpha.exe.crypto]libcrypto.olb/lib
92symbol_vector=(bind_engine=procedure,v_check=procedure)
93$ else
94$ if arch_name .eqs. "IA64"
95$ then
96$ link /shareable=librsaref.exe sys$input: /options
97[]rsaref.obj
98[.install]rsaref.olb/lib
99[---.ia64.exe.crypto]libcrypto.olb/lib
100symbol_vector=(bind_engine=procedure,v_check=procedure)
101$ endif
102$ endif
83$ endif 103$ endif
84$ 104$
85$ set default '_save_default' 105$ set default '_save_default'
diff --git a/src/lib/libssl/src/demos/pkcs12/pkread.c b/src/lib/libssl/src/demos/pkcs12/pkread.c
index 8e1b686312..fa8f509237 100644
--- a/src/lib/libssl/src/demos/pkcs12/pkread.c
+++ b/src/lib/libssl/src/demos/pkcs12/pkread.c
@@ -20,7 +20,7 @@ int main(int argc, char **argv)
20 fprintf(stderr, "Usage: pkread p12file password opfile\n"); 20 fprintf(stderr, "Usage: pkread p12file password opfile\n");
21 exit (1); 21 exit (1);
22 } 22 }
23 SSLeay_add_all_algorithms(); 23 OpenSSL_add_all_algorithms();
24 ERR_load_crypto_strings(); 24 ERR_load_crypto_strings();
25 if (!(fp = fopen(argv[1], "rb"))) { 25 if (!(fp = fopen(argv[1], "rb"))) {
26 fprintf(stderr, "Error opening file %s\n", argv[1]); 26 fprintf(stderr, "Error opening file %s\n", argv[1]);
@@ -51,7 +51,7 @@ int main(int argc, char **argv)
51 fprintf(fp, "***User Certificate***\n"); 51 fprintf(fp, "***User Certificate***\n");
52 PEM_write_X509_AUX(fp, cert); 52 PEM_write_X509_AUX(fp, cert);
53 } 53 }
54 if (ca && sk_num(ca)) { 54 if (ca && sk_X509_num(ca)) {
55 fprintf(fp, "***Other Certificates***\n"); 55 fprintf(fp, "***Other Certificates***\n");
56 for (i = 0; i < sk_X509_num(ca); i++) 56 for (i = 0; i < sk_X509_num(ca); i++)
57 PEM_write_X509_AUX(fp, sk_X509_value(ca, i)); 57 PEM_write_X509_AUX(fp, sk_X509_value(ca, i));
diff --git a/src/lib/libssl/src/demos/tunala/autoungunk.sh b/src/lib/libssl/src/demos/tunala/autoungunk.sh
index 0c9123b6cf..21790880d7 100644
--- a/src/lib/libssl/src/demos/tunala/autoungunk.sh
+++ b/src/lib/libssl/src/demos/tunala/autoungunk.sh
@@ -15,4 +15,5 @@ fi
15 15
16rm -f aclocal.m4 config.* configure install-sh \ 16rm -f aclocal.m4 config.* configure install-sh \
17 missing mkinstalldirs stamp-h.* Makefile.in \ 17 missing mkinstalldirs stamp-h.* Makefile.in \
18 ltconfig ltmain.sh 18 ltconfig ltmain.sh depcomp
19rm -rf autom4te.cache
diff --git a/src/lib/libssl/src/demos/tunala/cb.c b/src/lib/libssl/src/demos/tunala/cb.c
index e64983896e..f6e452ae93 100644
--- a/src/lib/libssl/src/demos/tunala/cb.c
+++ b/src/lib/libssl/src/demos/tunala/cb.c
@@ -134,8 +134,27 @@ RSA *cb_generate_tmp_rsa(SSL *s, int is_export, int keylength)
134 /* TODO: Perhaps make it so our global key can be generated on-the-fly 134 /* TODO: Perhaps make it so our global key can be generated on-the-fly
135 * after certain intervals? */ 135 * after certain intervals? */
136 static RSA *rsa_tmp = NULL; 136 static RSA *rsa_tmp = NULL;
137 if(!rsa_tmp) 137 BIGNUM *bn = NULL;
138 rsa_tmp = RSA_generate_key(keylength, RSA_F4, NULL, NULL); 138 int ok = 1;
139 if(!rsa_tmp) {
140 ok = 0;
141 if(!(bn = BN_new()))
142 goto end;
143 if(!BN_set_word(bn, RSA_F4))
144 goto end;
145 if(!(rsa_tmp = RSA_new()))
146 goto end;
147 if(!RSA_generate_key_ex(rsa_tmp, keylength, bn, NULL))
148 goto end;
149 ok = 1;
150 }
151end:
152 if(bn)
153 BN_free(bn);
154 if(!ok) {
155 RSA_free(rsa_tmp);
156 rsa_tmp = NULL;
157 }
139 return rsa_tmp; 158 return rsa_tmp;
140} 159}
141 160
diff --git a/src/lib/libssl/src/demos/tunala/tunala.c b/src/lib/libssl/src/demos/tunala/tunala.c
index e918cba2ce..ec49d3e943 100644
--- a/src/lib/libssl/src/demos/tunala/tunala.c
+++ b/src/lib/libssl/src/demos/tunala/tunala.c
@@ -697,9 +697,11 @@ static int ctx_set_dh(SSL_CTX *ctx, const char *dh_file, const char *dh_special)
697 abort(); 697 abort();
698 fprintf(stderr, "Info, generating DH parameters ... "); 698 fprintf(stderr, "Info, generating DH parameters ... ");
699 fflush(stderr); 699 fflush(stderr);
700 if((dh = DH_generate_parameters(512, DH_GENERATOR_5, 700 if(!(dh = DH_new()) || !DH_generate_parameters_ex(dh, 512,
701 NULL, NULL)) == NULL) { 701 DH_GENERATOR_5, NULL)) {
702 fprintf(stderr, "error!\n"); 702 fprintf(stderr, "error!\n");
703 if(dh)
704 DH_free(dh);
703 return 0; 705 return 0;
704 } 706 }
705 fprintf(stderr, "complete\n"); 707 fprintf(stderr, "complete\n");
@@ -733,7 +735,7 @@ static SSL_CTX *initialise_ssl_ctx(int server_mode, const char *engine_id,
733 unsigned int verify_depth) 735 unsigned int verify_depth)
734{ 736{
735 SSL_CTX *ctx = NULL, *ret = NULL; 737 SSL_CTX *ctx = NULL, *ret = NULL;
736 SSL_METHOD *meth; 738 const SSL_METHOD *meth;
737 ENGINE *e = NULL; 739 ENGINE *e = NULL;
738 740
739 OpenSSL_add_ssl_algorithms(); 741 OpenSSL_add_ssl_algorithms();
diff --git a/src/lib/libssl/src/demos/x509/mkcert.c b/src/lib/libssl/src/demos/x509/mkcert.c
index c5e67b8e28..6a52e5d0fc 100644
--- a/src/lib/libssl/src/demos/x509/mkcert.c
+++ b/src/lib/libssl/src/demos/x509/mkcert.c
@@ -136,7 +136,7 @@ int mkcert(X509 **x509p, EVP_PKEY **pkeyp, int bits, int serial, int days)
136 } 136 }
137#endif 137#endif
138 138
139 if (!X509_sign(x,pk,EVP_md5())) 139 if (!X509_sign(x,pk,EVP_sha1()))
140 goto err; 140 goto err;
141 141
142 *x509p=x; 142 *x509p=x;
diff --git a/src/lib/libssl/src/demos/x509/mkreq.c b/src/lib/libssl/src/demos/x509/mkreq.c
index 3dfc65f164..d17e4ade94 100644
--- a/src/lib/libssl/src/demos/x509/mkreq.c
+++ b/src/lib/libssl/src/demos/x509/mkreq.c
@@ -134,7 +134,7 @@ int mkreq(X509_REQ **req, EVP_PKEY **pkeyp, int bits, int serial, int days)
134 134
135#endif 135#endif
136 136
137 if (!X509_REQ_sign(x,pk,EVP_md5())) 137 if (!X509_REQ_sign(x,pk,EVP_sha1()))
138 goto err; 138 goto err;
139 139
140 *req=x; 140 *req=x;
diff --git a/src/lib/libssl/src/doc/apps/asn1parse.pod b/src/lib/libssl/src/doc/apps/asn1parse.pod
index 542d969066..f7bb926211 100644
--- a/src/lib/libssl/src/doc/apps/asn1parse.pod
+++ b/src/lib/libssl/src/doc/apps/asn1parse.pod
@@ -72,11 +72,11 @@ option can be used multiple times to "drill down" into a nested structure.
72=item B<-genstr string>, B<-genconf file> 72=item B<-genstr string>, B<-genconf file>
73 73
74generate encoded data based on B<string>, B<file> or both using 74generate encoded data based on B<string>, B<file> or both using
75ASN1_generate_nconf() format. If B<file> only is present then the string 75L<ASN1_generate_nconf(3)|ASN1_generate_nconf(3)> format. If B<file> only is
76is obtained from the default section using the name B<asn1>. The encoded 76present then the string is obtained from the default section using the name
77data is passed through the ASN1 parser and printed out as though it came 77B<asn1>. The encoded data is passed through the ASN1 parser and printed out as
78from a file, the contents can thus be examined and written to a file 78though it came from a file, the contents can thus be examined and written to a
79using the B<out> option. 79file using the B<out> option.
80 80
81=back 81=back
82 82
@@ -168,4 +168,8 @@ Example config file:
168There should be options to change the format of output lines. The output of some 168There should be options to change the format of output lines. The output of some
169ASN.1 types is not well handled (if at all). 169ASN.1 types is not well handled (if at all).
170 170
171=head1 SEE ALSO
172
173L<ASN1_generate_nconf(3)|ASN1_generate_nconf(3)>
174
171=cut 175=cut
diff --git a/src/lib/libssl/src/doc/apps/ca.pod b/src/lib/libssl/src/doc/apps/ca.pod
index 5618c2dc9d..9ff0cc3612 100644
--- a/src/lib/libssl/src/doc/apps/ca.pod
+++ b/src/lib/libssl/src/doc/apps/ca.pod
@@ -205,7 +205,9 @@ the section of the configuration file containing certificate extensions
205to be added when a certificate is issued (defaults to B<x509_extensions> 205to be added when a certificate is issued (defaults to B<x509_extensions>
206unless the B<-extfile> option is used). If no extension section is 206unless the B<-extfile> option is used). If no extension section is
207present then, a V1 certificate is created. If the extension section 207present then, a V1 certificate is created. If the extension section
208is present (even if it is empty), then a V3 certificate is created. 208is present (even if it is empty), then a V3 certificate is created. See the:w
209L<x509v3_config(5)|x509v3_config(5)> manual page for details of the
210extension section format.
209 211
210=item B<-extfile file> 212=item B<-extfile file>
211 213
@@ -215,7 +217,7 @@ used).
215 217
216=item B<-engine id> 218=item B<-engine id>
217 219
218specifying an engine (by it's unique B<id> string) will cause B<req> 220specifying an engine (by its unique B<id> string) will cause B<ca>
219to attempt to obtain a functional reference to the specified engine, 221to attempt to obtain a functional reference to the specified engine,
220thus initialising it if needed. The engine will then be set as the default 222thus initialising it if needed. The engine will then be set as the default
221for all available algorithms. 223for all available algorithms.
@@ -299,7 +301,9 @@ include. If no CRL extension section is present then a V1 CRL is
299created, if the CRL extension section is present (even if it is 301created, if the CRL extension section is present (even if it is
300empty) then a V2 CRL is created. The CRL extensions specified are 302empty) then a V2 CRL is created. The CRL extensions specified are
301CRL extensions and B<not> CRL entry extensions. It should be noted 303CRL extensions and B<not> CRL entry extensions. It should be noted
302that some software (for example Netscape) can't handle V2 CRLs. 304that some software (for example Netscape) can't handle V2 CRLs. See
305L<x509v3_config(5)|x509v3_config(5)> manual page for details of the
306extension section format.
303 307
304=back 308=back
305 309
@@ -666,6 +670,6 @@ then even if a certificate is issued with CA:TRUE it will not be valid.
666=head1 SEE ALSO 670=head1 SEE ALSO
667 671
668L<req(1)|req(1)>, L<spkac(1)|spkac(1)>, L<x509(1)|x509(1)>, L<CA.pl(1)|CA.pl(1)>, 672L<req(1)|req(1)>, L<spkac(1)|spkac(1)>, L<x509(1)|x509(1)>, L<CA.pl(1)|CA.pl(1)>,
669L<config(5)|config(5)> 673L<config(5)|config(5)>, L<x509v3_config(5)|x509v3_config(5)>
670 674
671=cut 675=cut
diff --git a/src/lib/libssl/src/doc/apps/ciphers.pod b/src/lib/libssl/src/doc/apps/ciphers.pod
index 694e433ef3..f44aa00a2f 100644
--- a/src/lib/libssl/src/doc/apps/ciphers.pod
+++ b/src/lib/libssl/src/doc/apps/ciphers.pod
@@ -8,6 +8,7 @@ ciphers - SSL cipher display and cipher list tool.
8 8
9B<openssl> B<ciphers> 9B<openssl> B<ciphers>
10[B<-v>] 10[B<-v>]
11[B<-V>]
11[B<-ssl2>] 12[B<-ssl2>]
12[B<-ssl3>] 13[B<-ssl3>]
13[B<-tls1>] 14[B<-tls1>]
@@ -15,7 +16,7 @@ B<openssl> B<ciphers>
15 16
16=head1 DESCRIPTION 17=head1 DESCRIPTION
17 18
18The B<cipherlist> command converts OpenSSL cipher lists into ordered 19The B<ciphers> command converts textual OpenSSL cipher lists into ordered
19SSL cipher preference lists. It can be used as a test tool to determine 20SSL cipher preference lists. It can be used as a test tool to determine
20the appropriate cipherlist. 21the appropriate cipherlist.
21 22
@@ -25,7 +26,7 @@ the appropriate cipherlist.
25 26
26=item B<-v> 27=item B<-v>
27 28
28verbose option. List ciphers with a complete description of 29Verbose option. List ciphers with a complete description of
29protocol version (SSLv2 or SSLv3; the latter includes TLS), key exchange, 30protocol version (SSLv2 or SSLv3; the latter includes TLS), key exchange,
30authentication, encryption and mac algorithms used along with any key size 31authentication, encryption and mac algorithms used along with any key size
31restrictions and whether the algorithm is classed as an "export" cipher. 32restrictions and whether the algorithm is classed as an "export" cipher.
@@ -33,6 +34,10 @@ Note that without the B<-v> option, ciphers may seem to appear twice
33in a cipher list; this is when similar ciphers are available for 34in a cipher list; this is when similar ciphers are available for
34SSL v2 and for SSL v3/TLS v1. 35SSL v2 and for SSL v3/TLS v1.
35 36
37=item B<-V>
38
39Like B<-V>, but include cipher suite codes in output (hex format).
40
36=item B<-ssl3> 41=item B<-ssl3>
37 42
38only include SSL v3 ciphers. 43only include SSL v3 ciphers.
@@ -104,8 +109,8 @@ The following is a list of all permitted cipher strings and their meanings.
104 109
105=item B<DEFAULT> 110=item B<DEFAULT>
106 111
107the default cipher list. This is determined at compile time and is normally 112the default cipher list. This is determined at compile time and, as of OpenSSL
108B<AES:ALL:!aNULL:!eNULL:+RC4:@STRENGTH>. This must be the first cipher string 1131.0.0, is normally B<ALL:!aNULL:!eNULL>. This must be the first cipher string
109specified. 114specified.
110 115
111=item B<COMPLEMENTOFDEFAULT> 116=item B<COMPLEMENTOFDEFAULT>
@@ -116,7 +121,8 @@ not included by B<ALL> (use B<COMPLEMENTOFALL> if necessary).
116 121
117=item B<ALL> 122=item B<ALL>
118 123
119all ciphers suites except the B<eNULL> ciphers which must be explicitly enabled. 124all cipher suites except the B<eNULL> ciphers which must be explicitly enabled;
125as of OpenSSL, the B<ALL> cipher suites are reasonably ordered by default
120 126
121=item B<COMPLEMENTOFALL> 127=item B<COMPLEMENTOFALL>
122 128
@@ -245,6 +251,33 @@ cipher suites using MD5.
245 251
246cipher suites using SHA1. 252cipher suites using SHA1.
247 253
254=item B<aGOST>
255
256cipher suites using GOST R 34.10 (either 2001 or 94) for authenticaction
257(needs an engine supporting GOST algorithms).
258
259=item B<aGOST01>
260
261cipher suites using GOST R 34.10-2001 authentication.
262
263=item B<aGOST94>
264
265cipher suites using GOST R 34.10-94 authentication (note that R 34.10-94
266standard has been expired so use GOST R 34.10-2001)
267
268=item B<kGOST>
269
270cipher suites, using VKO 34.10 key exchange, specified in the RFC 4357.
271
272=item B<GOST94>
273
274cipher suites, using HMAC based on GOST R 34.11-94.
275
276=item B<GOST89MAC>
277
278cipher suites using GOST 28147-89 MAC B<instead of> HMAC.
279
280
248=back 281=back
249 282
250=head1 CIPHER SUITE NAMES 283=head1 CIPHER SUITE NAMES
@@ -370,6 +403,16 @@ e.g. DES-CBC3-SHA. In these cases, RSA authentication is used.
370 403
371 TLS_DH_anon_WITH_SEED_CBC_SHA ADH-SEED-SHA 404 TLS_DH_anon_WITH_SEED_CBC_SHA ADH-SEED-SHA
372 405
406=head2 GOST ciphersuites from draft-chudov-cryptopro-cptls, extending TLS v1.0
407
408Note: these ciphers require an engine which including GOST cryptographic
409algorithms, such as the B<ccgost> engine, included in the OpenSSL distribution.
410
411 TLS_GOSTR341094_WITH_28147_CNT_IMIT GOST94-GOST89-GOST89
412 TLS_GOSTR341001_WITH_28147_CNT_IMIT GOST2001-GOST89-GOST89
413 TLS_GOSTR341094_WITH_NULL_GOSTR3411 GOST94-NULL-GOST94
414 TLS_GOSTR341001_WITH_NULL_GOSTR3411 GOST2001-NULL-GOST94
415
373=head2 Additional Export 1024 and other cipher suites 416=head2 Additional Export 1024 and other cipher suites
374 417
375Note: these ciphers can also be used in SSL v3. 418Note: these ciphers can also be used in SSL v3.
@@ -428,7 +471,8 @@ L<s_client(1)|s_client(1)>, L<s_server(1)|s_server(1)>, L<ssl(3)|ssl(3)>
428 471
429=head1 HISTORY 472=head1 HISTORY
430 473
431The B<COMPLENTOFALL> and B<COMPLEMENTOFDEFAULT> selection options were 474The B<COMPLENTOFALL> and B<COMPLEMENTOFDEFAULT> selection options
432added in version 0.9.7. 475for cipherlist strings were added in OpenSSL 0.9.7.
476The B<-V> option for the B<ciphers> command was added in OpenSSL 1.0.0.
433 477
434=cut 478=cut
diff --git a/src/lib/libssl/src/doc/apps/dgst.pod b/src/lib/libssl/src/doc/apps/dgst.pod
index 908cd2a6d6..b035edf08e 100644
--- a/src/lib/libssl/src/doc/apps/dgst.pod
+++ b/src/lib/libssl/src/doc/apps/dgst.pod
@@ -14,6 +14,7 @@ B<openssl> B<dgst>
14[B<-binary>] 14[B<-binary>]
15[B<-out filename>] 15[B<-out filename>]
16[B<-sign filename>] 16[B<-sign filename>]
17[B<-keyform arg>]
17[B<-passin arg>] 18[B<-passin arg>]
18[B<-verify filename>] 19[B<-verify filename>]
19[B<-prverify filename>] 20[B<-prverify filename>]
@@ -61,6 +62,23 @@ filename to output to, or standard output by default.
61 62
62digitally sign the digest using the private key in "filename". 63digitally sign the digest using the private key in "filename".
63 64
65=item B<-keyform arg>
66
67Specifies the key format to sign digest with. Only PEM and ENGINE
68formats are supported by the B<dgst> command.
69
70=item B<-engine id>
71
72Use engine B<id> for operations (including private key storage).
73This engine is not used as source for digest algorithms, unless it is
74also specified in the configuration file.
75
76=item B<-sigopt nm:v>
77
78Pass options to the signature algorithm during sign or verify operations.
79Names and values of these options are algorithm-specific.
80
81
64=item B<-passin arg> 82=item B<-passin arg>
65 83
66the private key password source. For more information about the format of B<arg> 84the private key password source. For more information about the format of B<arg>
@@ -83,6 +101,35 @@ the actual signature to verify.
83 101
84create a hashed MAC using "key". 102create a hashed MAC using "key".
85 103
104=item B<-mac alg>
105
106create MAC (keyed Message Authentication Code). The most popular MAC
107algorithm is HMAC (hash-based MAC), but there are other MAC algorithms
108which are not based on hash, for instance B<gost-mac> algorithm,
109supported by B<ccgost> engine. MAC keys and other options should be set
110via B<-macopt> parameter.
111
112=item B<-macopt nm:v>
113
114Passes options to MAC algorithm, specified by B<-mac> key.
115Following options are supported by both by B<HMAC> and B<gost-mac>:
116
117=over 8
118
119=item B<key:string>
120
121Specifies MAC key as alphnumeric string (use if key contain printable
122characters only). String length must conform to any restrictions of
123the MAC algorithm for example exactly 32 chars for gost-mac.
124
125=item B<hexkey:string>
126
127Specifies MAC key in hexadecimal form (two hex digits per byte).
128Key length must conform to any restrictions of the MAC algorithm
129for example exactly 32 chars for gost-mac.
130
131=back
132
86=item B<-rand file(s)> 133=item B<-rand file(s)>
87 134
88a file or files containing random data used to seed the random number 135a file or files containing random data used to seed the random number
diff --git a/src/lib/libssl/src/doc/apps/dhparam.pod b/src/lib/libssl/src/doc/apps/dhparam.pod
index c31db95a47..9edb4ff4e1 100644
--- a/src/lib/libssl/src/doc/apps/dhparam.pod
+++ b/src/lib/libssl/src/doc/apps/dhparam.pod
@@ -99,7 +99,7 @@ be loaded by calling the B<get_dh>I<numbits>B<()> function.
99 99
100=item B<-engine id> 100=item B<-engine id>
101 101
102specifying an engine (by it's unique B<id> string) will cause B<req> 102specifying an engine (by its unique B<id> string) will cause B<dhparam>
103to attempt to obtain a functional reference to the specified engine, 103to attempt to obtain a functional reference to the specified engine,
104thus initialising it if needed. The engine will then be set as the default 104thus initialising it if needed. The engine will then be set as the default
105for all available algorithms. 105for all available algorithms.
diff --git a/src/lib/libssl/src/doc/apps/dsa.pod b/src/lib/libssl/src/doc/apps/dsa.pod
index ed06b8806d..ddbc9327fa 100644
--- a/src/lib/libssl/src/doc/apps/dsa.pod
+++ b/src/lib/libssl/src/doc/apps/dsa.pod
@@ -109,7 +109,7 @@ a public key.
109 109
110=item B<-engine id> 110=item B<-engine id>
111 111
112specifying an engine (by it's unique B<id> string) will cause B<req> 112specifying an engine (by its unique B<id> string) will cause B<dsa>
113to attempt to obtain a functional reference to the specified engine, 113to attempt to obtain a functional reference to the specified engine,
114thus initialising it if needed. The engine will then be set as the default 114thus initialising it if needed. The engine will then be set as the default
115for all available algorithms. 115for all available algorithms.
diff --git a/src/lib/libssl/src/doc/apps/dsaparam.pod b/src/lib/libssl/src/doc/apps/dsaparam.pod
index b9b1b93b42..ba5ec4d72c 100644
--- a/src/lib/libssl/src/doc/apps/dsaparam.pod
+++ b/src/lib/libssl/src/doc/apps/dsaparam.pod
@@ -85,7 +85,7 @@ the input file (if any) is ignored.
85 85
86=item B<-engine id> 86=item B<-engine id>
87 87
88specifying an engine (by it's unique B<id> string) will cause B<req> 88specifying an engine (by its unique B<id> string) will cause B<dsaparam>
89to attempt to obtain a functional reference to the specified engine, 89to attempt to obtain a functional reference to the specified engine,
90thus initialising it if needed. The engine will then be set as the default 90thus initialising it if needed. The engine will then be set as the default
91for all available algorithms. 91for all available algorithms.
diff --git a/src/lib/libssl/src/doc/apps/enc.pod b/src/lib/libssl/src/doc/apps/enc.pod
index 4391c93360..3dee4ed992 100644
--- a/src/lib/libssl/src/doc/apps/enc.pod
+++ b/src/lib/libssl/src/doc/apps/enc.pod
@@ -12,17 +12,24 @@ B<openssl enc -ciphername>
12[B<-pass arg>] 12[B<-pass arg>]
13[B<-e>] 13[B<-e>]
14[B<-d>] 14[B<-d>]
15[B<-a>] 15[B<-a/-base64>]
16[B<-A>] 16[B<-A>]
17[B<-k password>] 17[B<-k password>]
18[B<-kfile filename>] 18[B<-kfile filename>]
19[B<-K key>] 19[B<-K key>]
20[B<-iv IV>] 20[B<-iv IV>]
21[B<-S salt>]
22[B<-salt>]
23[B<-nosalt>]
24[B<-z>]
25[B<-md>]
21[B<-p>] 26[B<-p>]
22[B<-P>] 27[B<-P>]
23[B<-bufsize number>] 28[B<-bufsize number>]
24[B<-nopad>] 29[B<-nopad>]
25[B<-debug>] 30[B<-debug>]
31[B<-none>]
32[B<-engine id>]
26 33
27=head1 DESCRIPTION 34=head1 DESCRIPTION
28 35
@@ -50,15 +57,13 @@ see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)|openssl(1)>.
50 57
51=item B<-salt> 58=item B<-salt>
52 59
53use a salt in the key derivation routines. This option should B<ALWAYS> 60use a salt in the key derivation routines. This is the default.
54be used unless compatibility with previous versions of OpenSSL or SSLeay
55is required. This option is only present on OpenSSL versions 0.9.5 or
56above.
57 61
58=item B<-nosalt> 62=item B<-nosalt>
59 63
60don't use a salt in the key derivation routines. This is the default for 64don't use a salt in the key derivation routines. This option B<SHOULD NOT> be
61compatibility with previous versions of OpenSSL and SSLeay. 65used except for test purposes or compatibility with ancient versions of OpenSSL
66and SSLeay.
62 67
63=item B<-e> 68=item B<-e>
64 69
@@ -74,6 +79,10 @@ base64 process the data. This means that if encryption is taking place
74the data is base64 encoded after encryption. If decryption is set then 79the data is base64 encoded after encryption. If decryption is set then
75the input data is base64 decoded before being decrypted. 80the input data is base64 decoded before being decrypted.
76 81
82=item B<-base64>
83
84same as B<-a>
85
77=item B<-A> 86=item B<-A>
78 87
79if the B<-a> option is set then base64 process the data on one line. 88if the B<-a> option is set then base64 process the data on one line.
@@ -89,10 +98,18 @@ read the password to derive the key from the first line of B<filename>.
89This is for compatibility with previous versions of OpenSSL. Superseded by 98This is for compatibility with previous versions of OpenSSL. Superseded by
90the B<-pass> argument. 99the B<-pass> argument.
91 100
101=item B<-nosalt>
102
103do not use a salt
104
105=item B<-salt>
106
107use salt (randomly generated or provide with B<-S> option) when
108encrypting (this is the default).
109
92=item B<-S salt> 110=item B<-S salt>
93 111
94the actual salt to use: this must be represented as a string comprised only 112the actual salt to use: this must be represented as a string of hex digits.
95of hex digits.
96 113
97=item B<-K key> 114=item B<-K key>
98 115
@@ -131,12 +148,34 @@ disable standard block padding
131 148
132debug the BIOs used for I/O. 149debug the BIOs used for I/O.
133 150
151=item B<-z>
152
153Compress or decompress clear text using zlib before encryption or after
154decryption. This option exists only if OpenSSL with compiled with zlib
155or zlib-dynamic option.
156
157=item B<-none>
158
159Use NULL cipher (no encryption or decryption of input).
160
134=back 161=back
135 162
136=head1 NOTES 163=head1 NOTES
137 164
138The program can be called either as B<openssl ciphername> or 165The program can be called either as B<openssl ciphername> or
139B<openssl enc -ciphername>. 166B<openssl enc -ciphername>. But the first form doesn't work with
167engine-provided ciphers, because this form is processed before the
168configuration file is read and any ENGINEs loaded.
169
170Engines which provide entirely new encryption algorithms (such as ccgost
171engine which provides gost89 algorithm) should be configured in the
172configuration file. Engines, specified in the command line using -engine
173options can only be used for hadrware-assisted implementations of
174ciphers, which are supported by OpenSSL core or other engine, specified
175in the configuration file.
176
177When enc command lists supported ciphers, ciphers provided by engines,
178specified in the configuration files are listed too.
140 179
141A password will be prompted for to derive the key and IV if necessary. 180A password will be prompted for to derive the key and IV if necessary.
142 181
@@ -169,6 +208,14 @@ Blowfish and RC5 algorithms use a 128 bit key.
169 208
170=head1 SUPPORTED CIPHERS 209=head1 SUPPORTED CIPHERS
171 210
211Note that some of these ciphers can be disabled at compile time
212and some are available only if an appropriate engine is configured
213in the configuration file. The output of the B<enc> command run with
214unsupported options (for example B<openssl enc -help>) includes a
215list of ciphers, supported by your versesion of OpenSSL, including
216ones provided by configured engines.
217
218
172 base64 Base 64 219 base64 Base 64
173 220
174 bf-cbc Blowfish in CBC mode 221 bf-cbc Blowfish in CBC mode
@@ -203,6 +250,9 @@ Blowfish and RC5 algorithms use a 128 bit key.
203 250
204 desx DESX algorithm. 251 desx DESX algorithm.
205 252
253 gost89 GOST 28147-89 in CFB mode (provided by ccgost engine)
254 gost89-cnt `GOST 28147-89 in CNT mode (provided by ccgost engine)
255
206 idea-cbc IDEA algorithm in CBC mode 256 idea-cbc IDEA algorithm in CBC mode
207 idea same as idea-cbc 257 idea same as idea-cbc
208 idea-cfb IDEA in CFB mode 258 idea-cfb IDEA in CFB mode
diff --git a/src/lib/libssl/src/doc/apps/gendsa.pod b/src/lib/libssl/src/doc/apps/gendsa.pod
index 2c56cc7888..8c7f114ca0 100644
--- a/src/lib/libssl/src/doc/apps/gendsa.pod
+++ b/src/lib/libssl/src/doc/apps/gendsa.pod
@@ -40,7 +40,7 @@ all others.
40 40
41=item B<-engine id> 41=item B<-engine id>
42 42
43specifying an engine (by it's unique B<id> string) will cause B<req> 43specifying an engine (by its unique B<id> string) will cause B<gendsa>
44to attempt to obtain a functional reference to the specified engine, 44to attempt to obtain a functional reference to the specified engine,
45thus initialising it if needed. The engine will then be set as the default 45thus initialising it if needed. The engine will then be set as the default
46for all available algorithms. 46for all available algorithms.
diff --git a/src/lib/libssl/src/doc/apps/genrsa.pod b/src/lib/libssl/src/doc/apps/genrsa.pod
index 25af4d1475..7dcac2a779 100644
--- a/src/lib/libssl/src/doc/apps/genrsa.pod
+++ b/src/lib/libssl/src/doc/apps/genrsa.pod
@@ -57,7 +57,7 @@ all others.
57 57
58=item B<-engine id> 58=item B<-engine id>
59 59
60specifying an engine (by it's unique B<id> string) will cause B<req> 60specifying an engine (by its unique B<id> string) will cause B<genrsa>
61to attempt to obtain a functional reference to the specified engine, 61to attempt to obtain a functional reference to the specified engine,
62thus initialising it if needed. The engine will then be set as the default 62thus initialising it if needed. The engine will then be set as the default
63for all available algorithms. 63for all available algorithms.
diff --git a/src/lib/libssl/src/doc/apps/ocsp.pod b/src/lib/libssl/src/doc/apps/ocsp.pod
index b58ddc1788..af2e12e418 100644
--- a/src/lib/libssl/src/doc/apps/ocsp.pod
+++ b/src/lib/libssl/src/doc/apps/ocsp.pod
@@ -51,6 +51,7 @@ B<openssl> B<ocsp>
51[B<-ndays n>] 51[B<-ndays n>]
52[B<-resp_key_id>] 52[B<-resp_key_id>]
53[B<-nrequest n>] 53[B<-nrequest n>]
54[B<-md5|-sha1|...>]
54 55
55=head1 DESCRIPTION 56=head1 DESCRIPTION
56 57
@@ -206,6 +207,11 @@ information is immediately available. In this case the age of the B<notBefore> f
206is checked to see it is not older than B<age> seconds old. By default this additional 207is checked to see it is not older than B<age> seconds old. By default this additional
207check is not performed. 208check is not performed.
208 209
210=item B<-md5|-sha1|-sha256|-ripemod160|...>
211
212this option sets digest algorithm to use for certificate identification
213in the OCSP request. By default SHA-1 is used.
214
209=back 215=back
210 216
211=head1 OCSP SERVER OPTIONS 217=head1 OCSP SERVER OPTIONS
diff --git a/src/lib/libssl/src/doc/apps/openssl.pod b/src/lib/libssl/src/doc/apps/openssl.pod
index 964cdf0f02..738142e9ff 100644
--- a/src/lib/libssl/src/doc/apps/openssl.pod
+++ b/src/lib/libssl/src/doc/apps/openssl.pod
@@ -12,7 +12,7 @@ I<command>
12[ I<command_opts> ] 12[ I<command_opts> ]
13[ I<command_args> ] 13[ I<command_args> ]
14 14
15B<openssl> [ B<list-standard-commands> | B<list-message-digest-commands> | B<list-cipher-commands> ] 15B<openssl> [ B<list-standard-commands> | B<list-message-digest-commands> | B<list-cipher-commands> | B<list-cipher-algorithms> | B<list-message-digest-algorithms> | B<list-public-key-algorithms>]
16 16
17B<openssl> B<no->I<XXX> [ I<arbitrary options> ] 17B<openssl> B<no->I<XXX> [ I<arbitrary options> ]
18 18
@@ -26,12 +26,14 @@ The B<openssl> program is a command line tool for using the various
26cryptography functions of OpenSSL's B<crypto> library from the shell. 26cryptography functions of OpenSSL's B<crypto> library from the shell.
27It can be used for 27It can be used for
28 28
29 o Creation of RSA, DH and DSA key parameters 29 o Creation and management of private keys, public keys and parameters
30 o Public key cryptographic operations
30 o Creation of X.509 certificates, CSRs and CRLs 31 o Creation of X.509 certificates, CSRs and CRLs
31 o Calculation of Message Digests 32 o Calculation of Message Digests
32 o Encryption and Decryption with Ciphers 33 o Encryption and Decryption with Ciphers
33 o SSL/TLS Client and Server Tests 34 o SSL/TLS Client and Server Tests
34 o Handling of S/MIME signed or encrypted mail 35 o Handling of S/MIME signed or encrypted mail
36 o Time Stamp requests, generation and verification
35 37
36=head1 COMMAND SUMMARY 38=head1 COMMAND SUMMARY
37 39
@@ -44,6 +46,14 @@ and B<list-cipher-commands> output a list (one entry per line) of the names
44of all standard commands, message digest commands, or cipher commands, 46of all standard commands, message digest commands, or cipher commands,
45respectively, that are available in the present B<openssl> utility. 47respectively, that are available in the present B<openssl> utility.
46 48
49The pseudo-commands B<list-cipher-algorithms> and
50B<list-message-digest-algorithms> list all cipher and message digest names, one entry per line. Aliases are listed as:
51
52 from => to
53
54The pseudo-command B<list-public-key-algorithms> lists all supported public
55key algorithms.
56
47The pseudo-command B<no->I<XXX> tests whether a command of the 57The pseudo-command B<no->I<XXX> tests whether a command of the
48specified name is available. If no command named I<XXX> exists, it 58specified name is available. If no command named I<XXX> exists, it
49returns 0 (success) and prints B<no->I<XXX>; otherwise it returns 1 59returns 0 (success) and prints B<no->I<XXX>; otherwise it returns 1
@@ -71,6 +81,10 @@ Certificate Authority (CA) Management.
71 81
72Cipher Suite Description Determination. 82Cipher Suite Description Determination.
73 83
84=item L<B<cms>|cms(1)>
85
86CMS (Cryptographic Message Syntax) utility
87
74=item L<B<crl>|crl(1)> 88=item L<B<crl>|crl(1)>
75 89
76Certificate Revocation List (CRL) Management. 90Certificate Revocation List (CRL) Management.
@@ -88,25 +102,40 @@ Message Digest Calculation.
88Diffie-Hellman Parameter Management. 102Diffie-Hellman Parameter Management.
89Obsoleted by L<B<dhparam>|dhparam(1)>. 103Obsoleted by L<B<dhparam>|dhparam(1)>.
90 104
105=item L<B<dhparam>|dhparam(1)>
106
107Generation and Management of Diffie-Hellman Parameters. Superseded by
108L<B<genpkey>|genpkey(1)> and L<B<pkeyparam>|pkeyparam(1)>
109
110
91=item L<B<dsa>|dsa(1)> 111=item L<B<dsa>|dsa(1)>
92 112
93DSA Data Management. 113DSA Data Management.
94 114
95=item L<B<dsaparam>|dsaparam(1)> 115=item L<B<dsaparam>|dsaparam(1)>
96 116
97DSA Parameter Generation. 117DSA Parameter Generation and Management. Superseded by
118L<B<genpkey>|genpkey(1)> and L<B<pkeyparam>|pkeyparam(1)>
119
120=item L<B<ec>|ec(1)>
121
122EC (Elliptic curve) key processing
123
124=item L<B<ecparam>|ecparam(1)>
125
126EC parameter manipulation and generation
98 127
99=item L<B<enc>|enc(1)> 128=item L<B<enc>|enc(1)>
100 129
101Encoding with Ciphers. 130Encoding with Ciphers.
102 131
103=item L<B<errstr>|errstr(1)> 132=item L<B<engine>|engine(1)>
104 133
105Error Number to Error String Conversion. 134Engine (loadble module) information and manipulation.
106 135
107=item L<B<dhparam>|dhparam(1)> 136=item L<B<errstr>|errstr(1)>
108 137
109Generation and Management of Diffie-Hellman Parameters. 138Error Number to Error String Conversion.
110 139
111=item B<gendh> 140=item B<gendh>
112 141
@@ -115,11 +144,20 @@ Obsoleted by L<B<dhparam>|dhparam(1)>.
115 144
116=item L<B<gendsa>|gendsa(1)> 145=item L<B<gendsa>|gendsa(1)>
117 146
118Generation of DSA Parameters. 147Generation of DSA Private Key from Parameters. Superseded by
148L<B<genpkey>|genpkey(1)> and L<B<pkey>|pkey(1)>
149
150=item L<B<genpkey>|genpkey(1)>
151
152Generation of Private Key or Parameters.
119 153
120=item L<B<genrsa>|genrsa(1)> 154=item L<B<genrsa>|genrsa(1)>
121 155
122Generation of RSA Parameters. 156Generation of RSA Private Key. Superceded by L<B<genpkey>|genpkey(1)>.
157
158=item L<B<nseq>|nseq(1)>
159
160Create or examine a netscape certificate sequence
123 161
124=item L<B<ocsp>|ocsp(1)> 162=item L<B<ocsp>|ocsp(1)>
125 163
@@ -137,21 +175,35 @@ PKCS#12 Data Management.
137 175
138PKCS#7 Data Management. 176PKCS#7 Data Management.
139 177
178=item L<B<pkey>|pkey(1)>
179
180Public and private key management.
181
182=item L<B<pkeyparam>|pkeyparam(1)>
183
184Public key algorithm parameter management.
185
186=item L<B<pkeyutl>|pkeyutl(1)>
187
188Public key algorithm cryptographic operation utility.
189
140=item L<B<rand>|rand(1)> 190=item L<B<rand>|rand(1)>
141 191
142Generate pseudo-random bytes. 192Generate pseudo-random bytes.
143 193
144=item L<B<req>|req(1)> 194=item L<B<req>|req(1)>
145 195
146X.509 Certificate Signing Request (CSR) Management. 196PKCS#10 X.509 Certificate Signing Request (CSR) Management.
147 197
148=item L<B<rsa>|rsa(1)> 198=item L<B<rsa>|rsa(1)>
149 199
150RSA Data Management. 200RSA key management.
201
151 202
152=item L<B<rsautl>|rsautl(1)> 203=item L<B<rsautl>|rsautl(1)>
153 204
154RSA utility for signing, verification, encryption, and decryption. 205RSA utility for signing, verification, encryption, and decryption. Superseded
206by L<B<pkeyutl>|pkeyutl(1)>
155 207
156=item L<B<s_client>|s_client(1)> 208=item L<B<s_client>|s_client(1)>
157 209
@@ -185,6 +237,14 @@ S/MIME mail processing.
185 237
186Algorithm Speed Measurement. 238Algorithm Speed Measurement.
187 239
240=item L<B<spkac>|spkac(1)>
241
242SPKAC printing and generating utility
243
244=item L<B<ts>|ts(1)>
245
246Time Stamping Authority tool (client/server)
247
188=item L<B<verify>|verify(1)> 248=item L<B<verify>|verify(1)>
189 249
190X.509 Certificate Verification. 250X.509 Certificate Verification.
@@ -227,6 +287,8 @@ SHA Digest
227 287
228SHA-1 Digest 288SHA-1 Digest
229 289
290=back
291
230=item B<sha224> 292=item B<sha224>
231 293
232SHA-224 Digest 294SHA-224 Digest
@@ -243,8 +305,6 @@ SHA-384 Digest
243 305
244SHA-512 Digest 306SHA-512 Digest
245 307
246=back
247
248=head2 ENCODING AND CIPHER COMMANDS 308=head2 ENCODING AND CIPHER COMMANDS
249 309
250=over 10 310=over 10
@@ -339,7 +399,7 @@ read the password from standard input.
339L<asn1parse(1)|asn1parse(1)>, L<ca(1)|ca(1)>, L<config(5)|config(5)>, 399L<asn1parse(1)|asn1parse(1)>, L<ca(1)|ca(1)>, L<config(5)|config(5)>,
340L<crl(1)|crl(1)>, L<crl2pkcs7(1)|crl2pkcs7(1)>, L<dgst(1)|dgst(1)>, 400L<crl(1)|crl(1)>, L<crl2pkcs7(1)|crl2pkcs7(1)>, L<dgst(1)|dgst(1)>,
341L<dhparam(1)|dhparam(1)>, L<dsa(1)|dsa(1)>, L<dsaparam(1)|dsaparam(1)>, 401L<dhparam(1)|dhparam(1)>, L<dsa(1)|dsa(1)>, L<dsaparam(1)|dsaparam(1)>,
342L<enc(1)|enc(1)>, L<gendsa(1)|gendsa(1)>, 402L<enc(1)|enc(1)>, L<gendsa(1)|gendsa(1)>, L<genpkey(1)|genpkey(1)>,
343L<genrsa(1)|genrsa(1)>, L<nseq(1)|nseq(1)>, L<openssl(1)|openssl(1)>, 403L<genrsa(1)|genrsa(1)>, L<nseq(1)|nseq(1)>, L<openssl(1)|openssl(1)>,
344L<passwd(1)|passwd(1)>, 404L<passwd(1)|passwd(1)>,
345L<pkcs12(1)|pkcs12(1)>, L<pkcs7(1)|pkcs7(1)>, L<pkcs8(1)|pkcs8(1)>, 405L<pkcs12(1)|pkcs12(1)>, L<pkcs7(1)|pkcs7(1)>, L<pkcs8(1)|pkcs8(1)>,
@@ -348,12 +408,13 @@ L<rsautl(1)|rsautl(1)>, L<s_client(1)|s_client(1)>,
348L<s_server(1)|s_server(1)>, L<s_time(1)|s_time(1)>, 408L<s_server(1)|s_server(1)>, L<s_time(1)|s_time(1)>,
349L<smime(1)|smime(1)>, L<spkac(1)|spkac(1)>, 409L<smime(1)|smime(1)>, L<spkac(1)|spkac(1)>,
350L<verify(1)|verify(1)>, L<version(1)|version(1)>, L<x509(1)|x509(1)>, 410L<verify(1)|verify(1)>, L<version(1)|version(1)>, L<x509(1)|x509(1)>,
351L<crypto(3)|crypto(3)>, L<ssl(3)|ssl(3)> 411L<crypto(3)|crypto(3)>, L<ssl(3)|ssl(3)>, L<x509v3_config(5)|x509v3_config(5)>
352 412
353=head1 HISTORY 413=head1 HISTORY
354 414
355The openssl(1) document appeared in OpenSSL 0.9.2. 415The openssl(1) document appeared in OpenSSL 0.9.2.
356The B<list->I<XXX>B<-commands> pseudo-commands were added in OpenSSL 0.9.3; 416The B<list->I<XXX>B<-commands> pseudo-commands were added in OpenSSL 0.9.3;
417The B<list->I<XXX>B<-algorithms> pseudo-commands were added in OpenSSL 1.0.0;
357the B<no->I<XXX> pseudo-commands were added in OpenSSL 0.9.5a. 418the B<no->I<XXX> pseudo-commands were added in OpenSSL 0.9.5a.
358For notes on the availability of other commands, see their individual 419For notes on the availability of other commands, see their individual
359manual pages. 420manual pages.
diff --git a/src/lib/libssl/src/doc/apps/pkcs12.pod b/src/lib/libssl/src/doc/apps/pkcs12.pod
index 7d84146293..f69a5c5a4c 100644
--- a/src/lib/libssl/src/doc/apps/pkcs12.pod
+++ b/src/lib/libssl/src/doc/apps/pkcs12.pod
@@ -23,22 +23,23 @@ B<openssl> B<pkcs12>
23[B<-cacerts>] 23[B<-cacerts>]
24[B<-nokeys>] 24[B<-nokeys>]
25[B<-info>] 25[B<-info>]
26[B<-des>] 26[B<-des | -des3 | -idea | -aes128 | -aes192 | -aes256 | -camellia128 | -camellia192 | -camellia256 | -nodes>]
27[B<-des3>]
28[B<-idea>]
29[B<-nodes>]
30[B<-noiter>] 27[B<-noiter>]
31[B<-maciter>] 28[B<-maciter | -nomaciter | -nomac>]
32[B<-twopass>] 29[B<-twopass>]
33[B<-descert>] 30[B<-descert>]
34[B<-certpbe>] 31[B<-certpbe cipher>]
35[B<-keypbe>] 32[B<-keypbe cipher>]
33[B<-macalg digest>]
36[B<-keyex>] 34[B<-keyex>]
37[B<-keysig>] 35[B<-keysig>]
38[B<-password arg>] 36[B<-password arg>]
39[B<-passin arg>] 37[B<-passin arg>]
40[B<-passout arg>] 38[B<-passout arg>]
41[B<-rand file(s)>] 39[B<-rand file(s)>]
40[B<-CAfile file>]
41[B<-CApath dir>]
42[B<-CSP name>]
42 43
43=head1 DESCRIPTION 44=head1 DESCRIPTION
44 45
@@ -49,7 +50,7 @@ programs including Netscape, MSIE and MS Outlook.
49=head1 COMMAND OPTIONS 50=head1 COMMAND OPTIONS
50 51
51There are a lot of options the meaning of some depends of whether a PKCS#12 file 52There are a lot of options the meaning of some depends of whether a PKCS#12 file
52is being created or parsed. By default a PKCS#12 file is parsed a PKCS#12 53is being created or parsed. By default a PKCS#12 file is parsed. A PKCS#12
53file can be created by using the B<-export> option (see below). 54file can be created by using the B<-export> option (see below).
54 55
55=head1 PARSING OPTIONS 56=head1 PARSING OPTIONS
@@ -63,25 +64,25 @@ by default.
63 64
64=item B<-out filename> 65=item B<-out filename>
65 66
66The filename to write certificates and private keys to, standard output by default. 67The filename to write certificates and private keys to, standard output by
67They are all written in PEM format. 68default. They are all written in PEM format.
68 69
69=item B<-pass arg>, B<-passin arg> 70=item B<-pass arg>, B<-passin arg>
70 71
71the PKCS#12 file (i.e. input file) password source. For more information about the 72the PKCS#12 file (i.e. input file) password source. For more information about
72format of B<arg> see the B<PASS PHRASE ARGUMENTS> section in 73the format of B<arg> see the B<PASS PHRASE ARGUMENTS> section in
73L<openssl(1)|openssl(1)>. 74L<openssl(1)|openssl(1)>.
74 75
75=item B<-passout arg> 76=item B<-passout arg>
76 77
77pass phrase source to encrypt any outputed private keys with. For more information 78pass phrase source to encrypt any outputed private keys with. For more
78about the format of B<arg> see the B<PASS PHRASE ARGUMENTS> section in 79information about the format of B<arg> see the B<PASS PHRASE ARGUMENTS> section
79L<openssl(1)|openssl(1)>. 80in L<openssl(1)|openssl(1)>.
80 81
81=item B<-noout> 82=item B<-noout>
82 83
83this option inhibits output of the keys and certificates to the output file version 84this option inhibits output of the keys and certificates to the output file
84of the PKCS#12 file. 85version of the PKCS#12 file.
85 86
86=item B<-clcerts> 87=item B<-clcerts>
87 88
@@ -116,6 +117,14 @@ use triple DES to encrypt private keys before outputting, this is the default.
116 117
117use IDEA to encrypt private keys before outputting. 118use IDEA to encrypt private keys before outputting.
118 119
120=item B<-aes128>, B<-aes192>, B<-aes256>
121
122use AES to encrypt private keys before outputting.
123
124=item B<-camellia128>, B<-camellia192>, B<-camellia256>
125
126use Camellia to encrypt private keys before outputting.
127
119=item B<-nodes> 128=item B<-nodes>
120 129
121don't encrypt the private keys at all. 130don't encrypt the private keys at all.
@@ -148,10 +157,10 @@ by default.
148 157
149=item B<-in filename> 158=item B<-in filename>
150 159
151The filename to read certificates and private keys from, standard input by default. 160The filename to read certificates and private keys from, standard input by
152They must all be in PEM format. The order doesn't matter but one private key and 161default. They must all be in PEM format. The order doesn't matter but one
153its corresponding certificate should be present. If additional certificates are 162private key and its corresponding certificate should be present. If additional
154present they will also be included in the PKCS#12 file. 163certificates are present they will also be included in the PKCS#12 file.
155 164
156=item B<-inkey filename> 165=item B<-inkey filename>
157 166
@@ -160,8 +169,8 @@ in the input file.
160 169
161=item B<-name friendlyname> 170=item B<-name friendlyname>
162 171
163This specifies the "friendly name" for the certificate and private key. This name 172This specifies the "friendly name" for the certificate and private key. This
164is typically displayed in list boxes by software importing the file. 173name is typically displayed in list boxes by software importing the file.
165 174
166=item B<-certfile filename> 175=item B<-certfile filename>
167 176
@@ -201,9 +210,11 @@ key is encrypted using triple DES and the certificate using 40 bit RC2.
201=item B<-keypbe alg>, B<-certpbe alg> 210=item B<-keypbe alg>, B<-certpbe alg>
202 211
203these options allow the algorithm used to encrypt the private key and 212these options allow the algorithm used to encrypt the private key and
204certificates to be selected. Although any PKCS#5 v1.5 or PKCS#12 algorithms 213certificates to be selected. Any PKCS#5 v1.5 or PKCS#12 PBE algorithm name
205can be selected it is advisable only to use PKCS#12 algorithms. See the list 214can be used (see B<NOTES> section for more information). If a a cipher name
206in the B<NOTES> section for more information. 215(as output by the B<list-cipher-algorithms> command is specified then it
216is used with PKCS#5 v2.0. For interoperability reasons it is advisable to only
217use PKCS#12 algorithms.
207 218
208=item B<-keyex|-keysig> 219=item B<-keyex|-keysig>
209 220
@@ -216,6 +227,10 @@ S/MIME signing, authenticode (ActiveX control signing) and SSL client
216authentication, however due to a bug only MSIE 5.0 and later support 227authentication, however due to a bug only MSIE 5.0 and later support
217the use of signing only keys for SSL client authentication. 228the use of signing only keys for SSL client authentication.
218 229
230=item B<-macalg digest>
231
232specify the MAC digest algorithm. If not included them SHA1 will be used.
233
219=item B<-nomaciter>, B<-noiter> 234=item B<-nomaciter>, B<-noiter>
220 235
221these options affect the iteration counts on the MAC and key algorithms. 236these options affect the iteration counts on the MAC and key algorithms.
@@ -239,6 +254,10 @@ option.
239This option is included for compatibility with previous versions, it used 254This option is included for compatibility with previous versions, it used
240to be needed to use MAC iterations counts but they are now used by default. 255to be needed to use MAC iterations counts but they are now used by default.
241 256
257=item B<-nomac>
258
259don't attempt to provide the MAC integrity.
260
242=item B<-rand file(s)> 261=item B<-rand file(s)>
243 262
244a file or files containing random data used to seed the random number 263a file or files containing random data used to seed the random number
@@ -247,6 +266,20 @@ Multiple files can be specified separated by a OS-dependent character.
247The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for 266The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for
248all others. 267all others.
249 268
269=item B<-CAfile file>
270
271CA storage as a file.
272
273=item B<-CApath dir>
274
275CA storage as a directory. This directory must be a standard certificate
276directory: that is a hash of each subject name (using B<x509 -hash>) should be
277linked to each certificate.
278
279=item B<-CSP name>
280
281write B<name> as a Microsoft CSP name.
282
250=back 283=back
251 284
252=head1 NOTES 285=head1 NOTES
diff --git a/src/lib/libssl/src/doc/apps/pkcs7.pod b/src/lib/libssl/src/doc/apps/pkcs7.pod
index a0a636328b..acfb8100f0 100644
--- a/src/lib/libssl/src/doc/apps/pkcs7.pod
+++ b/src/lib/libssl/src/doc/apps/pkcs7.pod
@@ -62,7 +62,7 @@ is B<-print_certs> is set).
62 62
63=item B<-engine id> 63=item B<-engine id>
64 64
65specifying an engine (by it's unique B<id> string) will cause B<req> 65specifying an engine (by its unique B<id> string) will cause B<pkcs7>
66to attempt to obtain a functional reference to the specified engine, 66to attempt to obtain a functional reference to the specified engine,
67thus initialising it if needed. The engine will then be set as the default 67thus initialising it if needed. The engine will then be set as the default
68for all available algorithms. 68for all available algorithms.
diff --git a/src/lib/libssl/src/doc/apps/pkcs8.pod b/src/lib/libssl/src/doc/apps/pkcs8.pod
index 68ecd65b10..84abee78f3 100644
--- a/src/lib/libssl/src/doc/apps/pkcs8.pod
+++ b/src/lib/libssl/src/doc/apps/pkcs8.pod
@@ -125,7 +125,7 @@ list of possible algorithms is included below.
125 125
126=item B<-engine id> 126=item B<-engine id>
127 127
128specifying an engine (by it's unique B<id> string) will cause B<req> 128specifying an engine (by its unique B<id> string) will cause B<pkcs8>
129to attempt to obtain a functional reference to the specified engine, 129to attempt to obtain a functional reference to the specified engine,
130thus initialising it if needed. The engine will then be set as the default 130thus initialising it if needed. The engine will then be set as the default
131for all available algorithms. 131for all available algorithms.
diff --git a/src/lib/libssl/src/doc/apps/req.pod b/src/lib/libssl/src/doc/apps/req.pod
index 82b565c9d4..ff48bbdf28 100644
--- a/src/lib/libssl/src/doc/apps/req.pod
+++ b/src/lib/libssl/src/doc/apps/req.pod
@@ -22,12 +22,13 @@ B<openssl> B<req>
22[B<-new>] 22[B<-new>]
23[B<-rand file(s)>] 23[B<-rand file(s)>]
24[B<-newkey rsa:bits>] 24[B<-newkey rsa:bits>]
25[B<-newkey dsa:file>] 25[B<-newkey alg:file>]
26[B<-nodes>] 26[B<-nodes>]
27[B<-key filename>] 27[B<-key filename>]
28[B<-keyform PEM|DER>] 28[B<-keyform PEM|DER>]
29[B<-keyout filename>] 29[B<-keyout filename>]
30[B<-[md5|sha1|md2|mdc2]>] 30[B<-keygen_engine id>]
31[B<-[digest]>]
31[B<-config filename>] 32[B<-config filename>]
32[B<-subj arg>] 33[B<-subj arg>]
33[B<-multivalue-rdn>] 34[B<-multivalue-rdn>]
@@ -35,11 +36,15 @@ B<openssl> B<req>
35[B<-days n>] 36[B<-days n>]
36[B<-set_serial n>] 37[B<-set_serial n>]
37[B<-asn1-kludge>] 38[B<-asn1-kludge>]
39[B<-no-asn1-kludge>]
38[B<-newhdr>] 40[B<-newhdr>]
39[B<-extensions section>] 41[B<-extensions section>]
40[B<-reqexts section>] 42[B<-reqexts section>]
41[B<-utf8>] 43[B<-utf8>]
42[B<-nameopt>] 44[B<-nameopt>]
45[B<-reqopt>]
46[B<-subject>]
47[B<-subj arg>]
43[B<-batch>] 48[B<-batch>]
44[B<-verbose>] 49[B<-verbose>]
45[B<-engine id>] 50[B<-engine id>]
@@ -91,6 +96,11 @@ see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)|openssl(1)>.
91 96
92prints out the certificate request in text form. 97prints out the certificate request in text form.
93 98
99=item B<-subject>
100
101prints out the request subject (or certificate subject if B<-x509> is
102specified)
103
94=item B<-pubkey> 104=item B<-pubkey>
95 105
96outputs the public key. 106outputs the public key.
@@ -118,6 +128,13 @@ in the configuration file and any requested extensions.
118If the B<-key> option is not used it will generate a new RSA private 128If the B<-key> option is not used it will generate a new RSA private
119key using information specified in the configuration file. 129key using information specified in the configuration file.
120 130
131=item B<-subj arg>
132
133Replaces subject field of input request with specified data and outputs
134modified request. The arg must be formatted as
135I</type0=value0/type1=value1/type2=...>,
136characters may be escaped by \ (backslash), no spaces are skipped.
137
121=item B<-rand file(s)> 138=item B<-rand file(s)>
122 139
123a file or files containing random data used to seed the random number 140a file or files containing random data used to seed the random number
@@ -129,10 +146,35 @@ all others.
129=item B<-newkey arg> 146=item B<-newkey arg>
130 147
131this option creates a new certificate request and a new private 148this option creates a new certificate request and a new private
132key. The argument takes one of two forms. B<rsa:nbits>, where 149key. The argument takes one of several forms. B<rsa:nbits>, where
133B<nbits> is the number of bits, generates an RSA key B<nbits> 150B<nbits> is the number of bits, generates an RSA key B<nbits>
134in size. B<dsa:filename> generates a DSA key using the parameters 151in size. If B<nbits> is omitted, i.e. B<-newkey rsa> specified,
135in the file B<filename>. 152the default key size, specified in the configuration file is used.
153
154All other algorithms support the B<-newkey alg:file> form, where file may be
155an algorithm parameter file, created by the B<genpkey -genparam> command
156or and X.509 certificate for a key with approriate algorithm.
157
158B<param:file> generates a key using the parameter file or certificate B<file>,
159the algorithm is determined by the parameters. B<algname:file> use algorithm
160B<algname> and parameter file B<file>: the two algorithms must match or an
161error occurs. B<algname> just uses algorithm B<algname>, and parameters,
162if neccessary should be specified via B<-pkeyopt> parameter.
163
164B<dsa:filename> generates a DSA key using the parameters
165in the file B<filename>. B<ec:filename> generates EC key (usable both with
166ECDSA or ECDH algorithms), B<gost2001:filename> generates GOST R
16734.10-2001 key (requires B<ccgost> engine configured in the configuration
168file). If just B<gost2001> is specified a parameter set should be
169specified by B<-pkeyopt paramset:X>
170
171
172=item B<-pkeyopt opt:value>
173
174set the public key algorithm option B<opt> to B<value>. The precise set of
175options supported depends on the public key algorithm used and its
176implementation. See B<KEY GENERATION OPTIONS> in the B<genpkey> manual page
177for more details.
136 178
137=item B<-key filename> 179=item B<-key filename>
138 180
@@ -155,11 +197,15 @@ configuration file is used.
155if this option is specified then if a private key is created it 197if this option is specified then if a private key is created it
156will not be encrypted. 198will not be encrypted.
157 199
158=item B<-[md5|sha1|md2|mdc2]> 200=item B<-[digest]>
201
202this specifies the message digest to sign the request with (such as
203B<-md5>, B<-sha1>). This overrides the digest algorithm specified in
204the configuration file.
159 205
160this specifies the message digest to sign the request with. This 206Some public key algorithms may override this choice. For instance, DSA
161overrides the digest algorithm specified in the configuration file. 207signatures always use SHA1, GOST R 34.10 signatures always use
162This option is ignored for DSA requests: they always use SHA1. 208GOST R 34.11-94 (B<-md_gost94>).
163 209
164=item B<-config filename> 210=item B<-config filename>
165 211
@@ -227,6 +273,15 @@ B<option> argument can be a single option or multiple options separated by
227commas. Alternatively the B<-nameopt> switch may be used more than once to 273commas. Alternatively the B<-nameopt> switch may be used more than once to
228set multiple options. See the L<x509(1)|x509(1)> manual page for details. 274set multiple options. See the L<x509(1)|x509(1)> manual page for details.
229 275
276=item B<-reqopt>
277
278customise the output format used with B<-text>. The B<option> argument can be
279a single option or multiple options separated by commas.
280
281See discission of the B<-certopt> parameter in the L<B<x509>|x509(1)>
282command.
283
284
230=item B<-asn1-kludge> 285=item B<-asn1-kludge>
231 286
232by default the B<req> command outputs certificate requests containing 287by default the B<req> command outputs certificate requests containing
@@ -242,6 +297,10 @@ B<SET OF> whereas the correct form does.
242 297
243It should be noted that very few CAs still require the use of this option. 298It should be noted that very few CAs still require the use of this option.
244 299
300=item B<-no-asn1-kludge>
301
302Reverses effect of B<-asn1-kludge>
303
245=item B<-newhdr> 304=item B<-newhdr>
246 305
247Adds the word B<NEW> to the PEM file header and footer lines on the outputed 306Adds the word B<NEW> to the PEM file header and footer lines on the outputed
@@ -257,11 +316,16 @@ print extra details about the operations being performed.
257 316
258=item B<-engine id> 317=item B<-engine id>
259 318
260specifying an engine (by it's unique B<id> string) will cause B<req> 319specifying an engine (by its unique B<id> string) will cause B<req>
261to attempt to obtain a functional reference to the specified engine, 320to attempt to obtain a functional reference to the specified engine,
262thus initialising it if needed. The engine will then be set as the default 321thus initialising it if needed. The engine will then be set as the default
263for all available algorithms. 322for all available algorithms.
264 323
324=item B<-keygen_engine id>
325
326specifies an engine (by its unique B<id> string) which would be used
327for key generation operations.
328
265=back 329=back
266 330
267=head1 CONFIGURATION FILE FORMAT 331=head1 CONFIGURATION FILE FORMAT
@@ -344,7 +408,9 @@ problems with BMPStrings and UTF8Strings: in particular Netscape.
344 408
345this specifies the configuration file section containing a list of 409this specifies the configuration file section containing a list of
346extensions to add to the certificate request. It can be overridden 410extensions to add to the certificate request. It can be overridden
347by the B<-reqexts> command line switch. 411by the B<-reqexts> command line switch. See the
412L<x509v3_config(5)|x509v3_config(5)> manual page for details of the
413extension section format.
348 414
349=item B<x509_extensions> 415=item B<x509_extensions>
350 416
@@ -606,6 +672,7 @@ address in subjectAltName should be input by the user.
606=head1 SEE ALSO 672=head1 SEE ALSO
607 673
608L<x509(1)|x509(1)>, L<ca(1)|ca(1)>, L<genrsa(1)|genrsa(1)>, 674L<x509(1)|x509(1)>, L<ca(1)|ca(1)>, L<genrsa(1)|genrsa(1)>,
609L<gendsa(1)|gendsa(1)>, L<config(5)|config(5)> 675L<gendsa(1)|gendsa(1)>, L<config(5)|config(5)>,
676L<x509v3_config(5)|x509v3_config(5)>
610 677
611=cut 678=cut
diff --git a/src/lib/libssl/src/doc/apps/rsa.pod b/src/lib/libssl/src/doc/apps/rsa.pod
index 4d7640995e..69b2bef82c 100644
--- a/src/lib/libssl/src/doc/apps/rsa.pod
+++ b/src/lib/libssl/src/doc/apps/rsa.pod
@@ -120,7 +120,7 @@ the input is a public key.
120 120
121=item B<-engine id> 121=item B<-engine id>
122 122
123specifying an engine (by it's unique B<id> string) will cause B<req> 123specifying an engine (by its unique B<id> string) will cause B<rsa>
124to attempt to obtain a functional reference to the specified engine, 124to attempt to obtain a functional reference to the specified engine,
125thus initialising it if needed. The engine will then be set as the default 125thus initialising it if needed. The engine will then be set as the default
126for all available algorithms. 126for all available algorithms.
diff --git a/src/lib/libssl/src/doc/apps/s_client.pod b/src/lib/libssl/src/doc/apps/s_client.pod
index c44d357cf7..4ebf7b5854 100644
--- a/src/lib/libssl/src/doc/apps/s_client.pod
+++ b/src/lib/libssl/src/doc/apps/s_client.pod
@@ -101,6 +101,11 @@ also used when building the client certificate chain.
101A file containing trusted certificates to use during server authentication 101A file containing trusted certificates to use during server authentication
102and to use when attempting to build the client certificate chain. 102and to use when attempting to build the client certificate chain.
103 103
104=item B<-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig>
105
106Set various certificate chain valiadition option. See the
107L<B<verify>|verify(1)> manual page for details.
108
104=item B<-reconnect> 109=item B<-reconnect>
105 110
106reconnects to the same server 5 times using the same session ID, this can 111reconnects to the same server 5 times using the same session ID, this can
@@ -161,6 +166,16 @@ input.
161inhibit printing of session and certificate information. This implicitly 166inhibit printing of session and certificate information. This implicitly
162turns on B<-ign_eof> as well. 167turns on B<-ign_eof> as well.
163 168
169=item B<-psk_identity identity>
170
171Use the PSK identity B<identity> when using a PSK cipher suite.
172
173=item B<-psk key>
174
175Use the PSK key B<key> when using a PSK cipher suite. The key is
176given as a hexadecimal number without leading 0x, for example -psk
1771a2b3c4d.
178
164=item B<-ssl2>, B<-ssl3>, B<-tls1>, B<-no_ssl2>, B<-no_ssl3>, B<-no_tls1> 179=item B<-ssl2>, B<-ssl3>, B<-tls1>, B<-no_ssl2>, B<-no_ssl3>, B<-no_tls1>
165 180
166these options disable the use of certain SSL or TLS protocols. By default 181these options disable the use of certain SSL or TLS protocols. By default
@@ -192,14 +207,11 @@ supported keywords are "smtp", "pop3", "imap", and "ftp".
192 207
193=item B<-tlsextdebug> 208=item B<-tlsextdebug>
194 209
195print out a hex dump of any TLS extensions received from the server. Note: this 210print out a hex dump of any TLS extensions received from the server.
196option is only available if extension support is explicitly enabled at compile
197time
198 211
199=item B<-no_ticket> 212=item B<-no_ticket>
200 213
201disable RFC4507bis session ticket support. Note: this option is only available 214disable RFC4507bis session ticket support.
202if extension support is explicitly enabled at compile time
203 215
204=item B<-sess_out filename> 216=item B<-sess_out filename>
205 217
@@ -212,7 +224,7 @@ connection from this session.
212 224
213=item B<-engine id> 225=item B<-engine id>
214 226
215specifying an engine (by it's unique B<id> string) will cause B<s_client> 227specifying an engine (by its unique B<id> string) will cause B<s_client>
216to attempt to obtain a functional reference to the specified engine, 228to attempt to obtain a functional reference to the specified engine,
217thus initialising it if needed. The engine will then be set as the default 229thus initialising it if needed. The engine will then be set as the default
218for all available algorithms. 230for all available algorithms.
@@ -274,9 +286,6 @@ Since the SSLv23 client hello cannot include compression methods or extensions
274these will only be supported if its use is disabled, for example by using the 286these will only be supported if its use is disabled, for example by using the
275B<-no_sslv2> option. 287B<-no_sslv2> option.
276 288
277TLS extensions are only supported in OpenSSL 0.9.8 if they are explictly
278enabled at compile time using for example the B<enable-tlsext> switch.
279
280=head1 BUGS 289=head1 BUGS
281 290
282Because this program has a lot of options and also because some of 291Because this program has a lot of options and also because some of
diff --git a/src/lib/libssl/src/doc/apps/s_server.pod b/src/lib/libssl/src/doc/apps/s_server.pod
index fdcc170e28..3e503e17e1 100644
--- a/src/lib/libssl/src/doc/apps/s_server.pod
+++ b/src/lib/libssl/src/doc/apps/s_server.pod
@@ -191,6 +191,16 @@ this option translated a line feed from the terminal into CR+LF.
191 191
192inhibit printing of session and certificate information. 192inhibit printing of session and certificate information.
193 193
194=item B<-psk_hint hint>
195
196Use the PSK identity hint B<hint> when using a PSK cipher suite.
197
198=item B<-psk key>
199
200Use the PSK key B<key> when using a PSK cipher suite. The key is
201given as a hexadecimal number without leading 0x, for example -psk
2021a2b3c4d.
203
194=item B<-ssl2>, B<-ssl3>, B<-tls1>, B<-no_ssl2>, B<-no_ssl3>, B<-no_tls1> 204=item B<-ssl2>, B<-ssl3>, B<-tls1>, B<-no_ssl2>, B<-no_ssl3>, B<-no_tls1>
195 205
196these options disable the use of certain SSL or TLS protocols. By default 206these options disable the use of certain SSL or TLS protocols. By default
@@ -246,7 +256,7 @@ are part of the HTTP response line and headers must end with CRLF).
246 256
247=item B<-engine id> 257=item B<-engine id>
248 258
249specifying an engine (by it's unique B<id> string) will cause B<s_server> 259specifying an engine (by its unique B<id> string) will cause B<s_server>
250to attempt to obtain a functional reference to the specified engine, 260to attempt to obtain a functional reference to the specified engine,
251thus initialising it if needed. The engine will then be set as the default 261thus initialising it if needed. The engine will then be set as the default
252for all available algorithms. 262for all available algorithms.
@@ -325,9 +335,6 @@ mean any CA is acceptable. This is useful for debugging purposes.
325 335
326The session parameters can printed out using the B<sess_id> program. 336The session parameters can printed out using the B<sess_id> program.
327 337
328TLS extensions are only supported in OpenSSL 0.9.8 if they are explictly
329enabled at compile time using for example the B<enable-tlsext> switch.
330
331=head1 BUGS 338=head1 BUGS
332 339
333Because this program has a lot of options and also because some of 340Because this program has a lot of options and also because some of
diff --git a/src/lib/libssl/src/doc/apps/smime.pod b/src/lib/libssl/src/doc/apps/smime.pod
index caf2d2689e..42c0733bcb 100644
--- a/src/lib/libssl/src/doc/apps/smime.pod
+++ b/src/lib/libssl/src/doc/apps/smime.pod
@@ -10,19 +10,10 @@ B<openssl> B<smime>
10[B<-encrypt>] 10[B<-encrypt>]
11[B<-decrypt>] 11[B<-decrypt>]
12[B<-sign>] 12[B<-sign>]
13[B<-resign>]
13[B<-verify>] 14[B<-verify>]
14[B<-pk7out>] 15[B<-pk7out>]
15[B<-des>] 16[B<-[cipher]>]
16[B<-des3>]
17[B<-rc2-40>]
18[B<-rc2-64>]
19[B<-rc2-128>]
20[B<-aes128>]
21[B<-aes192>]
22[B<-aes256>]
23[B<-camellia128>]
24[B<-camellia192>]
25[B<-camellia256>]
26[B<-in file>] 17[B<-in file>]
27[B<-certfile file>] 18[B<-certfile file>]
28[B<-signer file>] 19[B<-signer file>]
@@ -37,7 +28,11 @@ B<openssl> B<smime>
37[B<-from ad>] 28[B<-from ad>]
38[B<-subject s>] 29[B<-subject s>]
39[B<-text>] 30[B<-text>]
31[B<-indef>]
32[B<-noindef>]
33[B<-stream>]
40[B<-rand file(s)>] 34[B<-rand file(s)>]
35[B<-md digest>]
41[cert.pem]... 36[cert.pem]...
42 37
43=head1 DESCRIPTION 38=head1 DESCRIPTION
@@ -47,7 +42,7 @@ verify S/MIME messages.
47 42
48=head1 COMMAND OPTIONS 43=head1 COMMAND OPTIONS
49 44
50There are five operation options that set the type of operation to be performed. 45There are six operation options that set the type of operation to be performed.
51The meaning of the other options varies according to the operation type. 46The meaning of the other options varies according to the operation type.
52 47
53=over 4 48=over 4
@@ -78,6 +73,10 @@ the signed data. Both clear text and opaque signing is supported.
78 73
79takes an input message and writes out a PEM encoded PKCS#7 structure. 74takes an input message and writes out a PEM encoded PKCS#7 structure.
80 75
76=item B<-resign>
77
78resign a message: take an existing message and one or more new signers.
79
81=item B<-in filename> 80=item B<-in filename>
82 81
83the input message to be encrypted or signed or the MIME message to 82the input message to be encrypted or signed or the MIME message to
@@ -106,6 +105,21 @@ instead. This currently only affects the output format of the PKCS#7
106structure, if no PKCS#7 structure is being output (for example with 105structure, if no PKCS#7 structure is being output (for example with
107B<-verify> or B<-decrypt>) this option has no effect. 106B<-verify> or B<-decrypt>) this option has no effect.
108 107
108=item B<-stream -indef -noindef>
109
110the B<-stream> and B<-indef> options are equivalent and enable streaming I/O
111for encoding operations. This permits single pass processing of data without
112the need to hold the entire contents in memory, potentially supporting very
113large files. Streaming is automatically set for S/MIME signing with detached
114data if the output format is B<SMIME> it is currently off by default for all
115other operations.
116
117=item B<-noindef>
118
119disable streaming I/O where it would produce and indefinite length constructed
120encoding. This option currently has no effect. In future streaming will be
121enabled by default on all relevant operations and this option will disable it.
122
109=item B<-content filename> 123=item B<-content filename>
110 124
111This specifies a file containing the detached content, this is only 125This specifies a file containing the detached content, this is only
@@ -132,11 +146,20 @@ B<-verify>. This directory must be a standard certificate directory: that
132is a hash of each subject name (using B<x509 -hash>) should be linked 146is a hash of each subject name (using B<x509 -hash>) should be linked
133to each certificate. 147to each certificate.
134 148
135=item B<-des -des3 -rc2-40 -rc2-64 -rc2-128 -aes128 -aes192 -aes256 -camellia128 -camellia192 -camellia256> 149=item B<-md digest>
136 150
137the encryption algorithm to use. DES (56 bits), triple DES (168 bits), 151digest algorithm to use when signing or resigning. If not present then the
13840, 64 or 128 bit RC2, 128, 192 or 256 bit AES, or 128, 192 or 256 bit Camellia respectively. If not 152default digest algorithm for the signing key will be used (usually SHA1).
139specified 40 bit RC2 is used. Only used with B<-encrypt>. 153
154=item B<-[cipher]>
155
156the encryption algorithm to use. For example DES (56 bits) - B<-des>,
157triple DES (168 bits) - B<-des3>,
158EVP_get_cipherbyname() function) can also be used preceded by a dash, for
159example B<-aes_128_cbc>. See L<B<enc>|enc(1)> for list of ciphers
160supported by your version of OpenSSL.
161
162If not specified 40 bit RC2 is used. Only used with B<-encrypt>.
140 163
141=item B<-nointern> 164=item B<-nointern>
142 165
@@ -193,9 +216,10 @@ the signers certificates. The certificates should be in PEM format.
193 216
194=item B<-signer file> 217=item B<-signer file>
195 218
196the signers certificate when signing a message. If a message is 219a signing certificate when signing or resigning a message, this option can be
197being verified then the signers certificates will be written to this 220used multiple times if more than one signer is required. If a message is being
198file if the verification was successful. 221verified then the signers certificates will be written to this file if the
222verification was successful.
199 223
200=item B<-recip file> 224=item B<-recip file>
201 225
@@ -207,7 +231,8 @@ must match one of the recipients of the message or an error occurs.
207the private key to use when signing or decrypting. This must match the 231the private key to use when signing or decrypting. This must match the
208corresponding certificate. If this option is not specified then the 232corresponding certificate. If this option is not specified then the
209private key must be included in the certificate file specified with 233private key must be included in the certificate file specified with
210the B<-recip> or B<-signer> file. 234the B<-recip> or B<-signer> file. When signing this option can be used
235multiple times to specify successive keys.
211 236
212=item B<-passin arg> 237=item B<-passin arg>
213 238
@@ -234,6 +259,11 @@ portion of a message so they may be included manually. If signing
234then many S/MIME mail clients check the signers certificate's email 259then many S/MIME mail clients check the signers certificate's email
235address matches that specified in the From: address. 260address matches that specified in the From: address.
236 261
262=item B<-purpose, -ignore_critical, -issuer_checks, -crl_check, -crl_check_all, -policy_check, -extended_crl, -x509_strict, -policy -check_ss_sig>
263
264Set various options of certificate chain verification. See
265L<B<verify>|verify(1)> manual page for details.
266
237=back 267=back
238 268
239=head1 NOTES 269=head1 NOTES
@@ -261,6 +291,19 @@ The options B<-encrypt> and B<-decrypt> reflect common usage in S/MIME
261clients. Strictly speaking these process PKCS#7 enveloped data: PKCS#7 291clients. Strictly speaking these process PKCS#7 enveloped data: PKCS#7
262encrypted data is used for other purposes. 292encrypted data is used for other purposes.
263 293
294The B<-resign> option uses an existing message digest when adding a new
295signer. This means that attributes must be present in at least one existing
296signer using the same message digest or this operation will fail.
297
298The B<-stream> and B<-indef> options enable experimental streaming I/O support.
299As a result the encoding is BER using indefinite length constructed encoding
300and no longer DER. Streaming is supported for the B<-encrypt> operation and the
301B<-sign> operation if the content is not detached.
302
303Streaming is always used for the B<-sign> operation with detached data but
304since the content is no longer part of the PKCS#7 structure the encoding
305remains DER.
306
264=head1 EXIT CODES 307=head1 EXIT CODES
265 308
266=over 4 309=over 4
@@ -300,7 +343,7 @@ Create a cleartext signed message:
300 openssl smime -sign -in message.txt -text -out mail.msg \ 343 openssl smime -sign -in message.txt -text -out mail.msg \
301 -signer mycert.pem 344 -signer mycert.pem
302 345
303Create and opaque signed message 346Create an opaque signed message
304 347
305 openssl smime -sign -in message.txt -text -out mail.msg -nodetach \ 348 openssl smime -sign -in message.txt -text -out mail.msg -nodetach \
306 -signer mycert.pem 349 -signer mycert.pem
@@ -311,6 +354,11 @@ read the private key from another file:
311 openssl smime -sign -in in.txt -text -out mail.msg \ 354 openssl smime -sign -in in.txt -text -out mail.msg \
312 -signer mycert.pem -inkey mykey.pem -certfile mycerts.pem 355 -signer mycert.pem -inkey mykey.pem -certfile mycerts.pem
313 356
357Create a signed message with two signers:
358
359 openssl smime -sign -in message.txt -text -out mail.msg \
360 -signer mycert.pem -signer othercert.pem
361
314Send a signed message under Unix directly to sendmail, including headers: 362Send a signed message under Unix directly to sendmail, including headers:
315 363
316 openssl smime -sign -in in.txt -text -signer mycert.pem \ 364 openssl smime -sign -in in.txt -text -signer mycert.pem \
@@ -334,8 +382,8 @@ Sign and encrypt mail:
334 -from steve@openssl.org -to someone@somewhere \ 382 -from steve@openssl.org -to someone@somewhere \
335 -subject "Signed and Encrypted message" -des3 user.pem 383 -subject "Signed and Encrypted message" -des3 user.pem
336 384
337Note: the encryption command does not include the B<-text> option because the message 385Note: the encryption command does not include the B<-text> option because the
338being encrypted already has MIME headers. 386message being encrypted already has MIME headers.
339 387
340Decrypt mail: 388Decrypt mail:
341 389
@@ -361,16 +409,22 @@ Create an encrypted message using 128 bit Camellia:
361 409
362 openssl smime -encrypt -in plain.txt -camellia128 -out mail.msg cert.pem 410 openssl smime -encrypt -in plain.txt -camellia128 -out mail.msg cert.pem
363 411
412Add a signer to an existing message:
413
414 openssl smime -resign -in mail.msg -signer newsign.pem -out mail2.msg
415
364=head1 BUGS 416=head1 BUGS
365 417
366The MIME parser isn't very clever: it seems to handle most messages that I've thrown 418The MIME parser isn't very clever: it seems to handle most messages that I've
367at it but it may choke on others. 419thrown at it but it may choke on others.
368 420
369The code currently will only write out the signer's certificate to a file: if the 421The code currently will only write out the signer's certificate to a file: if
370signer has a separate encryption certificate this must be manually extracted. There 422the signer has a separate encryption certificate this must be manually
371should be some heuristic that determines the correct encryption certificate. 423extracted. There should be some heuristic that determines the correct
424encryption certificate.
372 425
373Ideally a database should be maintained of a certificates for each email address. 426Ideally a database should be maintained of a certificates for each email
427address.
374 428
375The code doesn't currently take note of the permitted symmetric encryption 429The code doesn't currently take note of the permitted symmetric encryption
376algorithms as supplied in the SMIMECapabilities signed attribute. this means the 430algorithms as supplied in the SMIMECapabilities signed attribute. this means the
@@ -382,4 +436,10 @@ No revocation checking is done on the signer's certificate.
382The current code can only handle S/MIME v2 messages, the more complex S/MIME v3 436The current code can only handle S/MIME v2 messages, the more complex S/MIME v3
383structures may cause parsing errors. 437structures may cause parsing errors.
384 438
439=head1 HISTORY
440
441The use of multiple B<-signer> options and the B<-resign> command were first
442added in OpenSSL 1.0.0
443
444
385=cut 445=cut
diff --git a/src/lib/libssl/src/doc/apps/speed.pod b/src/lib/libssl/src/doc/apps/speed.pod
index 0dcdba873e..1cd1998d16 100644
--- a/src/lib/libssl/src/doc/apps/speed.pod
+++ b/src/lib/libssl/src/doc/apps/speed.pod
@@ -44,7 +44,7 @@ This command is used to test the performance of cryptographic algorithms.
44 44
45=item B<-engine id> 45=item B<-engine id>
46 46
47specifying an engine (by it's unique B<id> string) will cause B<speed> 47specifying an engine (by its unique B<id> string) will cause B<speed>
48to attempt to obtain a functional reference to the specified engine, 48to attempt to obtain a functional reference to the specified engine,
49thus initialising it if needed. The engine will then be set as the default 49thus initialising it if needed. The engine will then be set as the default
50for all available algorithms. 50for all available algorithms.
diff --git a/src/lib/libssl/src/doc/apps/spkac.pod b/src/lib/libssl/src/doc/apps/spkac.pod
index c3f1ff9c64..97fb80e401 100644
--- a/src/lib/libssl/src/doc/apps/spkac.pod
+++ b/src/lib/libssl/src/doc/apps/spkac.pod
@@ -81,7 +81,7 @@ verifies the digital signature on the supplied SPKAC.
81 81
82=item B<-engine id> 82=item B<-engine id>
83 83
84specifying an engine (by it's unique B<id> string) will cause B<req> 84specifying an engine (by its unique B<id> string) will cause B<spkac>
85to attempt to obtain a functional reference to the specified engine, 85to attempt to obtain a functional reference to the specified engine,
86thus initialising it if needed. The engine will then be set as the default 86thus initialising it if needed. The engine will then be set as the default
87for all available algorithms. 87for all available algorithms.
diff --git a/src/lib/libssl/src/doc/apps/verify.pod b/src/lib/libssl/src/doc/apps/verify.pod
index ff2629d2cf..336098f1e3 100644
--- a/src/lib/libssl/src/doc/apps/verify.pod
+++ b/src/lib/libssl/src/doc/apps/verify.pod
@@ -10,6 +10,18 @@ B<openssl> B<verify>
10[B<-CApath directory>] 10[B<-CApath directory>]
11[B<-CAfile file>] 11[B<-CAfile file>]
12[B<-purpose purpose>] 12[B<-purpose purpose>]
13[B<-policy arg>]
14[B<-ignore_critical>]
15[B<-crl_check>]
16[B<-crl_check_all>]
17[B<-policy_check>]
18[B<-explicit_policy>]
19[B<-inhibit_any>]
20[B<-inhibit_map>]
21[B<-x509_strict>]
22[B<-extended_crl>]
23[B<-use_deltas>]
24[B<-policy_print>]
13[B<-untrusted file>] 25[B<-untrusted file>]
14[B<-help>] 26[B<-help>]
15[B<-issuer_checks>] 27[B<-issuer_checks>]
@@ -66,6 +78,68 @@ certificate was rejected. However the presence of rejection messages
66does not itself imply that anything is wrong: during the normal 78does not itself imply that anything is wrong: during the normal
67verify process several rejections may take place. 79verify process several rejections may take place.
68 80
81=item B<-policy arg>
82
83Enable policy processing and add B<arg> to the user-initial-policy-set
84(see RFC3280 et al). The policy B<arg> can be an object name an OID in numeric
85form. This argument can appear more than once.
86
87=item B<-policy_check>
88
89Enables certificate policy processing.
90
91=item B<-explicit_policy>
92
93Set policy variable require-explicit-policy (see RFC3280 et al).
94
95=item B<-inhibit_any>
96
97Set policy variable inhibit-any-policy (see RFC3280 et al).
98
99=item B<-inhibit_map>
100
101Set policy variable inhibit-policy-mapping (see RFC3280 et al).
102
103=item B<-policy_print>
104
105Print out diagnostics, related to policy checking
106
107=item B<-crl_check>
108
109Checks end entity certificate validity by attempting to lookup a valid CRL.
110If a valid CRL cannot be found an error occurs.
111
112=item B<-crl_check_all>
113
114Checks the validity of B<all> certificates in the chain by attempting
115to lookup valid CRLs.
116
117=item B<-ignore_critical>
118
119Normally if an unhandled critical extension is present which is not
120supported by OpenSSL the certificate is rejected (as required by
121RFC3280 et al). If this option is set critical extensions are
122ignored.
123
124=item B<-x509_strict>
125
126Disable workarounds for broken certificates which have to be disabled
127for strict X.509 compliance.
128
129=item B<-extended_crl>
130
131Enable extended CRL features such as indirect CRLs and alternate CRL
132signing keys.
133
134=item B<-use_deltas>
135
136Enable support for delta CRLs.
137
138=item B<-check_ss_sig>
139
140Verify the signature on the self-signed root CA. This is disabled by default
141because it doesn't add any security.
142
69=item B<-> 143=item B<->
70 144
71marks the last option. All arguments following this are assumed to be 145marks the last option. All arguments following this are assumed to be
@@ -166,12 +240,12 @@ the operation was successful.
166 240
167=item B<2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: unable to get issuer certificate> 241=item B<2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: unable to get issuer certificate>
168 242
169the issuer certificate could not be found: this occurs if the issuer certificate 243the issuer certificate of a looked up certificate could not be found. This
170of an untrusted certificate cannot be found. 244normally means the list of trusted certificates is not complete.
171 245
172=item B<3 X509_V_ERR_UNABLE_TO_GET_CRL: unable to get certificate CRL> 246=item B<3 X509_V_ERR_UNABLE_TO_GET_CRL: unable to get certificate CRL>
173 247
174the CRL of a certificate could not be found. Unused. 248the CRL of a certificate could not be found.
175 249
176=item B<4 X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE: unable to decrypt certificate's signature> 250=item B<4 X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE: unable to decrypt certificate's signature>
177 251
@@ -194,7 +268,7 @@ the signature of the certificate is invalid.
194 268
195=item B<8 X509_V_ERR_CRL_SIGNATURE_FAILURE: CRL signature failure> 269=item B<8 X509_V_ERR_CRL_SIGNATURE_FAILURE: CRL signature failure>
196 270
197the signature of the certificate is invalid. Unused. 271the signature of the certificate is invalid.
198 272
199=item B<9 X509_V_ERR_CERT_NOT_YET_VALID: certificate is not yet valid> 273=item B<9 X509_V_ERR_CERT_NOT_YET_VALID: certificate is not yet valid>
200 274
@@ -206,11 +280,11 @@ the certificate has expired: that is the notAfter date is before the current tim
206 280
207=item B<11 X509_V_ERR_CRL_NOT_YET_VALID: CRL is not yet valid> 281=item B<11 X509_V_ERR_CRL_NOT_YET_VALID: CRL is not yet valid>
208 282
209the CRL is not yet valid. Unused. 283the CRL is not yet valid.
210 284
211=item B<12 X509_V_ERR_CRL_HAS_EXPIRED: CRL has expired> 285=item B<12 X509_V_ERR_CRL_HAS_EXPIRED: CRL has expired>
212 286
213the CRL has expired. Unused. 287the CRL has expired.
214 288
215=item B<13 X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD: format error in certificate's notBefore field> 289=item B<13 X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD: format error in certificate's notBefore field>
216 290
@@ -222,11 +296,11 @@ the certificate notAfter field contains an invalid time.
222 296
223=item B<15 X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD: format error in CRL's lastUpdate field> 297=item B<15 X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD: format error in CRL's lastUpdate field>
224 298
225the CRL lastUpdate field contains an invalid time. Unused. 299the CRL lastUpdate field contains an invalid time.
226 300
227=item B<16 X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD: format error in CRL's nextUpdate field> 301=item B<16 X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD: format error in CRL's nextUpdate field>
228 302
229the CRL nextUpdate field contains an invalid time. Unused. 303the CRL nextUpdate field contains an invalid time.
230 304
231=item B<17 X509_V_ERR_OUT_OF_MEM: out of memory> 305=item B<17 X509_V_ERR_OUT_OF_MEM: out of memory>
232 306
@@ -244,8 +318,8 @@ be found locally.
244 318
245=item B<20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: unable to get local issuer certificate> 319=item B<20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY: unable to get local issuer certificate>
246 320
247the issuer certificate of a locally looked up certificate could not be found. This normally means 321the issuer certificate could not be found: this occurs if the issuer
248the list of trusted certificates is not complete. 322certificate of an untrusted certificate cannot be found.
249 323
250=item B<21 X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: unable to verify the first certificate> 324=item B<21 X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE: unable to verify the first certificate>
251 325
@@ -258,7 +332,7 @@ the certificate chain length is greater than the supplied maximum depth. Unused.
258 332
259=item B<23 X509_V_ERR_CERT_REVOKED: certificate revoked> 333=item B<23 X509_V_ERR_CERT_REVOKED: certificate revoked>
260 334
261the certificate has been revoked. Unused. 335the certificate has been revoked.
262 336
263=item B<24 X509_V_ERR_INVALID_CA: invalid CA certificate> 337=item B<24 X509_V_ERR_INVALID_CA: invalid CA certificate>
264 338
@@ -321,6 +395,10 @@ the certificates in the file will be recognised.
321Previous versions of OpenSSL assume certificates with matching subject name are identical and 395Previous versions of OpenSSL assume certificates with matching subject name are identical and
322mishandled them. 396mishandled them.
323 397
398Previous versions of this documentation swapped the meaning of the
399B<X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT> and
400B<20 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY> error codes.
401
324=head1 SEE ALSO 402=head1 SEE ALSO
325 403
326L<x509(1)|x509(1)> 404L<x509(1)|x509(1)>
diff --git a/src/lib/libssl/src/doc/apps/x509.pod b/src/lib/libssl/src/doc/apps/x509.pod
index f43c175235..3002b08123 100644
--- a/src/lib/libssl/src/doc/apps/x509.pod
+++ b/src/lib/libssl/src/doc/apps/x509.pod
@@ -23,6 +23,7 @@ B<openssl> B<x509>
23[B<-issuer>] 23[B<-issuer>]
24[B<-nameopt option>] 24[B<-nameopt option>]
25[B<-email>] 25[B<-email>]
26[B<-ocsp_uri>]
26[B<-startdate>] 27[B<-startdate>]
27[B<-enddate>] 28[B<-enddate>]
28[B<-purpose>] 29[B<-purpose>]
@@ -103,7 +104,7 @@ then this option has no effect: SHA1 is always used with DSA keys.
103 104
104=item B<-engine id> 105=item B<-engine id>
105 106
106specifying an engine (by it's unique B<id> string) will cause B<req> 107specifying an engine (by its unique B<id> string) will cause B<x509>
107to attempt to obtain a functional reference to the specified engine, 108to attempt to obtain a functional reference to the specified engine,
108thus initialising it if needed. The engine will then be set as the default 109thus initialising it if needed. The engine will then be set as the default
109for all available algorithms. 110for all available algorithms.
@@ -157,6 +158,16 @@ outputs the "hash" of the certificate issuer name.
157 158
158synonym for "-subject_hash" for backward compatibility reasons. 159synonym for "-subject_hash" for backward compatibility reasons.
159 160
161=item B<-subject_hash_old>
162
163outputs the "hash" of the certificate subject name using the older algorithm
164as used by OpenSSL versions before 1.0.0.
165
166=item B<-issuer_hash_old>
167
168outputs the "hash" of the certificate issuer name using the older algorithm
169as used by OpenSSL versions before 1.0.0.
170
160=item B<-subject> 171=item B<-subject>
161 172
162outputs the subject name. 173outputs the subject name.
@@ -176,6 +187,10 @@ set multiple options. See the B<NAME OPTIONS> section for more information.
176 187
177outputs the email address(es) if any. 188outputs the email address(es) if any.
178 189
190=item B<-ocsp_uri>
191
192outputs the OCSP responder address(es) if any.
193
179=item B<-startdate> 194=item B<-startdate>
180 195
181prints out the start date of the certificate, that is the notBefore date. 196prints out the start date of the certificate, that is the notBefore date.
@@ -376,7 +391,9 @@ no extensions are added to the certificate.
376the section to add certificate extensions from. If this option is not 391the section to add certificate extensions from. If this option is not
377specified then the extensions should either be contained in the unnamed 392specified then the extensions should either be contained in the unnamed
378(default) section or the default section should contain a variable called 393(default) section or the default section should contain a variable called
379"extensions" which contains the section to use. 394"extensions" which contains the section to use. See the
395L<x509v3_config(5)|x509v3_config(5)> manual page for details of the
396extension section format.
380 397
381=back 398=back
382 399
@@ -823,10 +840,17 @@ OpenSSL 0.9.5 and later.
823=head1 SEE ALSO 840=head1 SEE ALSO
824 841
825L<req(1)|req(1)>, L<ca(1)|ca(1)>, L<genrsa(1)|genrsa(1)>, 842L<req(1)|req(1)>, L<ca(1)|ca(1)>, L<genrsa(1)|genrsa(1)>,
826L<gendsa(1)|gendsa(1)>, L<verify(1)|verify(1)> 843L<gendsa(1)|gendsa(1)>, L<verify(1)|verify(1)>,
844L<x509v3_config(5)|x509v3_config(5)>
827 845
828=head1 HISTORY 846=head1 HISTORY
829 847
830Before OpenSSL 0.9.8, the default digest for RSA keys was MD5. 848Before OpenSSL 0.9.8, the default digest for RSA keys was MD5.
831 849
850The hash algorithm used in the B<-subject_hash> and B<-issuer_hash> options
851before OpenSSL 1.0.0 was based on the deprecated MD5 algorithm and the encoding
852of the distinguished name. In OpenSSL 1.0.0 and later it is based on a
853canonical version of the DN using SHA1. This means that any directories using
854the old form must have their links rebuilt using B<c_rehash> or similar.
855
832=cut 856=cut
diff --git a/src/lib/libssl/src/doc/crypto/ASN1_OBJECT_new.pod b/src/lib/libssl/src/doc/crypto/ASN1_OBJECT_new.pod
index 51679bfcd9..9bae40fccf 100644
--- a/src/lib/libssl/src/doc/crypto/ASN1_OBJECT_new.pod
+++ b/src/lib/libssl/src/doc/crypto/ASN1_OBJECT_new.pod
@@ -6,6 +6,8 @@ ASN1_OBJECT_new, ASN1_OBJECT_free, - object allocation functions
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9 #include <openssl/asn1.h>
10
9 ASN1_OBJECT *ASN1_OBJECT_new(void); 11 ASN1_OBJECT *ASN1_OBJECT_new(void);
10 void ASN1_OBJECT_free(ASN1_OBJECT *a); 12 void ASN1_OBJECT_free(ASN1_OBJECT *a);
11 13
diff --git a/src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod b/src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod
index c4ec693f17..a08e9a0fa4 100644
--- a/src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod
+++ b/src/lib/libssl/src/doc/crypto/ASN1_STRING_length.pod
@@ -8,6 +8,8 @@ ASN1_STRING utility functions
8 8
9=head1 SYNOPSIS 9=head1 SYNOPSIS
10 10
11 #include <openssl/asn1.h>
12
11 int ASN1_STRING_length(ASN1_STRING *x); 13 int ASN1_STRING_length(ASN1_STRING *x);
12 unsigned char * ASN1_STRING_data(ASN1_STRING *x); 14 unsigned char * ASN1_STRING_data(ASN1_STRING *x);
13 15
diff --git a/src/lib/libssl/src/doc/crypto/ASN1_STRING_new.pod b/src/lib/libssl/src/doc/crypto/ASN1_STRING_new.pod
index 5b1bbb7eb2..8ac2a03ae2 100644
--- a/src/lib/libssl/src/doc/crypto/ASN1_STRING_new.pod
+++ b/src/lib/libssl/src/doc/crypto/ASN1_STRING_new.pod
@@ -7,6 +7,8 @@ ASN1_STRING allocation functions
7 7
8=head1 SYNOPSIS 8=head1 SYNOPSIS
9 9
10 #include <openssl/asn1.h>
11
10 ASN1_STRING * ASN1_STRING_new(void); 12 ASN1_STRING * ASN1_STRING_new(void);
11 ASN1_STRING * ASN1_STRING_type_new(int type); 13 ASN1_STRING * ASN1_STRING_type_new(int type);
12 void ASN1_STRING_free(ASN1_STRING *a); 14 void ASN1_STRING_free(ASN1_STRING *a);
diff --git a/src/lib/libssl/src/doc/crypto/BIO_f_buffer.pod b/src/lib/libssl/src/doc/crypto/BIO_f_buffer.pod
index c9093c6a57..c0dccf1abe 100644
--- a/src/lib/libssl/src/doc/crypto/BIO_f_buffer.pod
+++ b/src/lib/libssl/src/doc/crypto/BIO_f_buffer.pod
@@ -31,7 +31,7 @@ BIO_get_buffer_num_lines() returns the number of lines currently buffered.
31 31
32BIO_set_read_buffer_size(), BIO_set_write_buffer_size() and BIO_set_buffer_size() 32BIO_set_read_buffer_size(), BIO_set_write_buffer_size() and BIO_set_buffer_size()
33set the read, write or both read and write buffer sizes to B<size>. The initial 33set the read, write or both read and write buffer sizes to B<size>. The initial
34buffer size is DEFAULT_BUFFER_SIZE, currently 1024. Any attempt to reduce the 34buffer size is DEFAULT_BUFFER_SIZE, currently 4096. Any attempt to reduce the
35buffer size below DEFAULT_BUFFER_SIZE is ignored. Any buffered data is cleared 35buffer size below DEFAULT_BUFFER_SIZE is ignored. Any buffered data is cleared
36when the buffer is resized. 36when the buffer is resized.
37 37
@@ -66,4 +66,9 @@ there was an error.
66 66
67=head1 SEE ALSO 67=head1 SEE ALSO
68 68
69TBA 69L<BIO(3)|BIO(3)>,
70L<BIO_reset(3)|BIO_reset(3)>,
71L<BIO_flush(3)|BIO_flush(3)>,
72L<BIO_pop(3)|BIO_pop(3)>,
73L<BIO_ctrl(3)|BIO_ctrl(3)>,
74L<BIO_int_ctrl(3)|BIO_ctrl(3)>
diff --git a/src/lib/libssl/src/doc/crypto/BIO_f_md.pod b/src/lib/libssl/src/doc/crypto/BIO_f_md.pod
index 0d24083e6d..2cc41f89d2 100644
--- a/src/lib/libssl/src/doc/crypto/BIO_f_md.pod
+++ b/src/lib/libssl/src/doc/crypto/BIO_f_md.pod
@@ -58,6 +58,12 @@ If an application needs to call BIO_gets() or BIO_puts() through
58a chain containing digest BIOs then this can be done by prepending 58a chain containing digest BIOs then this can be done by prepending
59a buffering BIO. 59a buffering BIO.
60 60
61Before OpenSSL 1.0.0 the call to BIO_get_md_ctx() would only work if the BIO
62had been initialized for example by calling BIO_set_md() ). In OpenSSL
631.0.0 and later the context is always returned and the BIO is state is set
64to initialized. This allows applications to initialize the context externally
65if the standard calls such as BIO_set_md() are not sufficiently flexible.
66
61=head1 RETURN VALUES 67=head1 RETURN VALUES
62 68
63BIO_f_md() returns the digest BIO method. 69BIO_f_md() returns the digest BIO method.
diff --git a/src/lib/libssl/src/doc/crypto/BIO_f_ssl.pod b/src/lib/libssl/src/doc/crypto/BIO_f_ssl.pod
index f0b731731f..bc5861ab34 100644
--- a/src/lib/libssl/src/doc/crypto/BIO_f_ssl.pod
+++ b/src/lib/libssl/src/doc/crypto/BIO_f_ssl.pod
@@ -308,6 +308,15 @@ a client and also echoes the request to standard output.
308 308
309 BIO_free_all(sbio); 309 BIO_free_all(sbio);
310 310
311=head1 BUGS
312
313In OpenSSL versions before 1.0.0 the BIO_pop() call was handled incorrectly,
314the I/O BIO reference count was incorrectly incremented (instead of
315decremented) and dissociated with the SSL BIO even if the SSL BIO was not
316explicitly being popped (e.g. a pop higher up the chain). Applications which
317included workarounds for this bug (e.g. freeing BIOs more than once) should
318be modified to handle this fix or they may free up an already freed BIO.
319
311=head1 SEE ALSO 320=head1 SEE ALSO
312 321
313TBA 322TBA
diff --git a/src/lib/libssl/src/doc/crypto/BIO_s_file.pod b/src/lib/libssl/src/doc/crypto/BIO_s_file.pod
index b2a29263f4..188aea347d 100644
--- a/src/lib/libssl/src/doc/crypto/BIO_s_file.pod
+++ b/src/lib/libssl/src/doc/crypto/BIO_s_file.pod
@@ -76,6 +76,10 @@ normally be closed so the BIO_NOCLOSE flag should be set.
76Because the file BIO calls the underlying stdio functions any quirks 76Because the file BIO calls the underlying stdio functions any quirks
77in stdio behaviour will be mirrored by the corresponding BIO. 77in stdio behaviour will be mirrored by the corresponding BIO.
78 78
79On Windows BIO_new_files reserves for the filename argument to be
80UTF-8 encoded. In other words if you have to make it work in multi-
81lingual environment, encode file names in UTF-8.
82
79=head1 EXAMPLES 83=head1 EXAMPLES
80 84
81File BIO "hello world": 85File BIO "hello world":
diff --git a/src/lib/libssl/src/doc/crypto/BIO_s_mem.pod b/src/lib/libssl/src/doc/crypto/BIO_s_mem.pod
index 19648acfae..8f85e0dcee 100644
--- a/src/lib/libssl/src/doc/crypto/BIO_s_mem.pod
+++ b/src/lib/libssl/src/doc/crypto/BIO_s_mem.pod
@@ -74,7 +74,7 @@ Writes to memory BIOs will always succeed if memory is available: that is
74their size can grow indefinitely. 74their size can grow indefinitely.
75 75
76Every read from a read write memory BIO will remove the data just read with 76Every read from a read write memory BIO will remove the data just read with
77an internal copy operation, if a BIO contains a lots of data and it is 77an internal copy operation, if a BIO contains a lot of data and it is
78read in small chunks the operation can be very slow. The use of a read only 78read in small chunks the operation can be very slow. The use of a read only
79memory BIO avoids this problem. If the BIO must be read write then adding 79memory BIO avoids this problem. If the BIO must be read write then adding
80a buffering BIO to the chain will speed up the process. 80a buffering BIO to the chain will speed up the process.
diff --git a/src/lib/libssl/src/doc/crypto/BIO_should_retry.pod b/src/lib/libssl/src/doc/crypto/BIO_should_retry.pod
index 539c391272..b6d51f719d 100644
--- a/src/lib/libssl/src/doc/crypto/BIO_should_retry.pod
+++ b/src/lib/libssl/src/doc/crypto/BIO_should_retry.pod
@@ -45,7 +45,7 @@ needs to read data.
45BIO_should_io_special() is true if some "special" condition, that is a 45BIO_should_io_special() is true if some "special" condition, that is a
46reason other than reading or writing is the cause of the condition. 46reason other than reading or writing is the cause of the condition.
47 47
48BIO_get_retry_reason() returns a mask of the cause of a retry condition 48BIO_retry_type() returns a mask of the cause of a retry condition
49consisting of the values B<BIO_FLAGS_READ>, B<BIO_FLAGS_WRITE>, 49consisting of the values B<BIO_FLAGS_READ>, B<BIO_FLAGS_WRITE>,
50B<BIO_FLAGS_IO_SPECIAL> though current BIO types will only set one of 50B<BIO_FLAGS_IO_SPECIAL> though current BIO types will only set one of
51these. 51these.
diff --git a/src/lib/libssl/src/doc/crypto/CRYPTO_set_ex_data.pod b/src/lib/libssl/src/doc/crypto/CRYPTO_set_ex_data.pod
index 1bd5bed67d..7409c02aac 100644
--- a/src/lib/libssl/src/doc/crypto/CRYPTO_set_ex_data.pod
+++ b/src/lib/libssl/src/doc/crypto/CRYPTO_set_ex_data.pod
@@ -6,6 +6,8 @@ CRYPTO_set_ex_data, CRYPTO_get_ex_data - internal application specific data func
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9 #include <openssl/crypto.h>
10
9 int CRYPTO_set_ex_data(CRYPTO_EX_DATA *r, int idx, void *arg); 11 int CRYPTO_set_ex_data(CRYPTO_EX_DATA *r, int idx, void *arg);
10 12
11 void *CRYPTO_get_ex_data(CRYPTO_EX_DATA *r, int idx); 13 void *CRYPTO_get_ex_data(CRYPTO_EX_DATA *r, int idx);
diff --git a/src/lib/libssl/src/doc/crypto/DSA_get_ex_new_index.pod b/src/lib/libssl/src/doc/crypto/DSA_get_ex_new_index.pod
index 4612e708ec..fb6efc1182 100644
--- a/src/lib/libssl/src/doc/crypto/DSA_get_ex_new_index.pod
+++ b/src/lib/libssl/src/doc/crypto/DSA_get_ex_new_index.pod
@@ -6,7 +6,7 @@ DSA_get_ex_new_index, DSA_set_ex_data, DSA_get_ex_data - add application specifi
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9 #include <openssl/DSA.h> 9 #include <openssl/dsa.h>
10 10
11 int DSA_get_ex_new_index(long argl, void *argp, 11 int DSA_get_ex_new_index(long argl, void *argp,
12 CRYPTO_EX_new *new_func, 12 CRYPTO_EX_new *new_func,
diff --git a/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod b/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod
index 130cd7f60a..5b477ac6ec 100644
--- a/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod
+++ b/src/lib/libssl/src/doc/crypto/EVP_DigestInit.pod
@@ -64,9 +64,9 @@ EVP digest routines
64 64
65The EVP digest routines are a high level interface to message digests. 65The EVP digest routines are a high level interface to message digests.
66 66
67EVP_MD_CTX_init() initializes digest contet B<ctx>. 67EVP_MD_CTX_init() initializes digest context B<ctx>.
68 68
69EVP_MD_CTX_create() allocates, initializes and returns a digest contet. 69EVP_MD_CTX_create() allocates, initializes and returns a digest context.
70 70
71EVP_DigestInit_ex() sets up digest context B<ctx> to use a digest 71EVP_DigestInit_ex() sets up digest context B<ctx> to use a digest
72B<type> from ENGINE B<impl>. B<ctx> must be initialized before calling this 72B<type> from ENGINE B<impl>. B<ctx> must be initialized before calling this
@@ -102,7 +102,7 @@ the passed context B<ctx> does not have to be initialized, and it always
102uses the default digest implementation. 102uses the default digest implementation.
103 103
104EVP_DigestFinal() is similar to EVP_DigestFinal_ex() except the digest 104EVP_DigestFinal() is similar to EVP_DigestFinal_ex() except the digest
105contet B<ctx> is automatically cleaned up. 105context B<ctx> is automatically cleaned up.
106 106
107EVP_MD_CTX_copy() is similar to EVP_MD_CTX_copy_ex() except the destination 107EVP_MD_CTX_copy() is similar to EVP_MD_CTX_copy_ex() except the destination
108B<out> does not have to be initialized. 108B<out> does not have to be initialized.
@@ -132,7 +132,9 @@ return B<EVP_MD> structures for the MD2, MD5, SHA, SHA1, MDC2 and RIPEMD160 dige
132algorithms respectively. The associated signature algorithm is RSA in each case. 132algorithms respectively. The associated signature algorithm is RSA in each case.
133 133
134EVP_dss() and EVP_dss1() return B<EVP_MD> structures for SHA and SHA1 digest 134EVP_dss() and EVP_dss1() return B<EVP_MD> structures for SHA and SHA1 digest
135algorithms but using DSS (DSA) for the signature algorithm. 135algorithms but using DSS (DSA) for the signature algorithm. Note: there is
136no need to use these pseudo-digests in OpenSSL 1.0.0 and later, they are
137however retained for compatibility.
136 138
137EVP_md_null() is a "null" message digest that does nothing: i.e. the hash it 139EVP_md_null() is a "null" message digest that does nothing: i.e. the hash it
138returns is of zero length. 140returns is of zero length.
@@ -228,12 +230,6 @@ digest name passed on the command line.
228 printf("\n"); 230 printf("\n");
229 } 231 }
230 232
231=head1 BUGS
232
233The link between digests and signing algorithms results in a situation where
234EVP_sha1() must be used with RSA and EVP_dss1() must be used with DSS
235even though they are identical digests.
236
237=head1 SEE ALSO 233=head1 SEE ALSO
238 234
239L<evp(3)|evp(3)>, L<hmac(3)|hmac(3)>, L<md2(3)|md2(3)>, 235L<evp(3)|evp(3)>, L<hmac(3)|hmac(3)>, L<md2(3)|md2(3)>,
@@ -253,4 +249,11 @@ EVP_md_null(), EVP_md2(), EVP_md5(), EVP_sha(), EVP_sha1(),
253EVP_dss(), EVP_dss1(), EVP_mdc2() and EVP_ripemd160() were 249EVP_dss(), EVP_dss1(), EVP_mdc2() and EVP_ripemd160() were
254changed to return truely const EVP_MD * in OpenSSL 0.9.7. 250changed to return truely const EVP_MD * in OpenSSL 0.9.7.
255 251
252The link between digests and signing algorithms was fixed in OpenSSL 1.0 and
253later, so now EVP_sha1() can be used with RSA and DSA, there is no need to
254use EVP_dss1() any more.
255
256OpenSSL 1.0 and later does not include the MD2 digest algorithm in the
257default configuration due to its security weaknesses.
258
256=cut 259=cut
diff --git a/src/lib/libssl/src/doc/crypto/EVP_PKEY_verifyrecover.pod b/src/lib/libssl/src/doc/crypto/EVP_PKEY_verifyrecover.pod
new file mode 100644
index 0000000000..e2a2a8c6f8
--- /dev/null
+++ b/src/lib/libssl/src/doc/crypto/EVP_PKEY_verifyrecover.pod
@@ -0,0 +1,103 @@
1=pod
2
3=head1 NAME
4
5EVP_PKEY_verifyrecover_init, EVP_PKEY_verifyrecover - recover signature using a public key algorithm
6
7=head1 SYNOPSIS
8
9 #include <openssl/evp.h>
10
11 int EVP_PKEY_verifyrecover_init(EVP_PKEY_CTX *ctx);
12 int EVP_PKEY_verifyrecover(EVP_PKEY_CTX *ctx,
13 unsigned char *rout, size_t *routlen,
14 const unsigned char *sig, size_t siglen);
15
16=head1 DESCRIPTION
17
18The EVP_PKEY_verifyrecover_init() function initializes a public key algorithm
19context using key B<pkey> for a verify recover operation.
20
21The EVP_PKEY_verifyrecover() function recovers signed data
22using B<ctx>. The signature is specified using the B<sig> and
23B<siglen> parameters. If B<rout> is B<NULL> then the maximum size of the output
24buffer is written to the B<routlen> parameter. If B<rout> is not B<NULL> then
25before the call the B<routlen> parameter should contain the length of the
26B<rout> buffer, if the call is successful recovered data is written to
27B<rout> and the amount of data written to B<routlen>.
28
29=head1 NOTES
30
31Normally an application is only interested in whether a signature verification
32operation is successful in those cases the EVP_verify() function should be
33used.
34
35Sometimes however it is useful to obtain the data originally signed using a
36signing operation. Only certain public key algorithms can recover a signature
37in this way (for example RSA in PKCS padding mode).
38
39After the call to EVP_PKEY_verifyrecover_init() algorithm specific control
40operations can be performed to set any appropriate parameters for the
41operation.
42
43The function EVP_PKEY_verifyrecover() can be called more than once on the same
44context if several operations are performed using the same parameters.
45
46=head1 RETURN VALUES
47
48EVP_PKEY_verifyrecover_init() and EVP_PKEY_verifyrecover() return 1 for success
49and 0 or a negative value for failure. In particular a return value of -2
50indicates the operation is not supported by the public key algorithm.
51
52=head1 EXAMPLE
53
54Recover digest originally signed using PKCS#1 and SHA256 digest:
55
56 #include <openssl/evp.h>
57 #include <openssl/rsa.h>
58
59 EVP_PKEY_CTX *ctx;
60 unsigned char *rout, *sig;
61 size_t routlen, siglen;
62 EVP_PKEY *verify_key;
63 /* NB: assumes verify_key, sig and siglen are already set up
64 * and that verify_key is an RSA public key
65 */
66 ctx = EVP_PKEY_CTX_new(verify_key);
67 if (!ctx)
68 /* Error occurred */
69 if (EVP_PKEY_verifyrecover_init(ctx) <= 0)
70 /* Error */
71 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PADDING) <= 0)
72 /* Error */
73 if (EVP_PKEY_CTX_set_signature_md(ctx, EVP_sha256()) <= 0)
74 /* Error */
75
76 /* Determine buffer length */
77 if (EVP_PKEY_verifyrecover(ctx, rout, &routlen, sig, siglen) <= 0)
78 /* Error */
79
80 rout = OPENSSL_malloc(routlen);
81
82 if (!rout)
83 /* malloc failure */
84
85 if (EVP_PKEY_verifyrecover(ctx, rout, &routlen, sig, siglen) <= 0)
86 /* Error */
87
88 /* Recovered data is routlen bytes written to buffer rout */
89
90=head1 SEE ALSO
91
92L<EVP_PKEY_CTX_new(3)|EVP_PKEY_CTX_new(3)>,
93L<EVP_PKEY_encrypt(3)|EVP_PKEY_encrypt(3)>,
94L<EVP_PKEY_decrypt(3)|EVP_PKEY_decrypt(3)>,
95L<EVP_PKEY_sign(3)|EVP_PKEY_sign(3)>,
96L<EVP_PKEY_verify(3)|EVP_PKEY_verify(3)>,
97L<EVP_PKEY_derive(3)|EVP_PKEY_derive(3)>
98
99=head1 HISTORY
100
101These functions were first added to OpenSSL 1.0.0.
102
103=cut
diff --git a/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod b/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod
index b6e62ce7f6..620a623ab6 100644
--- a/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod
+++ b/src/lib/libssl/src/doc/crypto/EVP_SignInit.pod
@@ -77,6 +77,15 @@ will occur.
77Older versions of this documentation wrongly stated that calls to 77Older versions of this documentation wrongly stated that calls to
78EVP_SignUpdate() could not be made after calling EVP_SignFinal(). 78EVP_SignUpdate() could not be made after calling EVP_SignFinal().
79 79
80Since the private key is passed in the call to EVP_SignFinal() any error
81relating to the private key (for example an unsuitable key and digest
82combination) will not be indicated until after potentially large amounts of
83data have been passed through EVP_SignUpdate().
84
85It is not possible to change the signing parameters using these function.
86
87The previous two bugs are fixed in the newer EVP_SignDigest*() function.
88
80=head1 SEE ALSO 89=head1 SEE ALSO
81 90
82L<EVP_VerifyInit(3)|EVP_VerifyInit(3)>, 91L<EVP_VerifyInit(3)|EVP_VerifyInit(3)>,
diff --git a/src/lib/libssl/src/doc/crypto/EVP_VerifyInit.pod b/src/lib/libssl/src/doc/crypto/EVP_VerifyInit.pod
index b6afaedee5..9097f09410 100644
--- a/src/lib/libssl/src/doc/crypto/EVP_VerifyInit.pod
+++ b/src/lib/libssl/src/doc/crypto/EVP_VerifyInit.pod
@@ -67,6 +67,15 @@ will occur.
67Older versions of this documentation wrongly stated that calls to 67Older versions of this documentation wrongly stated that calls to
68EVP_VerifyUpdate() could not be made after calling EVP_VerifyFinal(). 68EVP_VerifyUpdate() could not be made after calling EVP_VerifyFinal().
69 69
70Since the public key is passed in the call to EVP_SignFinal() any error
71relating to the private key (for example an unsuitable key and digest
72combination) will not be indicated until after potentially large amounts of
73data have been passed through EVP_SignUpdate().
74
75It is not possible to change the signing parameters using these function.
76
77The previous two bugs are fixed in the newer EVP_VerifyDigest*() function.
78
70=head1 SEE ALSO 79=head1 SEE ALSO
71 80
72L<evp(3)|evp(3)>, 81L<evp(3)|evp(3)>,
diff --git a/src/lib/libssl/src/doc/crypto/OBJ_nid2obj.pod b/src/lib/libssl/src/doc/crypto/OBJ_nid2obj.pod
index 7dcc07923f..1e45dd40f6 100644
--- a/src/lib/libssl/src/doc/crypto/OBJ_nid2obj.pod
+++ b/src/lib/libssl/src/doc/crypto/OBJ_nid2obj.pod
@@ -8,6 +8,8 @@ functions
8 8
9=head1 SYNOPSIS 9=head1 SYNOPSIS
10 10
11 #include <openssl/objects.h>
12
11 ASN1_OBJECT * OBJ_nid2obj(int n); 13 ASN1_OBJECT * OBJ_nid2obj(int n);
12 const char * OBJ_nid2ln(int n); 14 const char * OBJ_nid2ln(int n);
13 const char * OBJ_nid2sn(int n); 15 const char * OBJ_nid2sn(int n);
diff --git a/src/lib/libssl/src/doc/crypto/PKCS12_parse.pod b/src/lib/libssl/src/doc/crypto/PKCS12_parse.pod
index 51344f883a..c54cf2ad61 100644
--- a/src/lib/libssl/src/doc/crypto/PKCS12_parse.pod
+++ b/src/lib/libssl/src/doc/crypto/PKCS12_parse.pod
@@ -20,24 +20,31 @@ certificate to B<*cert> and any additional certificates to B<*ca>.
20 20
21=head1 NOTES 21=head1 NOTES
22 22
23The parameters B<pkey> and B<cert> cannot be B<NULL>. B<ca> can be <NULL> 23The parameters B<pkey> and B<cert> cannot be B<NULL>. B<ca> can be <NULL> in
24in which case additional certificates will be discarded. B<*ca> can also 24which case additional certificates will be discarded. B<*ca> can also be a
25be a valid STACK in which case additional certificates are appended to 25valid STACK in which case additional certificates are appended to B<*ca>. If
26B<*ca>. If B<*ca> is B<NULL> a new STACK will be allocated. 26B<*ca> is B<NULL> a new STACK will be allocated.
27 27
28The B<friendlyName> and B<localKeyID> attributes (if present) on each certificate 28The B<friendlyName> and B<localKeyID> attributes (if present) on each
29will be stored in the B<alias> and B<keyid> attributes of the B<X509> structure. 29certificate will be stored in the B<alias> and B<keyid> attributes of the
30B<X509> structure.
31
32=head1 RETURN VALUES
33
34PKCS12_parse() returns 1 for success and zero if an error occurred.
35
36The error can be obtained from L<ERR_get_error(3)|ERR_get_error(3)>
30 37
31=head1 BUGS 38=head1 BUGS
32 39
33Only a single private key and corresponding certificate is returned by this function. 40Only a single private key and corresponding certificate is returned by this
34More complex PKCS#12 files with multiple private keys will only return the first 41function. More complex PKCS#12 files with multiple private keys will only
35match. 42return the first match.
36 43
37Only B<friendlyName> and B<localKeyID> attributes are currently stored in certificates. 44Only B<friendlyName> and B<localKeyID> attributes are currently stored in
38Other attributes are discarded. 45certificates. Other attributes are discarded.
39 46
40Attributes currently cannot be store in the private key B<EVP_PKEY> structure. 47Attributes currently cannot be stored in the private key B<EVP_PKEY> structure.
41 48
42=head1 SEE ALSO 49=head1 SEE ALSO
43 50
diff --git a/src/lib/libssl/src/doc/crypto/PKCS7_decrypt.pod b/src/lib/libssl/src/doc/crypto/PKCS7_decrypt.pod
index b0ca067b89..325699d0b6 100644
--- a/src/lib/libssl/src/doc/crypto/PKCS7_decrypt.pod
+++ b/src/lib/libssl/src/doc/crypto/PKCS7_decrypt.pod
@@ -6,7 +6,9 @@ PKCS7_decrypt - decrypt content from a PKCS#7 envelopedData structure
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags); 9 #include <openssl/pkcs7.h>
10
11 int PKCS7_decrypt(PKCS7 *p7, EVP_PKEY *pkey, X509 *cert, BIO *data, int flags);
10 12
11=head1 DESCRIPTION 13=head1 DESCRIPTION
12 14
diff --git a/src/lib/libssl/src/doc/crypto/PKCS7_encrypt.pod b/src/lib/libssl/src/doc/crypto/PKCS7_encrypt.pod
index 1a507b22a2..2cd925a7e0 100644
--- a/src/lib/libssl/src/doc/crypto/PKCS7_encrypt.pod
+++ b/src/lib/libssl/src/doc/crypto/PKCS7_encrypt.pod
@@ -6,7 +6,9 @@ PKCS7_encrypt - create a PKCS#7 envelopedData structure
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, int flags); 9 #include <openssl/pkcs7.h>
10
11 PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, const EVP_CIPHER *cipher, int flags);
10 12
11=head1 DESCRIPTION 13=head1 DESCRIPTION
12 14
@@ -16,43 +18,55 @@ B<cipher> is the symmetric cipher to use. B<flags> is an optional set of flags.
16 18
17=head1 NOTES 19=head1 NOTES
18 20
19Only RSA keys are supported in PKCS#7 and envelopedData so the recipient certificates 21Only RSA keys are supported in PKCS#7 and envelopedData so the recipient
20supplied to this function must all contain RSA public keys, though they do not have to 22certificates supplied to this function must all contain RSA public keys, though
21be signed using the RSA algorithm. 23they do not have to be signed using the RSA algorithm.
22 24
23EVP_des_ede3_cbc() (triple DES) is the algorithm of choice for S/MIME use because 25EVP_des_ede3_cbc() (triple DES) is the algorithm of choice for S/MIME use
24most clients will support it. 26because most clients will support it.
25 27
26Some old "export grade" clients may only support weak encryption using 40 or 64 bit 28Some old "export grade" clients may only support weak encryption using 40 or 64
27RC2. These can be used by passing EVP_rc2_40_cbc() and EVP_rc2_64_cbc() respectively. 29bit RC2. These can be used by passing EVP_rc2_40_cbc() and EVP_rc2_64_cbc()
30respectively.
28 31
29The algorithm passed in the B<cipher> parameter must support ASN1 encoding of its 32The algorithm passed in the B<cipher> parameter must support ASN1 encoding of
30parameters. 33its parameters.
31 34
32Many browsers implement a "sign and encrypt" option which is simply an S/MIME 35Many browsers implement a "sign and encrypt" option which is simply an S/MIME
33envelopedData containing an S/MIME signed message. This can be readily produced 36envelopedData containing an S/MIME signed message. This can be readily produced
34by storing the S/MIME signed message in a memory BIO and passing it to 37by storing the S/MIME signed message in a memory BIO and passing it to
35PKCS7_encrypt(). 38PKCS7_encrypt().
36 39
37The following flags can be passed in the B<flags> parameter. 40The following flags can be passed in the B<flags> parameter.
38 41
39If the B<PKCS7_TEXT> flag is set MIME headers for type B<text/plain> are prepended 42If the B<PKCS7_TEXT> flag is set MIME headers for type B<text/plain> are
40to the data. 43prepended to the data.
41 44
42Normally the supplied content is translated into MIME canonical format (as required 45Normally the supplied content is translated into MIME canonical format (as
43by the S/MIME specifications) if B<PKCS7_BINARY> is set no translation occurs. This 46required by the S/MIME specifications) if B<PKCS7_BINARY> is set no translation
44option should be used if the supplied data is in binary format otherwise the translation 47occurs. This option should be used if the supplied data is in binary format
45will corrupt it. If B<PKCS7_BINARY> is set then B<PKCS7_TEXT> is ignored. 48otherwise the translation will corrupt it. If B<PKCS7_BINARY> is set then
49B<PKCS7_TEXT> is ignored.
46 50
47=head1 RETURN VALUES 51If the B<PKCS7_STREAM> flag is set a partial B<PKCS7> structure is output
52suitable for streaming I/O: no data is read from the BIO B<in>.
48 53
49PKCS7_encrypt() returns either a valid PKCS7 structure or NULL if an error occurred. 54=head1 NOTES
50The error can be obtained from ERR_get_error(3).
51 55
52=head1 BUGS 56If the flag B<PKCS7_STREAM> is set the returned B<PKCS7> structure is B<not>
57complete and outputting its contents via a function that does not
58properly finalize the B<PKCS7> structure will give unpredictable
59results.
53 60
54The lack of single pass processing and need to hold all data in memory as 61Several functions including SMIME_write_PKCS7(), i2d_PKCS7_bio_stream(),
55mentioned in PKCS7_sign() also applies to PKCS7_verify(). 62PEM_write_bio_PKCS7_stream() finalize the structure. Alternatively finalization
63can be performed by obtaining the streaming ASN1 B<BIO> directly using
64BIO_new_PKCS7().
65
66=head1 RETURN VALUES
67
68PKCS7_encrypt() returns either a PKCS7 structure or NULL if an error occurred.
69The error can be obtained from ERR_get_error(3).
56 70
57=head1 SEE ALSO 71=head1 SEE ALSO
58 72
@@ -61,5 +75,6 @@ L<ERR_get_error(3)|ERR_get_error(3)>, L<PKCS7_decrypt(3)|PKCS7_decrypt(3)>
61=head1 HISTORY 75=head1 HISTORY
62 76
63PKCS7_decrypt() was added to OpenSSL 0.9.5 77PKCS7_decrypt() was added to OpenSSL 0.9.5
78The B<PKCS7_STREAM> flag was first supported in OpenSSL 1.0.0.
64 79
65=cut 80=cut
diff --git a/src/lib/libssl/src/doc/crypto/PKCS7_sign.pod b/src/lib/libssl/src/doc/crypto/PKCS7_sign.pod
index ffd0c734b0..64a35144f8 100644
--- a/src/lib/libssl/src/doc/crypto/PKCS7_sign.pod
+++ b/src/lib/libssl/src/doc/crypto/PKCS7_sign.pod
@@ -6,14 +6,16 @@ PKCS7_sign - create a PKCS#7 signedData structure
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, int flags); 9 #include <openssl/pkcs7.h>
10
11 PKCS7 *PKCS7_sign(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, BIO *data, int flags);
10 12
11=head1 DESCRIPTION 13=head1 DESCRIPTION
12 14
13PKCS7_sign() creates and returns a PKCS#7 signedData structure. B<signcert> 15PKCS7_sign() creates and returns a PKCS#7 signedData structure. B<signcert> is
14is the certificate to sign with, B<pkey> is the corresponsding private key. 16the certificate to sign with, B<pkey> is the corresponsding private key.
15B<certs> is an optional additional set of certificates to include in the 17B<certs> is an optional additional set of certificates to include in the PKCS#7
16PKCS#7 structure (for example any intermediate CAs in the chain). 18structure (for example any intermediate CAs in the chain).
17 19
18The data to be signed is read from BIO B<data>. 20The data to be signed is read from BIO B<data>.
19 21
@@ -21,72 +23,83 @@ B<flags> is an optional set of flags.
21 23
22=head1 NOTES 24=head1 NOTES
23 25
24Any of the following flags (ored together) can be passed in the B<flags> parameter. 26Any of the following flags (ored together) can be passed in the B<flags>
27parameter.
25 28
26Many S/MIME clients expect the signed content to include valid MIME headers. If 29Many S/MIME clients expect the signed content to include valid MIME headers. If
27the B<PKCS7_TEXT> flag is set MIME headers for type B<text/plain> are prepended 30the B<PKCS7_TEXT> flag is set MIME headers for type B<text/plain> are prepended
28to the data. 31to the data.
29 32
30If B<PKCS7_NOCERTS> is set the signer's certificate will not be included in the 33If B<PKCS7_NOCERTS> is set the signer's certificate will not be included in the
31PKCS7 structure, the signer's certificate must still be supplied in the B<signcert> 34PKCS7 structure, the signer's certificate must still be supplied in the
32parameter though. This can reduce the size of the signature if the signers certificate 35B<signcert> parameter though. This can reduce the size of the signature if the
33can be obtained by other means: for example a previously signed message. 36signers certificate can be obtained by other means: for example a previously
34 37signed message.
35The data being signed is included in the PKCS7 structure, unless B<PKCS7_DETACHED> 38
36is set in which case it is omitted. This is used for PKCS7 detached signatures 39The data being signed is included in the PKCS7 structure, unless
37which are used in S/MIME plaintext signed messages for example. 40B<PKCS7_DETACHED> is set in which case it is omitted. This is used for PKCS7
41detached signatures which are used in S/MIME plaintext signed messages for
42example.
43
44Normally the supplied content is translated into MIME canonical format (as
45required by the S/MIME specifications) if B<PKCS7_BINARY> is set no translation
46occurs. This option should be used if the supplied data is in binary format
47otherwise the translation will corrupt it.
48
49The signedData structure includes several PKCS#7 autenticatedAttributes
50including the signing time, the PKCS#7 content type and the supported list of
51ciphers in an SMIMECapabilities attribute. If B<PKCS7_NOATTR> is set then no
52authenticatedAttributes will be used. If B<PKCS7_NOSMIMECAP> is set then just
53the SMIMECapabilities are omitted.
38 54
39Normally the supplied content is translated into MIME canonical format (as required 55If present the SMIMECapabilities attribute indicates support for the following
40by the S/MIME specifications) if B<PKCS7_BINARY> is set no translation occurs. This 56algorithms: triple DES, 128 bit RC2, 64 bit RC2, DES and 40 bit RC2. If any of
41option should be used if the supplied data is in binary format otherwise the translation 57these algorithms is disabled then it will not be included.
42will corrupt it.
43 58
44The signedData structure includes several PKCS#7 autenticatedAttributes including 59If the flags B<PKCS7_STREAM> is set then the returned B<PKCS7> structure is
45the signing time, the PKCS#7 content type and the supported list of ciphers in 60just initialized ready to perform the signing operation. The signing is however
46an SMIMECapabilities attribute. If B<PKCS7_NOATTR> is set then no authenticatedAttributes 61B<not> performed and the data to be signed is not read from the B<data>
47will be used. If B<PKCS7_NOSMIMECAP> is set then just the SMIMECapabilities are 62parameter. Signing is deferred until after the data has been written. In this
48omitted. 63way data can be signed in a single pass.
49 64
50If present the SMIMECapabilities attribute indicates support for the following 65If the B<PKCS7_PARTIAL> flag is set a partial B<PKCS7> structure is output to
51algorithms: triple DES, 128 bit RC2, 64 bit RC2, DES and 40 bit RC2. If any 66which additional signers and capabilities can be added before finalization.
52of these algorithms is disabled then it will not be included.
53 67
54If the flags B<PKCS7_PARTSIGN> is set then the returned B<PKCS7> structure
55is just initialized ready to perform the signing operation. The signing
56is however B<not> performed and the data to be signed is not read from
57the B<data> parameter. Signing is deferred until after the data has been
58written. In this way data can be signed in a single pass. Currently the
59flag B<PKCS7_DETACHED> B<must> also be set.
60 68
61=head1 NOTES 69=head1 NOTES
62 70
63Currently the flag B<PKCS7_PARTSIGN> is only supported for detached 71If the flag B<PKCS7_STREAM> is set the returned B<PKCS7> structure is B<not>
64data. If this flag is set the returned B<PKCS7> structure is B<not> 72complete and outputting its contents via a function that does not properly
65complete and outputting its contents via a function that does not 73finalize the B<PKCS7> structure will give unpredictable results.
66properly finalize the B<PKCS7> structure will give unpredictable
67results.
68 74
69At present only the SMIME_write_PKCS7() function properly finalizes the 75Several functions including SMIME_write_PKCS7(), i2d_PKCS7_bio_stream(),
70structure. 76PEM_write_bio_PKCS7_stream() finalize the structure. Alternatively finalization
77can be performed by obtaining the streaming ASN1 B<BIO> directly using
78BIO_new_PKCS7().
71 79
72=head1 BUGS 80If a signer is specified it will use the default digest for the signing
81algorithm. This is B<SHA1> for both RSA and DSA keys.
82
83In OpenSSL 1.0.0 the B<certs>, B<signcert> and B<pkey> parameters can all be
84B<NULL> if the B<PKCS7_PARTIAL> flag is set. One or more signers can be added
85using the function B<PKCS7_sign_add_signer()>. B<PKCS7_final()> must also be
86called to finalize the structure if streaming is not enabled. Alternative
87signing digests can also be specified using this method.
73 88
74PKCS7_sign() is somewhat limited. It does not support multiple signers, some 89In OpenSSL 1.0.0 if B<signcert> and B<pkey> are NULL then a certificates only
75advanced attributes such as counter signatures are not supported. 90PKCS#7 structure is output.
76 91
77The SHA1 digest algorithm is currently always used. 92In versions of OpenSSL before 1.0.0 the B<signcert> and B<pkey> parameters must
93B<NOT> be NULL.
78 94
79When the signed data is not detached it will be stored in memory within the 95=head1 BUGS
80B<PKCS7> structure. This effectively limits the size of messages which can be
81signed due to memory restraints. There should be a way to sign data without
82having to hold it all in memory, this would however require fairly major
83revisions of the OpenSSL ASN1 code.
84 96
97Some advanced attributes such as counter signatures are not supported.
85 98
86=head1 RETURN VALUES 99=head1 RETURN VALUES
87 100
88PKCS7_sign() returns either a valid PKCS7 structure or NULL if an error occurred. 101PKCS7_sign() returns either a valid PKCS7 structure or NULL if an error
89The error can be obtained from ERR_get_error(3). 102occurred. The error can be obtained from ERR_get_error(3).
90 103
91=head1 SEE ALSO 104=head1 SEE ALSO
92 105
@@ -96,6 +109,8 @@ L<ERR_get_error(3)|ERR_get_error(3)>, L<PKCS7_verify(3)|PKCS7_verify(3)>
96 109
97PKCS7_sign() was added to OpenSSL 0.9.5 110PKCS7_sign() was added to OpenSSL 0.9.5
98 111
99The B<PKCS7_PARTSIGN> flag was added in OpenSSL 0.9.8 112The B<PKCS7_PARTIAL> flag was added in OpenSSL 1.0.0
113
114The B<PKCS7_STREAM> flag was added in OpenSSL 1.0.0
100 115
101=cut 116=cut
diff --git a/src/lib/libssl/src/doc/crypto/PKCS7_verify.pod b/src/lib/libssl/src/doc/crypto/PKCS7_verify.pod
index 3490b5dc82..7c10a4cc3c 100644
--- a/src/lib/libssl/src/doc/crypto/PKCS7_verify.pod
+++ b/src/lib/libssl/src/doc/crypto/PKCS7_verify.pod
@@ -6,9 +6,11 @@ PKCS7_verify - verify a PKCS#7 signedData structure
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, BIO *indata, BIO *out, int flags); 9 #include <openssl/pkcs7.h>
10 10
11STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags); 11 int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store, BIO *indata, BIO *out, int flags);
12
13 STACK_OF(X509) *PKCS7_get0_signers(PKCS7 *p7, STACK_OF(X509) *certs, int flags);
12 14
13=head1 DESCRIPTION 15=head1 DESCRIPTION
14 16
diff --git a/src/lib/libssl/src/doc/crypto/SMIME_read_PKCS7.pod b/src/lib/libssl/src/doc/crypto/SMIME_read_PKCS7.pod
index ffafa37887..9d46715941 100644
--- a/src/lib/libssl/src/doc/crypto/SMIME_read_PKCS7.pod
+++ b/src/lib/libssl/src/doc/crypto/SMIME_read_PKCS7.pod
@@ -6,7 +6,9 @@ SMIME_read_PKCS7 - parse S/MIME message.
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9PKCS7 *SMIME_read_PKCS7(BIO *in, BIO **bcont); 9 #include <openssl/pkcs7.h>
10
11 PKCS7 *SMIME_read_PKCS7(BIO *in, BIO **bcont);
10 12
11=head1 DESCRIPTION 13=head1 DESCRIPTION
12 14
diff --git a/src/lib/libssl/src/doc/crypto/SMIME_write_PKCS7.pod b/src/lib/libssl/src/doc/crypto/SMIME_write_PKCS7.pod
index 61945b3887..ca6bd02763 100644
--- a/src/lib/libssl/src/doc/crypto/SMIME_write_PKCS7.pod
+++ b/src/lib/libssl/src/doc/crypto/SMIME_write_PKCS7.pod
@@ -6,17 +6,18 @@ SMIME_write_PKCS7 - convert PKCS#7 structure to S/MIME format.
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9int SMIME_write_PKCS7(BIO *out, PKCS7 *p7, BIO *data, int flags); 9 #include <openssl/pkcs7.h>
10
11 int SMIME_write_PKCS7(BIO *out, PKCS7 *p7, BIO *data, int flags);
10 12
11=head1 DESCRIPTION 13=head1 DESCRIPTION
12 14
13SMIME_write_PKCS7() adds the appropriate MIME headers to a PKCS#7 15SMIME_write_PKCS7() adds the appropriate MIME headers to a PKCS#7
14structure to produce an S/MIME message. 16structure to produce an S/MIME message.
15 17
16B<out> is the BIO to write the data to. B<p7> is the appropriate 18B<out> is the BIO to write the data to. B<p7> is the appropriate B<PKCS7>
17B<PKCS7> structure. If cleartext signing (B<multipart/signed>) is 19structure. If streaming is enabled then the content must be supplied in the
18being used then the signed data must be supplied in the B<data> 20B<data> argument. B<flags> is an optional set of flags.
19argument. B<flags> is an optional set of flags.
20 21
21=head1 NOTES 22=head1 NOTES
22 23
@@ -30,15 +31,18 @@ If the B<PKCS7_TEXT> flag is set MIME headers for type B<text/plain>
30are added to the content, this only makes sense if B<PKCS7_DETACHED> 31are added to the content, this only makes sense if B<PKCS7_DETACHED>
31is also set. 32is also set.
32 33
33If the B<PKCS7_PARTSIGN> flag is set the signed data is finalized 34If the B<PKCS7_STREAM> flag is set streaming is performed. This flag should
34and output along with the content. This flag should only be set 35only be set if B<PKCS7_STREAM> was also set in the previous call to
35if B<PKCS7_DETACHED> is also set and the previous call to PKCS7_sign() 36PKCS7_sign() or B<PKCS7_encrypt()>.
36also set these flags.
37 37
38If cleartext signing is being used and B<PKCS7_PARTSIGN> not set then 38If cleartext signing is being used and B<PKCS7_STREAM> not set then
39the data must be read twice: once to compute the signature in PKCS7_sign() 39the data must be read twice: once to compute the signature in PKCS7_sign()
40and once to output the S/MIME message. 40and once to output the S/MIME message.
41 41
42If streaming is performed the content is output in BER format using indefinite
43length constructuted encoding except in the case of signed data with detached
44content where the content is absent and DER format is used.
45
42=head1 BUGS 46=head1 BUGS
43 47
44SMIME_write_PKCS7() always base64 encodes PKCS#7 structures, there 48SMIME_write_PKCS7() always base64 encodes PKCS#7 structures, there
diff --git a/src/lib/libssl/src/doc/crypto/X509_NAME_ENTRY_get_object.pod b/src/lib/libssl/src/doc/crypto/X509_NAME_ENTRY_get_object.pod
index 11b35f6fd3..41902c0d45 100644
--- a/src/lib/libssl/src/doc/crypto/X509_NAME_ENTRY_get_object.pod
+++ b/src/lib/libssl/src/doc/crypto/X509_NAME_ENTRY_get_object.pod
@@ -9,15 +9,17 @@ X509_NAME_ENTRY_create_by_OBJ - X509_NAME_ENTRY utility functions
9 9
10=head1 SYNOPSIS 10=head1 SYNOPSIS
11 11
12ASN1_OBJECT * X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne); 12 #include <openssl/x509.h>
13ASN1_STRING * X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne);
14 13
15int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj); 14 ASN1_OBJECT * X509_NAME_ENTRY_get_object(X509_NAME_ENTRY *ne);
16int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, const unsigned char *bytes, int len); 15 ASN1_STRING * X509_NAME_ENTRY_get_data(X509_NAME_ENTRY *ne);
17 16
18X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, const char *field, int type, const unsigned char *bytes, int len); 17 int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj);
19X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, int type,unsigned char *bytes, int len); 18 int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type, const unsigned char *bytes, int len);
20X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len); 19
20 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne, const char *field, int type, const unsigned char *bytes, int len);
21 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid, int type,unsigned char *bytes, int len);
22 X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne, ASN1_OBJECT *obj, int type, const unsigned char *bytes, int len);
21 23
22=head1 DESCRIPTION 24=head1 DESCRIPTION
23 25
diff --git a/src/lib/libssl/src/doc/crypto/X509_NAME_add_entry_by_txt.pod b/src/lib/libssl/src/doc/crypto/X509_NAME_add_entry_by_txt.pod
index e2ab4b0d2b..1afd008cb3 100644
--- a/src/lib/libssl/src/doc/crypto/X509_NAME_add_entry_by_txt.pod
+++ b/src/lib/libssl/src/doc/crypto/X509_NAME_add_entry_by_txt.pod
@@ -7,15 +7,17 @@ X509_NAME_add_entry, X509_NAME_delete_entry - X509_NAME modification functions
7 7
8=head1 SYNOPSIS 8=head1 SYNOPSIS
9 9
10int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, const unsigned char *bytes, int len, int loc, int set); 10 #include <openssl/x509.h>
11 11
12int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type, unsigned char *bytes, int len, int loc, int set); 12 int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type, const unsigned char *bytes, int len, int loc, int set);
13 13
14int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, unsigned char *bytes, int len, int loc, int set); 14 int X509_NAME_add_entry_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, int type, unsigned char *bytes, int len, int loc, int set);
15 15
16int X509_NAME_add_entry(X509_NAME *name,X509_NAME_ENTRY *ne, int loc, int set); 16 int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type, unsigned char *bytes, int len, int loc, int set);
17 17
18X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc); 18 int X509_NAME_add_entry(X509_NAME *name,X509_NAME_ENTRY *ne, int loc, int set);
19
20 X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc);
19 21
20=head1 DESCRIPTION 22=head1 DESCRIPTION
21 23
diff --git a/src/lib/libssl/src/doc/crypto/X509_NAME_get_index_by_NID.pod b/src/lib/libssl/src/doc/crypto/X509_NAME_get_index_by_NID.pod
index 333323d734..3b1f9ff43b 100644
--- a/src/lib/libssl/src/doc/crypto/X509_NAME_get_index_by_NID.pod
+++ b/src/lib/libssl/src/doc/crypto/X509_NAME_get_index_by_NID.pod
@@ -8,14 +8,16 @@ X509_NAME lookup and enumeration functions
8 8
9=head1 SYNOPSIS 9=head1 SYNOPSIS
10 10
11int X509_NAME_get_index_by_NID(X509_NAME *name,int nid,int lastpos); 11 #include <openssl/x509.h>
12int X509_NAME_get_index_by_OBJ(X509_NAME *name,ASN1_OBJECT *obj, int lastpos);
13 12
14int X509_NAME_entry_count(X509_NAME *name); 13 int X509_NAME_get_index_by_NID(X509_NAME *name,int nid,int lastpos);
15X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc); 14 int X509_NAME_get_index_by_OBJ(X509_NAME *name,ASN1_OBJECT *obj, int lastpos);
16 15
17int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf,int len); 16 int X509_NAME_entry_count(X509_NAME *name);
18int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, char *buf,int len); 17 X509_NAME_ENTRY *X509_NAME_get_entry(X509_NAME *name, int loc);
18
19 int X509_NAME_get_text_by_NID(X509_NAME *name, int nid, char *buf,int len);
20 int X509_NAME_get_text_by_OBJ(X509_NAME *name, ASN1_OBJECT *obj, char *buf,int len);
19 21
20=head1 DESCRIPTION 22=head1 DESCRIPTION
21 23
diff --git a/src/lib/libssl/src/doc/crypto/X509_new.pod b/src/lib/libssl/src/doc/crypto/X509_new.pod
index fd5fc65ce1..d38872335f 100644
--- a/src/lib/libssl/src/doc/crypto/X509_new.pod
+++ b/src/lib/libssl/src/doc/crypto/X509_new.pod
@@ -6,6 +6,8 @@ X509_new, X509_free - X509 certificate ASN1 allocation functions
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
9 #include <openssl/x509.h>
10
9 X509 *X509_new(void); 11 X509 *X509_new(void);
10 void X509_free(X509 *a); 12 void X509_free(X509 *a);
11 13
diff --git a/src/lib/libssl/src/doc/crypto/bn_internal.pod b/src/lib/libssl/src/doc/crypto/bn_internal.pod
index 891914678c..91840b0f0d 100644
--- a/src/lib/libssl/src/doc/crypto/bn_internal.pod
+++ b/src/lib/libssl/src/doc/crypto/bn_internal.pod
@@ -13,6 +13,8 @@ library internal functions
13 13
14=head1 SYNOPSIS 14=head1 SYNOPSIS
15 15
16 #include <openssl/bn.h>
17
16 BN_ULONG bn_mul_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w); 18 BN_ULONG bn_mul_words(BN_ULONG *rp, BN_ULONG *ap, int num, BN_ULONG w);
17 BN_ULONG bn_mul_add_words(BN_ULONG *rp, BN_ULONG *ap, int num, 19 BN_ULONG bn_mul_add_words(BN_ULONG *rp, BN_ULONG *ap, int num,
18 BN_ULONG w); 20 BN_ULONG w);
@@ -70,24 +72,34 @@ applications.
70 72
71=head2 The BIGNUM structure 73=head2 The BIGNUM structure
72 74
73 typedef struct bignum_st 75 typedef struct bignum_st BIGNUM;
76
77 struct bignum_st
74 { 78 {
75 int top; /* number of words used in d */ 79 BN_ULONG *d; /* Pointer to an array of 'BN_BITS2' bit chunks. */
76 BN_ULONG *d; /* pointer to an array containing the integer value */ 80 int top; /* Index of last used d +1. */
77 int max; /* size of the d array */ 81 /* The next are internal book keeping for bn_expand. */
78 int neg; /* sign */ 82 int dmax; /* Size of the d array. */
79 } BIGNUM; 83 int neg; /* one if the number is negative */
84 int flags;
85 };
86
80 87
81The integer value is stored in B<d>, a malloc()ed array of words (B<BN_ULONG>), 88The integer value is stored in B<d>, a malloc()ed array of words (B<BN_ULONG>),
82least significant word first. A B<BN_ULONG> can be either 16, 32 or 64 bits 89least significant word first. A B<BN_ULONG> can be either 16, 32 or 64 bits
83in size, depending on the 'number of bits' (B<BITS2>) specified in 90in size, depending on the 'number of bits' (B<BITS2>) specified in
84C<openssl/bn.h>. 91C<openssl/bn.h>.
85 92
86B<max> is the size of the B<d> array that has been allocated. B<top> 93B<dmax> is the size of the B<d> array that has been allocated. B<top>
87is the number of words being used, so for a value of 4, bn.d[0]=4 and 94is the number of words being used, so for a value of 4, bn.d[0]=4 and
88bn.top=1. B<neg> is 1 if the number is negative. When a B<BIGNUM> is 95bn.top=1. B<neg> is 1 if the number is negative. When a B<BIGNUM> is
89B<0>, the B<d> field can be B<NULL> and B<top> == B<0>. 96B<0>, the B<d> field can be B<NULL> and B<top> == B<0>.
90 97
98B<flags> is a bit field of flags which are defined in C<openssl/bn.h>. The
99flags begin with B<BN_FLG_>. The macros BN_set_flags(b,n) and
100BN_get_flags(b,n) exist to enable or fetch flag(s) B<n> from B<BIGNUM>
101structure B<b>.
102
91Various routines in this library require the use of temporary 103Various routines in this library require the use of temporary
92B<BIGNUM> variables during their execution. Since dynamic memory 104B<BIGNUM> variables during their execution. Since dynamic memory
93allocation to create B<BIGNUM>s is rather expensive when used in 105allocation to create B<BIGNUM>s is rather expensive when used in
@@ -207,12 +219,12 @@ significant non-zero word plus one when B<a> has shrunk.
207=head2 Debugging 219=head2 Debugging
208 220
209bn_check_top() verifies that C<((a)-E<gt>top E<gt>= 0 && (a)-E<gt>top 221bn_check_top() verifies that C<((a)-E<gt>top E<gt>= 0 && (a)-E<gt>top
210E<lt>= (a)-E<gt>max)>. A violation will cause the program to abort. 222E<lt>= (a)-E<gt>dmax)>. A violation will cause the program to abort.
211 223
212bn_print() prints B<a> to stderr. bn_dump() prints B<n> words at B<d> 224bn_print() prints B<a> to stderr. bn_dump() prints B<n> words at B<d>
213(in reverse order, i.e. most significant word first) to stderr. 225(in reverse order, i.e. most significant word first) to stderr.
214 226
215bn_set_max() makes B<a> a static number with a B<max> of its current size. 227bn_set_max() makes B<a> a static number with a B<dmax> of its current size.
216This is used by bn_set_low() and bn_set_high() to make B<r> a read-only 228This is used by bn_set_low() and bn_set_high() to make B<r> a read-only
217B<BIGNUM> that contains the B<n> low or high words of B<a>. 229B<BIGNUM> that contains the B<n> low or high words of B<a>.
218 230
diff --git a/src/lib/libssl/src/doc/crypto/d2i_RSAPublicKey.pod b/src/lib/libssl/src/doc/crypto/d2i_RSAPublicKey.pod
index 279b29c873..aa6078bcf6 100644
--- a/src/lib/libssl/src/doc/crypto/d2i_RSAPublicKey.pod
+++ b/src/lib/libssl/src/doc/crypto/d2i_RSAPublicKey.pod
@@ -11,21 +11,21 @@ d2i_Netscape_RSA - RSA public and private key encoding functions.
11 #include <openssl/rsa.h> 11 #include <openssl/rsa.h>
12 #include <openssl/x509.h> 12 #include <openssl/x509.h>
13 13
14 RSA * d2i_RSAPublicKey(RSA **a, unsigned char **pp, long length); 14 RSA * d2i_RSAPublicKey(RSA **a, const unsigned char **pp, long length);
15 15
16 int i2d_RSAPublicKey(RSA *a, unsigned char **pp); 16 int i2d_RSAPublicKey(RSA *a, unsigned char **pp);
17 17
18 RSA * d2i_RSA_PUBKEY(RSA **a, unsigned char **pp, long length); 18 RSA * d2i_RSA_PUBKEY(RSA **a, const unsigned char **pp, long length);
19 19
20 int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp); 20 int i2d_RSA_PUBKEY(RSA *a, unsigned char **pp);
21 21
22 RSA * d2i_RSAPrivateKey(RSA **a, unsigned char **pp, long length); 22 RSA * d2i_RSAPrivateKey(RSA **a, const unsigned char **pp, long length);
23 23
24 int i2d_RSAPrivateKey(RSA *a, unsigned char **pp); 24 int i2d_RSAPrivateKey(RSA *a, unsigned char **pp);
25 25
26 int i2d_Netscape_RSA(RSA *a, unsigned char **pp, int (*cb)()); 26 int i2d_Netscape_RSA(RSA *a, unsigned char **pp, int (*cb)());
27 27
28 RSA * d2i_Netscape_RSA(RSA **a, unsigned char **pp, long length, int (*cb)()); 28 RSA * d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length, int (*cb)());
29 29
30=head1 DESCRIPTION 30=head1 DESCRIPTION
31 31
diff --git a/src/lib/libssl/src/doc/crypto/d2i_X509.pod b/src/lib/libssl/src/doc/crypto/d2i_X509.pod
index 5bfa18afbb..298ec54a4c 100644
--- a/src/lib/libssl/src/doc/crypto/d2i_X509.pod
+++ b/src/lib/libssl/src/doc/crypto/d2i_X509.pod
@@ -15,8 +15,8 @@ i2d_X509_fp - X509 encode and decode functions
15 X509 *d2i_X509_bio(BIO *bp, X509 **x); 15 X509 *d2i_X509_bio(BIO *bp, X509 **x);
16 X509 *d2i_X509_fp(FILE *fp, X509 **x); 16 X509 *d2i_X509_fp(FILE *fp, X509 **x);
17 17
18 int i2d_X509_bio(X509 *x, BIO *bp); 18 int i2d_X509_bio(BIO *bp, X509 *x);
19 int i2d_X509_fp(X509 *x, FILE *fp); 19 int i2d_X509_fp(FILE *fp, X509 *x);
20 20
21=head1 DESCRIPTION 21=head1 DESCRIPTION
22 22
@@ -212,11 +212,11 @@ d2i_X509(), d2i_X509_bio() and d2i_X509_fp() return a valid B<X509> structure
212or B<NULL> if an error occurs. The error code that can be obtained by 212or B<NULL> if an error occurs. The error code that can be obtained by
213L<ERR_get_error(3)|ERR_get_error(3)>. 213L<ERR_get_error(3)|ERR_get_error(3)>.
214 214
215i2d_X509(), i2d_X509_bio() and i2d_X509_fp() return a the number of bytes 215i2d_X509() returns the number of bytes successfully encoded or a negative
216successfully encoded or a negative value if an error occurs. The error code 216value if an error occurs. The error code can be obtained by
217can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. 217L<ERR_get_error(3)|ERR_get_error(3)>.
218 218
219i2d_X509_bio() and i2d_X509_fp() returns 1 for success and 0 if an error 219i2d_X509_bio() and i2d_X509_fp() return 1 for success and 0 if an error
220occurs The error code can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>. 220occurs The error code can be obtained by L<ERR_get_error(3)|ERR_get_error(3)>.
221 221
222=head1 SEE ALSO 222=head1 SEE ALSO
diff --git a/src/lib/libssl/src/doc/crypto/d2i_X509_CRL.pod b/src/lib/libssl/src/doc/crypto/d2i_X509_CRL.pod
index e7295a5d61..224f9e082b 100644
--- a/src/lib/libssl/src/doc/crypto/d2i_X509_CRL.pod
+++ b/src/lib/libssl/src/doc/crypto/d2i_X509_CRL.pod
@@ -15,8 +15,8 @@ i2d_X509_CRL_bio, i2d_X509_CRL_fp - PKCS#10 certificate request functions.
15 X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **x); 15 X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **x);
16 X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **x); 16 X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **x);
17 17
18 int i2d_X509_CRL_bio(X509_CRL *x, BIO *bp); 18 int i2d_X509_CRL_bio(BIO *bp, X509_CRL *x);
19 int i2d_X509_CRL_fp(X509_CRL *x, FILE *fp); 19 int i2d_X509_CRL_fp(FILE *fp, X509_CRL *x);
20 20
21=head1 DESCRIPTION 21=head1 DESCRIPTION
22 22
diff --git a/src/lib/libssl/src/doc/crypto/d2i_X509_REQ.pod b/src/lib/libssl/src/doc/crypto/d2i_X509_REQ.pod
index ae32a3891d..91c0c1974b 100644
--- a/src/lib/libssl/src/doc/crypto/d2i_X509_REQ.pod
+++ b/src/lib/libssl/src/doc/crypto/d2i_X509_REQ.pod
@@ -15,8 +15,8 @@ i2d_X509_REQ_bio, i2d_X509_REQ_fp - PKCS#10 certificate request functions.
15 X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **x); 15 X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **x);
16 X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **x); 16 X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **x);
17 17
18 int i2d_X509_REQ_bio(X509_REQ *x, BIO *bp); 18 int i2d_X509_REQ_bio(BIO *bp, X509_REQ *x);
19 int i2d_X509_REQ_fp(X509_REQ *x, FILE *fp); 19 int i2d_X509_REQ_fp(FILE *fp, X509_REQ *x);
20 20
21=head1 DESCRIPTION 21=head1 DESCRIPTION
22 22
diff --git a/src/lib/libssl/src/doc/crypto/evp.pod b/src/lib/libssl/src/doc/crypto/evp.pod
index b3ca14314f..9faa349243 100644
--- a/src/lib/libssl/src/doc/crypto/evp.pod
+++ b/src/lib/libssl/src/doc/crypto/evp.pod
@@ -22,14 +22,24 @@ digital signatures.
22Symmetric encryption is available with the B<EVP_Encrypt>I<...> 22Symmetric encryption is available with the B<EVP_Encrypt>I<...>
23functions. The B<EVP_Digest>I<...> functions provide message digests. 23functions. The B<EVP_Digest>I<...> functions provide message digests.
24 24
25The B<EVP_PKEY>I<...> functions provide a high level interface to
26asymmetric algorithms.
27
25Algorithms are loaded with OpenSSL_add_all_algorithms(3). 28Algorithms are loaded with OpenSSL_add_all_algorithms(3).
26 29
27All the symmetric algorithms (ciphers) and digests can be replaced by ENGINE 30All the symmetric algorithms (ciphers), digests and asymmetric algorithms
28modules providing alternative implementations. If ENGINE implementations of 31(public key algorithms) can be replaced by ENGINE modules providing alternative
29ciphers or digests are registered as defaults, then the various EVP functions 32implementations. If ENGINE implementations of ciphers or digests are registered
30will automatically use those implementations automatically in preference to 33as defaults, then the various EVP functions will automatically use those
31built in software implementations. For more information, consult the engine(3) 34implementations automatically in preference to built in software
32man page. 35implementations. For more information, consult the engine(3) man page.
36
37Although low level algorithm specific functions exist for many algorithms
38their use is discouraged. They cannot be used with an ENGINE and ENGINE
39versions of new algorithms cannot be accessed using the low level functions.
40Also makes code harder to adapt to new algorithms and some options are not
41cleanly supported at the low level and some operations are more efficient
42using the high level interface.
33 43
34=head1 SEE ALSO 44=head1 SEE ALSO
35 45
diff --git a/src/lib/libssl/src/doc/crypto/hmac.pod b/src/lib/libssl/src/doc/crypto/hmac.pod
index 0bd79a6d3a..d92138d273 100644
--- a/src/lib/libssl/src/doc/crypto/hmac.pod
+++ b/src/lib/libssl/src/doc/crypto/hmac.pod
@@ -15,12 +15,12 @@ authentication code
15 15
16 void HMAC_CTX_init(HMAC_CTX *ctx); 16 void HMAC_CTX_init(HMAC_CTX *ctx);
17 17
18 void HMAC_Init(HMAC_CTX *ctx, const void *key, int key_len, 18 int HMAC_Init(HMAC_CTX *ctx, const void *key, int key_len,
19 const EVP_MD *md); 19 const EVP_MD *md);
20 void HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int key_len, 20 int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int key_len,
21 const EVP_MD *md, ENGINE *impl); 21 const EVP_MD *md, ENGINE *impl);
22 void HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len); 22 int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, int len);
23 void HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len); 23 int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len);
24 24
25 void HMAC_CTX_cleanup(HMAC_CTX *ctx); 25 void HMAC_CTX_cleanup(HMAC_CTX *ctx);
26 void HMAC_cleanup(HMAC_CTX *ctx); 26 void HMAC_cleanup(HMAC_CTX *ctx);
@@ -41,8 +41,6 @@ If B<md> is NULL, the digest is placed in a static array. The size of
41the output is placed in B<md_len>, unless it is B<NULL>. 41the output is placed in B<md_len>, unless it is B<NULL>.
42 42
43B<evp_md> can be EVP_sha1(), EVP_ripemd160() etc. 43B<evp_md> can be EVP_sha1(), EVP_ripemd160() etc.
44B<key> and B<evp_md> may be B<NULL> if a key and hash function have
45been set in a previous call to HMAC_Init() for that B<HMAC_CTX>.
46 44
47HMAC_CTX_init() initialises a B<HMAC_CTX> before first use. It must be 45HMAC_CTX_init() initialises a B<HMAC_CTX> before first use. It must be
48called. 46called.
@@ -78,10 +76,13 @@ must have space for the hash function output.
78 76
79=head1 RETURN VALUES 77=head1 RETURN VALUES
80 78
81HMAC() returns a pointer to the message authentication code. 79HMAC() returns a pointer to the message authentication code or NULL if
80an error occurred.
82 81
83HMAC_CTX_init(), HMAC_Init_ex(), HMAC_Update(), HMAC_Final() and 82HMAC_Init_ex(), HMAC_Update() and HMAC_Final() return 1 for success or 0 if
84HMAC_CTX_cleanup() do not return values. 83an error occurred.
84
85HMAC_CTX_init() and HMAC_CTX_cleanup() do not return values.
85 86
86=head1 CONFORMING TO 87=head1 CONFORMING TO
87 88
@@ -99,4 +100,7 @@ are available since SSLeay 0.9.0.
99HMAC_CTX_init(), HMAC_Init_ex() and HMAC_CTX_cleanup() are available 100HMAC_CTX_init(), HMAC_Init_ex() and HMAC_CTX_cleanup() are available
100since OpenSSL 0.9.7. 101since OpenSSL 0.9.7.
101 102
103HMAC_Init_ex(), HMAC_Update() and HMAC_Final() did not return values in
104versions of OpenSSL before 1.0.0.
105
102=cut 106=cut
diff --git a/src/lib/libssl/src/doc/crypto/lhash.pod b/src/lib/libssl/src/doc/crypto/lhash.pod
index dcdbb43a8e..73a19b6c7e 100644
--- a/src/lib/libssl/src/doc/crypto/lhash.pod
+++ b/src/lib/libssl/src/doc/crypto/lhash.pod
@@ -8,18 +8,20 @@ lh_new, lh_free, lh_insert, lh_delete, lh_retrieve, lh_doall, lh_doall_arg, lh_e
8 8
9 #include <openssl/lhash.h> 9 #include <openssl/lhash.h>
10 10
11 LHASH *lh_new(LHASH_HASH_FN_TYPE hash, LHASH_COMP_FN_TYPE compare); 11 DECLARE_LHASH_OF(<type>);
12 void lh_free(LHASH *table);
13 12
14 void *lh_insert(LHASH *table, void *data); 13 LHASH *lh_<type>_new();
15 void *lh_delete(LHASH *table, void *data); 14 void lh_<type>_free(LHASH_OF(<type> *table);
16 void *lh_retrieve(LHASH *table, void *data);
17 15
18 void lh_doall(LHASH *table, LHASH_DOALL_FN_TYPE func); 16 <type> *lh_<type>_insert(LHASH_OF(<type> *table, <type> *data);
19 void lh_doall_arg(LHASH *table, LHASH_DOALL_ARG_FN_TYPE func, 17 <type> *lh_<type>_delete(LHASH_OF(<type> *table, <type> *data);
20 void *arg); 18 <type> *lh_retrieve(LHASH_OF<type> *table, <type> *data);
21 19
22 int lh_error(LHASH *table); 20 void lh_<type>_doall(LHASH_OF(<type> *table, LHASH_DOALL_FN_TYPE func);
21 void lh_<type>_doall_arg(LHASH_OF(<type> *table, LHASH_DOALL_ARG_FN_TYPE func,
22 <type2>, <type2> *arg);
23
24 int lh_<type>_error(LHASH_OF(<type> *table);
23 25
24 typedef int (*LHASH_COMP_FN_TYPE)(const void *, const void *); 26 typedef int (*LHASH_COMP_FN_TYPE)(const void *, const void *);
25 typedef unsigned long (*LHASH_HASH_FN_TYPE)(const void *); 27 typedef unsigned long (*LHASH_HASH_FN_TYPE)(const void *);
@@ -28,113 +30,115 @@ lh_new, lh_free, lh_insert, lh_delete, lh_retrieve, lh_doall, lh_doall_arg, lh_e
28 30
29=head1 DESCRIPTION 31=head1 DESCRIPTION
30 32
31This library implements dynamic hash tables. The hash table entries 33This library implements type-checked dynamic hash tables. The hash
32can be arbitrary structures. Usually they consist of key and value 34table entries can be arbitrary structures. Usually they consist of key
33fields. 35and value fields.
34 36
35lh_new() creates a new B<LHASH> structure to store arbitrary data 37lh_<type>_new() creates a new B<LHASH_OF(<type>> structure to store
36entries, and provides the 'hash' and 'compare' callbacks to be used in 38arbitrary data entries, and provides the 'hash' and 'compare'
37organising the table's entries. The B<hash> callback takes a pointer 39callbacks to be used in organising the table's entries. The B<hash>
38to a table entry as its argument and returns an unsigned long hash 40callback takes a pointer to a table entry as its argument and returns
39value for its key field. The hash value is normally truncated to a 41an unsigned long hash value for its key field. The hash value is
40power of 2, so make sure that your hash function returns well mixed 42normally truncated to a power of 2, so make sure that your hash
41low order bits. The B<compare> callback takes two arguments (pointers 43function returns well mixed low order bits. The B<compare> callback
42to two hash table entries), and returns 0 if their keys are equal, 44takes two arguments (pointers to two hash table entries), and returns
43non-zero otherwise. If your hash table will contain items of some 450 if their keys are equal, non-zero otherwise. If your hash table
44particular type and the B<hash> and B<compare> callbacks hash/compare 46will contain items of some particular type and the B<hash> and
45these types, then the B<DECLARE_LHASH_HASH_FN> and 47B<compare> callbacks hash/compare these types, then the
46B<IMPLEMENT_LHASH_COMP_FN> macros can be used to create callback 48B<DECLARE_LHASH_HASH_FN> and B<IMPLEMENT_LHASH_COMP_FN> macros can be
47wrappers of the prototypes required by lh_new(). These provide 49used to create callback wrappers of the prototypes required by
48per-variable casts before calling the type-specific callbacks written 50lh_<type>_new(). These provide per-variable casts before calling the
49by the application author. These macros, as well as those used for 51type-specific callbacks written by the application author. These
50the "doall" callbacks, are defined as; 52macros, as well as those used for the "doall" callbacks, are defined
51 53as;
52 #define DECLARE_LHASH_HASH_FN(f_name,o_type) \ 54
53 unsigned long f_name##_LHASH_HASH(const void *); 55 #define DECLARE_LHASH_HASH_FN(name, o_type) \
54 #define IMPLEMENT_LHASH_HASH_FN(f_name,o_type) \ 56 unsigned long name##_LHASH_HASH(const void *);
55 unsigned long f_name##_LHASH_HASH(const void *arg) { \ 57 #define IMPLEMENT_LHASH_HASH_FN(name, o_type) \
56 o_type a = (o_type)arg; \ 58 unsigned long name##_LHASH_HASH(const void *arg) { \
57 return f_name(a); } 59 const o_type *a = arg; \
58 #define LHASH_HASH_FN(f_name) f_name##_LHASH_HASH 60 return name##_hash(a); }
59 61 #define LHASH_HASH_FN(name) name##_LHASH_HASH
60 #define DECLARE_LHASH_COMP_FN(f_name,o_type) \ 62
61 int f_name##_LHASH_COMP(const void *, const void *); 63 #define DECLARE_LHASH_COMP_FN(name, o_type) \
62 #define IMPLEMENT_LHASH_COMP_FN(f_name,o_type) \ 64 int name##_LHASH_COMP(const void *, const void *);
63 int f_name##_LHASH_COMP(const void *arg1, const void *arg2) { \ 65 #define IMPLEMENT_LHASH_COMP_FN(name, o_type) \
64 o_type a = (o_type)arg1; \ 66 int name##_LHASH_COMP(const void *arg1, const void *arg2) { \
65 o_type b = (o_type)arg2; \ 67 const o_type *a = arg1; \
66 return f_name(a,b); } 68 const o_type *b = arg2; \
67 #define LHASH_COMP_FN(f_name) f_name##_LHASH_COMP 69 return name##_cmp(a,b); }
68 70 #define LHASH_COMP_FN(name) name##_LHASH_COMP
69 #define DECLARE_LHASH_DOALL_FN(f_name,o_type) \ 71
70 void f_name##_LHASH_DOALL(const void *); 72 #define DECLARE_LHASH_DOALL_FN(name, o_type) \
71 #define IMPLEMENT_LHASH_DOALL_FN(f_name,o_type) \ 73 void name##_LHASH_DOALL(void *);
72 void f_name##_LHASH_DOALL(const void *arg) { \ 74 #define IMPLEMENT_LHASH_DOALL_FN(name, o_type) \
73 o_type a = (o_type)arg; \ 75 void name##_LHASH_DOALL(void *arg) { \
74 f_name(a); } 76 o_type *a = arg; \
75 #define LHASH_DOALL_FN(f_name) f_name##_LHASH_DOALL 77 name##_doall(a); }
76 78 #define LHASH_DOALL_FN(name) name##_LHASH_DOALL
77 #define DECLARE_LHASH_DOALL_ARG_FN(f_name,o_type,a_type) \ 79
78 void f_name##_LHASH_DOALL_ARG(const void *, const void *); 80 #define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \
79 #define IMPLEMENT_LHASH_DOALL_ARG_FN(f_name,o_type,a_type) \ 81 void name##_LHASH_DOALL_ARG(void *, void *);
80 void f_name##_LHASH_DOALL_ARG(const void *arg1, const void *arg2) { \ 82 #define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \
81 o_type a = (o_type)arg1; \ 83 void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \
82 a_type b = (a_type)arg2; \ 84 o_type *a = arg1; \
83 f_name(a,b); } 85 a_type *b = arg2; \
84 #define LHASH_DOALL_ARG_FN(f_name) f_name##_LHASH_DOALL_ARG 86 name##_doall_arg(a, b); }
85 87 #define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG
86An example of a hash table storing (pointers to) structures of type 'STUFF' 88
87could be defined as follows; 89 An example of a hash table storing (pointers to) structures of type 'STUFF'
90 could be defined as follows;
88 91
89 /* Calculates the hash value of 'tohash' (implemented elsewhere) */ 92 /* Calculates the hash value of 'tohash' (implemented elsewhere) */
90 unsigned long STUFF_hash(const STUFF *tohash); 93 unsigned long STUFF_hash(const STUFF *tohash);
91 /* Orders 'arg1' and 'arg2' (implemented elsewhere) */ 94 /* Orders 'arg1' and 'arg2' (implemented elsewhere) */
92 int STUFF_cmp(const STUFF *arg1, const STUFF *arg2); 95 int stuff_cmp(const STUFF *arg1, const STUFF *arg2);
93 /* Create the type-safe wrapper functions for use in the LHASH internals */ 96 /* Create the type-safe wrapper functions for use in the LHASH internals */
94 static IMPLEMENT_LHASH_HASH_FN(STUFF_hash, const STUFF *) 97 static IMPLEMENT_LHASH_HASH_FN(stuff, STUFF);
95 static IMPLEMENT_LHASH_COMP_FN(STUFF_cmp, const STUFF *); 98 static IMPLEMENT_LHASH_COMP_FN(stuff, STUFF);
96 /* ... */ 99 /* ... */
97 int main(int argc, char *argv[]) { 100 int main(int argc, char *argv[]) {
98 /* Create the new hash table using the hash/compare wrappers */ 101 /* Create the new hash table using the hash/compare wrappers */
99 LHASH *hashtable = lh_new(LHASH_HASH_FN(STUFF_hash), 102 LHASH_OF(STUFF) *hashtable = lh_STUFF_new(LHASH_HASH_FN(STUFF_hash),
100 LHASH_COMP_FN(STUFF_cmp)); 103 LHASH_COMP_FN(STUFF_cmp));
101 /* ... */ 104 /* ... */
102 } 105 }
103 106
104lh_free() frees the B<LHASH> structure B<table>. Allocated hash table 107lh_<type>_free() frees the B<LHASH_OF(<type>> structure
105entries will not be freed; consider using lh_doall() to deallocate any 108B<table>. Allocated hash table entries will not be freed; consider
106remaining entries in the hash table (see below). 109using lh_<type>_doall() to deallocate any remaining entries in the
110hash table (see below).
107 111
108lh_insert() inserts the structure pointed to by B<data> into B<table>. 112lh_<type>_insert() inserts the structure pointed to by B<data> into
109If there already is an entry with the same key, the old value is 113B<table>. If there already is an entry with the same key, the old
110replaced. Note that lh_insert() stores pointers, the data are not 114value is replaced. Note that lh_<type>_insert() stores pointers, the
111copied. 115data are not copied.
112 116
113lh_delete() deletes an entry from B<table>. 117lh_<type>_delete() deletes an entry from B<table>.
114 118
115lh_retrieve() looks up an entry in B<table>. Normally, B<data> is 119lh_<type>_retrieve() looks up an entry in B<table>. Normally, B<data>
116a structure with the key field(s) set; the function will return a 120is a structure with the key field(s) set; the function will return a
117pointer to a fully populated structure. 121pointer to a fully populated structure.
118 122
119lh_doall() will, for every entry in the hash table, call B<func> with 123lh_<type>_doall() will, for every entry in the hash table, call
120the data item as its parameter. For lh_doall() and lh_doall_arg(), 124B<func> with the data item as its parameter. For lh_<type>_doall()
121function pointer casting should be avoided in the callbacks (see 125and lh_<type>_doall_arg(), function pointer casting should be avoided
122B<NOTE>) - instead, either declare the callbacks to match the 126in the callbacks (see B<NOTE>) - instead use the declare/implement
123prototype required in lh_new() or use the declare/implement macros to 127macros to create type-checked wrappers that cast variables prior to
124create type-safe wrappers that cast variables prior to calling your 128calling your type-specific callbacks. An example of this is
125type-specific callbacks. An example of this is illustrated here where 129illustrated here where the callback is used to cleanup resources for
126the callback is used to cleanup resources for items in the hash table 130items in the hash table prior to the hashtable itself being
127prior to the hashtable itself being deallocated: 131deallocated:
128 132
129 /* Cleans up resources belonging to 'a' (this is implemented elsewhere) */ 133 /* Cleans up resources belonging to 'a' (this is implemented elsewhere) */
130 void STUFF_cleanup(STUFF *a); 134 void STUFF_cleanup_doall(STUFF *a);
131 /* Implement a prototype-compatible wrapper for "STUFF_cleanup" */ 135 /* Implement a prototype-compatible wrapper for "STUFF_cleanup" */
132 IMPLEMENT_LHASH_DOALL_FN(STUFF_cleanup, STUFF *) 136 IMPLEMENT_LHASH_DOALL_FN(STUFF_cleanup, STUFF)
133 /* ... then later in the code ... */ 137 /* ... then later in the code ... */
134 /* So to run "STUFF_cleanup" against all items in a hash table ... */ 138 /* So to run "STUFF_cleanup" against all items in a hash table ... */
135 lh_doall(hashtable, LHASH_DOALL_FN(STUFF_cleanup)); 139 lh_STUFF_doall(hashtable, LHASH_DOALL_FN(STUFF_cleanup));
136 /* Then the hash table itself can be deallocated */ 140 /* Then the hash table itself can be deallocated */
137 lh_free(hashtable); 141 lh_STUFF_free(hashtable);
138 142
139When doing this, be careful if you delete entries from the hash table 143When doing this, be careful if you delete entries from the hash table
140in your callbacks: the table may decrease in size, moving the item 144in your callbacks: the table may decrease in size, moving the item
@@ -145,51 +149,52 @@ you start (which will stop the hash table ever decreasing in size).
145The best solution is probably to avoid deleting items from the hash 149The best solution is probably to avoid deleting items from the hash
146table inside a "doall" callback! 150table inside a "doall" callback!
147 151
148lh_doall_arg() is the same as lh_doall() except that B<func> will be 152lh_<type>_doall_arg() is the same as lh_<type>_doall() except that
149called with B<arg> as the second argument and B<func> should be of 153B<func> will be called with B<arg> as the second argument and B<func>
150type B<LHASH_DOALL_ARG_FN_TYPE> (a callback prototype that is passed 154should be of type B<LHASH_DOALL_ARG_FN_TYPE> (a callback prototype
151both the table entry and an extra argument). As with lh_doall(), you 155that is passed both the table entry and an extra argument). As with
152can instead choose to declare your callback with a prototype matching 156lh_doall(), you can instead choose to declare your callback with a
153the types you are dealing with and use the declare/implement macros to 157prototype matching the types you are dealing with and use the
154create compatible wrappers that cast variables before calling your 158declare/implement macros to create compatible wrappers that cast
155type-specific callbacks. An example of this is demonstrated here 159variables before calling your type-specific callbacks. An example of
156(printing all hash table entries to a BIO that is provided by the 160this is demonstrated here (printing all hash table entries to a BIO
157caller): 161that is provided by the caller):
158 162
159 /* Prints item 'a' to 'output_bio' (this is implemented elsewhere) */ 163 /* Prints item 'a' to 'output_bio' (this is implemented elsewhere) */
160 void STUFF_print(const STUFF *a, BIO *output_bio); 164 void STUFF_print_doall_arg(const STUFF *a, BIO *output_bio);
161 /* Implement a prototype-compatible wrapper for "STUFF_print" */ 165 /* Implement a prototype-compatible wrapper for "STUFF_print" */
162 static IMPLEMENT_LHASH_DOALL_ARG_FN(STUFF_print, const STUFF *, BIO *) 166 static IMPLEMENT_LHASH_DOALL_ARG_FN(STUFF, const STUFF, BIO)
163 /* ... then later in the code ... */ 167 /* ... then later in the code ... */
164 /* Print out the entire hashtable to a particular BIO */ 168 /* Print out the entire hashtable to a particular BIO */
165 lh_doall_arg(hashtable, LHASH_DOALL_ARG_FN(STUFF_print), logging_bio); 169 lh_STUFF_doall_arg(hashtable, LHASH_DOALL_ARG_FN(STUFF_print), BIO,
170 logging_bio);
166 171
167lh_error() can be used to determine if an error occurred in the last 172lh_<type>_error() can be used to determine if an error occurred in the last
168operation. lh_error() is a macro. 173operation. lh_<type>_error() is a macro.
169 174
170=head1 RETURN VALUES 175=head1 RETURN VALUES
171 176
172lh_new() returns B<NULL> on error, otherwise a pointer to the new 177lh_<type>_new() returns B<NULL> on error, otherwise a pointer to the new
173B<LHASH> structure. 178B<LHASH> structure.
174 179
175When a hash table entry is replaced, lh_insert() returns the value 180When a hash table entry is replaced, lh_<type>_insert() returns the value
176being replaced. B<NULL> is returned on normal operation and on error. 181being replaced. B<NULL> is returned on normal operation and on error.
177 182
178lh_delete() returns the entry being deleted. B<NULL> is returned if 183lh_<type>_delete() returns the entry being deleted. B<NULL> is returned if
179there is no such value in the hash table. 184there is no such value in the hash table.
180 185
181lh_retrieve() returns the hash table entry if it has been found, 186lh_<type>_retrieve() returns the hash table entry if it has been found,
182B<NULL> otherwise. 187B<NULL> otherwise.
183 188
184lh_error() returns 1 if an error occurred in the last operation, 0 189lh_<type>_error() returns 1 if an error occurred in the last operation, 0
185otherwise. 190otherwise.
186 191
187lh_free(), lh_doall() and lh_doall_arg() return no values. 192lh_<type>_free(), lh_<type>_doall() and lh_<type>_doall_arg() return no values.
188 193
189=head1 NOTE 194=head1 NOTE
190 195
191The various LHASH macros and callback types exist to make it possible 196The various LHASH macros and callback types exist to make it possible
192to write type-safe code without resorting to function-prototype 197to write type-checked code without resorting to function-prototype
193casting - an evil that makes application code much harder to 198casting - an evil that makes application code much harder to
194audit/verify and also opens the window of opportunity for stack 199audit/verify and also opens the window of opportunity for stack
195corruption and other hard-to-find bugs. It also, apparently, violates 200corruption and other hard-to-find bugs. It also, apparently, violates
@@ -227,7 +232,7 @@ without any "const" qualifiers.
227 232
228=head1 BUGS 233=head1 BUGS
229 234
230lh_insert() returns B<NULL> both for success and error. 235lh_<type>_insert() returns B<NULL> both for success and error.
231 236
232=head1 INTERNALS 237=head1 INTERNALS
233 238
@@ -272,8 +277,8 @@ lh_strhash() is a demo string hashing function:
272 unsigned long lh_strhash(const char *c); 277 unsigned long lh_strhash(const char *c);
273 278
274Since the B<LHASH> routines would normally be passed structures, this 279Since the B<LHASH> routines would normally be passed structures, this
275routine would not normally be passed to lh_new(), rather it would be 280routine would not normally be passed to lh_<type>_new(), rather it would be
276used in the function passed to lh_new(). 281used in the function passed to lh_<type>_new().
277 282
278=head1 SEE ALSO 283=head1 SEE ALSO
279 284
@@ -291,4 +296,7 @@ were changed for better type safety, and the function types LHASH_COMP_FN_TYPE,
291LHASH_HASH_FN_TYPE, LHASH_DOALL_FN_TYPE and LHASH_DOALL_ARG_FN_TYPE 296LHASH_HASH_FN_TYPE, LHASH_DOALL_FN_TYPE and LHASH_DOALL_ARG_FN_TYPE
292became available. 297became available.
293 298
299In OpenSSL 1.0.0, the lhash interface was revamped for even better
300type checking.
301
294=cut 302=cut
diff --git a/src/lib/libssl/src/doc/crypto/pem.pod b/src/lib/libssl/src/doc/crypto/pem.pod
index 4f9a27df0c..d5b1896119 100644
--- a/src/lib/libssl/src/doc/crypto/pem.pod
+++ b/src/lib/libssl/src/doc/crypto/pem.pod
@@ -2,7 +2,7 @@
2 2
3=head1 NAME 3=head1 NAME
4 4
5PEM - PEM routines 5PEM, PEM_read_bio_PrivateKey, PEM_read_PrivateKey, PEM_write_bio_PrivateKey, PEM_write_PrivateKey, PEM_write_bio_PKCS8PrivateKey, PEM_write_PKCS8PrivateKey, PEM_write_bio_PKCS8PrivateKey_nid, PEM_write_PKCS8PrivateKey_nid, PEM_read_bio_PUBKEY, PEM_read_PUBKEY, PEM_write_bio_PUBKEY, PEM_write_PUBKEY, PEM_read_bio_RSAPrivateKey, PEM_read_RSAPrivateKey, PEM_write_bio_RSAPrivateKey, PEM_write_RSAPrivateKey, PEM_read_bio_RSAPublicKey, PEM_read_RSAPublicKey, PEM_write_bio_RSAPublicKey, PEM_write_RSAPublicKey, PEM_read_bio_RSA_PUBKEY, PEM_read_RSA_PUBKEY, PEM_write_bio_RSA_PUBKEY, PEM_write_RSA_PUBKEY, PEM_read_bio_DSAPrivateKey, PEM_read_DSAPrivateKey, PEM_write_bio_DSAPrivateKey, PEM_write_DSAPrivateKey, PEM_read_bio_DSA_PUBKEY, PEM_read_DSA_PUBKEY, PEM_write_bio_DSA_PUBKEY, PEM_write_DSA_PUBKEY, PEM_read_bio_DSAparams, PEM_read_DSAparams, PEM_write_bio_DSAparams, PEM_write_DSAparams, PEM_read_bio_DHparams, PEM_read_DHparams, PEM_write_bio_DHparams, PEM_write_DHparams, PEM_read_bio_X509, PEM_read_X509, PEM_write_bio_X509, PEM_write_X509, PEM_read_bio_X509_AUX, PEM_read_X509_AUX, PEM_write_bio_X509_AUX, PEM_write_X509_AUX, PEM_read_bio_X509_REQ, PEM_read_X509_REQ, PEM_write_bio_X509_REQ, PEM_write_X509_REQ, PEM_write_bio_X509_REQ_NEW, PEM_write_X509_REQ_NEW, PEM_read_bio_X509_CRL, PEM_read_X509_CRL, PEM_write_bio_X509_CRL, PEM_write_X509_CRL, PEM_read_bio_PKCS7, PEM_read_PKCS7, PEM_write_bio_PKCS7, PEM_write_PKCS7, PEM_read_bio_NETSCAPE_CERT_SEQUENCE, PEM_read_NETSCAPE_CERT_SEQUENCE, PEM_write_bio_NETSCAPE_CERT_SEQUENCE, PEM_write_NETSCAPE_CERT_SEQUENCE - PEM routines
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
diff --git a/src/lib/libssl/src/doc/crypto/threads.pod b/src/lib/libssl/src/doc/crypto/threads.pod
index 3df4ecd776..dc0e9391dc 100644
--- a/src/lib/libssl/src/doc/crypto/threads.pod
+++ b/src/lib/libssl/src/doc/crypto/threads.pod
@@ -2,7 +2,9 @@
2 2
3=head1 NAME 3=head1 NAME
4 4
5CRYPTO_set_locking_callback, CRYPTO_set_id_callback, CRYPTO_num_locks, 5CRYPTO_THREADID_set_callback, CRYPTO_THREADID_get_callback,
6CRYPTO_THREADID_current, CRYPTO_THREADID_cmp, CRYPTO_THREADID_cpy,
7CRYPTO_THREADID_hash, CRYPTO_set_locking_callback, CRYPTO_num_locks,
6CRYPTO_set_dynlock_create_callback, CRYPTO_set_dynlock_lock_callback, 8CRYPTO_set_dynlock_create_callback, CRYPTO_set_dynlock_lock_callback,
7CRYPTO_set_dynlock_destroy_callback, CRYPTO_get_new_dynlockid, 9CRYPTO_set_dynlock_destroy_callback, CRYPTO_get_new_dynlockid,
8CRYPTO_destroy_dynlockid, CRYPTO_lock - OpenSSL thread support 10CRYPTO_destroy_dynlockid, CRYPTO_lock - OpenSSL thread support
@@ -11,14 +13,26 @@ CRYPTO_destroy_dynlockid, CRYPTO_lock - OpenSSL thread support
11 13
12 #include <openssl/crypto.h> 14 #include <openssl/crypto.h>
13 15
14 void CRYPTO_set_locking_callback(void (*locking_function)(int mode, 16 /* Don't use this structure directly. */
15 int n, const char *file, int line)); 17 typedef struct crypto_threadid_st
16 18 {
17 void CRYPTO_set_id_callback(unsigned long (*id_function)(void)); 19 void *ptr;
20 unsigned long val;
21 } CRYPTO_THREADID;
22 /* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */
23 void CRYPTO_THREADID_set_numeric(CRYPTO_THREADID *id, unsigned long val);
24 void CRYPTO_THREADID_set_pointer(CRYPTO_THREADID *id, void *ptr);
25 int CRYPTO_THREADID_set_callback(void (*threadid_func)(CRYPTO_THREADID *));
26 void (*CRYPTO_THREADID_get_callback(void))(CRYPTO_THREADID *);
27 void CRYPTO_THREADID_current(CRYPTO_THREADID *id);
28 int CRYPTO_THREADID_cmp(const CRYPTO_THREADID *a,
29 const CRYPTO_THREADID *b);
30 void CRYPTO_THREADID_cpy(CRYPTO_THREADID *dest,
31 const CRYPTO_THREADID *src);
32 unsigned long CRYPTO_THREADID_hash(const CRYPTO_THREADID *id);
18 33
19 int CRYPTO_num_locks(void); 34 int CRYPTO_num_locks(void);
20 35
21
22 /* struct CRYPTO_dynlock_value needs to be defined by the user */ 36 /* struct CRYPTO_dynlock_value needs to be defined by the user */
23 struct CRYPTO_dynlock_value; 37 struct CRYPTO_dynlock_value;
24 38
@@ -50,7 +64,8 @@ CRYPTO_destroy_dynlockid, CRYPTO_lock - OpenSSL thread support
50=head1 DESCRIPTION 64=head1 DESCRIPTION
51 65
52OpenSSL can safely be used in multi-threaded applications provided 66OpenSSL can safely be used in multi-threaded applications provided
53that at least two callback functions are set. 67that at least two callback functions are set, locking_function and
68threadid_func.
54 69
55locking_function(int mode, int n, const char *file, int line) is 70locking_function(int mode, int n, const char *file, int line) is
56needed to perform locking on shared data structures. 71needed to perform locking on shared data structures.
@@ -65,10 +80,42 @@ B<CRYPTO_LOCK>, and releases it otherwise.
65B<file> and B<line> are the file number of the function setting the 80B<file> and B<line> are the file number of the function setting the
66lock. They can be useful for debugging. 81lock. They can be useful for debugging.
67 82
68id_function(void) is a function that returns a thread ID, for example 83threadid_func(CRYPTO_THREADID *id) is needed to record the currently-executing
69pthread_self() if it returns an integer (see NOTES below). It isn't 84thread's identifier into B<id>. The implementation of this callback should not
70needed on Windows nor on platforms where getpid() returns a different 85fill in B<id> directly, but should use CRYPTO_THREADID_set_numeric() if thread
71ID for each thread (see NOTES below). 86IDs are numeric, or CRYPTO_THREADID_set_pointer() if they are pointer-based.
87If the application does not register such a callback using
88CRYPTO_THREADID_set_callback(), then a default implementation is used - on
89Windows and BeOS this uses the system's default thread identifying APIs, and on
90all other platforms it uses the address of B<errno>. The latter is satisfactory
91for thread-safety if and only if the platform has a thread-local error number
92facility.
93
94Once threadid_func() is registered, or if the built-in default implementation is
95to be used;
96
97=over 4
98
99=item *
100CRYPTO_THREADID_current() records the currently-executing thread ID into the
101given B<id> object.
102
103=item *
104CRYPTO_THREADID_cmp() compares two thread IDs (returning zero for equality, ie.
105the same semantics as memcmp()).
106
107=item *
108CRYPTO_THREADID_cpy() duplicates a thread ID value,
109
110=item *
111CRYPTO_THREADID_hash() returns a numeric value usable as a hash-table key. This
112is usually the exact numeric or pointer-based thread ID used internally, however
113this also handles the unusual case where pointers are larger than 'long'
114variables and the platform's thread IDs are pointer-based - in this case, mixing
115is done to attempt to produce a unique numeric value even though it is not as
116wide as the platform's true thread IDs.
117
118=back
72 119
73Additionally, OpenSSL supports dynamic locks, and sometimes, some parts 120Additionally, OpenSSL supports dynamic locks, and sometimes, some parts
74of OpenSSL need it for better performance. To enable this, the following 121of OpenSSL need it for better performance. To enable this, the following
@@ -140,22 +187,6 @@ You can find out if OpenSSL was configured with thread support:
140Also, dynamic locks are currently not used internally by OpenSSL, but 187Also, dynamic locks are currently not used internally by OpenSSL, but
141may do so in the future. 188may do so in the future.
142 189
143Defining id_function(void) has it's own issues. Generally speaking,
144pthread_self() should be used, even on platforms where getpid() gives
145different answers in each thread, since that may depend on the machine
146the program is run on, not the machine where the program is being
147compiled. For instance, Red Hat 8 Linux and earlier used
148LinuxThreads, whose getpid() returns a different value for each
149thread. Red Hat 9 Linux and later use NPTL, which is
150Posix-conformant, and has a getpid() that returns the same value for
151all threads in a process. A program compiled on Red Hat 8 and run on
152Red Hat 9 will therefore see getpid() returning the same value for
153all threads.
154
155There is still the issue of platforms where pthread_self() returns
156something other than an integer. This is a bit unusual, and this
157manual has no cookbook solution for that case.
158
159=head1 EXAMPLES 190=head1 EXAMPLES
160 191
161B<crypto/threads/mttest.c> shows examples of the callback functions on 192B<crypto/threads/mttest.c> shows examples of the callback functions on
@@ -163,10 +194,14 @@ Solaris, Irix and Win32.
163 194
164=head1 HISTORY 195=head1 HISTORY
165 196
166CRYPTO_set_locking_callback() and CRYPTO_set_id_callback() are 197CRYPTO_set_locking_callback() is
167available in all versions of SSLeay and OpenSSL. 198available in all versions of SSLeay and OpenSSL.
168CRYPTO_num_locks() was added in OpenSSL 0.9.4. 199CRYPTO_num_locks() was added in OpenSSL 0.9.4.
169All functions dealing with dynamic locks were added in OpenSSL 0.9.5b-dev. 200All functions dealing with dynamic locks were added in OpenSSL 0.9.5b-dev.
201B<CRYPTO_THREADID> and associated functions were introduced in OpenSSL 1.0.0
202to replace (actually, deprecate) the previous CRYPTO_set_id_callback(),
203CRYPTO_get_id_callback(), and CRYPTO_thread_id() functions which assumed
204thread IDs to always be represented by 'unsigned long'.
170 205
171=head1 SEE ALSO 206=head1 SEE ALSO
172 207
diff --git a/src/lib/libssl/src/doc/crypto/ui_compat.pod b/src/lib/libssl/src/doc/crypto/ui_compat.pod
index 9ab3c69bf2..adf2ae5e53 100644
--- a/src/lib/libssl/src/doc/crypto/ui_compat.pod
+++ b/src/lib/libssl/src/doc/crypto/ui_compat.pod
@@ -7,6 +7,8 @@ Compatibility user interface functions
7 7
8=head1 SYNOPSIS 8=head1 SYNOPSIS
9 9
10 #include <openssl/des_old.h>
11
10 int des_read_password(DES_cblock *key,const char *prompt,int verify); 12 int des_read_password(DES_cblock *key,const char *prompt,int verify);
11 int des_read_2passwords(DES_cblock *key1,DES_cblock *key2, 13 int des_read_2passwords(DES_cblock *key1,DES_cblock *key2,
12 const char *prompt,int verify); 14 const char *prompt,int verify);
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod b/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod
index f62a869a9b..eb772b55de 100644
--- a/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod
+++ b/src/lib/libssl/src/doc/ssl/SSL_CIPHER_get_name.pod
@@ -11,7 +11,7 @@ SSL_CIPHER_get_name, SSL_CIPHER_get_bits, SSL_CIPHER_get_version, SSL_CIPHER_des
11 const char *SSL_CIPHER_get_name(const SSL_CIPHER *cipher); 11 const char *SSL_CIPHER_get_name(const SSL_CIPHER *cipher);
12 int SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *alg_bits); 12 int SSL_CIPHER_get_bits(const SSL_CIPHER *cipher, int *alg_bits);
13 char *SSL_CIPHER_get_version(const SSL_CIPHER *cipher); 13 char *SSL_CIPHER_get_version(const SSL_CIPHER *cipher);
14 char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int size); 14 char *SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int size);
15 15
16=head1 DESCRIPTION 16=head1 DESCRIPTION
17 17
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod
index 465220a75c..73e8c47f9a 100644
--- a/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod
+++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_new.pod
@@ -8,7 +8,7 @@ SSL_CTX_new - create a new SSL_CTX object as framework for TLS/SSL enabled funct
8 8
9 #include <openssl/ssl.h> 9 #include <openssl/ssl.h>
10 10
11 SSL_CTX *SSL_CTX_new(SSL_METHOD *method); 11 SSL_CTX *SSL_CTX_new(const SSL_METHOD *method);
12 12
13=head1 DESCRIPTION 13=head1 DESCRIPTION
14 14
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_mode.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_mode.pod
index 9822544e5e..8cb669daeb 100644
--- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_mode.pod
+++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_mode.pod
@@ -61,6 +61,16 @@ deal with read/write operations returning without success report. The
61flag SSL_MODE_AUTO_RETRY will cause read/write operations to only 61flag SSL_MODE_AUTO_RETRY will cause read/write operations to only
62return after the handshake and successful completion. 62return after the handshake and successful completion.
63 63
64=item SSL_MODE_RELEASE_BUFFERS
65
66When we no longer need a read buffer or a write buffer for a given SSL,
67then release the memory we were using to hold it. Released memory is
68either appended to a list of unused RAM chunks on the SSL_CTX, or simply
69freed if the list of unused chunks would become longer than
70SSL_CTX->freelist_max_len, which defaults to 32. Using this flag can
71save around 34k per idle SSL connection.
72This flag has no effect on SSL v2 connections, or on DTLS connections.
73
64=back 74=back
65 75
66=head1 RETURN VALUES 76=head1 RETURN VALUES
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod
index eaed190809..310db84b31 100644
--- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod
+++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_options.pod
@@ -2,7 +2,7 @@
2 2
3=head1 NAME 3=head1 NAME
4 4
5SSL_CTX_set_options, SSL_set_options, SSL_CTX_get_options, SSL_get_options - manipulate SSL engine options 5SSL_CTX_set_options, SSL_set_options, SSL_CTX_clear_options, SSL_clear_options, SSL_CTX_get_options, SSL_get_options, SSL_get_secure_renegotiation_support - manipulate SSL options
6 6
7=head1 SYNOPSIS 7=head1 SYNOPSIS
8 8
@@ -11,26 +11,41 @@ SSL_CTX_set_options, SSL_set_options, SSL_CTX_get_options, SSL_get_options - man
11 long SSL_CTX_set_options(SSL_CTX *ctx, long options); 11 long SSL_CTX_set_options(SSL_CTX *ctx, long options);
12 long SSL_set_options(SSL *ssl, long options); 12 long SSL_set_options(SSL *ssl, long options);
13 13
14 long SSL_CTX_clear_options(SSL_CTX *ctx, long options);
15 long SSL_clear_options(SSL *ssl, long options);
16
14 long SSL_CTX_get_options(SSL_CTX *ctx); 17 long SSL_CTX_get_options(SSL_CTX *ctx);
15 long SSL_get_options(SSL *ssl); 18 long SSL_get_options(SSL *ssl);
16 19
20 long SSL_get_secure_renegotiation_support(SSL *ssl);
21
17=head1 DESCRIPTION 22=head1 DESCRIPTION
18 23
24Note: all these functions are implemented using macros.
25
19SSL_CTX_set_options() adds the options set via bitmask in B<options> to B<ctx>. 26SSL_CTX_set_options() adds the options set via bitmask in B<options> to B<ctx>.
20Options already set before are not cleared! 27Options already set before are not cleared!
21 28
22SSL_set_options() adds the options set via bitmask in B<options> to B<ssl>. 29SSL_set_options() adds the options set via bitmask in B<options> to B<ssl>.
23Options already set before are not cleared! 30Options already set before are not cleared!
24 31
32SSL_CTX_clear_options() clears the options set via bitmask in B<options>
33to B<ctx>.
34
35SSL_clear_options() clears the options set via bitmask in B<options> to B<ssl>.
36
25SSL_CTX_get_options() returns the options set for B<ctx>. 37SSL_CTX_get_options() returns the options set for B<ctx>.
26 38
27SSL_get_options() returns the options set for B<ssl>. 39SSL_get_options() returns the options set for B<ssl>.
28 40
41SSL_get_secure_renegotiation_support() indicates whether the peer supports
42secure renegotiation.
43
29=head1 NOTES 44=head1 NOTES
30 45
31The behaviour of the SSL library can be changed by setting several options. 46The behaviour of the SSL library can be changed by setting several options.
32The options are coded as bitmasks and can be combined by a logical B<or> 47The options are coded as bitmasks and can be combined by a logical B<or>
33operation (|). Options can only be added but can never be reset. 48operation (|).
34 49
35SSL_CTX_set_options() and SSL_set_options() affect the (external) 50SSL_CTX_set_options() and SSL_set_options() affect the (external)
36protocol behaviour of the SSL library. The (internal) behaviour of 51protocol behaviour of the SSL library. The (internal) behaviour of
@@ -199,26 +214,117 @@ Do not use the TLSv1 protocol.
199 214
200When performing renegotiation as a server, always start a new session 215When performing renegotiation as a server, always start a new session
201(i.e., session resumption requests are only accepted in the initial 216(i.e., session resumption requests are only accepted in the initial
202handshake). This option is not needed for clients. 217handshake). This option is not needed for clients.
203 218
204=item SSL_OP_NO_TICKET 219=item SSL_OP_NO_TICKET
205 220
206Normally clients and servers will, where possible, transparently make use 221Normally clients and servers will, where possible, transparently make use
207of RFC4507bis tickets for stateless session resumption if extension support 222of RFC4507bis tickets for stateless session resumption.
208is explicitly set when OpenSSL is compiled.
209 223
210If this option is set this functionality is disabled and tickets will 224If this option is set this functionality is disabled and tickets will
211not be used by clients or servers. 225not be used by clients or servers.
212 226
227=item SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
228
229Allow legacy insecure renegotiation between OpenSSL and unpatched clients or
230servers. See the B<SECURE RENEGOTIATION> section for more details.
231
232=item SSL_OP_LEGACY_SERVER_CONNECT
233
234Allow legacy insecure renegotiation between OpenSSL and unpatched servers
235B<only>: this option is currently set by default. See the
236B<SECURE RENEGOTIATION> section for more details.
237
213=back 238=back
214 239
240=head1 SECURE RENEGOTIATION
241
242OpenSSL 0.9.8m and later always attempts to use secure renegotiation as
243described in RFC5746. This counters the prefix attack described in
244CVE-2009-3555 and elsewhere.
245
246The deprecated and highly broken SSLv2 protocol does not support
247renegotiation at all: its use is B<strongly> discouraged.
248
249This attack has far reaching consequences which application writers should be
250aware of. In the description below an implementation supporting secure
251renegotiation is referred to as I<patched>. A server not supporting secure
252renegotiation is referred to as I<unpatched>.
253
254The following sections describe the operations permitted by OpenSSL's secure
255renegotiation implementation.
256
257=head2 Patched client and server
258
259Connections and renegotiation are always permitted by OpenSSL implementations.
260
261=head2 Unpatched client and patched OpenSSL server
262
263The initial connection suceeds but client renegotiation is denied by the
264server with a B<no_renegotiation> warning alert if TLS v1.0 is used or a fatal
265B<handshake_failure> alert in SSL v3.0.
266
267If the patched OpenSSL server attempts to renegotiate a fatal
268B<handshake_failure> alert is sent. This is because the server code may be
269unaware of the unpatched nature of the client.
270
271If the option B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION> is set then
272renegotiation B<always> succeeds.
273
274B<NB:> a bug in OpenSSL clients earlier than 0.9.8m (all of which are
275unpatched) will result in the connection hanging if it receives a
276B<no_renegotiation> alert. OpenSSL versions 0.9.8m and later will regard
277a B<no_renegotiation> alert as fatal and respond with a fatal
278B<handshake_failure> alert. This is because the OpenSSL API currently has
279no provision to indicate to an application that a renegotiation attempt
280was refused.
281
282=head2 Patched OpenSSL client and unpatched server.
283
284If the option B<SSL_OP_LEGACY_SERVER_CONNECT> or
285B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION> is set then initial connections
286and renegotiation between patched OpenSSL clients and unpatched servers
287succeeds. If neither option is set then initial connections to unpatched
288servers will fail.
289
290The option B<SSL_OP_LEGACY_SERVER_CONNECT> is currently set by default even
291though it has security implications: otherwise it would be impossible to
292connect to unpatched servers (i.e. all of them initially) and this is clearly
293not acceptable. Renegotiation is permitted because this does not add any
294additional security issues: during an attack clients do not see any
295renegotiations anyway.
296
297As more servers become patched the option B<SSL_OP_LEGACY_SERVER_CONNECT> will
298B<not> be set by default in a future version of OpenSSL.
299
300OpenSSL client applications wishing to ensure they can connect to unpatched
301servers should always B<set> B<SSL_OP_LEGACY_SERVER_CONNECT>
302
303OpenSSL client applications that want to ensure they can B<not> connect to
304unpatched servers (and thus avoid any security issues) should always B<clear>
305B<SSL_OP_LEGACY_SERVER_CONNECT> using SSL_CTX_clear_options() or
306SSL_clear_options().
307
308The difference between the B<SSL_OP_LEGACY_SERVER_CONNECT> and
309B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION> options is that
310B<SSL_OP_LEGACY_SERVER_CONNECT> enables initial connections and secure
311renegotiation between OpenSSL clients and unpatched servers B<only>, while
312B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION> allows initial connections
313and renegotiation between OpenSSL and unpatched clients or servers.
314
215=head1 RETURN VALUES 315=head1 RETURN VALUES
216 316
217SSL_CTX_set_options() and SSL_set_options() return the new options bitmask 317SSL_CTX_set_options() and SSL_set_options() return the new options bitmask
218after adding B<options>. 318after adding B<options>.
219 319
320SSL_CTX_clear_options() and SSL_clear_options() return the new options bitmask
321after clearing B<options>.
322
220SSL_CTX_get_options() and SSL_get_options() return the current bitmask. 323SSL_CTX_get_options() and SSL_get_options() return the current bitmask.
221 324
325SSL_get_secure_renegotiation_support() returns 1 is the peer supports
326secure renegotiation and 0 if it does not.
327
222=head1 SEE ALSO 328=head1 SEE ALSO
223 329
224L<ssl(3)|ssl(3)>, L<SSL_new(3)|SSL_new(3)>, L<SSL_clear(3)|SSL_clear(3)>, 330L<ssl(3)|ssl(3)>, L<SSL_new(3)|SSL_new(3)>, L<SSL_clear(3)|SSL_clear(3)>,
@@ -241,4 +347,11 @@ Versions up to OpenSSL 0.9.6c do not include the countermeasure that
241can be disabled with this option (in OpenSSL 0.9.6d, it was always 347can be disabled with this option (in OpenSSL 0.9.6d, it was always
242enabled). 348enabled).
243 349
350SSL_CTX_clear_options() and SSL_clear_options() were first added in OpenSSL
3510.9.8m.
352
353B<SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION>, B<SSL_OP_LEGACY_SERVER_CONNECT>
354and the function SSL_get_secure_renegotiation_support() were first added in
355OpenSSL 0.9.8m.
356
244=cut 357=cut
diff --git a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_ssl_version.pod b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_ssl_version.pod
index 0020180965..254f2b4397 100644
--- a/src/lib/libssl/src/doc/ssl/SSL_CTX_set_ssl_version.pod
+++ b/src/lib/libssl/src/doc/ssl/SSL_CTX_set_ssl_version.pod
@@ -9,9 +9,9 @@ SSL_CTX_set_ssl_version, SSL_set_ssl_method, SSL_get_ssl_method
9 9
10 #include <openssl/ssl.h> 10 #include <openssl/ssl.h>
11 11
12 int SSL_CTX_set_ssl_version(SSL_CTX *ctx, SSL_METHOD *method); 12 int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *method);
13 int SSL_set_ssl_method(SSL *s, SSL_METHOD *method); 13 int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);
14 SSL_METHOD *SSL_get_ssl_method(SSL *ssl); 14 const SSL_METHOD *SSL_get_ssl_method(SSL *ssl);
15 15
16=head1 DESCRIPTION 16=head1 DESCRIPTION
17 17
diff --git a/src/lib/libssl/src/doc/ssl/SSL_library_init.pod b/src/lib/libssl/src/doc/ssl/SSL_library_init.pod
index ecf3c4858e..8766776fea 100644
--- a/src/lib/libssl/src/doc/ssl/SSL_library_init.pod
+++ b/src/lib/libssl/src/doc/ssl/SSL_library_init.pod
@@ -15,7 +15,7 @@ SSL_library_init, OpenSSL_add_ssl_algorithms, SSLeay_add_ssl_algorithms
15 15
16=head1 DESCRIPTION 16=head1 DESCRIPTION
17 17
18SSL_library_init() registers the available ciphers and digests. 18SSL_library_init() registers the available SSL/TLS ciphers and digests.
19 19
20OpenSSL_add_ssl_algorithms() and SSLeay_add_ssl_algorithms() are synonyms 20OpenSSL_add_ssl_algorithms() and SSLeay_add_ssl_algorithms() are synonyms
21for SSL_library_init(). 21for SSL_library_init().
@@ -23,27 +23,32 @@ for SSL_library_init().
23=head1 NOTES 23=head1 NOTES
24 24
25SSL_library_init() must be called before any other action takes place. 25SSL_library_init() must be called before any other action takes place.
26SSL_library_init() is not reentrant.
26 27
27=head1 WARNING 28=head1 WARNING
28 29
29SSL_library_init() only registers ciphers. Another important initialization 30SSL_library_init() adds ciphers and digests used directly and indirectly by
30is the seeding of the PRNG (Pseudo Random Number Generator), which has to 31SSL/TLS.
31be performed separately.
32 32
33=head1 EXAMPLES 33=head1 EXAMPLES
34 34
35A typical TLS/SSL application will start with the library initialization, 35A typical TLS/SSL application will start with the library initialization,
36will provide readable error messages and will seed the PRNG. 36and provide readable error messages.
37 37
38 SSL_load_error_strings(); /* readable error messages */ 38 SSL_load_error_strings(); /* readable error messages */
39 SSL_library_init(); /* initialize library */ 39 SSL_library_init(); /* initialize library */
40 actions_to_seed_PRNG();
41 40
42=head1 RETURN VALUES 41=head1 RETURN VALUES
43 42
44SSL_library_init() always returns "1", so it is safe to discard the return 43SSL_library_init() always returns "1", so it is safe to discard the return
45value. 44value.
46 45
46=head1 NOTES
47
48OpenSSL 0.9.8o and 1.0.0a and later added SHA2 algorithms to SSL_library_init().
49Applications which need to use SHA2 in earlier versions of OpenSSL should call
50OpenSSL_add_all_algorithms() as well.
51
47=head1 SEE ALSO 52=head1 SEE ALSO
48 53
49L<ssl(3)|ssl(3)>, L<SSL_load_error_strings(3)|SSL_load_error_strings(3)>, 54L<ssl(3)|ssl(3)>, L<SSL_load_error_strings(3)|SSL_load_error_strings(3)>,
diff --git a/src/lib/libssl/src/doc/ssl/ssl.pod b/src/lib/libssl/src/doc/ssl/ssl.pod
index 266697d221..2b6004ee32 100644
--- a/src/lib/libssl/src/doc/ssl/ssl.pod
+++ b/src/lib/libssl/src/doc/ssl/ssl.pod
@@ -130,39 +130,39 @@ protocol methods defined in B<SSL_METHOD> structures.
130 130
131=over 4 131=over 4
132 132
133=item SSL_METHOD *B<SSLv2_client_method>(void); 133=item const SSL_METHOD *B<SSLv2_client_method>(void);
134 134
135Constructor for the SSLv2 SSL_METHOD structure for a dedicated client. 135Constructor for the SSLv2 SSL_METHOD structure for a dedicated client.
136 136
137=item SSL_METHOD *B<SSLv2_server_method>(void); 137=item const SSL_METHOD *B<SSLv2_server_method>(void);
138 138
139Constructor for the SSLv2 SSL_METHOD structure for a dedicated server. 139Constructor for the SSLv2 SSL_METHOD structure for a dedicated server.
140 140
141=item SSL_METHOD *B<SSLv2_method>(void); 141=item const SSL_METHOD *B<SSLv2_method>(void);
142 142
143Constructor for the SSLv2 SSL_METHOD structure for combined client and server. 143Constructor for the SSLv2 SSL_METHOD structure for combined client and server.
144 144
145=item SSL_METHOD *B<SSLv3_client_method>(void); 145=item const SSL_METHOD *B<SSLv3_client_method>(void);
146 146
147Constructor for the SSLv3 SSL_METHOD structure for a dedicated client. 147Constructor for the SSLv3 SSL_METHOD structure for a dedicated client.
148 148
149=item SSL_METHOD *B<SSLv3_server_method>(void); 149=item const SSL_METHOD *B<SSLv3_server_method>(void);
150 150
151Constructor for the SSLv3 SSL_METHOD structure for a dedicated server. 151Constructor for the SSLv3 SSL_METHOD structure for a dedicated server.
152 152
153=item SSL_METHOD *B<SSLv3_method>(void); 153=item const SSL_METHOD *B<SSLv3_method>(void);
154 154
155Constructor for the SSLv3 SSL_METHOD structure for combined client and server. 155Constructor for the SSLv3 SSL_METHOD structure for combined client and server.
156 156
157=item SSL_METHOD *B<TLSv1_client_method>(void); 157=item const SSL_METHOD *B<TLSv1_client_method>(void);
158 158
159Constructor for the TLSv1 SSL_METHOD structure for a dedicated client. 159Constructor for the TLSv1 SSL_METHOD structure for a dedicated client.
160 160
161=item SSL_METHOD *B<TLSv1_server_method>(void); 161=item cosnt SSL_METHOD *B<TLSv1_server_method>(void);
162 162
163Constructor for the TLSv1 SSL_METHOD structure for a dedicated server. 163Constructor for the TLSv1 SSL_METHOD structure for a dedicated server.
164 164
165=item SSL_METHOD *B<TLSv1_method>(void); 165=item const SSL_METHOD *B<TLSv1_method>(void);
166 166
167Constructor for the TLSv1 SSL_METHOD structure for combined client and server. 167Constructor for the TLSv1 SSL_METHOD structure for combined client and server.
168 168
@@ -249,7 +249,7 @@ protocol context defined in the B<SSL_CTX> structure.
249 249
250=item long B<SSL_CTX_need_tmp_RSA>(SSL_CTX *ctx); 250=item long B<SSL_CTX_need_tmp_RSA>(SSL_CTX *ctx);
251 251
252=item SSL_CTX *B<SSL_CTX_new>(SSL_METHOD *meth); 252=item SSL_CTX *B<SSL_CTX_new>(const SSL_METHOD *meth);
253 253
254=item int B<SSL_CTX_remove_session>(SSL_CTX *ctx, SSL_SESSION *c); 254=item int B<SSL_CTX_remove_session>(SSL_CTX *ctx, SSL_SESSION *c);
255 255
@@ -327,7 +327,7 @@ protocol context defined in the B<SSL_CTX> structure.
327 327
328=item void B<SSL_CTX_set_session_cache_mode>(SSL_CTX *ctx, int mode); 328=item void B<SSL_CTX_set_session_cache_mode>(SSL_CTX *ctx, int mode);
329 329
330=item int B<SSL_CTX_set_ssl_version>(SSL_CTX *ctx, SSL_METHOD *meth); 330=item int B<SSL_CTX_set_ssl_version>(SSL_CTX *ctx, const SSL_METHOD *meth);
331 331
332=item void B<SSL_CTX_set_timeout>(SSL_CTX *ctx, long t); 332=item void B<SSL_CTX_set_timeout>(SSL_CTX *ctx, long t);
333 333
@@ -374,6 +374,15 @@ session instead of a context.
374 374
375=item int B<SSL_CTX_use_certificate_file>(SSL_CTX *ctx, char *file, int type); 375=item int B<SSL_CTX_use_certificate_file>(SSL_CTX *ctx, char *file, int type);
376 376
377=item void B<SSL_CTX_set_psk_client_callback>(SSL_CTX *ctx, unsigned int (*callback)(SSL *ssl, const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len));
378
379=item int B<SSL_CTX_use_psk_identity_hint>(SSL_CTX *ctx, const char *hint);
380
381=item void B<SSL_CTX_set_psk_server_callback>(SSL_CTX *ctx, unsigned int (*callback)(SSL *ssl, const char *identity, unsigned char *psk, int max_psk_len));
382
383
384
385
377=back 386=back
378 387
379=head2 DEALING WITH SESSIONS 388=head2 DEALING WITH SESSIONS
@@ -512,7 +521,7 @@ connection defined in the B<SSL> structure.
512 521
513=item int B<SSL_get_shutdown>(const SSL *ssl); 522=item int B<SSL_get_shutdown>(const SSL *ssl);
514 523
515=item SSL_METHOD *B<SSL_get_ssl_method>(SSL *ssl); 524=item const SSL_METHOD *B<SSL_get_ssl_method>(SSL *ssl);
516 525
517=item int B<SSL_get_state>(const SSL *ssl); 526=item int B<SSL_get_state>(const SSL *ssl);
518 527
@@ -596,7 +605,7 @@ connection defined in the B<SSL> structure.
596 605
597=item void B<SSL_set_shutdown>(SSL *ssl, int mode); 606=item void B<SSL_set_shutdown>(SSL *ssl, int mode);
598 607
599=item int B<SSL_set_ssl_method>(SSL *ssl, SSL_METHOD *meth); 608=item int B<SSL_set_ssl_method>(SSL *ssl, const SSL_METHOD *meth);
600 609
601=item void B<SSL_set_time>(SSL *ssl, long t); 610=item void B<SSL_set_time>(SSL *ssl, long t);
602 611
@@ -650,6 +659,16 @@ connection defined in the B<SSL> structure.
650 659
651=item int B<SSL_write>(SSL *ssl, const void *buf, int num); 660=item int B<SSL_write>(SSL *ssl, const void *buf, int num);
652 661
662=item void B<SSL_set_psk_client_callback>(SSL *ssl, unsigned int (*callback)(SSL *ssl, const char *hint, char *identity, unsigned int max_identity_len, unsigned char *psk, unsigned int max_psk_len));
663
664=item int B<SSL_use_psk_identity_hint>(SSL *ssl, const char *hint);
665
666=item void B<SSL_set_psk_server_callback>(SSL *ssl, unsigned int (*callback)(SSL *ssl, const char *identity, unsigned char *psk, int max_psk_len));
667
668=item const char *B<SSL_get_psk_identity_hint>(SSL *ssl);
669
670=item const char *B<SSL_get_psk_identity>(SSL *ssl);
671
653=back 672=back
654 673
655=head1 SEE ALSO 674=head1 SEE ALSO
@@ -726,7 +745,10 @@ L<SSL_write(3)|SSL_write(3)>,
726L<SSL_SESSION_free(3)|SSL_SESSION_free(3)>, 745L<SSL_SESSION_free(3)|SSL_SESSION_free(3)>,
727L<SSL_SESSION_get_ex_new_index(3)|SSL_SESSION_get_ex_new_index(3)>, 746L<SSL_SESSION_get_ex_new_index(3)|SSL_SESSION_get_ex_new_index(3)>,
728L<SSL_SESSION_get_time(3)|SSL_SESSION_get_time(3)>, 747L<SSL_SESSION_get_time(3)|SSL_SESSION_get_time(3)>,
729L<d2i_SSL_SESSION(3)|d2i_SSL_SESSION(3)> 748L<d2i_SSL_SESSION(3)|d2i_SSL_SESSION(3)>,
749L<SSL_CTX_set_psk_client_callback(3)|SSL_CTX_set_psk_client_callback(3)>,
750L<SSL_CTX_use_psk_identity_hint(3)|SSL_CTX_use_psk_identity_hint(3)>,
751L<SSL_get_psk_identity(3)|SSL_get_psk_identity(3)>
730 752
731=head1 HISTORY 753=head1 HISTORY
732 754
diff --git a/src/lib/libssl/src/doc/ssleay.txt b/src/lib/libssl/src/doc/ssleay.txt
index a8b04d7059..4d2e714868 100644
--- a/src/lib/libssl/src/doc/ssleay.txt
+++ b/src/lib/libssl/src/doc/ssleay.txt
@@ -20,7 +20,7 @@ don't do that.
20==== readme ======================================================== 20==== readme ========================================================
21 21
22This is the old 0.6.6 docuementation. Most of the cipher stuff is still 22This is the old 0.6.6 docuementation. Most of the cipher stuff is still
23relevent but I'm working (very slowly) on new docuemtation. 23relevent but I'm working (very slowly) on new documentation.
24The current version can be found online at 24The current version can be found online at
25 25
26http://www.cryptsoft.com/ssleay/doc 26http://www.cryptsoft.com/ssleay/doc
@@ -548,8 +548,8 @@ application, ssleay. This one program is composed of many programs that
548can all be compiled independantly. 548can all be compiled independantly.
549 549
550ssleay has 3 modes of operation. 550ssleay has 3 modes of operation.
5511) If the ssleay binaray has the name of one of its component programs, it 5511) If the ssleay binary has the name of one of its component programs, it
552executes that program and then exits. This can be achieve by using hard or 552executes that program and then exits. This can be achieved by using hard or
553symbolic links, or failing that, just renaming the binary. 553symbolic links, or failing that, just renaming the binary.
5542) If the first argument to ssleay is the name of one of the component 5542) If the first argument to ssleay is the name of one of the component
555programs, that program runs that program and then exits. 555programs, that program runs that program and then exits.
@@ -1185,7 +1185,7 @@ typedef struct bio_st
1185 example is for BIO_s_sock(). A socket needs to be 1185 example is for BIO_s_sock(). A socket needs to be
1186 assigned to the BIO before it can be used. 1186 assigned to the BIO before it can be used.
1187- 'shutdown', this flag indicates if the underlying 1187- 'shutdown', this flag indicates if the underlying
1188 comunication primative being used should be closed/freed 1188 communication primitive being used should be closed/freed
1189 when the BIO is closed. 1189 when the BIO is closed.
1190- 'flags' is used to hold extra state. It is primarily used 1190- 'flags' is used to hold extra state. It is primarily used
1191 to hold information about why a non-blocking operation 1191 to hold information about why a non-blocking operation
@@ -1799,7 +1799,7 @@ int BN_set_word(BIGNUM *a, unsigned long w);
1799 1799
1800unsigned long BN_get_word(BIGNUM *a); 1800unsigned long BN_get_word(BIGNUM *a);
1801 Returns 'a' in an unsigned long. Not remarkably, often 'a' will 1801 Returns 'a' in an unsigned long. Not remarkably, often 'a' will
1802 be biger than a word, in which case 0xffffffffL is returned. 1802 be bigger than a word, in which case 0xffffffffL is returned.
1803 1803
1804Word Operations 1804Word Operations
1805These functions are much more efficient that the normal bignum arithmetic 1805These functions are much more efficient that the normal bignum arithmetic
@@ -2058,7 +2058,7 @@ Now you will notice that macros like
2058 PEM_ASN1_write((int (*)())i2d_X509,PEM_STRING_X509,fp, \ 2058 PEM_ASN1_write((int (*)())i2d_X509,PEM_STRING_X509,fp, \
2059 (char *)x, NULL,NULL,0,NULL) 2059 (char *)x, NULL,NULL,0,NULL)
2060Don't do encryption normally. If you want to PEM encrypt your X509 structure, 2060Don't do encryption normally. If you want to PEM encrypt your X509 structure,
2061either just call PEM_ASN1_write directly or just define you own 2061either just call PEM_ASN1_write directly or just define your own
2062macro variant. As you can see, this macro just sets all encryption related 2062macro variant. As you can see, this macro just sets all encryption related
2063parameters to NULL. 2063parameters to NULL.
2064 2064
@@ -5566,7 +5566,7 @@ These 2 functions create and destroy SSL_CTX structures
5566 5566
5567The SSL_CTX has a session_cache_mode which is by default, 5567The SSL_CTX has a session_cache_mode which is by default,
5568in SSL_SESS_CACHE_SERVER mode. What this means is that the library 5568in SSL_SESS_CACHE_SERVER mode. What this means is that the library
5569will automatically add new session-id's to the cache apon sucsessful 5569will automatically add new session-id's to the cache upon successful
5570SSL_accept() calls. 5570SSL_accept() calls.
5571If SSL_SESS_CACHE_CLIENT is set, then client certificates are also added 5571If SSL_SESS_CACHE_CLIENT is set, then client certificates are also added
5572to the cache. 5572to the cache.
@@ -5580,12 +5580,12 @@ SSL_SESS_NO_CACHE_BOTH - Either SSL_accept() or SSL_connect().
5580If SSL_SESS_CACHE_NO_AUTO_CLEAR is set, old timed out sessions are 5580If SSL_SESS_CACHE_NO_AUTO_CLEAR is set, old timed out sessions are
5581not automatically removed each 255, SSL_connect()s or SSL_accept()s. 5581not automatically removed each 255, SSL_connect()s or SSL_accept()s.
5582 5582
5583By default, apon every 255 successful SSL_connect() or SSL_accept()s, 5583By default, upon every 255 successful SSL_connect() or SSL_accept()s,
5584the cache is flush. Please note that this could be expensive on 5584the cache is flush. Please note that this could be expensive on
5585a heavily loaded SSL server, in which case, turn this off and 5585a heavily loaded SSL server, in which case, turn this off and
5586clear the cache of old entries 'manually' (with one of the functions 5586clear the cache of old entries 'manually' (with one of the functions
5587listed below) every few hours. Perhaps I should up this number, it is hard 5587listed below) every few hours. Perhaps I should up this number, it is hard
5588to say. Remember, the '255' new calls is just a mechanims to get called 5588to say. Remember, the '255' new calls is just a mechanism to get called
5589every now and then, in theory at most 255 new session-id's will have been 5589every now and then, in theory at most 255 new session-id's will have been
5590added but if 100 are added every minute, you would still have 5590added but if 100 are added every minute, you would still have
5591500 in the cache before any would start being flushed (assuming a 3 minute 5591500 in the cache before any would start being flushed (assuming a 3 minute
@@ -5628,10 +5628,10 @@ if copy is 1. Otherwise, the reference count is not modified.
5628void SSL_CTX_sess_set_get_cb(ctx,cb) sets the callback and 5628void SSL_CTX_sess_set_get_cb(ctx,cb) sets the callback and
5629int (*cb)()SSL_CTX_sess_get_get_cb(ctx) returns the callback. 5629int (*cb)()SSL_CTX_sess_get_get_cb(ctx) returns the callback.
5630 5630
5631These callbacks are basically indended to be used by processes to 5631These callbacks are basically intended to be used by processes to
5632send their session-id's to other processes. I currently have not implemented 5632send their session-id's to other processes. I currently have not implemented
5633non-blocking semantics for these callbacks, it is upto the appication 5633non-blocking semantics for these callbacks, it is upto the application
5634to make the callbacks effiecent if they require blocking (perhaps 5634to make the callbacks efficient if they require blocking (perhaps
5635by 'saving' them and then 'posting them' when control returns from 5635by 'saving' them and then 'posting them' when control returns from
5636the SSL_accept(). 5636the SSL_accept().
5637 5637
@@ -6589,7 +6589,7 @@ This information can be used to recall the functions when the 'error'
6589condition has dissapeared. 6589condition has dissapeared.
6590 6590
6591After the connection has been made, information can be retrived about the 6591After the connection has been made, information can be retrived about the
6592SSL session and the session-id values that have been decided apon. 6592SSL session and the session-id values that have been decided upon.
6593The 'peer' certificate can be retrieved. 6593The 'peer' certificate can be retrieved.
6594 6594
6595The session-id values include 6595The session-id values include
diff --git a/src/lib/libssl/src/doc/standards.txt b/src/lib/libssl/src/doc/standards.txt
index a5ce778f8e..7bada8d35f 100644
--- a/src/lib/libssl/src/doc/standards.txt
+++ b/src/lib/libssl/src/doc/standards.txt
@@ -69,6 +69,10 @@ PKCS#12: Personal Information Exchange Syntax Standard, version 1.0.
693174 US Secure Hash Algorithm 1 (SHA1). D. Eastlake 3rd, P. Jones. 693174 US Secure Hash Algorithm 1 (SHA1). D. Eastlake 3rd, P. Jones.
70 September 2001. (Format: TXT=35525 bytes) (Status: INFORMATIONAL) 70 September 2001. (Format: TXT=35525 bytes) (Status: INFORMATIONAL)
71 71
723161 Internet X.509 Public Key Infrastructure, Time-Stamp Protocol (TSP)
73 C. Adams, P. Cain, D. Pinkas, R. Zuccherato. August 2001
74 (Status: PROPOSED STANDARD)
75
723268 Advanced Encryption Standard (AES) Ciphersuites for Transport 763268 Advanced Encryption Standard (AES) Ciphersuites for Transport
73 Layer Security (TLS). P. Chown. June 2002. (Format: TXT=13530 bytes) 77 Layer Security (TLS). P. Chown. June 2002. (Format: TXT=13530 bytes)
74 (Status: PROPOSED STANDARD) 78 (Status: PROPOSED STANDARD)
diff --git a/src/lib/libssl/src/e_os.h b/src/lib/libssl/src/e_os.h
index 9c5c6fdb92..5ceeeeb950 100644
--- a/src/lib/libssl/src/e_os.h
+++ b/src/lib/libssl/src/e_os.h
@@ -112,7 +112,7 @@ extern "C" {
112/******************************************************************** 112/********************************************************************
113 The Microsoft section 113 The Microsoft section
114 ********************************************************************/ 114 ********************************************************************/
115/* The following is used becaue of the small stack in some 115/* The following is used because of the small stack in some
116 * Microsoft operating systems */ 116 * Microsoft operating systems */
117#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYSNAME_WIN32) 117#if defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYSNAME_WIN32)
118# define MS_STATIC static 118# define MS_STATIC static
@@ -123,9 +123,6 @@ extern "C" {
123#if defined(OPENSSL_SYS_WIN32) && !defined(WIN32) 123#if defined(OPENSSL_SYS_WIN32) && !defined(WIN32)
124# define WIN32 124# define WIN32
125#endif 125#endif
126#if defined(OPENSSL_SYS_WIN16) && !defined(WIN16)
127# define WIN16
128#endif
129#if defined(OPENSSL_SYS_WINDOWS) && !defined(WINDOWS) 126#if defined(OPENSSL_SYS_WINDOWS) && !defined(WINDOWS)
130# define WINDOWS 127# define WINDOWS
131#endif 128#endif
@@ -153,7 +150,6 @@ extern "C" {
153#define clear_socket_error() WSASetLastError(0) 150#define clear_socket_error() WSASetLastError(0)
154#define readsocket(s,b,n) recv((s),(b),(n),0) 151#define readsocket(s,b,n) recv((s),(b),(n),0)
155#define writesocket(s,b,n) send((s),(b),(n),0) 152#define writesocket(s,b,n) send((s),(b),(n),0)
156#define EADDRINUSE WSAEADDRINUSE
157#elif defined(__DJGPP__) 153#elif defined(__DJGPP__)
158#define WATT32 154#define WATT32
159#define get_last_socket_error() errno 155#define get_last_socket_error() errno
@@ -181,6 +177,13 @@ extern "C" {
181#define closesocket(s) close(s) 177#define closesocket(s) close(s)
182#define readsocket(s,b,n) read((s),(b),(n)) 178#define readsocket(s,b,n) read((s),(b),(n))
183#define writesocket(s,b,n) write((s),(char *)(b),(n)) 179#define writesocket(s,b,n) write((s),(char *)(b),(n))
180#elif defined(OPENSSL_SYS_BEOS_R5)
181#define get_last_socket_error() errno
182#define clear_socket_error() errno=0
183#define FIONBIO SO_NONBLOCK
184#define ioctlsocket(a,b,c) setsockopt((a),SOL_SOCKET,(b),(c),sizeof(*(c)))
185#define readsocket(s,b,n) recv((s),(b),(n),0)
186#define writesocket(s,b,n) send((s),(b),(n),0)
184#elif defined(OPENSSL_SYS_NETWARE) 187#elif defined(OPENSSL_SYS_NETWARE)
185#if defined(NETWARE_BSDSOCK) 188#if defined(NETWARE_BSDSOCK)
186#define get_last_socket_error() errno 189#define get_last_socket_error() errno
@@ -209,7 +212,7 @@ extern "C" {
209#define writesocket(s,b,n) write((s),(b),(n)) 212#define writesocket(s,b,n) write((s),(b),(n))
210#endif 213#endif
211 214
212#ifdef WIN16 215#ifdef WIN16 /* never the case */
213# define MS_CALLBACK _far _loadds 216# define MS_CALLBACK _far _loadds
214# define MS_FAR _far 217# define MS_FAR _far
215#else 218#else
@@ -255,19 +258,31 @@ extern "C" {
255 /* 258 /*
256 * Defining _WIN32_WINNT here in e_os.h implies certain "discipline." 259 * Defining _WIN32_WINNT here in e_os.h implies certain "discipline."
257 * Most notably we ought to check for availability of each specific 260 * Most notably we ought to check for availability of each specific
258 * routine with GetProcAddress() and/or quard NT-specific calls with 261 * routine with GetProcAddress() and/or guard NT-specific calls with
259 * GetVersion() < 0x80000000. One can argue that in latter "or" case 262 * GetVersion() < 0x80000000. One can argue that in latter "or" case
260 * we ought to /DELAYLOAD some .DLLs in order to protect ourselves 263 * we ought to /DELAYLOAD some .DLLs in order to protect ourselves
261 * against run-time link errors. This doesn't seem to be necessary, 264 * against run-time link errors. This doesn't seem to be necessary,
262 * because it turned out that already Windows 95, first non-NT Win32 265 * because it turned out that already Windows 95, first non-NT Win32
263 * implementation, is equipped with at least NT 3.51 stubs, dummy 266 * implementation, is equipped with at least NT 3.51 stubs, dummy
264 * routines with same name, but which do nothing. Meaning that it's 267 * routines with same name, but which do nothing. Meaning that it's
265 * apparently appropriate to guard generic NT calls with GetVersion 268 * apparently sufficient to guard "vanilla" NT calls with GetVersion
266 * alone, while NT 4.0 and above calls ought to be additionally 269 * alone, while NT 4.0 and above interfaces ought to be linked with
267 * checked upon with GetProcAddress. 270 * GetProcAddress at run-time.
268 */ 271 */
269# define _WIN32_WINNT 0x0400 272# define _WIN32_WINNT 0x0400
270# endif 273# endif
274# if !defined(OPENSSL_NO_SOCK) && defined(_WIN32_WINNT)
275 /*
276 * Just like defining _WIN32_WINNT including winsock2.h implies
277 * certain "discipline" for maintaining [broad] binary compatibility.
278 * As long as structures are invariant among Winsock versions,
279 * it's sufficient to check for specific Winsock2 API availability
280 * at run-time [DSO_global_lookup is recommended]...
281 */
282# include <winsock2.h>
283# include <ws2tcpip.h>
284 /* yes, they have to be #included prior to <windows.h> */
285# endif
271# include <windows.h> 286# include <windows.h>
272# include <stdio.h> 287# include <stdio.h>
273# include <stddef.h> 288# include <stddef.h>
@@ -308,8 +323,8 @@ static unsigned int _strlen31(const char *str)
308 /* pre-1300 has __p__iob(), but it's available only in msvcrt.lib, 323 /* pre-1300 has __p__iob(), but it's available only in msvcrt.lib,
309 * or in other words with /MD. Declaring implicit import, i.e. 324 * or in other words with /MD. Declaring implicit import, i.e.
310 * with _imp_ prefix, works correctly with all compiler options, 325 * with _imp_ prefix, works correctly with all compiler options,
311 * but without /MD results in LINK warning LNK4049: 326 * but without /MD results in LINK warning LNK4049:
312 * 'locally defined symbol "__iob" imported'. 327 * 'locally defined symbol "__iob" imported'.
313 */ 328 */
314 extern FILE *_imp___iob; 329 extern FILE *_imp___iob;
315# define stdin (&_imp___iob[0]) 330# define stdin (&_imp___iob[0])
@@ -322,7 +337,7 @@ static unsigned int _strlen31(const char *str)
322# include <fcntl.h> 337# include <fcntl.h>
323 338
324# ifdef OPENSSL_SYS_WINCE 339# ifdef OPENSSL_SYS_WINCE
325# include <winsock_extras.h> 340# define OPENSSL_NO_POSIX_IO
326# endif 341# endif
327 342
328# define ssize_t long 343# define ssize_t long
@@ -335,12 +350,7 @@ static unsigned int _strlen31(const char *str)
335# define _kbhit kbhit 350# define _kbhit kbhit
336# endif 351# endif
337 352
338# if defined(WIN16) && defined(SSLEAY) && defined(_WINEXITNOPERSIST) 353# define EXIT(n) exit(n)
339# define EXIT(n) _wsetexit(_WINEXITNOPERSIST)
340# define OPENSSL_EXIT(n) do { if (n == 0) EXIT(n); return(n); } while(0)
341# else
342# define EXIT(n) exit(n)
343# endif
344# define LIST_SEPARATOR_CHAR ';' 354# define LIST_SEPARATOR_CHAR ';'
345# ifndef X_OK 355# ifndef X_OK
346# define X_OK 0 356# define X_OK 0
@@ -361,7 +371,7 @@ static unsigned int _strlen31(const char *str)
361# define DEFAULT_HOME "C:" 371# define DEFAULT_HOME "C:"
362# endif 372# endif
363 373
364#else /* The non-microsoft world world */ 374#else /* The non-microsoft world */
365 375
366# ifdef OPENSSL_SYS_VMS 376# ifdef OPENSSL_SYS_VMS
367# define VMS 1 377# define VMS 1
@@ -414,7 +424,6 @@ static unsigned int _strlen31(const char *str)
414 extern int GetThreadID(void); 424 extern int GetThreadID(void);
415/* # include <conio.h> */ 425/* # include <conio.h> */
416 extern int kbhit(void); 426 extern int kbhit(void);
417 extern void delay(unsigned milliseconds);
418# else 427# else
419# include <screen.h> 428# include <screen.h>
420# endif 429# endif
@@ -454,6 +463,10 @@ static unsigned int _strlen31(const char *str)
454# define setvbuf(a, b, c, d) setbuffer((a), (b), (d)) 463# define setvbuf(a, b, c, d) setbuffer((a), (b), (d))
455 typedef unsigned long clock_t; 464 typedef unsigned long clock_t;
456# endif 465# endif
466# ifdef OPENSSL_SYS_WIN32_CYGWIN
467# include <io.h>
468# include <fcntl.h>
469# endif
457 470
458# define OPENSSL_CONF "openssl.cnf" 471# define OPENSSL_CONF "openssl.cnf"
459# define SSLEAY_CONF OPENSSL_CONF 472# define SSLEAY_CONF OPENSSL_CONF
@@ -480,8 +493,19 @@ static unsigned int _strlen31(const char *str)
480# define SHUTDOWN(fd) close(fd) 493# define SHUTDOWN(fd) close(fd)
481# define SHUTDOWN2(fd) close(fd) 494# define SHUTDOWN2(fd) close(fd)
482# elif !defined(__DJGPP__) 495# elif !defined(__DJGPP__)
483# include <winsock.h> 496# if defined(_WIN32_WCE) && _WIN32_WCE<410
484extern HINSTANCE _hInstance; 497# define getservbyname _masked_declaration_getservbyname
498# endif
499# if !defined(IPPROTO_IP)
500 /* winsock[2].h was included already? */
501# include <winsock.h>
502# endif
503# ifdef getservbyname
504# undef getservbyname
505 /* this is used to be wcecompat/include/winsock_extras.h */
506 struct servent* PASCAL getservbyname(const char*,const char*);
507# endif
508
485# ifdef _WIN64 509# ifdef _WIN64
486/* 510/*
487 * Even though sizeof(SOCKET) is 8, it's safe to cast it to int, because 511 * Even though sizeof(SOCKET) is 8, it's safe to cast it to int, because
@@ -553,8 +577,10 @@ extern HINSTANCE _hInstance;
553# include <sys/filio.h> /* Added for FIONBIO under unixware */ 577# include <sys/filio.h> /* Added for FIONBIO under unixware */
554# endif 578# endif
555# include <netinet/in.h> 579# include <netinet/in.h>
580# if !defined(OPENSSL_SYS_BEOS_R5)
556# include <arpa/inet.h> 581# include <arpa/inet.h>
557# endif 582# endif
583# endif
558 584
559# if defined(NeXT) || defined(_NEXT_SOURCE) 585# if defined(NeXT) || defined(_NEXT_SOURCE)
560# include <sys/fcntl.h> 586# include <sys/fcntl.h>
@@ -597,6 +623,18 @@ extern HINSTANCE _hInstance;
597# define INVALID_SOCKET (-1) 623# define INVALID_SOCKET (-1)
598# endif /* INVALID_SOCKET */ 624# endif /* INVALID_SOCKET */
599# endif 625# endif
626
627/* Some IPv6 implementations are broken, disable them in known bad
628 * versions.
629 */
630# if !defined(OPENSSL_USE_IPV6)
631# if defined(AF_INET6) && !defined(OPENSSL_SYS_BEOS_BONE) && !defined(NETWARE_CLIB)
632# define OPENSSL_USE_IPV6 1
633# else
634# define OPENSSL_USE_IPV6 0
635# endif
636# endif
637
600#endif 638#endif
601 639
602#if defined(__ultrix) 640#if defined(__ultrix)
@@ -630,18 +668,6 @@ extern char *sys_errlist[]; extern int sys_nerr;
630 668
631/***********************************************/ 669/***********************************************/
632 670
633/* do we need to do this for getenv.
634 * Just define getenv for use under windows */
635
636#ifdef WIN16
637/* How to do this needs to be thought out a bit more.... */
638/*char *GETENV(char *);
639#define Getenv GETENV*/
640#define Getenv getenv
641#else
642#define Getenv getenv
643#endif
644
645#define DG_GCC_BUG /* gcc < 2.6.3 on DGUX */ 671#define DG_GCC_BUG /* gcc < 2.6.3 on DGUX */
646 672
647#ifdef sgi 673#ifdef sgi
@@ -703,6 +729,15 @@ struct servent *getservbyname(const char *name, const char *proto);
703#endif 729#endif
704/* end vxworks */ 730/* end vxworks */
705 731
732/* beos */
733#if defined(OPENSSL_SYS_BEOS_R5)
734#define SO_ERROR 0
735#define NO_SYS_UN
736#define IPPROTO_IP 0
737#include <OS.h>
738#endif
739
740
706#ifdef __cplusplus 741#ifdef __cplusplus
707} 742}
708#endif 743#endif
diff --git a/src/lib/libssl/src/e_os2.h b/src/lib/libssl/src/e_os2.h
index 9da0b65448..4c785c62cf 100644
--- a/src/lib/libssl/src/e_os2.h
+++ b/src/lib/libssl/src/e_os2.h
@@ -202,6 +202,17 @@ extern "C" {
202# define OPENSSL_SYS_VXWORKS 202# define OPENSSL_SYS_VXWORKS
203#endif 203#endif
204 204
205/* --------------------------------- BeOS ---------------------------------- */
206#if defined(__BEOS__)
207# define OPENSSL_SYS_BEOS
208# include <sys/socket.h>
209# if defined(BONE_VERSION)
210# define OPENSSL_SYS_BEOS_BONE
211# else
212# define OPENSSL_SYS_BEOS_R5
213# endif
214#endif
215
205/** 216/**
206 * That's it for OS-specific stuff 217 * That's it for OS-specific stuff
207 *****************************************************************************/ 218 *****************************************************************************/
@@ -251,24 +262,23 @@ extern "C" {
251#define OPENSSL_EXTERN OPENSSL_IMPORT 262#define OPENSSL_EXTERN OPENSSL_IMPORT
252 263
253/* Macros to allow global variables to be reached through function calls when 264/* Macros to allow global variables to be reached through function calls when
254 required (if a shared library version requvres it, for example. 265 required (if a shared library version requires it, for example.
255 The way it's done allows definitions like this: 266 The way it's done allows definitions like this:
256 267
257 // in foobar.c 268 // in foobar.c
258 OPENSSL_IMPLEMENT_GLOBAL(int,foobar) = 0; 269 OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0)
259 // in foobar.h 270 // in foobar.h
260 OPENSSL_DECLARE_GLOBAL(int,foobar); 271 OPENSSL_DECLARE_GLOBAL(int,foobar);
261 #define foobar OPENSSL_GLOBAL_REF(foobar) 272 #define foobar OPENSSL_GLOBAL_REF(foobar)
262*/ 273*/
263#ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION 274#ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION
264# define OPENSSL_IMPLEMENT_GLOBAL(type,name) \ 275# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \
265 extern type _hide_##name; \ 276 type *_shadow_##name(void) \
266 type *_shadow_##name(void) { return &_hide_##name; } \ 277 { static type _hide_##name=value; return &_hide_##name; }
267 static type _hide_##name
268# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) 278# define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void)
269# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) 279# define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name()))
270#else 280#else
271# define OPENSSL_IMPLEMENT_GLOBAL(type,name) OPENSSL_GLOBAL type _shadow_##name 281# define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value;
272# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name 282# define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name
273# define OPENSSL_GLOBAL_REF(name) _shadow_##name 283# define OPENSSL_GLOBAL_REF(name) _shadow_##name
274#endif 284#endif
diff --git a/src/lib/libssl/src/engines/makeengines.com b/src/lib/libssl/src/engines/makeengines.com
index 840864f7cf..6cf4236077 100644
--- a/src/lib/libssl/src/engines/makeengines.com
+++ b/src/lib/libssl/src/engines/makeengines.com
@@ -1,11 +1,11 @@
1$! 1$!
2$! MAKEAPPS.COM 2$! MAKEENGINES.COM
3$! Written By: Richard Levitte 3$! Written By: Richard Levitte
4$! richard@levitte.org 4$! richard@levitte.org
5$! 5$!
6$! This command file compiles and creates the various engines in form 6$! This command file compiles and creates the various engines in form
7$! of shared images. They are placed in [.xxx.EXE.ENGINES], where "xxx" 7$! of shared images. They are placed in [.xxx.EXE.ENGINES], where "xxx"
8$! is either AXP or VAX depending on your hardware. 8$! is ALPHA, IA64 or VAX, depending on your hardware.
9$! 9$!
10$! P1 if this is ENGINES or ALL, the engines will build, otherwise not. 10$! P1 if this is ENGINES or ALL, the engines will build, otherwise not.
11$! 11$!
@@ -30,22 +30,49 @@ $! all available engines are built.
30$! 30$!
31$!----------------------------------------------------------------------------- 31$!-----------------------------------------------------------------------------
32$! 32$!
33$! Set the default TCP/IP library to link against if needed
34$!
35$ TCPIP_LIB = ""
36$!
37$! Check What Architecture We Are Using.
38$!
39$ IF (F$GETSYI("CPU").LT.128)
40$ THEN
41$!
42$! The Architecture Is VAX.
43$!
44$ ARCH = "VAX"
45$!
46$! Else...
47$!
48$ ELSE
49$!
50$! The Architecture Is Alpha, IA64 or whatever comes in the future.
51$!
52$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
53$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
54$!
55$! End The Architecture Check.
56$!
57$ ENDIF
58$!
33$! Set the names of the engines we want to build 59$! Set the names of the engines we want to build
60$! NOTE: Some might think this list ugly. However, it's made this way to
61$! reflect the LIBNAMES variable in Makefile as closely as possible,
62$! thereby making it fairly easy to verify that the lists are the same.
63$! NOTE: gmp isn't built, as it's mostly a test engine and brings in another
64$! library that isn't necessarely ported to VMS.
34$! 65$!
35$ ENGINES = "," + P6 66$ ENGINES = "," + P6
36$ IF ENGINES .EQS. "," THEN - 67$ IF ENGINES .EQS. "," THEN -
37 ENGINES = ",4758cca,aep,atalla,cswift,chil,nuron,sureware,ubsec,capi" 68 ENGINES = ",4758cca,aep,atalla,cswift,chil,nuron,sureware,ubsec,padlock,"
38$! 69$!
39$! Set the default TCP/IP library to link against if needed 70$! GOST requires a 64-bit integer type, unavailable on VAX.
40$!
41$ TCPIP_LIB = ""
42$! 71$!
43$! Set the architecture name 72$ IF (ARCH .NES. "VAX") THEN -
73 ENGINES = ENGINES+ ",ccgost"
44$! 74$!
45$ ARCH := VAX 75$! Set the goal directories, and create them if necessary
46$ IF F$GETSYI("CPU") .GE. 128 THEN ARCH := AXP
47$!
48$! Set the goal directories, and creat them if necessary
49$! 76$!
50$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.ENGINES] 77$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.ENGINES]
51$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.ENGINES] 78$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.ENGINES]
@@ -55,7 +82,6 @@ $!
55$! Set the goal files, and create them if necessary 82$! Set the goal files, and create them if necessary
56$! 83$!
57$ CRYPTO_LIB :=SYS$DISK:[-.'ARCH'.EXE.CRYPTO]LIBCRYPTO.OLB 84$ CRYPTO_LIB :=SYS$DISK:[-.'ARCH'.EXE.CRYPTO]LIBCRYPTO.OLB
58$ CRYPTO_EXE :=SYS$DISK:[-.'ARCH'.EXE.CRYPTO]LIBCRYPTO.EXE
59$ IF F$SEARCH(CRYPTO_LIB) .EQS. "" THEN LIBRARY/CREATE/OBJECT 'CRYPTO_LIB' 85$ IF F$SEARCH(CRYPTO_LIB) .EQS. "" THEN LIBRARY/CREATE/OBJECT 'CRYPTO_LIB'
60$! 86$!
61$! OK, time to check options and initialise 87$! OK, time to check options and initialise
@@ -71,13 +97,15 @@ $ GOSUB CHECK_OPTIONS
71$ GOSUB INITIALISE 97$ GOSUB INITIALISE
72$ GOSUB CHECK_OPT_FILE 98$ GOSUB CHECK_OPT_FILE
73$! 99$!
74$! Define what goes into each engine 100$! Define what goes into each engine. VAX includes a transfer vector.
75$! 101$!
76$ ENGINE_ = "" 102$ ENGINE_ = ""
103$ TV_OBJ = ""
77$ IF ARCH .EQS. "VAX" 104$ IF ARCH .EQS. "VAX"
78$ THEN 105$ THEN
79$ ENGINE_ = "engine_vector.mar" 106$ ENGINE_ = "engine_vector.mar"
80$ EXTRA_OBJ := ,'OBJ_DIR'ENGINE_VECTOR.OBJ 107$ TV_OBJ_NAME = OBJ_DIR + F$PARSE(ENGINE_,,,"NAME","SYNTAX_ONLY") + ".OBJ"
108$ TV_OBJ = ",''TV_OBJ_NAME'"
81$ ENDIF 109$ ENDIF
82$ ENGINE_4758CCA = "e_4758cca" 110$ ENGINE_4758CCA = "e_4758cca"
83$ ENGINE_aep = "e_aep" 111$ ENGINE_aep = "e_aep"
@@ -87,7 +115,13 @@ $ ENGINE_chil = "e_chil"
87$ ENGINE_nuron = "e_nuron" 115$ ENGINE_nuron = "e_nuron"
88$ ENGINE_sureware = "e_sureware" 116$ ENGINE_sureware = "e_sureware"
89$ ENGINE_ubsec = "e_ubsec" 117$ ENGINE_ubsec = "e_ubsec"
90$ ENGINE_capi = "e_capi" 118$ ENGINE_padlock = "e_padlock"
119$
120$ ENGINE_ccgost_SUBDIR = "ccgost"
121$ ENGINE_ccgost = "e_gost_err,gost2001_keyx,gost2001,gost89,gost94_keyx,"+ -
122 "gost_ameth,gost_asn1,gost_crypt,gost_ctl,gost_eng,"+ -
123 "gosthash,gost_keywrap,gost_md,gost_params,gost_pmeth,"+ -
124 "gost_sign"
91$! 125$!
92$! Define which programs need to be linked with a TCP/IP library 126$! Define which programs need to be linked with a TCP/IP library
93$! 127$!
@@ -134,6 +168,13 @@ $ ELSE
134$ WRITE SYS$OUTPUT "Compiling Support Files. (",BUILDALL,")" 168$ WRITE SYS$OUTPUT "Compiling Support Files. (",BUILDALL,")"
135$ ENDIF 169$ ENDIF
136$! 170$!
171$! Create a .OPT file for the object files (for a real engine name).
172$!
173$ IF ENGINE_NAME .NES. ""
174$ THEN
175$ OPEN/WRITE OBJECTS 'EXE_DIR''ENGINE_NAME'.OPT
176$ ENDIF
177$!
137$! Here's the start of per-engine module loop. 178$! Here's the start of per-engine module loop.
138$! 179$!
139$ FILE_COUNTER = 0 180$ FILE_COUNTER = 0
@@ -150,7 +191,12 @@ $ IF FILE_NAME .EQS. "" THEN GOTO FILE_NEXT
150$! 191$!
151$! Set up the source and object reference 192$! Set up the source and object reference
152$! 193$!
153$ SOURCE_FILE = F$PARSE(FILE_NAME,"SYS$DISK:[].C",,,"SYNTAX_ONLY") 194$ IF F$TYPE('LIB_ENGINE'_SUBDIR) .EQS. ""
195$ THEN
196$ SOURCE_FILE = F$PARSE(FILE_NAME,"SYS$DISK:[].C",,,"SYNTAX_ONLY")
197$ ELSE
198$ SOURCE_FILE = F$PARSE(FILE_NAME,"SYS$DISK:[."+'LIB_ENGINE'_SUBDIR+"].C",,,"SYNTAX_ONLY")
199$ ENDIF
154$ OBJECT_FILE = OBJ_DIR + F$PARSE(FILE_NAME,,,"NAME","SYNTAX_ONLY") + ".OBJ" 200$ OBJECT_FILE = OBJ_DIR + F$PARSE(FILE_NAME,,,"NAME","SYNTAX_ONLY") + ".OBJ"
155$! 201$!
156$! If we get some problem, we just go on trying to build the next module. 202$! If we get some problem, we just go on trying to build the next module.
@@ -173,13 +219,34 @@ $!
173$! Do the dirty work. 219$! Do the dirty work.
174$! 220$!
175$ ON ERROR THEN GOTO FILE_NEXT 221$ ON ERROR THEN GOTO FILE_NEXT
176$ IF FILE_NAME - ".MAR" .NES. FILE_NAME 222$ IF F$EDIT(F$PARSE(SOURCE_FILE,,,"TYPE","SYNTAX_ONLY"),"UPCASE") .EQS. ".MAR"
177$ THEN 223$ THEN
178$ MACRO/OBJECT='OBJECT_FILE' 'SOURCE_FILE' 224$ MACRO/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
179$ ELSE 225$ ELSE
180$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE' 226$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE'
181$ ENDIF 227$ ENDIF
182$! 228$!
229$! Write the entry to the .OPT file (for a real engine name).
230$!
231$ IF ENGINE_NAME .NES. ""
232$ THEN
233$ WRITE OBJECTS OBJECT_FILE
234$ ENDIF
235$!
236$! Next file
237$!
238$ GOTO FILE_NEXT
239$!
240$ FILE_DONE:
241$!
242$! Do not link the support files.
243$!
244$ IF ENGINE_NAME .EQS. "" THEN GOTO ENGINE_NEXT
245$!
246$! Close the linker options file (for a real engine name).
247$!
248$ CLOSE OBJECTS
249$!
183$! Now, there are two ways to handle this. We can either build 250$! Now, there are two ways to handle this. We can either build
184$! shareable images or stick the engine object file into libcrypto. 251$! shareable images or stick the engine object file into libcrypto.
185$! For now, the latter is NOT supported. 252$! For now, the latter is NOT supported.
@@ -193,26 +260,16 @@ $ ENGINE_OPT := SYS$DISK:[]'ARCH'.OPT
193$ IF TCPIP_LIB .NES. "" 260$ IF TCPIP_LIB .NES. ""
194$ THEN 261$ THEN
195$ LINK/'DEBUGGER'/'TRACEBACK' /SHARE='EXE_DIR''ENGINE_NAME'.EXE - 262$ LINK/'DEBUGGER'/'TRACEBACK' /SHARE='EXE_DIR''ENGINE_NAME'.EXE -
196 'OBJECT_FILE''EXTRA_OBJ', - 263 'EXE_DIR''ENGINE_NAME'.OPT/OPTION'TV_OBJ', -
197 'CRYPTO_LIB'/LIBRARY, - 264 'CRYPTO_LIB'/LIBRARY, -
198 'ENGINE_OPT'/OPTION,'TCPIP_LIB','OPT_FILE'/OPTION 265 'ENGINE_OPT'/OPTION,'TCPIP_LIB','OPT_FILE'/OPTION
199$ ELSE 266$ ELSE
200$ LINK/'DEBUGGER'/'TRACEBACK' /SHARE='EXE_DIR''ENGINE_NAME'.EXE - 267$ LINK/'DEBUGGER'/'TRACEBACK' /SHARE='EXE_DIR''ENGINE_NAME'.EXE -
201 'OBJECT_FILE''EXTRA_OBJ', - 268 'EXE_DIR''ENGINE_NAME'.OPT/OPTION'TV_OBJ', -
202 'CRYPTO_LIB'/LIBRARY, - 269 'CRYPTO_LIB'/LIBRARY, -
203 'ENGINE_OPT'/OPTION,'OPT_FILE'/OPTION 270 'ENGINE_OPT'/OPTION,'OPT_FILE'/OPTION
204$ ENDIF 271$ ENDIF
205$! 272$!
206$! Clean up
207$!
208$ DELETE 'OBJECT_FILE';*
209$!
210$! Next file
211$!
212$ GOTO FILE_NEXT
213$!
214$ FILE_DONE:
215$!
216$! Next engine 273$! Next engine
217$! 274$!
218$ GOTO ENGINE_NEXT 275$ GOTO ENGINE_NEXT
@@ -299,7 +356,7 @@ $!
299$ IF (F$SEARCH(OPT_FILE).EQS."") 356$ IF (F$SEARCH(OPT_FILE).EQS."")
300$ THEN 357$ THEN
301$! 358$!
302$! Figure Out If We Need An AXP Or A VAX Linker Option File. 359$! Figure Out If We Need A non-VAX Or A VAX Linker Option File.
303$! 360$!
304$ IF ARCH .EQS. "VAX" 361$ IF ARCH .EQS. "VAX"
305$ THEN 362$ THEN
@@ -319,19 +376,19 @@ $! Else...
319$! 376$!
320$ ELSE 377$ ELSE
321$! 378$!
322$! Create The AXP Linker Option File. 379$! Create The non-VAX Linker Option File.
323$! 380$!
324$ CREATE 'OPT_FILE' 381$ CREATE 'OPT_FILE'
325$DECK 382$DECK
326! 383!
327! Default System Options File For AXP To Link Agianst 384! Default System Options File For non-VAX To Link Agianst
328! The Sharable C Runtime Library. 385! The Sharable C Runtime Library.
329! 386!
330SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE 387SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
331SYS$SHARE:CMA$OPEN_RTL/SHARE 388SYS$SHARE:CMA$OPEN_RTL/SHARE
332$EOD 389$EOD
333$! 390$!
334$! End The VAX/AXP DEC C Option File Check. 391$! End The DEC C Option File Check.
335$! 392$!
336$ ENDIF 393$ ENDIF
337$! 394$!
@@ -368,13 +425,13 @@ $! Else...
368$! 425$!
369$ ELSE 426$ ELSE
370$! 427$!
371$! Else, Check To See If OPT_PHASE Has A Valid Arguement. 428$! Else, Check To See If OPT_PHASE Has A Valid Argument.
372$! 429$!
373$ IF ("," + ACCEPT_PHASE + ",") - ("," + OPT_PHASE + ",") - 430$ IF ("," + ACCEPT_PHASE + ",") - ("," + OPT_PHASE + ",") -
374 .NES. ("," + ACCEPT_PHASE + ",") 431 .NES. ("," + ACCEPT_PHASE + ",")
375$ THEN 432$ THEN
376$! 433$!
377$! A Valid Arguement. 434$! A Valid Argument.
378$! 435$!
379$ BUILDALL = OPT_PHASE 436$ BUILDALL = OPT_PHASE
380$! 437$!
@@ -396,15 +453,16 @@ $ IF ("," + ACCEPT_PHASE + ",") - ",ENGINES," -
396$ WRITE SYS$OUTPUT "" 453$ WRITE SYS$OUTPUT ""
397$ WRITE SYS$OUTPUT " where 'xxx' stands for:" 454$ WRITE SYS$OUTPUT " where 'xxx' stands for:"
398$ WRITE SYS$OUTPUT "" 455$ WRITE SYS$OUTPUT ""
399$ WRITE SYS$OUTPUT " AXP : Alpha architecture." 456$ WRITE SYS$OUTPUT " ALPHA : Alpha architecture."
400$ WRITE SYS$OUTPUT " VAX : VAX architecture." 457$ WRITE SYS$OUTPUT " IA64 : IA64 architecture."
458$ WRITE SYS$OUTPUT " VAX : VAX architecture."
401$ WRITE SYS$OUTPUT "" 459$ WRITE SYS$OUTPUT ""
402$! 460$!
403$! Time To EXIT. 461$! Time To EXIT.
404$! 462$!
405$ EXIT 463$ EXIT
406$! 464$!
407$! End The Valid Arguement Check. 465$! End The Valid Argument Check.
408$! 466$!
409$ ENDIF 467$ ENDIF
410$! 468$!
@@ -457,7 +515,7 @@ $! Time To EXIT.
457$! 515$!
458$ EXIT 516$ EXIT
459$! 517$!
460$! End The Valid Arguement Check. 518$! End The Valid Argument Check.
461$! 519$!
462$ ENDIF 520$ ENDIF
463$! 521$!
@@ -522,7 +580,7 @@ $ ELSE
522$! 580$!
523$! Check To See If We Have VAXC Or DECC. 581$! Check To See If We Have VAXC Or DECC.
524$! 582$!
525$ IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."") 583$ IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
526$ THEN 584$ THEN
527$! 585$!
528$! Looks Like DECC, Set To Use DECC. 586$! Looks Like DECC, Set To Use DECC.
@@ -633,7 +691,7 @@ $ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
633$! 691$!
634$! Define The Linker Options File Name. 692$! Define The Linker Options File Name.
635$! 693$!
636$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT" 694$ OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
637$! 695$!
638$! End DECC Check. 696$! End DECC Check.
639$! 697$!
@@ -655,7 +713,7 @@ $!
655$! Compile Using VAXC. 713$! Compile Using VAXC.
656$! 714$!
657$ CC = "CC" 715$ CC = "CC"
658$ IF ARCH.EQS."AXP" 716$ IF ARCH.NES."VAX"
659$ THEN 717$ THEN
660$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!" 718$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!"
661$ EXIT 719$ EXIT
@@ -672,7 +730,7 @@ $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
672$! 730$!
673$! Define The Linker Options File Name. 731$! Define The Linker Options File Name.
674$! 732$!
675$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT" 733$ OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
676$! 734$!
677$! End VAXC Check 735$! End VAXC Check
678$! 736$!
@@ -699,7 +757,7 @@ $ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
699$! 757$!
700$! Define The Linker Options File Name. 758$! Define The Linker Options File Name.
701$! 759$!
702$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT" 760$ OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
703$! 761$!
704$! End The GNU C Check. 762$! End The GNU C Check.
705$! 763$!
@@ -726,7 +784,7 @@ $! Show user the result
726$! 784$!
727$ WRITE/SYMBOL SYS$OUTPUT "Main C Compiling Command: ",CC 785$ WRITE/SYMBOL SYS$OUTPUT "Main C Compiling Command: ",CC
728$! 786$!
729$! Else The User Entered An Invalid Arguement. 787$! Else The User Entered An Invalid Argument.
730$! 788$!
731$ ELSE 789$ ELSE
732$! 790$!
@@ -744,14 +802,14 @@ $! Time To EXIT.
744$! 802$!
745$ EXIT 803$ EXIT
746$! 804$!
747$! End The Valid Arguement Check. 805$! End The Valid Argument Check.
748$! 806$!
749$ ENDIF 807$ ENDIF
750$! 808$!
751$! Build a MACRO command for the architecture at hand 809$! Build a MACRO command for the architecture at hand
752$! 810$!
753$ IF ARCH .EQS. "VAX" THEN MACRO = "MACRO/''DEBUGGER'" 811$ IF ARCH .EQS. "VAX" THEN MACRO = "MACRO/''DEBUGGER'"
754$ IF ARCH .EQS. "AXP" THEN MACRO = "MACRO/MIGRATION/''DEBUGGER'/''MACRO_OPTIMIZE'" 812$ IF ARCH .NES. "VAX" THEN MACRO = "MACRO/MIGRATION/''DEBUGGER'/''MACRO_OPTIMIZE'"
755$! 813$!
756$! Show user the result 814$! Show user the result
757$! 815$!
@@ -840,7 +898,7 @@ $! Print info
840$! 898$!
841$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB 899$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
842$! 900$!
843$! Else The User Entered An Invalid Arguement. 901$! Else The User Entered An Invalid Argument.
844$! 902$!
845$ ELSE 903$ ELSE
846$! 904$!
diff --git a/src/lib/libssl/src/install.com b/src/lib/libssl/src/install.com
index 4e4fe80dfe..d15c23a832 100644
--- a/src/lib/libssl/src/install.com
+++ b/src/lib/libssl/src/install.com
@@ -5,15 +5,25 @@ $! Time of creation: 22-MAY-1998 10:13
5$! 5$!
6$! P1 root of the directory tree 6$! P1 root of the directory tree
7$! 7$!
8$ DEF_ORIG = F$ENVIRONMENT( "DEFAULT")
9$ ON ERROR THEN GOTO TIDY
10$ ON CONTROL_C THEN GOTO TIDY
11$
8$ IF P1 .EQS. "" 12$ IF P1 .EQS. ""
9$ THEN 13$ THEN
10$ WRITE SYS$OUTPUT "First argument missing." 14$ WRITE SYS$OUTPUT "First argument missing."
11$ WRITE SYS$OUTPUT "Should be the directory where you want things installed." 15$ WRITE SYS$OUTPUT -
16 "It Should be the directory where you want things installed."
12$ EXIT 17$ EXIT
13$ ENDIF 18$ ENDIF
14$ 19$
15$ ARCH = "AXP" 20$ IF (F$GETSYI("CPU").LT.128)
16$ IF F$GETSYI("CPU") .LT. 128 THEN ARCH = "VAX" 21$ THEN
22$ ARCH := VAX
23$ ELSE
24$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
25$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
26$ ENDIF
17$ 27$
18$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0" 28$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
19$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY") 29$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
@@ -22,25 +32,26 @@ $ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
22$ ROOT = ROOT_DEV + "[" + ROOT_DIR 32$ ROOT = ROOT_DEV + "[" + ROOT_DIR
23$ 33$
24$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC 34$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
25$ DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB] 35$ DEFINE/NOLOG WRK_SSLXLIB WRK_SSLROOT:['ARCH'_LIB]
26$ DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB]
27$ DEFINE/NOLOG WRK_SSLLIB WRK_SSLROOT:[LIB] 36$ DEFINE/NOLOG WRK_SSLLIB WRK_SSLROOT:[LIB]
28$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE] 37$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE]
29$ DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE] 38$ DEFINE/NOLOG WRK_SSLXEXE WRK_SSLROOT:['ARCH'_EXE]
30$ DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE]
31$ DEFINE/NOLOG WRK_SSLCERTS WRK_SSLROOT:[CERTS] 39$ DEFINE/NOLOG WRK_SSLCERTS WRK_SSLROOT:[CERTS]
32$ DEFINE/NOLOG WRK_SSLPRIVATE WRK_SSLROOT:[PRIVATE] 40$ DEFINE/NOLOG WRK_SSLPRIVATE WRK_SSLROOT:[PRIVATE]
33$ 41$
42$!
43$! Exhibit the destination directory.
44$!
45$ WRITE SYS$OUTPUT " Installing to (WRK_SSLROOT) ="
46$ WRITE SYS$OUTPUT " ''f$trnlnm( "WRK_SSLROOT")'"
47$ WRITE SYS$OUTPUT ""
48$
34$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN - 49$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
35 CREATE/DIR/LOG WRK_SSLROOT:[000000] 50 CREATE/DIR/LOG WRK_SSLROOT:[000000]
36$ IF F$PARSE("WRK_SSLVEXE:") .EQS. "" THEN - 51$ IF F$PARSE("WRK_SSLXEXE:") .EQS. "" THEN -
37 CREATE/DIR/LOG WRK_SSLVEXE: 52 CREATE/DIR/LOG WRK_SSLXEXE:
38$ IF F$PARSE("WRK_SSLAEXE:") .EQS. "" THEN - 53$ IF F$PARSE("WRK_SSLXLIB:") .EQS. "" THEN -
39 CREATE/DIR/LOG WRK_SSLAEXE: 54 CREATE/DIR/LOG WRK_SSLXLIB:
40$ IF F$PARSE("WRK_SSLVLIB:") .EQS. "" THEN -
41 CREATE/DIR/LOG WRK_SSLVLIB:
42$ IF F$PARSE("WRK_SSLALIB:") .EQS. "" THEN -
43 CREATE/DIR/LOG WRK_SSLALIB:
44$ IF F$PARSE("WRK_SSLLIB:") .EQS. "" THEN - 55$ IF F$PARSE("WRK_SSLLIB:") .EQS. "" THEN -
45 CREATE/DIR/LOG WRK_SSLLIB: 56 CREATE/DIR/LOG WRK_SSLLIB:
46$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN - 57$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN -
@@ -70,20 +81,21 @@ $ SET DEFAULT [-]
70$ GOTO LOOP_SDIRS 81$ GOTO LOOP_SDIRS
71$ LOOP_SDIRS_END: 82$ LOOP_SDIRS_END:
72$ 83$
73$ DEASSIGN WRK_SSLROOT
74$ DEASSIGN WRK_SSLVLIB
75$ DEASSIGN WRK_SSLALIB
76$ DEASSIGN WRK_SSLLIB
77$ DEASSIGN WRK_SSLINCLUDE
78$ DEASSIGN WRK_SSLVEXE
79$ DEASSIGN WRK_SSLAEXE
80$ DEASSIGN WRK_SSLCERTS
81$ DEASSIGN WRK_SSLPRIVATE
82$
83$ WRITE SYS$OUTPUT "" 84$ WRITE SYS$OUTPUT ""
84$ WRITE SYS$OUTPUT " Installation done!" 85$ WRITE SYS$OUTPUT " Installation done!"
85$ WRITE SYS$OUTPUT "" 86$ WRITE SYS$OUTPUT ""
86$ WRITE SYS$OUTPUT " You might want to purge ",ROOT,"...]" 87$ WRITE SYS$OUTPUT " You might want to purge ",ROOT,"...]"
87$ WRITE SYS$OUTPUT "" 88$ WRITE SYS$OUTPUT ""
88$ 89$
90$ TIDY:
91$ SET DEFAULT 'DEF_ORIG'
92$
93$ DEASSIGN WRK_SSLROOT
94$ DEASSIGN WRK_SSLXLIB
95$ DEASSIGN WRK_SSLLIB
96$ DEASSIGN WRK_SSLINCLUDE
97$ DEASSIGN WRK_SSLXEXE
98$ DEASSIGN WRK_SSLCERTS
99$ DEASSIGN WRK_SSLPRIVATE
100$
89$ EXIT 101$ EXIT
diff --git a/src/lib/libssl/src/makevms.com b/src/lib/libssl/src/makevms.com
index e0b856d1bb..b46e69a423 100644
--- a/src/lib/libssl/src/makevms.com
+++ b/src/lib/libssl/src/makevms.com
@@ -7,18 +7,19 @@ $! A-Com Computing, Inc.
7$! byer@mail.all-net.net 7$! byer@mail.all-net.net
8$! 8$!
9$! Changes by Richard Levitte <richard@levitte.org> 9$! Changes by Richard Levitte <richard@levitte.org>
10$! Zoltan Arpadffy <zoli@polarhome.com>
10$! 11$!
11$! This procedure creates the SSL libraries of "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" 12$! This procedure creates the SSL libraries of "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB"
12$! "[.xxx.EXE.SSL]LIBSSL.OLB" 13$! "[.xxx.EXE.SSL]LIBSSL.OLB"
13$! The "xxx" denotes the machine architecture of AXP or VAX. 14$! The "xxx" denotes the machine architecture of ALPHA, IA64 or VAX.
14$! 15$!
15$! This procedures accepts two command line options listed below. 16$! This procedures accepts two command line options listed below.
16$! 17$!
17$! Specify one of the following build options for P1. 18$! Specify one of the following build options for P1.
18$! 19$!
19$! ALL Just build "everything". 20$! ALL Just build "everything".
20$! CONFIG Just build the "[.CRYPTO]OPENSSLCONF.H" file. 21$! CONFIG Just build the "[.CRYPTO._xxx]OPENSSLCONF.H" file.
21$! BUILDINF Just build the "[.CRYPTO]BUILDINF.H" file. 22$! BUILDINF Just build the "[.CRYPTO._xxx]BUILDINF.H" file.
22$! SOFTLINKS Just fix the Unix soft links. 23$! SOFTLINKS Just fix the Unix soft links.
23$! BUILDALL Same as ALL, except CONFIG, BUILDINF and SOFTILNKS aren't done. 24$! BUILDALL Same as ALL, except CONFIG, BUILDINF and SOFTILNKS aren't done.
24$! CRYPTO Just build the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" library. 25$! CRYPTO Just build the "[.xxx.EXE.CRYPTO]LIBCRYPTO.OLB" library.
@@ -34,10 +35,10 @@ $!
34$! P2 is ignored (it was used to denote if RSAref should be used or not, 35$! P2 is ignored (it was used to denote if RSAref should be used or not,
35$! and is simply kept so surrounding scripts don't get confused) 36$! and is simply kept so surrounding scripts don't get confused)
36$! 37$!
37$! Speficy DEBUG or NODEBUG as P3 to compile with or without debugging 38$! Specify DEBUG or NODEBUG as P3 to compile with or without debugging
38$! information. 39$! information.
39$! 40$!
40$! Specify which compiler at P4 to try to compile under. 41$! Specify which compiler as P4 to try to compile under.
41$! 42$!
42$! VAXC For VAX C. 43$! VAXC For VAX C.
43$! DECC For DEC C. 44$! DECC For DEC C.
@@ -45,7 +46,7 @@ $! GNUC For GNU C.
45$! LINK To only link the programs from existing object files. 46$! LINK To only link the programs from existing object files.
46$! (not yet implemented) 47$! (not yet implemented)
47$! 48$!
48$! If you don't speficy a compiler, it will try to determine which 49$! If you don't specify a compiler, it will try to determine which
49$! "C" compiler to use. 50$! "C" compiler to use.
50$! 51$!
51$! P5, if defined, sets a TCP/IP library to use, through one of the following 52$! P5, if defined, sets a TCP/IP library to use, through one of the following
@@ -62,6 +63,10 @@ $!
62$! P6, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up) 63$! P6, if defined, sets a compiler thread NOT needed on OpenVMS 7.1 (and up)
63$! 64$!
64$! 65$!
66$ DEF_ORIG = F$ENVIRONMENT( "DEFAULT")
67$ ON ERROR THEN GOTO TIDY
68$ ON CONTROL_C THEN GOTO TIDY
69$!
65$! Check if we're in a batch job, and make sure we get to 70$! Check if we're in a batch job, and make sure we get to
66$! the directory this script is in 71$! the directory this script is in
67$! 72$!
@@ -72,27 +77,32 @@ $ COMPATH=F$PARSE("A.;",COMNAME) - "A.;"
72$ SET DEF 'COMPATH' 77$ SET DEF 'COMPATH'
73$ ENDIF 78$ ENDIF
74$! 79$!
75$! Check Which Architecture We Are Using. 80$! Check What Architecture We Are Using.
76$! 81$!
77$ IF (F$GETSYI("CPU").GE.128) 82$ IF (F$GETSYI("CPU").LT.128)
78$ THEN 83$ THEN
79$! 84$!
80$! The Architecture Is AXP. 85$! The Architecture Is VAX.
81$! 86$!
82$ ARCH := AXP 87$ ARCH = "VAX"
83$! 88$!
84$! Else... 89$! Else...
85$! 90$!
86$ ELSE 91$ ELSE
87$! 92$!
88$! The Architecture Is VAX. 93$! The Architecture Is Alpha, IA64 or whatever comes in the future.
89$! 94$!
90$ ARCH := VAX 95$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
96$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
91$! 97$!
92$! End The Architecture Check. 98$! End The Architecture Check.
93$! 99$!
94$ ENDIF 100$ ENDIF
95$! 101$!
102$! Get VMS version.
103$!
104$ VMS_VERSION = f$edit( f$getsyi( "VERSION"), "TRIM")
105$!
96$! Check To Make Sure We Have Valid Command Line Parameters. 106$! Check To Make Sure We Have Valid Command Line Parameters.
97$! 107$!
98$ GOSUB CHECK_OPTIONS 108$ GOSUB CHECK_OPTIONS
@@ -155,25 +165,55 @@ $ ENDIF
155$! 165$!
156$! Time To EXIT. 166$! Time To EXIT.
157$! 167$!
158$ EXIT 168$ GOTO TIDY
159$! 169$!
160$! Rebuild The "[.CRYPTO]OPENSSLCONF.H" file. 170$! Rebuild The [.CRYPTO._xxx]OPENSSLCONF.H" file.
161$! 171$!
162$ CONFIG: 172$ CONFIG:
163$! 173$!
164$! Tell The User We Are Creating The [.CRYPTO]OPENSSLCONF.H File. 174$! Tell The User We Are Creating The [.CRYPTO._xxx]OPENSSLCONF.H File.
175$!
176$ WRITE SYS$OUTPUT "Creating [.CRYPTO._''ARCH']OPENSSLCONF.H Include File."
177$!
178$! First, make sure the directory exists.
165$! 179$!
166$ WRITE SYS$OUTPUT "Creating [.CRYPTO]OPENSSLCONF.H Include File." 180$ IF F$PARSE("SYS$DISK:[.CRYPTO._''ARCH']") .EQS. "" THEN -
181 CREATE/DIRECTORY SYS$DISK:[.CRYPTO._'ARCH']
182$!
183$! Different tar/UnZip versions/option may have named the file differently
184$ IF F$SEARCH("[.crypto]opensslconf.h_in") .NES. ""
185$ THEN
186$ OPENSSLCONF_H_IN = "[.crypto]opensslconf.h_in"
187$ ELSE
188$ IF F$SEARCH( "[.crypto]opensslconf_h.in") .NES. ""
189$ THEN
190$ OPENSSLCONF_H_IN = "[.crypto]opensslconf_h.in"
191$ ELSE
192$ ! For ODS-5
193$ IF F$SEARCH( "[.crypto]opensslconf.h.in") .NES. ""
194$ THEN
195$ OPENSSLCONF_H_IN = "[.crypto]opensslconf.h.in"
196$ ELSE
197$ WRITE SYS$ERROR "Couldn't find a [.crypto]opensslconf.h.in. Exiting!"
198$ $STATUS = %X00018294 ! "%RMS-F-FNF, file not found".
199$ GOTO TIDY
200$ ENDIF
201$ ENDIF
202$ ENDIF
167$! 203$!
168$! Create The [.CRYPTO]OPENSSLCONF.H File. 204$! Create The [.CRYPTO._xxx]OPENSSLCONF.H File.
205$! Make sure it has the right format.
169$! 206$!
170$ OPEN/WRITE H_FILE SYS$DISK:[.CRYPTO]OPENSSLCONF.H 207$ OSCH_NAME = "SYS$DISK:[.CRYPTO._''ARCH']OPENSSLCONF.H"
208$ CREATE /FDL=SYS$INPUT: 'OSCH_NAME'
209RECORD
210 FORMAT stream_lf
211$ OPEN /APPEND H_FILE 'OSCH_NAME'
171$! 212$!
172$! Write The [.CRYPTO]OPENSSLCONF.H File. 213$! Write The [.CRYPTO._xxx]OPENSSLCONF.H File.
173$! 214$!
174$ WRITE H_FILE "/* This file was automatically built using makevms.com */" 215$ WRITE H_FILE "/* This file was automatically built using makevms.com */"
175$ WRITE H_FILE "/* and [.CRYPTO]OPENSSLCONF.H_IN */" 216$ WRITE H_FILE "/* and ''OPENSSLCONF_H_IN' */"
176$
177$! 217$!
178$! Write a few macros that indicate how this system was built. 218$! Write a few macros that indicate how this system was built.
179$! 219$!
@@ -181,78 +221,253 @@ $ WRITE H_FILE ""
181$ WRITE H_FILE "#ifndef OPENSSL_SYS_VMS" 221$ WRITE H_FILE "#ifndef OPENSSL_SYS_VMS"
182$ WRITE H_FILE "# define OPENSSL_SYS_VMS" 222$ WRITE H_FILE "# define OPENSSL_SYS_VMS"
183$ WRITE H_FILE "#endif" 223$ WRITE H_FILE "#endif"
184$ CONFIG_LOGICALS := NO_ASM,NO_RSA,NO_DSA,NO_DH,NO_MD2,NO_MD5,NO_RIPEMD,- 224$
185 NO_SHA,NO_SHA0,NO_SHA1,NO_DES/NO_MDC2;NO_MDC2,NO_RC2,NO_RC4,NO_RC5,- 225$! One of the best way to figure out what the list should be is to do
186 NO_IDEA,NO_BF,NO_CAST,NO_CAMELLIA,NO_SEED,NO_HMAC,NO_SSL2 226$! the followin on a Unix system:
227$! grep OPENSSL_NO_ crypto/*/*.h ssl/*.h engines/*.h engines/*/*.h|grep ':# *if'|sed -e 's/^.*def //'|sort|uniq
228$! For that reason, the list will also always end up in alphabetical order
229$ CONFIG_LOGICALS := AES,-
230 ASM,INLINE_ASM,-
231 BF,-
232 BIO,-
233 BUFFER,-
234 BUF_FREELISTS,-
235 CAMELLIA,-
236 CAST,-
237 CMS,-
238 COMP,-
239 DEPRECATED,-
240 DES,-
241 DGRAM,-
242 DH,-
243 DSA,-
244 EC,-
245 ECDH,-
246 ECDSA,-
247 ENGINE,-
248 ERR,-
249 EVP,-
250 FP_API,-
251 GMP,-
252 GOST,-
253 HASH_COMP,-
254 HMAC,-
255 IDEA,-
256 JPAKE,-
257 KRB5,-
258 LHASH,-
259 MD2,-
260 MD4,-
261 MD5,-
262 MDC2,-
263 OCSP,-
264 PSK,-
265 RC2,-
266 RC4,-
267 RC5,-
268 RFC3779,-
269 RIPEMD,-
270 RSA,-
271 SEED,-
272 SHA,-
273 SHA0,-
274 SHA1,-
275 SHA256,-
276 SHA512,-
277 SOCK,-
278 SSL2,-
279 STACK,-
280 STATIC_ENGINE,-
281 STDIO,-
282 STORE,-
283 TLSEXT,-
284 WHIRLPOOL,-
285 X509
286$! Add a few that we know about
287$ CONFIG_LOGICALS := 'CONFIG_LOGICALS',-
288 THREADS
289$! The following rules, which dictate how some algorithm choices affect
290$! others, are picked from Configure.
291$! Quick syntax:
292$! list = item[ ; list]
293$! item = algos / dependents
294$! algos = algo [, algos]
295$! dependents = dependent [, dependents]
296$! When a list of algos is specified in one item, it means that they must
297$! all be disabled for the rule to apply.
298$! When a list of dependents is specified in one item, it means that they
299$! will all be disabled if the rule applies.
300$! Rules are checked sequentially. If a rule disables an algorithm, it will
301$! affect all following rules that depend on that algorithm being disabled.
302$! To force something to be enabled or disabled, have no algorithms in the
303$! algos part.
304$ CONFIG_DISABLE_RULES := RIJNDAEL/AES;-
305 DES/MDC2;-
306 EC/ECDSA,ECDH;-
307 MD5/SSL2,SSL3,TLS1;-
308 SHA/SSL3,TLS1;-
309 RSA/SSL2;-
310 RSA,DSA/SSL2;-
311 DH/SSL3,TLS1;-
312 TLS1/TLSEXT;-
313 EC/GOST;-
314 DSA/GOST;-
315 DH/GOST;-
316 /STATIC_ENGINE;-
317 /KRB5
318$ CONFIG_ENABLE_RULES := ZLIB_DYNAMIC/ZLIB;-
319 /THREADS
320$
321$! Architecture specific rule addtions
322$ IF ARCH .EQS. "VAX"
323$ THEN
324$ ! Disable algorithms that require 64 bit integers in C
325$ CONFIG_DISABLE_RULES = CONFIG_DISABLE_RULES + -
326 ";/GOST" + -
327 ";/WHIRLPOOL"
328$ ENDIF
329$
187$ CONFIG_LOG_I = 0 330$ CONFIG_LOG_I = 0
188$ CONFIG_LOG_LOOP: 331$ CONFIG_LOG_LOOP1:
189$ CONFIG_LOG_E1 = F$ELEMENT(CONFIG_LOG_I,",",CONFIG_LOGICALS) 332$ CONFIG_LOG_E = F$EDIT(F$ELEMENT(CONFIG_LOG_I,",",CONFIG_LOGICALS),"TRIM")
190$ CONFIG_LOG_I = CONFIG_LOG_I + 1 333$ CONFIG_LOG_I = CONFIG_LOG_I + 1
191$ IF CONFIG_LOG_E1 .EQS. "" THEN GOTO CONFIG_LOG_LOOP 334$ IF CONFIG_LOG_E .EQS. "" THEN GOTO CONFIG_LOG_LOOP1
192$ IF CONFIG_LOG_E1 .EQS. "," THEN GOTO CONFIG_LOG_LOOP_END 335$ IF CONFIG_LOG_E .EQS. "," THEN GOTO CONFIG_LOG_LOOP1_END
193$ CONFIG_LOG_E2 = F$EDIT(CONFIG_LOG_E1,"TRIM") 336$ IF F$TRNLNM("OPENSSL_NO_"+CONFIG_LOG_E)
194$ CONFIG_LOG_E1 = F$ELEMENT(0,";",CONFIG_LOG_E2)
195$ CONFIG_LOG_E2 = F$ELEMENT(1,";",CONFIG_LOG_E2)
196$ CONFIG_LOG_E0 = F$ELEMENT(0,"/",CONFIG_LOG_E1)
197$ CONFIG_LOG_E1 = F$ELEMENT(1,"/",CONFIG_LOG_E1)
198$ IF F$TRNLNM("OPENSSL_"+CONFIG_LOG_E0)
199$ THEN 337$ THEN
200$ WRITE H_FILE "#ifndef OPENSSL_",CONFIG_LOG_E0 338$ CONFIG_DISABLED_'CONFIG_LOG_E' := YES
201$ WRITE H_FILE "# define OPENSSL_",CONFIG_LOG_E0 339$ CONFIG_ENABLED_'CONFIG_LOG_E' := NO
202$ WRITE H_FILE "#endif" 340$ CONFIG_CHANGED_'CONFIG_LOG_E' := YES
203$ IF CONFIG_LOG_E1 .NES. "/" 341$ ELSE
342$ CONFIG_DISABLED_'CONFIG_LOG_E' := NO
343$ CONFIG_ENABLED_'CONFIG_LOG_E' := YES
344$ ! Because all algorithms are assumed enabled by default
345$ CONFIG_CHANGED_'CONFIG_LOG_E' := NO
346$ ENDIF
347$ GOTO CONFIG_LOG_LOOP1
348$ CONFIG_LOG_LOOP1_END:
349$
350$! Apply cascading disable rules
351$ CONFIG_DISABLE_I = 0
352$ CONFIG_DISABLE_LOOP0:
353$ CONFIG_DISABLE_E = F$EDIT(F$ELEMENT(CONFIG_DISABLE_I,";",CONFIG_DISABLE_RULES),"TRIM")
354$ CONFIG_DISABLE_I = CONFIG_DISABLE_I + 1
355$ IF CONFIG_DISABLE_E .EQS. "" THEN GOTO CONFIG_DISABLE_LOOP0
356$ IF CONFIG_DISABLE_E .EQS. ";" THEN GOTO CONFIG_DISABLE_LOOP0_END
357$
358$ CONFIG_DISABLE_ALGOS = F$EDIT(F$ELEMENT(0,"/",CONFIG_DISABLE_E),"TRIM")
359$ CONFIG_DISABLE_DEPENDENTS = F$EDIT(F$ELEMENT(1,"/",CONFIG_DISABLE_E),"TRIM")
360$ TO_DISABLE := YES
361$ CONFIG_ALGO_I = 0
362$ CONFIG_DISABLE_LOOP1:
363$ CONFIG_ALGO_E = F$EDIT(F$ELEMENT(CONFIG_ALGO_I,",",CONFIG_DISABLE_ALGOS),"TRIM")
364$ CONFIG_ALGO_I = CONFIG_ALGO_I + 1
365$ IF CONFIG_ALGO_E .EQS. "" THEN GOTO CONFIG_DISABLE_LOOP1
366$ IF CONFIG_ALGO_E .EQS. "," THEN GOTO CONFIG_DISABLE_LOOP1_END
367$ IF F$TYPE(CONFIG_DISABLED_'CONFIG_ALGO_E') .EQS. ""
204$ THEN 368$ THEN
205$ WRITE H_FILE "#ifndef OPENSSL_",CONFIG_LOG_E1 369$ TO_DISABLE := NO
206$ WRITE H_FILE "# define OPENSSL_",CONFIG_LOG_E1 370$ ELSE
207$ WRITE H_FILE "#endif" 371$ IF .NOT. CONFIG_DISABLED_'CONFIG_ALGO_E' THEN TO_DISABLE := NO
208$ ENDIF 372$ ENDIF
209$ ELSE 373$ GOTO CONFIG_DISABLE_LOOP1
210$ IF CONFIG_LOG_E2 .NES. ";" 374$ CONFIG_DISABLE_LOOP1_END:
375$
376$ IF TO_DISABLE
377$ THEN
378$ CONFIG_DEPENDENT_I = 0
379$ CONFIG_DISABLE_LOOP2:
380$ CONFIG_DEPENDENT_E = F$EDIT(F$ELEMENT(CONFIG_DEPENDENT_I,",",CONFIG_DISABLE_DEPENDENTS),"TRIM")
381$ CONFIG_DEPENDENT_I = CONFIG_DEPENDENT_I + 1
382$ IF CONFIG_DEPENDENT_E .EQS. "" THEN GOTO CONFIG_DISABLE_LOOP2
383$ IF CONFIG_DEPENDENT_E .EQS. "," THEN GOTO CONFIG_DISABLE_LOOP2_END
384$ CONFIG_DISABLED_'CONFIG_DEPENDENT_E' := YES
385$ CONFIG_ENABLED_'CONFIG_DEPENDENT_E' := NO
386$ ! Better not to assume defaults at this point...
387$ CONFIG_CHANGED_'CONFIG_DEPENDENT_E' := YES
388$ WRITE SYS$ERROR "''CONFIG_DEPENDENT_E' disabled by rule ''CONFIG_DISABLE_E'"
389$ GOTO CONFIG_DISABLE_LOOP2
390$ CONFIG_DISABLE_LOOP2_END:
391$ ENDIF
392$ GOTO CONFIG_DISABLE_LOOP0
393$ CONFIG_DISABLE_LOOP0_END:
394$
395$! Apply cascading enable rules
396$ CONFIG_ENABLE_I = 0
397$ CONFIG_ENABLE_LOOP0:
398$ CONFIG_ENABLE_E = F$EDIT(F$ELEMENT(CONFIG_ENABLE_I,";",CONFIG_ENABLE_RULES),"TRIM")
399$ CONFIG_ENABLE_I = CONFIG_ENABLE_I + 1
400$ IF CONFIG_ENABLE_E .EQS. "" THEN GOTO CONFIG_ENABLE_LOOP0
401$ IF CONFIG_ENABLE_E .EQS. ";" THEN GOTO CONFIG_ENABLE_LOOP0_END
402$
403$ CONFIG_ENABLE_ALGOS = F$EDIT(F$ELEMENT(0,"/",CONFIG_ENABLE_E),"TRIM")
404$ CONFIG_ENABLE_DEPENDENTS = F$EDIT(F$ELEMENT(1,"/",CONFIG_ENABLE_E),"TRIM")
405$ TO_ENABLE := YES
406$ CONFIG_ALGO_I = 0
407$ CONFIG_ENABLE_LOOP1:
408$ CONFIG_ALGO_E = F$EDIT(F$ELEMENT(CONFIG_ALGO_I,",",CONFIG_ENABLE_ALGOS),"TRIM")
409$ CONFIG_ALGO_I = CONFIG_ALGO_I + 1
410$ IF CONFIG_ALGO_E .EQS. "" THEN GOTO CONFIG_ENABLE_LOOP1
411$ IF CONFIG_ALGO_E .EQS. "," THEN GOTO CONFIG_ENABLE_LOOP1_END
412$ IF F$TYPE(CONFIG_ENABLED_'CONFIG_ALGO_E') .EQS. ""
211$ THEN 413$ THEN
212$ IF F$TRNLNM("OPENSSL_"+CONFIG_LOG_E2) 414$ TO_ENABLE := NO
213$ THEN 415$ ELSE
214$ WRITE H_FILE "#ifndef OPENSSL_",CONFIG_LOG_E2 416$ IF .NOT. CONFIG_ENABLED_'CONFIG_ALGO_E' THEN TO_ENABLE := NO
215$ WRITE H_FILE "# define OPENSSL_",CONFIG_LOG_E2
216$ WRITE H_FILE "#endif"
217$ ENDIF
218$ ENDIF 417$ ENDIF
418$ GOTO CONFIG_ENABLE_LOOP1
419$ CONFIG_ENABLE_LOOP1_END:
420$
421$ IF TO_ENABLE
422$ THEN
423$ CONFIG_DEPENDENT_I = 0
424$ CONFIG_ENABLE_LOOP2:
425$ CONFIG_DEPENDENT_E = F$EDIT(F$ELEMENT(CONFIG_DEPENDENT_I,",",CONFIG_ENABLE_DEPENDENTS),"TRIM")
426$ CONFIG_DEPENDENT_I = CONFIG_DEPENDENT_I + 1
427$ IF CONFIG_DEPENDENT_E .EQS. "" THEN GOTO CONFIG_ENABLE_LOOP2
428$ IF CONFIG_DEPENDENT_E .EQS. "," THEN GOTO CONFIG_ENABLE_LOOP2_END
429$ CONFIG_DISABLED_'CONFIG_DEPENDENT_E' := NO
430$ CONFIG_ENABLED_'CONFIG_DEPENDENT_E' := YES
431$ ! Better not to assume defaults at this point...
432$ CONFIG_CHANGED_'CONFIG_DEPENDENT_E' := YES
433$ WRITE SYS$ERROR "''CONFIG_DEPENDENT_E' enabled by rule ''CONFIG_ENABLE_E'"
434$ GOTO CONFIG_ENABLE_LOOP2
435$ CONFIG_ENABLE_LOOP2_END:
219$ ENDIF 436$ ENDIF
220$ GOTO CONFIG_LOG_LOOP 437$ GOTO CONFIG_ENABLE_LOOP0
221$ CONFIG_LOG_LOOP_END: 438$ CONFIG_ENABLE_LOOP0_END:
222$ WRITE H_FILE "#ifndef OPENSSL_NO_STATIC_ENGINE" 439$
223$ WRITE H_FILE "# define OPENSSL_NO_STATIC_ENGINE" 440$! Write to the configuration
224$ WRITE H_FILE "#endif" 441$ CONFIG_LOG_I = 0
225$ WRITE H_FILE "#ifndef OPENSSL_THREADS" 442$ CONFIG_LOG_LOOP2:
226$ WRITE H_FILE "# define OPENSSL_THREADS" 443$ CONFIG_LOG_E = F$EDIT(F$ELEMENT(CONFIG_LOG_I,",",CONFIG_LOGICALS),"TRIM")
227$ WRITE H_FILE "#endif" 444$ CONFIG_LOG_I = CONFIG_LOG_I + 1
228$ WRITE H_FILE "#ifndef OPENSSL_NO_KRB5" 445$ IF CONFIG_LOG_E .EQS. "" THEN GOTO CONFIG_LOG_LOOP2
229$ WRITE H_FILE "# define OPENSSL_NO_KRB5" 446$ IF CONFIG_LOG_E .EQS. "," THEN GOTO CONFIG_LOG_LOOP2_END
230$ WRITE H_FILE "#endif" 447$ IF CONFIG_CHANGED_'CONFIG_LOG_E'
231$ WRITE H_FILE ""
232$!
233$! Different tar version may have named the file differently
234$ IF F$SEARCH("[.CRYPTO]OPENSSLCONF.H_IN") .NES. ""
235$ THEN
236$ TYPE [.CRYPTO]OPENSSLCONF.H_IN /OUTPUT=H_FILE:
237$ ELSE
238$ IF F$SEARCH("[.CRYPTO]OPENSSLCONF_H.IN") .NES. ""
239$ THEN 448$ THEN
240$ TYPE [.CRYPTO]OPENSSLCONF_H.IN /OUTPUT=H_FILE: 449$ IF CONFIG_DISABLED_'CONFIG_LOG_E'
241$ ELSE
242$ ! For ODS-5
243$ IF F$SEARCH("[.CRYPTO]OPENSSLCONF.H.IN") .NES. ""
244$ THEN 450$ THEN
245$ TYPE [.CRYPTO]OPENSSLCONF.H.IN /OUTPUT=H_FILE: 451$ WRITE H_FILE "#ifndef OPENSSL_NO_",CONFIG_LOG_E
452$ WRITE H_FILE "# define OPENSSL_NO_",CONFIG_LOG_E
453$ WRITE H_FILE "#endif"
246$ ELSE 454$ ELSE
247$ WRITE SYS$ERROR "Couldn't find a [.CRYPTO]OPENSSLCONF.H_IN. Exiting!" 455$ WRITE H_FILE "#ifndef OPENSSL_",CONFIG_LOG_E
248$ EXIT 0 456$ WRITE H_FILE "# define OPENSSL_",CONFIG_LOG_E
457$ WRITE H_FILE "#endif"
249$ ENDIF 458$ ENDIF
250$ ENDIF 459$ ENDIF
251$ ENDIF 460$ GOTO CONFIG_LOG_LOOP2
252$ IF ARCH .EQS. "AXP" 461$ CONFIG_LOG_LOOP2_END:
462$!
463$! Add in the common "crypto/opensslconf.h.in".
464$!
465$ TYPE 'OPENSSLCONF_H_IN' /OUTPUT=H_FILE:
466$!
467$ IF ARCH .NES. "VAX"
253$ THEN 468$ THEN
254$! 469$!
255$! Write the Alpha specific data 470$! Write the non-VAX specific data
256$! 471$!
257$ WRITE H_FILE "#if defined(HEADER_RC4_H)" 472$ WRITE H_FILE "#if defined(HEADER_RC4_H)"
258$ WRITE H_FILE "#undef RC4_INT" 473$ WRITE H_FILE "#undef RC4_INT"
@@ -318,10 +533,11 @@ $ WRITE H_FILE "#undef SIXTEEN_BIT"
318$ WRITE H_FILE "#undef EIGHT_BIT" 533$ WRITE H_FILE "#undef EIGHT_BIT"
319$ WRITE H_FILE "#endif" 534$ WRITE H_FILE "#endif"
320$! 535$!
321$ WRITE H_FILE "#if defined(HEADER_SHA_H)" 536$! Oddly enough, the following symbol is tested in crypto/sha/sha512.c
537$! before sha.h gets included (and HEADER_SHA_H defined), so we will not
538$! protect this one...
322$ WRITE H_FILE "#undef OPENSSL_NO_SHA512" 539$ WRITE H_FILE "#undef OPENSSL_NO_SHA512"
323$ WRITE H_FILE "#define OPENSSL_NO_SHA512" 540$ WRITE H_FILE "#define OPENSSL_NO_SHA512"
324$ WRITE H_FILE "#endif"
325$! 541$!
326$ WRITE H_FILE "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION" 542$ WRITE H_FILE "#undef OPENSSL_EXPORT_VAR_AS_FUNCTION"
327$ WRITE H_FILE "#define OPENSSL_EXPORT_VAR_AS_FUNCTION" 543$ WRITE H_FILE "#define OPENSSL_EXPORT_VAR_AS_FUNCTION"
@@ -330,40 +546,53 @@ $! End
330$! 546$!
331$ ENDIF 547$ ENDIF
332$! 548$!
333$! Close the [.CRYPTO]OPENSSLCONF.H file 549$! Close the [.CRYPTO._xxx]OPENSSLCONF.H file
334$! 550$!
335$ CLOSE H_FILE 551$ CLOSE H_FILE
336$! 552$!
553$! Purge The [.CRYPTO._xxx]OPENSSLCONF.H file
554$!
555$ PURGE SYS$DISK:[.CRYPTO._'ARCH']OPENSSLCONF.H
556$!
337$! That's All, Time To RETURN. 557$! That's All, Time To RETURN.
338$! 558$!
339$ RETURN 559$ RETURN
340$! 560$!
341$! Rebuild The "[.CRYPTO]BUILDINF.H" file. 561$! Rebuild The "[.CRYPTO._xxx]BUILDINF.H" file.
342$! 562$!
343$ BUILDINF: 563$ BUILDINF:
344$! 564$!
345$! Tell The User We Are Creating The [.CRYPTO]BUILDINF.H File. 565$! Tell The User We Are Creating The [.CRYPTO._xxx]BUILDINF.H File.
566$!
567$ WRITE SYS$OUTPUT "Creating [.CRYPTO._''ARCH']BUILDINF.H Include File."
346$! 568$!
347$ WRITE SYS$OUTPUT "Creating [.CRYPTO]BUILDINF.H Include File." 569$! Create The [.CRYPTO._xxx]BUILDINF.H File.
348$! 570$!
349$! Create The [.CRYPTO]BUILDINF.H File. 571$ BIH_NAME = "SYS$DISK:[.CRYPTO._''ARCH']BUILDINF.H"
572$ CREATE /FDL=SYS$INPUT: 'BIH_NAME'
573RECORD
574 FORMAT stream_lf
350$! 575$!
351$ OPEN/WRITE H_FILE SYS$DISK:[.CRYPTO]BUILDINF.H 576$ OPEN /APPEND H_FILE 'bih_name'
352$! 577$!
353$! Get The Current Date & Time. 578$! Get The Current Date & Time.
354$! 579$!
355$ TIME = F$TIME() 580$ TIME = F$TIME()
356$! 581$!
357$! Write The [.CRYPTO]BUILDINF.H File. 582$! Write The [.CRYPTO._xxx]BUILDINF.H File.
358$! 583$!
359$ WRITE H_FILE "#define CFLAGS """" /* Not filled in for now */" 584$ WRITE H_FILE "#define CFLAGS """" /* Not filled in for now */"
360$ WRITE H_FILE "#define PLATFORM ""VMS""" 585$ WRITE H_FILE "#define PLATFORM ""VMS ''ARCH' ''VMS_VERSION'"""
361$ WRITE H_FILE "#define DATE ""''TIME'"" " 586$ WRITE H_FILE "#define DATE ""''TIME'"" "
362$! 587$!
363$! Close The [.CRYPTO]BUILDINF.H File. 588$! Close The [.CRYPTO._xxx]BUILDINF.H File.
364$! 589$!
365$ CLOSE H_FILE 590$ CLOSE H_FILE
366$! 591$!
592$! Purge The [.CRYPTO._xxx]BUILDINF.H File.
593$!
594$ PURGE SYS$DISK:[.CRYPTO._'ARCH']BUILDINF.H
595$!
367$! That's All, Time To RETURN. 596$! That's All, Time To RETURN.
368$! 597$!
369$ RETURN 598$ RETURN
@@ -374,42 +603,14 @@ $ SOFTLINKS:
374$! 603$!
375$! Tell The User We Are Partly Rebuilding The [.APPS] Directory. 604$! Tell The User We Are Partly Rebuilding The [.APPS] Directory.
376$! 605$!
377$ WRITE SYS$OUTPUT "Rebuilding The '[.APPS]MD4.C', '[.APPS]MD5.C' And '[.APPS]RMD160.C' Files." 606$ WRITE SYS$OUTPUT "Rebuilding The '[.APPS]MD4.C' File."
378$! 607$!
379$ DELETE SYS$DISK:[.APPS]MD4.C;*,MD5.C;*,RMD160.C;* 608$ DELETE SYS$DISK:[.APPS]MD4.C;*
380$! 609$!
381$! Copy MD4.C from [.CRYPTO.MD4] into [.APPS] 610$! Copy MD4.C from [.CRYPTO.MD4] into [.APPS]
382$! 611$!
383$ COPY SYS$DISK:[.CRYPTO.MD4]MD4.C SYS$DISK:[.APPS] 612$ COPY SYS$DISK:[.CRYPTO.MD4]MD4.C SYS$DISK:[.APPS]
384$! 613$!
385$! Copy MD5.C from [.CRYPTO.MD5] into [.APPS]
386$!
387$ COPY SYS$DISK:[.CRYPTO.MD5]MD5.C SYS$DISK:[.APPS]
388$!
389$! Copy RMD160.C from [.CRYPTO.RIPEMD] into [.APPS]
390$!
391$ COPY SYS$DISK:[.CRYPTO.RIPEMD]RMD160.C SYS$DISK:[.APPS]
392$!
393$! Tell The User We Are Partly Rebuilding The [.TEST] Directory.
394$!
395$ WRITE SYS$OUTPUT "Rebuilding The '[.TEST]*.C' Files."
396$!
397$! First, We Have To "Rebuild" The "[.TEST]" Directory, So Delete
398$! All The "C" Files That Are Currently There Now.
399$!
400$ DELETE SYS$DISK:[.TEST]*.C;*
401$ DELETE SYS$DISK:[.TEST]EVPTESTS.TXT;*
402$!
403$! Copy all the *TEST.C files from [.CRYPTO...] into [.TEST]
404$!
405$ COPY SYS$DISK:[.CRYPTO.*]%*TEST.C SYS$DISK:[.TEST]
406$ COPY SYS$DISK:[.CRYPTO.SHA]SHA%%%T.C SYS$DISK:[.TEST]
407$ COPY SYS$DISK:[.CRYPTO.EVP]EVPTESTS.TXT SYS$DISK:[.TEST]
408$!
409$! Copy all the *TEST.C files from [.SSL...] into [.TEST]
410$!
411$ COPY SYS$DISK:[.SSL]%*TEST.C SYS$DISK:[.TEST]
412$!
413$! Tell The User We Are Rebuilding The [.INCLUDE.OPENSSL] Directory. 614$! Tell The User We Are Rebuilding The [.INCLUDE.OPENSSL] Directory.
414$! 615$!
415$ WRITE SYS$OUTPUT "Rebuilding The '[.INCLUDE.OPENSSL]' Directory." 616$ WRITE SYS$OUTPUT "Rebuilding The '[.INCLUDE.OPENSSL]' Directory."
@@ -427,15 +628,16 @@ $!
427$! Copy All The ".H" Files From The [.CRYPTO] Directory Tree. 628$! Copy All The ".H" Files From The [.CRYPTO] Directory Tree.
428$! 629$!
429$ SDIRS := ,- 630$ SDIRS := ,-
631 _'ARCH',-
430 OBJECTS,- 632 OBJECTS,-
431 MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,- 633 MD2,MD4,MD5,SHA,MDC2,HMAC,RIPEMD,WHRLPOOL,-
432 DES,AES,RC2,RC4,RC5,IDEA,BF,CAST,CAMELLIA,SEED,- 634 DES,AES,RC2,RC4,RC5,IDEA,BF,CAST,CAMELLIA,SEED,MODES,-
433 BN,EC,RSA,DSA,ECDSA,DH,ECDH,DSO,ENGINE,- 635 BN,EC,RSA,DSA,ECDSA,DH,ECDH,DSO,ENGINE,-
434 BUFFER,BIO,STACK,LHASH,RAND,ERR,- 636 BUFFER,BIO,STACK,LHASH,RAND,ERR,-
435 EVP,ASN1,PEM,X509,X509V3,CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,UI,KRB5,- 637 EVP,ASN1,PEM,X509,X509V3,CONF,TXT_DB,PKCS7,PKCS12,COMP,OCSP,UI,KRB5,-
436 STORE,CMS,PQUEUE,JPAKE 638 STORE,CMS,PQUEUE,TS,JPAKE
437$ EXHEADER_ := crypto.h,tmdiff.h,opensslv.h,opensslconf.h,ebcdic.h,symhacks.h,- 639$ EXHEADER_ := crypto.h,opensslv.h,ebcdic.h,symhacks.h,ossl_typ.h
438 ossl_typ.h 640$ EXHEADER__'ARCH' := opensslconf.h
439$ EXHEADER_OBJECTS := objects.h,obj_mac.h 641$ EXHEADER_OBJECTS := objects.h,obj_mac.h
440$ EXHEADER_MD2 := md2.h 642$ EXHEADER_MD2 := md2.h
441$ EXHEADER_MD4 := md4.h 643$ EXHEADER_MD4 := md4.h
@@ -444,6 +646,7 @@ $ EXHEADER_SHA := sha.h
444$ EXHEADER_MDC2 := mdc2.h 646$ EXHEADER_MDC2 := mdc2.h
445$ EXHEADER_HMAC := hmac.h 647$ EXHEADER_HMAC := hmac.h
446$ EXHEADER_RIPEMD := ripemd.h 648$ EXHEADER_RIPEMD := ripemd.h
649$ EXHEADER_WHRLPOOL := whrlpool.h
447$ EXHEADER_DES := des.h,des_old.h 650$ EXHEADER_DES := des.h,des_old.h
448$ EXHEADER_AES := aes.h 651$ EXHEADER_AES := aes.h
449$ EXHEADER_RC2 := rc2.h 652$ EXHEADER_RC2 := rc2.h
@@ -454,6 +657,7 @@ $ EXHEADER_BF := blowfish.h
454$ EXHEADER_CAST := cast.h 657$ EXHEADER_CAST := cast.h
455$ EXHEADER_CAMELLIA := camellia.h 658$ EXHEADER_CAMELLIA := camellia.h
456$ EXHEADER_SEED := seed.h 659$ EXHEADER_SEED := seed.h
660$ EXHEADER_MODES := modes.h
457$ EXHEADER_BN := bn.h 661$ EXHEADER_BN := bn.h
458$ EXHEADER_EC := ec.h 662$ EXHEADER_EC := ec.h
459$ EXHEADER_RSA := rsa.h 663$ EXHEADER_RSA := rsa.h
@@ -485,7 +689,8 @@ $ EXHEADER_KRB5 := krb5_asn.h
485$!EXHEADER_STORE := store.h,str_compat.h 689$!EXHEADER_STORE := store.h,str_compat.h
486$ EXHEADER_STORE := store.h 690$ EXHEADER_STORE := store.h
487$ EXHEADER_CMS := cms.h 691$ EXHEADER_CMS := cms.h
488$ EXHEADER_PQUEUE := pqueue.h,pq_compat.h 692$ EXHEADER_PQUEUE := pqueue.h
693$ EXHEADER_TS := ts.h
489$ EXHEADER_JPAKE := jpake.h 694$ EXHEADER_JPAKE := jpake.h
490$ 695$
491$ I = 0 696$ I = 0
@@ -697,15 +902,16 @@ $! Else...
697$! 902$!
698$ ELSE 903$ ELSE
699$! 904$!
700$! Else, Check To See If P1 Has A Valid Arguement. 905$! Else, Check To See If P1 Has A Valid Argument.
701$! 906$!
702$ IF (P1.EQS."CONFIG").OR.(P1.EQS."BUILDINF").OR.(P1.EQS."SOFTLINKS") - 907$ IF (P1.EQS."CONFIG").OR.(P1.EQS."BUILDINF").OR.(P1.EQS."SOFTLINKS") -
703 .OR.(P1.EQS."BUILDALL") - 908 .OR.(P1.EQS."BUILDALL") -
704 .OR.(P1.EQS."CRYPTO").OR.(P1.EQS."SSL") - 909 .OR.(P1.EQS."CRYPTO").OR.(P1.EQS."SSL") -
705 .OR.(P1.EQS."SSL_TASK").OR.(P1.EQS."TEST").OR.(P1.EQS."APPS") 910 .OR.(P1.EQS."SSL_TASK").OR.(P1.EQS."TEST").OR.(P1.EQS."APPS") -
911 .OR.(P1.EQS."ENGINES")
706$ THEN 912$ THEN
707$! 913$!
708$! A Valid Arguement. 914$! A Valid Argument.
709$! 915$!
710$ BUILDCOMMAND = P1 916$ BUILDCOMMAND = P1
711$! 917$!
@@ -716,11 +922,15 @@ $!
716$! Tell The User We Don't Know What They Want. 922$! Tell The User We Don't Know What They Want.
717$! 923$!
718$ WRITE SYS$OUTPUT "" 924$ WRITE SYS$OUTPUT ""
719$ WRITE SYS$OUTPUT "The Option ",P1," Is Invalid. The Valid Options Are:" 925$ WRITE SYS$OUTPUT "USAGE: @MAKEVMS.COM [Target] [not-used option] [Debug option] <Compiler>"
926$ WRITE SYS$OUTPUT ""
927$ WRITE SYS$OUTPUT "Example: @MAKEVMS.COM ALL NORSAREF NODEBUG "
928$ WRITE SYS$OUTPUT ""
929$ WRITE SYS$OUTPUT "The Target ",P1," Is Invalid. The Valid Target Options Are:"
720$ WRITE SYS$OUTPUT "" 930$ WRITE SYS$OUTPUT ""
721$ WRITE SYS$OUTPUT " ALL : Just Build Everything." 931$ WRITE SYS$OUTPUT " ALL : Just Build Everything."
722$ WRITE SYS$OUTPUT " CONFIG : Just build the [.CRYPTO]OPENSSLCONF.H file." 932$ WRITE SYS$OUTPUT " CONFIG : Just build the [.CRYPTO._xxx]OPENSSLCONF.H file."
723$ WRITE SYS$OUTPUT " BUILDINF : Just build the [.CRYPTO]BUILDINF.H file." 933$ WRITE SYS$OUTPUT " BUILDINF : Just build the [.CRYPTO._xxx]BUILDINF.H file."
724$ WRITE SYS$OUTPUT " SOFTLINKS: Just Fix The Unix soft links." 934$ WRITE SYS$OUTPUT " SOFTLINKS: Just Fix The Unix soft links."
725$ WRITE SYS$OUTPUT " BUILDALL : Same as ALL, except CONFIG, BUILDINF and SOFTILNKS aren't done." 935$ WRITE SYS$OUTPUT " BUILDALL : Same as ALL, except CONFIG, BUILDINF and SOFTILNKS aren't done."
726$ WRITE SYS$OUTPUT " CRYPTO : To Build Just The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library." 936$ WRITE SYS$OUTPUT " CRYPTO : To Build Just The [.xxx.EXE.CRYPTO]LIBCRYPTO.OLB Library."
@@ -730,16 +940,18 @@ $ WRITE SYS$OUTPUT " SSL : To Build Just The [.xxx.EXE.SSL]LIBSSL.O
730$ WRITE SYS$OUTPUT " SSL_TASK : To Build Just The [.xxx.EXE.SSL]SSL_TASK.EXE Program." 940$ WRITE SYS$OUTPUT " SSL_TASK : To Build Just The [.xxx.EXE.SSL]SSL_TASK.EXE Program."
731$ WRITE SYS$OUTPUT " TEST : To Build Just The OpenSSL Test Programs." 941$ WRITE SYS$OUTPUT " TEST : To Build Just The OpenSSL Test Programs."
732$ WRITE SYS$OUTPUT " APPS : To Build Just The OpenSSL Application Programs." 942$ WRITE SYS$OUTPUT " APPS : To Build Just The OpenSSL Application Programs."
943$ WRITE SYS$OUTPUT " ENGINES : To Build Just The ENGINES"
733$ WRITE SYS$OUTPUT "" 944$ WRITE SYS$OUTPUT ""
734$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:" 945$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
735$ WRITE SYS$OUTPUT "" 946$ WRITE SYS$OUTPUT ""
736$ WRITE SYS$OUTPUT " AXP : Alpha Architecture." 947$ WRITE SYS$OUTPUT " ALPHA : Alpha Architecture."
737$ WRITE SYS$OUTPUT " VAX : VAX Architecture." 948$ WRITE SYS$OUTPUT " IA64 : IA64 Architecture."
949$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
738$ WRITE SYS$OUTPUT "" 950$ WRITE SYS$OUTPUT ""
739$! 951$!
740$! Time To EXIT. 952$! Time To EXIT.
741$! 953$!
742$ EXIT 954$ GOTO TIDY
743$! 955$!
744$! End The Valid Argument Check. 956$! End The Valid Argument Check.
745$! 957$!
@@ -786,9 +998,9 @@ $ WRITE SYS$OUTPUT ""
786$! 998$!
787$! Time To EXIT. 999$! Time To EXIT.
788$! 1000$!
789$ EXIT 1001$ GOTO TIDY
790$! 1002$!
791$! End The Valid Arguement Check. 1003$! End The Valid Argument Check.
792$! 1004$!
793$ ENDIF 1005$ ENDIF
794$! 1006$!
@@ -927,7 +1139,7 @@ $! End The GNU C Check.
927$! 1139$!
928$ ENDIF 1140$ ENDIF
929$! 1141$!
930$! Else The User Entered An Invalid Arguement. 1142$! Else The User Entered An Invalid Argument.
931$! 1143$!
932$ ELSE 1144$ ELSE
933$! 1145$!
@@ -943,9 +1155,9 @@ $ WRITE SYS$OUTPUT ""
943$! 1155$!
944$! Time To EXIT. 1156$! Time To EXIT.
945$! 1157$!
946$ EXIT 1158$ GOTO TIDY
947$! 1159$!
948$! End The Valid Arguement Check. 1160$! End The Valid Argument Check.
949$! 1161$!
950$ ENDIF 1162$ ENDIF
951$! 1163$!
@@ -1052,7 +1264,7 @@ $! Print info
1052$! 1264$!
1053$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB 1265$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
1054$! 1266$!
1055$! Else The User Entered An Invalid Arguement. 1267$! Else The User Entered An Invalid Argument.
1056$! 1268$!
1057$ ELSE 1269$ ELSE
1058$ IF P5 .NES. "" 1270$ IF P5 .NES. ""
@@ -1071,7 +1283,7 @@ $ WRITE SYS$OUTPUT ""
1071$! 1283$!
1072$! Time To EXIT. 1284$! Time To EXIT.
1073$! 1285$!
1074$ EXIT 1286$ GOTO TIDY
1075$ ELSE 1287$ ELSE
1076$! 1288$!
1077$! If TCPIP is not defined, then hardcode it to make 1289$! If TCPIP is not defined, then hardcode it to make
@@ -1107,7 +1319,7 @@ $!
1107$! Get The Version Of VMS We Are Using. 1319$! Get The Version Of VMS We Are Using.
1108$! 1320$!
1109$ ISSEVEN := 1321$ ISSEVEN :=
1110$ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,F$GETSYI("VERSION"))) 1322$ TMP = F$ELEMENT(0,"-",F$EXTRACT(1,4,VMS_VERSION))
1111$ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP)) 1323$ TMP = F$INTEGER(F$ELEMENT(0,".",TMP)+F$ELEMENT(1,".",TMP))
1112$! 1324$!
1113$! Check To See If The VMS Version Is v7.1 Or Later. 1325$! Check To See If The VMS Version Is v7.1 Or Later.
@@ -1130,3 +1342,8 @@ $!
1130$! Time To RETURN... 1342$! Time To RETURN...
1131$! 1343$!
1132$ RETURN 1344$ RETURN
1345$!
1346$ TIDY:
1347$ SET DEFAULT 'DEF_ORIG'
1348$ EXIT
1349$!
diff --git a/src/lib/libssl/src/ms/README b/src/lib/libssl/src/ms/README
index 7a45db1081..07f1925d5f 100644
--- a/src/lib/libssl/src/ms/README
+++ b/src/lib/libssl/src/ms/README
@@ -4,7 +4,7 @@ to build with visual C++ 4.[01].
4 4
5The results will be in the out directory. 5The results will be in the out directory.
6 6
7These makefiles and def files were generated my typing 7These makefiles and def files were generated by typing
8 8
9perl util\mk1mf.pl VC-NT >ms/nt.mak 9perl util\mk1mf.pl VC-NT >ms/nt.mak
10perl util\mk1mf.pl VC-NT dll >ms/ntdll.mak 10perl util\mk1mf.pl VC-NT dll >ms/ntdll.mak
diff --git a/src/lib/libssl/src/ms/bcb4.bat b/src/lib/libssl/src/ms/bcb4.bat
index 71a670e794..00fb9e8459 100644
--- a/src/lib/libssl/src/ms/bcb4.bat
+++ b/src/lib/libssl/src/ms/bcb4.bat
@@ -1,6 +1,6 @@
1perl Configure BC-32 1perl Configure BC-32
2perl util\mkfiles.pl > MINFO 2perl util\mkfiles.pl > MINFO
3 3
4@rem create make file 4@rem create make file
5perl util\mk1mf.pl no-asm BC-NT > bcb.mak 5perl util\mk1mf.pl no-asm BC-NT > bcb.mak
6 6
diff --git a/src/lib/libssl/src/ms/do_ms.bat b/src/lib/libssl/src/ms/do_ms.bat
index 9323336f9b..55014d3fc3 100644
--- a/src/lib/libssl/src/ms/do_ms.bat
+++ b/src/lib/libssl/src/ms/do_ms.bat
@@ -1,9 +1,11 @@
1 1
2perl util\mkfiles.pl >MINFO 2perl util\mkfiles.pl >MINFO
3perl util\mk1mf.pl no-asm VC-WIN32 >ms\nt.mak 3perl util\mk1mf.pl no-asm VC-WIN32 >ms\nt.mak
4perl util\mk1mf.pl dll no-asm VC-WIN32 >ms\ntdll.mak 4perl util\mk1mf.pl dll no-asm VC-WIN32 >ms\ntdll.mak
5perl util\mk1mf.pl no-asm VC-CE >ms\ce.mak 5if x%OSVERSION% == x goto skipce
6perl util\mk1mf.pl dll no-asm VC-CE >ms\cedll.mak 6perl util\mk1mf.pl no-asm VC-CE >ms\ce.mak
7 7perl util\mk1mf.pl dll no-asm VC-CE >ms\cedll.mak
8perl util\mkdef.pl 32 libeay > ms\libeay32.def 8:skipce
9perl util\mkdef.pl 32 ssleay > ms\ssleay32.def 9
10perl util\mkdef.pl 32 libeay > ms\libeay32.def
11perl util\mkdef.pl 32 ssleay > ms\ssleay32.def
diff --git a/src/lib/libssl/src/ms/do_nasm.bat b/src/lib/libssl/src/ms/do_nasm.bat
index 7656c498df..7b3f3edbf0 100644
--- a/src/lib/libssl/src/ms/do_nasm.bat
+++ b/src/lib/libssl/src/ms/do_nasm.bat
@@ -1,76 +1,4 @@
1 1
2@echo off
3
4SET ASMOPTS=-DOPENSSL_IA32_SSE2
5echo Generating x86 for NASM assember
6
7echo Bignum
8cd crypto\bn\asm
9perl bn-586.pl win32n %ASMOPTS% > bn_win32.asm
10perl co-586.pl win32n %ASMOPTS% > co_win32.asm
11perl mo-586.pl win32n %ASMOPTS% > mt_win32.asm
12cd ..\..\..
13
14echo AES
15cd crypto\aes\asm
16perl aes-586.pl win32n %ASMOPTS% > a_win32.asm
17cd ..\..\..
18
19echo DES
20cd crypto\des\asm
21perl des-586.pl win32n %ASMOPTS% > d_win32.asm
22cd ..\..\..
23
24echo "crypt(3)"
25
26cd crypto\des\asm
27perl crypt586.pl win32n %ASMOPTS% > y_win32.asm
28cd ..\..\..
29
30echo Blowfish
31
32cd crypto\bf\asm
33perl bf-586.pl win32n %ASMOPTS% > b_win32.asm
34cd ..\..\..
35
36echo CAST5
37cd crypto\cast\asm
38perl cast-586.pl win32n %ASMOPTS% > c_win32.asm
39cd ..\..\..
40
41echo RC4
42cd crypto\rc4\asm
43perl rc4-586.pl win32n %ASMOPTS% > r4_win32.asm
44cd ..\..\..
45
46echo MD5
47cd crypto\md5\asm
48perl md5-586.pl win32n %ASMOPTS% > m5_win32.asm
49cd ..\..\..
50
51echo SHA1
52cd crypto\sha\asm
53perl sha1-586.pl win32n %ASMOPTS% > s1_win32.asm
54perl sha512-sse2.pl win32n %ASMOPTS% > sha512-sse2.asm
55cd ..\..\..
56
57echo RIPEMD160
58cd crypto\ripemd\asm
59perl rmd-586.pl win32n %ASMOPTS% > rm_win32.asm
60cd ..\..\..
61
62echo RC5\32
63cd crypto\rc5\asm
64perl rc5-586.pl win32n %ASMOPTS% > r5_win32.asm
65cd ..\..\..
66
67echo CPU-ID
68cd crypto
69perl x86cpuid.pl win32n %ASMOPTS% > cpu_win32.asm
70cd ..
71
72echo on
73
74perl util\mkfiles.pl >MINFO 2perl util\mkfiles.pl >MINFO
75perl util\mk1mf.pl nasm VC-WIN32 >ms\nt.mak 3perl util\mk1mf.pl nasm VC-WIN32 >ms\nt.mak
76perl util\mk1mf.pl dll nasm VC-WIN32 >ms\ntdll.mak 4perl util\mk1mf.pl dll nasm VC-WIN32 >ms\ntdll.mak
diff --git a/src/lib/libssl/src/ms/do_nt.bat b/src/lib/libssl/src/ms/do_nt.bat
index 9c06c27caa..e2d525e05d 100644
--- a/src/lib/libssl/src/ms/do_nt.bat
+++ b/src/lib/libssl/src/ms/do_nt.bat
@@ -1,7 +1,7 @@
1 1
2perl util\mkfiles.pl >MINFO 2perl util\mkfiles.pl >MINFO
3perl util\mk1mf.pl no-asm VC-NT >ms\nt.mak 3perl util\mk1mf.pl no-asm VC-NT >ms\nt.mak
4perl util\mk1mf.pl dll no-asm VC-NT >ms\ntdll.mak 4perl util\mk1mf.pl dll no-asm VC-NT >ms\ntdll.mak
5 5
6perl util\mkdef.pl libeay NT > ms\libeay32.def 6perl util\mkdef.pl libeay NT > ms\libeay32.def
7perl util\mkdef.pl ssleay NT > ms\ssleay32.def 7perl util\mkdef.pl ssleay NT > ms\ssleay32.def
diff --git a/src/lib/libssl/src/ms/do_win64a.bat b/src/lib/libssl/src/ms/do_win64a.bat
index 825c690221..495f1ea7d8 100755
--- a/src/lib/libssl/src/ms/do_win64a.bat
+++ b/src/lib/libssl/src/ms/do_win64a.bat
@@ -1,9 +1,9 @@
1 1
2perl util\mkfiles.pl >MINFO 2perl util\mkfiles.pl >MINFO
3perl ms\uplink.pl win64a > ms\uptable.asm 3perl ms\uplink.pl win64a > ms\uptable.asm
4ml64 -c -Foms\uptable.obj ms\uptable.asm 4ml64 -c -Foms\uptable.obj ms\uptable.asm
5perl util\mk1mf.pl no-asm VC-WIN64A >ms\nt.mak 5perl util\mk1mf.pl no-asm VC-WIN64A >ms\nt.mak
6perl util\mk1mf.pl dll no-asm VC-WIN64A >ms\ntdll.mak 6perl util\mk1mf.pl dll no-asm VC-WIN64A >ms\ntdll.mak
7 7
8perl util\mkdef.pl 32 libeay > ms\libeay32.def 8perl util\mkdef.pl 32 libeay > ms\libeay32.def
9perl util\mkdef.pl 32 ssleay > ms\ssleay32.def 9perl util\mkdef.pl 32 ssleay > ms\ssleay32.def
diff --git a/src/lib/libssl/src/ms/do_win64i.bat b/src/lib/libssl/src/ms/do_win64i.bat
index 7bfc2f1818..15ebcaaeb6 100755
--- a/src/lib/libssl/src/ms/do_win64i.bat
+++ b/src/lib/libssl/src/ms/do_win64i.bat
@@ -1,9 +1,9 @@
1 1
2perl util\mkfiles.pl >MINFO 2perl util\mkfiles.pl >MINFO
3perl ms\uplink.pl win64i > ms\uptable.asm 3perl ms\uplink.pl win64i > ms\uptable.asm
4ias -o ms\uptable.obj ms\uptable.asm 4ias -o ms\uptable.obj ms\uptable.asm
5perl util\mk1mf.pl no-asm VC-WIN64I >ms\nt.mak 5perl util\mk1mf.pl no-asm VC-WIN64I >ms\nt.mak
6perl util\mk1mf.pl dll no-asm VC-WIN64I >ms\ntdll.mak 6perl util\mk1mf.pl dll no-asm VC-WIN64I >ms\ntdll.mak
7 7
8perl util\mkdef.pl 32 libeay > ms\libeay32.def 8perl util\mkdef.pl 32 libeay > ms\libeay32.def
9perl util\mkdef.pl 32 ssleay > ms\ssleay32.def 9perl util\mkdef.pl 32 ssleay > ms\ssleay32.def
diff --git a/src/lib/libssl/src/ms/mingw32.bat b/src/lib/libssl/src/ms/mingw32.bat
index f9377a8695..06b5733878 100644
--- a/src/lib/libssl/src/ms/mingw32.bat
+++ b/src/lib/libssl/src/ms/mingw32.bat
@@ -60,10 +60,6 @@ echo RC5\32
60cd crypto\rc5\asm 60cd crypto\rc5\asm
61perl rc5-586.pl gaswin > r5-win32.s 61perl rc5-586.pl gaswin > r5-win32.s
62cd ..\..\.. 62cd ..\..\..
63echo CPUID
64cd crypto
65perl x86cpuid.pl gaswin > cpu-win32.s
66cd ..
67 63
68:noasm 64:noasm
69 65
@@ -83,7 +79,7 @@ mingw32-make -f ms/mingw32a.mak
83if errorlevel 1 goto end 79if errorlevel 1 goto end
84 80
85echo Generating the DLLs and input libraries 81echo Generating the DLLs and input libraries
86dllwrap --dllname libeay32.dll --output-lib out/libeay32.a --def ms/libeay32.def out/libcrypto.a -lwsock32 -lgdi32 82dllwrap --dllname libeay32.dll --output-lib out/libeay32.a --def ms/libeay32.def out/libcrypto.a -lws2_32 -lgdi32
87if errorlevel 1 goto end 83if errorlevel 1 goto end
88dllwrap --dllname libssl32.dll --output-lib out/libssl32.a --def ms/ssleay32.def out/libssl.a out/libeay32.a 84dllwrap --dllname libssl32.dll --output-lib out/libssl32.a --def ms/ssleay32.def out/libssl.a out/libeay32.a
89if errorlevel 1 goto end 85if errorlevel 1 goto end
diff --git a/src/lib/libssl/src/ms/mw.bat b/src/lib/libssl/src/ms/mw.bat
index c5ccd693e3..35e00a4508 100644
--- a/src/lib/libssl/src/ms/mw.bat
+++ b/src/lib/libssl/src/ms/mw.bat
@@ -1,26 +1,26 @@
1@rem OpenSSL with Mingw32 1@rem OpenSSL with Mingw32
2@rem -------------------- 2@rem --------------------
3 3
4@rem Makefile 4@rem Makefile
5perl util\mkfiles.pl >MINFO 5perl util\mkfiles.pl >MINFO
6perl util\mk1mf.pl Mingw32 >ms\mingw32.mak 6perl util\mk1mf.pl Mingw32 >ms\mingw32.mak
7@rem DLL definition files 7@rem DLL definition files
8perl util\mkdef.pl 32 libeay >ms\libeay32.def 8perl util\mkdef.pl 32 libeay >ms\libeay32.def
9if errorlevel 1 goto end 9if errorlevel 1 goto end
10perl util\mkdef.pl 32 ssleay >ms\ssleay32.def 10perl util\mkdef.pl 32 ssleay >ms\ssleay32.def
11if errorlevel 1 goto end 11if errorlevel 1 goto end
12 12
13@rem Build the libraries 13@rem Build the libraries
14make -f ms/mingw32.mak 14make -f ms/mingw32.mak
15if errorlevel 1 goto end 15if errorlevel 1 goto end
16 16
17@rem Generate the DLLs and input libraries 17@rem Generate the DLLs and input libraries
18dllwrap --dllname libeay32.dll --output-lib out/libeay32.a --def ms/libeay32.def out/libcrypto.a -lwsock32 -lgdi32 18dllwrap --dllname libeay32.dll --output-lib out/libeay32.a --def ms/libeay32.def out/libcrypto.a -lws2_32 -lgdi32
19if errorlevel 1 goto end 19if errorlevel 1 goto end
20dllwrap --dllname libssl32.dll --output-lib out/libssl32.a --def ms/ssleay32.def out/libssl.a out/libeay32.a 20dllwrap --dllname libssl32.dll --output-lib out/libssl32.a --def ms/ssleay32.def out/libssl.a out/libeay32.a
21if errorlevel 1 goto end 21if errorlevel 1 goto end
22 22
23echo Done compiling OpenSSL 23echo Done compiling OpenSSL
24 24
25:end 25:end
26 26
diff --git a/src/lib/libssl/src/ms/tenc.bat b/src/lib/libssl/src/ms/tenc.bat
index 466fdfccbf..a4fa7f3652 100644
--- a/src/lib/libssl/src/ms/tenc.bat
+++ b/src/lib/libssl/src/ms/tenc.bat
@@ -1,14 +1,14 @@
1rem called by testenc 1rem called by testenc
2 2
3echo test %1 %2 %3 %4 %5 %6 3echo test %1 %2 %3 %4 %5 %6
4%ssleay% %1 %2 %3 %4 %5 %6 -e -bufsize 113 -k test -in %input% -out %tmp1% 4%ssleay% %1 %2 %3 %4 %5 %6 -e -bufsize 113 -k test -in %input% -out %tmp1%
5%ssleay% %1 %2 %3 %4 %5 %6 -d -bufsize 157 -k test -in %tmp1% -out %out1% 5%ssleay% %1 %2 %3 %4 %5 %6 -d -bufsize 157 -k test -in %tmp1% -out %out1%
6%cmp% %input% %out1% 6%cmp% %input% %out1%
7if errorlevel 1 goto err 7if errorlevel 1 goto err
8 8
9echo test base64 %1 %2 %3 %4 %5 %6 9echo test base64 %1 %2 %3 %4 %5 %6
10%ssleay% %1 %2 %3 %4 %5 %6 -a -e -bufsize 113 -k test -in %input% -out %tmp1% 10%ssleay% %1 %2 %3 %4 %5 %6 -a -e -bufsize 113 -k test -in %input% -out %tmp1%
11%ssleay% %1 %2 %3 %4 %5 %6 -a -d -bufsize 157 -k test -in %tmp1% -out %out1% 11%ssleay% %1 %2 %3 %4 %5 %6 -a -d -bufsize 157 -k test -in %tmp1% -out %out1%
12%cmp% %input% %out1% 12%cmp% %input% %out1%
13 13
14:err 14:err
diff --git a/src/lib/libssl/src/ms/tencce.bat b/src/lib/libssl/src/ms/tencce.bat
index 6a944d7671..c8b1acd4b4 100644
--- a/src/lib/libssl/src/ms/tencce.bat
+++ b/src/lib/libssl/src/ms/tencce.bat
@@ -1,19 +1,19 @@
1rem called by testencce 1rem called by testencce
2 2
3echo test %1 %2 %3 %4 %5 %6 3echo test %1 %2 %3 %4 %5 %6
4cecopy %input% CE:\OpenSSL 4cecopy %input% CE:\OpenSSL
5cerun CE:\OpenSSL\%ssleay% %1 %2 %3 %4 %5 %6 -e -bufsize 113 -k test -in \OpenSSL\%input% -out \OpenSSL\%tmp1% 5cerun CE:\OpenSSL\%ssleay% %1 %2 %3 %4 %5 %6 -e -bufsize 113 -k test -in \OpenSSL\%input% -out \OpenSSL\%tmp1%
6cerun CE:\OpenSSL\%ssleay% %1 %2 %3 %4 %5 %6 -d -bufsize 157 -k test -in \OpenSSL\%tmp1% -out \OpenSSL\%out1% 6cerun CE:\OpenSSL\%ssleay% %1 %2 %3 %4 %5 %6 -d -bufsize 157 -k test -in \OpenSSL\%tmp1% -out \OpenSSL\%out1%
7del %out1% >nul 2>&1 7del %out1% >nul 2>&1
8cecopy CE:\OpenSSL\%out1% . 8cecopy CE:\OpenSSL\%out1% .
9%cmp% %input% %out1% 9%cmp% %input% %out1%
10if errorlevel 1 goto err 10if errorlevel 1 goto err
11 11
12echo test base64 %1 %2 %3 %4 %5 %6 12echo test base64 %1 %2 %3 %4 %5 %6
13cerun CE:\OpenSSL\%ssleay% %1 %2 %3 %4 %5 %6 -a -e -bufsize 113 -k test -in \OpenSSL\%input% -out \OpenSSL\%tmp1% 13cerun CE:\OpenSSL\%ssleay% %1 %2 %3 %4 %5 %6 -a -e -bufsize 113 -k test -in \OpenSSL\%input% -out \OpenSSL\%tmp1%
14cerun CE:\OpenSSL\%ssleay% %1 %2 %3 %4 %5 %6 -a -d -bufsize 157 -k test -in \OpenSSL\%tmp1% -out \OpenSSL\%out1% 14cerun CE:\OpenSSL\%ssleay% %1 %2 %3 %4 %5 %6 -a -d -bufsize 157 -k test -in \OpenSSL\%tmp1% -out \OpenSSL\%out1%
15del %out1% >nul 2>&1 15del %out1% >nul 2>&1
16cecopy CE:\OpenSSL\%out1% . 16cecopy CE:\OpenSSL\%out1% .
17%cmp% %input% %out1% 17%cmp% %input% %out1%
18 18
19:err 19:err
diff --git a/src/lib/libssl/src/ms/test.bat b/src/lib/libssl/src/ms/test.bat
index f729261782..f490546ebb 100644
--- a/src/lib/libssl/src/ms/test.bat
+++ b/src/lib/libssl/src/ms/test.bat
@@ -35,10 +35,6 @@ echo md5test
35md5test 35md5test
36if errorlevel 1 goto done 36if errorlevel 1 goto done
37 37
38echo md2test
39md2test
40if errorlevel 1 goto done
41
42echo rc2test 38echo rc2test
43rc2test 39rc2test
44if errorlevel 1 goto done 40if errorlevel 1 goto done
@@ -181,7 +177,6 @@ echo test sslv2/sslv3 with both client and server authentication via BIO pair
181%SSL_TEST% -bio_pair -server_auth -client_auth 177%SSL_TEST% -bio_pair -server_auth -client_auth
182if errorlevel 1 goto done 178if errorlevel 1 goto done
183 179
184
185echo passed all tests 180echo passed all tests
186goto end 181goto end
187:done 182:done
diff --git a/src/lib/libssl/src/ms/testenc.bat b/src/lib/libssl/src/ms/testenc.bat
index 4b99bd5895..f8e90939ed 100644
--- a/src/lib/libssl/src/ms/testenc.bat
+++ b/src/lib/libssl/src/ms/testenc.bat
@@ -1,94 +1,94 @@
1@echo off 1@echo off
2echo start testenc 2echo start testenc
3 3
4path=..\ms;%path% 4path=..\ms;%path%
5set ssleay=%1% 5set ssleay=%1%
6set input=..\ms\testenc.bat 6set input=..\ms\testenc.bat
7set tmp1=..\ms\cipher.out 7set tmp1=..\ms\cipher.out
8set out1=..\ms\clear.out 8set out1=..\ms\clear.out
9set cmp=perl ..\ms\cmp.pl 9set cmp=perl ..\ms\cmp.pl
10 10
11cd 11cd
12call tenc.bat enc 12call tenc.bat enc
13if errorlevel 1 goto err 13if errorlevel 1 goto err
14 14
15call tenc.bat rc4 15call tenc.bat rc4
16if errorlevel 1 goto err 16if errorlevel 1 goto err
17 17
18call tenc.bat des-cfb 18call tenc.bat des-cfb
19if errorlevel 1 goto err 19if errorlevel 1 goto err
20 20
21call tenc.bat des-ede-cfb 21call tenc.bat des-ede-cfb
22if errorlevel 1 goto err 22if errorlevel 1 goto err
23 23
24call tenc.bat des-ede3-cfb 24call tenc.bat des-ede3-cfb
25if errorlevel 1 goto err 25if errorlevel 1 goto err
26 26
27call tenc.bat des-ofb 27call tenc.bat des-ofb
28if errorlevel 1 goto err 28if errorlevel 1 goto err
29 29
30call tenc.bat des-ede-ofb 30call tenc.bat des-ede-ofb
31if errorlevel 1 goto err 31if errorlevel 1 goto err
32 32
33call tenc.bat des-ede3-ofb 33call tenc.bat des-ede3-ofb
34if errorlevel 1 goto err 34if errorlevel 1 goto err
35 35
36call tenc.bat des-ecb 36call tenc.bat des-ecb
37if errorlevel 1 goto err 37if errorlevel 1 goto err
38 38
39call tenc.bat des-ede 39call tenc.bat des-ede
40if errorlevel 1 goto err 40if errorlevel 1 goto err
41 41
42call tenc.bat des-ede3 42call tenc.bat des-ede3
43if errorlevel 1 goto err 43if errorlevel 1 goto err
44 44
45call tenc.bat des-cbc 45call tenc.bat des-cbc
46if errorlevel 1 goto err 46if errorlevel 1 goto err
47 47
48call tenc.bat des-ede-cbc 48call tenc.bat des-ede-cbc
49if errorlevel 1 goto err 49if errorlevel 1 goto err
50 50
51call tenc.bat des-ede3-cbc 51call tenc.bat des-ede3-cbc
52if errorlevel 1 goto err 52if errorlevel 1 goto err
53 53
54call tenc.bat idea-ecb 54call tenc.bat idea-ecb
55if errorlevel 1 goto err 55if errorlevel 1 goto err
56 56
57call tenc.bat idea-cfb 57call tenc.bat idea-cfb
58if errorlevel 1 goto err 58if errorlevel 1 goto err
59 59
60call tenc.bat idea-ofb 60call tenc.bat idea-ofb
61if errorlevel 1 goto err 61if errorlevel 1 goto err
62 62
63call tenc.bat idea-cbc 63call tenc.bat idea-cbc
64if errorlevel 1 goto err 64if errorlevel 1 goto err
65 65
66call tenc.bat rc2-ecb 66call tenc.bat rc2-ecb
67if errorlevel 1 goto err 67if errorlevel 1 goto err
68 68
69call tenc.bat rc2-cfb 69call tenc.bat rc2-cfb
70if errorlevel 1 goto err 70if errorlevel 1 goto err
71 71
72call tenc.bat rc2-ofb 72call tenc.bat rc2-ofb
73if errorlevel 1 goto err 73if errorlevel 1 goto err
74 74
75call tenc.bat rc2-cbc 75call tenc.bat rc2-cbc
76if errorlevel 1 goto err 76if errorlevel 1 goto err
77 77
78call tenc.bat bf-ecb 78call tenc.bat bf-ecb
79if errorlevel 1 goto err 79if errorlevel 1 goto err
80 80
81call tenc.bat bf-cfb 81call tenc.bat bf-cfb
82if errorlevel 1 goto err 82if errorlevel 1 goto err
83 83
84call tenc.bat bf-ofb 84call tenc.bat bf-ofb
85if errorlevel 1 goto err 85if errorlevel 1 goto err
86 86
87call tenc.bat bf-cbc 87call tenc.bat bf-cbc
88if errorlevel 1 goto err 88if errorlevel 1 goto err
89 89
90echo OK 90echo OK
91del %out1% 91del %out1%
92del %tmp1% 92del %tmp1%
93:err 93:err
94 94
diff --git a/src/lib/libssl/src/ms/testencce.bat b/src/lib/libssl/src/ms/testencce.bat
index 04faa5d99b..1da3e0861f 100644
--- a/src/lib/libssl/src/ms/testencce.bat
+++ b/src/lib/libssl/src/ms/testencce.bat
@@ -1,97 +1,97 @@
1@echo off 1@echo off
2echo start testenc 2echo start testenc
3 3
4path=..\ms;%path% 4path=..\ms;%path%
5set ssleay=%1% 5set ssleay=%1%
6copy ..\ms\testenc.bat >nul 6copy ..\ms\testenc.bat >nul
7set input=testenc.bat 7set input=testenc.bat
8set tmp1=cipher.out 8set tmp1=cipher.out
9set out1=clear.out 9set out1=clear.out
10set cmp=perl ..\ms\cmp.pl 10set cmp=perl ..\ms\cmp.pl
11 11
12cecopy %ssleay% CE:\OpenSSL 12cecopy %ssleay% CE:\OpenSSL
13 13
14cd 14cd
15call tencce.bat enc 15call tencce.bat enc
16if errorlevel 1 goto err 16if errorlevel 1 goto err
17 17
18call tencce.bat rc4 18call tencce.bat rc4
19if errorlevel 1 goto err 19if errorlevel 1 goto err
20 20
21call tencce.bat des-cfb 21call tencce.bat des-cfb
22if errorlevel 1 goto err 22if errorlevel 1 goto err
23 23
24call tencce.bat des-ede-cfb 24call tencce.bat des-ede-cfb
25if errorlevel 1 goto err 25if errorlevel 1 goto err
26 26
27call tencce.bat des-ede3-cfb 27call tencce.bat des-ede3-cfb
28if errorlevel 1 goto err 28if errorlevel 1 goto err
29 29
30call tencce.bat des-ofb 30call tencce.bat des-ofb
31if errorlevel 1 goto err 31if errorlevel 1 goto err
32 32
33call tencce.bat des-ede-ofb 33call tencce.bat des-ede-ofb
34if errorlevel 1 goto err 34if errorlevel 1 goto err
35 35
36call tencce.bat des-ede3-ofb 36call tencce.bat des-ede3-ofb
37if errorlevel 1 goto err 37if errorlevel 1 goto err
38 38
39call tencce.bat des-ecb 39call tencce.bat des-ecb
40if errorlevel 1 goto err 40if errorlevel 1 goto err
41 41
42call tencce.bat des-ede 42call tencce.bat des-ede
43if errorlevel 1 goto err 43if errorlevel 1 goto err
44 44
45call tencce.bat des-ede3 45call tencce.bat des-ede3
46if errorlevel 1 goto err 46if errorlevel 1 goto err
47 47
48call tencce.bat des-cbc 48call tencce.bat des-cbc
49if errorlevel 1 goto err 49if errorlevel 1 goto err
50 50
51call tencce.bat des-ede-cbc 51call tencce.bat des-ede-cbc
52if errorlevel 1 goto err 52if errorlevel 1 goto err
53 53
54call tencce.bat des-ede3-cbc 54call tencce.bat des-ede3-cbc
55if errorlevel 1 goto err 55if errorlevel 1 goto err
56 56
57call tencce.bat idea-ecb 57call tencce.bat idea-ecb
58if errorlevel 1 goto err 58if errorlevel 1 goto err
59 59
60call tencce.bat idea-cfb 60call tencce.bat idea-cfb
61if errorlevel 1 goto err 61if errorlevel 1 goto err
62 62
63call tencce.bat idea-ofb 63call tencce.bat idea-ofb
64if errorlevel 1 goto err 64if errorlevel 1 goto err
65 65
66call tencce.bat idea-cbc 66call tencce.bat idea-cbc
67if errorlevel 1 goto err 67if errorlevel 1 goto err
68 68
69call tencce.bat rc2-ecb 69call tencce.bat rc2-ecb
70if errorlevel 1 goto err 70if errorlevel 1 goto err
71 71
72call tencce.bat rc2-cfb 72call tencce.bat rc2-cfb
73if errorlevel 1 goto err 73if errorlevel 1 goto err
74 74
75call tencce.bat rc2-ofb 75call tencce.bat rc2-ofb
76if errorlevel 1 goto err 76if errorlevel 1 goto err
77 77
78call tencce.bat rc2-cbc 78call tencce.bat rc2-cbc
79if errorlevel 1 goto err 79if errorlevel 1 goto err
80 80
81call tencce.bat bf-ecb 81call tencce.bat bf-ecb
82if errorlevel 1 goto err 82if errorlevel 1 goto err
83 83
84call tencce.bat bf-cfb 84call tencce.bat bf-cfb
85if errorlevel 1 goto err 85if errorlevel 1 goto err
86 86
87call tencce.bat bf-ofb 87call tencce.bat bf-ofb
88if errorlevel 1 goto err 88if errorlevel 1 goto err
89 89
90call tencce.bat bf-cbc 90call tencce.bat bf-cbc
91if errorlevel 1 goto err 91if errorlevel 1 goto err
92 92
93echo OK 93echo OK
94del %out1% >nul 2>&1 94del %out1% >nul 2>&1
95del %tmp1% >nul 2>&1 95del %tmp1% >nul 2>&1
96:err 96:err
97 97
diff --git a/src/lib/libssl/src/ms/testpem.bat b/src/lib/libssl/src/ms/testpem.bat
index 005f13b67e..8b2e844d36 100644
--- a/src/lib/libssl/src/ms/testpem.bat
+++ b/src/lib/libssl/src/ms/testpem.bat
@@ -1,32 +1,32 @@
1@echo off 1@echo off
2set ssleay=%1% 2set ssleay=%1%
3set tmp1=pem.out 3set tmp1=pem.out
4set cmp=fc.exe 4set cmp=fc.exe
5 5
6call tpem.bat crl ..\test\testcrl.pem 6call tpem.bat crl ..\test\testcrl.pem
7if errorlevel 1 goto err 7if errorlevel 1 goto err
8 8
9call tpem.bat pkcs7 ..\test\testp7.pem 9call tpem.bat pkcs7 ..\test\testp7.pem
10if errorlevel 1 goto err 10if errorlevel 1 goto err
11 11
12call tpem.bat req ..\test\testreq2.pem 12call tpem.bat req ..\test\testreq2.pem
13if errorlevel 1 goto err 13if errorlevel 1 goto err
14 14
15call tpem.bat rsa ..\test\testrsa.pem 15call tpem.bat rsa ..\test\testrsa.pem
16if errorlevel 1 goto err 16if errorlevel 1 goto err
17 17
18call tpem.bat x509 ..\test\testx509.pem 18call tpem.bat x509 ..\test\testx509.pem
19if errorlevel 1 goto err 19if errorlevel 1 goto err
20 20
21call tpem.bat x509 ..\test\v3-cert1.pem 21call tpem.bat x509 ..\test\v3-cert1.pem
22if errorlevel 1 goto err 22if errorlevel 1 goto err
23 23
24call tpem.bat x509 ..\test\v3-cert1.pem 24call tpem.bat x509 ..\test\v3-cert1.pem
25if errorlevel 1 goto err 25if errorlevel 1 goto err
26 26
27call tpem.bat sess_id ..\test\testsid.pem 27call tpem.bat sess_id ..\test\testsid.pem
28if errorlevel 1 goto err 28if errorlevel 1 goto err
29 29
30echo OK 30echo OK
31del %tmp1% 31del %tmp1%
32:err 32:err
diff --git a/src/lib/libssl/src/ms/testpemce.bat b/src/lib/libssl/src/ms/testpemce.bat
index c793c3e514..ac64a7912c 100644
--- a/src/lib/libssl/src/ms/testpemce.bat
+++ b/src/lib/libssl/src/ms/testpemce.bat
@@ -1,42 +1,42 @@
1@echo off 1@echo off
2set ssleay=%1% 2set ssleay=%1%
3set tmp1=pem.out 3set tmp1=pem.out
4set cmp=fc.exe 4set cmp=fc.exe
5 5
6cecopy %ssleay% CE:\OpenSSL 6cecopy %ssleay% CE:\OpenSSL
7 7
8copy ..\test\testcrl.pem >nul 8copy ..\test\testcrl.pem >nul
9call tpemce.bat crl testcrl.pem 9call tpemce.bat crl testcrl.pem
10if errorlevel 1 goto err 10if errorlevel 1 goto err
11 11
12copy ..\test\testp7.pem >nul 12copy ..\test\testp7.pem >nul
13call tpemce.bat pkcs7 testp7.pem 13call tpemce.bat pkcs7 testp7.pem
14if errorlevel 1 goto err 14if errorlevel 1 goto err
15 15
16copy ..\test\testreq2.pem >nul 16copy ..\test\testreq2.pem >nul
17call tpemce.bat req testreq2.pem 17call tpemce.bat req testreq2.pem
18if errorlevel 1 goto err 18if errorlevel 1 goto err
19 19
20copy ..\test\testrsa.pem >nul 20copy ..\test\testrsa.pem >nul
21call tpemce.bat rsa testrsa.pem 21call tpemce.bat rsa testrsa.pem
22if errorlevel 1 goto err 22if errorlevel 1 goto err
23 23
24copy ..\test\testx509.pem >nul 24copy ..\test\testx509.pem >nul
25call tpemce.bat x509 testx509.pem 25call tpemce.bat x509 testx509.pem
26if errorlevel 1 goto err 26if errorlevel 1 goto err
27 27
28copy ..\test\v3-cert1.pem >nul 28copy ..\test\v3-cert1.pem >nul
29call tpemce.bat x509 v3-cert1.pem 29call tpemce.bat x509 v3-cert1.pem
30if errorlevel 1 goto err 30if errorlevel 1 goto err
31 31
32copy ..\test\v3-cert1.pem >nul 32copy ..\test\v3-cert1.pem >nul
33call tpemce.bat x509 v3-cert1.pem 33call tpemce.bat x509 v3-cert1.pem
34if errorlevel 1 goto err 34if errorlevel 1 goto err
35 35
36copy ..\test\testsid.pem >nul 36copy ..\test\testsid.pem >nul
37call tpemce.bat sess_id testsid.pem 37call tpemce.bat sess_id testsid.pem
38if errorlevel 1 goto err 38if errorlevel 1 goto err
39 39
40echo OK 40echo OK
41del %tmp1% >nul 2>&1 41del %tmp1% >nul 2>&1
42:err 42:err
diff --git a/src/lib/libssl/src/ms/testss.bat b/src/lib/libssl/src/ms/testss.bat
index b4aaf3c601..5afa131dba 100644
--- a/src/lib/libssl/src/ms/testss.bat
+++ b/src/lib/libssl/src/ms/testss.bat
@@ -1,98 +1,98 @@
1@echo off 1@echo off
2 2
3rem set ssleay=..\out\ssleay 3rem set ssleay=..\out\ssleay
4set ssleay=%1 4set ssleay=%1
5 5
6set reqcmd=%ssleay% req 6set reqcmd=%ssleay% req
7set x509cmd=%ssleay% x509 -sha1 7set x509cmd=%ssleay% x509 -sha1
8set verifycmd=%ssleay% verify 8set verifycmd=%ssleay% verify
9 9
10set CAkey=keyCA.ss 10set CAkey=keyCA.ss
11set CAcert=certCA.ss 11set CAcert=certCA.ss
12set CAserial=certCA.srl 12set CAserial=certCA.srl
13set CAreq=reqCA.ss 13set CAreq=reqCA.ss
14set CAconf=..\test\CAss.cnf 14set CAconf=..\test\CAss.cnf
15set CAreq2=req2CA.ss 15set CAreq2=req2CA.ss
16 16
17set Uconf=..\test\Uss.cnf 17set Uconf=..\test\Uss.cnf
18set Ukey=keyU.ss 18set Ukey=keyU.ss
19set Ureq=reqU.ss 19set Ureq=reqU.ss
20set Ucert=certU.ss 20set Ucert=certU.ss
21 21
22echo make a certificate request using 'req' 22echo make a certificate request using 'req'
23%reqcmd% -config %CAconf% -out %CAreq% -keyout %CAkey% -new 23%reqcmd% -config %CAconf% -out %CAreq% -keyout %CAkey% -new
24if errorlevel 1 goto e_req 24if errorlevel 1 goto e_req
25 25
26echo convert the certificate request into a self signed certificate using 'x509' 26echo convert the certificate request into a self signed certificate using 'x509'
27%x509cmd% -CAcreateserial -in %CAreq% -days 30 -req -out %CAcert% -signkey %CAkey% >err.ss 27%x509cmd% -CAcreateserial -in %CAreq% -days 30 -req -out %CAcert% -signkey %CAkey% >err.ss
28if errorlevel 1 goto e_x509 28if errorlevel 1 goto e_x509
29 29
30echo -- 30echo --
31echo convert a certificate into a certificate request using 'x509' 31echo convert a certificate into a certificate request using 'x509'
32%x509cmd% -in %CAcert% -x509toreq -signkey %CAkey% -out %CAreq2% >err.ss 32%x509cmd% -in %CAcert% -x509toreq -signkey %CAkey% -out %CAreq2% >err.ss
33if errorlevel 1 goto e_x509_2 33if errorlevel 1 goto e_x509_2
34 34
35%reqcmd% -verify -in %CAreq% -noout 35%reqcmd% -verify -in %CAreq% -noout
36if errorlevel 1 goto e_vrfy_1 36if errorlevel 1 goto e_vrfy_1
37 37
38%reqcmd% -verify -in %CAreq2% -noout 38%reqcmd% -verify -in %CAreq2% -noout
39if errorlevel 1 goto e_vrfy_2 39if errorlevel 1 goto e_vrfy_2
40 40
41%verifycmd% -CAfile %CAcert% %CAcert% 41%verifycmd% -CAfile %CAcert% %CAcert%
42if errorlevel 1 goto e_vrfy_3 42if errorlevel 1 goto e_vrfy_3
43 43
44echo -- 44echo --
45echo make another certificate request using 'req' 45echo make another certificate request using 'req'
46%reqcmd% -config %Uconf% -out %Ureq% -keyout %Ukey% -new >err.ss 46%reqcmd% -config %Uconf% -out %Ureq% -keyout %Ukey% -new >err.ss
47if errorlevel 1 goto e_req_gen 47if errorlevel 1 goto e_req_gen
48 48
49echo -- 49echo --
50echo sign certificate request with the just created CA via 'x509' 50echo sign certificate request with the just created CA via 'x509'
51%x509cmd% -CAcreateserial -in %Ureq% -days 30 -req -out %Ucert% -CA %CAcert% -CAkey %CAkey% -CAserial %CAserial% 51%x509cmd% -CAcreateserial -in %Ureq% -days 30 -req -out %Ucert% -CA %CAcert% -CAkey %CAkey% -CAserial %CAserial%
52if errorlevel 1 goto e_x_sign 52if errorlevel 1 goto e_x_sign
53 53
54%verifycmd% -CAfile %CAcert% %Ucert% 54%verifycmd% -CAfile %CAcert% %Ucert%
55echo -- 55echo --
56echo Certificate details 56echo Certificate details
57%x509cmd% -subject -issuer -startdate -enddate -noout -in %Ucert% 57%x509cmd% -subject -issuer -startdate -enddate -noout -in %Ucert%
58 58
59echo Everything appeared to work 59echo Everything appeared to work
60echo -- 60echo --
61echo The generated CA certificate is %CAcert% 61echo The generated CA certificate is %CAcert%
62echo The generated CA private key is %CAkey% 62echo The generated CA private key is %CAkey%
63echo The current CA signing serial number is in %CAserial% 63echo The current CA signing serial number is in %CAserial%
64 64
65echo The generated user certificate is %Ucert% 65echo The generated user certificate is %Ucert%
66echo The generated user private key is %Ukey% 66echo The generated user private key is %Ukey%
67echo -- 67echo --
68 68
69del err.ss 69del err.ss
70 70
71goto end 71goto end
72 72
73:e_req 73:e_req
74echo error using 'req' to generate a certificate request 74echo error using 'req' to generate a certificate request
75goto end 75goto end
76:e_x509 76:e_x509
77echo error using 'x509' to self sign a certificate request 77echo error using 'x509' to self sign a certificate request
78goto end 78goto end
79:e_x509_2 79:e_x509_2
80echo error using 'x509' convert a certificate to a certificate request 80echo error using 'x509' convert a certificate to a certificate request
81goto end 81goto end
82:e_vrfy_1 82:e_vrfy_1
83echo first generated request is invalid 83echo first generated request is invalid
84goto end 84goto end
85:e_vrfy_2 85:e_vrfy_2
86echo second generated request is invalid 86echo second generated request is invalid
87goto end 87goto end
88:e_vrfy_3 88:e_vrfy_3
89echo first generated cert is invalid 89echo first generated cert is invalid
90goto end 90goto end
91:e_req_gen 91:e_req_gen
92echo error using 'req' to generate a certificate request 92echo error using 'req' to generate a certificate request
93goto end 93goto end
94:e_x_sign 94:e_x_sign
95echo error using 'x509' to sign a certificate request 95echo error using 'x509' to sign a certificate request
96goto end 96goto end
97 97
98:end 98:end
diff --git a/src/lib/libssl/src/ms/testssce.bat b/src/lib/libssl/src/ms/testssce.bat
index dbb25abdb0..18381ed2fa 100644
--- a/src/lib/libssl/src/ms/testssce.bat
+++ b/src/lib/libssl/src/ms/testssce.bat
@@ -1,104 +1,104 @@
1rem set ssleay=..\out\ssleay 1rem set ssleay=..\out\ssleay
2set ssleay=%1 2set ssleay=%1
3 3
4set reqcmd=%ssleay% req 4set reqcmd=%ssleay% req
5set x509cmd=%ssleay% x509 5set x509cmd=%ssleay% x509
6set verifycmd=%ssleay% verify 6set verifycmd=%ssleay% verify
7 7
8set CAkey=\OpenSSL\keyCA.ss 8set CAkey=\OpenSSL\keyCA.ss
9set CAcert=\OpenSSL\certCA.ss 9set CAcert=\OpenSSL\certCA.ss
10set CAserial=\OpenSSL\certCA.srl 10set CAserial=\OpenSSL\certCA.srl
11set CAreq=\OpenSSL\reqCA.ss 11set CAreq=\OpenSSL\reqCA.ss
12cecopy ..\test\CAss.cnf CE:\OpenSSL 12cecopy ..\test\CAss.cnf CE:\OpenSSL
13set CAconf=\OpenSSL\CAss.cnf 13set CAconf=\OpenSSL\CAss.cnf
14set CAreq2=\OpenSSL\req2CA.ss 14set CAreq2=\OpenSSL\req2CA.ss
15 15
16cecopy ..\test\Uss.cnf CE:\OpenSSL 16cecopy ..\test\Uss.cnf CE:\OpenSSL
17set Uconf=\OpenSSL\Uss.cnf 17set Uconf=\OpenSSL\Uss.cnf
18set Ukey=\OpenSSL\keyU.ss 18set Ukey=\OpenSSL\keyU.ss
19set Ureq=\OpenSSL\reqU.ss 19set Ureq=\OpenSSL\reqU.ss
20set Ucert=\OpenSSL\certU.ss 20set Ucert=\OpenSSL\certU.ss
21 21
22echo make a certificate request using 'req' 22echo make a certificate request using 'req'
23cerun CE:\OpenSSL\%reqcmd% -config %CAconf% -out %CAreq% -keyout %CAkey% -new 23cerun CE:\OpenSSL\%reqcmd% -config %CAconf% -out %CAreq% -keyout %CAkey% -new
24if errorlevel 1 goto e_req 24if errorlevel 1 goto e_req
25 25
26echo convert the certificate request into a self signed certificate using 'x509' 26echo convert the certificate request into a self signed certificate using 'x509'
27cerun CE:\OpenSSL\%x509cmd% -CAcreateserial -in %CAreq% -days 30 -req -out %CAcert% -signkey %CAkey% "> \OpenSSL\err.ss" 27cerun CE:\OpenSSL\%x509cmd% -CAcreateserial -in %CAreq% -days 30 -req -out %CAcert% -signkey %CAkey% "> \OpenSSL\err.ss"
28if errorlevel 1 goto e_x509 28if errorlevel 1 goto e_x509
29 29
30echo -- 30echo --
31echo convert a certificate into a certificate request using 'x509' 31echo convert a certificate into a certificate request using 'x509'
32cerun CE:\OpenSSL\%x509cmd% -in %CAcert% -x509toreq -signkey %CAkey% -out %CAreq2% "> \OpenSSL\err.ss" 32cerun CE:\OpenSSL\%x509cmd% -in %CAcert% -x509toreq -signkey %CAkey% -out %CAreq2% "> \OpenSSL\err.ss"
33if errorlevel 1 goto e_x509_2 33if errorlevel 1 goto e_x509_2
34 34
35cerun CE:\OpenSSL\%reqcmd% -verify -in %CAreq% -noout 35cerun CE:\OpenSSL\%reqcmd% -verify -in %CAreq% -noout
36if errorlevel 1 goto e_vrfy_1 36if errorlevel 1 goto e_vrfy_1
37 37
38cerun CE:\OpenSSL\%reqcmd% -verify -in %CAreq2% -noout 38cerun CE:\OpenSSL\%reqcmd% -verify -in %CAreq2% -noout
39if errorlevel 1 goto e_vrfy_2 39if errorlevel 1 goto e_vrfy_2
40 40
41cerun CE:\OpenSSL\%verifycmd% -CAfile %CAcert% %CAcert% 41cerun CE:\OpenSSL\%verifycmd% -CAfile %CAcert% %CAcert%
42if errorlevel 1 goto e_vrfy_3 42if errorlevel 1 goto e_vrfy_3
43 43
44echo -- 44echo --
45echo make another certificate request using 'req' 45echo make another certificate request using 'req'
46cerun CE:\OpenSSL\%reqcmd% -config %Uconf% -out %Ureq% -keyout %Ukey% -new "> \OpenSSL\err.ss" 46cerun CE:\OpenSSL\%reqcmd% -config %Uconf% -out %Ureq% -keyout %Ukey% -new "> \OpenSSL\err.ss"
47if errorlevel 1 goto e_req_gen 47if errorlevel 1 goto e_req_gen
48 48
49echo -- 49echo --
50echo sign certificate request with the just created CA via 'x509' 50echo sign certificate request with the just created CA via 'x509'
51cerun CE:\OpenSSL\%x509cmd% -CAcreateserial -in %Ureq% -days 30 -req -out %Ucert% -CA %CAcert% -CAkey %CAkey% -CAserial %CAserial% 51cerun CE:\OpenSSL\%x509cmd% -CAcreateserial -in %Ureq% -days 30 -req -out %Ucert% -CA %CAcert% -CAkey %CAkey% -CAserial %CAserial%
52if errorlevel 1 goto e_x_sign 52if errorlevel 1 goto e_x_sign
53 53
54cerun CE:\OpenSSL\%verifycmd% -CAfile %CAcert% %Ucert% 54cerun CE:\OpenSSL\%verifycmd% -CAfile %CAcert% %Ucert%
55echo -- 55echo --
56echo Certificate details 56echo Certificate details
57cerun CE:\OpenSSL\%x509cmd% -subject -issuer -startdate -enddate -noout -in %Ucert% 57cerun CE:\OpenSSL\%x509cmd% -subject -issuer -startdate -enddate -noout -in %Ucert%
58 58
59cecopy CE:%CAcert% . 59cecopy CE:%CAcert% .
60cecopy CE:%CAkey% . 60cecopy CE:%CAkey% .
61cecopy CE:%CAserial% . 61cecopy CE:%CAserial% .
62cecopy CE:%Ucert% . 62cecopy CE:%Ucert% .
63cecopy CE:%Ukey% . 63cecopy CE:%Ukey% .
64 64
65echo Everything appeared to work 65echo Everything appeared to work
66echo -- 66echo --
67echo The generated CA certificate is %CAcert% 67echo The generated CA certificate is %CAcert%
68echo The generated CA private key is %CAkey% 68echo The generated CA private key is %CAkey%
69echo The current CA signing serial number is in %CAserial% 69echo The current CA signing serial number is in %CAserial%
70 70
71echo The generated user certificate is %Ucert% 71echo The generated user certificate is %Ucert%
72echo The generated user private key is %Ukey% 72echo The generated user private key is %Ukey%
73echo -- 73echo --
74 74
75cedel CE:\OpenSSL\err.ss 75cedel CE:\OpenSSL\err.ss
76 76
77goto end 77goto end
78 78
79:e_req 79:e_req
80echo error using 'req' to generate a certificate request 80echo error using 'req' to generate a certificate request
81goto end 81goto end
82:e_x509 82:e_x509
83echo error using 'x509' to self sign a certificate request 83echo error using 'x509' to self sign a certificate request
84goto end 84goto end
85:e_x509_2 85:e_x509_2
86echo error using 'x509' convert a certificate to a certificate request 86echo error using 'x509' convert a certificate to a certificate request
87goto end 87goto end
88:e_vrfy_1 88:e_vrfy_1
89echo first generated request is invalid 89echo first generated request is invalid
90goto end 90goto end
91:e_vrfy_2 91:e_vrfy_2
92echo second generated request is invalid 92echo second generated request is invalid
93goto end 93goto end
94:e_vrfy_3 94:e_vrfy_3
95echo first generated cert is invalid 95echo first generated cert is invalid
96goto end 96goto end
97:e_req_gen 97:e_req_gen
98echo error using 'req' to generate a certificate request 98echo error using 'req' to generate a certificate request
99goto end 99goto end
100:e_x_sign 100:e_x_sign
101echo error using 'x509' to sign a certificate request 101echo error using 'x509' to sign a certificate request
102goto end 102goto end
103 103
104:end 104:end
diff --git a/src/lib/libssl/src/ms/tpem.bat b/src/lib/libssl/src/ms/tpem.bat
index 7fc7a83279..cd01792e9f 100644
--- a/src/lib/libssl/src/ms/tpem.bat
+++ b/src/lib/libssl/src/ms/tpem.bat
@@ -1,6 +1,6 @@
1rem called by testpem 1rem called by testpem
2 2
3echo test %1 %2 3echo test %1 %2
4%ssleay% %1 -in %2 -out %tmp1% 4%ssleay% %1 -in %2 -out %tmp1%
5%cmp% %2 %tmp1% 5%cmp% %2 %tmp1%
6 6
diff --git a/src/lib/libssl/src/ms/tpemce.bat b/src/lib/libssl/src/ms/tpemce.bat
index 17b2acd390..483f559cfa 100644
--- a/src/lib/libssl/src/ms/tpemce.bat
+++ b/src/lib/libssl/src/ms/tpemce.bat
@@ -1,8 +1,8 @@
1rem called by testpemce 1rem called by testpemce
2 2
3echo test %1 %2 3echo test %1 %2
4cecopy %2 CE:\OpenSSL 4cecopy %2 CE:\OpenSSL
5cerun CE:\OpenSSL\%ssleay% %1 -in \OpenSSL\%2 -out \OpenSSL\%tmp1% 5cerun CE:\OpenSSL\%ssleay% %1 -in \OpenSSL\%2 -out \OpenSSL\%tmp1%
6del %tmp1% >nul 2>&1 6del %tmp1% >nul 2>&1
7cecopy CE:\OpenSSL\%tmp1% . 7cecopy CE:\OpenSSL\%tmp1% .
8%cmp% %2 %tmp1% 8%cmp% %2 %tmp1%
diff --git a/src/lib/libssl/src/ms/uplink-common.pl b/src/lib/libssl/src/ms/uplink-common.pl
new file mode 100755
index 0000000000..1d20e6e03e
--- /dev/null
+++ b/src/lib/libssl/src/ms/uplink-common.pl
@@ -0,0 +1,22 @@
1#!/usr/bin/env perl
2#
3# pull APPLINK_MAX value from applink.c...
4$applink_c=$0;
5$applink_c=~s|[^/\\]+$||g;
6$applink_c.="applink.c";
7open(INPUT,$applink_c) || die "can't open $applink_c: $!";
8@max=grep {/APPLINK_MAX\s+(\d+)/} <INPUT>;
9close(INPUT);
10($#max==0) or die "can't find APPLINK_MAX in $applink_c";
11
12$max[0]=~/APPLINK_MAX\s+(\d+)/;
13$N=$1; # number of entries in OPENSSL_UplinkTable not including
14 # OPENSSL_UplinkTable[0], which contains this value...
15
161;
17
18# Idea is to fill the OPENSSL_UplinkTable with pointers to stubs
19# which invoke 'void OPENSSL_Uplink (ULONG_PTR *table,int index)';
20# and then dereference themselves. Latter shall result in endless
21# loop *unless* OPENSSL_Uplink does not replace 'table[index]' with
22# something else, e.g. as 'table[index]=unimplemented;'...
diff --git a/src/lib/libssl/src/ms/uplink-ia64.pl b/src/lib/libssl/src/ms/uplink-ia64.pl
new file mode 100755
index 0000000000..4204c73d58
--- /dev/null
+++ b/src/lib/libssl/src/ms/uplink-ia64.pl
@@ -0,0 +1,50 @@
1#!/usr/bin/env perl
2
3$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
4push(@INC,"${dir}.");
5
6require "uplink-common.pl";
7
8local $V=8; # max number of args uplink functions may accept...
9my $loc0 = "r".(32+$V);
10print <<___;
11.text
12.global OPENSSL_Uplink#
13.type OPENSSL_Uplink#,\@function
14
15___
16for ($i=1;$i<=$N;$i++) {
17print <<___;
18.proc lazy$i#
19lazy$i:
20 .prologue
21{ .mii; .save ar.pfs,$loc0
22 alloc loc0=ar.pfs,$V,3,2,0
23 .save b0,loc1
24 mov loc1=b0
25 addl loc2=\@ltoff(OPENSSL_UplinkTable#),gp };;
26 .body
27{ .mmi; ld8 out0=[loc2]
28 mov out1=$i };;
29{ .mib; add loc2=8*$i,out0
30 br.call.sptk.many b0=OPENSSL_Uplink# };;
31{ .mmi; ld8 r31=[loc2];;
32 ld8 r30=[r31],8 };;
33{ .mii; ld8 gp=[r31]
34 mov b6=r30
35 mov b0=loc1 };;
36{ .mib; mov ar.pfs=loc0
37 br.many b6 };;
38.endp lazy$i#
39
40___
41}
42print <<___;
43.data
44.global OPENSSL_UplinkTable#
45OPENSSL_UplinkTable: data8 $N // amount of following entries
46___
47for ($i=1;$i<=$N;$i++) { print " data8 \@fptr(lazy$i#)\n"; }
48print <<___;
49.size OPENSSL_UplinkTable,.-OPENSSL_UplinkTable#
50___
diff --git a/src/lib/libssl/src/ms/uplink-x86.pl b/src/lib/libssl/src/ms/uplink-x86.pl
new file mode 100755
index 0000000000..0dffc14fcd
--- /dev/null
+++ b/src/lib/libssl/src/ms/uplink-x86.pl
@@ -0,0 +1,33 @@
1#!/usr/bin/env perl
2
3$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
4push(@INC, "${dir}.", "${dir}../crypto/perlasm");
5require "x86asm.pl";
6
7require "uplink-common.pl";
8
9&asm_init($ARGV[0],"uplink-x86");
10
11&external_label("OPENSSL_Uplink");
12&public_label("OPENSSL_UplinkTable");
13
14for ($i=1;$i<=$N;$i++) {
15&function_begin_B("_\$lazy${i}");
16 &lea ("eax",&DWP(&label("OPENSSL_UplinkTable")));
17 &push ("eax");
18 &push ($i);
19 &call (&label("OPENSSL_Uplink"));
20 &add ("esp",8);
21 &pop ("eax");
22 &jmp_ptr(&DWP(4*$i,"eax"));
23&function_end_B("_\$lazy${i}");
24}
25
26&dataseg();
27&align(4);
28&set_label("OPENSSL_UplinkTable");
29&data_word($N);
30for ($i=1;$i<=$N;$i++) {
31&data_word(&label("_\$lazy${i}"));
32}
33&asm_finish();
diff --git a/src/lib/libssl/src/ms/uplink-x86_64.pl b/src/lib/libssl/src/ms/uplink-x86_64.pl
new file mode 100755
index 0000000000..9acbf6be6f
--- /dev/null
+++ b/src/lib/libssl/src/ms/uplink-x86_64.pl
@@ -0,0 +1,64 @@
1#!/usr/bin/env perl
2
3$output=shift;
4$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
5open STDOUT,"| $^X ${dir}../crypto/perlasm/x86_64-xlate.pl $output";
6push(@INC,"${dir}.");
7
8require "uplink-common.pl";
9
10$prefix="_lazy";
11
12print <<___;
13.text
14.extern OPENSSL_Uplink
15.globl OPENSSL_UplinkTable
16___
17for ($i=1;$i<=$N;$i++) {
18print <<___;
19.type $prefix${i},\@abi-omnipotent
20.align 16
21$prefix${i}:
22 .byte 0x48,0x83,0xEC,0x28 # sub rsp,40
23 mov %rcx,48(%rsp)
24 mov %rdx,56(%rsp)
25 mov %r8,64(%rsp)
26 mov %r9,72(%rsp)
27 lea OPENSSL_UplinkTable(%rip),%rcx
28 mov \$$i,%rdx
29 call OPENSSL_Uplink
30 mov 48(%rsp),%rcx
31 mov 56(%rsp),%rdx
32 mov 64(%rsp),%r8
33 mov 72(%rsp),%r9
34 lea OPENSSL_UplinkTable(%rip),%rax
35 add \$40,%rsp
36 jmp *8*$i(%rax)
37$prefix${i}_end:
38.size $prefix${i},.-$prefix${i}
39___
40}
41print <<___;
42.data
43OPENSSL_UplinkTable:
44 .quad $N
45___
46for ($i=1;$i<=$N;$i++) { print " .quad $prefix$i\n"; }
47print <<___;
48.section .pdata,"r"
49.align 4
50___
51for ($i=1;$i<=$N;$i++) {
52print <<___;
53 .rva $prefix${i},$prefix${i}_end,${prefix}_unwind_info
54___
55}
56print <<___;
57.section .xdata,"r"
58.align 8
59${prefix}_unwind_info:
60 .byte 0x01,0x04,0x01,0x00
61 .byte 0x04,0x42,0x00,0x00
62___
63
64close STDOUT;
diff --git a/src/lib/libssl/src/ms/x86asm.bat b/src/lib/libssl/src/ms/x86asm.bat
index ba26637812..03563c6b04 100644
--- a/src/lib/libssl/src/ms/x86asm.bat
+++ b/src/lib/libssl/src/ms/x86asm.bat
@@ -1,63 +1,57 @@
1 1
2@echo off 2@echo off
3echo Generating x86 assember
4
3echo Bignum 5echo Bignum
4cd crypto\bn\asm 6cd crypto\bn\asm
5perl x86.pl %1 > bn%2 7perl x86.pl win32n > bn-win32.asm
6perl bn-586.pl %1 > bn%2
7perl co-586.pl %1 > co%2
8cd ..\..\.. 8cd ..\..\..
9 9
10echo DES 10echo DES
11cd crypto\des\asm 11cd crypto\des\asm
12perl des-586.pl %1 > d%2 12perl des-586.pl win32n > d-win32.asm
13cd ..\..\.. 13cd ..\..\..
14 14
15echo "crypt(3)" 15echo "crypt(3)"
16 16
17cd crypto\des\asm 17cd crypto\des\asm
18perl crypt586.pl %1 > y%2 18perl crypt586.pl win32n > y-win32.asm
19cd ..\..\.. 19cd ..\..\..
20 20
21echo Blowfish 21echo Blowfish
22 22
23cd crypto\bf\asm 23cd crypto\bf\asm
24perl bf-586.pl %1 > b%2 24perl bf-586.pl win32n > b-win32.asm
25cd ..\..\.. 25cd ..\..\..
26 26
27echo CAST5 27echo CAST5
28cd crypto\cast\asm 28cd crypto\cast\asm
29perl cast-586.pl %1 > c%2 29perl cast-586.pl win32n > c-win32.asm
30cd ..\..\.. 30cd ..\..\..
31 31
32echo RC4 32echo RC4
33cd crypto\rc4\asm 33cd crypto\rc4\asm
34perl rc4-586.pl %1 > r4%2 34perl rc4-586.pl win32n > r4-win32.asm
35cd ..\..\.. 35cd ..\..\..
36 36
37echo MD5 37echo MD5
38cd crypto\md5\asm 38cd crypto\md5\asm
39perl md5-586.pl %1 > m5%2 39perl md5-586.pl win32n > m5-win32.asm
40cd ..\..\.. 40cd ..\..\..
41 41
42echo SHA1 42echo SHA1
43cd crypto\sha\asm 43cd crypto\sha\asm
44perl sha1-586.pl %1 > s1%2 44perl sha1-586.pl win32n > s1-win32.asm
45cd ..\..\.. 45cd ..\..\..
46 46
47echo RIPEMD160 47echo RIPEMD160
48cd crypto\ripemd\asm 48cd crypto\ripemd\asm
49perl rmd-586.pl %1 > rm%2 49perl rmd-586.pl win32n > rm-win32.asm
50cd ..\..\.. 50cd ..\..\..
51 51
52echo RC5\32 52echo RC5\32
53cd crypto\rc5\asm 53cd crypto\rc5\asm
54perl rc5-586.pl %1 > r5%2 54perl rc5-586.pl win32n > r5-win32.asm
55cd ..\..\.. 55cd ..\..\..
56 56
57echo CPUID
58cd crypto
59perl x86cpuid.pl %1 > x86cpuid%2
60cd ..\
61
62
63echo on 57echo on
diff --git a/src/lib/libssl/src/openssl.spec b/src/lib/libssl/src/openssl.spec
index 329e3925b7..bed337b638 100644
--- a/src/lib/libssl/src/openssl.spec
+++ b/src/lib/libssl/src/openssl.spec
@@ -1,15 +1,16 @@
1%define libmaj 0 1%define _unpackaged_files_terminate_build 0
2%define libmin 9 2%define libmaj 1
3%define librel 8 3%define libmin 0
4%define librev k 4%define librel 0
5%define librev a
5Release: 1 6Release: 1
6 7
7%define openssldir /var/ssl 8%define openssldir /var/ssl
8 9
9Summary: Secure Sockets Layer and cryptography libraries and tools 10Summary: Secure Sockets Layer and cryptography libraries and tools
10Name: openssl 11Name: openssl
11#Version: %{libmaj}.%{libmin}.%{librel} 12Version: %{libmaj}.%{libmin}.%{librel}
12Version: %{libmaj}.%{libmin}.%{librel}%{librev} 13#Version: %{libmaj}.%{libmin}.%{librel}%{librev}
13Source0: ftp://ftp.openssl.org/source/%{name}-%{version}.tar.gz 14Source0: ftp://ftp.openssl.org/source/%{name}-%{version}.tar.gz
14Copyright: Freely distributable 15Copyright: Freely distributable
15Group: System Environment/Libraries 16Group: System Environment/Libraries
@@ -96,6 +97,9 @@ perl util/perlpath.pl /usr/bin/perl
96%ifarch alpha 97%ifarch alpha
97./Configure %{CONFIG_FLAGS} linux-alpha shared 98./Configure %{CONFIG_FLAGS} linux-alpha shared
98%endif 99%endif
100%ifarch x86_64
101./Configure %{CONFIG_FLAGS} linux-x86_64 shared
102%endif
99LD_LIBRARY_PATH=`pwd` make 103LD_LIBRARY_PATH=`pwd` make
100LD_LIBRARY_PATH=`pwd` make rehash 104LD_LIBRARY_PATH=`pwd` make rehash
101LD_LIBRARY_PATH=`pwd` make test 105LD_LIBRARY_PATH=`pwd` make test
diff --git a/src/lib/libssl/src/shlib/win32.bat b/src/lib/libssl/src/shlib/win32.bat
index c807a99d35..2b0faaa17b 100644
--- a/src/lib/libssl/src/shlib/win32.bat
+++ b/src/lib/libssl/src/shlib/win32.bat
@@ -14,5 +14,5 @@ cl /Focrypto.obj -DWIN32 %OPTIONS% -c crypto\crypto.c
14cl /Fossl.obj -DWIN32 %OPTIONS% -c ssl\ssl.c 14cl /Fossl.obj -DWIN32 %OPTIONS% -c ssl\ssl.c
15cl /Foeay.obj -DWIN32 %OPTIONS% -c apps\eay.c 15cl /Foeay.obj -DWIN32 %OPTIONS% -c apps\eay.c
16 16
17cl /Fessleay.exe %OPTIONS% eay.obj ssl.obj crypto.obj crypto\bf\asm\b-win32.obj crypto\des\asm\c-win32.obj crypto\des\asm\d-win32.obj crypto\bn\asm\x86nt32.obj user32.lib gdi32.lib wsock32.lib 17cl /Fessleay.exe %OPTIONS% eay.obj ssl.obj crypto.obj crypto\bf\asm\b-win32.obj crypto\des\asm\c-win32.obj crypto\des\asm\d-win32.obj crypto\bn\asm\x86nt32.obj user32.lib gdi32.lib ws2_32.lib
18 18
diff --git a/src/lib/libssl/src/shlib/win32dll.bat b/src/lib/libssl/src/shlib/win32dll.bat
index 294c94c81c..844e3537c8 100644
--- a/src/lib/libssl/src/shlib/win32dll.bat
+++ b/src/lib/libssl/src/shlib/win32dll.bat
@@ -5,9 +5,9 @@ set OPTIONS2=/W3 /WX /Ox /Gf /nologo
5 5
6set OPTIONS=%OPTIONS1% %OPTIONS2% 6set OPTIONS=%OPTIONS1% %OPTIONS2%
7 7
8cl /Felibeay32.dll /GD /MD /LD -DWIN32 %OPTIONS% ms\libeay32.def crypto\crypto.c crypto\bf\asm\b-win32.obj crypto\des\asm\c-win32.obj crypto\des\asm\d-win32.obj crypto\bn\asm\x86nt32.obj user32.lib gdi32.lib wsock32.lib 8cl /Felibeay32.dll /GD /MD /LD -DWIN32 %OPTIONS% ms\libeay32.def crypto\crypto.c crypto\bf\asm\b-win32.obj crypto\des\asm\c-win32.obj crypto\des\asm\d-win32.obj crypto\bn\asm\x86nt32.obj user32.lib gdi32.lib ws2_32.lib
9 9
10cl /Fessleay32.dll /GD /MD /LD -DWIN32 %OPTIONS% ms\ssleay32.def ssl\ssl.c libeay32.lib 10cl /Fessleay32.dll /GD /MD /LD -DWIN32 %OPTIONS% ms\ssleay32.def ssl\ssl.c libeay32.lib
11 11
12cl /Fessleay.exe /MD -DWIN32 %OPTIONS% apps\eay.c ssleay32.lib libeay32.lib user32.lib wsock32.lib 12cl /Fessleay.exe /MD -DWIN32 %OPTIONS% apps\eay.c ssleay32.lib libeay32.lib user32.lib ws2_32.lib
13 13
diff --git a/src/lib/libssl/src/ssl/Makefile b/src/lib/libssl/src/ssl/Makefile
index 46c06597fa..2b275faf6a 100644
--- a/src/lib/libssl/src/ssl/Makefile
+++ b/src/lib/libssl/src/ssl/Makefile
@@ -30,7 +30,7 @@ LIBSRC= \
30 ssl_lib.c ssl_err2.c ssl_cert.c ssl_sess.c \ 30 ssl_lib.c ssl_err2.c ssl_cert.c ssl_sess.c \
31 ssl_ciph.c ssl_stat.c ssl_rsa.c \ 31 ssl_ciph.c ssl_stat.c ssl_rsa.c \
32 ssl_asn1.c ssl_txt.c ssl_algs.c \ 32 ssl_asn1.c ssl_txt.c ssl_algs.c \
33 bio_ssl.c ssl_err.c kssl.c 33 bio_ssl.c ssl_err.c kssl.c t1_reneg.c
34LIBOBJ= \ 34LIBOBJ= \
35 s2_meth.o s2_srvr.o s2_clnt.o s2_lib.o s2_enc.o s2_pkt.o \ 35 s2_meth.o s2_srvr.o s2_clnt.o s2_lib.o s2_enc.o s2_pkt.o \
36 s3_meth.o s3_srvr.o s3_clnt.o s3_lib.o s3_enc.o s3_pkt.o s3_both.o \ 36 s3_meth.o s3_srvr.o s3_clnt.o s3_lib.o s3_enc.o s3_pkt.o s3_both.o \
@@ -41,7 +41,7 @@ LIBOBJ= \
41 ssl_lib.o ssl_err2.o ssl_cert.o ssl_sess.o \ 41 ssl_lib.o ssl_err2.o ssl_cert.o ssl_sess.o \
42 ssl_ciph.o ssl_stat.o ssl_rsa.o \ 42 ssl_ciph.o ssl_stat.o ssl_rsa.o \
43 ssl_asn1.o ssl_txt.o ssl_algs.o \ 43 ssl_asn1.o ssl_txt.o ssl_algs.o \
44 bio_ssl.o ssl_err.o kssl.o 44 bio_ssl.o ssl_err.o kssl.o t1_reneg.o
45 45
46SRC= $(LIBSRC) 46SRC= $(LIBSRC)
47 47
@@ -53,7 +53,7 @@ ALL= $(GENERAL) $(SRC) $(HEADER)
53top: 53top:
54 (cd ..; $(MAKE) DIRS=$(DIR) all) 54 (cd ..; $(MAKE) DIRS=$(DIR) all)
55 55
56all: lib 56all: shared
57 57
58lib: $(LIBOBJ) 58lib: $(LIBOBJ)
59 $(AR) $(LIB) $(LIBOBJ) 59 $(AR) $(LIB) $(LIBOBJ)
@@ -106,45 +106,43 @@ clean:
106# DO NOT DELETE THIS LINE -- make depend depends on it. 106# DO NOT DELETE THIS LINE -- make depend depends on it.
107 107
108bio_ssl.o: ../include/openssl/asn1.h ../include/openssl/bio.h 108bio_ssl.o: ../include/openssl/asn1.h ../include/openssl/bio.h
109bio_ssl.o: ../include/openssl/bn.h ../include/openssl/buffer.h 109bio_ssl.o: ../include/openssl/buffer.h ../include/openssl/comp.h
110bio_ssl.o: ../include/openssl/comp.h ../include/openssl/crypto.h 110bio_ssl.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
111bio_ssl.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h 111bio_ssl.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
112bio_ssl.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 112bio_ssl.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
113bio_ssl.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 113bio_ssl.o: ../include/openssl/err.h ../include/openssl/evp.h
114bio_ssl.o: ../include/openssl/evp.h ../include/openssl/fips.h
115bio_ssl.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 114bio_ssl.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
116bio_ssl.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 115bio_ssl.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
117bio_ssl.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 116bio_ssl.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
118bio_ssl.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 117bio_ssl.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
119bio_ssl.o: ../include/openssl/pem.h ../include/openssl/pem2.h 118bio_ssl.o: ../include/openssl/pem.h ../include/openssl/pem2.h
120bio_ssl.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h 119bio_ssl.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
121bio_ssl.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h 120bio_ssl.o: ../include/openssl/safestack.h ../include/openssl/sha.h
122bio_ssl.o: ../include/openssl/sha.h ../include/openssl/ssl.h 121bio_ssl.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
123bio_ssl.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 122bio_ssl.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
124bio_ssl.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 123bio_ssl.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
125bio_ssl.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 124bio_ssl.o: ../include/openssl/tls1.h ../include/openssl/x509.h
126bio_ssl.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h bio_ssl.c 125bio_ssl.o: ../include/openssl/x509_vfy.h bio_ssl.c
127d1_both.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 126d1_both.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
128d1_both.o: ../include/openssl/bn.h ../include/openssl/buffer.h 127d1_both.o: ../include/openssl/buffer.h ../include/openssl/comp.h
129d1_both.o: ../include/openssl/comp.h ../include/openssl/crypto.h 128d1_both.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
130d1_both.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 129d1_both.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
131d1_both.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 130d1_both.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
132d1_both.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 131d1_both.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
133d1_both.o: ../include/openssl/err.h ../include/openssl/evp.h 132d1_both.o: ../include/openssl/evp.h ../include/openssl/hmac.h
134d1_both.o: ../include/openssl/fips.h ../include/openssl/hmac.h
135d1_both.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 133d1_both.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
136d1_both.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 134d1_both.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
137d1_both.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 135d1_both.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
138d1_both.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 136d1_both.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
139d1_both.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 137d1_both.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
140d1_both.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 138d1_both.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
141d1_both.o: ../include/openssl/rand.h ../include/openssl/rsa.h 139d1_both.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
142d1_both.o: ../include/openssl/safestack.h ../include/openssl/sha.h 140d1_both.o: ../include/openssl/sha.h ../include/openssl/ssl.h
143d1_both.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 141d1_both.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
144d1_both.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 142d1_both.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
145d1_both.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 143d1_both.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
146d1_both.o: ../include/openssl/tls1.h ../include/openssl/x509.h 144d1_both.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h d1_both.c
147d1_both.o: ../include/openssl/x509_vfy.h d1_both.c ssl_locl.h 145d1_both.o: ssl_locl.h
148d1_clnt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 146d1_clnt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
149d1_clnt.o: ../include/openssl/bn.h ../include/openssl/buffer.h 147d1_clnt.o: ../include/openssl/bn.h ../include/openssl/buffer.h
150d1_clnt.o: ../include/openssl/comp.h ../include/openssl/crypto.h 148d1_clnt.o: ../include/openssl/comp.h ../include/openssl/crypto.h
@@ -152,14 +150,13 @@ d1_clnt.o: ../include/openssl/dh.h ../include/openssl/dsa.h
152d1_clnt.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h 150d1_clnt.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
153d1_clnt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 151d1_clnt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
154d1_clnt.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 152d1_clnt.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
155d1_clnt.o: ../include/openssl/evp.h ../include/openssl/fips.h 153d1_clnt.o: ../include/openssl/evp.h ../include/openssl/hmac.h
156d1_clnt.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 154d1_clnt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
157d1_clnt.o: ../include/openssl/lhash.h ../include/openssl/md5.h 155d1_clnt.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h
158d1_clnt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 156d1_clnt.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
159d1_clnt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 157d1_clnt.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
160d1_clnt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 158d1_clnt.o: ../include/openssl/pem.h ../include/openssl/pem2.h
161d1_clnt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 159d1_clnt.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
162d1_clnt.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
163d1_clnt.o: ../include/openssl/rand.h ../include/openssl/rsa.h 160d1_clnt.o: ../include/openssl/rand.h ../include/openssl/rsa.h
164d1_clnt.o: ../include/openssl/safestack.h ../include/openssl/sha.h 161d1_clnt.o: ../include/openssl/safestack.h ../include/openssl/sha.h
165d1_clnt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 162d1_clnt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
@@ -168,90 +165,83 @@ d1_clnt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
168d1_clnt.o: ../include/openssl/tls1.h ../include/openssl/x509.h 165d1_clnt.o: ../include/openssl/tls1.h ../include/openssl/x509.h
169d1_clnt.o: ../include/openssl/x509_vfy.h d1_clnt.c kssl_lcl.h ssl_locl.h 166d1_clnt.o: ../include/openssl/x509_vfy.h d1_clnt.c kssl_lcl.h ssl_locl.h
170d1_enc.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 167d1_enc.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
171d1_enc.o: ../include/openssl/bn.h ../include/openssl/buffer.h 168d1_enc.o: ../include/openssl/buffer.h ../include/openssl/comp.h
172d1_enc.o: ../include/openssl/comp.h ../include/openssl/crypto.h 169d1_enc.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
173d1_enc.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 170d1_enc.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
174d1_enc.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 171d1_enc.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
175d1_enc.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 172d1_enc.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
176d1_enc.o: ../include/openssl/err.h ../include/openssl/evp.h 173d1_enc.o: ../include/openssl/evp.h ../include/openssl/hmac.h
177d1_enc.o: ../include/openssl/fips.h ../include/openssl/hmac.h
178d1_enc.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 174d1_enc.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
179d1_enc.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h 175d1_enc.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h
180d1_enc.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 176d1_enc.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
181d1_enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 177d1_enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
182d1_enc.o: ../include/openssl/pem.h ../include/openssl/pem2.h 178d1_enc.o: ../include/openssl/pem.h ../include/openssl/pem2.h
183d1_enc.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h 179d1_enc.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
184d1_enc.o: ../include/openssl/pqueue.h ../include/openssl/rand.h 180d1_enc.o: ../include/openssl/rand.h ../include/openssl/rsa.h
185d1_enc.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 181d1_enc.o: ../include/openssl/safestack.h ../include/openssl/sha.h
186d1_enc.o: ../include/openssl/sha.h ../include/openssl/ssl.h 182d1_enc.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
187d1_enc.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 183d1_enc.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
188d1_enc.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 184d1_enc.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
189d1_enc.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 185d1_enc.o: ../include/openssl/tls1.h ../include/openssl/x509.h
190d1_enc.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h d1_enc.c 186d1_enc.o: ../include/openssl/x509_vfy.h d1_enc.c ssl_locl.h
191d1_enc.o: ssl_locl.h
192d1_lib.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 187d1_lib.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
193d1_lib.o: ../include/openssl/bn.h ../include/openssl/buffer.h 188d1_lib.o: ../include/openssl/buffer.h ../include/openssl/comp.h
194d1_lib.o: ../include/openssl/comp.h ../include/openssl/crypto.h 189d1_lib.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
195d1_lib.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 190d1_lib.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
196d1_lib.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 191d1_lib.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
197d1_lib.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 192d1_lib.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
198d1_lib.o: ../include/openssl/err.h ../include/openssl/evp.h 193d1_lib.o: ../include/openssl/evp.h ../include/openssl/hmac.h
199d1_lib.o: ../include/openssl/fips.h ../include/openssl/hmac.h
200d1_lib.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 194d1_lib.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
201d1_lib.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 195d1_lib.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
202d1_lib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 196d1_lib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
203d1_lib.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 197d1_lib.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
204d1_lib.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 198d1_lib.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
205d1_lib.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 199d1_lib.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
206d1_lib.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 200d1_lib.o: ../include/openssl/safestack.h ../include/openssl/sha.h
207d1_lib.o: ../include/openssl/sha.h ../include/openssl/ssl.h 201d1_lib.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
208d1_lib.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 202d1_lib.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
209d1_lib.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 203d1_lib.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
210d1_lib.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 204d1_lib.o: ../include/openssl/tls1.h ../include/openssl/x509.h
211d1_lib.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h d1_lib.c 205d1_lib.o: ../include/openssl/x509_vfy.h d1_lib.c ssl_locl.h
212d1_lib.o: ssl_locl.h
213d1_meth.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 206d1_meth.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
214d1_meth.o: ../include/openssl/bn.h ../include/openssl/buffer.h 207d1_meth.o: ../include/openssl/buffer.h ../include/openssl/comp.h
215d1_meth.o: ../include/openssl/comp.h ../include/openssl/crypto.h 208d1_meth.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
216d1_meth.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 209d1_meth.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
217d1_meth.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 210d1_meth.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
218d1_meth.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 211d1_meth.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
219d1_meth.o: ../include/openssl/err.h ../include/openssl/evp.h 212d1_meth.o: ../include/openssl/evp.h ../include/openssl/hmac.h
220d1_meth.o: ../include/openssl/fips.h ../include/openssl/hmac.h
221d1_meth.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 213d1_meth.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
222d1_meth.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 214d1_meth.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
223d1_meth.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 215d1_meth.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
224d1_meth.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 216d1_meth.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
225d1_meth.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 217d1_meth.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
226d1_meth.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 218d1_meth.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
227d1_meth.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 219d1_meth.o: ../include/openssl/safestack.h ../include/openssl/sha.h
228d1_meth.o: ../include/openssl/sha.h ../include/openssl/ssl.h 220d1_meth.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
229d1_meth.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 221d1_meth.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
230d1_meth.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 222d1_meth.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
231d1_meth.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 223d1_meth.o: ../include/openssl/tls1.h ../include/openssl/x509.h
232d1_meth.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h d1_meth.c 224d1_meth.o: ../include/openssl/x509_vfy.h d1_meth.c ssl_locl.h
233d1_meth.o: ssl_locl.h
234d1_pkt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 225d1_pkt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
235d1_pkt.o: ../include/openssl/bn.h ../include/openssl/buffer.h 226d1_pkt.o: ../include/openssl/buffer.h ../include/openssl/comp.h
236d1_pkt.o: ../include/openssl/comp.h ../include/openssl/crypto.h 227d1_pkt.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
237d1_pkt.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 228d1_pkt.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
238d1_pkt.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 229d1_pkt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
239d1_pkt.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 230d1_pkt.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
240d1_pkt.o: ../include/openssl/err.h ../include/openssl/evp.h 231d1_pkt.o: ../include/openssl/evp.h ../include/openssl/hmac.h
241d1_pkt.o: ../include/openssl/fips.h ../include/openssl/hmac.h
242d1_pkt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 232d1_pkt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
243d1_pkt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 233d1_pkt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
244d1_pkt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 234d1_pkt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
245d1_pkt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 235d1_pkt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
246d1_pkt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 236d1_pkt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
247d1_pkt.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 237d1_pkt.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
248d1_pkt.o: ../include/openssl/rand.h ../include/openssl/rsa.h 238d1_pkt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
249d1_pkt.o: ../include/openssl/safestack.h ../include/openssl/sha.h 239d1_pkt.o: ../include/openssl/sha.h ../include/openssl/ssl.h
250d1_pkt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 240d1_pkt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
251d1_pkt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 241d1_pkt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
252d1_pkt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 242d1_pkt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
253d1_pkt.o: ../include/openssl/tls1.h ../include/openssl/x509.h 243d1_pkt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h d1_pkt.c
254d1_pkt.o: ../include/openssl/x509_vfy.h d1_pkt.c ssl_locl.h 244d1_pkt.o: ssl_locl.h
255d1_srvr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 245d1_srvr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
256d1_srvr.o: ../include/openssl/bn.h ../include/openssl/buffer.h 246d1_srvr.o: ../include/openssl/bn.h ../include/openssl/buffer.h
257d1_srvr.o: ../include/openssl/comp.h ../include/openssl/crypto.h 247d1_srvr.o: ../include/openssl/comp.h ../include/openssl/crypto.h
@@ -259,14 +249,13 @@ d1_srvr.o: ../include/openssl/dh.h ../include/openssl/dsa.h
259d1_srvr.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h 249d1_srvr.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
260d1_srvr.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 250d1_srvr.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
261d1_srvr.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 251d1_srvr.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
262d1_srvr.o: ../include/openssl/evp.h ../include/openssl/fips.h 252d1_srvr.o: ../include/openssl/evp.h ../include/openssl/hmac.h
263d1_srvr.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 253d1_srvr.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
264d1_srvr.o: ../include/openssl/lhash.h ../include/openssl/md5.h 254d1_srvr.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h
265d1_srvr.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 255d1_srvr.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
266d1_srvr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 256d1_srvr.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
267d1_srvr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 257d1_srvr.o: ../include/openssl/pem.h ../include/openssl/pem2.h
268d1_srvr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 258d1_srvr.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
269d1_srvr.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
270d1_srvr.o: ../include/openssl/rand.h ../include/openssl/rsa.h 259d1_srvr.o: ../include/openssl/rand.h ../include/openssl/rsa.h
271d1_srvr.o: ../include/openssl/safestack.h ../include/openssl/sha.h 260d1_srvr.o: ../include/openssl/safestack.h ../include/openssl/sha.h
272d1_srvr.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 261d1_srvr.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
@@ -275,276 +264,257 @@ d1_srvr.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
275d1_srvr.o: ../include/openssl/tls1.h ../include/openssl/x509.h 264d1_srvr.o: ../include/openssl/tls1.h ../include/openssl/x509.h
276d1_srvr.o: ../include/openssl/x509_vfy.h d1_srvr.c ssl_locl.h 265d1_srvr.o: ../include/openssl/x509_vfy.h d1_srvr.c ssl_locl.h
277kssl.o: ../include/openssl/asn1.h ../include/openssl/bio.h 266kssl.o: ../include/openssl/asn1.h ../include/openssl/bio.h
278kssl.o: ../include/openssl/bn.h ../include/openssl/buffer.h 267kssl.o: ../include/openssl/buffer.h ../include/openssl/comp.h
279kssl.o: ../include/openssl/comp.h ../include/openssl/crypto.h 268kssl.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
280kssl.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h 269kssl.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
281kssl.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 270kssl.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
282kssl.o: ../include/openssl/ecdsa.h ../include/openssl/evp.h 271kssl.o: ../include/openssl/evp.h ../include/openssl/hmac.h
283kssl.o: ../include/openssl/fips.h ../include/openssl/hmac.h
284kssl.o: ../include/openssl/krb5_asn.h ../include/openssl/kssl.h 272kssl.o: ../include/openssl/krb5_asn.h ../include/openssl/kssl.h
285kssl.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 273kssl.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
286kssl.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 274kssl.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
287kssl.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 275kssl.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
288kssl.o: ../include/openssl/pem.h ../include/openssl/pem2.h 276kssl.o: ../include/openssl/pem.h ../include/openssl/pem2.h
289kssl.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h 277kssl.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
290kssl.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h 278kssl.o: ../include/openssl/safestack.h ../include/openssl/sha.h
291kssl.o: ../include/openssl/sha.h ../include/openssl/ssl.h 279kssl.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
292kssl.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 280kssl.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
293kssl.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 281kssl.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
294kssl.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 282kssl.o: ../include/openssl/tls1.h ../include/openssl/x509.h
295kssl.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h kssl.c 283kssl.o: ../include/openssl/x509_vfy.h kssl.c kssl_lcl.h
296s23_clnt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 284s23_clnt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
297s23_clnt.o: ../include/openssl/bn.h ../include/openssl/buffer.h 285s23_clnt.o: ../include/openssl/buffer.h ../include/openssl/comp.h
298s23_clnt.o: ../include/openssl/comp.h ../include/openssl/crypto.h 286s23_clnt.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
299s23_clnt.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 287s23_clnt.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
300s23_clnt.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 288s23_clnt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
301s23_clnt.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 289s23_clnt.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
302s23_clnt.o: ../include/openssl/err.h ../include/openssl/evp.h 290s23_clnt.o: ../include/openssl/evp.h ../include/openssl/hmac.h
303s23_clnt.o: ../include/openssl/fips.h ../include/openssl/hmac.h
304s23_clnt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 291s23_clnt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
305s23_clnt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 292s23_clnt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
306s23_clnt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 293s23_clnt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
307s23_clnt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 294s23_clnt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
308s23_clnt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 295s23_clnt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
309s23_clnt.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 296s23_clnt.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
310s23_clnt.o: ../include/openssl/rand.h ../include/openssl/rsa.h 297s23_clnt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
311s23_clnt.o: ../include/openssl/safestack.h ../include/openssl/sha.h 298s23_clnt.o: ../include/openssl/sha.h ../include/openssl/ssl.h
312s23_clnt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 299s23_clnt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
313s23_clnt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 300s23_clnt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
314s23_clnt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 301s23_clnt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
315s23_clnt.o: ../include/openssl/tls1.h ../include/openssl/x509.h 302s23_clnt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s23_clnt.c
316s23_clnt.o: ../include/openssl/x509_vfy.h s23_clnt.c ssl_locl.h 303s23_clnt.o: ssl_locl.h
317s23_lib.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 304s23_lib.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
318s23_lib.o: ../include/openssl/bn.h ../include/openssl/buffer.h 305s23_lib.o: ../include/openssl/buffer.h ../include/openssl/comp.h
319s23_lib.o: ../include/openssl/comp.h ../include/openssl/crypto.h 306s23_lib.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
320s23_lib.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 307s23_lib.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
321s23_lib.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 308s23_lib.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
322s23_lib.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 309s23_lib.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
323s23_lib.o: ../include/openssl/err.h ../include/openssl/evp.h 310s23_lib.o: ../include/openssl/evp.h ../include/openssl/hmac.h
324s23_lib.o: ../include/openssl/fips.h ../include/openssl/hmac.h
325s23_lib.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 311s23_lib.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
326s23_lib.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 312s23_lib.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
327s23_lib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 313s23_lib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
328s23_lib.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 314s23_lib.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
329s23_lib.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 315s23_lib.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
330s23_lib.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 316s23_lib.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
331s23_lib.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 317s23_lib.o: ../include/openssl/safestack.h ../include/openssl/sha.h
332s23_lib.o: ../include/openssl/sha.h ../include/openssl/ssl.h 318s23_lib.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
333s23_lib.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 319s23_lib.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
334s23_lib.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 320s23_lib.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
335s23_lib.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 321s23_lib.o: ../include/openssl/tls1.h ../include/openssl/x509.h
336s23_lib.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s23_lib.c 322s23_lib.o: ../include/openssl/x509_vfy.h s23_lib.c ssl_locl.h
337s23_lib.o: ssl_locl.h
338s23_meth.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 323s23_meth.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
339s23_meth.o: ../include/openssl/bn.h ../include/openssl/buffer.h 324s23_meth.o: ../include/openssl/buffer.h ../include/openssl/comp.h
340s23_meth.o: ../include/openssl/comp.h ../include/openssl/crypto.h 325s23_meth.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
341s23_meth.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 326s23_meth.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
342s23_meth.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 327s23_meth.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
343s23_meth.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 328s23_meth.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
344s23_meth.o: ../include/openssl/err.h ../include/openssl/evp.h 329s23_meth.o: ../include/openssl/evp.h ../include/openssl/hmac.h
345s23_meth.o: ../include/openssl/fips.h ../include/openssl/hmac.h
346s23_meth.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 330s23_meth.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
347s23_meth.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 331s23_meth.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
348s23_meth.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 332s23_meth.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
349s23_meth.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 333s23_meth.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
350s23_meth.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 334s23_meth.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
351s23_meth.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 335s23_meth.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
352s23_meth.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 336s23_meth.o: ../include/openssl/safestack.h ../include/openssl/sha.h
353s23_meth.o: ../include/openssl/sha.h ../include/openssl/ssl.h 337s23_meth.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
354s23_meth.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 338s23_meth.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
355s23_meth.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 339s23_meth.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
356s23_meth.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 340s23_meth.o: ../include/openssl/tls1.h ../include/openssl/x509.h
357s23_meth.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s23_meth.c 341s23_meth.o: ../include/openssl/x509_vfy.h s23_meth.c ssl_locl.h
358s23_meth.o: ssl_locl.h
359s23_pkt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 342s23_pkt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
360s23_pkt.o: ../include/openssl/bn.h ../include/openssl/buffer.h 343s23_pkt.o: ../include/openssl/buffer.h ../include/openssl/comp.h
361s23_pkt.o: ../include/openssl/comp.h ../include/openssl/crypto.h 344s23_pkt.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
362s23_pkt.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 345s23_pkt.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
363s23_pkt.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 346s23_pkt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
364s23_pkt.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 347s23_pkt.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
365s23_pkt.o: ../include/openssl/err.h ../include/openssl/evp.h 348s23_pkt.o: ../include/openssl/evp.h ../include/openssl/hmac.h
366s23_pkt.o: ../include/openssl/fips.h ../include/openssl/hmac.h
367s23_pkt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 349s23_pkt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
368s23_pkt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 350s23_pkt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
369s23_pkt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 351s23_pkt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
370s23_pkt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 352s23_pkt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
371s23_pkt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 353s23_pkt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
372s23_pkt.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 354s23_pkt.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
373s23_pkt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 355s23_pkt.o: ../include/openssl/safestack.h ../include/openssl/sha.h
374s23_pkt.o: ../include/openssl/sha.h ../include/openssl/ssl.h 356s23_pkt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
375s23_pkt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 357s23_pkt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
376s23_pkt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 358s23_pkt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
377s23_pkt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 359s23_pkt.o: ../include/openssl/tls1.h ../include/openssl/x509.h
378s23_pkt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s23_pkt.c 360s23_pkt.o: ../include/openssl/x509_vfy.h s23_pkt.c ssl_locl.h
379s23_pkt.o: ssl_locl.h
380s23_srvr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 361s23_srvr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
381s23_srvr.o: ../include/openssl/bn.h ../include/openssl/buffer.h 362s23_srvr.o: ../include/openssl/buffer.h ../include/openssl/comp.h
382s23_srvr.o: ../include/openssl/comp.h ../include/openssl/crypto.h 363s23_srvr.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
383s23_srvr.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 364s23_srvr.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
384s23_srvr.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 365s23_srvr.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
385s23_srvr.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 366s23_srvr.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
386s23_srvr.o: ../include/openssl/err.h ../include/openssl/evp.h 367s23_srvr.o: ../include/openssl/evp.h ../include/openssl/hmac.h
387s23_srvr.o: ../include/openssl/fips.h ../include/openssl/hmac.h
388s23_srvr.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 368s23_srvr.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
389s23_srvr.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 369s23_srvr.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
390s23_srvr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 370s23_srvr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
391s23_srvr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 371s23_srvr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
392s23_srvr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 372s23_srvr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
393s23_srvr.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 373s23_srvr.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
394s23_srvr.o: ../include/openssl/rand.h ../include/openssl/rsa.h 374s23_srvr.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
395s23_srvr.o: ../include/openssl/safestack.h ../include/openssl/sha.h 375s23_srvr.o: ../include/openssl/sha.h ../include/openssl/ssl.h
396s23_srvr.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 376s23_srvr.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
397s23_srvr.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 377s23_srvr.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
398s23_srvr.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 378s23_srvr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
399s23_srvr.o: ../include/openssl/tls1.h ../include/openssl/x509.h 379s23_srvr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s23_srvr.c
400s23_srvr.o: ../include/openssl/x509_vfy.h s23_srvr.c ssl_locl.h 380s23_srvr.o: ssl_locl.h
401s2_clnt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 381s2_clnt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
402s2_clnt.o: ../include/openssl/bn.h ../include/openssl/buffer.h 382s2_clnt.o: ../include/openssl/buffer.h ../include/openssl/comp.h
403s2_clnt.o: ../include/openssl/comp.h ../include/openssl/crypto.h 383s2_clnt.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
404s2_clnt.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 384s2_clnt.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
405s2_clnt.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 385s2_clnt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
406s2_clnt.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 386s2_clnt.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
407s2_clnt.o: ../include/openssl/err.h ../include/openssl/evp.h 387s2_clnt.o: ../include/openssl/evp.h ../include/openssl/hmac.h
408s2_clnt.o: ../include/openssl/fips.h ../include/openssl/hmac.h
409s2_clnt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 388s2_clnt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
410s2_clnt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 389s2_clnt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
411s2_clnt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 390s2_clnt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
412s2_clnt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 391s2_clnt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
413s2_clnt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 392s2_clnt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
414s2_clnt.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 393s2_clnt.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
415s2_clnt.o: ../include/openssl/rand.h ../include/openssl/rsa.h 394s2_clnt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
416s2_clnt.o: ../include/openssl/safestack.h ../include/openssl/sha.h 395s2_clnt.o: ../include/openssl/sha.h ../include/openssl/ssl.h
417s2_clnt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 396s2_clnt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
418s2_clnt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 397s2_clnt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
419s2_clnt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 398s2_clnt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
420s2_clnt.o: ../include/openssl/tls1.h ../include/openssl/x509.h 399s2_clnt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s2_clnt.c
421s2_clnt.o: ../include/openssl/x509_vfy.h s2_clnt.c ssl_locl.h 400s2_clnt.o: ssl_locl.h
422s2_enc.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 401s2_enc.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
423s2_enc.o: ../include/openssl/bn.h ../include/openssl/buffer.h 402s2_enc.o: ../include/openssl/buffer.h ../include/openssl/comp.h
424s2_enc.o: ../include/openssl/comp.h ../include/openssl/crypto.h 403s2_enc.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
425s2_enc.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 404s2_enc.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
426s2_enc.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 405s2_enc.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
427s2_enc.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 406s2_enc.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
428s2_enc.o: ../include/openssl/err.h ../include/openssl/evp.h 407s2_enc.o: ../include/openssl/evp.h ../include/openssl/hmac.h
429s2_enc.o: ../include/openssl/fips.h ../include/openssl/hmac.h
430s2_enc.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 408s2_enc.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
431s2_enc.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 409s2_enc.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
432s2_enc.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 410s2_enc.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
433s2_enc.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 411s2_enc.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
434s2_enc.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 412s2_enc.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
435s2_enc.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 413s2_enc.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
436s2_enc.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 414s2_enc.o: ../include/openssl/safestack.h ../include/openssl/sha.h
437s2_enc.o: ../include/openssl/sha.h ../include/openssl/ssl.h 415s2_enc.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
438s2_enc.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 416s2_enc.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
439s2_enc.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 417s2_enc.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
440s2_enc.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 418s2_enc.o: ../include/openssl/tls1.h ../include/openssl/x509.h
441s2_enc.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s2_enc.c 419s2_enc.o: ../include/openssl/x509_vfy.h s2_enc.c ssl_locl.h
442s2_enc.o: ssl_locl.h
443s2_lib.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 420s2_lib.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
444s2_lib.o: ../include/openssl/bn.h ../include/openssl/buffer.h 421s2_lib.o: ../include/openssl/buffer.h ../include/openssl/comp.h
445s2_lib.o: ../include/openssl/comp.h ../include/openssl/crypto.h 422s2_lib.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
446s2_lib.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 423s2_lib.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
447s2_lib.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 424s2_lib.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
448s2_lib.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 425s2_lib.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
449s2_lib.o: ../include/openssl/err.h ../include/openssl/evp.h 426s2_lib.o: ../include/openssl/evp.h ../include/openssl/hmac.h
450s2_lib.o: ../include/openssl/fips.h ../include/openssl/hmac.h
451s2_lib.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 427s2_lib.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
452s2_lib.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h 428s2_lib.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h
453s2_lib.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 429s2_lib.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
454s2_lib.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 430s2_lib.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
455s2_lib.o: ../include/openssl/pem.h ../include/openssl/pem2.h 431s2_lib.o: ../include/openssl/pem.h ../include/openssl/pem2.h
456s2_lib.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h 432s2_lib.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
457s2_lib.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h 433s2_lib.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
458s2_lib.o: ../include/openssl/safestack.h ../include/openssl/sha.h 434s2_lib.o: ../include/openssl/sha.h ../include/openssl/ssl.h
459s2_lib.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 435s2_lib.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
460s2_lib.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 436s2_lib.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
461s2_lib.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 437s2_lib.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
462s2_lib.o: ../include/openssl/tls1.h ../include/openssl/x509.h 438s2_lib.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s2_lib.c
463s2_lib.o: ../include/openssl/x509_vfy.h s2_lib.c ssl_locl.h 439s2_lib.o: ssl_locl.h
464s2_meth.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 440s2_meth.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
465s2_meth.o: ../include/openssl/bn.h ../include/openssl/buffer.h 441s2_meth.o: ../include/openssl/buffer.h ../include/openssl/comp.h
466s2_meth.o: ../include/openssl/comp.h ../include/openssl/crypto.h 442s2_meth.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
467s2_meth.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 443s2_meth.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
468s2_meth.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 444s2_meth.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
469s2_meth.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 445s2_meth.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
470s2_meth.o: ../include/openssl/err.h ../include/openssl/evp.h 446s2_meth.o: ../include/openssl/evp.h ../include/openssl/hmac.h
471s2_meth.o: ../include/openssl/fips.h ../include/openssl/hmac.h
472s2_meth.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 447s2_meth.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
473s2_meth.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 448s2_meth.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
474s2_meth.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 449s2_meth.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
475s2_meth.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 450s2_meth.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
476s2_meth.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 451s2_meth.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
477s2_meth.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 452s2_meth.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
478s2_meth.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 453s2_meth.o: ../include/openssl/safestack.h ../include/openssl/sha.h
479s2_meth.o: ../include/openssl/sha.h ../include/openssl/ssl.h 454s2_meth.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
480s2_meth.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 455s2_meth.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
481s2_meth.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 456s2_meth.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
482s2_meth.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 457s2_meth.o: ../include/openssl/tls1.h ../include/openssl/x509.h
483s2_meth.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s2_meth.c 458s2_meth.o: ../include/openssl/x509_vfy.h s2_meth.c ssl_locl.h
484s2_meth.o: ssl_locl.h
485s2_pkt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 459s2_pkt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
486s2_pkt.o: ../include/openssl/bn.h ../include/openssl/buffer.h 460s2_pkt.o: ../include/openssl/buffer.h ../include/openssl/comp.h
487s2_pkt.o: ../include/openssl/comp.h ../include/openssl/crypto.h 461s2_pkt.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
488s2_pkt.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 462s2_pkt.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
489s2_pkt.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 463s2_pkt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
490s2_pkt.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 464s2_pkt.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
491s2_pkt.o: ../include/openssl/err.h ../include/openssl/evp.h 465s2_pkt.o: ../include/openssl/evp.h ../include/openssl/hmac.h
492s2_pkt.o: ../include/openssl/fips.h ../include/openssl/hmac.h
493s2_pkt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 466s2_pkt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
494s2_pkt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 467s2_pkt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
495s2_pkt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 468s2_pkt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
496s2_pkt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 469s2_pkt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
497s2_pkt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 470s2_pkt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
498s2_pkt.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 471s2_pkt.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
499s2_pkt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 472s2_pkt.o: ../include/openssl/safestack.h ../include/openssl/sha.h
500s2_pkt.o: ../include/openssl/sha.h ../include/openssl/ssl.h 473s2_pkt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
501s2_pkt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 474s2_pkt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
502s2_pkt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 475s2_pkt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
503s2_pkt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 476s2_pkt.o: ../include/openssl/tls1.h ../include/openssl/x509.h
504s2_pkt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s2_pkt.c 477s2_pkt.o: ../include/openssl/x509_vfy.h s2_pkt.c ssl_locl.h
505s2_pkt.o: ssl_locl.h
506s2_srvr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 478s2_srvr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
507s2_srvr.o: ../include/openssl/bn.h ../include/openssl/buffer.h 479s2_srvr.o: ../include/openssl/buffer.h ../include/openssl/comp.h
508s2_srvr.o: ../include/openssl/comp.h ../include/openssl/crypto.h 480s2_srvr.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
509s2_srvr.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 481s2_srvr.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
510s2_srvr.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 482s2_srvr.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
511s2_srvr.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 483s2_srvr.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
512s2_srvr.o: ../include/openssl/err.h ../include/openssl/evp.h 484s2_srvr.o: ../include/openssl/evp.h ../include/openssl/hmac.h
513s2_srvr.o: ../include/openssl/fips.h ../include/openssl/hmac.h
514s2_srvr.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 485s2_srvr.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
515s2_srvr.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 486s2_srvr.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
516s2_srvr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 487s2_srvr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
517s2_srvr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 488s2_srvr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
518s2_srvr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 489s2_srvr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
519s2_srvr.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 490s2_srvr.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
520s2_srvr.o: ../include/openssl/rand.h ../include/openssl/rsa.h 491s2_srvr.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
521s2_srvr.o: ../include/openssl/safestack.h ../include/openssl/sha.h 492s2_srvr.o: ../include/openssl/sha.h ../include/openssl/ssl.h
522s2_srvr.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 493s2_srvr.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
523s2_srvr.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 494s2_srvr.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
524s2_srvr.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 495s2_srvr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
525s2_srvr.o: ../include/openssl/tls1.h ../include/openssl/x509.h 496s2_srvr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s2_srvr.c
526s2_srvr.o: ../include/openssl/x509_vfy.h s2_srvr.c ssl_locl.h 497s2_srvr.o: ssl_locl.h
527s3_both.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 498s3_both.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
528s3_both.o: ../include/openssl/bn.h ../include/openssl/buffer.h 499s3_both.o: ../include/openssl/buffer.h ../include/openssl/comp.h
529s3_both.o: ../include/openssl/comp.h ../include/openssl/crypto.h 500s3_both.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
530s3_both.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 501s3_both.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
531s3_both.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 502s3_both.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
532s3_both.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 503s3_both.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
533s3_both.o: ../include/openssl/err.h ../include/openssl/evp.h 504s3_both.o: ../include/openssl/evp.h ../include/openssl/hmac.h
534s3_both.o: ../include/openssl/fips.h ../include/openssl/hmac.h
535s3_both.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 505s3_both.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
536s3_both.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 506s3_both.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
537s3_both.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 507s3_both.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
538s3_both.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 508s3_both.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
539s3_both.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 509s3_both.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
540s3_both.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 510s3_both.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
541s3_both.o: ../include/openssl/rand.h ../include/openssl/rsa.h 511s3_both.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
542s3_both.o: ../include/openssl/safestack.h ../include/openssl/sha.h 512s3_both.o: ../include/openssl/sha.h ../include/openssl/ssl.h
543s3_both.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 513s3_both.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
544s3_both.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 514s3_both.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
545s3_both.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 515s3_both.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
546s3_both.o: ../include/openssl/tls1.h ../include/openssl/x509.h 516s3_both.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s3_both.c
547s3_both.o: ../include/openssl/x509_vfy.h s3_both.c ssl_locl.h 517s3_both.o: ssl_locl.h
548s3_clnt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 518s3_clnt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
549s3_clnt.o: ../include/openssl/bn.h ../include/openssl/buffer.h 519s3_clnt.o: ../include/openssl/bn.h ../include/openssl/buffer.h
550s3_clnt.o: ../include/openssl/comp.h ../include/openssl/crypto.h 520s3_clnt.o: ../include/openssl/comp.h ../include/openssl/crypto.h
@@ -553,13 +523,12 @@ s3_clnt.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
553s3_clnt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 523s3_clnt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
554s3_clnt.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 524s3_clnt.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
555s3_clnt.o: ../include/openssl/err.h ../include/openssl/evp.h 525s3_clnt.o: ../include/openssl/err.h ../include/openssl/evp.h
556s3_clnt.o: ../include/openssl/fips.h ../include/openssl/hmac.h 526s3_clnt.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
557s3_clnt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 527s3_clnt.o: ../include/openssl/lhash.h ../include/openssl/md5.h
558s3_clnt.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h 528s3_clnt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
559s3_clnt.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 529s3_clnt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
560s3_clnt.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 530s3_clnt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
561s3_clnt.o: ../include/openssl/pem.h ../include/openssl/pem2.h 531s3_clnt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
562s3_clnt.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h
563s3_clnt.o: ../include/openssl/pqueue.h ../include/openssl/rand.h 532s3_clnt.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
564s3_clnt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 533s3_clnt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
565s3_clnt.o: ../include/openssl/sha.h ../include/openssl/ssl.h 534s3_clnt.o: ../include/openssl/sha.h ../include/openssl/ssl.h
@@ -569,90 +538,84 @@ s3_clnt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
569s3_clnt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h kssl_lcl.h 538s3_clnt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h kssl_lcl.h
570s3_clnt.o: s3_clnt.c ssl_locl.h 539s3_clnt.o: s3_clnt.c ssl_locl.h
571s3_enc.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 540s3_enc.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
572s3_enc.o: ../include/openssl/bn.h ../include/openssl/buffer.h 541s3_enc.o: ../include/openssl/buffer.h ../include/openssl/comp.h
573s3_enc.o: ../include/openssl/comp.h ../include/openssl/crypto.h 542s3_enc.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
574s3_enc.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 543s3_enc.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
575s3_enc.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 544s3_enc.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
576s3_enc.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 545s3_enc.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
577s3_enc.o: ../include/openssl/err.h ../include/openssl/evp.h 546s3_enc.o: ../include/openssl/evp.h ../include/openssl/hmac.h
578s3_enc.o: ../include/openssl/fips.h ../include/openssl/hmac.h
579s3_enc.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 547s3_enc.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
580s3_enc.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h 548s3_enc.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h
581s3_enc.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 549s3_enc.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
582s3_enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 550s3_enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
583s3_enc.o: ../include/openssl/pem.h ../include/openssl/pem2.h 551s3_enc.o: ../include/openssl/pem.h ../include/openssl/pem2.h
584s3_enc.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h 552s3_enc.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
585s3_enc.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h 553s3_enc.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
586s3_enc.o: ../include/openssl/safestack.h ../include/openssl/sha.h 554s3_enc.o: ../include/openssl/sha.h ../include/openssl/ssl.h
587s3_enc.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 555s3_enc.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
588s3_enc.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 556s3_enc.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
589s3_enc.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 557s3_enc.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
590s3_enc.o: ../include/openssl/tls1.h ../include/openssl/x509.h 558s3_enc.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s3_enc.c
591s3_enc.o: ../include/openssl/x509_vfy.h s3_enc.c ssl_locl.h 559s3_enc.o: ssl_locl.h
592s3_lib.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 560s3_lib.o: ../crypto/ec/ec_lcl.h ../e_os.h ../include/openssl/asn1.h
593s3_lib.o: ../include/openssl/bn.h ../include/openssl/buffer.h 561s3_lib.o: ../include/openssl/bio.h ../include/openssl/bn.h
594s3_lib.o: ../include/openssl/comp.h ../include/openssl/crypto.h 562s3_lib.o: ../include/openssl/buffer.h ../include/openssl/comp.h
595s3_lib.o: ../include/openssl/dh.h ../include/openssl/dsa.h 563s3_lib.o: ../include/openssl/crypto.h ../include/openssl/dh.h
596s3_lib.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h 564s3_lib.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h
597s3_lib.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 565s3_lib.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
598s3_lib.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 566s3_lib.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
599s3_lib.o: ../include/openssl/evp.h ../include/openssl/fips.h 567s3_lib.o: ../include/openssl/err.h ../include/openssl/evp.h
600s3_lib.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 568s3_lib.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
601s3_lib.o: ../include/openssl/lhash.h ../include/openssl/md5.h 569s3_lib.o: ../include/openssl/lhash.h ../include/openssl/md5.h
602s3_lib.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 570s3_lib.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
603s3_lib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 571s3_lib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
604s3_lib.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 572s3_lib.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
605s3_lib.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 573s3_lib.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
606s3_lib.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 574s3_lib.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
607s3_lib.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 575s3_lib.o: ../include/openssl/safestack.h ../include/openssl/sha.h
608s3_lib.o: ../include/openssl/sha.h ../include/openssl/ssl.h 576s3_lib.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
609s3_lib.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 577s3_lib.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
610s3_lib.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 578s3_lib.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
611s3_lib.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 579s3_lib.o: ../include/openssl/tls1.h ../include/openssl/x509.h
612s3_lib.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h kssl_lcl.h 580s3_lib.o: ../include/openssl/x509_vfy.h kssl_lcl.h s3_lib.c ssl_locl.h
613s3_lib.o: s3_lib.c ssl_locl.h
614s3_meth.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 581s3_meth.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
615s3_meth.o: ../include/openssl/bn.h ../include/openssl/buffer.h 582s3_meth.o: ../include/openssl/buffer.h ../include/openssl/comp.h
616s3_meth.o: ../include/openssl/comp.h ../include/openssl/crypto.h 583s3_meth.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
617s3_meth.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 584s3_meth.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
618s3_meth.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 585s3_meth.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
619s3_meth.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 586s3_meth.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
620s3_meth.o: ../include/openssl/err.h ../include/openssl/evp.h 587s3_meth.o: ../include/openssl/evp.h ../include/openssl/hmac.h
621s3_meth.o: ../include/openssl/fips.h ../include/openssl/hmac.h
622s3_meth.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 588s3_meth.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
623s3_meth.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 589s3_meth.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
624s3_meth.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 590s3_meth.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
625s3_meth.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 591s3_meth.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
626s3_meth.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 592s3_meth.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
627s3_meth.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 593s3_meth.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
628s3_meth.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 594s3_meth.o: ../include/openssl/safestack.h ../include/openssl/sha.h
629s3_meth.o: ../include/openssl/sha.h ../include/openssl/ssl.h 595s3_meth.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
630s3_meth.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 596s3_meth.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
631s3_meth.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 597s3_meth.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
632s3_meth.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 598s3_meth.o: ../include/openssl/tls1.h ../include/openssl/x509.h
633s3_meth.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s3_meth.c 599s3_meth.o: ../include/openssl/x509_vfy.h s3_meth.c ssl_locl.h
634s3_meth.o: ssl_locl.h
635s3_pkt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 600s3_pkt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
636s3_pkt.o: ../include/openssl/bn.h ../include/openssl/buffer.h 601s3_pkt.o: ../include/openssl/buffer.h ../include/openssl/comp.h
637s3_pkt.o: ../include/openssl/comp.h ../include/openssl/crypto.h 602s3_pkt.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
638s3_pkt.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 603s3_pkt.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
639s3_pkt.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 604s3_pkt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
640s3_pkt.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 605s3_pkt.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
641s3_pkt.o: ../include/openssl/err.h ../include/openssl/evp.h 606s3_pkt.o: ../include/openssl/evp.h ../include/openssl/hmac.h
642s3_pkt.o: ../include/openssl/fips.h ../include/openssl/hmac.h
643s3_pkt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 607s3_pkt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
644s3_pkt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 608s3_pkt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
645s3_pkt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 609s3_pkt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
646s3_pkt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 610s3_pkt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
647s3_pkt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 611s3_pkt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
648s3_pkt.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 612s3_pkt.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
649s3_pkt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 613s3_pkt.o: ../include/openssl/safestack.h ../include/openssl/sha.h
650s3_pkt.o: ../include/openssl/sha.h ../include/openssl/ssl.h 614s3_pkt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
651s3_pkt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 615s3_pkt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
652s3_pkt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 616s3_pkt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
653s3_pkt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 617s3_pkt.o: ../include/openssl/tls1.h ../include/openssl/x509.h
654s3_pkt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h s3_pkt.c 618s3_pkt.o: ../include/openssl/x509_vfy.h s3_pkt.c ssl_locl.h
655s3_pkt.o: ssl_locl.h
656s3_srvr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 619s3_srvr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
657s3_srvr.o: ../include/openssl/bn.h ../include/openssl/buffer.h 620s3_srvr.o: ../include/openssl/bn.h ../include/openssl/buffer.h
658s3_srvr.o: ../include/openssl/comp.h ../include/openssl/crypto.h 621s3_srvr.o: ../include/openssl/comp.h ../include/openssl/crypto.h
@@ -660,14 +623,13 @@ s3_srvr.o: ../include/openssl/dh.h ../include/openssl/dsa.h
660s3_srvr.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h 623s3_srvr.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
661s3_srvr.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 624s3_srvr.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
662s3_srvr.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 625s3_srvr.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
663s3_srvr.o: ../include/openssl/evp.h ../include/openssl/fips.h 626s3_srvr.o: ../include/openssl/evp.h ../include/openssl/hmac.h
664s3_srvr.o: ../include/openssl/hmac.h ../include/openssl/krb5_asn.h 627s3_srvr.o: ../include/openssl/krb5_asn.h ../include/openssl/kssl.h
665s3_srvr.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 628s3_srvr.o: ../include/openssl/lhash.h ../include/openssl/md5.h
666s3_srvr.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h 629s3_srvr.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
667s3_srvr.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 630s3_srvr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
668s3_srvr.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 631s3_srvr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
669s3_srvr.o: ../include/openssl/pem.h ../include/openssl/pem2.h 632s3_srvr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
670s3_srvr.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h
671s3_srvr.o: ../include/openssl/pqueue.h ../include/openssl/rand.h 633s3_srvr.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
672s3_srvr.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 634s3_srvr.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
673s3_srvr.o: ../include/openssl/sha.h ../include/openssl/ssl.h 635s3_srvr.o: ../include/openssl/sha.h ../include/openssl/ssl.h
@@ -677,47 +639,44 @@ s3_srvr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
677s3_srvr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h kssl_lcl.h 639s3_srvr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h kssl_lcl.h
678s3_srvr.o: s3_srvr.c ssl_locl.h 640s3_srvr.o: s3_srvr.c ssl_locl.h
679ssl_algs.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 641ssl_algs.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
680ssl_algs.o: ../include/openssl/bn.h ../include/openssl/buffer.h 642ssl_algs.o: ../include/openssl/buffer.h ../include/openssl/comp.h
681ssl_algs.o: ../include/openssl/comp.h ../include/openssl/crypto.h 643ssl_algs.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
682ssl_algs.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 644ssl_algs.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
683ssl_algs.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 645ssl_algs.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
684ssl_algs.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 646ssl_algs.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
685ssl_algs.o: ../include/openssl/err.h ../include/openssl/evp.h 647ssl_algs.o: ../include/openssl/evp.h ../include/openssl/hmac.h
686ssl_algs.o: ../include/openssl/fips.h ../include/openssl/hmac.h
687ssl_algs.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 648ssl_algs.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
688ssl_algs.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 649ssl_algs.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
689ssl_algs.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 650ssl_algs.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
690ssl_algs.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 651ssl_algs.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
691ssl_algs.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 652ssl_algs.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
692ssl_algs.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 653ssl_algs.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
693ssl_algs.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 654ssl_algs.o: ../include/openssl/safestack.h ../include/openssl/sha.h
694ssl_algs.o: ../include/openssl/sha.h ../include/openssl/ssl.h 655ssl_algs.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
695ssl_algs.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 656ssl_algs.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
696ssl_algs.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 657ssl_algs.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
697ssl_algs.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 658ssl_algs.o: ../include/openssl/tls1.h ../include/openssl/x509.h
698ssl_algs.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_algs.c 659ssl_algs.o: ../include/openssl/x509_vfy.h ssl_algs.c ssl_locl.h
699ssl_algs.o: ssl_locl.h
700ssl_asn1.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/asn1_mac.h 660ssl_asn1.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/asn1_mac.h
701ssl_asn1.o: ../include/openssl/bio.h ../include/openssl/bn.h 661ssl_asn1.o: ../include/openssl/bio.h ../include/openssl/buffer.h
702ssl_asn1.o: ../include/openssl/buffer.h ../include/openssl/comp.h 662ssl_asn1.o: ../include/openssl/comp.h ../include/openssl/crypto.h
703ssl_asn1.o: ../include/openssl/crypto.h ../include/openssl/dsa.h 663ssl_asn1.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h
704ssl_asn1.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h 664ssl_asn1.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
705ssl_asn1.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 665ssl_asn1.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
706ssl_asn1.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 666ssl_asn1.o: ../include/openssl/err.h ../include/openssl/evp.h
707ssl_asn1.o: ../include/openssl/evp.h ../include/openssl/fips.h
708ssl_asn1.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 667ssl_asn1.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
709ssl_asn1.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 668ssl_asn1.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
710ssl_asn1.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 669ssl_asn1.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
711ssl_asn1.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 670ssl_asn1.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
712ssl_asn1.o: ../include/openssl/pem.h ../include/openssl/pem2.h 671ssl_asn1.o: ../include/openssl/pem.h ../include/openssl/pem2.h
713ssl_asn1.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h 672ssl_asn1.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
714ssl_asn1.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h 673ssl_asn1.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
715ssl_asn1.o: ../include/openssl/safestack.h ../include/openssl/sha.h 674ssl_asn1.o: ../include/openssl/sha.h ../include/openssl/ssl.h
716ssl_asn1.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 675ssl_asn1.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
717ssl_asn1.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 676ssl_asn1.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
718ssl_asn1.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 677ssl_asn1.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
719ssl_asn1.o: ../include/openssl/tls1.h ../include/openssl/x509.h 678ssl_asn1.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_asn1.c
720ssl_asn1.o: ../include/openssl/x509_vfy.h ssl_asn1.c ssl_locl.h 679ssl_asn1.o: ssl_locl.h
721ssl_cert.o: ../crypto/o_dir.h ../e_os.h ../include/openssl/asn1.h 680ssl_cert.o: ../crypto/o_dir.h ../e_os.h ../include/openssl/asn1.h
722ssl_cert.o: ../include/openssl/bio.h ../include/openssl/bn.h 681ssl_cert.o: ../include/openssl/bio.h ../include/openssl/bn.h
723ssl_cert.o: ../include/openssl/buffer.h ../include/openssl/comp.h 682ssl_cert.o: ../include/openssl/buffer.h ../include/openssl/comp.h
@@ -726,13 +685,12 @@ ssl_cert.o: ../include/openssl/dh.h ../include/openssl/dsa.h
726ssl_cert.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h 685ssl_cert.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
727ssl_cert.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 686ssl_cert.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
728ssl_cert.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 687ssl_cert.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
729ssl_cert.o: ../include/openssl/evp.h ../include/openssl/fips.h 688ssl_cert.o: ../include/openssl/evp.h ../include/openssl/hmac.h
730ssl_cert.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 689ssl_cert.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
731ssl_cert.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 690ssl_cert.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
732ssl_cert.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 691ssl_cert.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
733ssl_cert.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 692ssl_cert.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
734ssl_cert.o: ../include/openssl/pem.h ../include/openssl/pem2.h 693ssl_cert.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
735ssl_cert.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h
736ssl_cert.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h 694ssl_cert.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
737ssl_cert.o: ../include/openssl/safestack.h ../include/openssl/sha.h 695ssl_cert.o: ../include/openssl/safestack.h ../include/openssl/sha.h
738ssl_cert.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 696ssl_cert.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
@@ -742,19 +700,18 @@ ssl_cert.o: ../include/openssl/tls1.h ../include/openssl/x509.h
742ssl_cert.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h 700ssl_cert.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h
743ssl_cert.o: ssl_cert.c ssl_locl.h 701ssl_cert.o: ssl_cert.c ssl_locl.h
744ssl_ciph.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 702ssl_ciph.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
745ssl_ciph.o: ../include/openssl/bn.h ../include/openssl/buffer.h 703ssl_ciph.o: ../include/openssl/buffer.h ../include/openssl/comp.h
746ssl_ciph.o: ../include/openssl/comp.h ../include/openssl/crypto.h 704ssl_ciph.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
747ssl_ciph.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 705ssl_ciph.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
748ssl_ciph.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 706ssl_ciph.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
749ssl_ciph.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 707ssl_ciph.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
750ssl_ciph.o: ../include/openssl/err.h ../include/openssl/evp.h 708ssl_ciph.o: ../include/openssl/err.h ../include/openssl/evp.h
751ssl_ciph.o: ../include/openssl/fips.h ../include/openssl/hmac.h 709ssl_ciph.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
752ssl_ciph.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 710ssl_ciph.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
753ssl_ciph.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 711ssl_ciph.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
754ssl_ciph.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 712ssl_ciph.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
755ssl_ciph.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 713ssl_ciph.o: ../include/openssl/pem.h ../include/openssl/pem2.h
756ssl_ciph.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 714ssl_ciph.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
757ssl_ciph.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h
758ssl_ciph.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 715ssl_ciph.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
759ssl_ciph.o: ../include/openssl/sha.h ../include/openssl/ssl.h 716ssl_ciph.o: ../include/openssl/sha.h ../include/openssl/ssl.h
760ssl_ciph.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 717ssl_ciph.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
@@ -763,255 +720,256 @@ ssl_ciph.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
763ssl_ciph.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_ciph.c 720ssl_ciph.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_ciph.c
764ssl_ciph.o: ssl_locl.h 721ssl_ciph.o: ssl_locl.h
765ssl_err.o: ../include/openssl/asn1.h ../include/openssl/bio.h 722ssl_err.o: ../include/openssl/asn1.h ../include/openssl/bio.h
766ssl_err.o: ../include/openssl/bn.h ../include/openssl/buffer.h 723ssl_err.o: ../include/openssl/buffer.h ../include/openssl/comp.h
767ssl_err.o: ../include/openssl/comp.h ../include/openssl/crypto.h 724ssl_err.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
768ssl_err.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h 725ssl_err.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
769ssl_err.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 726ssl_err.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
770ssl_err.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 727ssl_err.o: ../include/openssl/err.h ../include/openssl/evp.h
771ssl_err.o: ../include/openssl/evp.h ../include/openssl/fips.h
772ssl_err.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 728ssl_err.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
773ssl_err.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 729ssl_err.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
774ssl_err.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 730ssl_err.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
775ssl_err.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 731ssl_err.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
776ssl_err.o: ../include/openssl/pem.h ../include/openssl/pem2.h 732ssl_err.o: ../include/openssl/pem.h ../include/openssl/pem2.h
777ssl_err.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h 733ssl_err.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
778ssl_err.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h 734ssl_err.o: ../include/openssl/safestack.h ../include/openssl/sha.h
779ssl_err.o: ../include/openssl/sha.h ../include/openssl/ssl.h 735ssl_err.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
780ssl_err.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 736ssl_err.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
781ssl_err.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 737ssl_err.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
782ssl_err.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 738ssl_err.o: ../include/openssl/tls1.h ../include/openssl/x509.h
783ssl_err.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_err.c 739ssl_err.o: ../include/openssl/x509_vfy.h ssl_err.c
784ssl_err2.o: ../include/openssl/asn1.h ../include/openssl/bio.h 740ssl_err2.o: ../include/openssl/asn1.h ../include/openssl/bio.h
785ssl_err2.o: ../include/openssl/bn.h ../include/openssl/buffer.h 741ssl_err2.o: ../include/openssl/buffer.h ../include/openssl/comp.h
786ssl_err2.o: ../include/openssl/comp.h ../include/openssl/crypto.h 742ssl_err2.o: ../include/openssl/crypto.h ../include/openssl/dtls1.h
787ssl_err2.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h 743ssl_err2.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
788ssl_err2.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 744ssl_err2.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
789ssl_err2.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 745ssl_err2.o: ../include/openssl/err.h ../include/openssl/evp.h
790ssl_err2.o: ../include/openssl/evp.h ../include/openssl/fips.h
791ssl_err2.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 746ssl_err2.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
792ssl_err2.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 747ssl_err2.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
793ssl_err2.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 748ssl_err2.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
794ssl_err2.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 749ssl_err2.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
795ssl_err2.o: ../include/openssl/pem.h ../include/openssl/pem2.h 750ssl_err2.o: ../include/openssl/pem.h ../include/openssl/pem2.h
796ssl_err2.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h 751ssl_err2.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
797ssl_err2.o: ../include/openssl/pqueue.h ../include/openssl/safestack.h 752ssl_err2.o: ../include/openssl/safestack.h ../include/openssl/sha.h
798ssl_err2.o: ../include/openssl/sha.h ../include/openssl/ssl.h 753ssl_err2.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
799ssl_err2.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 754ssl_err2.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
800ssl_err2.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 755ssl_err2.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
801ssl_err2.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 756ssl_err2.o: ../include/openssl/tls1.h ../include/openssl/x509.h
802ssl_err2.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_err2.c 757ssl_err2.o: ../include/openssl/x509_vfy.h ssl_err2.c
803ssl_lib.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 758ssl_lib.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
804ssl_lib.o: ../include/openssl/bn.h ../include/openssl/buffer.h 759ssl_lib.o: ../include/openssl/buffer.h ../include/openssl/comp.h
805ssl_lib.o: ../include/openssl/comp.h ../include/openssl/conf.h 760ssl_lib.o: ../include/openssl/conf.h ../include/openssl/crypto.h
806ssl_lib.o: ../include/openssl/crypto.h ../include/openssl/dh.h 761ssl_lib.o: ../include/openssl/dh.h ../include/openssl/dsa.h
807ssl_lib.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 762ssl_lib.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
808ssl_lib.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 763ssl_lib.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
809ssl_lib.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 764ssl_lib.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
810ssl_lib.o: ../include/openssl/engine.h ../include/openssl/err.h 765ssl_lib.o: ../include/openssl/err.h ../include/openssl/evp.h
811ssl_lib.o: ../include/openssl/evp.h ../include/openssl/fips.h
812ssl_lib.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 766ssl_lib.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
813ssl_lib.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 767ssl_lib.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
814ssl_lib.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 768ssl_lib.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
815ssl_lib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 769ssl_lib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
816ssl_lib.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 770ssl_lib.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
817ssl_lib.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 771ssl_lib.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
818ssl_lib.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 772ssl_lib.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
819ssl_lib.o: ../include/openssl/rand.h ../include/openssl/rsa.h 773ssl_lib.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
820ssl_lib.o: ../include/openssl/safestack.h ../include/openssl/sha.h 774ssl_lib.o: ../include/openssl/sha.h ../include/openssl/ssl.h
821ssl_lib.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 775ssl_lib.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
822ssl_lib.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 776ssl_lib.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
823ssl_lib.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 777ssl_lib.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
824ssl_lib.o: ../include/openssl/tls1.h ../include/openssl/x509.h 778ssl_lib.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
825ssl_lib.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h kssl_lcl.h 779ssl_lib.o: ../include/openssl/x509v3.h kssl_lcl.h ssl_lib.c ssl_locl.h
826ssl_lib.o: ssl_lib.c ssl_locl.h
827ssl_rsa.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 780ssl_rsa.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
828ssl_rsa.o: ../include/openssl/bn.h ../include/openssl/buffer.h 781ssl_rsa.o: ../include/openssl/buffer.h ../include/openssl/comp.h
829ssl_rsa.o: ../include/openssl/comp.h ../include/openssl/crypto.h 782ssl_rsa.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
830ssl_rsa.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 783ssl_rsa.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
831ssl_rsa.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 784ssl_rsa.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
832ssl_rsa.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 785ssl_rsa.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
833ssl_rsa.o: ../include/openssl/err.h ../include/openssl/evp.h 786ssl_rsa.o: ../include/openssl/evp.h ../include/openssl/hmac.h
834ssl_rsa.o: ../include/openssl/fips.h ../include/openssl/hmac.h
835ssl_rsa.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 787ssl_rsa.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
836ssl_rsa.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 788ssl_rsa.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
837ssl_rsa.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 789ssl_rsa.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
838ssl_rsa.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 790ssl_rsa.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
839ssl_rsa.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 791ssl_rsa.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
840ssl_rsa.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 792ssl_rsa.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
841ssl_rsa.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 793ssl_rsa.o: ../include/openssl/safestack.h ../include/openssl/sha.h
842ssl_rsa.o: ../include/openssl/sha.h ../include/openssl/ssl.h 794ssl_rsa.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
843ssl_rsa.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 795ssl_rsa.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
844ssl_rsa.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 796ssl_rsa.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
845ssl_rsa.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 797ssl_rsa.o: ../include/openssl/tls1.h ../include/openssl/x509.h
846ssl_rsa.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h 798ssl_rsa.o: ../include/openssl/x509_vfy.h ssl_locl.h ssl_rsa.c
847ssl_rsa.o: ssl_rsa.c
848ssl_sess.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 799ssl_sess.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
849ssl_sess.o: ../include/openssl/bn.h ../include/openssl/buffer.h 800ssl_sess.o: ../include/openssl/buffer.h ../include/openssl/comp.h
850ssl_sess.o: ../include/openssl/comp.h ../include/openssl/crypto.h 801ssl_sess.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
851ssl_sess.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 802ssl_sess.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
852ssl_sess.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 803ssl_sess.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
853ssl_sess.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 804ssl_sess.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
854ssl_sess.o: ../include/openssl/engine.h ../include/openssl/err.h 805ssl_sess.o: ../include/openssl/err.h ../include/openssl/evp.h
855ssl_sess.o: ../include/openssl/evp.h ../include/openssl/fips.h
856ssl_sess.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 806ssl_sess.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
857ssl_sess.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 807ssl_sess.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
858ssl_sess.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 808ssl_sess.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
859ssl_sess.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 809ssl_sess.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
860ssl_sess.o: ../include/openssl/pem.h ../include/openssl/pem2.h 810ssl_sess.o: ../include/openssl/pem.h ../include/openssl/pem2.h
861ssl_sess.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h 811ssl_sess.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
862ssl_sess.o: ../include/openssl/pqueue.h ../include/openssl/rand.h 812ssl_sess.o: ../include/openssl/rand.h ../include/openssl/rsa.h
863ssl_sess.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 813ssl_sess.o: ../include/openssl/safestack.h ../include/openssl/sha.h
864ssl_sess.o: ../include/openssl/sha.h ../include/openssl/ssl.h 814ssl_sess.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
865ssl_sess.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 815ssl_sess.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
866ssl_sess.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 816ssl_sess.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
867ssl_sess.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 817ssl_sess.o: ../include/openssl/tls1.h ../include/openssl/x509.h
868ssl_sess.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h 818ssl_sess.o: ../include/openssl/x509_vfy.h ssl_locl.h ssl_sess.c
869ssl_sess.o: ssl_sess.c
870ssl_stat.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 819ssl_stat.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
871ssl_stat.o: ../include/openssl/bn.h ../include/openssl/buffer.h 820ssl_stat.o: ../include/openssl/buffer.h ../include/openssl/comp.h
872ssl_stat.o: ../include/openssl/comp.h ../include/openssl/crypto.h 821ssl_stat.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
873ssl_stat.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 822ssl_stat.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
874ssl_stat.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 823ssl_stat.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
875ssl_stat.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 824ssl_stat.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
876ssl_stat.o: ../include/openssl/err.h ../include/openssl/evp.h 825ssl_stat.o: ../include/openssl/evp.h ../include/openssl/hmac.h
877ssl_stat.o: ../include/openssl/fips.h ../include/openssl/hmac.h
878ssl_stat.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 826ssl_stat.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
879ssl_stat.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 827ssl_stat.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
880ssl_stat.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 828ssl_stat.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
881ssl_stat.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 829ssl_stat.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
882ssl_stat.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 830ssl_stat.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
883ssl_stat.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 831ssl_stat.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
884ssl_stat.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 832ssl_stat.o: ../include/openssl/safestack.h ../include/openssl/sha.h
885ssl_stat.o: ../include/openssl/sha.h ../include/openssl/ssl.h 833ssl_stat.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
886ssl_stat.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 834ssl_stat.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
887ssl_stat.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 835ssl_stat.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
888ssl_stat.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 836ssl_stat.o: ../include/openssl/tls1.h ../include/openssl/x509.h
889ssl_stat.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h 837ssl_stat.o: ../include/openssl/x509_vfy.h ssl_locl.h ssl_stat.c
890ssl_stat.o: ssl_stat.c
891ssl_txt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 838ssl_txt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
892ssl_txt.o: ../include/openssl/bn.h ../include/openssl/buffer.h 839ssl_txt.o: ../include/openssl/buffer.h ../include/openssl/comp.h
893ssl_txt.o: ../include/openssl/comp.h ../include/openssl/crypto.h 840ssl_txt.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
894ssl_txt.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 841ssl_txt.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
895ssl_txt.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 842ssl_txt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
896ssl_txt.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 843ssl_txt.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
897ssl_txt.o: ../include/openssl/err.h ../include/openssl/evp.h 844ssl_txt.o: ../include/openssl/evp.h ../include/openssl/hmac.h
898ssl_txt.o: ../include/openssl/fips.h ../include/openssl/hmac.h
899ssl_txt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 845ssl_txt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
900ssl_txt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 846ssl_txt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
901ssl_txt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 847ssl_txt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
902ssl_txt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 848ssl_txt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
903ssl_txt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 849ssl_txt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
904ssl_txt.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 850ssl_txt.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
905ssl_txt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 851ssl_txt.o: ../include/openssl/safestack.h ../include/openssl/sha.h
906ssl_txt.o: ../include/openssl/sha.h ../include/openssl/ssl.h 852ssl_txt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
907ssl_txt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 853ssl_txt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
908ssl_txt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 854ssl_txt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
909ssl_txt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 855ssl_txt.o: ../include/openssl/tls1.h ../include/openssl/x509.h
910ssl_txt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h 856ssl_txt.o: ../include/openssl/x509_vfy.h ssl_locl.h ssl_txt.c
911ssl_txt.o: ssl_txt.c
912t1_clnt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 857t1_clnt.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
913t1_clnt.o: ../include/openssl/bn.h ../include/openssl/buffer.h 858t1_clnt.o: ../include/openssl/buffer.h ../include/openssl/comp.h
914t1_clnt.o: ../include/openssl/comp.h ../include/openssl/crypto.h 859t1_clnt.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
915t1_clnt.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 860t1_clnt.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
916t1_clnt.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 861t1_clnt.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
917t1_clnt.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 862t1_clnt.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
918t1_clnt.o: ../include/openssl/err.h ../include/openssl/evp.h 863t1_clnt.o: ../include/openssl/evp.h ../include/openssl/hmac.h
919t1_clnt.o: ../include/openssl/fips.h ../include/openssl/hmac.h
920t1_clnt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 864t1_clnt.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
921t1_clnt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 865t1_clnt.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
922t1_clnt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 866t1_clnt.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
923t1_clnt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 867t1_clnt.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
924t1_clnt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 868t1_clnt.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
925t1_clnt.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 869t1_clnt.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
926t1_clnt.o: ../include/openssl/rand.h ../include/openssl/rsa.h 870t1_clnt.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
927t1_clnt.o: ../include/openssl/safestack.h ../include/openssl/sha.h 871t1_clnt.o: ../include/openssl/sha.h ../include/openssl/ssl.h
928t1_clnt.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 872t1_clnt.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
929t1_clnt.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 873t1_clnt.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
930t1_clnt.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 874t1_clnt.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
931t1_clnt.o: ../include/openssl/tls1.h ../include/openssl/x509.h 875t1_clnt.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h
932t1_clnt.o: ../include/openssl/x509_vfy.h ssl_locl.h t1_clnt.c 876t1_clnt.o: t1_clnt.c
933t1_enc.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 877t1_enc.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
934t1_enc.o: ../include/openssl/bn.h ../include/openssl/buffer.h 878t1_enc.o: ../include/openssl/buffer.h ../include/openssl/comp.h
935t1_enc.o: ../include/openssl/comp.h ../include/openssl/crypto.h 879t1_enc.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
936t1_enc.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 880t1_enc.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
937t1_enc.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 881t1_enc.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
938t1_enc.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 882t1_enc.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
939t1_enc.o: ../include/openssl/err.h ../include/openssl/evp.h 883t1_enc.o: ../include/openssl/evp.h ../include/openssl/hmac.h
940t1_enc.o: ../include/openssl/fips.h ../include/openssl/hmac.h
941t1_enc.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 884t1_enc.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
942t1_enc.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h 885t1_enc.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h
943t1_enc.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 886t1_enc.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
944t1_enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 887t1_enc.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
945t1_enc.o: ../include/openssl/pem.h ../include/openssl/pem2.h 888t1_enc.o: ../include/openssl/pem.h ../include/openssl/pem2.h
946t1_enc.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h 889t1_enc.o: ../include/openssl/pkcs7.h ../include/openssl/pqueue.h
947t1_enc.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h 890t1_enc.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
948t1_enc.o: ../include/openssl/safestack.h ../include/openssl/sha.h 891t1_enc.o: ../include/openssl/sha.h ../include/openssl/ssl.h
949t1_enc.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 892t1_enc.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
950t1_enc.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 893t1_enc.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
951t1_enc.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 894t1_enc.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
952t1_enc.o: ../include/openssl/tls1.h ../include/openssl/x509.h 895t1_enc.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h
953t1_enc.o: ../include/openssl/x509_vfy.h ssl_locl.h t1_enc.c 896t1_enc.o: t1_enc.c
954t1_lib.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 897t1_lib.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
955t1_lib.o: ../include/openssl/bn.h ../include/openssl/buffer.h 898t1_lib.o: ../include/openssl/buffer.h ../include/openssl/comp.h
956t1_lib.o: ../include/openssl/comp.h ../include/openssl/conf.h 899t1_lib.o: ../include/openssl/conf.h ../include/openssl/crypto.h
957t1_lib.o: ../include/openssl/crypto.h ../include/openssl/dsa.h 900t1_lib.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h
958t1_lib.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h 901t1_lib.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
959t1_lib.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 902t1_lib.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
960t1_lib.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 903t1_lib.o: ../include/openssl/err.h ../include/openssl/evp.h
961t1_lib.o: ../include/openssl/evp.h ../include/openssl/fips.h
962t1_lib.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 904t1_lib.o: ../include/openssl/hmac.h ../include/openssl/kssl.h
963t1_lib.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 905t1_lib.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
964t1_lib.o: ../include/openssl/objects.h ../include/openssl/ocsp.h 906t1_lib.o: ../include/openssl/objects.h ../include/openssl/ocsp.h
965t1_lib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 907t1_lib.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
966t1_lib.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 908t1_lib.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
967t1_lib.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 909t1_lib.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
968t1_lib.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 910t1_lib.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
969t1_lib.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 911t1_lib.o: ../include/openssl/safestack.h ../include/openssl/sha.h
970t1_lib.o: ../include/openssl/sha.h ../include/openssl/ssl.h 912t1_lib.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
971t1_lib.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 913t1_lib.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
972t1_lib.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 914t1_lib.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
973t1_lib.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 915t1_lib.o: ../include/openssl/tls1.h ../include/openssl/x509.h
974t1_lib.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 916t1_lib.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h ssl_locl.h
975t1_lib.o: ../include/openssl/x509v3.h ssl_locl.h t1_lib.c 917t1_lib.o: t1_lib.c
976t1_meth.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 918t1_meth.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
977t1_meth.o: ../include/openssl/bn.h ../include/openssl/buffer.h 919t1_meth.o: ../include/openssl/buffer.h ../include/openssl/comp.h
978t1_meth.o: ../include/openssl/comp.h ../include/openssl/crypto.h 920t1_meth.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
979t1_meth.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 921t1_meth.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
980t1_meth.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 922t1_meth.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
981t1_meth.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 923t1_meth.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
982t1_meth.o: ../include/openssl/err.h ../include/openssl/evp.h 924t1_meth.o: ../include/openssl/evp.h ../include/openssl/hmac.h
983t1_meth.o: ../include/openssl/fips.h ../include/openssl/hmac.h
984t1_meth.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 925t1_meth.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
985t1_meth.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 926t1_meth.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
986t1_meth.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 927t1_meth.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
987t1_meth.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 928t1_meth.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
988t1_meth.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 929t1_meth.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
989t1_meth.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 930t1_meth.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
990t1_meth.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 931t1_meth.o: ../include/openssl/safestack.h ../include/openssl/sha.h
991t1_meth.o: ../include/openssl/sha.h ../include/openssl/ssl.h 932t1_meth.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
992t1_meth.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h 933t1_meth.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
993t1_meth.o: ../include/openssl/ssl3.h ../include/openssl/stack.h 934t1_meth.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
994t1_meth.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 935t1_meth.o: ../include/openssl/tls1.h ../include/openssl/x509.h
995t1_meth.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h 936t1_meth.o: ../include/openssl/x509_vfy.h ssl_locl.h t1_meth.c
996t1_meth.o: t1_meth.c 937t1_reneg.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
938t1_reneg.o: ../include/openssl/buffer.h ../include/openssl/comp.h
939t1_reneg.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
940t1_reneg.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
941t1_reneg.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
942t1_reneg.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
943t1_reneg.o: ../include/openssl/evp.h ../include/openssl/hmac.h
944t1_reneg.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
945t1_reneg.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
946t1_reneg.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
947t1_reneg.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
948t1_reneg.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
949t1_reneg.o: ../include/openssl/pqueue.h ../include/openssl/rsa.h
950t1_reneg.o: ../include/openssl/safestack.h ../include/openssl/sha.h
951t1_reneg.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h
952t1_reneg.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h
953t1_reneg.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
954t1_reneg.o: ../include/openssl/tls1.h ../include/openssl/x509.h
955t1_reneg.o: ../include/openssl/x509_vfy.h ssl_locl.h t1_reneg.c
997t1_srvr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 956t1_srvr.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
998t1_srvr.o: ../include/openssl/bn.h ../include/openssl/buffer.h 957t1_srvr.o: ../include/openssl/buffer.h ../include/openssl/comp.h
999t1_srvr.o: ../include/openssl/comp.h ../include/openssl/crypto.h 958t1_srvr.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
1000t1_srvr.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h 959t1_srvr.o: ../include/openssl/dtls1.h ../include/openssl/e_os2.h
1001t1_srvr.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 960t1_srvr.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
1002t1_srvr.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 961t1_srvr.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
1003t1_srvr.o: ../include/openssl/err.h ../include/openssl/evp.h 962t1_srvr.o: ../include/openssl/evp.h ../include/openssl/hmac.h
1004t1_srvr.o: ../include/openssl/fips.h ../include/openssl/hmac.h
1005t1_srvr.o: ../include/openssl/kssl.h ../include/openssl/lhash.h 963t1_srvr.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
1006t1_srvr.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 964t1_srvr.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
1007t1_srvr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 965t1_srvr.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
1008t1_srvr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h 966t1_srvr.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
1009t1_srvr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h 967t1_srvr.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
1010t1_srvr.o: ../include/openssl/pq_compat.h ../include/openssl/pqueue.h 968t1_srvr.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
1011t1_srvr.o: ../include/openssl/rand.h ../include/openssl/rsa.h 969t1_srvr.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
1012t1_srvr.o: ../include/openssl/safestack.h ../include/openssl/sha.h 970t1_srvr.o: ../include/openssl/sha.h ../include/openssl/ssl.h
1013t1_srvr.o: ../include/openssl/ssl.h ../include/openssl/ssl2.h 971t1_srvr.o: ../include/openssl/ssl2.h ../include/openssl/ssl23.h
1014t1_srvr.o: ../include/openssl/ssl23.h ../include/openssl/ssl3.h 972t1_srvr.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
1015t1_srvr.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 973t1_srvr.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
1016t1_srvr.o: ../include/openssl/tls1.h ../include/openssl/x509.h 974t1_srvr.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ssl_locl.h
1017t1_srvr.o: ../include/openssl/x509_vfy.h ssl_locl.h t1_srvr.c 975t1_srvr.o: t1_srvr.c
diff --git a/src/lib/libssl/src/ssl/bio_ssl.c b/src/lib/libssl/src/ssl/bio_ssl.c
index 420deb7fc9..af319af302 100644
--- a/src/lib/libssl/src/ssl/bio_ssl.c
+++ b/src/lib/libssl/src/ssl/bio_ssl.c
@@ -398,17 +398,19 @@ static long ssl_ctrl(BIO *b, int cmd, long num, void *ptr)
398 } 398 }
399 break; 399 break;
400 case BIO_CTRL_POP: 400 case BIO_CTRL_POP:
401 /* ugly bit of a hack */ 401 /* Only detach if we are the BIO explicitly being popped */
402 if (ssl->rbio != ssl->wbio) /* we are in trouble :-( */ 402 if (b == ptr)
403 { 403 {
404 BIO_free_all(ssl->wbio); 404 /* Shouldn't happen in practice because the
405 } 405 * rbio and wbio are the same when pushed.
406 if (b->next_bio != NULL) 406 */
407 { 407 if (ssl->rbio != ssl->wbio)
408 CRYPTO_add(&b->next_bio->references,1,CRYPTO_LOCK_BIO); 408 BIO_free_all(ssl->wbio);
409 if (b->next_bio != NULL)
410 CRYPTO_add(&b->next_bio->references,-1,CRYPTO_LOCK_BIO);
411 ssl->wbio=NULL;
412 ssl->rbio=NULL;
409 } 413 }
410 ssl->wbio=NULL;
411 ssl->rbio=NULL;
412 break; 414 break;
413 case BIO_C_DO_STATE_MACHINE: 415 case BIO_C_DO_STATE_MACHINE:
414 BIO_clear_retry_flags(b); 416 BIO_clear_retry_flags(b);
@@ -543,7 +545,6 @@ BIO *BIO_new_ssl_connect(SSL_CTX *ctx)
543 return(ret); 545 return(ret);
544err: 546err:
545 if (con != NULL) BIO_free(con); 547 if (con != NULL) BIO_free(con);
546 if (ret != NULL) BIO_free(ret);
547 return(NULL); 548 return(NULL);
548 } 549 }
549 550
diff --git a/src/lib/libssl/src/ssl/install.com b/src/lib/libssl/src/ssl/install.com
index fce8c66737..7f56067599 100644
--- a/src/lib/libssl/src/ssl/install.com
+++ b/src/lib/libssl/src/ssl/install.com
@@ -8,10 +8,19 @@ $!
8$ IF P1 .EQS. "" 8$ IF P1 .EQS. ""
9$ THEN 9$ THEN
10$ WRITE SYS$OUTPUT "First argument missing." 10$ WRITE SYS$OUTPUT "First argument missing."
11$ WRITE SYS$OUTPUT "Should be the directory where you want things installed." 11$ WRITE SYS$OUTPUT -
12 "It should be the directory where you want things installed."
12$ EXIT 13$ EXIT
13$ ENDIF 14$ ENDIF
14$ 15$
16$ IF (F$GETSYI("CPU").LT.128)
17$ THEN
18$ ARCH := VAX
19$ ELSE
20$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
21$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
22$ ENDIF
23$
15$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0" 24$ ROOT = F$PARSE(P1,"[]A.;0",,,"SYNTAX_ONLY,NO_CONCEAL") - "A.;0"
16$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY") 25$ ROOT_DEV = F$PARSE(ROOT,,,"DEVICE","SYNTAX_ONLY")
17$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") - 26$ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
@@ -19,31 +28,24 @@ $ ROOT_DIR = F$PARSE(ROOT,,,"DIRECTORY","SYNTAX_ONLY") -
19$ ROOT = ROOT_DEV + "[" + ROOT_DIR 28$ ROOT = ROOT_DEV + "[" + ROOT_DIR
20$ 29$
21$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC 30$ DEFINE/NOLOG WRK_SSLROOT 'ROOT'.] /TRANS=CONC
22$ DEFINE/NOLOG WRK_SSLVLIB WRK_SSLROOT:[VAX_LIB] 31$ DEFINE/NOLOG WRK_SSLXLIB WRK_SSLROOT:['ARCH'_LIB]
23$ DEFINE/NOLOG WRK_SSLALIB WRK_SSLROOT:[ALPHA_LIB]
24$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE] 32$ DEFINE/NOLOG WRK_SSLINCLUDE WRK_SSLROOT:[INCLUDE]
25$ DEFINE/NOLOG WRK_SSLVEXE WRK_SSLROOT:[VAX_EXE] 33$ DEFINE/NOLOG WRK_SSLXEXE WRK_SSLROOT:['ARCH'_EXE]
26$ DEFINE/NOLOG WRK_SSLAEXE WRK_SSLROOT:[ALPHA_EXE]
27$ 34$
28$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN - 35$ IF F$PARSE("WRK_SSLROOT:[000000]") .EQS. "" THEN -
29 CREATE/DIR/LOG WRK_SSLROOT:[000000] 36 CREATE/DIR/LOG WRK_SSLROOT:[000000]
30$ IF F$PARSE("WRK_SSLVLIB:") .EQS. "" THEN - 37$ IF F$PARSE("WRK_SSLXLIB:") .EQS. "" THEN -
31 CREATE/DIR/LOG WRK_SSLVLIB: 38 CREATE/DIR/LOG WRK_SSLXLIB:
32$ IF F$PARSE("WRK_SSLALIB:") .EQS. "" THEN -
33 CREATE/DIR/LOG WRK_SSLALIB:
34$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN - 39$ IF F$PARSE("WRK_SSLINCLUDE:") .EQS. "" THEN -
35 CREATE/DIR/LOG WRK_SSLINCLUDE: 40 CREATE/DIR/LOG WRK_SSLINCLUDE:
36$ IF F$PARSE("WRK_SSLVEXE:") .EQS. "" THEN - 41$ IF F$PARSE("WRK_SSLXEXE:") .EQS. "" THEN -
37 CREATE/DIR/LOG WRK_SSLVEXE: 42 CREATE/DIR/LOG WRK_SSLXEXE:
38$ IF F$PARSE("WRK_SSLAEXE:") .EQS. "" THEN -
39 CREATE/DIR/LOG WRK_SSLAEXE:
40$ 43$
41$ EXHEADER := ssl.h,ssl2.h,ssl3.h,ssl23.h,tls1.h,dtls1.h,kssl.h 44$ EXHEADER := ssl.h,ssl2.h,ssl3.h,ssl23.h,tls1.h,dtls1.h,kssl.h
42$ E_EXE := ssl_task 45$ E_EXE := ssl_task
43$ LIBS := LIBSSL 46$ LIBS := LIBSSL
44$ 47$
45$ VEXE_DIR := [-.VAX.EXE.SSL] 48$ XEXE_DIR := [-.'ARCH'.EXE.SSL]
46$ AEXE_DIR := [-.AXP.EXE.SSL]
47$ 49$
48$ COPY 'EXHEADER' WRK_SSLINCLUDE:/LOG 50$ COPY 'EXHEADER' WRK_SSLINCLUDE:/LOG
49$ SET FILE/PROT=WORLD:RE WRK_SSLINCLUDE:'EXHEADER' 51$ SET FILE/PROT=WORLD:RE WRK_SSLINCLUDE:'EXHEADER'
@@ -54,15 +56,10 @@ $ E = F$EDIT(F$ELEMENT(I, ",", E_EXE),"TRIM")
54$ I = I + 1 56$ I = I + 1
55$ IF E .EQS. "," THEN GOTO LOOP_EXE_END 57$ IF E .EQS. "," THEN GOTO LOOP_EXE_END
56$ SET NOON 58$ SET NOON
57$ IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. "" 59$ IF F$SEARCH(XEXE_DIR+E+".EXE") .NES. ""
58$ THEN
59$ COPY 'VEXE_DIR''E'.EXE WRK_SSLVEXE:'E'.EXE/log
60$ SET FILE/PROT=W:RE WRK_SSLVEXE:'E'.EXE
61$ ENDIF
62$ IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. ""
63$ THEN 60$ THEN
64$ COPY 'AEXE_DIR''E'.EXE WRK_SSLAEXE:'E'.EXE/log 61$ COPY 'XEXE_DIR''E'.EXE WRK_SSLXEXE:'E'.EXE/log
65$ SET FILE/PROT=W:RE WRK_SSLAEXE:'E'.EXE 62$ SET FILE/PROT=W:RE WRK_SSLXEXE:'E'.EXE
66$ ENDIF 63$ ENDIF
67$ SET ON 64$ SET ON
68$ GOTO LOOP_EXE 65$ GOTO LOOP_EXE
@@ -74,27 +71,17 @@ $ E = F$EDIT(F$ELEMENT(I, ",", LIBS),"TRIM")
74$ I = I + 1 71$ I = I + 1
75$ IF E .EQS. "," THEN GOTO LOOP_LIB_END 72$ IF E .EQS. "," THEN GOTO LOOP_LIB_END
76$ SET NOON 73$ SET NOON
77$ IF F$SEARCH(VEXE_DIR+E+".OLB") .NES. "" 74$! Object library.
78$ THEN 75$ IF F$SEARCH(XEXE_DIR+E+".OLB") .NES. ""
79$ COPY 'VEXE_DIR''E'.OLB WRK_SSLVLIB:'E'.OLB/log
80$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.OLB
81$ ENDIF
82$ ! Preparing for the time when we have shareable images
83$ IF F$SEARCH(VEXE_DIR+E+".EXE") .NES. ""
84$ THEN
85$ COPY 'VEXE_DIR''E'.EXE WRK_SSLVLIB:'E'.EXE/log
86$ SET FILE/PROT=W:RE WRK_SSLVLIB:'E'.EXE
87$ ENDIF
88$ IF F$SEARCH(AEXE_DIR+E+".OLB") .NES. ""
89$ THEN 76$ THEN
90$ COPY 'AEXE_DIR''E'.OLB WRK_SSLALIB:'E'.OLB/log 77$ COPY 'XEXE_DIR''E'.OLB WRK_SSLXLIB:'E'.OLB/log
91$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.OLB 78$ SET FILE/PROT=W:RE WRK_SSLXLIB:'E'.OLB
92$ ENDIF 79$ ENDIF
93$ ! Preparing for the time when we have shareable images 80$! Shareable image.
94$ IF F$SEARCH(AEXE_DIR+E+".EXE") .NES. "" 81$ IF F$SEARCH(XEXE_DIR+E+".EXE") .NES. ""
95$ THEN 82$ THEN
96$ COPY 'AEXE_DIR''E'.EXE WRK_SSLALIB:'E'.EXE/log 83$ COPY 'XEXE_DIR''E'.EXE WRK_SSLXLIB:'E'.EXE/log
97$ SET FILE/PROT=W:RE WRK_SSLALIB:'E'.EXE 84$ SET FILE/PROT=W:RE WRK_SSLXLIB:'E'.EXE
98$ ENDIF 85$ ENDIF
99$ SET ON 86$ SET ON
100$ GOTO LOOP_LIB 87$ GOTO LOOP_LIB
diff --git a/src/lib/libssl/src/ssl/kssl.c b/src/lib/libssl/src/ssl/kssl.c
index 019030ae3c..b820e37464 100644
--- a/src/lib/libssl/src/ssl/kssl.c
+++ b/src/lib/libssl/src/ssl/kssl.c
@@ -68,11 +68,6 @@
68 68
69#include <openssl/opensslconf.h> 69#include <openssl/opensslconf.h>
70 70
71#define _XOPEN_SOURCE 500 /* glibc2 needs this to declare strptime() */
72#include <time.h>
73#if 0 /* experimental */
74#undef _XOPEN_SOURCE /* To avoid clashes with anything else... */
75#endif
76#include <string.h> 71#include <string.h>
77 72
78#define KRB5_PRIVATE 1 73#define KRB5_PRIVATE 1
@@ -81,6 +76,7 @@
81#include <openssl/evp.h> 76#include <openssl/evp.h>
82#include <openssl/objects.h> 77#include <openssl/objects.h>
83#include <openssl/krb5_asn.h> 78#include <openssl/krb5_asn.h>
79#include "kssl_lcl.h"
84 80
85#ifndef OPENSSL_NO_KRB5 81#ifndef OPENSSL_NO_KRB5
86 82
@@ -136,7 +132,7 @@
136#define krb5_principal_compare kssl_krb5_principal_compare 132#define krb5_principal_compare kssl_krb5_principal_compare
137#define krb5_decrypt_tkt_part kssl_krb5_decrypt_tkt_part 133#define krb5_decrypt_tkt_part kssl_krb5_decrypt_tkt_part
138#define krb5_timeofday kssl_krb5_timeofday 134#define krb5_timeofday kssl_krb5_timeofday
139#define krb5_rc_default kssl_krb5_rc_default 135#define krb5_rc_default kssl_krb5_rc_default
140 136
141#ifdef krb5_rc_initialize 137#ifdef krb5_rc_initialize
142#undef krb5_rc_initialize 138#undef krb5_rc_initialize
@@ -844,7 +840,7 @@ kssl_map_enc(krb5_enctype enctype)
844** "62 xx 30 yy" (APPLICATION-2, SEQUENCE), where xx-yy =~ 2, and 840** "62 xx 30 yy" (APPLICATION-2, SEQUENCE), where xx-yy =~ 2, and
845** xx and yy are possibly multi-byte length fields. 841** xx and yy are possibly multi-byte length fields.
846*/ 842*/
847int kssl_test_confound(unsigned char *p) 843static int kssl_test_confound(unsigned char *p)
848 { 844 {
849 int len = 2; 845 int len = 2;
850 int xx = 0, yy = 0; 846 int xx = 0, yy = 0;
@@ -879,7 +875,7 @@ int kssl_test_confound(unsigned char *p)
879** what the highest assigned CKSUMTYPE_ constant is. As of 1.2.2 875** what the highest assigned CKSUMTYPE_ constant is. As of 1.2.2
880** it is 0x000c (CKSUMTYPE_HMAC_SHA1_DES3). So we will use 0x0010. 876** it is 0x000c (CKSUMTYPE_HMAC_SHA1_DES3). So we will use 0x0010.
881*/ 877*/
882size_t *populate_cksumlens(void) 878static size_t *populate_cksumlens(void)
883 { 879 {
884 int i, j, n; 880 int i, j, n;
885 static size_t *cklens = NULL; 881 static size_t *cklens = NULL;
@@ -1030,7 +1026,7 @@ print_krb5_keyblock(char *label, krb5_keyblock *keyblk)
1030/* Display contents of krb5_principal_data struct, for debugging 1026/* Display contents of krb5_principal_data struct, for debugging
1031** (krb5_principal is typedef'd == krb5_principal_data *) 1027** (krb5_principal is typedef'd == krb5_principal_data *)
1032*/ 1028*/
1033void 1029static void
1034print_krb5_princ(char *label, krb5_principal_data *princ) 1030print_krb5_princ(char *label, krb5_principal_data *princ)
1035 { 1031 {
1036 int i, ui, uj; 1032 int i, ui, uj;
@@ -1229,7 +1225,7 @@ kssl_cget_tkt( /* UPDATE */ KSSL_CTX *kssl_ctx,
1229** code here. This tkt should alloc/free just 1225** code here. This tkt should alloc/free just
1230** like the real thing. 1226** like the real thing.
1231*/ 1227*/
1232krb5_error_code 1228static krb5_error_code
1233kssl_TKT2tkt( /* IN */ krb5_context krb5context, 1229kssl_TKT2tkt( /* IN */ krb5_context krb5context,
1234 /* IN */ KRB5_TKTBODY *asn1ticket, 1230 /* IN */ KRB5_TKTBODY *asn1ticket,
1235 /* OUT */ krb5_ticket **krb5ticket, 1231 /* OUT */ krb5_ticket **krb5ticket,
@@ -1807,6 +1803,9 @@ kssl_ctx_show(KSSL_CTX *kssl_ctx)
1807 kssl_ctx->service_name ? kssl_ctx->service_name: KRB5SVC, 1803 kssl_ctx->service_name ? kssl_ctx->service_name: KRB5SVC,
1808 KRB5_NT_SRV_HST, &princ); 1804 KRB5_NT_SRV_HST, &princ);
1809 1805
1806 if (krb5rc)
1807 goto exit;
1808
1810 krb5rc = krb5_kt_get_entry(krb5context, krb5keytab, 1809 krb5rc = krb5_kt_get_entry(krb5context, krb5keytab,
1811 princ, 1810 princ,
1812 0 /* IGNORE_VNO */, 1811 0 /* IGNORE_VNO */,
@@ -1904,7 +1903,7 @@ void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data)
1904** Return pointer to the (partially) filled in struct tm on success, 1903** Return pointer to the (partially) filled in struct tm on success,
1905** return NULL on failure. 1904** return NULL on failure.
1906*/ 1905*/
1907struct tm *k_gmtime(ASN1_GENERALIZEDTIME *gtime, struct tm *k_tm) 1906static struct tm *k_gmtime(ASN1_GENERALIZEDTIME *gtime, struct tm *k_tm)
1908 { 1907 {
1909 char c, *p; 1908 char c, *p;
1910 1909
@@ -1930,7 +1929,7 @@ struct tm *k_gmtime(ASN1_GENERALIZEDTIME *gtime, struct tm *k_tm)
1930** So we try to sneek the clockskew out through the replay cache. 1929** So we try to sneek the clockskew out through the replay cache.
1931** If that fails just return a likely default (300 seconds). 1930** If that fails just return a likely default (300 seconds).
1932*/ 1931*/
1933krb5_deltat get_rc_clockskew(krb5_context context) 1932static krb5_deltat get_rc_clockskew(krb5_context context)
1934 { 1933 {
1935 krb5_rcache rc; 1934 krb5_rcache rc;
1936 krb5_deltat clockskew; 1935 krb5_deltat clockskew;
@@ -2094,9 +2093,12 @@ krb5_error_code kssl_check_authent(
2094 EVP_CIPHER_CTX_cleanup(&ciph_ctx); 2093 EVP_CIPHER_CTX_cleanup(&ciph_ctx);
2095 2094
2096#ifdef KSSL_DEBUG 2095#ifdef KSSL_DEBUG
2096 {
2097 int padl;
2097 printf("kssl_check_authent: decrypted authenticator[%d] =\n", outl); 2098 printf("kssl_check_authent: decrypted authenticator[%d] =\n", outl);
2098 for (padl=0; padl < outl; padl++) printf("%02x ",unenc_authent[padl]); 2099 for (padl=0; padl < outl; padl++) printf("%02x ",unenc_authent[padl]);
2099 printf("\n"); 2100 printf("\n");
2101 }
2100#endif /* KSSL_DEBUG */ 2102#endif /* KSSL_DEBUG */
2101 2103
2102 if ((p = kssl_skip_confound(enctype, unenc_authent)) == NULL) 2104 if ((p = kssl_skip_confound(enctype, unenc_authent)) == NULL)
@@ -2126,7 +2128,7 @@ krb5_error_code kssl_check_authent(
2126 tm_g = gmtime(&now); tg = mktime(tm_g); 2128 tm_g = gmtime(&now); tg = mktime(tm_g);
2127 tz_offset = tg - tl; 2129 tz_offset = tg - tl;
2128 2130
2129 *atimep = tr - tz_offset; 2131 *atimep = (krb5_timestamp)(tr - tz_offset);
2130 } 2132 }
2131 2133
2132#ifdef KSSL_DEBUG 2134#ifdef KSSL_DEBUG
diff --git a/src/lib/libssl/src/ssl/kssl_lcl.h b/src/lib/libssl/src/ssl/kssl_lcl.h
index 4cd8dd2d7f..c039c91b4e 100644
--- a/src/lib/libssl/src/ssl/kssl_lcl.h
+++ b/src/lib/libssl/src/ssl/kssl_lcl.h
@@ -75,7 +75,7 @@ void print_krb5_keyblock(char *label, krb5_keyblock *keyblk);
75char *kstring(char *string); 75char *kstring(char *string);
76char *knumber(int len, krb5_octet *contents); 76char *knumber(int len, krb5_octet *contents);
77 77
78EVP_CIPHER *kssl_map_enc(krb5_enctype enctype); 78const EVP_CIPHER *kssl_map_enc(krb5_enctype enctype);
79 79
80int kssl_keytab_is_available(KSSL_CTX *kssl_ctx); 80int kssl_keytab_is_available(KSSL_CTX *kssl_ctx);
81int kssl_tgt_is_available(KSSL_CTX *kssl_ctx); 81int kssl_tgt_is_available(KSSL_CTX *kssl_ctx);
diff --git a/src/lib/libssl/src/ssl/s23_clnt.c b/src/lib/libssl/src/ssl/s23_clnt.c
index bc918170e1..c4d8bf2eb3 100644
--- a/src/lib/libssl/src/ssl/s23_clnt.c
+++ b/src/lib/libssl/src/ssl/s23_clnt.c
@@ -55,6 +55,59 @@
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ====================================================================
59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60 *
61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions
63 * are met:
64 *
65 * 1. Redistributions of source code must retain the above copyright
66 * notice, this list of conditions and the following disclaimer.
67 *
68 * 2. Redistributions in binary form must reproduce the above copyright
69 * notice, this list of conditions and the following disclaimer in
70 * the documentation and/or other materials provided with the
71 * distribution.
72 *
73 * 3. All advertising materials mentioning features or use of this
74 * software must display the following acknowledgment:
75 * "This product includes software developed by the OpenSSL Project
76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77 *
78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79 * endorse or promote products derived from this software without
80 * prior written permission. For written permission, please contact
81 * openssl-core@openssl.org.
82 *
83 * 5. Products derived from this software may not be called "OpenSSL"
84 * nor may "OpenSSL" appear in their names without prior written
85 * permission of the OpenSSL Project.
86 *
87 * 6. Redistributions of any form whatsoever must retain the following
88 * acknowledgment:
89 * "This product includes software developed by the OpenSSL Project
90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91 *
92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103 * OF THE POSSIBILITY OF SUCH DAMAGE.
104 * ====================================================================
105 *
106 * This product includes cryptographic software written by Eric Young
107 * (eay@cryptsoft.com). This product includes software written by Tim
108 * Hudson (tjh@cryptsoft.com).
109 *
110 */
58 111
59#include <stdio.h> 112#include <stdio.h>
60#include "ssl_locl.h" 113#include "ssl_locl.h"
@@ -63,10 +116,10 @@
63#include <openssl/objects.h> 116#include <openssl/objects.h>
64#include <openssl/evp.h> 117#include <openssl/evp.h>
65 118
66static SSL_METHOD *ssl23_get_client_method(int ver); 119static const SSL_METHOD *ssl23_get_client_method(int ver);
67static int ssl23_client_hello(SSL *s); 120static int ssl23_client_hello(SSL *s);
68static int ssl23_get_server_hello(SSL *s); 121static int ssl23_get_server_hello(SSL *s);
69static SSL_METHOD *ssl23_get_client_method(int ver) 122static const SSL_METHOD *ssl23_get_client_method(int ver)
70 { 123 {
71#ifndef OPENSSL_NO_SSL2 124#ifndef OPENSSL_NO_SSL2
72 if (ver == SSL2_VERSION) 125 if (ver == SSL2_VERSION)
@@ -197,20 +250,40 @@ end:
197 return(ret); 250 return(ret);
198 } 251 }
199 252
253static int ssl23_no_ssl2_ciphers(SSL *s)
254 {
255 SSL_CIPHER *cipher;
256 STACK_OF(SSL_CIPHER) *ciphers;
257 int i;
258 ciphers = SSL_get_ciphers(s);
259 for (i = 0; i < sk_SSL_CIPHER_num(ciphers); i++)
260 {
261 cipher = sk_SSL_CIPHER_value(ciphers, i);
262 if (cipher->algorithm_ssl == SSL_SSLV2)
263 return 0;
264 }
265 return 1;
266 }
200 267
201static int ssl23_client_hello(SSL *s) 268static int ssl23_client_hello(SSL *s)
202 { 269 {
203 unsigned char *buf; 270 unsigned char *buf;
204 unsigned char *p,*d; 271 unsigned char *p,*d;
205 int i,j,ch_len; 272 int i,ch_len;
206 unsigned long Time,l; 273 unsigned long Time,l;
207 int ssl2_compat; 274 int ssl2_compat;
208 int version = 0, version_major, version_minor; 275 int version = 0, version_major, version_minor;
276#ifndef OPENSSL_NO_COMP
277 int j;
209 SSL_COMP *comp; 278 SSL_COMP *comp;
279#endif
210 int ret; 280 int ret;
211 281
212 ssl2_compat = (s->options & SSL_OP_NO_SSLv2) ? 0 : 1; 282 ssl2_compat = (s->options & SSL_OP_NO_SSLv2) ? 0 : 1;
213 283
284 if (ssl2_compat && ssl23_no_ssl2_ciphers(s))
285 ssl2_compat = 0;
286
214 if (!(s->options & SSL_OP_NO_TLSv1)) 287 if (!(s->options & SSL_OP_NO_TLSv1))
215 { 288 {
216 version = TLS1_VERSION; 289 version = TLS1_VERSION;
@@ -223,7 +296,7 @@ static int ssl23_client_hello(SSL *s)
223 { 296 {
224 version = SSL2_VERSION; 297 version = SSL2_VERSION;
225 } 298 }
226#ifndef OPENSSL_NO_TLSEXT 299#ifndef OPENSSL_NO_TLSEXT
227 if (version != SSL2_VERSION) 300 if (version != SSL2_VERSION)
228 { 301 {
229 /* have to disable SSL 2.0 compatibility if we need TLS extensions */ 302 /* have to disable SSL 2.0 compatibility if we need TLS extensions */
@@ -232,6 +305,10 @@ static int ssl23_client_hello(SSL *s)
232 ssl2_compat = 0; 305 ssl2_compat = 0;
233 if (s->tlsext_status_type != -1) 306 if (s->tlsext_status_type != -1)
234 ssl2_compat = 0; 307 ssl2_compat = 0;
308#ifdef TLSEXT_TYPE_opaque_prf_input
309 if (s->ctx->tlsext_opaque_prf_input_callback != 0 || s->tlsext_opaque_prf_input != NULL)
310 ssl2_compat = 0;
311#endif
235 } 312 }
236#endif 313#endif
237 314
@@ -257,14 +334,6 @@ static int ssl23_client_hello(SSL *s)
257 version_major = TLS1_VERSION_MAJOR; 334 version_major = TLS1_VERSION_MAJOR;
258 version_minor = TLS1_VERSION_MINOR; 335 version_minor = TLS1_VERSION_MINOR;
259 } 336 }
260#ifdef OPENSSL_FIPS
261 else if(FIPS_mode())
262 {
263 SSLerr(SSL_F_SSL23_CLIENT_HELLO,
264 SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE);
265 return -1;
266 }
267#endif
268 else if (version == SSL3_VERSION) 337 else if (version == SSL3_VERSION)
269 { 338 {
270 version_major = SSL3_VERSION_MAJOR; 339 version_major = SSL3_VERSION_MAJOR;
@@ -318,6 +387,10 @@ static int ssl23_client_hello(SSL *s)
318 ch_len=SSL2_MAX_CHALLENGE_LENGTH; 387 ch_len=SSL2_MAX_CHALLENGE_LENGTH;
319 388
320 /* write out sslv2 challenge */ 389 /* write out sslv2 challenge */
390 /* Note that ch_len must be <= SSL3_RANDOM_SIZE (32),
391 because it is one of SSL2_MAX_CHALLENGE_LENGTH (32)
392 or SSL2_MAX_CHALLENGE_LENGTH (16), but leave the
393 check in for futurproofing */
321 if (SSL3_RANDOM_SIZE < ch_len) 394 if (SSL3_RANDOM_SIZE < ch_len)
322 i=SSL3_RANDOM_SIZE; 395 i=SSL3_RANDOM_SIZE;
323 else 396 else
@@ -368,7 +441,11 @@ static int ssl23_client_hello(SSL *s)
368 p+=i; 441 p+=i;
369 442
370 /* COMPRESSION */ 443 /* COMPRESSION */
371 if (s->ctx->comp_methods == NULL) 444#ifdef OPENSSL_NO_COMP
445 *(p++)=1;
446#else
447 if ((s->options & SSL_OP_NO_COMPRESSION)
448 || !s->ctx->comp_methods)
372 j=0; 449 j=0;
373 else 450 else
374 j=sk_SSL_COMP_num(s->ctx->comp_methods); 451 j=sk_SSL_COMP_num(s->ctx->comp_methods);
@@ -378,8 +455,16 @@ static int ssl23_client_hello(SSL *s)
378 comp=sk_SSL_COMP_value(s->ctx->comp_methods,i); 455 comp=sk_SSL_COMP_value(s->ctx->comp_methods,i);
379 *(p++)=comp->id; 456 *(p++)=comp->id;
380 } 457 }
458#endif
381 *(p++)=0; /* Add the NULL method */ 459 *(p++)=0; /* Add the NULL method */
460
382#ifndef OPENSSL_NO_TLSEXT 461#ifndef OPENSSL_NO_TLSEXT
462 /* TLS extensions*/
463 if (ssl_prepare_clienthello_tlsext(s) <= 0)
464 {
465 SSLerr(SSL_F_SSL23_CLIENT_HELLO,SSL_R_CLIENTHELLO_TLSEXT);
466 return -1;
467 }
383 if ((p = ssl_add_clienthello_tlsext(s, p, buf+SSL3_RT_MAX_PLAIN_LENGTH)) == NULL) 468 if ((p = ssl_add_clienthello_tlsext(s, p, buf+SSL3_RT_MAX_PLAIN_LENGTH)) == NULL)
384 { 469 {
385 SSLerr(SSL_F_SSL23_CLIENT_HELLO,ERR_R_INTERNAL_ERROR); 470 SSLerr(SSL_F_SSL23_CLIENT_HELLO,ERR_R_INTERNAL_ERROR);
@@ -388,7 +473,6 @@ static int ssl23_client_hello(SSL *s)
388#endif 473#endif
389 474
390 l = p-d; 475 l = p-d;
391 *p = 42;
392 476
393 /* fill in 4-byte handshake header */ 477 /* fill in 4-byte handshake header */
394 d=&(buf[5]); 478 d=&(buf[5]);
@@ -483,6 +567,10 @@ static int ssl23_get_server_hello(SSL *s)
483 ch_len=SSL2_MAX_CHALLENGE_LENGTH; 567 ch_len=SSL2_MAX_CHALLENGE_LENGTH;
484 568
485 /* write out sslv2 challenge */ 569 /* write out sslv2 challenge */
570 /* Note that ch_len must be <= SSL3_RANDOM_SIZE (32), because
571 it is one of SSL2_MAX_CHALLENGE_LENGTH (32) or
572 SSL2_MAX_CHALLENGE_LENGTH (16), but leave the check in for
573 futurproofing */
486 i=(SSL3_RANDOM_SIZE < ch_len) 574 i=(SSL3_RANDOM_SIZE < ch_len)
487 ?SSL3_RANDOM_SIZE:ch_len; 575 ?SSL3_RANDOM_SIZE:ch_len;
488 s->s2->challenge_length=i; 576 s->s2->challenge_length=i;
@@ -503,7 +591,7 @@ static int ssl23_get_server_hello(SSL *s)
503 /* use special padding (SSL 3.0 draft/RFC 2246, App. E.2) */ 591 /* use special padding (SSL 3.0 draft/RFC 2246, App. E.2) */
504 s->s2->ssl2_rollback=1; 592 s->s2->ssl2_rollback=1;
505 593
506 /* setup the 5 bytes we have read so we get them from 594 /* setup the 7 bytes we have read so we get them from
507 * the sslv2 buffer */ 595 * the sslv2 buffer */
508 s->rstate=SSL_ST_READ_HEADER; 596 s->rstate=SSL_ST_READ_HEADER;
509 s->packet_length=n; 597 s->packet_length=n;
@@ -519,39 +607,16 @@ static int ssl23_get_server_hello(SSL *s)
519 s->handshake_func=s->method->ssl_connect; 607 s->handshake_func=s->method->ssl_connect;
520#endif 608#endif
521 } 609 }
522 else if ((p[0] == SSL3_RT_HANDSHAKE) && 610 else if (p[1] == SSL3_VERSION_MAJOR &&
523 (p[1] == SSL3_VERSION_MAJOR) && 611 (p[2] == SSL3_VERSION_MINOR || p[2] == TLS1_VERSION_MINOR) &&
524 ((p[2] == SSL3_VERSION_MINOR) || 612 ((p[0] == SSL3_RT_HANDSHAKE && p[5] == SSL3_MT_SERVER_HELLO) ||
525 (p[2] == TLS1_VERSION_MINOR)) && 613 (p[0] == SSL3_RT_ALERT && p[3] == 0 && p[4] == 2)))
526 (p[5] == SSL3_MT_SERVER_HELLO))
527 { 614 {
528 /* we have sslv3 or tls1 */ 615 /* we have sslv3 or tls1 (server hello or alert) */
529
530 if (!ssl_init_wbio_buffer(s,1)) goto err;
531
532 /* we are in this state */
533 s->state=SSL3_ST_CR_SRVR_HELLO_A;
534
535 /* put the 5 bytes we have read into the input buffer
536 * for SSLv3 */
537 s->rstate=SSL_ST_READ_HEADER;
538 s->packet_length=n;
539 s->packet= &(s->s3->rbuf.buf[0]);
540 memcpy(s->packet,buf,n);
541 s->s3->rbuf.left=n;
542 s->s3->rbuf.offset=0;
543 616
544 if ((p[2] == SSL3_VERSION_MINOR) && 617 if ((p[2] == SSL3_VERSION_MINOR) &&
545 !(s->options & SSL_OP_NO_SSLv3)) 618 !(s->options & SSL_OP_NO_SSLv3))
546 { 619 {
547#ifdef OPENSSL_FIPS
548 if(FIPS_mode())
549 {
550 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,
551 SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE);
552 goto err;
553 }
554#endif
555 s->version=SSL3_VERSION; 620 s->version=SSL3_VERSION;
556 s->method=SSLv3_client_method(); 621 s->method=SSLv3_client_method();
557 } 622 }
@@ -566,35 +631,52 @@ static int ssl23_get_server_hello(SSL *s)
566 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,SSL_R_UNSUPPORTED_PROTOCOL); 631 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,SSL_R_UNSUPPORTED_PROTOCOL);
567 goto err; 632 goto err;
568 } 633 }
569 634
570 s->handshake_func=s->method->ssl_connect; 635 if (p[0] == SSL3_RT_ALERT && p[5] != SSL3_AL_WARNING)
571 }
572 else if ((p[0] == SSL3_RT_ALERT) &&
573 (p[1] == SSL3_VERSION_MAJOR) &&
574 ((p[2] == SSL3_VERSION_MINOR) ||
575 (p[2] == TLS1_VERSION_MINOR)) &&
576 (p[3] == 0) &&
577 (p[4] == 2))
578 {
579 void (*cb)(const SSL *ssl,int type,int val)=NULL;
580 int j;
581
582 /* An alert */
583 if (s->info_callback != NULL)
584 cb=s->info_callback;
585 else if (s->ctx->info_callback != NULL)
586 cb=s->ctx->info_callback;
587
588 i=p[5];
589 if (cb != NULL)
590 { 636 {
591 j=(i<<8)|p[6]; 637 /* fatal alert */
592 cb(s,SSL_CB_READ_ALERT,j); 638
639 void (*cb)(const SSL *ssl,int type,int val)=NULL;
640 int j;
641
642 if (s->info_callback != NULL)
643 cb=s->info_callback;
644 else if (s->ctx->info_callback != NULL)
645 cb=s->ctx->info_callback;
646
647 i=p[5];
648 if (cb != NULL)
649 {
650 j=(i<<8)|p[6];
651 cb(s,SSL_CB_READ_ALERT,j);
652 }
653
654 if (s->msg_callback)
655 s->msg_callback(0, s->version, SSL3_RT_ALERT, p+5, 2, s, s->msg_callback_arg);
656
657 s->rwstate=SSL_NOTHING;
658 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,SSL_AD_REASON_OFFSET+p[6]);
659 goto err;
593 } 660 }
594 661
595 s->rwstate=SSL_NOTHING; 662 if (!ssl_init_wbio_buffer(s,1)) goto err;
596 SSLerr(SSL_F_SSL23_GET_SERVER_HELLO,SSL_AD_REASON_OFFSET+p[6]); 663
597 goto err; 664 /* we are in this state */
665 s->state=SSL3_ST_CR_SRVR_HELLO_A;
666
667 /* put the 7 bytes we have read into the input buffer
668 * for SSLv3 */
669 s->rstate=SSL_ST_READ_HEADER;
670 s->packet_length=n;
671 if (s->s3->rbuf.buf == NULL)
672 if (!ssl3_setup_read_buffer(s))
673 goto err;
674 s->packet= &(s->s3->rbuf.buf[0]);
675 memcpy(s->packet,buf,n);
676 s->s3->rbuf.left=n;
677 s->s3->rbuf.offset=0;
678
679 s->handshake_func=s->method->ssl_connect;
598 } 680 }
599 else 681 else
600 { 682 {
@@ -612,4 +694,3 @@ static int ssl23_get_server_hello(SSL *s)
612err: 694err:
613 return(-1); 695 return(-1);
614 } 696 }
615
diff --git a/src/lib/libssl/src/ssl/s23_lib.c b/src/lib/libssl/src/ssl/s23_lib.c
index fc2981308d..e3fce53430 100644
--- a/src/lib/libssl/src/ssl/s23_lib.c
+++ b/src/lib/libssl/src/ssl/s23_lib.c
@@ -65,11 +65,6 @@ long ssl23_default_timeout(void)
65 return(300); 65 return(300);
66 } 66 }
67 67
68IMPLEMENT_ssl23_meth_func(sslv23_base_method,
69 ssl_undefined_function,
70 ssl_undefined_function,
71 ssl_bad_method)
72
73int ssl23_num_ciphers(void) 68int ssl23_num_ciphers(void)
74 { 69 {
75 return(ssl3_num_ciphers() 70 return(ssl3_num_ciphers()
@@ -79,7 +74,7 @@ int ssl23_num_ciphers(void)
79 ); 74 );
80 } 75 }
81 76
82SSL_CIPHER *ssl23_get_cipher(unsigned int u) 77const SSL_CIPHER *ssl23_get_cipher(unsigned int u)
83 { 78 {
84 unsigned int uu=ssl3_num_ciphers(); 79 unsigned int uu=ssl3_num_ciphers();
85 80
@@ -95,9 +90,10 @@ SSL_CIPHER *ssl23_get_cipher(unsigned int u)
95 90
96/* This function needs to check if the ciphers required are actually 91/* This function needs to check if the ciphers required are actually
97 * available */ 92 * available */
98SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p) 93const SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p)
99 { 94 {
100 SSL_CIPHER c,*cp; 95 SSL_CIPHER c;
96 const SSL_CIPHER *cp;
101 unsigned long id; 97 unsigned long id;
102 int n; 98 int n;
103 99
diff --git a/src/lib/libssl/src/ssl/s23_meth.c b/src/lib/libssl/src/ssl/s23_meth.c
index 950d9aab3d..c6099efcf7 100644
--- a/src/lib/libssl/src/ssl/s23_meth.c
+++ b/src/lib/libssl/src/ssl/s23_meth.c
@@ -60,8 +60,8 @@
60#include <openssl/objects.h> 60#include <openssl/objects.h>
61#include "ssl_locl.h" 61#include "ssl_locl.h"
62 62
63static SSL_METHOD *ssl23_get_method(int ver); 63static const SSL_METHOD *ssl23_get_method(int ver);
64static SSL_METHOD *ssl23_get_method(int ver) 64static const SSL_METHOD *ssl23_get_method(int ver)
65 { 65 {
66#ifndef OPENSSL_NO_SSL2 66#ifndef OPENSSL_NO_SSL2
67 if (ver == SSL2_VERSION) 67 if (ver == SSL2_VERSION)
diff --git a/src/lib/libssl/src/ssl/s23_srvr.c b/src/lib/libssl/src/ssl/s23_srvr.c
index ba06e7ae2e..836dd1f1cf 100644
--- a/src/lib/libssl/src/ssl/s23_srvr.c
+++ b/src/lib/libssl/src/ssl/s23_srvr.c
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -116,9 +116,9 @@
116#include <openssl/objects.h> 116#include <openssl/objects.h>
117#include <openssl/evp.h> 117#include <openssl/evp.h>
118 118
119static SSL_METHOD *ssl23_get_server_method(int ver); 119static const SSL_METHOD *ssl23_get_server_method(int ver);
120int ssl23_get_client_hello(SSL *s); 120int ssl23_get_client_hello(SSL *s);
121static SSL_METHOD *ssl23_get_server_method(int ver) 121static const SSL_METHOD *ssl23_get_server_method(int ver)
122 { 122 {
123#ifndef OPENSSL_NO_SSL2 123#ifndef OPENSSL_NO_SSL2
124 if (ver == SSL2_VERSION) 124 if (ver == SSL2_VERSION)
@@ -315,7 +315,7 @@ int ssl23_get_client_hello(SSL *s)
315 (p[1] == SSL3_VERSION_MAJOR) && 315 (p[1] == SSL3_VERSION_MAJOR) &&
316 (p[5] == SSL3_MT_CLIENT_HELLO) && 316 (p[5] == SSL3_MT_CLIENT_HELLO) &&
317 ((p[3] == 0 && p[4] < 5 /* silly record length? */) 317 ((p[3] == 0 && p[4] < 5 /* silly record length? */)
318 || (p[9] == p[1]))) 318 || (p[9] >= p[1])))
319 { 319 {
320 /* 320 /*
321 * SSLv3 or tls1 header 321 * SSLv3 or tls1 header
@@ -339,6 +339,13 @@ int ssl23_get_client_hello(SSL *s)
339 v[1] = TLS1_VERSION_MINOR; 339 v[1] = TLS1_VERSION_MINOR;
340#endif 340#endif
341 } 341 }
342 /* if major version number > 3 set minor to a value
343 * which will use the highest version 3 we support.
344 * If TLS 2.0 ever appears we will need to revise
345 * this....
346 */
347 else if (p[9] > SSL3_VERSION_MAJOR)
348 v[1]=0xff;
342 else 349 else
343 v[1]=p[10]; /* minor version according to client_version */ 350 v[1]=p[10]; /* minor version according to client_version */
344 if (v[1] >= TLS1_VERSION_MINOR) 351 if (v[1] >= TLS1_VERSION_MINOR)
@@ -386,15 +393,6 @@ int ssl23_get_client_hello(SSL *s)
386 } 393 }
387 } 394 }
388 395
389#ifdef OPENSSL_FIPS
390 if (FIPS_mode() && (s->version < TLS1_VERSION))
391 {
392 SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,
393 SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE);
394 goto err;
395 }
396#endif
397
398 if (s->state == SSL23_ST_SR_CLNT_HELLO_B) 396 if (s->state == SSL23_ST_SR_CLNT_HELLO_B)
399 { 397 {
400 /* we have SSLv3/TLSv1 in an SSLv2 header 398 /* we have SSLv3/TLSv1 in an SSLv2 header
@@ -425,7 +423,9 @@ int ssl23_get_client_hello(SSL *s)
425 n2s(p,sil); 423 n2s(p,sil);
426 n2s(p,cl); 424 n2s(p,cl);
427 d=(unsigned char *)s->init_buf->data; 425 d=(unsigned char *)s->init_buf->data;
428 if ((csl+sil+cl+11) != s->packet_length) 426 if ((csl+sil+cl+11) != s->packet_length) /* We can't have TLS extensions in SSL 2.0 format
427 * Client Hello, can we? Error condition should be
428 * '>' otherweise */
429 { 429 {
430 SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,SSL_R_RECORD_LENGTH_MISMATCH); 430 SSLerr(SSL_F_SSL23_GET_CLIENT_HELLO,SSL_R_RECORD_LENGTH_MISMATCH);
431 goto err; 431 goto err;
@@ -468,6 +468,15 @@ int ssl23_get_client_hello(SSL *s)
468 *(d++)=1; 468 *(d++)=1;
469 *(d++)=0; 469 *(d++)=0;
470 470
471#if 0
472 /* copy any remaining data with may be extensions */
473 p = p+csl+sil+cl;
474 while (p < s->packet+s->packet_length)
475 {
476 *(d++)=*(p++);
477 }
478#endif
479
471 i = (d-(unsigned char *)s->init_buf->data) - 4; 480 i = (d-(unsigned char *)s->init_buf->data) - 4;
472 l2n3((long)i, d_len); 481 l2n3((long)i, d_len);
473 482
@@ -543,6 +552,10 @@ int ssl23_get_client_hello(SSL *s)
543 * for SSLv3 */ 552 * for SSLv3 */
544 s->rstate=SSL_ST_READ_HEADER; 553 s->rstate=SSL_ST_READ_HEADER;
545 s->packet_length=n; 554 s->packet_length=n;
555 if (s->s3->rbuf.buf == NULL)
556 if (!ssl3_setup_read_buffer(s))
557 goto err;
558
546 s->packet= &(s->s3->rbuf.buf[0]); 559 s->packet= &(s->s3->rbuf.buf[0]);
547 memcpy(s->packet,buf,n); 560 memcpy(s->packet,buf,n);
548 s->s3->rbuf.left=n; 561 s->s3->rbuf.left=n;
diff --git a/src/lib/libssl/src/ssl/s2_clnt.c b/src/lib/libssl/src/ssl/s2_clnt.c
index 782129cd5d..00ac158f9b 100644
--- a/src/lib/libssl/src/ssl/s2_clnt.c
+++ b/src/lib/libssl/src/ssl/s2_clnt.c
@@ -117,7 +117,7 @@
117#include <openssl/objects.h> 117#include <openssl/objects.h>
118#include <openssl/evp.h> 118#include <openssl/evp.h>
119 119
120static SSL_METHOD *ssl2_get_client_method(int ver); 120static const SSL_METHOD *ssl2_get_client_method(int ver);
121static int get_server_finished(SSL *s); 121static int get_server_finished(SSL *s);
122static int get_server_verify(SSL *s); 122static int get_server_verify(SSL *s);
123static int get_server_hello(SSL *s); 123static int get_server_hello(SSL *s);
@@ -129,7 +129,7 @@ static int ssl_rsa_public_encrypt(SESS_CERT *sc, int len, unsigned char *from,
129 unsigned char *to,int padding); 129 unsigned char *to,int padding);
130#define BREAK break 130#define BREAK break
131 131
132static SSL_METHOD *ssl2_get_client_method(int ver) 132static const SSL_METHOD *ssl2_get_client_method(int ver)
133 { 133 {
134 if (ver == SSL2_VERSION) 134 if (ver == SSL2_VERSION)
135 return(SSLv2_client_method()); 135 return(SSLv2_client_method());
@@ -621,7 +621,7 @@ static int client_master_key(SSL *s)
621 if (s->state == SSL2_ST_SEND_CLIENT_MASTER_KEY_A) 621 if (s->state == SSL2_ST_SEND_CLIENT_MASTER_KEY_A)
622 { 622 {
623 623
624 if (!ssl_cipher_get_evp(s->session,&c,&md,NULL)) 624 if (!ssl_cipher_get_evp(s->session,&c,&md,NULL,NULL,NULL))
625 { 625 {
626 ssl2_return_error(s,SSL2_PE_NO_CIPHER); 626 ssl2_return_error(s,SSL2_PE_NO_CIPHER);
627 SSLerr(SSL_F_CLIENT_MASTER_KEY,SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS); 627 SSLerr(SSL_F_CLIENT_MASTER_KEY,SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS);
@@ -863,8 +863,10 @@ static int client_certificate(SSL *s)
863 EVP_SignUpdate(&ctx,s->s2->key_material, 863 EVP_SignUpdate(&ctx,s->s2->key_material,
864 s->s2->key_material_length); 864 s->s2->key_material_length);
865 EVP_SignUpdate(&ctx,cert_ch,(unsigned int)cert_ch_len); 865 EVP_SignUpdate(&ctx,cert_ch,(unsigned int)cert_ch_len);
866 n=i2d_X509(s->session->sess_cert->peer_key->x509,&p); 866 i=i2d_X509(s->session->sess_cert->peer_key->x509,&p);
867 EVP_SignUpdate(&ctx,buf,(unsigned int)n); 867 /* Don't update the signature if it fails - FIXME: probably should handle this better */
868 if(i > 0)
869 EVP_SignUpdate(&ctx,buf,(unsigned int)i);
868 870
869 p=buf; 871 p=buf;
870 d=p+6; 872 d=p+6;
diff --git a/src/lib/libssl/src/ssl/s2_enc.c b/src/lib/libssl/src/ssl/s2_enc.c
index 1f62acd5b1..ff3395f459 100644
--- a/src/lib/libssl/src/ssl/s2_enc.c
+++ b/src/lib/libssl/src/ssl/s2_enc.c
@@ -68,15 +68,14 @@ int ssl2_enc_init(SSL *s, int client)
68 const EVP_MD *md; 68 const EVP_MD *md;
69 int num; 69 int num;
70 70
71 if (!ssl_cipher_get_evp(s->session,&c,&md,NULL)) 71 if (!ssl_cipher_get_evp(s->session,&c,&md,NULL,NULL,NULL))
72 { 72 {
73 ssl2_return_error(s,SSL2_PE_NO_CIPHER); 73 ssl2_return_error(s,SSL2_PE_NO_CIPHER);
74 SSLerr(SSL_F_SSL2_ENC_INIT,SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS); 74 SSLerr(SSL_F_SSL2_ENC_INIT,SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS);
75 return(0); 75 return(0);
76 } 76 }
77 77 ssl_replace_hash(&s->read_hash,md);
78 s->read_hash=md; 78 ssl_replace_hash(&s->write_hash,md);
79 s->write_hash=md;
80 79
81 if ((s->enc_read_ctx == NULL) && 80 if ((s->enc_read_ctx == NULL) &&
82 ((s->enc_read_ctx=(EVP_CIPHER_CTX *) 81 ((s->enc_read_ctx=(EVP_CIPHER_CTX *)
@@ -176,7 +175,7 @@ void ssl2_mac(SSL *s, unsigned char *md, int send)
176 175
177 /* There has to be a MAC algorithm. */ 176 /* There has to be a MAC algorithm. */
178 EVP_MD_CTX_init(&c); 177 EVP_MD_CTX_init(&c);
179 EVP_DigestInit_ex(&c, s->read_hash, NULL); 178 EVP_MD_CTX_copy(&c, s->read_hash);
180 EVP_DigestUpdate(&c,sec, 179 EVP_DigestUpdate(&c,sec,
181 EVP_CIPHER_CTX_key_length(s->enc_read_ctx)); 180 EVP_CIPHER_CTX_key_length(s->enc_read_ctx));
182 EVP_DigestUpdate(&c,act,len); 181 EVP_DigestUpdate(&c,act,len);
diff --git a/src/lib/libssl/src/ssl/s2_lib.c b/src/lib/libssl/src/ssl/s2_lib.c
index 10751b22ba..9914604109 100644
--- a/src/lib/libssl/src/ssl/s2_lib.c
+++ b/src/lib/libssl/src/ssl/s2_lib.c
@@ -55,6 +55,59 @@
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ====================================================================
59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
60 *
61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions
63 * are met:
64 *
65 * 1. Redistributions of source code must retain the above copyright
66 * notice, this list of conditions and the following disclaimer.
67 *
68 * 2. Redistributions in binary form must reproduce the above copyright
69 * notice, this list of conditions and the following disclaimer in
70 * the documentation and/or other materials provided with the
71 * distribution.
72 *
73 * 3. All advertising materials mentioning features or use of this
74 * software must display the following acknowledgment:
75 * "This product includes software developed by the OpenSSL Project
76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77 *
78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79 * endorse or promote products derived from this software without
80 * prior written permission. For written permission, please contact
81 * openssl-core@openssl.org.
82 *
83 * 5. Products derived from this software may not be called "OpenSSL"
84 * nor may "OpenSSL" appear in their names without prior written
85 * permission of the OpenSSL Project.
86 *
87 * 6. Redistributions of any form whatsoever must retain the following
88 * acknowledgment:
89 * "This product includes software developed by the OpenSSL Project
90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91 *
92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103 * OF THE POSSIBILITY OF SUCH DAMAGE.
104 * ====================================================================
105 *
106 * This product includes cryptographic software written by Eric Young
107 * (eay@cryptsoft.com). This product includes software written by Tim
108 * Hudson (tjh@cryptsoft.com).
109 *
110 */
58 111
59#include "ssl_locl.h" 112#include "ssl_locl.h"
60#ifndef OPENSSL_NO_SSL2 113#ifndef OPENSSL_NO_SSL2
@@ -68,143 +121,172 @@ const char ssl2_version_str[]="SSLv2" OPENSSL_VERSION_PTEXT;
68#define SSL2_NUM_CIPHERS (sizeof(ssl2_ciphers)/sizeof(SSL_CIPHER)) 121#define SSL2_NUM_CIPHERS (sizeof(ssl2_ciphers)/sizeof(SSL_CIPHER))
69 122
70/* list of available SSLv2 ciphers (sorted by id) */ 123/* list of available SSLv2 ciphers (sorted by id) */
71OPENSSL_GLOBAL SSL_CIPHER ssl2_ciphers[]={ 124OPENSSL_GLOBAL const SSL_CIPHER ssl2_ciphers[]={
72/* NULL_WITH_MD5 v3 */
73#if 0 125#if 0
126/* NULL_WITH_MD5 v3 */
74 { 127 {
75 1, 128 1,
76 SSL2_TXT_NULL_WITH_MD5, 129 SSL2_TXT_NULL_WITH_MD5,
77 SSL2_CK_NULL_WITH_MD5, 130 SSL2_CK_NULL_WITH_MD5,
78 SSL_kRSA|SSL_aRSA|SSL_eNULL|SSL_MD5|SSL_SSLV2, 131 SSL_kRSA,
132 SSL_aRSA,
133 SSL_eNULL,
134 SSL_MD5,
135 SSL_SSLV2,
79 SSL_EXPORT|SSL_EXP40|SSL_STRONG_NONE, 136 SSL_EXPORT|SSL_EXP40|SSL_STRONG_NONE,
80 0, 137 0,
81 0, 138 0,
82 0, 139 0,
83 SSL_ALL_CIPHERS,
84 SSL_ALL_STRENGTHS,
85 }, 140 },
86#endif 141#endif
142
87/* RC4_128_WITH_MD5 */ 143/* RC4_128_WITH_MD5 */
88 { 144 {
89 1, 145 1,
90 SSL2_TXT_RC4_128_WITH_MD5, 146 SSL2_TXT_RC4_128_WITH_MD5,
91 SSL2_CK_RC4_128_WITH_MD5, 147 SSL2_CK_RC4_128_WITH_MD5,
92 SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5|SSL_SSLV2, 148 SSL_kRSA,
149 SSL_aRSA,
150 SSL_RC4,
151 SSL_MD5,
152 SSL_SSLV2,
93 SSL_NOT_EXP|SSL_MEDIUM, 153 SSL_NOT_EXP|SSL_MEDIUM,
94 0, 154 0,
95 128, 155 128,
96 128, 156 128,
97 SSL_ALL_CIPHERS,
98 SSL_ALL_STRENGTHS,
99 }, 157 },
158
100/* RC4_128_EXPORT40_WITH_MD5 */ 159/* RC4_128_EXPORT40_WITH_MD5 */
101 { 160 {
102 1, 161 1,
103 SSL2_TXT_RC4_128_EXPORT40_WITH_MD5, 162 SSL2_TXT_RC4_128_EXPORT40_WITH_MD5,
104 SSL2_CK_RC4_128_EXPORT40_WITH_MD5, 163 SSL2_CK_RC4_128_EXPORT40_WITH_MD5,
105 SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5|SSL_SSLV2, 164 SSL_kRSA,
165 SSL_aRSA,
166 SSL_RC4,
167 SSL_MD5,
168 SSL_SSLV2,
106 SSL_EXPORT|SSL_EXP40, 169 SSL_EXPORT|SSL_EXP40,
107 SSL2_CF_5_BYTE_ENC, 170 SSL2_CF_5_BYTE_ENC,
108 40, 171 40,
109 128, 172 128,
110 SSL_ALL_CIPHERS,
111 SSL_ALL_STRENGTHS,
112 }, 173 },
174
113/* RC2_128_CBC_WITH_MD5 */ 175/* RC2_128_CBC_WITH_MD5 */
114 { 176 {
115 1, 177 1,
116 SSL2_TXT_RC2_128_CBC_WITH_MD5, 178 SSL2_TXT_RC2_128_CBC_WITH_MD5,
117 SSL2_CK_RC2_128_CBC_WITH_MD5, 179 SSL2_CK_RC2_128_CBC_WITH_MD5,
118 SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5|SSL_SSLV2, 180 SSL_kRSA,
181 SSL_aRSA,
182 SSL_RC2,
183 SSL_MD5,
184 SSL_SSLV2,
119 SSL_NOT_EXP|SSL_MEDIUM, 185 SSL_NOT_EXP|SSL_MEDIUM,
120 0, 186 0,
121 128, 187 128,
122 128, 188 128,
123 SSL_ALL_CIPHERS,
124 SSL_ALL_STRENGTHS,
125 }, 189 },
190
126/* RC2_128_CBC_EXPORT40_WITH_MD5 */ 191/* RC2_128_CBC_EXPORT40_WITH_MD5 */
127 { 192 {
128 1, 193 1,
129 SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5, 194 SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5,
130 SSL2_CK_RC2_128_CBC_EXPORT40_WITH_MD5, 195 SSL2_CK_RC2_128_CBC_EXPORT40_WITH_MD5,
131 SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5|SSL_SSLV2, 196 SSL_kRSA,
197 SSL_aRSA,
198 SSL_RC2,
199 SSL_MD5,
200 SSL_SSLV2,
132 SSL_EXPORT|SSL_EXP40, 201 SSL_EXPORT|SSL_EXP40,
133 SSL2_CF_5_BYTE_ENC, 202 SSL2_CF_5_BYTE_ENC,
134 40, 203 40,
135 128, 204 128,
136 SSL_ALL_CIPHERS,
137 SSL_ALL_STRENGTHS,
138 }, 205 },
139/* IDEA_128_CBC_WITH_MD5 */ 206
140#ifndef OPENSSL_NO_IDEA 207#ifndef OPENSSL_NO_IDEA
208/* IDEA_128_CBC_WITH_MD5 */
141 { 209 {
142 1, 210 1,
143 SSL2_TXT_IDEA_128_CBC_WITH_MD5, 211 SSL2_TXT_IDEA_128_CBC_WITH_MD5,
144 SSL2_CK_IDEA_128_CBC_WITH_MD5, 212 SSL2_CK_IDEA_128_CBC_WITH_MD5,
145 SSL_kRSA|SSL_aRSA|SSL_IDEA|SSL_MD5|SSL_SSLV2, 213 SSL_kRSA,
214 SSL_aRSA,
215 SSL_IDEA,
216 SSL_MD5,
217 SSL_SSLV2,
146 SSL_NOT_EXP|SSL_MEDIUM, 218 SSL_NOT_EXP|SSL_MEDIUM,
147 0, 219 0,
148 128, 220 128,
149 128, 221 128,
150 SSL_ALL_CIPHERS,
151 SSL_ALL_STRENGTHS,
152 }, 222 },
153#endif 223#endif
224
154/* DES_64_CBC_WITH_MD5 */ 225/* DES_64_CBC_WITH_MD5 */
155 { 226 {
156 1, 227 1,
157 SSL2_TXT_DES_64_CBC_WITH_MD5, 228 SSL2_TXT_DES_64_CBC_WITH_MD5,
158 SSL2_CK_DES_64_CBC_WITH_MD5, 229 SSL2_CK_DES_64_CBC_WITH_MD5,
159 SSL_kRSA|SSL_aRSA|SSL_DES|SSL_MD5|SSL_SSLV2, 230 SSL_kRSA,
231 SSL_aRSA,
232 SSL_DES,
233 SSL_MD5,
234 SSL_SSLV2,
160 SSL_NOT_EXP|SSL_LOW, 235 SSL_NOT_EXP|SSL_LOW,
161 0, 236 0,
162 56, 237 56,
163 56, 238 56,
164 SSL_ALL_CIPHERS,
165 SSL_ALL_STRENGTHS,
166 }, 239 },
240
167/* DES_192_EDE3_CBC_WITH_MD5 */ 241/* DES_192_EDE3_CBC_WITH_MD5 */
168 { 242 {
169 1, 243 1,
170 SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5, 244 SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5,
171 SSL2_CK_DES_192_EDE3_CBC_WITH_MD5, 245 SSL2_CK_DES_192_EDE3_CBC_WITH_MD5,
172 SSL_kRSA|SSL_aRSA|SSL_3DES|SSL_MD5|SSL_SSLV2, 246 SSL_kRSA,
247 SSL_aRSA,
248 SSL_3DES,
249 SSL_MD5,
250 SSL_SSLV2,
173 SSL_NOT_EXP|SSL_HIGH, 251 SSL_NOT_EXP|SSL_HIGH,
174 0, 252 0,
175 168, 253 168,
176 168, 254 168,
177 SSL_ALL_CIPHERS,
178 SSL_ALL_STRENGTHS,
179 }, 255 },
180/* RC4_64_WITH_MD5 */ 256
181#if 0 257#if 0
258/* RC4_64_WITH_MD5 */
182 { 259 {
183 1, 260 1,
184 SSL2_TXT_RC4_64_WITH_MD5, 261 SSL2_TXT_RC4_64_WITH_MD5,
185 SSL2_CK_RC4_64_WITH_MD5, 262 SSL2_CK_RC4_64_WITH_MD5,
186 SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5|SSL_SSLV2, 263 SSL_kRSA,
264 SSL_aRSA,
265 SSL_RC4,
266 SSL_MD5,
267 SSL_SSLV2,
187 SSL_NOT_EXP|SSL_LOW, 268 SSL_NOT_EXP|SSL_LOW,
188 SSL2_CF_8_BYTE_ENC, 269 SSL2_CF_8_BYTE_ENC,
189 64, 270 64,
190 64, 271 64,
191 SSL_ALL_CIPHERS,
192 SSL_ALL_STRENGTHS,
193 }, 272 },
194#endif 273#endif
195/* NULL SSLeay (testing) */ 274
196#if 0 275#if 0
276/* NULL SSLeay (testing) */
197 { 277 {
198 0, 278 0,
199 SSL2_TXT_NULL, 279 SSL2_TXT_NULL,
200 SSL2_CK_NULL, 280 SSL2_CK_NULL,
201 0, 281 0,
282 0,
283 0,
284 0,
285 SSL_SSLV2,
202 SSL_STRONG_NONE, 286 SSL_STRONG_NONE,
203 0, 287 0,
204 0, 288 0,
205 0, 289 0,
206 SSL_ALL_CIPHERS,
207 SSL_ALL_STRENGTHS,
208 }, 290 },
209#endif 291#endif
210 292
@@ -216,17 +298,12 @@ long ssl2_default_timeout(void)
216 return(300); 298 return(300);
217 } 299 }
218 300
219IMPLEMENT_ssl2_meth_func(sslv2_base_method,
220 ssl_undefined_function,
221 ssl_undefined_function,
222 ssl_bad_method)
223
224int ssl2_num_ciphers(void) 301int ssl2_num_ciphers(void)
225 { 302 {
226 return(SSL2_NUM_CIPHERS); 303 return(SSL2_NUM_CIPHERS);
227 } 304 }
228 305
229SSL_CIPHER *ssl2_get_cipher(unsigned int u) 306const SSL_CIPHER *ssl2_get_cipher(unsigned int u)
230 { 307 {
231 if (u < SSL2_NUM_CIPHERS) 308 if (u < SSL2_NUM_CIPHERS)
232 return(&(ssl2_ciphers[SSL2_NUM_CIPHERS-1-u])); 309 return(&(ssl2_ciphers[SSL2_NUM_CIPHERS-1-u]));
@@ -337,18 +414,16 @@ long ssl2_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void))
337 414
338/* This function needs to check if the ciphers required are actually 415/* This function needs to check if the ciphers required are actually
339 * available */ 416 * available */
340SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p) 417const SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p)
341 { 418 {
342 SSL_CIPHER c,*cp; 419 SSL_CIPHER c;
420 const SSL_CIPHER *cp;
343 unsigned long id; 421 unsigned long id;
344 422
345 id=0x02000000L|((unsigned long)p[0]<<16L)| 423 id=0x02000000L|((unsigned long)p[0]<<16L)|
346 ((unsigned long)p[1]<<8L)|(unsigned long)p[2]; 424 ((unsigned long)p[1]<<8L)|(unsigned long)p[2];
347 c.id=id; 425 c.id=id;
348 cp = (SSL_CIPHER *)OBJ_bsearch((char *)&c, 426 cp = OBJ_bsearch_ssl_cipher_id(&c, ssl2_ciphers, SSL2_NUM_CIPHERS);
349 (char *)ssl2_ciphers,
350 SSL2_NUM_CIPHERS,sizeof(SSL_CIPHER),
351 FP_ICC ssl_cipher_id_cmp);
352 if ((cp == NULL) || (cp->valid == 0)) 427 if ((cp == NULL) || (cp->valid == 0))
353 return NULL; 428 return NULL;
354 else 429 else
@@ -377,6 +452,7 @@ int ssl2_generate_key_material(SSL *s)
377 unsigned char *km; 452 unsigned char *km;
378 unsigned char c='0'; 453 unsigned char c='0';
379 const EVP_MD *md5; 454 const EVP_MD *md5;
455 int md_size;
380 456
381 md5 = EVP_md5(); 457 md5 = EVP_md5();
382 458
@@ -393,10 +469,12 @@ int ssl2_generate_key_material(SSL *s)
393 SSLerr(SSL_F_SSL2_GENERATE_KEY_MATERIAL, ERR_R_INTERNAL_ERROR); 469 SSLerr(SSL_F_SSL2_GENERATE_KEY_MATERIAL, ERR_R_INTERNAL_ERROR);
394 return 0; 470 return 0;
395 } 471 }
396 472 md_size = EVP_MD_size(md5);
397 for (i=0; i<s->s2->key_material_length; i += EVP_MD_size(md5)) 473 if (md_size < 0)
474 return 0;
475 for (i=0; i<s->s2->key_material_length; i += md_size)
398 { 476 {
399 if (((km - s->s2->key_material) + EVP_MD_size(md5)) > 477 if (((km - s->s2->key_material) + md_size) >
400 (int)sizeof(s->s2->key_material)) 478 (int)sizeof(s->s2->key_material))
401 { 479 {
402 /* EVP_DigestFinal_ex() below would write beyond buffer */ 480 /* EVP_DigestFinal_ex() below would write beyond buffer */
@@ -415,7 +493,7 @@ int ssl2_generate_key_material(SSL *s)
415 EVP_DigestUpdate(&ctx,s->s2->challenge,s->s2->challenge_length); 493 EVP_DigestUpdate(&ctx,s->s2->challenge,s->s2->challenge_length);
416 EVP_DigestUpdate(&ctx,s->s2->conn_id,s->s2->conn_id_length); 494 EVP_DigestUpdate(&ctx,s->s2->conn_id,s->s2->conn_id_length);
417 EVP_DigestFinal_ex(&ctx,km,NULL); 495 EVP_DigestFinal_ex(&ctx,km,NULL);
418 km += EVP_MD_size(md5); 496 km += md_size;
419 } 497 }
420 498
421 EVP_MD_CTX_cleanup(&ctx); 499 EVP_MD_CTX_cleanup(&ctx);
diff --git a/src/lib/libssl/src/ssl/s2_meth.c b/src/lib/libssl/src/ssl/s2_meth.c
index a35e435b71..f0e8ca593d 100644
--- a/src/lib/libssl/src/ssl/s2_meth.c
+++ b/src/lib/libssl/src/ssl/s2_meth.c
@@ -61,8 +61,8 @@
61#include <stdio.h> 61#include <stdio.h>
62#include <openssl/objects.h> 62#include <openssl/objects.h>
63 63
64static SSL_METHOD *ssl2_get_method(int ver); 64static const SSL_METHOD *ssl2_get_method(int ver);
65static SSL_METHOD *ssl2_get_method(int ver) 65static const SSL_METHOD *ssl2_get_method(int ver)
66 { 66 {
67 if (ver == SSL2_VERSION) 67 if (ver == SSL2_VERSION)
68 return(SSLv2_method()); 68 return(SSLv2_method());
@@ -71,9 +71,9 @@ static SSL_METHOD *ssl2_get_method(int ver)
71 } 71 }
72 72
73IMPLEMENT_ssl2_meth_func(SSLv2_method, 73IMPLEMENT_ssl2_meth_func(SSLv2_method,
74 ssl2_accept, 74 ssl2_accept,
75 ssl2_connect, 75 ssl2_connect,
76 ssl2_get_method) 76 ssl2_get_method)
77 77
78#else /* !OPENSSL_NO_SSL2 */ 78#else /* !OPENSSL_NO_SSL2 */
79 79
diff --git a/src/lib/libssl/src/ssl/s2_pkt.c b/src/lib/libssl/src/ssl/s2_pkt.c
index a10929a757..ac963b2d47 100644
--- a/src/lib/libssl/src/ssl/s2_pkt.c
+++ b/src/lib/libssl/src/ssl/s2_pkt.c
@@ -116,7 +116,7 @@
116#define USE_SOCKETS 116#define USE_SOCKETS
117 117
118static int read_n(SSL *s,unsigned int n,unsigned int max,unsigned int extend); 118static int read_n(SSL *s,unsigned int n,unsigned int max,unsigned int extend);
119static int do_ssl_write(SSL *s, const unsigned char *buf, unsigned int len); 119static int n_do_ssl_write(SSL *s, const unsigned char *buf, unsigned int len);
120static int write_pending(SSL *s, const unsigned char *buf, unsigned int len); 120static int write_pending(SSL *s, const unsigned char *buf, unsigned int len);
121static int ssl_mt_error(int n); 121static int ssl_mt_error(int n);
122 122
@@ -130,7 +130,7 @@ static int ssl2_read_internal(SSL *s, void *buf, int len, int peek)
130 unsigned char mac[MAX_MAC_SIZE]; 130 unsigned char mac[MAX_MAC_SIZE];
131 unsigned char *p; 131 unsigned char *p;
132 int i; 132 int i;
133 unsigned int mac_size; 133 int mac_size;
134 134
135 ssl2_read_again: 135 ssl2_read_again:
136 if (SSL_in_init(s) && !s->in_handshake) 136 if (SSL_in_init(s) && !s->in_handshake)
@@ -246,7 +246,9 @@ static int ssl2_read_internal(SSL *s, void *buf, int len, int peek)
246 } 246 }
247 else 247 else
248 { 248 {
249 mac_size=EVP_MD_size(s->read_hash); 249 mac_size=EVP_MD_CTX_size(s->read_hash);
250 if (mac_size < 0)
251 return -1;
250 OPENSSL_assert(mac_size <= MAX_MAC_SIZE); 252 OPENSSL_assert(mac_size <= MAX_MAC_SIZE);
251 s->s2->mac_data=p; 253 s->s2->mac_data=p;
252 s->s2->ract_data= &p[mac_size]; 254 s->s2->ract_data= &p[mac_size];
@@ -261,7 +263,7 @@ static int ssl2_read_internal(SSL *s, void *buf, int len, int peek)
261 /* added a check for length > max_size in case 263 /* added a check for length > max_size in case
262 * encryption was not turned on yet due to an error */ 264 * encryption was not turned on yet due to an error */
263 if ((!s->s2->clear_text) && 265 if ((!s->s2->clear_text) &&
264 (s->s2->rlength >= mac_size)) 266 (s->s2->rlength >= (unsigned int)mac_size))
265 { 267 {
266 ssl2_enc(s,0); 268 ssl2_enc(s,0);
267 s->s2->ract_data_length-=mac_size; 269 s->s2->ract_data_length-=mac_size;
@@ -447,7 +449,7 @@ int ssl2_write(SSL *s, const void *_buf, int len)
447 n=(len-tot); 449 n=(len-tot);
448 for (;;) 450 for (;;)
449 { 451 {
450 i=do_ssl_write(s,&(buf[tot]),n); 452 i=n_do_ssl_write(s,&(buf[tot]),n);
451 if (i <= 0) 453 if (i <= 0)
452 { 454 {
453 s->s2->wnum=tot; 455 s->s2->wnum=tot;
@@ -511,9 +513,10 @@ static int write_pending(SSL *s, const unsigned char *buf, unsigned int len)
511 } 513 }
512 } 514 }
513 515
514static int do_ssl_write(SSL *s, const unsigned char *buf, unsigned int len) 516static int n_do_ssl_write(SSL *s, const unsigned char *buf, unsigned int len)
515 { 517 {
516 unsigned int j,k,olen,p,mac_size,bs; 518 unsigned int j,k,olen,p,bs;
519 int mac_size;
517 register unsigned char *pp; 520 register unsigned char *pp;
518 521
519 olen=len; 522 olen=len;
@@ -529,7 +532,11 @@ static int do_ssl_write(SSL *s, const unsigned char *buf, unsigned int len)
529 if (s->s2->clear_text) 532 if (s->s2->clear_text)
530 mac_size=0; 533 mac_size=0;
531 else 534 else
532 mac_size=EVP_MD_size(s->write_hash); 535 {
536 mac_size=EVP_MD_CTX_size(s->write_hash);
537 if (mac_size < 0)
538 return -1;
539 }
533 540
534 /* lets set the pad p */ 541 /* lets set the pad p */
535 if (s->s2->clear_text) 542 if (s->s2->clear_text)
diff --git a/src/lib/libssl/src/ssl/s2_srvr.c b/src/lib/libssl/src/ssl/s2_srvr.c
index 50d55e6bf1..1434e734dd 100644
--- a/src/lib/libssl/src/ssl/s2_srvr.c
+++ b/src/lib/libssl/src/ssl/s2_srvr.c
@@ -117,7 +117,7 @@
117#include <openssl/objects.h> 117#include <openssl/objects.h>
118#include <openssl/evp.h> 118#include <openssl/evp.h>
119 119
120static SSL_METHOD *ssl2_get_server_method(int ver); 120static const SSL_METHOD *ssl2_get_server_method(int ver);
121static int get_client_master_key(SSL *s); 121static int get_client_master_key(SSL *s);
122static int get_client_hello(SSL *s); 122static int get_client_hello(SSL *s);
123static int server_hello(SSL *s); 123static int server_hello(SSL *s);
@@ -129,7 +129,7 @@ static int ssl_rsa_private_decrypt(CERT *c, int len, unsigned char *from,
129 unsigned char *to,int padding); 129 unsigned char *to,int padding);
130#define BREAK break 130#define BREAK break
131 131
132static SSL_METHOD *ssl2_get_server_method(int ver) 132static const SSL_METHOD *ssl2_get_server_method(int ver)
133 { 133 {
134 if (ver == SSL2_VERSION) 134 if (ver == SSL2_VERSION)
135 return(SSLv2_server_method()); 135 return(SSLv2_server_method());
@@ -267,7 +267,7 @@ int ssl2_accept(SSL *s)
267 case SSL2_ST_SEND_SERVER_VERIFY_C: 267 case SSL2_ST_SEND_SERVER_VERIFY_C:
268 /* get the number of bytes to write */ 268 /* get the number of bytes to write */
269 num1=BIO_ctrl(s->wbio,BIO_CTRL_INFO,0,NULL); 269 num1=BIO_ctrl(s->wbio,BIO_CTRL_INFO,0,NULL);
270 if (num1 != 0) 270 if (num1 > 0)
271 { 271 {
272 s->rwstate=SSL_WRITING; 272 s->rwstate=SSL_WRITING;
273 num1=BIO_flush(s->wbio); 273 num1=BIO_flush(s->wbio);
@@ -366,7 +366,7 @@ static int get_client_master_key(SSL *s)
366 int is_export,i,n,keya,ek; 366 int is_export,i,n,keya,ek;
367 unsigned long len; 367 unsigned long len;
368 unsigned char *p; 368 unsigned char *p;
369 SSL_CIPHER *cp; 369 const SSL_CIPHER *cp;
370 const EVP_CIPHER *c; 370 const EVP_CIPHER *c;
371 const EVP_MD *md; 371 const EVP_MD *md;
372 372
@@ -451,7 +451,7 @@ static int get_client_master_key(SSL *s)
451 451
452 is_export=SSL_C_IS_EXPORT(s->session->cipher); 452 is_export=SSL_C_IS_EXPORT(s->session->cipher);
453 453
454 if (!ssl_cipher_get_evp(s->session,&c,&md,NULL)) 454 if (!ssl_cipher_get_evp(s->session,&c,&md,NULL,NULL,NULL))
455 { 455 {
456 ssl2_return_error(s,SSL2_PE_NO_CIPHER); 456 ssl2_return_error(s,SSL2_PE_NO_CIPHER);
457 SSLerr(SSL_F_GET_CLIENT_MASTER_KEY,SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS); 457 SSLerr(SSL_F_GET_CLIENT_MASTER_KEY,SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS);
diff --git a/src/lib/libssl/src/ssl/s3_both.c b/src/lib/libssl/src/ssl/s3_both.c
index 2ecfbb77cb..a6d869df59 100644
--- a/src/lib/libssl/src/ssl/s3_both.c
+++ b/src/lib/libssl/src/ssl/s3_both.c
@@ -160,14 +160,29 @@ int ssl3_send_finished(SSL *s, int a, int b, const char *sender, int slen)
160 p= &(d[4]); 160 p= &(d[4]);
161 161
162 i=s->method->ssl3_enc->final_finish_mac(s, 162 i=s->method->ssl3_enc->final_finish_mac(s,
163 &(s->s3->finish_dgst1),
164 &(s->s3->finish_dgst2),
165 sender,slen,s->s3->tmp.finish_md); 163 sender,slen,s->s3->tmp.finish_md);
166 s->s3->tmp.finish_md_len = i; 164 s->s3->tmp.finish_md_len = i;
167 memcpy(p, s->s3->tmp.finish_md, i); 165 memcpy(p, s->s3->tmp.finish_md, i);
168 p+=i; 166 p+=i;
169 l=i; 167 l=i;
170 168
169 /* Copy the finished so we can use it for
170 renegotiation checks */
171 if(s->type == SSL_ST_CONNECT)
172 {
173 OPENSSL_assert(i <= EVP_MAX_MD_SIZE);
174 memcpy(s->s3->previous_client_finished,
175 s->s3->tmp.finish_md, i);
176 s->s3->previous_client_finished_len=i;
177 }
178 else
179 {
180 OPENSSL_assert(i <= EVP_MAX_MD_SIZE);
181 memcpy(s->s3->previous_server_finished,
182 s->s3->tmp.finish_md, i);
183 s->s3->previous_server_finished_len=i;
184 }
185
171#ifdef OPENSSL_SYS_WIN16 186#ifdef OPENSSL_SYS_WIN16
172 /* MSVC 1.5 does not clear the top bytes of the word unless 187 /* MSVC 1.5 does not clear the top bytes of the word unless
173 * I do this. 188 * I do this.
@@ -232,6 +247,23 @@ int ssl3_get_finished(SSL *s, int a, int b)
232 goto f_err; 247 goto f_err;
233 } 248 }
234 249
250 /* Copy the finished so we can use it for
251 renegotiation checks */
252 if(s->type == SSL_ST_ACCEPT)
253 {
254 OPENSSL_assert(i <= EVP_MAX_MD_SIZE);
255 memcpy(s->s3->previous_client_finished,
256 s->s3->tmp.peer_finish_md, i);
257 s->s3->previous_client_finished_len=i;
258 }
259 else
260 {
261 OPENSSL_assert(i <= EVP_MAX_MD_SIZE);
262 memcpy(s->s3->previous_server_finished,
263 s->s3->tmp.peer_finish_md, i);
264 s->s3->previous_server_finished_len=i;
265 }
266
235 return(1); 267 return(1);
236f_err: 268f_err:
237 ssl3_send_alert(s,SSL3_AL_FATAL,al); 269 ssl3_send_alert(s,SSL3_AL_FATAL,al);
@@ -264,15 +296,31 @@ int ssl3_send_change_cipher_spec(SSL *s, int a, int b)
264 return(ssl3_do_write(s,SSL3_RT_CHANGE_CIPHER_SPEC)); 296 return(ssl3_do_write(s,SSL3_RT_CHANGE_CIPHER_SPEC));
265 } 297 }
266 298
299static int ssl3_add_cert_to_buf(BUF_MEM *buf, unsigned long *l, X509 *x)
300 {
301 int n;
302 unsigned char *p;
303
304 n=i2d_X509(x,NULL);
305 if (!BUF_MEM_grow_clean(buf,(int)(n+(*l)+3)))
306 {
307 SSLerr(SSL_F_SSL3_ADD_CERT_TO_BUF,ERR_R_BUF_LIB);
308 return(-1);
309 }
310 p=(unsigned char *)&(buf->data[*l]);
311 l2n3(n,p);
312 i2d_X509(x,&p);
313 *l+=n+3;
314
315 return(0);
316 }
317
267unsigned long ssl3_output_cert_chain(SSL *s, X509 *x) 318unsigned long ssl3_output_cert_chain(SSL *s, X509 *x)
268 { 319 {
269 unsigned char *p; 320 unsigned char *p;
270 int n,i; 321 int i;
271 unsigned long l=7; 322 unsigned long l=7;
272 BUF_MEM *buf; 323 BUF_MEM *buf;
273 X509_STORE_CTX xs_ctx;
274 X509_OBJECT obj;
275
276 int no_chain; 324 int no_chain;
277 325
278 if ((s->mode & SSL_MODE_NO_AUTO_CHAIN) || s->ctx->extra_certs) 326 if ((s->mode & SSL_MODE_NO_AUTO_CHAIN) || s->ctx->extra_certs)
@@ -289,58 +337,42 @@ unsigned long ssl3_output_cert_chain(SSL *s, X509 *x)
289 } 337 }
290 if (x != NULL) 338 if (x != NULL)
291 { 339 {
292 if(!no_chain && !X509_STORE_CTX_init(&xs_ctx,s->ctx->cert_store,NULL,NULL)) 340 if (no_chain)
293 { 341 {
294 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN,ERR_R_X509_LIB); 342 if (ssl3_add_cert_to_buf(buf, &l, x))
295 return(0); 343 return(0);
296 } 344 }
297 345 else
298 for (;;)
299 { 346 {
300 n=i2d_X509(x,NULL); 347 X509_STORE_CTX xs_ctx;
301 if (!BUF_MEM_grow_clean(buf,(int)(n+l+3))) 348
349 if (!X509_STORE_CTX_init(&xs_ctx,s->ctx->cert_store,x,NULL))
302 { 350 {
303 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN,ERR_R_BUF_LIB); 351 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN,ERR_R_X509_LIB);
304 return(0); 352 return(0);
305 } 353 }
306 p=(unsigned char *)&(buf->data[l]); 354 X509_verify_cert(&xs_ctx);
307 l2n3(n,p); 355 /* Don't leave errors in the queue */
308 i2d_X509(x,&p); 356 ERR_clear_error();
309 l+=n+3; 357 for (i=0; i < sk_X509_num(xs_ctx.chain); i++)
310 358 {
311 if (no_chain) 359 x = sk_X509_value(xs_ctx.chain, i);
312 break; 360
313 361 if (ssl3_add_cert_to_buf(buf, &l, x))
314 if (X509_NAME_cmp(X509_get_subject_name(x), 362 {
315 X509_get_issuer_name(x)) == 0) break; 363 X509_STORE_CTX_cleanup(&xs_ctx);
316 364 return 0;
317 i=X509_STORE_get_by_subject(&xs_ctx,X509_LU_X509, 365 }
318 X509_get_issuer_name(x),&obj); 366 }
319 if (i <= 0) break;
320 x=obj.data.x509;
321 /* Count is one too high since the X509_STORE_get uped the
322 * ref count */
323 X509_free(x);
324 }
325 if (!no_chain)
326 X509_STORE_CTX_cleanup(&xs_ctx); 367 X509_STORE_CTX_cleanup(&xs_ctx);
368 }
327 } 369 }
328
329 /* Thawte special :-) */ 370 /* Thawte special :-) */
330 if (s->ctx->extra_certs != NULL)
331 for (i=0; i<sk_X509_num(s->ctx->extra_certs); i++) 371 for (i=0; i<sk_X509_num(s->ctx->extra_certs); i++)
332 { 372 {
333 x=sk_X509_value(s->ctx->extra_certs,i); 373 x=sk_X509_value(s->ctx->extra_certs,i);
334 n=i2d_X509(x,NULL); 374 if (ssl3_add_cert_to_buf(buf, &l, x))
335 if (!BUF_MEM_grow_clean(buf,(int)(n+l+3)))
336 {
337 SSLerr(SSL_F_SSL3_OUTPUT_CERT_CHAIN,ERR_R_BUF_LIB);
338 return(0); 375 return(0);
339 }
340 p=(unsigned char *)&(buf->data[l]);
341 l2n3(n,p);
342 i2d_X509(x,&p);
343 l+=n+3;
344 } 376 }
345 377
346 l-=7; 378 l-=7;
@@ -518,9 +550,16 @@ int ssl_cert_type(X509 *x, EVP_PKEY *pkey)
518 else if (i == EVP_PKEY_EC) 550 else if (i == EVP_PKEY_EC)
519 { 551 {
520 ret = SSL_PKEY_ECC; 552 ret = SSL_PKEY_ECC;
521 } 553 }
522#endif 554#endif
523 555 else if (i == NID_id_GostR3410_94 || i == NID_id_GostR3410_94_cc)
556 {
557 ret = SSL_PKEY_GOST94;
558 }
559 else if (i == NID_id_GostR3410_2001 || i == NID_id_GostR3410_2001_cc)
560 {
561 ret = SSL_PKEY_GOST01;
562 }
524err: 563err:
525 if(!pkey) EVP_PKEY_free(pk); 564 if(!pkey) EVP_PKEY_free(pk);
526 return(ret); 565 return(ret);
@@ -586,37 +625,189 @@ int ssl_verify_alarm_type(long type)
586 return(al); 625 return(al);
587 } 626 }
588 627
589int ssl3_setup_buffers(SSL *s) 628#ifndef OPENSSL_NO_BUF_FREELISTS
629/* On some platforms, malloc() performance is bad enough that you can't just
630 * free() and malloc() buffers all the time, so we need to use freelists from
631 * unused buffers. Currently, each freelist holds memory chunks of only a
632 * given size (list->chunklen); other sized chunks are freed and malloced.
633 * This doesn't help much if you're using many different SSL option settings
634 * with a given context. (The options affecting buffer size are
635 * max_send_fragment, read buffer vs write buffer,
636 * SSL_OP_MICROSOFT_BIG_WRITE_BUFFER, SSL_OP_NO_COMPRESSION, and
637 * SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS.) Using a separate freelist for every
638 * possible size is not an option, since max_send_fragment can take on many
639 * different values.
640 *
641 * If you are on a platform with a slow malloc(), and you're using SSL
642 * connections with many different settings for these options, and you need to
643 * use the SSL_MOD_RELEASE_BUFFERS feature, you have a few options:
644 * - Link against a faster malloc implementation.
645 * - Use a separate SSL_CTX for each option set.
646 * - Improve this code.
647 */
648static void *
649freelist_extract(SSL_CTX *ctx, int for_read, int sz)
650 {
651 SSL3_BUF_FREELIST *list;
652 SSL3_BUF_FREELIST_ENTRY *ent = NULL;
653 void *result = NULL;
654
655 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
656 list = for_read ? ctx->rbuf_freelist : ctx->wbuf_freelist;
657 if (list != NULL && sz == (int)list->chunklen)
658 ent = list->head;
659 if (ent != NULL)
660 {
661 list->head = ent->next;
662 result = ent;
663 if (--list->len == 0)
664 list->chunklen = 0;
665 }
666 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
667 if (!result)
668 result = OPENSSL_malloc(sz);
669 return result;
670}
671
672static void
673freelist_insert(SSL_CTX *ctx, int for_read, size_t sz, void *mem)
674 {
675 SSL3_BUF_FREELIST *list;
676 SSL3_BUF_FREELIST_ENTRY *ent;
677
678 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
679 list = for_read ? ctx->rbuf_freelist : ctx->wbuf_freelist;
680 if (list != NULL &&
681 (sz == list->chunklen || list->chunklen == 0) &&
682 list->len < ctx->freelist_max_len &&
683 sz >= sizeof(*ent))
684 {
685 list->chunklen = sz;
686 ent = mem;
687 ent->next = list->head;
688 list->head = ent;
689 ++list->len;
690 mem = NULL;
691 }
692
693 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
694 if (mem)
695 OPENSSL_free(mem);
696 }
697#else
698#define freelist_extract(c,fr,sz) OPENSSL_malloc(sz)
699#define freelist_insert(c,fr,sz,m) OPENSSL_free(m)
700#endif
701
702int ssl3_setup_read_buffer(SSL *s)
590 { 703 {
591 unsigned char *p; 704 unsigned char *p;
592 unsigned int extra; 705 size_t len,align=0,headerlen;
593 size_t len; 706
707 if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER)
708 headerlen = DTLS1_RT_HEADER_LENGTH;
709 else
710 headerlen = SSL3_RT_HEADER_LENGTH;
711
712#if defined(SSL3_ALIGN_PAYLOAD) && SSL3_ALIGN_PAYLOAD!=0
713 align = (-SSL3_RT_HEADER_LENGTH)&(SSL3_ALIGN_PAYLOAD-1);
714#endif
594 715
595 if (s->s3->rbuf.buf == NULL) 716 if (s->s3->rbuf.buf == NULL)
596 { 717 {
718 len = SSL3_RT_MAX_PLAIN_LENGTH
719 + SSL3_RT_MAX_ENCRYPTED_OVERHEAD
720 + headerlen + align;
597 if (s->options & SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER) 721 if (s->options & SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER)
598 extra=SSL3_RT_MAX_EXTRA; 722 {
599 else 723 s->s3->init_extra = 1;
600 extra=0; 724 len += SSL3_RT_MAX_EXTRA;
601 len = SSL3_RT_MAX_PACKET_SIZE + extra; 725 }
602 if ((p=OPENSSL_malloc(len)) == NULL) 726#ifndef OPENSSL_NO_COMP
727 if (!(s->options & SSL_OP_NO_COMPRESSION))
728 len += SSL3_RT_MAX_COMPRESSED_OVERHEAD;
729#endif
730 if ((p=freelist_extract(s->ctx, 1, len)) == NULL)
603 goto err; 731 goto err;
604 s->s3->rbuf.buf = p; 732 s->s3->rbuf.buf = p;
605 s->s3->rbuf.len = len; 733 s->s3->rbuf.len = len;
606 } 734 }
607 735
736 s->packet= &(s->s3->rbuf.buf[0]);
737 return 1;
738
739err:
740 SSLerr(SSL_F_SSL3_SETUP_READ_BUFFER,ERR_R_MALLOC_FAILURE);
741 return 0;
742 }
743
744int ssl3_setup_write_buffer(SSL *s)
745 {
746 unsigned char *p;
747 size_t len,align=0,headerlen;
748
749 if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER)
750 headerlen = DTLS1_RT_HEADER_LENGTH + 1;
751 else
752 headerlen = SSL3_RT_HEADER_LENGTH;
753
754#if defined(SSL3_ALIGN_PAYLOAD) && SSL3_ALIGN_PAYLOAD!=0
755 align = (-SSL3_RT_HEADER_LENGTH)&(SSL3_ALIGN_PAYLOAD-1);
756#endif
757
608 if (s->s3->wbuf.buf == NULL) 758 if (s->s3->wbuf.buf == NULL)
609 { 759 {
610 len = SSL3_RT_MAX_PACKET_SIZE; 760 len = s->max_send_fragment
611 len += SSL3_RT_HEADER_LENGTH + 256; /* extra space for empty fragment */ 761 + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD
612 if ((p=OPENSSL_malloc(len)) == NULL) 762 + headerlen + align;
763#ifndef OPENSSL_NO_COMP
764 if (!(s->options & SSL_OP_NO_COMPRESSION))
765 len += SSL3_RT_MAX_COMPRESSED_OVERHEAD;
766#endif
767 if (!(s->options & SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS))
768 len += headerlen + align
769 + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD;
770
771 if ((p=freelist_extract(s->ctx, 0, len)) == NULL)
613 goto err; 772 goto err;
614 s->s3->wbuf.buf = p; 773 s->s3->wbuf.buf = p;
615 s->s3->wbuf.len = len; 774 s->s3->wbuf.len = len;
616 } 775 }
617 s->packet= &(s->s3->rbuf.buf[0]); 776
618 return(1); 777 return 1;
778
619err: 779err:
620 SSLerr(SSL_F_SSL3_SETUP_BUFFERS,ERR_R_MALLOC_FAILURE); 780 SSLerr(SSL_F_SSL3_SETUP_WRITE_BUFFER,ERR_R_MALLOC_FAILURE);
621 return(0); 781 return 0;
782 }
783
784
785int ssl3_setup_buffers(SSL *s)
786 {
787 if (!ssl3_setup_read_buffer(s))
788 return 0;
789 if (!ssl3_setup_write_buffer(s))
790 return 0;
791 return 1;
622 } 792 }
793
794int ssl3_release_write_buffer(SSL *s)
795 {
796 if (s->s3->wbuf.buf != NULL)
797 {
798 freelist_insert(s->ctx, 0, s->s3->wbuf.len, s->s3->wbuf.buf);
799 s->s3->wbuf.buf = NULL;
800 }
801 return 1;
802 }
803
804int ssl3_release_read_buffer(SSL *s)
805 {
806 if (s->s3->rbuf.buf != NULL)
807 {
808 freelist_insert(s->ctx, 1, s->s3->rbuf.len, s->s3->rbuf.buf);
809 s->s3->rbuf.buf = NULL;
810 }
811 return 1;
812 }
813
diff --git a/src/lib/libssl/src/ssl/s3_clnt.c b/src/lib/libssl/src/ssl/s3_clnt.c
index 50308487aa..41769febab 100644
--- a/src/lib/libssl/src/ssl/s3_clnt.c
+++ b/src/lib/libssl/src/ssl/s3_clnt.c
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -121,6 +121,32 @@
121 * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories. 121 * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories.
122 * 122 *
123 */ 123 */
124/* ====================================================================
125 * Copyright 2005 Nokia. All rights reserved.
126 *
127 * The portions of the attached software ("Contribution") is developed by
128 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
129 * license.
130 *
131 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
132 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
133 * support (see RFC 4279) to OpenSSL.
134 *
135 * No patent licenses or other rights except those expressly stated in
136 * the OpenSSL open source license shall be deemed granted or received
137 * expressly, by implication, estoppel, or otherwise.
138 *
139 * No assurances are provided by Nokia that the Contribution does not
140 * infringe the patent or other intellectual property rights of any third
141 * party or that the license provides you with all the necessary rights
142 * to make use of the Contribution.
143 *
144 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
145 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
146 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
147 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
148 * OTHERWISE.
149 */
124 150
125#include <stdio.h> 151#include <stdio.h>
126#include "ssl_locl.h" 152#include "ssl_locl.h"
@@ -130,10 +156,6 @@
130#include <openssl/objects.h> 156#include <openssl/objects.h>
131#include <openssl/evp.h> 157#include <openssl/evp.h>
132#include <openssl/md5.h> 158#include <openssl/md5.h>
133#ifdef OPENSSL_FIPS
134#include <openssl/fips.h>
135#endif
136
137#ifndef OPENSSL_NO_DH 159#ifndef OPENSSL_NO_DH
138#include <openssl/dh.h> 160#include <openssl/dh.h>
139#endif 161#endif
@@ -142,18 +164,10 @@
142#include <openssl/engine.h> 164#include <openssl/engine.h>
143#endif 165#endif
144 166
145static SSL_METHOD *ssl3_get_client_method(int ver); 167static const SSL_METHOD *ssl3_get_client_method(int ver);
146static int ca_dn_cmp(const X509_NAME * const *a,const X509_NAME * const *b); 168static int ca_dn_cmp(const X509_NAME * const *a,const X509_NAME * const *b);
147#ifndef OPENSSL_NO_TLSEXT
148static int ssl3_check_finished(SSL *s);
149#endif
150 169
151#ifndef OPENSSL_NO_ECDH 170static const SSL_METHOD *ssl3_get_client_method(int ver)
152static int curve_id2nid(int curve_id);
153int check_srvr_ecc_cert_and_alg(X509 *x, SSL_CIPHER *cs);
154#endif
155
156static SSL_METHOD *ssl3_get_client_method(int ver)
157 { 171 {
158 if (ver == SSL3_VERSION) 172 if (ver == SSL3_VERSION)
159 return(SSLv3_client_method()); 173 return(SSLv3_client_method());
@@ -169,8 +183,7 @@ IMPLEMENT_ssl3_meth_func(SSLv3_client_method,
169int ssl3_connect(SSL *s) 183int ssl3_connect(SSL *s)
170 { 184 {
171 BUF_MEM *buf=NULL; 185 BUF_MEM *buf=NULL;
172 unsigned long Time=(unsigned long)time(NULL),l; 186 unsigned long Time=(unsigned long)time(NULL);
173 long num1;
174 void (*cb)(const SSL *ssl,int type,int val)=NULL; 187 void (*cb)(const SSL *ssl,int type,int val)=NULL;
175 int ret= -1; 188 int ret= -1;
176 int new_state,state,skip=0; 189 int new_state,state,skip=0;
@@ -265,6 +278,7 @@ int ssl3_connect(SSL *s)
265 case SSL3_ST_CR_SRVR_HELLO_B: 278 case SSL3_ST_CR_SRVR_HELLO_B:
266 ret=ssl3_get_server_hello(s); 279 ret=ssl3_get_server_hello(s);
267 if (ret <= 0) goto end; 280 if (ret <= 0) goto end;
281
268 if (s->hit) 282 if (s->hit)
269 s->state=SSL3_ST_CR_FINISHED_A; 283 s->state=SSL3_ST_CR_FINISHED_A;
270 else 284 else
@@ -289,7 +303,9 @@ int ssl3_connect(SSL *s)
289 } 303 }
290#endif 304#endif
291 /* Check if it is anon DH/ECDH */ 305 /* Check if it is anon DH/ECDH */
292 if (!(s->s3->tmp.new_cipher->algorithms & SSL_aNULL)) 306 /* or PSK */
307 if (!(s->s3->tmp.new_cipher->algorithm_auth & SSL_aNULL) &&
308 !(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK))
293 { 309 {
294 ret=ssl3_get_server_certificate(s); 310 ret=ssl3_get_server_certificate(s);
295 if (ret <= 0) goto end; 311 if (ret <= 0) goto end;
@@ -364,7 +380,6 @@ int ssl3_connect(SSL *s)
364 case SSL3_ST_CW_KEY_EXCH_B: 380 case SSL3_ST_CW_KEY_EXCH_B:
365 ret=ssl3_send_client_key_exchange(s); 381 ret=ssl3_send_client_key_exchange(s);
366 if (ret <= 0) goto end; 382 if (ret <= 0) goto end;
367 l=s->s3->tmp.new_cipher->algorithms;
368 /* EAY EAY EAY need to check for DH fix cert 383 /* EAY EAY EAY need to check for DH fix cert
369 * sent back */ 384 * sent back */
370 /* For TLS, cert_req is set to 2, so a cert chain 385 /* For TLS, cert_req is set to 2, so a cert chain
@@ -385,6 +400,11 @@ int ssl3_connect(SSL *s)
385 s->state=SSL3_ST_CW_CHANGE_A; 400 s->state=SSL3_ST_CW_CHANGE_A;
386 s->s3->change_cipher_spec=0; 401 s->s3->change_cipher_spec=0;
387 } 402 }
403 if (s->s3->flags & TLS1_FLAGS_SKIP_CERT_VERIFY)
404 {
405 s->state=SSL3_ST_CW_CHANGE_A;
406 s->s3->change_cipher_spec=0;
407 }
388 408
389 s->init_num=0; 409 s->init_num=0;
390 break; 410 break;
@@ -499,16 +519,13 @@ int ssl3_connect(SSL *s)
499 break; 519 break;
500 520
501 case SSL3_ST_CW_FLUSH: 521 case SSL3_ST_CW_FLUSH:
502 /* number of bytes to be flushed */ 522 s->rwstate=SSL_WRITING;
503 num1=BIO_ctrl(s->wbio,BIO_CTRL_INFO,0,NULL); 523 if (BIO_flush(s->wbio) <= 0)
504 if (num1 > 0)
505 { 524 {
506 s->rwstate=SSL_WRITING; 525 ret= -1;
507 num1=BIO_flush(s->wbio); 526 goto end;
508 if (num1 <= 0) { ret= -1; goto end; }
509 s->rwstate=SSL_NOTHING;
510 } 527 }
511 528 s->rwstate=SSL_NOTHING;
512 s->state=s->s3->tmp.next_state; 529 s->state=s->s3->tmp.next_state;
513 break; 530 break;
514 531
@@ -594,9 +611,15 @@ int ssl3_client_hello(SSL *s)
594 buf=(unsigned char *)s->init_buf->data; 611 buf=(unsigned char *)s->init_buf->data;
595 if (s->state == SSL3_ST_CW_CLNT_HELLO_A) 612 if (s->state == SSL3_ST_CW_CLNT_HELLO_A)
596 { 613 {
597 if ((s->session == NULL) || 614 SSL_SESSION *sess = s->session;
598 (s->session->ssl_version != s->version) || 615 if ((sess == NULL) ||
599 (s->session->not_resumable)) 616 (sess->ssl_version != s->version) ||
617#ifdef OPENSSL_NO_TLSEXT
618 !sess->session_id_length ||
619#else
620 (!sess->session_id_length && !sess->tlsext_tick) ||
621#endif
622 (sess->not_resumable))
600 { 623 {
601 if (!ssl_get_new_session(s,0)) 624 if (!ssl_get_new_session(s,0))
602 goto err; 625 goto err;
@@ -651,7 +674,9 @@ int ssl3_client_hello(SSL *s)
651#ifdef OPENSSL_NO_COMP 674#ifdef OPENSSL_NO_COMP
652 *(p++)=1; 675 *(p++)=1;
653#else 676#else
654 if (s->ctx->comp_methods == NULL) 677
678 if ((s->options & SSL_OP_NO_COMPRESSION)
679 || !s->ctx->comp_methods)
655 j=0; 680 j=0;
656 else 681 else
657 j=sk_SSL_COMP_num(s->ctx->comp_methods); 682 j=sk_SSL_COMP_num(s->ctx->comp_methods);
@@ -663,13 +688,21 @@ int ssl3_client_hello(SSL *s)
663 } 688 }
664#endif 689#endif
665 *(p++)=0; /* Add the NULL method */ 690 *(p++)=0; /* Add the NULL method */
691
666#ifndef OPENSSL_NO_TLSEXT 692#ifndef OPENSSL_NO_TLSEXT
693 /* TLS extensions*/
694 if (ssl_prepare_clienthello_tlsext(s) <= 0)
695 {
696 SSLerr(SSL_F_SSL3_CLIENT_HELLO,SSL_R_CLIENTHELLO_TLSEXT);
697 goto err;
698 }
667 if ((p = ssl_add_clienthello_tlsext(s, p, buf+SSL3_RT_MAX_PLAIN_LENGTH)) == NULL) 699 if ((p = ssl_add_clienthello_tlsext(s, p, buf+SSL3_RT_MAX_PLAIN_LENGTH)) == NULL)
668 { 700 {
669 SSLerr(SSL_F_SSL3_CLIENT_HELLO,ERR_R_INTERNAL_ERROR); 701 SSLerr(SSL_F_SSL3_CLIENT_HELLO,ERR_R_INTERNAL_ERROR);
670 goto err; 702 goto err;
671 } 703 }
672#endif 704#endif
705
673 l=(p-d); 706 l=(p-d);
674 d=buf; 707 d=buf;
675 *(d++)=SSL3_MT_CLIENT_HELLO; 708 *(d++)=SSL3_MT_CLIENT_HELLO;
@@ -690,7 +723,7 @@ err:
690int ssl3_get_server_hello(SSL *s) 723int ssl3_get_server_hello(SSL *s)
691 { 724 {
692 STACK_OF(SSL_CIPHER) *sk; 725 STACK_OF(SSL_CIPHER) *sk;
693 SSL_CIPHER *c; 726 const SSL_CIPHER *c;
694 unsigned char *p,*d; 727 unsigned char *p,*d;
695 int i,al,ok; 728 int i,al,ok;
696 unsigned int j; 729 unsigned int j;
@@ -708,7 +741,7 @@ int ssl3_get_server_hello(SSL *s)
708 741
709 if (!ok) return((int)n); 742 if (!ok) return((int)n);
710 743
711 if ( SSL_version(s) == DTLS1_VERSION) 744 if ( SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER)
712 { 745 {
713 if ( s->s3->tmp.message_type == DTLS1_MT_HELLO_VERIFY_REQUEST) 746 if ( s->s3->tmp.message_type == DTLS1_MT_HELLO_VERIFY_REQUEST)
714 { 747 {
@@ -759,6 +792,23 @@ int ssl3_get_server_hello(SSL *s)
759 goto f_err; 792 goto f_err;
760 } 793 }
761 794
795#ifndef OPENSSL_NO_TLSEXT
796 /* check if we want to resume the session based on external pre-shared secret */
797 if (s->version >= TLS1_VERSION && s->tls_session_secret_cb)
798 {
799 SSL_CIPHER *pref_cipher=NULL;
800 s->session->master_key_length=sizeof(s->session->master_key);
801 if (s->tls_session_secret_cb(s, s->session->master_key,
802 &s->session->master_key_length,
803 NULL, &pref_cipher,
804 s->tls_session_secret_cb_arg))
805 {
806 s->session->cipher = pref_cipher ?
807 pref_cipher : ssl_get_cipher_by_char(s, p+j);
808 }
809 }
810#endif /* OPENSSL_NO_TLSEXT */
811
762 if (j != 0 && j == s->session->session_id_length 812 if (j != 0 && j == s->session->session_id_length
763 && memcmp(p,s->session->session_id,j) == 0) 813 && memcmp(p,s->session->session_id,j) == 0)
764 { 814 {
@@ -825,6 +875,8 @@ int ssl3_get_server_hello(SSL *s)
825 } 875 }
826 } 876 }
827 s->s3->tmp.new_cipher=c; 877 s->s3->tmp.new_cipher=c;
878 if (!ssl3_digest_cached_records(s))
879 goto f_err;
828 880
829 /* lets get the compression algorithm */ 881 /* lets get the compression algorithm */
830 /* COMPRESSION */ 882 /* COMPRESSION */
@@ -835,10 +887,31 @@ int ssl3_get_server_hello(SSL *s)
835 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM); 887 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM);
836 goto f_err; 888 goto f_err;
837 } 889 }
890 /* If compression is disabled we'd better not try to resume a session
891 * using compression.
892 */
893 if (s->session->compress_meth != 0)
894 {
895 al=SSL_AD_INTERNAL_ERROR;
896 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_INCONSISTENT_COMPRESSION);
897 goto f_err;
898 }
838#else 899#else
839 j= *(p++); 900 j= *(p++);
901 if (s->hit && j != s->session->compress_meth)
902 {
903 al=SSL_AD_ILLEGAL_PARAMETER;
904 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED);
905 goto f_err;
906 }
840 if (j == 0) 907 if (j == 0)
841 comp=NULL; 908 comp=NULL;
909 else if (s->options & SSL_OP_NO_COMPRESSION)
910 {
911 al=SSL_AD_ILLEGAL_PARAMETER;
912 SSLerr(SSL_F_SSL3_GET_SERVER_HELLO,SSL_R_COMPRESSION_DISABLED);
913 goto f_err;
914 }
842 else 915 else
843 comp=ssl3_comp_find(s->ctx->comp_methods,j); 916 comp=ssl3_comp_find(s->ctx->comp_methods,j);
844 917
@@ -853,9 +926,10 @@ int ssl3_get_server_hello(SSL *s)
853 s->s3->tmp.new_compression=comp; 926 s->s3->tmp.new_compression=comp;
854 } 927 }
855#endif 928#endif
929
856#ifndef OPENSSL_NO_TLSEXT 930#ifndef OPENSSL_NO_TLSEXT
857 /* TLS extensions*/ 931 /* TLS extensions*/
858 if (s->version > SSL3_VERSION) 932 if (s->version >= SSL3_VERSION)
859 { 933 {
860 if (!ssl_parse_serverhello_tlsext(s,&p,d,n, &al)) 934 if (!ssl_parse_serverhello_tlsext(s,&p,d,n, &al))
861 { 935 {
@@ -871,7 +945,6 @@ int ssl3_get_server_hello(SSL *s)
871 } 945 }
872#endif 946#endif
873 947
874
875 if (p != (d+n)) 948 if (p != (d+n))
876 { 949 {
877 /* wrong packet length */ 950 /* wrong packet length */
@@ -909,7 +982,7 @@ int ssl3_get_server_certificate(SSL *s)
909 if (!ok) return((int)n); 982 if (!ok) return((int)n);
910 983
911 if ((s->s3->tmp.message_type == SSL3_MT_SERVER_KEY_EXCHANGE) || 984 if ((s->s3->tmp.message_type == SSL3_MT_SERVER_KEY_EXCHANGE) ||
912 ((s->s3->tmp.new_cipher->algorithms & SSL_aKRB5) && 985 ((s->s3->tmp.new_cipher->algorithm_auth & SSL_aKRB5) &&
913 (s->s3->tmp.message_type == SSL3_MT_SERVER_DONE))) 986 (s->s3->tmp.message_type == SSL3_MT_SERVER_DONE)))
914 { 987 {
915 s->s3->tmp.reuse_message=1; 988 s->s3->tmp.reuse_message=1;
@@ -974,10 +1047,10 @@ int ssl3_get_server_certificate(SSL *s)
974 i=ssl_verify_cert_chain(s,sk); 1047 i=ssl_verify_cert_chain(s,sk);
975 if ((s->verify_mode != SSL_VERIFY_NONE) && (i <= 0) 1048 if ((s->verify_mode != SSL_VERIFY_NONE) && (i <= 0)
976#ifndef OPENSSL_NO_KRB5 1049#ifndef OPENSSL_NO_KRB5
977 && (s->s3->tmp.new_cipher->algorithms & (SSL_MKEY_MASK|SSL_AUTH_MASK)) 1050 && !((s->s3->tmp.new_cipher->algorithm_mkey & SSL_kKRB5) &&
978 != (SSL_aKRB5|SSL_kKRB5) 1051 (s->s3->tmp.new_cipher->algorithm_auth & SSL_aKRB5))
979#endif /* OPENSSL_NO_KRB5 */ 1052#endif /* OPENSSL_NO_KRB5 */
980 ) 1053 )
981 { 1054 {
982 al=ssl_verify_alarm_type(s->verify_result); 1055 al=ssl_verify_alarm_type(s->verify_result);
983 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,SSL_R_CERTIFICATE_VERIFY_FAILED); 1056 SSLerr(SSL_F_SSL3_GET_SERVER_CERTIFICATE,SSL_R_CERTIFICATE_VERIFY_FAILED);
@@ -1001,15 +1074,15 @@ int ssl3_get_server_certificate(SSL *s)
1001 pkey=X509_get_pubkey(x); 1074 pkey=X509_get_pubkey(x);
1002 1075
1003 /* VRS: allow null cert if auth == KRB5 */ 1076 /* VRS: allow null cert if auth == KRB5 */
1004 need_cert = ((s->s3->tmp.new_cipher->algorithms 1077 need_cert = ((s->s3->tmp.new_cipher->algorithm_mkey & SSL_kKRB5) &&
1005 & (SSL_MKEY_MASK|SSL_AUTH_MASK)) 1078 (s->s3->tmp.new_cipher->algorithm_auth & SSL_aKRB5))
1006 == (SSL_aKRB5|SSL_kKRB5))? 0: 1; 1079 ? 0 : 1;
1007 1080
1008#ifdef KSSL_DEBUG 1081#ifdef KSSL_DEBUG
1009 printf("pkey,x = %p, %p\n", (void *)pkey,(void *)x); 1082 printf("pkey,x = %p, %p\n", pkey,x);
1010 printf("ssl_cert_type(x,pkey) = %d\n", ssl_cert_type(x,pkey)); 1083 printf("ssl_cert_type(x,pkey) = %d\n", ssl_cert_type(x,pkey));
1011 printf("cipher, alg, nc = %s, %lx, %d\n", s->s3->tmp.new_cipher->name, 1084 printf("cipher, alg, nc = %s, %lx, %lx, %d\n", s->s3->tmp.new_cipher->name,
1012 s->s3->tmp.new_cipher->algorithms, need_cert); 1085 s->s3->tmp.new_cipher->algorithm_mkey, s->s3->tmp.new_cipher->algorithm_auth, need_cert);
1013#endif /* KSSL_DEBUG */ 1086#endif /* KSSL_DEBUG */
1014 1087
1015 if (need_cert && ((pkey == NULL) || EVP_PKEY_missing_parameters(pkey))) 1088 if (need_cert && ((pkey == NULL) || EVP_PKEY_missing_parameters(pkey)))
@@ -1081,7 +1154,7 @@ int ssl3_get_key_exchange(SSL *s)
1081 EVP_MD_CTX md_ctx; 1154 EVP_MD_CTX md_ctx;
1082 unsigned char *param,*p; 1155 unsigned char *param,*p;
1083 int al,i,j,param_len,ok; 1156 int al,i,j,param_len,ok;
1084 long n,alg; 1157 long n,alg_k,alg_a;
1085 EVP_PKEY *pkey=NULL; 1158 EVP_PKEY *pkey=NULL;
1086#ifndef OPENSSL_NO_RSA 1159#ifndef OPENSSL_NO_RSA
1087 RSA *rsa=NULL; 1160 RSA *rsa=NULL;
@@ -1105,17 +1178,28 @@ int ssl3_get_key_exchange(SSL *s)
1105 -1, 1178 -1,
1106 s->max_cert_list, 1179 s->max_cert_list,
1107 &ok); 1180 &ok);
1108
1109 if (!ok) return((int)n); 1181 if (!ok) return((int)n);
1110 1182
1111 if (s->s3->tmp.message_type != SSL3_MT_SERVER_KEY_EXCHANGE) 1183 if (s->s3->tmp.message_type != SSL3_MT_SERVER_KEY_EXCHANGE)
1112 { 1184 {
1185#ifndef OPENSSL_NO_PSK
1186 /* In plain PSK ciphersuite, ServerKeyExchange can be
1187 omitted if no identity hint is sent. Set
1188 session->sess_cert anyway to avoid problems
1189 later.*/
1190 if (s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK)
1191 {
1192 s->session->sess_cert=ssl_sess_cert_new();
1193 if (s->ctx->psk_identity_hint)
1194 OPENSSL_free(s->ctx->psk_identity_hint);
1195 s->ctx->psk_identity_hint = NULL;
1196 }
1197#endif
1113 s->s3->tmp.reuse_message=1; 1198 s->s3->tmp.reuse_message=1;
1114 return(1); 1199 return(1);
1115 } 1200 }
1116 1201
1117 param=p=(unsigned char *)s->init_msg; 1202 param=p=(unsigned char *)s->init_msg;
1118
1119 if (s->session->sess_cert != NULL) 1203 if (s->session->sess_cert != NULL)
1120 { 1204 {
1121#ifndef OPENSSL_NO_RSA 1205#ifndef OPENSSL_NO_RSA
@@ -1146,11 +1230,57 @@ int ssl3_get_key_exchange(SSL *s)
1146 } 1230 }
1147 1231
1148 param_len=0; 1232 param_len=0;
1149 alg=s->s3->tmp.new_cipher->algorithms; 1233 alg_k=s->s3->tmp.new_cipher->algorithm_mkey;
1234 alg_a=s->s3->tmp.new_cipher->algorithm_auth;
1150 EVP_MD_CTX_init(&md_ctx); 1235 EVP_MD_CTX_init(&md_ctx);
1151 1236
1237#ifndef OPENSSL_NO_PSK
1238 if (alg_k & SSL_kPSK)
1239 {
1240 char tmp_id_hint[PSK_MAX_IDENTITY_LEN+1];
1241
1242 al=SSL_AD_HANDSHAKE_FAILURE;
1243 n2s(p,i);
1244 param_len=i+2;
1245 /* Store PSK identity hint for later use, hint is used
1246 * in ssl3_send_client_key_exchange. Assume that the
1247 * maximum length of a PSK identity hint can be as
1248 * long as the maximum length of a PSK identity. */
1249 if (i > PSK_MAX_IDENTITY_LEN)
1250 {
1251 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,
1252 SSL_R_DATA_LENGTH_TOO_LONG);
1253 goto f_err;
1254 }
1255 if (param_len > n)
1256 {
1257 al=SSL_AD_DECODE_ERROR;
1258 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,
1259 SSL_R_BAD_PSK_IDENTITY_HINT_LENGTH);
1260 goto f_err;
1261 }
1262 /* If received PSK identity hint contains NULL
1263 * characters, the hint is truncated from the first
1264 * NULL. p may not be ending with NULL, so create a
1265 * NULL-terminated string. */
1266 memcpy(tmp_id_hint, p, i);
1267 memset(tmp_id_hint+i, 0, PSK_MAX_IDENTITY_LEN+1-i);
1268 if (s->ctx->psk_identity_hint != NULL)
1269 OPENSSL_free(s->ctx->psk_identity_hint);
1270 s->ctx->psk_identity_hint = BUF_strdup(tmp_id_hint);
1271 if (s->ctx->psk_identity_hint == NULL)
1272 {
1273 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE, ERR_R_MALLOC_FAILURE);
1274 goto f_err;
1275 }
1276
1277 p+=i;
1278 n-=param_len;
1279 }
1280 else
1281#endif /* !OPENSSL_NO_PSK */
1152#ifndef OPENSSL_NO_RSA 1282#ifndef OPENSSL_NO_RSA
1153 if (alg & SSL_kRSA) 1283 if (alg_k & SSL_kRSA)
1154 { 1284 {
1155 if ((rsa=RSA_new()) == NULL) 1285 if ((rsa=RSA_new()) == NULL)
1156 { 1286 {
@@ -1189,7 +1319,7 @@ int ssl3_get_key_exchange(SSL *s)
1189 n-=param_len; 1319 n-=param_len;
1190 1320
1191 /* this should be because we are using an export cipher */ 1321 /* this should be because we are using an export cipher */
1192 if (alg & SSL_aRSA) 1322 if (alg_a & SSL_aRSA)
1193 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509); 1323 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509);
1194 else 1324 else
1195 { 1325 {
@@ -1204,7 +1334,7 @@ int ssl3_get_key_exchange(SSL *s)
1204 ; 1334 ;
1205#endif 1335#endif
1206#ifndef OPENSSL_NO_DH 1336#ifndef OPENSSL_NO_DH
1207 else if (alg & SSL_kEDH) 1337 else if (alg_k & SSL_kEDH)
1208 { 1338 {
1209 if ((dh=DH_new()) == NULL) 1339 if ((dh=DH_new()) == NULL)
1210 { 1340 {
@@ -1258,14 +1388,14 @@ int ssl3_get_key_exchange(SSL *s)
1258 n-=param_len; 1388 n-=param_len;
1259 1389
1260#ifndef OPENSSL_NO_RSA 1390#ifndef OPENSSL_NO_RSA
1261 if (alg & SSL_aRSA) 1391 if (alg_a & SSL_aRSA)
1262 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509); 1392 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509);
1263#else 1393#else
1264 if (0) 1394 if (0)
1265 ; 1395 ;
1266#endif 1396#endif
1267#ifndef OPENSSL_NO_DSA 1397#ifndef OPENSSL_NO_DSA
1268 else if (alg & SSL_aDSS) 1398 else if (alg_a & SSL_aDSS)
1269 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_DSA_SIGN].x509); 1399 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_DSA_SIGN].x509);
1270#endif 1400#endif
1271 /* else anonymous DH, so no certificate or pkey. */ 1401 /* else anonymous DH, so no certificate or pkey. */
@@ -1273,7 +1403,7 @@ int ssl3_get_key_exchange(SSL *s)
1273 s->session->sess_cert->peer_dh_tmp=dh; 1403 s->session->sess_cert->peer_dh_tmp=dh;
1274 dh=NULL; 1404 dh=NULL;
1275 } 1405 }
1276 else if ((alg & SSL_kDHr) || (alg & SSL_kDHd)) 1406 else if ((alg_k & SSL_kDHr) || (alg_k & SSL_kDHd))
1277 { 1407 {
1278 al=SSL_AD_ILLEGAL_PARAMETER; 1408 al=SSL_AD_ILLEGAL_PARAMETER;
1279 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER); 1409 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER);
@@ -1282,7 +1412,7 @@ int ssl3_get_key_exchange(SSL *s)
1282#endif /* !OPENSSL_NO_DH */ 1412#endif /* !OPENSSL_NO_DH */
1283 1413
1284#ifndef OPENSSL_NO_ECDH 1414#ifndef OPENSSL_NO_ECDH
1285 else if (alg & SSL_kECDHE) 1415 else if (alg_k & SSL_kEECDH)
1286 { 1416 {
1287 EC_GROUP *ngroup; 1417 EC_GROUP *ngroup;
1288 const EC_GROUP *group; 1418 const EC_GROUP *group;
@@ -1305,7 +1435,7 @@ int ssl3_get_key_exchange(SSL *s)
1305 param_len=3; 1435 param_len=3;
1306 if ((param_len > n) || 1436 if ((param_len > n) ||
1307 (*p != NAMED_CURVE_TYPE) || 1437 (*p != NAMED_CURVE_TYPE) ||
1308 ((curve_nid = curve_id2nid(*(p + 2))) == 0)) 1438 ((curve_nid = tls1_ec_curve_id2nid(*(p + 2))) == 0))
1309 { 1439 {
1310 al=SSL_AD_INTERNAL_ERROR; 1440 al=SSL_AD_INTERNAL_ERROR;
1311 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS); 1441 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_UNABLE_TO_FIND_ECDH_PARAMETERS);
@@ -1366,11 +1496,11 @@ int ssl3_get_key_exchange(SSL *s)
1366 */ 1496 */
1367 if (0) ; 1497 if (0) ;
1368#ifndef OPENSSL_NO_RSA 1498#ifndef OPENSSL_NO_RSA
1369 else if (alg & SSL_aRSA) 1499 else if (alg_a & SSL_aRSA)
1370 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509); 1500 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_RSA_ENC].x509);
1371#endif 1501#endif
1372#ifndef OPENSSL_NO_ECDSA 1502#ifndef OPENSSL_NO_ECDSA
1373 else if (alg & SSL_aECDSA) 1503 else if (alg_a & SSL_aECDSA)
1374 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_ECC].x509); 1504 pkey=X509_get_pubkey(s->session->sess_cert->peer_pkeys[SSL_PKEY_ECC].x509);
1375#endif 1505#endif
1376 /* else anonymous ECDH, so no certificate or pkey. */ 1506 /* else anonymous ECDH, so no certificate or pkey. */
@@ -1381,19 +1511,13 @@ int ssl3_get_key_exchange(SSL *s)
1381 EC_POINT_free(srvr_ecpoint); 1511 EC_POINT_free(srvr_ecpoint);
1382 srvr_ecpoint = NULL; 1512 srvr_ecpoint = NULL;
1383 } 1513 }
1384 else if (alg & SSL_kECDH) 1514 else if (alg_k)
1385 { 1515 {
1386 al=SSL_AD_UNEXPECTED_MESSAGE; 1516 al=SSL_AD_UNEXPECTED_MESSAGE;
1387 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_UNEXPECTED_MESSAGE); 1517 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_UNEXPECTED_MESSAGE);
1388 goto f_err; 1518 goto f_err;
1389 } 1519 }
1390#endif /* !OPENSSL_NO_ECDH */ 1520#endif /* !OPENSSL_NO_ECDH */
1391 if (alg & SSL_aFZA)
1392 {
1393 al=SSL_AD_HANDSHAKE_FAILURE;
1394 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER);
1395 goto f_err;
1396 }
1397 1521
1398 1522
1399 /* p points to the next byte, there are 'n' bytes left */ 1523 /* p points to the next byte, there are 'n' bytes left */
@@ -1422,8 +1546,6 @@ int ssl3_get_key_exchange(SSL *s)
1422 q=md_buf; 1546 q=md_buf;
1423 for (num=2; num > 0; num--) 1547 for (num=2; num > 0; num--)
1424 { 1548 {
1425 EVP_MD_CTX_set_flags(&md_ctx,
1426 EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
1427 EVP_DigestInit_ex(&md_ctx,(num == 2) 1549 EVP_DigestInit_ex(&md_ctx,(num == 2)
1428 ?s->ctx->md5:s->ctx->sha1, NULL); 1550 ?s->ctx->md5:s->ctx->sha1, NULL);
1429 EVP_DigestUpdate(&md_ctx,&(s->s3->client_random[0]),SSL3_RANDOM_SIZE); 1551 EVP_DigestUpdate(&md_ctx,&(s->s3->client_random[0]),SSL3_RANDOM_SIZE);
@@ -1494,12 +1616,13 @@ int ssl3_get_key_exchange(SSL *s)
1494 } 1616 }
1495 else 1617 else
1496 { 1618 {
1497 /* still data left over */ 1619 if (!(alg_a & SSL_aNULL) && !(alg_k & SSL_kPSK))
1498 if (!(alg & SSL_aNULL)) 1620 /* aNULL or kPSK do not need public keys */
1499 { 1621 {
1500 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_INTERNAL_ERROR); 1622 SSLerr(SSL_F_SSL3_GET_KEY_EXCHANGE,ERR_R_INTERNAL_ERROR);
1501 goto err; 1623 goto err;
1502 } 1624 }
1625 /* still data left over */
1503 if (n != 0) 1626 if (n != 0)
1504 { 1627 {
1505 al=SSL_AD_DECODE_ERROR; 1628 al=SSL_AD_DECODE_ERROR;
@@ -1569,8 +1692,7 @@ int ssl3_get_certificate_request(SSL *s)
1569 /* TLS does not like anon-DH with client cert */ 1692 /* TLS does not like anon-DH with client cert */
1570 if (s->version > SSL3_VERSION) 1693 if (s->version > SSL3_VERSION)
1571 { 1694 {
1572 l=s->s3->tmp.new_cipher->algorithms; 1695 if (s->s3->tmp.new_cipher->algorithm_auth & SSL_aNULL)
1573 if (l & SSL_aNULL)
1574 { 1696 {
1575 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_UNEXPECTED_MESSAGE); 1697 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_UNEXPECTED_MESSAGE);
1576 SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER); 1698 SSLerr(SSL_F_SSL3_GET_CERTIFICATE_REQUEST,SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER);
@@ -1715,6 +1837,7 @@ int ssl3_get_new_session_ticket(SSL *s)
1715 SSLerr(SSL_F_SSL3_GET_NEW_SESSION_TICKET,SSL_R_LENGTH_MISMATCH); 1837 SSLerr(SSL_F_SSL3_GET_NEW_SESSION_TICKET,SSL_R_LENGTH_MISMATCH);
1716 goto f_err; 1838 goto f_err;
1717 } 1839 }
1840
1718 p=d=(unsigned char *)s->init_msg; 1841 p=d=(unsigned char *)s->init_msg;
1719 n2l(p, s->session->tlsext_tick_lifetime_hint); 1842 n2l(p, s->session->tlsext_tick_lifetime_hint);
1720 n2s(p, ticklen); 1843 n2s(p, ticklen);
@@ -1738,7 +1861,28 @@ int ssl3_get_new_session_ticket(SSL *s)
1738 } 1861 }
1739 memcpy(s->session->tlsext_tick, p, ticklen); 1862 memcpy(s->session->tlsext_tick, p, ticklen);
1740 s->session->tlsext_ticklen = ticklen; 1863 s->session->tlsext_ticklen = ticklen;
1741 1864 /* There are two ways to detect a resumed ticket sesion.
1865 * One is to set an appropriate session ID and then the server
1866 * must return a match in ServerHello. This allows the normal
1867 * client session ID matching to work and we know much
1868 * earlier that the ticket has been accepted.
1869 *
1870 * The other way is to set zero length session ID when the
1871 * ticket is presented and rely on the handshake to determine
1872 * session resumption.
1873 *
1874 * We choose the former approach because this fits in with
1875 * assumptions elsewhere in OpenSSL. The session ID is set
1876 * to the SHA256 (or SHA1 is SHA256 is disabled) hash of the
1877 * ticket.
1878 */
1879 EVP_Digest(p, ticklen,
1880 s->session->session_id, &s->session->session_id_length,
1881#ifndef OPENSSL_NO_SHA256
1882 EVP_sha256(), NULL);
1883#else
1884 EVP_sha1(), NULL);
1885#endif
1742 ret=1; 1886 ret=1;
1743 return(ret); 1887 return(ret);
1744f_err: 1888f_err:
@@ -1750,8 +1894,7 @@ err:
1750int ssl3_get_cert_status(SSL *s) 1894int ssl3_get_cert_status(SSL *s)
1751 { 1895 {
1752 int ok, al; 1896 int ok, al;
1753 unsigned long resplen; 1897 unsigned long resplen,n;
1754 long n;
1755 const unsigned char *p; 1898 const unsigned char *p;
1756 1899
1757 n=s->method->ssl_get_message(s, 1900 n=s->method->ssl_get_message(s,
@@ -1777,7 +1920,7 @@ int ssl3_get_cert_status(SSL *s)
1777 goto f_err; 1920 goto f_err;
1778 } 1921 }
1779 n2l3(p, resplen); 1922 n2l3(p, resplen);
1780 if (resplen + 4 != (unsigned long)n) 1923 if (resplen + 4 != n)
1781 { 1924 {
1782 al = SSL_AD_DECODE_ERROR; 1925 al = SSL_AD_DECODE_ERROR;
1783 SSLerr(SSL_F_SSL3_GET_CERT_STATUS,SSL_R_LENGTH_MISMATCH); 1926 SSLerr(SSL_F_SSL3_GET_CERT_STATUS,SSL_R_LENGTH_MISMATCH);
@@ -1846,7 +1989,7 @@ int ssl3_send_client_key_exchange(SSL *s)
1846 { 1989 {
1847 unsigned char *p,*d; 1990 unsigned char *p,*d;
1848 int n; 1991 int n;
1849 unsigned long l; 1992 unsigned long alg_k;
1850#ifndef OPENSSL_NO_RSA 1993#ifndef OPENSSL_NO_RSA
1851 unsigned char *q; 1994 unsigned char *q;
1852 EVP_PKEY *pkey=NULL; 1995 EVP_PKEY *pkey=NULL;
@@ -1868,12 +2011,12 @@ int ssl3_send_client_key_exchange(SSL *s)
1868 d=(unsigned char *)s->init_buf->data; 2011 d=(unsigned char *)s->init_buf->data;
1869 p= &(d[4]); 2012 p= &(d[4]);
1870 2013
1871 l=s->s3->tmp.new_cipher->algorithms; 2014 alg_k=s->s3->tmp.new_cipher->algorithm_mkey;
1872 2015
1873 /* Fool emacs indentation */ 2016 /* Fool emacs indentation */
1874 if (0) {} 2017 if (0) {}
1875#ifndef OPENSSL_NO_RSA 2018#ifndef OPENSSL_NO_RSA
1876 else if (l & SSL_kRSA) 2019 else if (alg_k & SSL_kRSA)
1877 { 2020 {
1878 RSA *rsa; 2021 RSA *rsa;
1879 unsigned char tmp_buf[SSL_MAX_MASTER_KEY_LENGTH]; 2022 unsigned char tmp_buf[SSL_MAX_MASTER_KEY_LENGTH];
@@ -1932,7 +2075,7 @@ int ssl3_send_client_key_exchange(SSL *s)
1932 } 2075 }
1933#endif 2076#endif
1934#ifndef OPENSSL_NO_KRB5 2077#ifndef OPENSSL_NO_KRB5
1935 else if (l & SSL_kKRB5) 2078 else if (alg_k & SSL_kKRB5)
1936 { 2079 {
1937 krb5_error_code krb5rc; 2080 krb5_error_code krb5rc;
1938 KSSL_CTX *kssl_ctx = s->kssl_ctx; 2081 KSSL_CTX *kssl_ctx = s->kssl_ctx;
@@ -1940,7 +2083,7 @@ int ssl3_send_client_key_exchange(SSL *s)
1940 krb5_data *enc_ticket; 2083 krb5_data *enc_ticket;
1941 krb5_data authenticator, *authp = NULL; 2084 krb5_data authenticator, *authp = NULL;
1942 EVP_CIPHER_CTX ciph_ctx; 2085 EVP_CIPHER_CTX ciph_ctx;
1943 EVP_CIPHER *enc = NULL; 2086 const EVP_CIPHER *enc = NULL;
1944 unsigned char iv[EVP_MAX_IV_LENGTH]; 2087 unsigned char iv[EVP_MAX_IV_LENGTH];
1945 unsigned char tmp_buf[SSL_MAX_MASTER_KEY_LENGTH]; 2088 unsigned char tmp_buf[SSL_MAX_MASTER_KEY_LENGTH];
1946 unsigned char epms[SSL_MAX_MASTER_KEY_LENGTH 2089 unsigned char epms[SSL_MAX_MASTER_KEY_LENGTH
@@ -1951,7 +2094,7 @@ int ssl3_send_client_key_exchange(SSL *s)
1951 2094
1952#ifdef KSSL_DEBUG 2095#ifdef KSSL_DEBUG
1953 printf("ssl3_send_client_key_exchange(%lx & %lx)\n", 2096 printf("ssl3_send_client_key_exchange(%lx & %lx)\n",
1954 l, SSL_kKRB5); 2097 alg_k, SSL_kKRB5);
1955#endif /* KSSL_DEBUG */ 2098#endif /* KSSL_DEBUG */
1956 2099
1957 authp = NULL; 2100 authp = NULL;
@@ -2043,7 +2186,7 @@ int ssl3_send_client_key_exchange(SSL *s)
2043 sizeof tmp_buf); 2186 sizeof tmp_buf);
2044 EVP_EncryptFinal_ex(&ciph_ctx,&(epms[outl]),&padl); 2187 EVP_EncryptFinal_ex(&ciph_ctx,&(epms[outl]),&padl);
2045 outl += padl; 2188 outl += padl;
2046 if (outl > sizeof epms) 2189 if (outl > (int)sizeof epms)
2047 { 2190 {
2048 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR); 2191 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE, ERR_R_INTERNAL_ERROR);
2049 goto err; 2192 goto err;
@@ -2057,7 +2200,7 @@ int ssl3_send_client_key_exchange(SSL *s)
2057 n+=outl + 2; 2200 n+=outl + 2;
2058 2201
2059 s->session->master_key_length= 2202 s->session->master_key_length=
2060 s->method->ssl3_enc->generate_master_secret(s, 2203 s->method->ssl3_enc->generate_master_secret(s,
2061 s->session->master_key, 2204 s->session->master_key,
2062 tmp_buf, sizeof tmp_buf); 2205 tmp_buf, sizeof tmp_buf);
2063 2206
@@ -2066,7 +2209,7 @@ int ssl3_send_client_key_exchange(SSL *s)
2066 } 2209 }
2067#endif 2210#endif
2068#ifndef OPENSSL_NO_DH 2211#ifndef OPENSSL_NO_DH
2069 else if (l & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) 2212 else if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd))
2070 { 2213 {
2071 DH *dh_srvr,*dh_clnt; 2214 DH *dh_srvr,*dh_clnt;
2072 2215
@@ -2075,7 +2218,7 @@ int ssl3_send_client_key_exchange(SSL *s)
2075 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_UNEXPECTED_MESSAGE); 2218 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_UNEXPECTED_MESSAGE);
2076 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,SSL_R_UNEXPECTED_MESSAGE); 2219 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,SSL_R_UNEXPECTED_MESSAGE);
2077 goto err; 2220 goto err;
2078 } 2221 }
2079 2222
2080 if (s->session->sess_cert->peer_dh_tmp != NULL) 2223 if (s->session->sess_cert->peer_dh_tmp != NULL)
2081 dh_srvr=s->session->sess_cert->peer_dh_tmp; 2224 dh_srvr=s->session->sess_cert->peer_dh_tmp;
@@ -2130,7 +2273,7 @@ int ssl3_send_client_key_exchange(SSL *s)
2130#endif 2273#endif
2131 2274
2132#ifndef OPENSSL_NO_ECDH 2275#ifndef OPENSSL_NO_ECDH
2133 else if ((l & SSL_kECDH) || (l & SSL_kECDHE)) 2276 else if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe))
2134 { 2277 {
2135 const EC_GROUP *srvr_group = NULL; 2278 const EC_GROUP *srvr_group = NULL;
2136 EC_KEY *tkey; 2279 EC_KEY *tkey;
@@ -2142,7 +2285,7 @@ int ssl3_send_client_key_exchange(SSL *s)
2142 * computation as part of client certificate? 2285 * computation as part of client certificate?
2143 * If so, set ecdh_clnt_cert to 1. 2286 * If so, set ecdh_clnt_cert to 1.
2144 */ 2287 */
2145 if ((l & SSL_kECDH) && (s->cert != NULL)) 2288 if ((alg_k & (SSL_kECDHr|SSL_kECDHe)) && (s->cert != NULL))
2146 { 2289 {
2147 /* XXX: For now, we do not support client 2290 /* XXX: For now, we do not support client
2148 * authentication using ECDH certificates. 2291 * authentication using ECDH certificates.
@@ -2314,6 +2457,178 @@ int ssl3_send_client_key_exchange(SSL *s)
2314 EVP_PKEY_free(srvr_pub_pkey); 2457 EVP_PKEY_free(srvr_pub_pkey);
2315 } 2458 }
2316#endif /* !OPENSSL_NO_ECDH */ 2459#endif /* !OPENSSL_NO_ECDH */
2460 else if (alg_k & SSL_kGOST)
2461 {
2462 /* GOST key exchange message creation */
2463 EVP_PKEY_CTX *pkey_ctx;
2464 X509 *peer_cert;
2465 size_t msglen;
2466 unsigned int md_len;
2467 int keytype;
2468 unsigned char premaster_secret[32],shared_ukm[32], tmp[256];
2469 EVP_MD_CTX *ukm_hash;
2470 EVP_PKEY *pub_key;
2471
2472 /* Get server sertificate PKEY and create ctx from it */
2473 peer_cert=s->session->sess_cert->peer_pkeys[(keytype=SSL_PKEY_GOST01)].x509;
2474 if (!peer_cert)
2475 peer_cert=s->session->sess_cert->peer_pkeys[(keytype=SSL_PKEY_GOST94)].x509;
2476 if (!peer_cert) {
2477 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER);
2478 goto err;
2479 }
2480
2481 pkey_ctx=EVP_PKEY_CTX_new(pub_key=X509_get_pubkey(peer_cert),NULL);
2482 /* If we have send a certificate, and certificate key
2483
2484 * parameters match those of server certificate, use
2485 * certificate key for key exchange
2486 */
2487
2488 /* Otherwise, generate ephemeral key pair */
2489
2490 EVP_PKEY_encrypt_init(pkey_ctx);
2491 /* Generate session key */
2492 RAND_bytes(premaster_secret,32);
2493 /* If we have client certificate, use its secret as peer key */
2494 if (s->s3->tmp.cert_req && s->cert->key->privatekey) {
2495 if (EVP_PKEY_derive_set_peer(pkey_ctx,s->cert->key->privatekey) <=0) {
2496 /* If there was an error - just ignore it. Ephemeral key
2497 * would be used
2498 */
2499 ERR_clear_error();
2500 }
2501 }
2502 /* Compute shared IV and store it in algorithm-specific
2503 * context data */
2504 ukm_hash = EVP_MD_CTX_create();
2505 EVP_DigestInit(ukm_hash,EVP_get_digestbynid(NID_id_GostR3411_94));
2506 EVP_DigestUpdate(ukm_hash,s->s3->client_random,SSL3_RANDOM_SIZE);
2507 EVP_DigestUpdate(ukm_hash,s->s3->server_random,SSL3_RANDOM_SIZE);
2508 EVP_DigestFinal_ex(ukm_hash, shared_ukm, &md_len);
2509 EVP_MD_CTX_destroy(ukm_hash);
2510 if (EVP_PKEY_CTX_ctrl(pkey_ctx,-1,EVP_PKEY_OP_ENCRYPT,EVP_PKEY_CTRL_SET_IV,
2511 8,shared_ukm)<0) {
2512 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,
2513 SSL_R_LIBRARY_BUG);
2514 goto err;
2515 }
2516 /* Make GOST keytransport blob message */
2517 /*Encapsulate it into sequence */
2518 *(p++)=V_ASN1_SEQUENCE | V_ASN1_CONSTRUCTED;
2519 msglen=255;
2520 if (EVP_PKEY_encrypt(pkey_ctx,tmp,&msglen,premaster_secret,32)<0) {
2521 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,
2522 SSL_R_LIBRARY_BUG);
2523 goto err;
2524 }
2525 if (msglen >= 0x80)
2526 {
2527 *(p++)=0x81;
2528 *(p++)= msglen & 0xff;
2529 n=msglen+3;
2530 }
2531 else
2532 {
2533 *(p++)= msglen & 0xff;
2534 n=msglen+2;
2535 }
2536 memcpy(p, tmp, msglen);
2537 /* Check if pubkey from client certificate was used */
2538 if (EVP_PKEY_CTX_ctrl(pkey_ctx, -1, -1, EVP_PKEY_CTRL_PEER_KEY, 2, NULL) > 0)
2539 {
2540 /* Set flag "skip certificate verify" */
2541 s->s3->flags |= TLS1_FLAGS_SKIP_CERT_VERIFY;
2542 }
2543 EVP_PKEY_CTX_free(pkey_ctx);
2544 s->session->master_key_length=
2545 s->method->ssl3_enc->generate_master_secret(s,
2546 s->session->master_key,premaster_secret,32);
2547 EVP_PKEY_free(pub_key);
2548
2549 }
2550#ifndef OPENSSL_NO_PSK
2551 else if (alg_k & SSL_kPSK)
2552 {
2553 char identity[PSK_MAX_IDENTITY_LEN];
2554 unsigned char *t = NULL;
2555 unsigned char psk_or_pre_ms[PSK_MAX_PSK_LEN*2+4];
2556 unsigned int pre_ms_len = 0, psk_len = 0;
2557 int psk_err = 1;
2558
2559 n = 0;
2560 if (s->psk_client_callback == NULL)
2561 {
2562 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,
2563 SSL_R_PSK_NO_CLIENT_CB);
2564 goto err;
2565 }
2566
2567 psk_len = s->psk_client_callback(s, s->ctx->psk_identity_hint,
2568 identity, PSK_MAX_IDENTITY_LEN,
2569 psk_or_pre_ms, sizeof(psk_or_pre_ms));
2570 if (psk_len > PSK_MAX_PSK_LEN)
2571 {
2572 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,
2573 ERR_R_INTERNAL_ERROR);
2574 goto psk_err;
2575 }
2576 else if (psk_len == 0)
2577 {
2578 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,
2579 SSL_R_PSK_IDENTITY_NOT_FOUND);
2580 goto psk_err;
2581 }
2582
2583 /* create PSK pre_master_secret */
2584 pre_ms_len = 2+psk_len+2+psk_len;
2585 t = psk_or_pre_ms;
2586 memmove(psk_or_pre_ms+psk_len+4, psk_or_pre_ms, psk_len);
2587 s2n(psk_len, t);
2588 memset(t, 0, psk_len);
2589 t+=psk_len;
2590 s2n(psk_len, t);
2591
2592 if (s->session->psk_identity_hint != NULL)
2593 OPENSSL_free(s->session->psk_identity_hint);
2594 s->session->psk_identity_hint = BUF_strdup(s->ctx->psk_identity_hint);
2595 if (s->ctx->psk_identity_hint != NULL &&
2596 s->session->psk_identity_hint == NULL)
2597 {
2598 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,
2599 ERR_R_MALLOC_FAILURE);
2600 goto psk_err;
2601 }
2602
2603 if (s->session->psk_identity != NULL)
2604 OPENSSL_free(s->session->psk_identity);
2605 s->session->psk_identity = BUF_strdup(identity);
2606 if (s->session->psk_identity == NULL)
2607 {
2608 SSLerr(SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE,
2609 ERR_R_MALLOC_FAILURE);
2610 goto psk_err;
2611 }
2612
2613 s->session->master_key_length =
2614 s->method->ssl3_enc->generate_master_secret(s,
2615 s->session->master_key,
2616 psk_or_pre_ms, pre_ms_len);
2617 n = strlen(identity);
2618 s2n(n, p);
2619 memcpy(p, identity, n);
2620 n+=2;
2621 psk_err = 0;
2622 psk_err:
2623 OPENSSL_cleanse(identity, PSK_MAX_IDENTITY_LEN);
2624 OPENSSL_cleanse(psk_or_pre_ms, sizeof(psk_or_pre_ms));
2625 if (psk_err != 0)
2626 {
2627 ssl3_send_alert(s, SSL3_AL_FATAL, SSL_AD_HANDSHAKE_FAILURE);
2628 goto err;
2629 }
2630 }
2631#endif
2317 else 2632 else
2318 { 2633 {
2319 ssl3_send_alert(s, SSL3_AL_FATAL, 2634 ssl3_send_alert(s, SSL3_AL_FATAL,
@@ -2350,28 +2665,37 @@ int ssl3_send_client_verify(SSL *s)
2350 unsigned char *p,*d; 2665 unsigned char *p,*d;
2351 unsigned char data[MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH]; 2666 unsigned char data[MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH];
2352 EVP_PKEY *pkey; 2667 EVP_PKEY *pkey;
2668 EVP_PKEY_CTX *pctx=NULL;
2353#ifndef OPENSSL_NO_RSA 2669#ifndef OPENSSL_NO_RSA
2354 unsigned u=0; 2670 unsigned u=0;
2355#endif 2671#endif
2356 unsigned long n; 2672 unsigned long n;
2357#if !defined(OPENSSL_NO_DSA) || !defined(OPENSSL_NO_ECDSA)
2358 int j; 2673 int j;
2359#endif
2360 2674
2361 if (s->state == SSL3_ST_CW_CERT_VRFY_A) 2675 if (s->state == SSL3_ST_CW_CERT_VRFY_A)
2362 { 2676 {
2363 d=(unsigned char *)s->init_buf->data; 2677 d=(unsigned char *)s->init_buf->data;
2364 p= &(d[4]); 2678 p= &(d[4]);
2365 pkey=s->cert->key->privatekey; 2679 pkey=s->cert->key->privatekey;
2366 2680/* Create context from key and test if sha1 is allowed as digest */
2367 s->method->ssl3_enc->cert_verify_mac(s,&(s->s3->finish_dgst2), 2681 pctx = EVP_PKEY_CTX_new(pkey,NULL);
2368 &(data[MD5_DIGEST_LENGTH])); 2682 EVP_PKEY_sign_init(pctx);
2369 2683 if (EVP_PKEY_CTX_set_signature_md(pctx, EVP_sha1())>0)
2684 {
2685 s->method->ssl3_enc->cert_verify_mac(s,
2686 NID_sha1,
2687 &(data[MD5_DIGEST_LENGTH]));
2688 }
2689 else
2690 {
2691 ERR_clear_error();
2692 }
2370#ifndef OPENSSL_NO_RSA 2693#ifndef OPENSSL_NO_RSA
2371 if (pkey->type == EVP_PKEY_RSA) 2694 if (pkey->type == EVP_PKEY_RSA)
2372 { 2695 {
2373 s->method->ssl3_enc->cert_verify_mac(s, 2696 s->method->ssl3_enc->cert_verify_mac(s,
2374 &(s->s3->finish_dgst1),&(data[0])); 2697 NID_md5,
2698 &(data[0]));
2375 if (RSA_sign(NID_md5_sha1, data, 2699 if (RSA_sign(NID_md5_sha1, data,
2376 MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH, 2700 MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH,
2377 &(p[2]), &u, pkey->pkey.rsa) <= 0 ) 2701 &(p[2]), &u, pkey->pkey.rsa) <= 0 )
@@ -2417,10 +2741,30 @@ int ssl3_send_client_verify(SSL *s)
2417 } 2741 }
2418 else 2742 else
2419#endif 2743#endif
2420 { 2744 if (pkey->type == NID_id_GostR3410_94 || pkey->type == NID_id_GostR3410_2001)
2745 {
2746 unsigned char signbuf[64];
2747 int i;
2748 size_t sigsize=64;
2749 s->method->ssl3_enc->cert_verify_mac(s,
2750 NID_id_GostR3411_94,
2751 data);
2752 if (EVP_PKEY_sign(pctx, signbuf, &sigsize, data, 32) <= 0) {
2753 SSLerr(SSL_F_SSL3_SEND_CLIENT_VERIFY,
2754 ERR_R_INTERNAL_ERROR);
2755 goto err;
2756 }
2757 for (i=63,j=0; i>=0; j++, i--) {
2758 p[2+j]=signbuf[i];
2759 }
2760 s2n(j,p);
2761 n=j+2;
2762 }
2763 else
2764 {
2421 SSLerr(SSL_F_SSL3_SEND_CLIENT_VERIFY,ERR_R_INTERNAL_ERROR); 2765 SSLerr(SSL_F_SSL3_SEND_CLIENT_VERIFY,ERR_R_INTERNAL_ERROR);
2422 goto err; 2766 goto err;
2423 } 2767 }
2424 *(d++)=SSL3_MT_CERTIFICATE_VERIFY; 2768 *(d++)=SSL3_MT_CERTIFICATE_VERIFY;
2425 l2n3(n,d); 2769 l2n3(n,d);
2426 2770
@@ -2428,8 +2772,10 @@ int ssl3_send_client_verify(SSL *s)
2428 s->init_num=(int)n+4; 2772 s->init_num=(int)n+4;
2429 s->init_off=0; 2773 s->init_off=0;
2430 } 2774 }
2775 EVP_PKEY_CTX_free(pctx);
2431 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE)); 2776 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
2432err: 2777err:
2778 EVP_PKEY_CTX_free(pctx);
2433 return(-1); 2779 return(-1);
2434 } 2780 }
2435 2781
@@ -2514,7 +2860,7 @@ int ssl3_send_client_certificate(SSL *s)
2514int ssl3_check_cert_and_algorithm(SSL *s) 2860int ssl3_check_cert_and_algorithm(SSL *s)
2515 { 2861 {
2516 int i,idx; 2862 int i,idx;
2517 long algs; 2863 long alg_k,alg_a;
2518 EVP_PKEY *pkey=NULL; 2864 EVP_PKEY *pkey=NULL;
2519 SESS_CERT *sc; 2865 SESS_CERT *sc;
2520#ifndef OPENSSL_NO_RSA 2866#ifndef OPENSSL_NO_RSA
@@ -2524,14 +2870,14 @@ int ssl3_check_cert_and_algorithm(SSL *s)
2524 DH *dh; 2870 DH *dh;
2525#endif 2871#endif
2526 2872
2527 sc=s->session->sess_cert; 2873 alg_k=s->s3->tmp.new_cipher->algorithm_mkey;
2528 2874 alg_a=s->s3->tmp.new_cipher->algorithm_auth;
2529 algs=s->s3->tmp.new_cipher->algorithms;
2530 2875
2531 /* we don't have a certificate */ 2876 /* we don't have a certificate */
2532 if (algs & (SSL_aDH|SSL_aNULL|SSL_aKRB5)) 2877 if ((alg_a & (SSL_aDH|SSL_aNULL|SSL_aKRB5)) || (alg_k & SSL_kPSK))
2533 return(1); 2878 return(1);
2534 2879
2880 sc=s->session->sess_cert;
2535 if (sc == NULL) 2881 if (sc == NULL)
2536 { 2882 {
2537 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,ERR_R_INTERNAL_ERROR); 2883 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,ERR_R_INTERNAL_ERROR);
@@ -2551,11 +2897,11 @@ int ssl3_check_cert_and_algorithm(SSL *s)
2551#ifndef OPENSSL_NO_ECDH 2897#ifndef OPENSSL_NO_ECDH
2552 if (idx == SSL_PKEY_ECC) 2898 if (idx == SSL_PKEY_ECC)
2553 { 2899 {
2554 if (check_srvr_ecc_cert_and_alg(sc->peer_pkeys[idx].x509, 2900 if (ssl_check_srvr_ecc_cert_and_alg(sc->peer_pkeys[idx].x509,
2555 s->s3->tmp.new_cipher) == 0) 2901 s->s3->tmp.new_cipher) == 0)
2556 { /* check failed */ 2902 { /* check failed */
2557 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_BAD_ECC_CERT); 2903 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_BAD_ECC_CERT);
2558 goto f_err; 2904 goto f_err;
2559 } 2905 }
2560 else 2906 else
2561 { 2907 {
@@ -2569,20 +2915,20 @@ int ssl3_check_cert_and_algorithm(SSL *s)
2569 2915
2570 2916
2571 /* Check that we have a certificate if we require one */ 2917 /* Check that we have a certificate if we require one */
2572 if ((algs & SSL_aRSA) && !has_bits(i,EVP_PK_RSA|EVP_PKT_SIGN)) 2918 if ((alg_a & SSL_aRSA) && !has_bits(i,EVP_PK_RSA|EVP_PKT_SIGN))
2573 { 2919 {
2574 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_RSA_SIGNING_CERT); 2920 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_RSA_SIGNING_CERT);
2575 goto f_err; 2921 goto f_err;
2576 } 2922 }
2577#ifndef OPENSSL_NO_DSA 2923#ifndef OPENSSL_NO_DSA
2578 else if ((algs & SSL_aDSS) && !has_bits(i,EVP_PK_DSA|EVP_PKT_SIGN)) 2924 else if ((alg_a & SSL_aDSS) && !has_bits(i,EVP_PK_DSA|EVP_PKT_SIGN))
2579 { 2925 {
2580 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DSA_SIGNING_CERT); 2926 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DSA_SIGNING_CERT);
2581 goto f_err; 2927 goto f_err;
2582 } 2928 }
2583#endif 2929#endif
2584#ifndef OPENSSL_NO_RSA 2930#ifndef OPENSSL_NO_RSA
2585 if ((algs & SSL_kRSA) && 2931 if ((alg_k & SSL_kRSA) &&
2586 !(has_bits(i,EVP_PK_RSA|EVP_PKT_ENC) || (rsa != NULL))) 2932 !(has_bits(i,EVP_PK_RSA|EVP_PKT_ENC) || (rsa != NULL)))
2587 { 2933 {
2588 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_RSA_ENCRYPTING_CERT); 2934 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_RSA_ENCRYPTING_CERT);
@@ -2590,19 +2936,19 @@ int ssl3_check_cert_and_algorithm(SSL *s)
2590 } 2936 }
2591#endif 2937#endif
2592#ifndef OPENSSL_NO_DH 2938#ifndef OPENSSL_NO_DH
2593 if ((algs & SSL_kEDH) && 2939 if ((alg_k & SSL_kEDH) &&
2594 !(has_bits(i,EVP_PK_DH|EVP_PKT_EXCH) || (dh != NULL))) 2940 !(has_bits(i,EVP_PK_DH|EVP_PKT_EXCH) || (dh != NULL)))
2595 { 2941 {
2596 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DH_KEY); 2942 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DH_KEY);
2597 goto f_err; 2943 goto f_err;
2598 } 2944 }
2599 else if ((algs & SSL_kDHr) && !has_bits(i,EVP_PK_DH|EVP_PKS_RSA)) 2945 else if ((alg_k & SSL_kDHr) && !has_bits(i,EVP_PK_DH|EVP_PKS_RSA))
2600 { 2946 {
2601 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DH_RSA_CERT); 2947 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DH_RSA_CERT);
2602 goto f_err; 2948 goto f_err;
2603 } 2949 }
2604#ifndef OPENSSL_NO_DSA 2950#ifndef OPENSSL_NO_DSA
2605 else if ((algs & SSL_kDHd) && !has_bits(i,EVP_PK_DH|EVP_PKS_DSA)) 2951 else if ((alg_k & SSL_kDHd) && !has_bits(i,EVP_PK_DH|EVP_PKS_DSA))
2606 { 2952 {
2607 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DH_DSA_CERT); 2953 SSLerr(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM,SSL_R_MISSING_DH_DSA_CERT);
2608 goto f_err; 2954 goto f_err;
@@ -2613,7 +2959,7 @@ int ssl3_check_cert_and_algorithm(SSL *s)
2613 if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && !has_bits(i,EVP_PKT_EXP)) 2959 if (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) && !has_bits(i,EVP_PKT_EXP))
2614 { 2960 {
2615#ifndef OPENSSL_NO_RSA 2961#ifndef OPENSSL_NO_RSA
2616 if (algs & SSL_kRSA) 2962 if (alg_k & SSL_kRSA)
2617 { 2963 {
2618 if (rsa == NULL 2964 if (rsa == NULL
2619 || RSA_size(rsa)*8 > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) 2965 || RSA_size(rsa)*8 > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher))
@@ -2625,7 +2971,7 @@ int ssl3_check_cert_and_algorithm(SSL *s)
2625 else 2971 else
2626#endif 2972#endif
2627#ifndef OPENSSL_NO_DH 2973#ifndef OPENSSL_NO_DH
2628 if (algs & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) 2974 if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd))
2629 { 2975 {
2630 if (dh == NULL 2976 if (dh == NULL
2631 || DH_size(dh)*8 > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)) 2977 || DH_size(dh)*8 > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher))
@@ -2648,64 +2994,18 @@ err:
2648 return(0); 2994 return(0);
2649 } 2995 }
2650 2996
2651
2652#ifndef OPENSSL_NO_ECDH
2653/* This is the complement of nid2curve_id in s3_srvr.c. */
2654static int curve_id2nid(int curve_id)
2655{
2656 /* ECC curves from draft-ietf-tls-ecc-01.txt (Mar 15, 2001)
2657 * (no changes in draft-ietf-tls-ecc-03.txt [June 2003]) */
2658 static int nid_list[26] =
2659 {
2660 0,
2661 NID_sect163k1, /* sect163k1 (1) */
2662 NID_sect163r1, /* sect163r1 (2) */
2663 NID_sect163r2, /* sect163r2 (3) */
2664 NID_sect193r1, /* sect193r1 (4) */
2665 NID_sect193r2, /* sect193r2 (5) */
2666 NID_sect233k1, /* sect233k1 (6) */
2667 NID_sect233r1, /* sect233r1 (7) */
2668 NID_sect239k1, /* sect239k1 (8) */
2669 NID_sect283k1, /* sect283k1 (9) */
2670 NID_sect283r1, /* sect283r1 (10) */
2671 NID_sect409k1, /* sect409k1 (11) */
2672 NID_sect409r1, /* sect409r1 (12) */
2673 NID_sect571k1, /* sect571k1 (13) */
2674 NID_sect571r1, /* sect571r1 (14) */
2675 NID_secp160k1, /* secp160k1 (15) */
2676 NID_secp160r1, /* secp160r1 (16) */
2677 NID_secp160r2, /* secp160r2 (17) */
2678 NID_secp192k1, /* secp192k1 (18) */
2679 NID_X9_62_prime192v1, /* secp192r1 (19) */
2680 NID_secp224k1, /* secp224k1 (20) */
2681 NID_secp224r1, /* secp224r1 (21) */
2682 NID_secp256k1, /* secp256k1 (22) */
2683 NID_X9_62_prime256v1, /* secp256r1 (23) */
2684 NID_secp384r1, /* secp384r1 (24) */
2685 NID_secp521r1 /* secp521r1 (25) */
2686 };
2687
2688 if ((curve_id < 1) || (curve_id > 25)) return 0;
2689
2690 return nid_list[curve_id];
2691}
2692#endif
2693
2694/* Check to see if handshake is full or resumed. Usually this is just a 2997/* Check to see if handshake is full or resumed. Usually this is just a
2695 * case of checking to see if a cache hit has occurred. In the case of 2998 * case of checking to see if a cache hit has occurred. In the case of
2696 * session tickets we have to check the next message to be sure. 2999 * session tickets we have to check the next message to be sure.
2697 */ 3000 */
2698 3001
2699#ifndef OPENSSL_NO_TLSEXT 3002#ifndef OPENSSL_NO_TLSEXT
2700static int ssl3_check_finished(SSL *s) 3003int ssl3_check_finished(SSL *s)
2701 { 3004 {
2702 int ok; 3005 int ok;
2703 long n; 3006 long n;
2704 /* If we have no ticket or session ID is non-zero length (a match of 3007 /* If we have no ticket it cannot be a resumed session. */
2705 * a non-zero session length would never reach here) it cannot be a 3008 if (!s->session->tlsext_tick)
2706 * resumed session.
2707 */
2708 if (!s->session->tlsext_tick || s->session->session_id_length)
2709 return 1; 3009 return 1;
2710 /* this function is called when we really expect a Certificate 3010 /* this function is called when we really expect a Certificate
2711 * message, so permit appropriate message length */ 3011 * message, so permit appropriate message length */
diff --git a/src/lib/libssl/src/ssl/s3_enc.c b/src/lib/libssl/src/ssl/s3_enc.c
index 06e54666b2..3d7aec97a2 100644
--- a/src/lib/libssl/src/ssl/s3_enc.c
+++ b/src/lib/libssl/src/ssl/s3_enc.c
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -108,6 +108,32 @@
108 * Hudson (tjh@cryptsoft.com). 108 * Hudson (tjh@cryptsoft.com).
109 * 109 *
110 */ 110 */
111/* ====================================================================
112 * Copyright 2005 Nokia. All rights reserved.
113 *
114 * The portions of the attached software ("Contribution") is developed by
115 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
116 * license.
117 *
118 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
119 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
120 * support (see RFC 4279) to OpenSSL.
121 *
122 * No patent licenses or other rights except those expressly stated in
123 * the OpenSSL open source license shall be deemed granted or received
124 * expressly, by implication, estoppel, or otherwise.
125 *
126 * No assurances are provided by Nokia that the Contribution does not
127 * infringe the patent or other intellectual property rights of any third
128 * party or that the license provides you with all the necessary rights
129 * to make use of the Contribution.
130 *
131 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
132 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
133 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
134 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
135 * OTHERWISE.
136 */
111 137
112#include <stdio.h> 138#include <stdio.h>
113#include "ssl_locl.h" 139#include "ssl_locl.h"
@@ -129,10 +155,8 @@ static unsigned char ssl3_pad_2[48]={
129 0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c, 155 0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,
130 0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c, 156 0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,
131 0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c }; 157 0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c,0x5c };
132 158static int ssl3_handshake_mac(SSL *s, int md_nid,
133static int ssl3_handshake_mac(SSL *s, EVP_MD_CTX *in_ctx,
134 const char *sender, int len, unsigned char *p); 159 const char *sender, int len, unsigned char *p);
135
136static int ssl3_generate_key_block(SSL *s, unsigned char *km, int num) 160static int ssl3_generate_key_block(SSL *s, unsigned char *km, int num)
137 { 161 {
138 EVP_MD_CTX m5; 162 EVP_MD_CTX m5;
@@ -146,7 +170,6 @@ static int ssl3_generate_key_block(SSL *s, unsigned char *km, int num)
146#endif 170#endif
147 k=0; 171 k=0;
148 EVP_MD_CTX_init(&m5); 172 EVP_MD_CTX_init(&m5);
149 EVP_MD_CTX_set_flags(&m5, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
150 EVP_MD_CTX_init(&s1); 173 EVP_MD_CTX_init(&s1);
151 for (i=0; (int)i<num; i+=MD5_DIGEST_LENGTH) 174 for (i=0; (int)i<num; i+=MD5_DIGEST_LENGTH)
152 { 175 {
@@ -208,6 +231,8 @@ int ssl3_change_cipher_state(SSL *s, int which)
208 is_exp=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher); 231 is_exp=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher);
209 c=s->s3->tmp.new_sym_enc; 232 c=s->s3->tmp.new_sym_enc;
210 m=s->s3->tmp.new_hash; 233 m=s->s3->tmp.new_hash;
234 /* m == NULL will lead to a crash later */
235 OPENSSL_assert(m);
211#ifndef OPENSSL_NO_COMP 236#ifndef OPENSSL_NO_COMP
212 if (s->s3->tmp.new_compression == NULL) 237 if (s->s3->tmp.new_compression == NULL)
213 comp=NULL; 238 comp=NULL;
@@ -226,7 +251,8 @@ int ssl3_change_cipher_state(SSL *s, int which)
226 /* make sure it's intialized in case we exit later with an error */ 251 /* make sure it's intialized in case we exit later with an error */
227 EVP_CIPHER_CTX_init(s->enc_read_ctx); 252 EVP_CIPHER_CTX_init(s->enc_read_ctx);
228 dd= s->enc_read_ctx; 253 dd= s->enc_read_ctx;
229 s->read_hash=m; 254
255 ssl_replace_hash(&s->read_hash,m);
230#ifndef OPENSSL_NO_COMP 256#ifndef OPENSSL_NO_COMP
231 /* COMPRESS */ 257 /* COMPRESS */
232 if (s->expand != NULL) 258 if (s->expand != NULL)
@@ -262,7 +288,7 @@ int ssl3_change_cipher_state(SSL *s, int which)
262 /* make sure it's intialized in case we exit later with an error */ 288 /* make sure it's intialized in case we exit later with an error */
263 EVP_CIPHER_CTX_init(s->enc_write_ctx); 289 EVP_CIPHER_CTX_init(s->enc_write_ctx);
264 dd= s->enc_write_ctx; 290 dd= s->enc_write_ctx;
265 s->write_hash=m; 291 ssl_replace_hash(&s->write_hash,m);
266#ifndef OPENSSL_NO_COMP 292#ifndef OPENSSL_NO_COMP
267 /* COMPRESS */ 293 /* COMPRESS */
268 if (s->compress != NULL) 294 if (s->compress != NULL)
@@ -289,6 +315,8 @@ int ssl3_change_cipher_state(SSL *s, int which)
289 315
290 p=s->s3->tmp.key_block; 316 p=s->s3->tmp.key_block;
291 i=EVP_MD_size(m); 317 i=EVP_MD_size(m);
318 if (i < 0)
319 goto err2;
292 cl=EVP_CIPHER_key_length(c); 320 cl=EVP_CIPHER_key_length(c);
293 j=is_exp ? (cl < SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher) ? 321 j=is_exp ? (cl < SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher) ?
294 cl : SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher)) : cl; 322 cl : SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher)) : cl;
@@ -369,7 +397,7 @@ int ssl3_setup_key_block(SSL *s)
369 if (s->s3->tmp.key_block_length != 0) 397 if (s->s3->tmp.key_block_length != 0)
370 return(1); 398 return(1);
371 399
372 if (!ssl_cipher_get_evp(s->session,&c,&hash,&comp)) 400 if (!ssl_cipher_get_evp(s->session,&c,&hash,NULL,NULL,&comp))
373 { 401 {
374 SSLerr(SSL_F_SSL3_SETUP_KEY_BLOCK,SSL_R_CIPHER_OR_HASH_UNAVAILABLE); 402 SSLerr(SSL_F_SSL3_SETUP_KEY_BLOCK,SSL_R_CIPHER_OR_HASH_UNAVAILABLE);
375 return(0); 403 return(0);
@@ -383,7 +411,11 @@ int ssl3_setup_key_block(SSL *s)
383 s->s3->tmp.new_compression=comp; 411 s->s3->tmp.new_compression=comp;
384#endif 412#endif
385 413
386 num=EVP_CIPHER_key_length(c)+EVP_MD_size(hash)+EVP_CIPHER_iv_length(c); 414 num=EVP_MD_size(hash);
415 if (num < 0)
416 return 0;
417
418 num=EVP_CIPHER_key_length(c)+num+EVP_CIPHER_iv_length(c);
387 num*=2; 419 num*=2;
388 420
389 ssl3_cleanup_key_block(s); 421 ssl3_cleanup_key_block(s);
@@ -405,11 +437,11 @@ int ssl3_setup_key_block(SSL *s)
405 437
406 if (s->session->cipher != NULL) 438 if (s->session->cipher != NULL)
407 { 439 {
408 if ((s->session->cipher->algorithms & SSL_ENC_MASK) == SSL_eNULL) 440 if (s->session->cipher->algorithm_enc == SSL_eNULL)
409 s->s3->need_empty_fragments = 0; 441 s->s3->need_empty_fragments = 0;
410 442
411#ifndef OPENSSL_NO_RC4 443#ifndef OPENSSL_NO_RC4
412 if ((s->session->cipher->algorithms & SSL_ENC_MASK) == SSL_RC4) 444 if (s->session->cipher->algorithm_enc == SSL_RC4)
413 s->s3->need_empty_fragments = 0; 445 s->s3->need_empty_fragments = 0;
414#endif 446#endif
415 } 447 }
@@ -519,50 +551,131 @@ int ssl3_enc(SSL *s, int send)
519 551
520void ssl3_init_finished_mac(SSL *s) 552void ssl3_init_finished_mac(SSL *s)
521 { 553 {
522 EVP_MD_CTX_set_flags(&(s->s3->finish_dgst1), 554 if (s->s3->handshake_buffer) BIO_free(s->s3->handshake_buffer);
523 EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); 555 if (s->s3->handshake_dgst) ssl3_free_digest_list(s);
524 EVP_DigestInit_ex(&(s->s3->finish_dgst1),s->ctx->md5, NULL); 556 s->s3->handshake_buffer=BIO_new(BIO_s_mem());
525 EVP_DigestInit_ex(&(s->s3->finish_dgst2),s->ctx->sha1, NULL); 557 (void)BIO_set_close(s->s3->handshake_buffer,BIO_CLOSE);
526 } 558 }
527 559
560void ssl3_free_digest_list(SSL *s)
561 {
562 int i;
563 if (!s->s3->handshake_dgst) return;
564 for (i=0;i<SSL_MAX_DIGEST;i++)
565 {
566 if (s->s3->handshake_dgst[i])
567 EVP_MD_CTX_destroy(s->s3->handshake_dgst[i]);
568 }
569 OPENSSL_free(s->s3->handshake_dgst);
570 s->s3->handshake_dgst=NULL;
571 }
572
573
574
528void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len) 575void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len)
529 { 576 {
530 EVP_DigestUpdate(&(s->s3->finish_dgst1),buf,len); 577 if (s->s3->handshake_buffer)
531 EVP_DigestUpdate(&(s->s3->finish_dgst2),buf,len); 578 {
579 BIO_write (s->s3->handshake_buffer,(void *)buf,len);
580 }
581 else
582 {
583 int i;
584 for (i=0;i< SSL_MAX_DIGEST;i++)
585 {
586 if (s->s3->handshake_dgst[i]!= NULL)
587 EVP_DigestUpdate(s->s3->handshake_dgst[i],buf,len);
588 }
589 }
532 } 590 }
533 591
534int ssl3_cert_verify_mac(SSL *s, EVP_MD_CTX *ctx, unsigned char *p) 592int ssl3_digest_cached_records(SSL *s)
535 { 593 {
536 return(ssl3_handshake_mac(s,ctx,NULL,0,p)); 594 int i;
595 long mask;
596 const EVP_MD *md;
597 long hdatalen;
598 void *hdata;
599
600 /* Allocate handshake_dgst array */
601 ssl3_free_digest_list(s);
602 s->s3->handshake_dgst = OPENSSL_malloc(SSL_MAX_DIGEST * sizeof(EVP_MD_CTX *));
603 memset(s->s3->handshake_dgst,0,SSL_MAX_DIGEST *sizeof(EVP_MD_CTX *));
604 hdatalen = BIO_get_mem_data(s->s3->handshake_buffer,&hdata);
605 if (hdatalen <= 0)
606 {
607 SSLerr(SSL_F_SSL3_DIGEST_CACHED_RECORDS, SSL_R_BAD_HANDSHAKE_LENGTH);
608 return 0;
609 }
610
611 /* Loop through bitso of algorithm2 field and create MD_CTX-es */
612 for (i=0;ssl_get_handshake_digest(i,&mask,&md); i++)
613 {
614 if ((mask & s->s3->tmp.new_cipher->algorithm2) && md)
615 {
616 s->s3->handshake_dgst[i]=EVP_MD_CTX_create();
617 EVP_DigestInit_ex(s->s3->handshake_dgst[i],md,NULL);
618 EVP_DigestUpdate(s->s3->handshake_dgst[i],hdata,hdatalen);
619 }
620 else
621 {
622 s->s3->handshake_dgst[i]=NULL;
623 }
624 }
625 /* Free handshake_buffer BIO */
626 BIO_free(s->s3->handshake_buffer);
627 s->s3->handshake_buffer = NULL;
628
629 return 1;
537 } 630 }
538 631
539int ssl3_final_finish_mac(SSL *s, EVP_MD_CTX *ctx1, EVP_MD_CTX *ctx2, 632int ssl3_cert_verify_mac(SSL *s, int md_nid, unsigned char *p)
633 {
634 return(ssl3_handshake_mac(s,md_nid,NULL,0,p));
635 }
636int ssl3_final_finish_mac(SSL *s,
540 const char *sender, int len, unsigned char *p) 637 const char *sender, int len, unsigned char *p)
541 { 638 {
542 int ret; 639 int ret;
543 640 ret=ssl3_handshake_mac(s,NID_md5,sender,len,p);
544 ret=ssl3_handshake_mac(s,ctx1,sender,len,p);
545 p+=ret; 641 p+=ret;
546 ret+=ssl3_handshake_mac(s,ctx2,sender,len,p); 642 ret+=ssl3_handshake_mac(s,NID_sha1,sender,len,p);
547 return(ret); 643 return(ret);
548 } 644 }
549 645static int ssl3_handshake_mac(SSL *s, int md_nid,
550static int ssl3_handshake_mac(SSL *s, EVP_MD_CTX *in_ctx,
551 const char *sender, int len, unsigned char *p) 646 const char *sender, int len, unsigned char *p)
552 { 647 {
553 unsigned int ret; 648 unsigned int ret;
554 int npad,n; 649 int npad,n;
555 unsigned int i; 650 unsigned int i;
556 unsigned char md_buf[EVP_MAX_MD_SIZE]; 651 unsigned char md_buf[EVP_MAX_MD_SIZE];
557 EVP_MD_CTX ctx; 652 EVP_MD_CTX ctx,*d=NULL;
558 653
559 EVP_MD_CTX_init(&ctx); 654 if (s->s3->handshake_buffer)
560 EVP_MD_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); 655 if (!ssl3_digest_cached_records(s))
561 EVP_MD_CTX_copy_ex(&ctx,in_ctx); 656 return 0;
562 657
658 /* Search for digest of specified type in the handshake_dgst
659 * array*/
660 for (i=0;i<SSL_MAX_DIGEST;i++)
661 {
662 if (s->s3->handshake_dgst[i]&&EVP_MD_CTX_type(s->s3->handshake_dgst[i])==md_nid)
663 {
664 d=s->s3->handshake_dgst[i];
665 break;
666 }
667 }
668 if (!d) {
669 SSLerr(SSL_F_SSL3_HANDSHAKE_MAC,SSL_R_NO_REQUIRED_DIGEST);
670 return 0;
671 }
672 EVP_MD_CTX_init(&ctx);
673 EVP_MD_CTX_copy_ex(&ctx,d);
563 n=EVP_MD_CTX_size(&ctx); 674 n=EVP_MD_CTX_size(&ctx);
564 npad=(48/n)*n; 675 if (n < 0)
676 return 0;
565 677
678 npad=(48/n)*n;
566 if (sender != NULL) 679 if (sender != NULL)
567 EVP_DigestUpdate(&ctx,sender,len); 680 EVP_DigestUpdate(&ctx,sender,len);
568 EVP_DigestUpdate(&ctx,s->session->master_key, 681 EVP_DigestUpdate(&ctx,s->session->master_key,
@@ -582,15 +695,16 @@ static int ssl3_handshake_mac(SSL *s, EVP_MD_CTX *in_ctx,
582 return((int)ret); 695 return((int)ret);
583 } 696 }
584 697
585int ssl3_mac(SSL *ssl, unsigned char *md, int send) 698int n_ssl3_mac(SSL *ssl, unsigned char *md, int send)
586 { 699 {
587 SSL3_RECORD *rec; 700 SSL3_RECORD *rec;
588 unsigned char *mac_sec,*seq; 701 unsigned char *mac_sec,*seq;
589 EVP_MD_CTX md_ctx; 702 EVP_MD_CTX md_ctx;
590 const EVP_MD *hash; 703 const EVP_MD_CTX *hash;
591 unsigned char *p,rec_char; 704 unsigned char *p,rec_char;
592 unsigned int md_size; 705 unsigned int md_size;
593 int npad; 706 int npad;
707 int t;
594 708
595 if (send) 709 if (send)
596 { 710 {
@@ -607,13 +721,16 @@ int ssl3_mac(SSL *ssl, unsigned char *md, int send)
607 hash=ssl->read_hash; 721 hash=ssl->read_hash;
608 } 722 }
609 723
610 md_size=EVP_MD_size(hash); 724 t=EVP_MD_CTX_size(hash);
725 if (t < 0)
726 return -1;
727 md_size=t;
611 npad=(48/md_size)*md_size; 728 npad=(48/md_size)*md_size;
612 729
613 /* Chop the digest off the end :-) */ 730 /* Chop the digest off the end :-) */
614 EVP_MD_CTX_init(&md_ctx); 731 EVP_MD_CTX_init(&md_ctx);
615 732
616 EVP_DigestInit_ex( &md_ctx,hash, NULL); 733 EVP_MD_CTX_copy_ex( &md_ctx,hash);
617 EVP_DigestUpdate(&md_ctx,mac_sec,md_size); 734 EVP_DigestUpdate(&md_ctx,mac_sec,md_size);
618 EVP_DigestUpdate(&md_ctx,ssl3_pad_1,npad); 735 EVP_DigestUpdate(&md_ctx,ssl3_pad_1,npad);
619 EVP_DigestUpdate(&md_ctx,seq,8); 736 EVP_DigestUpdate(&md_ctx,seq,8);
@@ -625,7 +742,7 @@ int ssl3_mac(SSL *ssl, unsigned char *md, int send)
625 EVP_DigestUpdate(&md_ctx,rec->input,rec->length); 742 EVP_DigestUpdate(&md_ctx,rec->input,rec->length);
626 EVP_DigestFinal_ex( &md_ctx,md,NULL); 743 EVP_DigestFinal_ex( &md_ctx,md,NULL);
627 744
628 EVP_DigestInit_ex( &md_ctx,hash, NULL); 745 EVP_MD_CTX_copy_ex( &md_ctx,hash);
629 EVP_DigestUpdate(&md_ctx,mac_sec,md_size); 746 EVP_DigestUpdate(&md_ctx,mac_sec,md_size);
630 EVP_DigestUpdate(&md_ctx,ssl3_pad_2,npad); 747 EVP_DigestUpdate(&md_ctx,ssl3_pad_2,npad);
631 EVP_DigestUpdate(&md_ctx,md,md_size); 748 EVP_DigestUpdate(&md_ctx,md,md_size);
@@ -718,6 +835,12 @@ int ssl3_alert_code(int code)
718 case SSL_AD_INTERNAL_ERROR: return(SSL3_AD_HANDSHAKE_FAILURE); 835 case SSL_AD_INTERNAL_ERROR: return(SSL3_AD_HANDSHAKE_FAILURE);
719 case SSL_AD_USER_CANCELLED: return(SSL3_AD_HANDSHAKE_FAILURE); 836 case SSL_AD_USER_CANCELLED: return(SSL3_AD_HANDSHAKE_FAILURE);
720 case SSL_AD_NO_RENEGOTIATION: return(-1); /* Don't send it :-) */ 837 case SSL_AD_NO_RENEGOTIATION: return(-1); /* Don't send it :-) */
838 case SSL_AD_UNSUPPORTED_EXTENSION: return(SSL3_AD_HANDSHAKE_FAILURE);
839 case SSL_AD_CERTIFICATE_UNOBTAINABLE: return(SSL3_AD_HANDSHAKE_FAILURE);
840 case SSL_AD_UNRECOGNIZED_NAME: return(SSL3_AD_HANDSHAKE_FAILURE);
841 case SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE: return(SSL3_AD_HANDSHAKE_FAILURE);
842 case SSL_AD_BAD_CERTIFICATE_HASH_VALUE: return(SSL3_AD_HANDSHAKE_FAILURE);
843 case SSL_AD_UNKNOWN_PSK_IDENTITY:return(TLS1_AD_UNKNOWN_PSK_IDENTITY);
721 default: return(-1); 844 default: return(-1);
722 } 845 }
723 } 846 }
diff --git a/src/lib/libssl/src/ssl/s3_lib.c b/src/lib/libssl/src/ssl/s3_lib.c
index 8916a0b1b3..d6b047c995 100644
--- a/src/lib/libssl/src/ssl/s3_lib.c
+++ b/src/lib/libssl/src/ssl/s3_lib.c
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -121,16 +121,46 @@
121 * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories. 121 * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories.
122 * 122 *
123 */ 123 */
124/* ====================================================================
125 * Copyright 2005 Nokia. All rights reserved.
126 *
127 * The portions of the attached software ("Contribution") is developed by
128 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
129 * license.
130 *
131 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
132 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
133 * support (see RFC 4279) to OpenSSL.
134 *
135 * No patent licenses or other rights except those expressly stated in
136 * the OpenSSL open source license shall be deemed granted or received
137 * expressly, by implication, estoppel, or otherwise.
138 *
139 * No assurances are provided by Nokia that the Contribution does not
140 * infringe the patent or other intellectual property rights of any third
141 * party or that the license provides you with all the necessary rights
142 * to make use of the Contribution.
143 *
144 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
145 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
146 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
147 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
148 * OTHERWISE.
149 */
124 150
125#include <stdio.h> 151#include <stdio.h>
126#include <openssl/objects.h> 152#include <openssl/objects.h>
127#include "ssl_locl.h" 153#include "ssl_locl.h"
128#include "kssl_lcl.h" 154#include "kssl_lcl.h"
155#ifndef OPENSSL_NO_TLSEXT
156#ifndef OPENSSL_NO_EC
157#include "../crypto/ec/ec_lcl.h"
158#endif /* OPENSSL_NO_EC */
159#endif /* OPENSSL_NO_TLSEXT */
129#include <openssl/md5.h> 160#include <openssl/md5.h>
130#ifndef OPENSSL_NO_DH 161#ifndef OPENSSL_NO_DH
131#include <openssl/dh.h> 162#include <openssl/dh.h>
132#endif 163#endif
133#include <openssl/pq_compat.h>
134 164
135const char ssl3_version_str[]="SSLv3" OPENSSL_VERSION_PTEXT; 165const char ssl3_version_str[]="SSLv3" OPENSSL_VERSION_PTEXT;
136 166
@@ -138,217 +168,265 @@ const char ssl3_version_str[]="SSLv3" OPENSSL_VERSION_PTEXT;
138 168
139/* list of available SSLv3 ciphers (sorted by id) */ 169/* list of available SSLv3 ciphers (sorted by id) */
140OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={ 170OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
171
141/* The RSA ciphers */ 172/* The RSA ciphers */
142/* Cipher 01 */ 173/* Cipher 01 */
143 { 174 {
144 1, 175 1,
145 SSL3_TXT_RSA_NULL_MD5, 176 SSL3_TXT_RSA_NULL_MD5,
146 SSL3_CK_RSA_NULL_MD5, 177 SSL3_CK_RSA_NULL_MD5,
147 SSL_kRSA|SSL_aRSA|SSL_eNULL |SSL_MD5|SSL_SSLV3, 178 SSL_kRSA,
179 SSL_aRSA,
180 SSL_eNULL,
181 SSL_MD5,
182 SSL_SSLV3,
148 SSL_NOT_EXP|SSL_STRONG_NONE, 183 SSL_NOT_EXP|SSL_STRONG_NONE,
184 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
149 0, 185 0,
150 0, 186 0,
151 0,
152 SSL_ALL_CIPHERS,
153 SSL_ALL_STRENGTHS,
154 }, 187 },
188
155/* Cipher 02 */ 189/* Cipher 02 */
156 { 190 {
157 1, 191 1,
158 SSL3_TXT_RSA_NULL_SHA, 192 SSL3_TXT_RSA_NULL_SHA,
159 SSL3_CK_RSA_NULL_SHA, 193 SSL3_CK_RSA_NULL_SHA,
160 SSL_kRSA|SSL_aRSA|SSL_eNULL |SSL_SHA1|SSL_SSLV3, 194 SSL_kRSA,
195 SSL_aRSA,
196 SSL_eNULL,
197 SSL_SHA1,
198 SSL_SSLV3,
161 SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS, 199 SSL_NOT_EXP|SSL_STRONG_NONE|SSL_FIPS,
200 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
162 0, 201 0,
163 0, 202 0,
164 0,
165 SSL_ALL_CIPHERS,
166 SSL_ALL_STRENGTHS,
167 }, 203 },
204
168/* Cipher 03 */ 205/* Cipher 03 */
169 { 206 {
170 1, 207 1,
171 SSL3_TXT_RSA_RC4_40_MD5, 208 SSL3_TXT_RSA_RC4_40_MD5,
172 SSL3_CK_RSA_RC4_40_MD5, 209 SSL3_CK_RSA_RC4_40_MD5,
173 SSL_kRSA|SSL_aRSA|SSL_RC4 |SSL_MD5 |SSL_SSLV3, 210 SSL_kRSA,
211 SSL_aRSA,
212 SSL_RC4,
213 SSL_MD5,
214 SSL_SSLV3,
174 SSL_EXPORT|SSL_EXP40, 215 SSL_EXPORT|SSL_EXP40,
175 0, 216 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
176 40, 217 40,
177 128, 218 128,
178 SSL_ALL_CIPHERS,
179 SSL_ALL_STRENGTHS,
180 }, 219 },
220
181/* Cipher 04 */ 221/* Cipher 04 */
182 { 222 {
183 1, 223 1,
184 SSL3_TXT_RSA_RC4_128_MD5, 224 SSL3_TXT_RSA_RC4_128_MD5,
185 SSL3_CK_RSA_RC4_128_MD5, 225 SSL3_CK_RSA_RC4_128_MD5,
186 SSL_kRSA|SSL_aRSA|SSL_RC4 |SSL_MD5|SSL_SSLV3, 226 SSL_kRSA,
227 SSL_aRSA,
228 SSL_RC4,
229 SSL_MD5,
230 SSL_SSLV3,
187 SSL_NOT_EXP|SSL_MEDIUM, 231 SSL_NOT_EXP|SSL_MEDIUM,
188 0, 232 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
189 128, 233 128,
190 128, 234 128,
191 SSL_ALL_CIPHERS,
192 SSL_ALL_STRENGTHS,
193 }, 235 },
236
194/* Cipher 05 */ 237/* Cipher 05 */
195 { 238 {
196 1, 239 1,
197 SSL3_TXT_RSA_RC4_128_SHA, 240 SSL3_TXT_RSA_RC4_128_SHA,
198 SSL3_CK_RSA_RC4_128_SHA, 241 SSL3_CK_RSA_RC4_128_SHA,
199 SSL_kRSA|SSL_aRSA|SSL_RC4 |SSL_SHA1|SSL_SSLV3, 242 SSL_kRSA,
243 SSL_aRSA,
244 SSL_RC4,
245 SSL_SHA1,
246 SSL_SSLV3,
200 SSL_NOT_EXP|SSL_MEDIUM, 247 SSL_NOT_EXP|SSL_MEDIUM,
201 0, 248 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
202 128, 249 128,
203 128, 250 128,
204 SSL_ALL_CIPHERS,
205 SSL_ALL_STRENGTHS,
206 }, 251 },
252
207/* Cipher 06 */ 253/* Cipher 06 */
208 { 254 {
209 1, 255 1,
210 SSL3_TXT_RSA_RC2_40_MD5, 256 SSL3_TXT_RSA_RC2_40_MD5,
211 SSL3_CK_RSA_RC2_40_MD5, 257 SSL3_CK_RSA_RC2_40_MD5,
212 SSL_kRSA|SSL_aRSA|SSL_RC2 |SSL_MD5 |SSL_SSLV3, 258 SSL_kRSA,
259 SSL_aRSA,
260 SSL_RC2,
261 SSL_MD5,
262 SSL_SSLV3,
213 SSL_EXPORT|SSL_EXP40, 263 SSL_EXPORT|SSL_EXP40,
214 0, 264 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
215 40, 265 40,
216 128, 266 128,
217 SSL_ALL_CIPHERS,
218 SSL_ALL_STRENGTHS,
219 }, 267 },
268
220/* Cipher 07 */ 269/* Cipher 07 */
221#ifndef OPENSSL_NO_IDEA 270#ifndef OPENSSL_NO_IDEA
222 { 271 {
223 1, 272 1,
224 SSL3_TXT_RSA_IDEA_128_SHA, 273 SSL3_TXT_RSA_IDEA_128_SHA,
225 SSL3_CK_RSA_IDEA_128_SHA, 274 SSL3_CK_RSA_IDEA_128_SHA,
226 SSL_kRSA|SSL_aRSA|SSL_IDEA |SSL_SHA1|SSL_SSLV3, 275 SSL_kRSA,
276 SSL_aRSA,
277 SSL_IDEA,
278 SSL_SHA1,
279 SSL_SSLV3,
227 SSL_NOT_EXP|SSL_MEDIUM, 280 SSL_NOT_EXP|SSL_MEDIUM,
228 0, 281 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
229 128, 282 128,
230 128, 283 128,
231 SSL_ALL_CIPHERS,
232 SSL_ALL_STRENGTHS,
233 }, 284 },
234#endif 285#endif
286
235/* Cipher 08 */ 287/* Cipher 08 */
236 { 288 {
237 1, 289 1,
238 SSL3_TXT_RSA_DES_40_CBC_SHA, 290 SSL3_TXT_RSA_DES_40_CBC_SHA,
239 SSL3_CK_RSA_DES_40_CBC_SHA, 291 SSL3_CK_RSA_DES_40_CBC_SHA,
240 SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA1|SSL_SSLV3, 292 SSL_kRSA,
293 SSL_aRSA,
294 SSL_DES,
295 SSL_SHA1,
296 SSL_SSLV3,
241 SSL_EXPORT|SSL_EXP40, 297 SSL_EXPORT|SSL_EXP40,
242 0, 298 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
243 40, 299 40,
244 56, 300 56,
245 SSL_ALL_CIPHERS,
246 SSL_ALL_STRENGTHS,
247 }, 301 },
302
248/* Cipher 09 */ 303/* Cipher 09 */
249 { 304 {
250 1, 305 1,
251 SSL3_TXT_RSA_DES_64_CBC_SHA, 306 SSL3_TXT_RSA_DES_64_CBC_SHA,
252 SSL3_CK_RSA_DES_64_CBC_SHA, 307 SSL3_CK_RSA_DES_64_CBC_SHA,
253 SSL_kRSA|SSL_aRSA|SSL_DES |SSL_SHA1|SSL_SSLV3, 308 SSL_kRSA,
309 SSL_aRSA,
310 SSL_DES,
311 SSL_SHA1,
312 SSL_SSLV3,
254 SSL_NOT_EXP|SSL_LOW, 313 SSL_NOT_EXP|SSL_LOW,
255 0, 314 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
256 56, 315 56,
257 56, 316 56,
258 SSL_ALL_CIPHERS,
259 SSL_ALL_STRENGTHS,
260 }, 317 },
318
261/* Cipher 0A */ 319/* Cipher 0A */
262 { 320 {
263 1, 321 1,
264 SSL3_TXT_RSA_DES_192_CBC3_SHA, 322 SSL3_TXT_RSA_DES_192_CBC3_SHA,
265 SSL3_CK_RSA_DES_192_CBC3_SHA, 323 SSL3_CK_RSA_DES_192_CBC3_SHA,
266 SSL_kRSA|SSL_aRSA|SSL_3DES |SSL_SHA1|SSL_SSLV3, 324 SSL_kRSA,
325 SSL_aRSA,
326 SSL_3DES,
327 SSL_SHA1,
328 SSL_SSLV3,
267 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 329 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
268 0, 330 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
269 168, 331 168,
270 168, 332 168,
271 SSL_ALL_CIPHERS,
272 SSL_ALL_STRENGTHS,
273 }, 333 },
334
274/* The DH ciphers */ 335/* The DH ciphers */
275/* Cipher 0B */ 336/* Cipher 0B */
276 { 337 {
277 0, 338 0,
278 SSL3_TXT_DH_DSS_DES_40_CBC_SHA, 339 SSL3_TXT_DH_DSS_DES_40_CBC_SHA,
279 SSL3_CK_DH_DSS_DES_40_CBC_SHA, 340 SSL3_CK_DH_DSS_DES_40_CBC_SHA,
280 SSL_kDHd |SSL_aDH|SSL_DES|SSL_SHA1|SSL_SSLV3, 341 SSL_kDHd,
342 SSL_aDH,
343 SSL_DES,
344 SSL_SHA1,
345 SSL_SSLV3,
281 SSL_EXPORT|SSL_EXP40, 346 SSL_EXPORT|SSL_EXP40,
282 0, 347 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
283 40, 348 40,
284 56, 349 56,
285 SSL_ALL_CIPHERS,
286 SSL_ALL_STRENGTHS,
287 }, 350 },
351
288/* Cipher 0C */ 352/* Cipher 0C */
289 { 353 {
290 0, 354 0, /* not implemented (non-ephemeral DH) */
291 SSL3_TXT_DH_DSS_DES_64_CBC_SHA, 355 SSL3_TXT_DH_DSS_DES_64_CBC_SHA,
292 SSL3_CK_DH_DSS_DES_64_CBC_SHA, 356 SSL3_CK_DH_DSS_DES_64_CBC_SHA,
293 SSL_kDHd |SSL_aDH|SSL_DES |SSL_SHA1|SSL_SSLV3, 357 SSL_kDHd,
358 SSL_aDH,
359 SSL_DES,
360 SSL_SHA1,
361 SSL_SSLV3,
294 SSL_NOT_EXP|SSL_LOW, 362 SSL_NOT_EXP|SSL_LOW,
295 0, 363 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
296 56, 364 56,
297 56, 365 56,
298 SSL_ALL_CIPHERS,
299 SSL_ALL_STRENGTHS,
300 }, 366 },
367
301/* Cipher 0D */ 368/* Cipher 0D */
302 { 369 {
303 0, 370 0, /* not implemented (non-ephemeral DH) */
304 SSL3_TXT_DH_DSS_DES_192_CBC3_SHA, 371 SSL3_TXT_DH_DSS_DES_192_CBC3_SHA,
305 SSL3_CK_DH_DSS_DES_192_CBC3_SHA, 372 SSL3_CK_DH_DSS_DES_192_CBC3_SHA,
306 SSL_kDHd |SSL_aDH|SSL_3DES |SSL_SHA1|SSL_SSLV3, 373 SSL_kDHd,
374 SSL_aDH,
375 SSL_3DES,
376 SSL_SHA1,
377 SSL_SSLV3,
307 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 378 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
308 0, 379 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
309 168, 380 168,
310 168, 381 168,
311 SSL_ALL_CIPHERS,
312 SSL_ALL_STRENGTHS,
313 }, 382 },
383
314/* Cipher 0E */ 384/* Cipher 0E */
315 { 385 {
316 0, 386 0, /* not implemented (non-ephemeral DH) */
317 SSL3_TXT_DH_RSA_DES_40_CBC_SHA, 387 SSL3_TXT_DH_RSA_DES_40_CBC_SHA,
318 SSL3_CK_DH_RSA_DES_40_CBC_SHA, 388 SSL3_CK_DH_RSA_DES_40_CBC_SHA,
319 SSL_kDHr |SSL_aDH|SSL_DES|SSL_SHA1|SSL_SSLV3, 389 SSL_kDHr,
390 SSL_aDH,
391 SSL_DES,
392 SSL_SHA1,
393 SSL_SSLV3,
320 SSL_EXPORT|SSL_EXP40, 394 SSL_EXPORT|SSL_EXP40,
321 0, 395 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
322 40, 396 40,
323 56, 397 56,
324 SSL_ALL_CIPHERS,
325 SSL_ALL_STRENGTHS,
326 }, 398 },
399
327/* Cipher 0F */ 400/* Cipher 0F */
328 { 401 {
329 0, 402 0, /* not implemented (non-ephemeral DH) */
330 SSL3_TXT_DH_RSA_DES_64_CBC_SHA, 403 SSL3_TXT_DH_RSA_DES_64_CBC_SHA,
331 SSL3_CK_DH_RSA_DES_64_CBC_SHA, 404 SSL3_CK_DH_RSA_DES_64_CBC_SHA,
332 SSL_kDHr |SSL_aDH|SSL_DES |SSL_SHA1|SSL_SSLV3, 405 SSL_kDHr,
406 SSL_aDH,
407 SSL_DES,
408 SSL_SHA1,
409 SSL_SSLV3,
333 SSL_NOT_EXP|SSL_LOW, 410 SSL_NOT_EXP|SSL_LOW,
334 0, 411 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
335 56, 412 56,
336 56, 413 56,
337 SSL_ALL_CIPHERS,
338 SSL_ALL_STRENGTHS,
339 }, 414 },
415
340/* Cipher 10 */ 416/* Cipher 10 */
341 { 417 {
342 0, 418 0, /* not implemented (non-ephemeral DH) */
343 SSL3_TXT_DH_RSA_DES_192_CBC3_SHA, 419 SSL3_TXT_DH_RSA_DES_192_CBC3_SHA,
344 SSL3_CK_DH_RSA_DES_192_CBC3_SHA, 420 SSL3_CK_DH_RSA_DES_192_CBC3_SHA,
345 SSL_kDHr |SSL_aDH|SSL_3DES |SSL_SHA1|SSL_SSLV3, 421 SSL_kDHr,
422 SSL_aDH,
423 SSL_3DES,
424 SSL_SHA1,
425 SSL_SSLV3,
346 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 426 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
347 0, 427 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
348 168, 428 168,
349 168, 429 168,
350 SSL_ALL_CIPHERS,
351 SSL_ALL_STRENGTHS,
352 }, 430 },
353 431
354/* The Ephemeral DH ciphers */ 432/* The Ephemeral DH ciphers */
@@ -357,158 +435,193 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
357 1, 435 1,
358 SSL3_TXT_EDH_DSS_DES_40_CBC_SHA, 436 SSL3_TXT_EDH_DSS_DES_40_CBC_SHA,
359 SSL3_CK_EDH_DSS_DES_40_CBC_SHA, 437 SSL3_CK_EDH_DSS_DES_40_CBC_SHA,
360 SSL_kEDH|SSL_aDSS|SSL_DES|SSL_SHA1|SSL_SSLV3, 438 SSL_kEDH,
439 SSL_aDSS,
440 SSL_DES,
441 SSL_SHA1,
442 SSL_SSLV3,
361 SSL_EXPORT|SSL_EXP40, 443 SSL_EXPORT|SSL_EXP40,
362 0, 444 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
363 40, 445 40,
364 56, 446 56,
365 SSL_ALL_CIPHERS,
366 SSL_ALL_STRENGTHS,
367 }, 447 },
448
368/* Cipher 12 */ 449/* Cipher 12 */
369 { 450 {
370 1, 451 1,
371 SSL3_TXT_EDH_DSS_DES_64_CBC_SHA, 452 SSL3_TXT_EDH_DSS_DES_64_CBC_SHA,
372 SSL3_CK_EDH_DSS_DES_64_CBC_SHA, 453 SSL3_CK_EDH_DSS_DES_64_CBC_SHA,
373 SSL_kEDH|SSL_aDSS|SSL_DES |SSL_SHA1|SSL_SSLV3, 454 SSL_kEDH,
455 SSL_aDSS,
456 SSL_DES,
457 SSL_SHA1,
458 SSL_SSLV3,
374 SSL_NOT_EXP|SSL_LOW, 459 SSL_NOT_EXP|SSL_LOW,
375 0, 460 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
376 56, 461 56,
377 56, 462 56,
378 SSL_ALL_CIPHERS,
379 SSL_ALL_STRENGTHS,
380 }, 463 },
464
381/* Cipher 13 */ 465/* Cipher 13 */
382 { 466 {
383 1, 467 1,
384 SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA, 468 SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA,
385 SSL3_CK_EDH_DSS_DES_192_CBC3_SHA, 469 SSL3_CK_EDH_DSS_DES_192_CBC3_SHA,
386 SSL_kEDH|SSL_aDSS|SSL_3DES |SSL_SHA1|SSL_SSLV3, 470 SSL_kEDH,
471 SSL_aDSS,
472 SSL_3DES,
473 SSL_SHA1,
474 SSL_SSLV3,
387 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 475 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
388 0, 476 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
389 168, 477 168,
390 168, 478 168,
391 SSL_ALL_CIPHERS,
392 SSL_ALL_STRENGTHS,
393 }, 479 },
480
394/* Cipher 14 */ 481/* Cipher 14 */
395 { 482 {
396 1, 483 1,
397 SSL3_TXT_EDH_RSA_DES_40_CBC_SHA, 484 SSL3_TXT_EDH_RSA_DES_40_CBC_SHA,
398 SSL3_CK_EDH_RSA_DES_40_CBC_SHA, 485 SSL3_CK_EDH_RSA_DES_40_CBC_SHA,
399 SSL_kEDH|SSL_aRSA|SSL_DES|SSL_SHA1|SSL_SSLV3, 486 SSL_kEDH,
487 SSL_aRSA,
488 SSL_DES,
489 SSL_SHA1,
490 SSL_SSLV3,
400 SSL_EXPORT|SSL_EXP40, 491 SSL_EXPORT|SSL_EXP40,
401 0, 492 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
402 40, 493 40,
403 56, 494 56,
404 SSL_ALL_CIPHERS,
405 SSL_ALL_STRENGTHS,
406 }, 495 },
496
407/* Cipher 15 */ 497/* Cipher 15 */
408 { 498 {
409 1, 499 1,
410 SSL3_TXT_EDH_RSA_DES_64_CBC_SHA, 500 SSL3_TXT_EDH_RSA_DES_64_CBC_SHA,
411 SSL3_CK_EDH_RSA_DES_64_CBC_SHA, 501 SSL3_CK_EDH_RSA_DES_64_CBC_SHA,
412 SSL_kEDH|SSL_aRSA|SSL_DES |SSL_SHA1|SSL_SSLV3, 502 SSL_kEDH,
503 SSL_aRSA,
504 SSL_DES,
505 SSL_SHA1,
506 SSL_SSLV3,
413 SSL_NOT_EXP|SSL_LOW, 507 SSL_NOT_EXP|SSL_LOW,
414 0, 508 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
415 56, 509 56,
416 56, 510 56,
417 SSL_ALL_CIPHERS,
418 SSL_ALL_STRENGTHS,
419 }, 511 },
512
420/* Cipher 16 */ 513/* Cipher 16 */
421 { 514 {
422 1, 515 1,
423 SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA, 516 SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA,
424 SSL3_CK_EDH_RSA_DES_192_CBC3_SHA, 517 SSL3_CK_EDH_RSA_DES_192_CBC3_SHA,
425 SSL_kEDH|SSL_aRSA|SSL_3DES |SSL_SHA1|SSL_SSLV3, 518 SSL_kEDH,
519 SSL_aRSA,
520 SSL_3DES,
521 SSL_SHA1,
522 SSL_SSLV3,
426 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 523 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
427 0, 524 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
428 168, 525 168,
429 168, 526 168,
430 SSL_ALL_CIPHERS,
431 SSL_ALL_STRENGTHS,
432 }, 527 },
528
433/* Cipher 17 */ 529/* Cipher 17 */
434 { 530 {
435 1, 531 1,
436 SSL3_TXT_ADH_RC4_40_MD5, 532 SSL3_TXT_ADH_RC4_40_MD5,
437 SSL3_CK_ADH_RC4_40_MD5, 533 SSL3_CK_ADH_RC4_40_MD5,
438 SSL_kEDH |SSL_aNULL|SSL_RC4 |SSL_MD5 |SSL_SSLV3, 534 SSL_kEDH,
535 SSL_aNULL,
536 SSL_RC4,
537 SSL_MD5,
538 SSL_SSLV3,
439 SSL_EXPORT|SSL_EXP40, 539 SSL_EXPORT|SSL_EXP40,
440 0, 540 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
441 40, 541 40,
442 128, 542 128,
443 SSL_ALL_CIPHERS,
444 SSL_ALL_STRENGTHS,
445 }, 543 },
544
446/* Cipher 18 */ 545/* Cipher 18 */
447 { 546 {
448 1, 547 1,
449 SSL3_TXT_ADH_RC4_128_MD5, 548 SSL3_TXT_ADH_RC4_128_MD5,
450 SSL3_CK_ADH_RC4_128_MD5, 549 SSL3_CK_ADH_RC4_128_MD5,
451 SSL_kEDH |SSL_aNULL|SSL_RC4 |SSL_MD5 |SSL_SSLV3, 550 SSL_kEDH,
551 SSL_aNULL,
552 SSL_RC4,
553 SSL_MD5,
554 SSL_SSLV3,
452 SSL_NOT_EXP|SSL_MEDIUM, 555 SSL_NOT_EXP|SSL_MEDIUM,
453 0, 556 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
454 128, 557 128,
455 128, 558 128,
456 SSL_ALL_CIPHERS,
457 SSL_ALL_STRENGTHS,
458 }, 559 },
560
459/* Cipher 19 */ 561/* Cipher 19 */
460 { 562 {
461 1, 563 1,
462 SSL3_TXT_ADH_DES_40_CBC_SHA, 564 SSL3_TXT_ADH_DES_40_CBC_SHA,
463 SSL3_CK_ADH_DES_40_CBC_SHA, 565 SSL3_CK_ADH_DES_40_CBC_SHA,
464 SSL_kEDH |SSL_aNULL|SSL_DES|SSL_SHA1|SSL_SSLV3, 566 SSL_kEDH,
567 SSL_aNULL,
568 SSL_DES,
569 SSL_SHA1,
570 SSL_SSLV3,
465 SSL_EXPORT|SSL_EXP40, 571 SSL_EXPORT|SSL_EXP40,
466 0, 572 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
467 40, 573 40,
468 128, 574 128,
469 SSL_ALL_CIPHERS,
470 SSL_ALL_STRENGTHS,
471 }, 575 },
576
472/* Cipher 1A */ 577/* Cipher 1A */
473 { 578 {
474 1, 579 1,
475 SSL3_TXT_ADH_DES_64_CBC_SHA, 580 SSL3_TXT_ADH_DES_64_CBC_SHA,
476 SSL3_CK_ADH_DES_64_CBC_SHA, 581 SSL3_CK_ADH_DES_64_CBC_SHA,
477 SSL_kEDH |SSL_aNULL|SSL_DES |SSL_SHA1|SSL_SSLV3, 582 SSL_kEDH,
583 SSL_aNULL,
584 SSL_DES,
585 SSL_SHA1,
586 SSL_SSLV3,
478 SSL_NOT_EXP|SSL_LOW, 587 SSL_NOT_EXP|SSL_LOW,
479 0, 588 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
480 56, 589 56,
481 56, 590 56,
482 SSL_ALL_CIPHERS,
483 SSL_ALL_STRENGTHS,
484 }, 591 },
592
485/* Cipher 1B */ 593/* Cipher 1B */
486 { 594 {
487 1, 595 1,
488 SSL3_TXT_ADH_DES_192_CBC_SHA, 596 SSL3_TXT_ADH_DES_192_CBC_SHA,
489 SSL3_CK_ADH_DES_192_CBC_SHA, 597 SSL3_CK_ADH_DES_192_CBC_SHA,
490 SSL_kEDH |SSL_aNULL|SSL_3DES |SSL_SHA1|SSL_SSLV3, 598 SSL_kEDH,
599 SSL_aNULL,
600 SSL_3DES,
601 SSL_SHA1,
602 SSL_SSLV3,
491 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 603 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
492 0, 604 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
493 168, 605 168,
494 168, 606 168,
495 SSL_ALL_CIPHERS,
496 SSL_ALL_STRENGTHS,
497 }, 607 },
498 608
499/* Fortezza */ 609/* Fortezza ciphersuite from SSL 3.0 spec */
610#if 0
500/* Cipher 1C */ 611/* Cipher 1C */
501 { 612 {
502 0, 613 0,
503 SSL3_TXT_FZA_DMS_NULL_SHA, 614 SSL3_TXT_FZA_DMS_NULL_SHA,
504 SSL3_CK_FZA_DMS_NULL_SHA, 615 SSL3_CK_FZA_DMS_NULL_SHA,
505 SSL_kFZA|SSL_aFZA |SSL_eNULL |SSL_SHA1|SSL_SSLV3, 616 SSL_kFZA,
617 SSL_aFZA,
618 SSL_eNULL,
619 SSL_SHA1,
620 SSL_SSLV3,
506 SSL_NOT_EXP|SSL_STRONG_NONE, 621 SSL_NOT_EXP|SSL_STRONG_NONE,
622 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
507 0, 623 0,
508 0, 624 0,
509 0,
510 SSL_ALL_CIPHERS,
511 SSL_ALL_STRENGTHS,
512 }, 625 },
513 626
514/* Cipher 1D */ 627/* Cipher 1D */
@@ -516,45 +629,50 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
516 0, 629 0,
517 SSL3_TXT_FZA_DMS_FZA_SHA, 630 SSL3_TXT_FZA_DMS_FZA_SHA,
518 SSL3_CK_FZA_DMS_FZA_SHA, 631 SSL3_CK_FZA_DMS_FZA_SHA,
519 SSL_kFZA|SSL_aFZA |SSL_eFZA |SSL_SHA1|SSL_SSLV3, 632 SSL_kFZA,
633 SSL_aFZA,
634 SSL_eFZA,
635 SSL_SHA1,
636 SSL_SSLV3,
520 SSL_NOT_EXP|SSL_STRONG_NONE, 637 SSL_NOT_EXP|SSL_STRONG_NONE,
638 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
521 0, 639 0,
522 0, 640 0,
523 0,
524 SSL_ALL_CIPHERS,
525 SSL_ALL_STRENGTHS,
526 }, 641 },
527 642
528#if 0
529/* Cipher 1E */ 643/* Cipher 1E */
530 { 644 {
531 0, 645 0,
532 SSL3_TXT_FZA_DMS_RC4_SHA, 646 SSL3_TXT_FZA_DMS_RC4_SHA,
533 SSL3_CK_FZA_DMS_RC4_SHA, 647 SSL3_CK_FZA_DMS_RC4_SHA,
534 SSL_kFZA|SSL_aFZA |SSL_RC4 |SSL_SHA1|SSL_SSLV3, 648 SSL_kFZA,
649 SSL_aFZA,
650 SSL_RC4,
651 SSL_SHA1,
652 SSL_SSLV3,
535 SSL_NOT_EXP|SSL_MEDIUM, 653 SSL_NOT_EXP|SSL_MEDIUM,
536 0, 654 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
537 128, 655 128,
538 128, 656 128,
539 SSL_ALL_CIPHERS,
540 SSL_ALL_STRENGTHS,
541 }, 657 },
542#endif 658#endif
543 659
544#ifndef OPENSSL_NO_KRB5 660#ifndef OPENSSL_NO_KRB5
545/* The Kerberos ciphers */ 661/* The Kerberos ciphers*/
546/* Cipher 1E */ 662/* Cipher 1E */
547 { 663 {
548 1, 664 1,
549 SSL3_TXT_KRB5_DES_64_CBC_SHA, 665 SSL3_TXT_KRB5_DES_64_CBC_SHA,
550 SSL3_CK_KRB5_DES_64_CBC_SHA, 666 SSL3_CK_KRB5_DES_64_CBC_SHA,
551 SSL_kKRB5|SSL_aKRB5| SSL_DES|SSL_SHA1 |SSL_SSLV3, 667 SSL_kKRB5,
668 SSL_aKRB5,
669 SSL_DES,
670 SSL_SHA1,
671 SSL_SSLV3,
552 SSL_NOT_EXP|SSL_LOW, 672 SSL_NOT_EXP|SSL_LOW,
553 0, 673 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
554 56, 674 56,
555 56, 675 56,
556 SSL_ALL_CIPHERS,
557 SSL_ALL_STRENGTHS,
558 }, 676 },
559 677
560/* Cipher 1F */ 678/* Cipher 1F */
@@ -562,13 +680,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
562 1, 680 1,
563 SSL3_TXT_KRB5_DES_192_CBC3_SHA, 681 SSL3_TXT_KRB5_DES_192_CBC3_SHA,
564 SSL3_CK_KRB5_DES_192_CBC3_SHA, 682 SSL3_CK_KRB5_DES_192_CBC3_SHA,
565 SSL_kKRB5|SSL_aKRB5| SSL_3DES|SSL_SHA1 |SSL_SSLV3, 683 SSL_kKRB5,
684 SSL_aKRB5,
685 SSL_3DES,
686 SSL_SHA1,
687 SSL_SSLV3,
566 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 688 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
567 0, 689 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
568 168, 690 168,
569 168, 691 168,
570 SSL_ALL_CIPHERS,
571 SSL_ALL_STRENGTHS,
572 }, 692 },
573 693
574/* Cipher 20 */ 694/* Cipher 20 */
@@ -576,13 +696,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
576 1, 696 1,
577 SSL3_TXT_KRB5_RC4_128_SHA, 697 SSL3_TXT_KRB5_RC4_128_SHA,
578 SSL3_CK_KRB5_RC4_128_SHA, 698 SSL3_CK_KRB5_RC4_128_SHA,
579 SSL_kKRB5|SSL_aKRB5| SSL_RC4|SSL_SHA1 |SSL_SSLV3, 699 SSL_kKRB5,
700 SSL_aKRB5,
701 SSL_RC4,
702 SSL_SHA1,
703 SSL_SSLV3,
580 SSL_NOT_EXP|SSL_MEDIUM, 704 SSL_NOT_EXP|SSL_MEDIUM,
581 0, 705 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
582 128, 706 128,
583 128, 707 128,
584 SSL_ALL_CIPHERS,
585 SSL_ALL_STRENGTHS,
586 }, 708 },
587 709
588/* Cipher 21 */ 710/* Cipher 21 */
@@ -590,13 +712,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
590 1, 712 1,
591 SSL3_TXT_KRB5_IDEA_128_CBC_SHA, 713 SSL3_TXT_KRB5_IDEA_128_CBC_SHA,
592 SSL3_CK_KRB5_IDEA_128_CBC_SHA, 714 SSL3_CK_KRB5_IDEA_128_CBC_SHA,
593 SSL_kKRB5|SSL_aKRB5| SSL_IDEA|SSL_SHA1 |SSL_SSLV3, 715 SSL_kKRB5,
716 SSL_aKRB5,
717 SSL_IDEA,
718 SSL_SHA1,
719 SSL_SSLV3,
594 SSL_NOT_EXP|SSL_MEDIUM, 720 SSL_NOT_EXP|SSL_MEDIUM,
595 0, 721 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
596 128, 722 128,
597 128, 723 128,
598 SSL_ALL_CIPHERS,
599 SSL_ALL_STRENGTHS,
600 }, 724 },
601 725
602/* Cipher 22 */ 726/* Cipher 22 */
@@ -604,13 +728,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
604 1, 728 1,
605 SSL3_TXT_KRB5_DES_64_CBC_MD5, 729 SSL3_TXT_KRB5_DES_64_CBC_MD5,
606 SSL3_CK_KRB5_DES_64_CBC_MD5, 730 SSL3_CK_KRB5_DES_64_CBC_MD5,
607 SSL_kKRB5|SSL_aKRB5| SSL_DES|SSL_MD5 |SSL_SSLV3, 731 SSL_kKRB5,
732 SSL_aKRB5,
733 SSL_DES,
734 SSL_MD5,
735 SSL_SSLV3,
608 SSL_NOT_EXP|SSL_LOW, 736 SSL_NOT_EXP|SSL_LOW,
609 0, 737 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
610 56, 738 56,
611 56, 739 56,
612 SSL_ALL_CIPHERS,
613 SSL_ALL_STRENGTHS,
614 }, 740 },
615 741
616/* Cipher 23 */ 742/* Cipher 23 */
@@ -618,13 +744,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
618 1, 744 1,
619 SSL3_TXT_KRB5_DES_192_CBC3_MD5, 745 SSL3_TXT_KRB5_DES_192_CBC3_MD5,
620 SSL3_CK_KRB5_DES_192_CBC3_MD5, 746 SSL3_CK_KRB5_DES_192_CBC3_MD5,
621 SSL_kKRB5|SSL_aKRB5| SSL_3DES|SSL_MD5 |SSL_SSLV3, 747 SSL_kKRB5,
748 SSL_aKRB5,
749 SSL_3DES,
750 SSL_MD5,
751 SSL_SSLV3,
622 SSL_NOT_EXP|SSL_HIGH, 752 SSL_NOT_EXP|SSL_HIGH,
623 0, 753 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
624 168, 754 168,
625 168, 755 168,
626 SSL_ALL_CIPHERS,
627 SSL_ALL_STRENGTHS,
628 }, 756 },
629 757
630/* Cipher 24 */ 758/* Cipher 24 */
@@ -632,13 +760,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
632 1, 760 1,
633 SSL3_TXT_KRB5_RC4_128_MD5, 761 SSL3_TXT_KRB5_RC4_128_MD5,
634 SSL3_CK_KRB5_RC4_128_MD5, 762 SSL3_CK_KRB5_RC4_128_MD5,
635 SSL_kKRB5|SSL_aKRB5| SSL_RC4|SSL_MD5 |SSL_SSLV3, 763 SSL_kKRB5,
764 SSL_aKRB5,
765 SSL_RC4,
766 SSL_MD5,
767 SSL_SSLV3,
636 SSL_NOT_EXP|SSL_MEDIUM, 768 SSL_NOT_EXP|SSL_MEDIUM,
637 0, 769 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
638 128, 770 128,
639 128, 771 128,
640 SSL_ALL_CIPHERS,
641 SSL_ALL_STRENGTHS,
642 }, 772 },
643 773
644/* Cipher 25 */ 774/* Cipher 25 */
@@ -646,13 +776,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
646 1, 776 1,
647 SSL3_TXT_KRB5_IDEA_128_CBC_MD5, 777 SSL3_TXT_KRB5_IDEA_128_CBC_MD5,
648 SSL3_CK_KRB5_IDEA_128_CBC_MD5, 778 SSL3_CK_KRB5_IDEA_128_CBC_MD5,
649 SSL_kKRB5|SSL_aKRB5| SSL_IDEA|SSL_MD5 |SSL_SSLV3, 779 SSL_kKRB5,
780 SSL_aKRB5,
781 SSL_IDEA,
782 SSL_MD5,
783 SSL_SSLV3,
650 SSL_NOT_EXP|SSL_MEDIUM, 784 SSL_NOT_EXP|SSL_MEDIUM,
651 0, 785 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
652 128, 786 128,
653 128, 787 128,
654 SSL_ALL_CIPHERS,
655 SSL_ALL_STRENGTHS,
656 }, 788 },
657 789
658/* Cipher 26 */ 790/* Cipher 26 */
@@ -660,13 +792,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
660 1, 792 1,
661 SSL3_TXT_KRB5_DES_40_CBC_SHA, 793 SSL3_TXT_KRB5_DES_40_CBC_SHA,
662 SSL3_CK_KRB5_DES_40_CBC_SHA, 794 SSL3_CK_KRB5_DES_40_CBC_SHA,
663 SSL_kKRB5|SSL_aKRB5| SSL_DES|SSL_SHA1 |SSL_SSLV3, 795 SSL_kKRB5,
796 SSL_aKRB5,
797 SSL_DES,
798 SSL_SHA1,
799 SSL_SSLV3,
664 SSL_EXPORT|SSL_EXP40, 800 SSL_EXPORT|SSL_EXP40,
665 0, 801 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
666 40, 802 40,
667 56, 803 56,
668 SSL_ALL_CIPHERS,
669 SSL_ALL_STRENGTHS,
670 }, 804 },
671 805
672/* Cipher 27 */ 806/* Cipher 27 */
@@ -674,13 +808,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
674 1, 808 1,
675 SSL3_TXT_KRB5_RC2_40_CBC_SHA, 809 SSL3_TXT_KRB5_RC2_40_CBC_SHA,
676 SSL3_CK_KRB5_RC2_40_CBC_SHA, 810 SSL3_CK_KRB5_RC2_40_CBC_SHA,
677 SSL_kKRB5|SSL_aKRB5| SSL_RC2|SSL_SHA1 |SSL_SSLV3, 811 SSL_kKRB5,
812 SSL_aKRB5,
813 SSL_RC2,
814 SSL_SHA1,
815 SSL_SSLV3,
678 SSL_EXPORT|SSL_EXP40, 816 SSL_EXPORT|SSL_EXP40,
679 0, 817 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
680 40, 818 40,
681 128, 819 128,
682 SSL_ALL_CIPHERS,
683 SSL_ALL_STRENGTHS,
684 }, 820 },
685 821
686/* Cipher 28 */ 822/* Cipher 28 */
@@ -688,13 +824,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
688 1, 824 1,
689 SSL3_TXT_KRB5_RC4_40_SHA, 825 SSL3_TXT_KRB5_RC4_40_SHA,
690 SSL3_CK_KRB5_RC4_40_SHA, 826 SSL3_CK_KRB5_RC4_40_SHA,
691 SSL_kKRB5|SSL_aKRB5| SSL_RC4|SSL_SHA1 |SSL_SSLV3, 827 SSL_kKRB5,
828 SSL_aKRB5,
829 SSL_RC4,
830 SSL_SHA1,
831 SSL_SSLV3,
692 SSL_EXPORT|SSL_EXP40, 832 SSL_EXPORT|SSL_EXP40,
693 0, 833 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
694 40, 834 40,
695 128, 835 128,
696 SSL_ALL_CIPHERS,
697 SSL_ALL_STRENGTHS,
698 }, 836 },
699 837
700/* Cipher 29 */ 838/* Cipher 29 */
@@ -702,13 +840,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
702 1, 840 1,
703 SSL3_TXT_KRB5_DES_40_CBC_MD5, 841 SSL3_TXT_KRB5_DES_40_CBC_MD5,
704 SSL3_CK_KRB5_DES_40_CBC_MD5, 842 SSL3_CK_KRB5_DES_40_CBC_MD5,
705 SSL_kKRB5|SSL_aKRB5| SSL_DES|SSL_MD5 |SSL_SSLV3, 843 SSL_kKRB5,
844 SSL_aKRB5,
845 SSL_DES,
846 SSL_MD5,
847 SSL_SSLV3,
706 SSL_EXPORT|SSL_EXP40, 848 SSL_EXPORT|SSL_EXP40,
707 0, 849 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
708 40, 850 40,
709 56, 851 56,
710 SSL_ALL_CIPHERS,
711 SSL_ALL_STRENGTHS,
712 }, 852 },
713 853
714/* Cipher 2A */ 854/* Cipher 2A */
@@ -716,13 +856,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
716 1, 856 1,
717 SSL3_TXT_KRB5_RC2_40_CBC_MD5, 857 SSL3_TXT_KRB5_RC2_40_CBC_MD5,
718 SSL3_CK_KRB5_RC2_40_CBC_MD5, 858 SSL3_CK_KRB5_RC2_40_CBC_MD5,
719 SSL_kKRB5|SSL_aKRB5| SSL_RC2|SSL_MD5 |SSL_SSLV3, 859 SSL_kKRB5,
860 SSL_aKRB5,
861 SSL_RC2,
862 SSL_MD5,
863 SSL_SSLV3,
720 SSL_EXPORT|SSL_EXP40, 864 SSL_EXPORT|SSL_EXP40,
721 0, 865 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
722 40, 866 40,
723 128, 867 128,
724 SSL_ALL_CIPHERS,
725 SSL_ALL_STRENGTHS,
726 }, 868 },
727 869
728/* Cipher 2B */ 870/* Cipher 2B */
@@ -730,13 +872,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
730 1, 872 1,
731 SSL3_TXT_KRB5_RC4_40_MD5, 873 SSL3_TXT_KRB5_RC4_40_MD5,
732 SSL3_CK_KRB5_RC4_40_MD5, 874 SSL3_CK_KRB5_RC4_40_MD5,
733 SSL_kKRB5|SSL_aKRB5| SSL_RC4|SSL_MD5 |SSL_SSLV3, 875 SSL_kKRB5,
876 SSL_aKRB5,
877 SSL_RC4,
878 SSL_MD5,
879 SSL_SSLV3,
734 SSL_EXPORT|SSL_EXP40, 880 SSL_EXPORT|SSL_EXP40,
735 0, 881 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
736 40, 882 40,
737 128, 883 128,
738 SSL_ALL_CIPHERS,
739 SSL_ALL_STRENGTHS,
740 }, 884 },
741#endif /* OPENSSL_NO_KRB5 */ 885#endif /* OPENSSL_NO_KRB5 */
742 886
@@ -746,78 +890,90 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
746 1, 890 1,
747 TLS1_TXT_RSA_WITH_AES_128_SHA, 891 TLS1_TXT_RSA_WITH_AES_128_SHA,
748 TLS1_CK_RSA_WITH_AES_128_SHA, 892 TLS1_CK_RSA_WITH_AES_128_SHA,
749 SSL_kRSA|SSL_aRSA|SSL_AES|SSL_SHA |SSL_TLSV1, 893 SSL_kRSA,
894 SSL_aRSA,
895 SSL_AES128,
896 SSL_SHA1,
897 SSL_TLSV1,
750 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 898 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
751 0, 899 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
752 128, 900 128,
753 128, 901 128,
754 SSL_ALL_CIPHERS,
755 SSL_ALL_STRENGTHS,
756 }, 902 },
757/* Cipher 30 */ 903/* Cipher 30 */
758 { 904 {
759 0, 905 0,
760 TLS1_TXT_DH_DSS_WITH_AES_128_SHA, 906 TLS1_TXT_DH_DSS_WITH_AES_128_SHA,
761 TLS1_CK_DH_DSS_WITH_AES_128_SHA, 907 TLS1_CK_DH_DSS_WITH_AES_128_SHA,
762 SSL_kDHd|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1, 908 SSL_kDHd,
909 SSL_aDH,
910 SSL_AES128,
911 SSL_SHA1,
912 SSL_TLSV1,
763 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 913 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
764 0, 914 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
765 128, 915 128,
766 128, 916 128,
767 SSL_ALL_CIPHERS,
768 SSL_ALL_STRENGTHS,
769 }, 917 },
770/* Cipher 31 */ 918/* Cipher 31 */
771 { 919 {
772 0, 920 0,
773 TLS1_TXT_DH_RSA_WITH_AES_128_SHA, 921 TLS1_TXT_DH_RSA_WITH_AES_128_SHA,
774 TLS1_CK_DH_RSA_WITH_AES_128_SHA, 922 TLS1_CK_DH_RSA_WITH_AES_128_SHA,
775 SSL_kDHr|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1, 923 SSL_kDHr,
924 SSL_aDH,
925 SSL_AES128,
926 SSL_SHA1,
927 SSL_TLSV1,
776 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 928 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
777 0, 929 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
778 128, 930 128,
779 128, 931 128,
780 SSL_ALL_CIPHERS,
781 SSL_ALL_STRENGTHS,
782 }, 932 },
783/* Cipher 32 */ 933/* Cipher 32 */
784 { 934 {
785 1, 935 1,
786 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA, 936 TLS1_TXT_DHE_DSS_WITH_AES_128_SHA,
787 TLS1_CK_DHE_DSS_WITH_AES_128_SHA, 937 TLS1_CK_DHE_DSS_WITH_AES_128_SHA,
788 SSL_kEDH|SSL_aDSS|SSL_AES|SSL_SHA|SSL_TLSV1, 938 SSL_kEDH,
939 SSL_aDSS,
940 SSL_AES128,
941 SSL_SHA1,
942 SSL_TLSV1,
789 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 943 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
790 0, 944 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
791 128, 945 128,
792 128, 946 128,
793 SSL_ALL_CIPHERS,
794 SSL_ALL_STRENGTHS,
795 }, 947 },
796/* Cipher 33 */ 948/* Cipher 33 */
797 { 949 {
798 1, 950 1,
799 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA, 951 TLS1_TXT_DHE_RSA_WITH_AES_128_SHA,
800 TLS1_CK_DHE_RSA_WITH_AES_128_SHA, 952 TLS1_CK_DHE_RSA_WITH_AES_128_SHA,
801 SSL_kEDH|SSL_aRSA|SSL_AES|SSL_SHA|SSL_TLSV1, 953 SSL_kEDH,
954 SSL_aRSA,
955 SSL_AES128,
956 SSL_SHA1,
957 SSL_TLSV1,
802 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 958 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
803 0, 959 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
804 128, 960 128,
805 128, 961 128,
806 SSL_ALL_CIPHERS,
807 SSL_ALL_STRENGTHS,
808 }, 962 },
809/* Cipher 34 */ 963/* Cipher 34 */
810 { 964 {
811 1, 965 1,
812 TLS1_TXT_ADH_WITH_AES_128_SHA, 966 TLS1_TXT_ADH_WITH_AES_128_SHA,
813 TLS1_CK_ADH_WITH_AES_128_SHA, 967 TLS1_CK_ADH_WITH_AES_128_SHA,
814 SSL_kEDH|SSL_aNULL|SSL_AES|SSL_SHA|SSL_TLSV1, 968 SSL_kEDH,
969 SSL_aNULL,
970 SSL_AES128,
971 SSL_SHA1,
972 SSL_TLSV1,
815 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 973 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
816 0, 974 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
817 128, 975 128,
818 128, 976 128,
819 SSL_ALL_CIPHERS,
820 SSL_ALL_STRENGTHS,
821 }, 977 },
822 978
823/* Cipher 35 */ 979/* Cipher 35 */
@@ -825,78 +981,94 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
825 1, 981 1,
826 TLS1_TXT_RSA_WITH_AES_256_SHA, 982 TLS1_TXT_RSA_WITH_AES_256_SHA,
827 TLS1_CK_RSA_WITH_AES_256_SHA, 983 TLS1_CK_RSA_WITH_AES_256_SHA,
828 SSL_kRSA|SSL_aRSA|SSL_AES|SSL_SHA |SSL_TLSV1, 984 SSL_kRSA,
985 SSL_aRSA,
986 SSL_AES256,
987 SSL_SHA1,
988 SSL_TLSV1,
829 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 989 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
830 0, 990 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
831 256, 991 256,
832 256, 992 256,
833 SSL_ALL_CIPHERS,
834 SSL_ALL_STRENGTHS,
835 }, 993 },
836/* Cipher 36 */ 994/* Cipher 36 */
837 { 995 {
838 0, 996 0,
839 TLS1_TXT_DH_DSS_WITH_AES_256_SHA, 997 TLS1_TXT_DH_DSS_WITH_AES_256_SHA,
840 TLS1_CK_DH_DSS_WITH_AES_256_SHA, 998 TLS1_CK_DH_DSS_WITH_AES_256_SHA,
841 SSL_kDHd|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1, 999 SSL_kDHd,
1000 SSL_aDH,
1001 SSL_AES256,
1002 SSL_SHA1,
1003 SSL_TLSV1,
842 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 1004 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
843 0, 1005 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
844 256, 1006 256,
845 256, 1007 256,
846 SSL_ALL_CIPHERS,
847 SSL_ALL_STRENGTHS,
848 }, 1008 },
1009
849/* Cipher 37 */ 1010/* Cipher 37 */
850 { 1011 {
851 0, 1012 0, /* not implemented (non-ephemeral DH) */
852 TLS1_TXT_DH_RSA_WITH_AES_256_SHA, 1013 TLS1_TXT_DH_RSA_WITH_AES_256_SHA,
853 TLS1_CK_DH_RSA_WITH_AES_256_SHA, 1014 TLS1_CK_DH_RSA_WITH_AES_256_SHA,
854 SSL_kDHr|SSL_aDH|SSL_AES|SSL_SHA|SSL_TLSV1, 1015 SSL_kDHr,
1016 SSL_aDH,
1017 SSL_AES256,
1018 SSL_SHA1,
1019 SSL_TLSV1,
855 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 1020 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
856 0, 1021 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
857 256, 1022 256,
858 256, 1023 256,
859 SSL_ALL_CIPHERS,
860 SSL_ALL_STRENGTHS,
861 }, 1024 },
1025
862/* Cipher 38 */ 1026/* Cipher 38 */
863 { 1027 {
864 1, 1028 1,
865 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA, 1029 TLS1_TXT_DHE_DSS_WITH_AES_256_SHA,
866 TLS1_CK_DHE_DSS_WITH_AES_256_SHA, 1030 TLS1_CK_DHE_DSS_WITH_AES_256_SHA,
867 SSL_kEDH|SSL_aDSS|SSL_AES|SSL_SHA|SSL_TLSV1, 1031 SSL_kEDH,
1032 SSL_aDSS,
1033 SSL_AES256,
1034 SSL_SHA1,
1035 SSL_TLSV1,
868 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 1036 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
869 0, 1037 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
870 256, 1038 256,
871 256, 1039 256,
872 SSL_ALL_CIPHERS,
873 SSL_ALL_STRENGTHS,
874 }, 1040 },
1041
875/* Cipher 39 */ 1042/* Cipher 39 */
876 { 1043 {
877 1, 1044 1,
878 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA, 1045 TLS1_TXT_DHE_RSA_WITH_AES_256_SHA,
879 TLS1_CK_DHE_RSA_WITH_AES_256_SHA, 1046 TLS1_CK_DHE_RSA_WITH_AES_256_SHA,
880 SSL_kEDH|SSL_aRSA|SSL_AES|SSL_SHA|SSL_TLSV1, 1047 SSL_kEDH,
1048 SSL_aRSA,
1049 SSL_AES256,
1050 SSL_SHA1,
1051 SSL_TLSV1,
881 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 1052 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
882 0, 1053 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
883 256, 1054 256,
884 256, 1055 256,
885 SSL_ALL_CIPHERS,
886 SSL_ALL_STRENGTHS,
887 }, 1056 },
1057
888 /* Cipher 3A */ 1058 /* Cipher 3A */
889 { 1059 {
890 1, 1060 1,
891 TLS1_TXT_ADH_WITH_AES_256_SHA, 1061 TLS1_TXT_ADH_WITH_AES_256_SHA,
892 TLS1_CK_ADH_WITH_AES_256_SHA, 1062 TLS1_CK_ADH_WITH_AES_256_SHA,
893 SSL_kEDH|SSL_aNULL|SSL_AES|SSL_SHA|SSL_TLSV1, 1063 SSL_kEDH,
1064 SSL_aNULL,
1065 SSL_AES256,
1066 SSL_SHA1,
1067 SSL_TLSV1,
894 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS, 1068 SSL_NOT_EXP|SSL_HIGH|SSL_FIPS,
895 0, 1069 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
896 256, 1070 256,
897 256, 1071 256,
898 SSL_ALL_CIPHERS,
899 SSL_ALL_STRENGTHS,
900 }, 1072 },
901 1073
902#ifndef OPENSSL_NO_CAMELLIA 1074#ifndef OPENSSL_NO_CAMELLIA
@@ -907,78 +1079,95 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
907 1, 1079 1,
908 TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA, 1080 TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA,
909 TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA, 1081 TLS1_CK_RSA_WITH_CAMELLIA_128_CBC_SHA,
910 SSL_kRSA|SSL_aRSA|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1082 SSL_kRSA,
1083 SSL_aRSA,
1084 SSL_CAMELLIA128,
1085 SSL_SHA1,
1086 SSL_TLSV1,
911 SSL_NOT_EXP|SSL_HIGH, 1087 SSL_NOT_EXP|SSL_HIGH,
912 0, 1088 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
913 128, 1089 128,
914 128, 1090 128,
915 SSL_ALL_CIPHERS,
916 SSL_ALL_STRENGTHS
917 }, 1091 },
1092
918 /* Cipher 42 */ 1093 /* Cipher 42 */
919 { 1094 {
920 0, /* not implemented (non-ephemeral DH) */ 1095 0, /* not implemented (non-ephemeral DH) */
921 TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA, 1096 TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA,
922 TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA, 1097 TLS1_CK_DH_DSS_WITH_CAMELLIA_128_CBC_SHA,
923 SSL_kDHd|SSL_aDH|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1098 SSL_kDHd,
1099 SSL_aDH,
1100 SSL_CAMELLIA128,
1101 SSL_SHA1,
1102 SSL_TLSV1,
924 SSL_NOT_EXP|SSL_HIGH, 1103 SSL_NOT_EXP|SSL_HIGH,
925 0, 1104 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
926 128, 1105 128,
927 128, 1106 128,
928 SSL_ALL_CIPHERS,
929 SSL_ALL_STRENGTHS
930 }, 1107 },
1108
931 /* Cipher 43 */ 1109 /* Cipher 43 */
932 { 1110 {
933 0, /* not implemented (non-ephemeral DH) */ 1111 0, /* not implemented (non-ephemeral DH) */
934 TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA, 1112 TLS1_TXT_DH_RSA_WITH_CAMELLIA_128_CBC_SHA,
935 TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA, 1113 TLS1_CK_DH_RSA_WITH_CAMELLIA_128_CBC_SHA,
936 SSL_kDHr|SSL_aDH|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1114 SSL_kDHr,
1115 SSL_aDH,
1116 SSL_CAMELLIA128,
1117 SSL_SHA1,
1118 SSL_TLSV1,
937 SSL_NOT_EXP|SSL_HIGH, 1119 SSL_NOT_EXP|SSL_HIGH,
938 0, 1120 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
939 128, 1121 128,
940 128, 1122 128,
941 SSL_ALL_CIPHERS,
942 SSL_ALL_STRENGTHS
943 }, 1123 },
1124
944 /* Cipher 44 */ 1125 /* Cipher 44 */
945 { 1126 {
946 1, 1127 1,
947 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA, 1128 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
948 TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA, 1129 TLS1_CK_DHE_DSS_WITH_CAMELLIA_128_CBC_SHA,
949 SSL_kEDH|SSL_aDSS|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1130 SSL_kEDH,
1131 SSL_aDSS,
1132 SSL_CAMELLIA128,
1133 SSL_SHA1,
1134 SSL_TLSV1,
950 SSL_NOT_EXP|SSL_HIGH, 1135 SSL_NOT_EXP|SSL_HIGH,
951 0, 1136 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
952 128, 1137 128,
953 128, 1138 128,
954 SSL_ALL_CIPHERS,
955 SSL_ALL_STRENGTHS
956 }, 1139 },
1140
957 /* Cipher 45 */ 1141 /* Cipher 45 */
958 { 1142 {
959 1, 1143 1,
960 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, 1144 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
961 TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA, 1145 TLS1_CK_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA,
962 SSL_kEDH|SSL_aRSA|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1146 SSL_kEDH,
1147 SSL_aRSA,
1148 SSL_CAMELLIA128,
1149 SSL_SHA1,
1150 SSL_TLSV1,
963 SSL_NOT_EXP|SSL_HIGH, 1151 SSL_NOT_EXP|SSL_HIGH,
964 0, 1152 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
965 128, 1153 128,
966 128, 1154 128,
967 SSL_ALL_CIPHERS,
968 SSL_ALL_STRENGTHS
969 }, 1155 },
1156
970 /* Cipher 46 */ 1157 /* Cipher 46 */
971 { 1158 {
972 1, 1159 1,
973 TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA, 1160 TLS1_TXT_ADH_WITH_CAMELLIA_128_CBC_SHA,
974 TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA, 1161 TLS1_CK_ADH_WITH_CAMELLIA_128_CBC_SHA,
975 SSL_kEDH|SSL_aNULL|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1162 SSL_kEDH,
1163 SSL_aNULL,
1164 SSL_CAMELLIA128,
1165 SSL_SHA1,
1166 SSL_TLSV1,
976 SSL_NOT_EXP|SSL_HIGH, 1167 SSL_NOT_EXP|SSL_HIGH,
977 0, 1168 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
978 128, 1169 128,
979 128, 1170 128,
980 SSL_ALL_CIPHERS,
981 SSL_ALL_STRENGTHS
982 }, 1171 },
983#endif /* OPENSSL_NO_CAMELLIA */ 1172#endif /* OPENSSL_NO_CAMELLIA */
984 1173
@@ -986,98 +1175,174 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
986 /* New TLS Export CipherSuites from expired ID */ 1175 /* New TLS Export CipherSuites from expired ID */
987#if 0 1176#if 0
988 /* Cipher 60 */ 1177 /* Cipher 60 */
989 { 1178 {
990 1, 1179 1,
991 TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5, 1180 TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5,
992 TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5, 1181 TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5,
993 SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_MD5|SSL_TLSV1, 1182 SSL_kRSA,
994 SSL_EXPORT|SSL_EXP56, 1183 SSL_aRSA,
995 0, 1184 SSL_RC4,
996 56, 1185 SSL_MD5,
997 128, 1186 SSL_TLSV1,
998 SSL_ALL_CIPHERS, 1187 SSL_EXPORT|SSL_EXP56,
999 SSL_ALL_STRENGTHS, 1188 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1000 }, 1189 56,
1190 128,
1191 },
1192
1001 /* Cipher 61 */ 1193 /* Cipher 61 */
1002 { 1194 {
1003 1, 1195 1,
1004 TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5, 1196 TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5,
1005 TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5, 1197 TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5,
1006 SSL_kRSA|SSL_aRSA|SSL_RC2|SSL_MD5|SSL_TLSV1, 1198 SSL_kRSA,
1007 SSL_EXPORT|SSL_EXP56, 1199 SSL_aRSA,
1008 0, 1200 SSL_RC2,
1009 56, 1201 SSL_MD5,
1010 128, 1202 SSL_TLSV1,
1011 SSL_ALL_CIPHERS, 1203 SSL_EXPORT|SSL_EXP56,
1012 SSL_ALL_STRENGTHS, 1204 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1013 }, 1205 56,
1206 128,
1207 },
1014#endif 1208#endif
1209
1015 /* Cipher 62 */ 1210 /* Cipher 62 */
1016 { 1211 {
1017 1, 1212 1,
1018 TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA, 1213 TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA,
1019 TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA, 1214 TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA,
1020 SSL_kRSA|SSL_aRSA|SSL_DES|SSL_SHA|SSL_TLSV1, 1215 SSL_kRSA,
1021 SSL_EXPORT|SSL_EXP56, 1216 SSL_aRSA,
1022 0, 1217 SSL_DES,
1023 56, 1218 SSL_SHA1,
1024 56, 1219 SSL_TLSV1,
1025 SSL_ALL_CIPHERS, 1220 SSL_EXPORT|SSL_EXP56,
1026 SSL_ALL_STRENGTHS, 1221 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1027 }, 1222 56,
1223 56,
1224 },
1225
1028 /* Cipher 63 */ 1226 /* Cipher 63 */
1029 { 1227 {
1030 1, 1228 1,
1031 TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA, 1229 TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA,
1032 TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA, 1230 TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA,
1033 SSL_kEDH|SSL_aDSS|SSL_DES|SSL_SHA|SSL_TLSV1, 1231 SSL_kEDH,
1034 SSL_EXPORT|SSL_EXP56, 1232 SSL_aDSS,
1035 0, 1233 SSL_DES,
1036 56, 1234 SSL_SHA1,
1037 56, 1235 SSL_TLSV1,
1038 SSL_ALL_CIPHERS, 1236 SSL_EXPORT|SSL_EXP56,
1039 SSL_ALL_STRENGTHS, 1237 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1040 }, 1238 56,
1239 56,
1240 },
1241
1041 /* Cipher 64 */ 1242 /* Cipher 64 */
1042 { 1243 {
1043 1, 1244 1,
1044 TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA, 1245 TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA,
1045 TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA, 1246 TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA,
1046 SSL_kRSA|SSL_aRSA|SSL_RC4|SSL_SHA|SSL_TLSV1, 1247 SSL_kRSA,
1047 SSL_EXPORT|SSL_EXP56, 1248 SSL_aRSA,
1048 0, 1249 SSL_RC4,
1049 56, 1250 SSL_SHA1,
1050 128, 1251 SSL_TLSV1,
1051 SSL_ALL_CIPHERS, 1252 SSL_EXPORT|SSL_EXP56,
1052 SSL_ALL_STRENGTHS, 1253 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1053 }, 1254 56,
1255 128,
1256 },
1257
1054 /* Cipher 65 */ 1258 /* Cipher 65 */
1055 { 1259 {
1056 1, 1260 1,
1057 TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA, 1261 TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA,
1058 TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA, 1262 TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA,
1059 SSL_kEDH|SSL_aDSS|SSL_RC4|SSL_SHA|SSL_TLSV1, 1263 SSL_kEDH,
1060 SSL_EXPORT|SSL_EXP56, 1264 SSL_aDSS,
1061 0, 1265 SSL_RC4,
1062 56, 1266 SSL_SHA1,
1063 128, 1267 SSL_TLSV1,
1064 SSL_ALL_CIPHERS, 1268 SSL_EXPORT|SSL_EXP56,
1065 SSL_ALL_STRENGTHS, 1269 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1066 }, 1270 56,
1271 128,
1272 },
1273
1067 /* Cipher 66 */ 1274 /* Cipher 66 */
1068 { 1275 {
1069 1, 1276 1,
1070 TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA, 1277 TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA,
1071 TLS1_CK_DHE_DSS_WITH_RC4_128_SHA, 1278 TLS1_CK_DHE_DSS_WITH_RC4_128_SHA,
1072 SSL_kEDH|SSL_aDSS|SSL_RC4|SSL_SHA|SSL_TLSV1, 1279 SSL_kEDH,
1073 SSL_NOT_EXP|SSL_MEDIUM, 1280 SSL_aDSS,
1074 0, 1281 SSL_RC4,
1075 128, 1282 SSL_SHA1,
1076 128, 1283 SSL_TLSV1,
1077 SSL_ALL_CIPHERS, 1284 SSL_NOT_EXP|SSL_MEDIUM,
1078 SSL_ALL_STRENGTHS 1285 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1079 }, 1286 128,
1287 128,
1288 },
1080#endif 1289#endif
1290 {
1291 1,
1292 "GOST94-GOST89-GOST89",
1293 0x3000080,
1294 SSL_kGOST,
1295 SSL_aGOST94,
1296 SSL_eGOST2814789CNT,
1297 SSL_GOST89MAC,
1298 SSL_TLSV1,
1299 SSL_NOT_EXP|SSL_HIGH,
1300 SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94|TLS1_STREAM_MAC,
1301 256,
1302 256
1303 },
1304 {
1305 1,
1306 "GOST2001-GOST89-GOST89",
1307 0x3000081,
1308 SSL_kGOST,
1309 SSL_aGOST01,
1310 SSL_eGOST2814789CNT,
1311 SSL_GOST89MAC,
1312 SSL_TLSV1,
1313 SSL_NOT_EXP|SSL_HIGH,
1314 SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94|TLS1_STREAM_MAC,
1315 256,
1316 256
1317 },
1318 {
1319 1,
1320 "GOST94-NULL-GOST94",
1321 0x3000082,
1322 SSL_kGOST,
1323 SSL_aGOST94,
1324 SSL_eNULL,
1325 SSL_GOST94,
1326 SSL_TLSV1,
1327 SSL_NOT_EXP|SSL_STRONG_NONE,
1328 SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94,
1329 0,
1330 0
1331 },
1332 {
1333 1,
1334 "GOST2001-NULL-GOST94",
1335 0x3000083,
1336 SSL_kGOST,
1337 SSL_aGOST01,
1338 SSL_eNULL,
1339 SSL_GOST94,
1340 SSL_TLSV1,
1341 SSL_NOT_EXP|SSL_STRONG_NONE,
1342 SSL_HANDSHAKE_MAC_GOST94|TLS1_PRF_GOST94,
1343 0,
1344 0
1345 },
1081 1346
1082#ifndef OPENSSL_NO_CAMELLIA 1347#ifndef OPENSSL_NO_CAMELLIA
1083 /* Camellia ciphersuites from RFC4132 (256-bit portion) */ 1348 /* Camellia ciphersuites from RFC4132 (256-bit portion) */
@@ -1087,81 +1352,163 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
1087 1, 1352 1,
1088 TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA, 1353 TLS1_TXT_RSA_WITH_CAMELLIA_256_CBC_SHA,
1089 TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA, 1354 TLS1_CK_RSA_WITH_CAMELLIA_256_CBC_SHA,
1090 SSL_kRSA|SSL_aRSA|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1355 SSL_kRSA,
1356 SSL_aRSA,
1357 SSL_CAMELLIA256,
1358 SSL_SHA1,
1359 SSL_TLSV1,
1091 SSL_NOT_EXP|SSL_HIGH, 1360 SSL_NOT_EXP|SSL_HIGH,
1092 0, 1361 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1093 256, 1362 256,
1094 256, 1363 256,
1095 SSL_ALL_CIPHERS,
1096 SSL_ALL_STRENGTHS
1097 }, 1364 },
1098 /* Cipher 85 */ 1365 /* Cipher 85 */
1099 { 1366 {
1100 0, /* not implemented (non-ephemeral DH) */ 1367 0, /* not implemented (non-ephemeral DH) */
1101 TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA, 1368 TLS1_TXT_DH_DSS_WITH_CAMELLIA_256_CBC_SHA,
1102 TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA, 1369 TLS1_CK_DH_DSS_WITH_CAMELLIA_256_CBC_SHA,
1103 SSL_kDHd|SSL_aDH|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1370 SSL_kDHd,
1371 SSL_aDH,
1372 SSL_CAMELLIA256,
1373 SSL_SHA1,
1374 SSL_TLSV1,
1104 SSL_NOT_EXP|SSL_HIGH, 1375 SSL_NOT_EXP|SSL_HIGH,
1105 0, 1376 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1106 256, 1377 256,
1107 256, 1378 256,
1108 SSL_ALL_CIPHERS,
1109 SSL_ALL_STRENGTHS
1110 }, 1379 },
1380
1111 /* Cipher 86 */ 1381 /* Cipher 86 */
1112 { 1382 {
1113 0, /* not implemented (non-ephemeral DH) */ 1383 0, /* not implemented (non-ephemeral DH) */
1114 TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA, 1384 TLS1_TXT_DH_RSA_WITH_CAMELLIA_256_CBC_SHA,
1115 TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA, 1385 TLS1_CK_DH_RSA_WITH_CAMELLIA_256_CBC_SHA,
1116 SSL_kDHr|SSL_aDH|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1386 SSL_kDHr,
1387 SSL_aDH,
1388 SSL_CAMELLIA256,
1389 SSL_SHA1,
1390 SSL_TLSV1,
1117 SSL_NOT_EXP|SSL_HIGH, 1391 SSL_NOT_EXP|SSL_HIGH,
1118 0, 1392 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1119 256, 1393 256,
1120 256, 1394 256,
1121 SSL_ALL_CIPHERS,
1122 SSL_ALL_STRENGTHS
1123 }, 1395 },
1396
1124 /* Cipher 87 */ 1397 /* Cipher 87 */
1125 { 1398 {
1126 1, 1399 1,
1127 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA, 1400 TLS1_TXT_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
1128 TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA, 1401 TLS1_CK_DHE_DSS_WITH_CAMELLIA_256_CBC_SHA,
1129 SSL_kEDH|SSL_aDSS|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1402 SSL_kEDH,
1403 SSL_aDSS,
1404 SSL_CAMELLIA256,
1405 SSL_SHA1,
1406 SSL_TLSV1,
1130 SSL_NOT_EXP|SSL_HIGH, 1407 SSL_NOT_EXP|SSL_HIGH,
1131 0, 1408 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1132 256, 1409 256,
1133 256, 1410 256,
1134 SSL_ALL_CIPHERS,
1135 SSL_ALL_STRENGTHS
1136 }, 1411 },
1412
1137 /* Cipher 88 */ 1413 /* Cipher 88 */
1138 { 1414 {
1139 1, 1415 1,
1140 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, 1416 TLS1_TXT_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
1141 TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA, 1417 TLS1_CK_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA,
1142 SSL_kEDH|SSL_aRSA|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1418 SSL_kEDH,
1419 SSL_aRSA,
1420 SSL_CAMELLIA256,
1421 SSL_SHA1,
1422 SSL_TLSV1,
1143 SSL_NOT_EXP|SSL_HIGH, 1423 SSL_NOT_EXP|SSL_HIGH,
1144 0, 1424 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1145 256, 1425 256,
1146 256, 1426 256,
1147 SSL_ALL_CIPHERS,
1148 SSL_ALL_STRENGTHS
1149 }, 1427 },
1428
1150 /* Cipher 89 */ 1429 /* Cipher 89 */
1151 { 1430 {
1152 1, 1431 1,
1153 TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA, 1432 TLS1_TXT_ADH_WITH_CAMELLIA_256_CBC_SHA,
1154 TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA, 1433 TLS1_CK_ADH_WITH_CAMELLIA_256_CBC_SHA,
1155 SSL_kEDH|SSL_aNULL|SSL_CAMELLIA|SSL_SHA|SSL_TLSV1, 1434 SSL_kEDH,
1435 SSL_aNULL,
1436 SSL_CAMELLIA256,
1437 SSL_SHA1,
1438 SSL_TLSV1,
1156 SSL_NOT_EXP|SSL_HIGH, 1439 SSL_NOT_EXP|SSL_HIGH,
1157 0, 1440 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1158 256, 1441 256,
1159 256, 1442 256,
1160 SSL_ALL_CIPHERS,
1161 SSL_ALL_STRENGTHS
1162 }, 1443 },
1163#endif /* OPENSSL_NO_CAMELLIA */ 1444#endif /* OPENSSL_NO_CAMELLIA */
1164 1445
1446#ifndef OPENSSL_NO_PSK
1447 /* Cipher 8A */
1448 {
1449 1,
1450 TLS1_TXT_PSK_WITH_RC4_128_SHA,
1451 TLS1_CK_PSK_WITH_RC4_128_SHA,
1452 SSL_kPSK,
1453 SSL_aPSK,
1454 SSL_RC4,
1455 SSL_SHA1,
1456 SSL_TLSV1,
1457 SSL_NOT_EXP|SSL_MEDIUM,
1458 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1459 128,
1460 128,
1461 },
1462
1463 /* Cipher 8B */
1464 {
1465 1,
1466 TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA,
1467 TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA,
1468 SSL_kPSK,
1469 SSL_aPSK,
1470 SSL_3DES,
1471 SSL_SHA1,
1472 SSL_TLSV1,
1473 SSL_NOT_EXP|SSL_HIGH,
1474 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1475 168,
1476 168,
1477 },
1478
1479 /* Cipher 8C */
1480 {
1481 1,
1482 TLS1_TXT_PSK_WITH_AES_128_CBC_SHA,
1483 TLS1_CK_PSK_WITH_AES_128_CBC_SHA,
1484 SSL_kPSK,
1485 SSL_aPSK,
1486 SSL_AES128,
1487 SSL_SHA1,
1488 SSL_TLSV1,
1489 SSL_NOT_EXP|SSL_HIGH,
1490 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1491 128,
1492 128,
1493 },
1494
1495 /* Cipher 8D */
1496 {
1497 1,
1498 TLS1_TXT_PSK_WITH_AES_256_CBC_SHA,
1499 TLS1_CK_PSK_WITH_AES_256_CBC_SHA,
1500 SSL_kPSK,
1501 SSL_aPSK,
1502 SSL_AES256,
1503 SSL_SHA1,
1504 SSL_TLSV1,
1505 SSL_NOT_EXP|SSL_HIGH,
1506 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1507 256,
1508 256,
1509 },
1510#endif /* OPENSSL_NO_PSK */
1511
1165#ifndef OPENSSL_NO_SEED 1512#ifndef OPENSSL_NO_SEED
1166 /* SEED ciphersuites from RFC4162 */ 1513 /* SEED ciphersuites from RFC4162 */
1167 1514
@@ -1170,13 +1517,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
1170 1, 1517 1,
1171 TLS1_TXT_RSA_WITH_SEED_SHA, 1518 TLS1_TXT_RSA_WITH_SEED_SHA,
1172 TLS1_CK_RSA_WITH_SEED_SHA, 1519 TLS1_CK_RSA_WITH_SEED_SHA,
1173 SSL_kRSA|SSL_aRSA|SSL_SEED|SSL_SHA1|SSL_TLSV1, 1520 SSL_kRSA,
1521 SSL_aRSA,
1522 SSL_SEED,
1523 SSL_SHA1,
1524 SSL_TLSV1,
1174 SSL_NOT_EXP|SSL_MEDIUM, 1525 SSL_NOT_EXP|SSL_MEDIUM,
1175 0, 1526 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1176 128, 1527 128,
1177 128, 1528 128,
1178 SSL_ALL_CIPHERS,
1179 SSL_ALL_STRENGTHS,
1180 }, 1529 },
1181 1530
1182 /* Cipher 97 */ 1531 /* Cipher 97 */
@@ -1184,13 +1533,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
1184 0, /* not implemented (non-ephemeral DH) */ 1533 0, /* not implemented (non-ephemeral DH) */
1185 TLS1_TXT_DH_DSS_WITH_SEED_SHA, 1534 TLS1_TXT_DH_DSS_WITH_SEED_SHA,
1186 TLS1_CK_DH_DSS_WITH_SEED_SHA, 1535 TLS1_CK_DH_DSS_WITH_SEED_SHA,
1187 SSL_kDHd|SSL_aDH|SSL_SEED|SSL_SHA1|SSL_TLSV1, 1536 SSL_kDHd,
1537 SSL_aDH,
1538 SSL_SEED,
1539 SSL_SHA1,
1540 SSL_TLSV1,
1188 SSL_NOT_EXP|SSL_MEDIUM, 1541 SSL_NOT_EXP|SSL_MEDIUM,
1189 0, 1542 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1190 128, 1543 128,
1191 128, 1544 128,
1192 SSL_ALL_CIPHERS,
1193 SSL_ALL_STRENGTHS,
1194 }, 1545 },
1195 1546
1196 /* Cipher 98 */ 1547 /* Cipher 98 */
@@ -1198,13 +1549,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
1198 0, /* not implemented (non-ephemeral DH) */ 1549 0, /* not implemented (non-ephemeral DH) */
1199 TLS1_TXT_DH_RSA_WITH_SEED_SHA, 1550 TLS1_TXT_DH_RSA_WITH_SEED_SHA,
1200 TLS1_CK_DH_RSA_WITH_SEED_SHA, 1551 TLS1_CK_DH_RSA_WITH_SEED_SHA,
1201 SSL_kDHr|SSL_aDH|SSL_SEED|SSL_SHA1|SSL_TLSV1, 1552 SSL_kDHr,
1553 SSL_aDH,
1554 SSL_SEED,
1555 SSL_SHA1,
1556 SSL_TLSV1,
1202 SSL_NOT_EXP|SSL_MEDIUM, 1557 SSL_NOT_EXP|SSL_MEDIUM,
1203 0, 1558 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1204 128, 1559 128,
1205 128, 1560 128,
1206 SSL_ALL_CIPHERS,
1207 SSL_ALL_STRENGTHS,
1208 }, 1561 },
1209 1562
1210 /* Cipher 99 */ 1563 /* Cipher 99 */
@@ -1212,13 +1565,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
1212 1, 1565 1,
1213 TLS1_TXT_DHE_DSS_WITH_SEED_SHA, 1566 TLS1_TXT_DHE_DSS_WITH_SEED_SHA,
1214 TLS1_CK_DHE_DSS_WITH_SEED_SHA, 1567 TLS1_CK_DHE_DSS_WITH_SEED_SHA,
1215 SSL_kEDH|SSL_aDSS|SSL_SEED|SSL_SHA1|SSL_TLSV1, 1568 SSL_kEDH,
1569 SSL_aDSS,
1570 SSL_SEED,
1571 SSL_SHA1,
1572 SSL_TLSV1,
1216 SSL_NOT_EXP|SSL_MEDIUM, 1573 SSL_NOT_EXP|SSL_MEDIUM,
1217 0, 1574 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1218 128, 1575 128,
1219 128, 1576 128,
1220 SSL_ALL_CIPHERS,
1221 SSL_ALL_STRENGTHS,
1222 }, 1577 },
1223 1578
1224 /* Cipher 9A */ 1579 /* Cipher 9A */
@@ -1226,13 +1581,15 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
1226 1, 1581 1,
1227 TLS1_TXT_DHE_RSA_WITH_SEED_SHA, 1582 TLS1_TXT_DHE_RSA_WITH_SEED_SHA,
1228 TLS1_CK_DHE_RSA_WITH_SEED_SHA, 1583 TLS1_CK_DHE_RSA_WITH_SEED_SHA,
1229 SSL_kEDH|SSL_aRSA|SSL_SEED|SSL_SHA1|SSL_TLSV1, 1584 SSL_kEDH,
1585 SSL_aRSA,
1586 SSL_SEED,
1587 SSL_SHA1,
1588 SSL_TLSV1,
1230 SSL_NOT_EXP|SSL_MEDIUM, 1589 SSL_NOT_EXP|SSL_MEDIUM,
1231 0, 1590 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1232 128, 1591 128,
1233 128, 1592 128,
1234 SSL_ALL_CIPHERS,
1235 SSL_ALL_STRENGTHS,
1236 }, 1593 },
1237 1594
1238 /* Cipher 9B */ 1595 /* Cipher 9B */
@@ -1240,376 +1597,487 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
1240 1, 1597 1,
1241 TLS1_TXT_ADH_WITH_SEED_SHA, 1598 TLS1_TXT_ADH_WITH_SEED_SHA,
1242 TLS1_CK_ADH_WITH_SEED_SHA, 1599 TLS1_CK_ADH_WITH_SEED_SHA,
1243 SSL_kEDH|SSL_aNULL|SSL_SEED|SSL_SHA1|SSL_TLSV1, 1600 SSL_kEDH,
1601 SSL_aNULL,
1602 SSL_SEED,
1603 SSL_SHA1,
1604 SSL_TLSV1,
1244 SSL_NOT_EXP|SSL_MEDIUM, 1605 SSL_NOT_EXP|SSL_MEDIUM,
1245 0, 1606 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1246 128, 1607 128,
1247 128, 1608 128,
1248 SSL_ALL_CIPHERS,
1249 SSL_ALL_STRENGTHS,
1250 }, 1609 },
1251 1610
1252#endif /* OPENSSL_NO_SEED */ 1611#endif /* OPENSSL_NO_SEED */
1253 1612
1254#ifndef OPENSSL_NO_ECDH 1613#ifndef OPENSSL_NO_ECDH
1255 /* Cipher C001 */ 1614 /* Cipher C001 */
1256 { 1615 {
1257 1, 1616 1,
1258 TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA, 1617 TLS1_TXT_ECDH_ECDSA_WITH_NULL_SHA,
1259 TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA, 1618 TLS1_CK_ECDH_ECDSA_WITH_NULL_SHA,
1260 SSL_kECDH|SSL_aECDSA|SSL_eNULL|SSL_SHA|SSL_TLSV1, 1619 SSL_kECDHe,
1261 SSL_NOT_EXP, 1620 SSL_aECDH,
1262 0, 1621 SSL_eNULL,
1263 0, 1622 SSL_SHA1,
1264 0, 1623 SSL_TLSV1,
1265 SSL_ALL_CIPHERS, 1624 SSL_NOT_EXP|SSL_STRONG_NONE,
1266 SSL_ALL_STRENGTHS, 1625 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1267 }, 1626 0,
1627 0,
1628 },
1268 1629
1269 /* Cipher C002 */ 1630 /* Cipher C002 */
1270 { 1631 {
1271 1, 1632 1,
1272 TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA, 1633 TLS1_TXT_ECDH_ECDSA_WITH_RC4_128_SHA,
1273 TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA, 1634 TLS1_CK_ECDH_ECDSA_WITH_RC4_128_SHA,
1274 SSL_kECDH|SSL_aECDSA|SSL_RC4|SSL_SHA|SSL_TLSV1, 1635 SSL_kECDHe,
1275 SSL_NOT_EXP, 1636 SSL_aECDH,
1276 0, 1637 SSL_RC4,
1277 128, 1638 SSL_SHA1,
1278 128, 1639 SSL_TLSV1,
1279 SSL_ALL_CIPHERS, 1640 SSL_NOT_EXP|SSL_MEDIUM,
1280 SSL_ALL_STRENGTHS, 1641 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1281 }, 1642 128,
1643 128,
1644 },
1282 1645
1283 /* Cipher C003 */ 1646 /* Cipher C003 */
1284 { 1647 {
1285 1, 1648 1,
1286 TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA, 1649 TLS1_TXT_ECDH_ECDSA_WITH_DES_192_CBC3_SHA,
1287 TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA, 1650 TLS1_CK_ECDH_ECDSA_WITH_DES_192_CBC3_SHA,
1288 SSL_kECDH|SSL_aECDSA|SSL_3DES|SSL_SHA|SSL_TLSV1, 1651 SSL_kECDHe,
1289 SSL_NOT_EXP|SSL_HIGH, 1652 SSL_aECDH,
1290 0, 1653 SSL_3DES,
1291 168, 1654 SSL_SHA1,
1292 168, 1655 SSL_TLSV1,
1293 SSL_ALL_CIPHERS, 1656 SSL_NOT_EXP|SSL_HIGH,
1294 SSL_ALL_STRENGTHS, 1657 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1295 }, 1658 168,
1659 168,
1660 },
1296 1661
1297 /* Cipher C004 */ 1662 /* Cipher C004 */
1298 { 1663 {
1299 1, 1664 1,
1300 TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA, 1665 TLS1_TXT_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
1301 TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA, 1666 TLS1_CK_ECDH_ECDSA_WITH_AES_128_CBC_SHA,
1302 SSL_kECDH|SSL_aECDSA|SSL_AES|SSL_SHA|SSL_TLSV1, 1667 SSL_kECDHe,
1303 SSL_NOT_EXP|SSL_HIGH, 1668 SSL_aECDH,
1304 0, 1669 SSL_AES128,
1305 128, 1670 SSL_SHA1,
1306 128, 1671 SSL_TLSV1,
1307 SSL_ALL_CIPHERS, 1672 SSL_NOT_EXP|SSL_HIGH,
1308 SSL_ALL_STRENGTHS, 1673 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1309 }, 1674 128,
1675 128,
1676 },
1310 1677
1311 /* Cipher C005 */ 1678 /* Cipher C005 */
1312 { 1679 {
1313 1, 1680 1,
1314 TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA, 1681 TLS1_TXT_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
1315 TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA, 1682 TLS1_CK_ECDH_ECDSA_WITH_AES_256_CBC_SHA,
1316 SSL_kECDH|SSL_aECDSA|SSL_AES|SSL_SHA|SSL_TLSV1, 1683 SSL_kECDHe,
1317 SSL_NOT_EXP|SSL_HIGH, 1684 SSL_aECDH,
1318 0, 1685 SSL_AES256,
1319 256, 1686 SSL_SHA1,
1320 256, 1687 SSL_TLSV1,
1321 SSL_ALL_CIPHERS, 1688 SSL_NOT_EXP|SSL_HIGH,
1322 SSL_ALL_STRENGTHS, 1689 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1323 }, 1690 256,
1691 256,
1692 },
1324 1693
1325 /* Cipher C006 */ 1694 /* Cipher C006 */
1326 { 1695 {
1327 1, 1696 1,
1328 TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA, 1697 TLS1_TXT_ECDHE_ECDSA_WITH_NULL_SHA,
1329 TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA, 1698 TLS1_CK_ECDHE_ECDSA_WITH_NULL_SHA,
1330 SSL_kECDHE|SSL_aECDSA|SSL_eNULL|SSL_SHA|SSL_TLSV1, 1699 SSL_kEECDH,
1331 SSL_NOT_EXP, 1700 SSL_aECDSA,
1332 0, 1701 SSL_eNULL,
1333 0, 1702 SSL_SHA1,
1334 0, 1703 SSL_TLSV1,
1335 SSL_ALL_CIPHERS, 1704 SSL_NOT_EXP|SSL_STRONG_NONE,
1336 SSL_ALL_STRENGTHS, 1705 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1337 }, 1706 0,
1707 0,
1708 },
1338 1709
1339 /* Cipher C007 */ 1710 /* Cipher C007 */
1340 { 1711 {
1341 1, 1712 1,
1342 TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA, 1713 TLS1_TXT_ECDHE_ECDSA_WITH_RC4_128_SHA,
1343 TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA, 1714 TLS1_CK_ECDHE_ECDSA_WITH_RC4_128_SHA,
1344 SSL_kECDHE|SSL_aECDSA|SSL_RC4|SSL_SHA|SSL_TLSV1, 1715 SSL_kEECDH,
1345 SSL_NOT_EXP, 1716 SSL_aECDSA,
1346 0, 1717 SSL_RC4,
1347 128, 1718 SSL_SHA1,
1348 128, 1719 SSL_TLSV1,
1349 SSL_ALL_CIPHERS, 1720 SSL_NOT_EXP|SSL_MEDIUM,
1350 SSL_ALL_STRENGTHS, 1721 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1351 }, 1722 128,
1723 128,
1724 },
1352 1725
1353 /* Cipher C008 */ 1726 /* Cipher C008 */
1354 { 1727 {
1355 1, 1728 1,
1356 TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA, 1729 TLS1_TXT_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
1357 TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA, 1730 TLS1_CK_ECDHE_ECDSA_WITH_DES_192_CBC3_SHA,
1358 SSL_kECDHE|SSL_aECDSA|SSL_3DES|SSL_SHA|SSL_TLSV1, 1731 SSL_kEECDH,
1359 SSL_NOT_EXP|SSL_HIGH, 1732 SSL_aECDSA,
1360 0, 1733 SSL_3DES,
1361 168, 1734 SSL_SHA1,
1362 168, 1735 SSL_TLSV1,
1363 SSL_ALL_CIPHERS, 1736 SSL_NOT_EXP|SSL_HIGH,
1364 SSL_ALL_STRENGTHS, 1737 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1365 }, 1738 168,
1739 168,
1740 },
1366 1741
1367 /* Cipher C009 */ 1742 /* Cipher C009 */
1368 { 1743 {
1369 1, 1744 1,
1370 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 1745 TLS1_TXT_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
1371 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, 1746 TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
1372 SSL_kECDHE|SSL_aECDSA|SSL_AES|SSL_SHA|SSL_TLSV1, 1747 SSL_kEECDH,
1373 SSL_NOT_EXP|SSL_HIGH, 1748 SSL_aECDSA,
1374 0, 1749 SSL_AES128,
1375 128, 1750 SSL_SHA1,
1376 128, 1751 SSL_TLSV1,
1377 SSL_ALL_CIPHERS, 1752 SSL_NOT_EXP|SSL_HIGH,
1378 SSL_ALL_STRENGTHS, 1753 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1379 }, 1754 128,
1755 128,
1756 },
1380 1757
1381 /* Cipher C00A */ 1758 /* Cipher C00A */
1382 { 1759 {
1383 1, 1760 1,
1384 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, 1761 TLS1_TXT_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
1385 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, 1762 TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
1386 SSL_kECDHE|SSL_aECDSA|SSL_AES|SSL_SHA|SSL_TLSV1, 1763 SSL_kEECDH,
1387 SSL_NOT_EXP|SSL_HIGH, 1764 SSL_aECDSA,
1388 0, 1765 SSL_AES256,
1389 256, 1766 SSL_SHA1,
1390 256, 1767 SSL_TLSV1,
1391 SSL_ALL_CIPHERS, 1768 SSL_NOT_EXP|SSL_HIGH,
1392 SSL_ALL_STRENGTHS, 1769 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1393 }, 1770 256,
1771 256,
1772 },
1394 1773
1395 /* Cipher C00B */ 1774 /* Cipher C00B */
1396 { 1775 {
1397 1, 1776 1,
1398 TLS1_TXT_ECDH_RSA_WITH_NULL_SHA, 1777 TLS1_TXT_ECDH_RSA_WITH_NULL_SHA,
1399 TLS1_CK_ECDH_RSA_WITH_NULL_SHA, 1778 TLS1_CK_ECDH_RSA_WITH_NULL_SHA,
1400 SSL_kECDH|SSL_aRSA|SSL_eNULL|SSL_SHA|SSL_TLSV1, 1779 SSL_kECDHr,
1401 SSL_NOT_EXP, 1780 SSL_aECDH,
1402 0, 1781 SSL_eNULL,
1403 0, 1782 SSL_SHA1,
1404 0, 1783 SSL_TLSV1,
1405 SSL_ALL_CIPHERS, 1784 SSL_NOT_EXP|SSL_STRONG_NONE,
1406 SSL_ALL_STRENGTHS, 1785 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1407 }, 1786 0,
1787 0,
1788 },
1408 1789
1409 /* Cipher C00C */ 1790 /* Cipher C00C */
1410 { 1791 {
1411 1, 1792 1,
1412 TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA, 1793 TLS1_TXT_ECDH_RSA_WITH_RC4_128_SHA,
1413 TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA, 1794 TLS1_CK_ECDH_RSA_WITH_RC4_128_SHA,
1414 SSL_kECDH|SSL_aRSA|SSL_RC4|SSL_SHA|SSL_TLSV1, 1795 SSL_kECDHr,
1415 SSL_NOT_EXP, 1796 SSL_aECDH,
1416 0, 1797 SSL_RC4,
1417 128, 1798 SSL_SHA1,
1418 128, 1799 SSL_TLSV1,
1419 SSL_ALL_CIPHERS, 1800 SSL_NOT_EXP|SSL_MEDIUM,
1420 SSL_ALL_STRENGTHS, 1801 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1421 }, 1802 128,
1803 128,
1804 },
1422 1805
1423 /* Cipher C00D */ 1806 /* Cipher C00D */
1424 { 1807 {
1425 1, 1808 1,
1426 TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA, 1809 TLS1_TXT_ECDH_RSA_WITH_DES_192_CBC3_SHA,
1427 TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA, 1810 TLS1_CK_ECDH_RSA_WITH_DES_192_CBC3_SHA,
1428 SSL_kECDH|SSL_aRSA|SSL_3DES|SSL_SHA|SSL_TLSV1, 1811 SSL_kECDHr,
1429 SSL_NOT_EXP|SSL_HIGH, 1812 SSL_aECDH,
1430 0, 1813 SSL_3DES,
1431 168, 1814 SSL_SHA1,
1432 168, 1815 SSL_TLSV1,
1433 SSL_ALL_CIPHERS, 1816 SSL_NOT_EXP|SSL_HIGH,
1434 SSL_ALL_STRENGTHS, 1817 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1435 }, 1818 168,
1819 168,
1820 },
1436 1821
1437 /* Cipher C00E */ 1822 /* Cipher C00E */
1438 { 1823 {
1439 1, 1824 1,
1440 TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA, 1825 TLS1_TXT_ECDH_RSA_WITH_AES_128_CBC_SHA,
1441 TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA, 1826 TLS1_CK_ECDH_RSA_WITH_AES_128_CBC_SHA,
1442 SSL_kECDH|SSL_aRSA|SSL_AES|SSL_SHA|SSL_TLSV1, 1827 SSL_kECDHr,
1443 SSL_NOT_EXP|SSL_HIGH, 1828 SSL_aECDH,
1444 0, 1829 SSL_AES128,
1445 128, 1830 SSL_SHA1,
1446 128, 1831 SSL_TLSV1,
1447 SSL_ALL_CIPHERS, 1832 SSL_NOT_EXP|SSL_HIGH,
1448 SSL_ALL_STRENGTHS, 1833 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1449 }, 1834 128,
1835 128,
1836 },
1450 1837
1451 /* Cipher C00F */ 1838 /* Cipher C00F */
1452 { 1839 {
1453 1, 1840 1,
1454 TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA, 1841 TLS1_TXT_ECDH_RSA_WITH_AES_256_CBC_SHA,
1455 TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA, 1842 TLS1_CK_ECDH_RSA_WITH_AES_256_CBC_SHA,
1456 SSL_kECDH|SSL_aRSA|SSL_AES|SSL_SHA|SSL_TLSV1, 1843 SSL_kECDHr,
1457 SSL_NOT_EXP|SSL_HIGH, 1844 SSL_aECDH,
1458 0, 1845 SSL_AES256,
1459 256, 1846 SSL_SHA1,
1460 256, 1847 SSL_TLSV1,
1461 SSL_ALL_CIPHERS, 1848 SSL_NOT_EXP|SSL_HIGH,
1462 SSL_ALL_STRENGTHS, 1849 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1463 }, 1850 256,
1851 256,
1852 },
1464 1853
1465 /* Cipher C010 */ 1854 /* Cipher C010 */
1466 { 1855 {
1467 1, 1856 1,
1468 TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA, 1857 TLS1_TXT_ECDHE_RSA_WITH_NULL_SHA,
1469 TLS1_CK_ECDHE_RSA_WITH_NULL_SHA, 1858 TLS1_CK_ECDHE_RSA_WITH_NULL_SHA,
1470 SSL_kECDHE|SSL_aRSA|SSL_eNULL|SSL_SHA|SSL_TLSV1, 1859 SSL_kEECDH,
1471 SSL_NOT_EXP, 1860 SSL_aRSA,
1472 0, 1861 SSL_eNULL,
1473 0, 1862 SSL_SHA1,
1474 0, 1863 SSL_TLSV1,
1475 SSL_ALL_CIPHERS, 1864 SSL_NOT_EXP|SSL_STRONG_NONE,
1476 SSL_ALL_STRENGTHS, 1865 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1477 }, 1866 0,
1867 0,
1868 },
1478 1869
1479 /* Cipher C011 */ 1870 /* Cipher C011 */
1480 { 1871 {
1481 1, 1872 1,
1482 TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA, 1873 TLS1_TXT_ECDHE_RSA_WITH_RC4_128_SHA,
1483 TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA, 1874 TLS1_CK_ECDHE_RSA_WITH_RC4_128_SHA,
1484 SSL_kECDHE|SSL_aRSA|SSL_RC4|SSL_SHA|SSL_TLSV1, 1875 SSL_kEECDH,
1485 SSL_NOT_EXP, 1876 SSL_aRSA,
1486 0, 1877 SSL_RC4,
1487 128, 1878 SSL_SHA1,
1488 128, 1879 SSL_TLSV1,
1489 SSL_ALL_CIPHERS, 1880 SSL_NOT_EXP|SSL_MEDIUM,
1490 SSL_ALL_STRENGTHS, 1881 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1491 }, 1882 128,
1883 128,
1884 },
1492 1885
1493 /* Cipher C012 */ 1886 /* Cipher C012 */
1494 { 1887 {
1495 1, 1888 1,
1496 TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA, 1889 TLS1_TXT_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
1497 TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA, 1890 TLS1_CK_ECDHE_RSA_WITH_DES_192_CBC3_SHA,
1498 SSL_kECDHE|SSL_aRSA|SSL_3DES|SSL_SHA|SSL_TLSV1, 1891 SSL_kEECDH,
1499 SSL_NOT_EXP|SSL_HIGH, 1892 SSL_aRSA,
1500 0, 1893 SSL_3DES,
1501 168, 1894 SSL_SHA1,
1502 168, 1895 SSL_TLSV1,
1503 SSL_ALL_CIPHERS, 1896 SSL_NOT_EXP|SSL_HIGH,
1504 SSL_ALL_STRENGTHS, 1897 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1505 }, 1898 168,
1899 168,
1900 },
1506 1901
1507 /* Cipher C013 */ 1902 /* Cipher C013 */
1508 { 1903 {
1509 1, 1904 1,
1510 TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA, 1905 TLS1_TXT_ECDHE_RSA_WITH_AES_128_CBC_SHA,
1511 TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA, 1906 TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA,
1512 SSL_kECDHE|SSL_aRSA|SSL_AES|SSL_SHA|SSL_TLSV1, 1907 SSL_kEECDH,
1513 SSL_NOT_EXP|SSL_HIGH, 1908 SSL_aRSA,
1514 0, 1909 SSL_AES128,
1515 128, 1910 SSL_SHA1,
1516 128, 1911 SSL_TLSV1,
1517 SSL_ALL_CIPHERS, 1912 SSL_NOT_EXP|SSL_HIGH,
1518 SSL_ALL_STRENGTHS, 1913 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1519 }, 1914 128,
1915 128,
1916 },
1520 1917
1521 /* Cipher C014 */ 1918 /* Cipher C014 */
1522 { 1919 {
1523 1, 1920 1,
1524 TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA, 1921 TLS1_TXT_ECDHE_RSA_WITH_AES_256_CBC_SHA,
1525 TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA, 1922 TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA,
1526 SSL_kECDHE|SSL_aRSA|SSL_AES|SSL_SHA|SSL_TLSV1, 1923 SSL_kEECDH,
1527 SSL_NOT_EXP|SSL_HIGH, 1924 SSL_aRSA,
1528 0, 1925 SSL_AES256,
1529 256, 1926 SSL_SHA1,
1530 256, 1927 SSL_TLSV1,
1531 SSL_ALL_CIPHERS, 1928 SSL_NOT_EXP|SSL_HIGH,
1532 SSL_ALL_STRENGTHS, 1929 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1533 }, 1930 256,
1931 256,
1932 },
1534 1933
1535 /* Cipher C015 */ 1934 /* Cipher C015 */
1536 { 1935 {
1537 1, 1936 1,
1538 TLS1_TXT_ECDH_anon_WITH_NULL_SHA, 1937 TLS1_TXT_ECDH_anon_WITH_NULL_SHA,
1539 TLS1_CK_ECDH_anon_WITH_NULL_SHA, 1938 TLS1_CK_ECDH_anon_WITH_NULL_SHA,
1540 SSL_kECDHE|SSL_aNULL|SSL_eNULL|SSL_SHA|SSL_TLSV1, 1939 SSL_kEECDH,
1541 SSL_NOT_EXP, 1940 SSL_aNULL,
1542 0, 1941 SSL_eNULL,
1543 0, 1942 SSL_SHA1,
1544 0, 1943 SSL_TLSV1,
1545 SSL_ALL_CIPHERS, 1944 SSL_NOT_EXP|SSL_STRONG_NONE,
1546 SSL_ALL_STRENGTHS, 1945 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1547 }, 1946 0,
1947 0,
1948 },
1548 1949
1549 /* Cipher C016 */ 1950 /* Cipher C016 */
1550 { 1951 {
1551 1, 1952 1,
1552 TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA, 1953 TLS1_TXT_ECDH_anon_WITH_RC4_128_SHA,
1553 TLS1_CK_ECDH_anon_WITH_RC4_128_SHA, 1954 TLS1_CK_ECDH_anon_WITH_RC4_128_SHA,
1554 SSL_kECDHE|SSL_aNULL|SSL_RC4|SSL_SHA|SSL_TLSV1, 1955 SSL_kEECDH,
1555 SSL_NOT_EXP, 1956 SSL_aNULL,
1556 0, 1957 SSL_RC4,
1557 128, 1958 SSL_SHA1,
1558 128, 1959 SSL_TLSV1,
1559 SSL_ALL_CIPHERS, 1960 SSL_NOT_EXP|SSL_MEDIUM,
1560 SSL_ALL_STRENGTHS, 1961 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1561 }, 1962 128,
1963 128,
1964 },
1562 1965
1563 /* Cipher C017 */ 1966 /* Cipher C017 */
1564 { 1967 {
1565 1, 1968 1,
1566 TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA, 1969 TLS1_TXT_ECDH_anon_WITH_DES_192_CBC3_SHA,
1567 TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA, 1970 TLS1_CK_ECDH_anon_WITH_DES_192_CBC3_SHA,
1568 SSL_kECDHE|SSL_aNULL|SSL_3DES|SSL_SHA|SSL_TLSV1, 1971 SSL_kEECDH,
1569 SSL_NOT_EXP|SSL_HIGH, 1972 SSL_aNULL,
1570 0, 1973 SSL_3DES,
1571 168, 1974 SSL_SHA1,
1572 168, 1975 SSL_TLSV1,
1573 SSL_ALL_CIPHERS, 1976 SSL_NOT_EXP|SSL_HIGH,
1574 SSL_ALL_STRENGTHS, 1977 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1575 }, 1978 168,
1979 168,
1980 },
1576 1981
1577 /* Cipher C018 */ 1982 /* Cipher C018 */
1578 { 1983 {
1579 1, 1984 1,
1580 TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA, 1985 TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA,
1581 TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA, 1986 TLS1_CK_ECDH_anon_WITH_AES_128_CBC_SHA,
1582 SSL_kECDHE|SSL_aNULL|SSL_AES|SSL_SHA|SSL_TLSV1, 1987 SSL_kEECDH,
1583 SSL_NOT_EXP|SSL_HIGH, 1988 SSL_aNULL,
1584 0, 1989 SSL_AES128,
1585 128, 1990 SSL_SHA1,
1586 128, 1991 SSL_TLSV1,
1587 SSL_ALL_CIPHERS, 1992 SSL_NOT_EXP|SSL_HIGH,
1588 SSL_ALL_STRENGTHS, 1993 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1589 }, 1994 128,
1995 128,
1996 },
1590 1997
1591 /* Cipher C019 */ 1998 /* Cipher C019 */
1592 { 1999 {
1593 1, 2000 1,
1594 TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA, 2001 TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA,
1595 TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA, 2002 TLS1_CK_ECDH_anon_WITH_AES_256_CBC_SHA,
1596 SSL_kECDHE|SSL_aNULL|SSL_AES|SSL_SHA|SSL_TLSV1, 2003 SSL_kEECDH,
1597 SSL_NOT_EXP|SSL_HIGH, 2004 SSL_aNULL,
1598 0, 2005 SSL_AES256,
1599 256, 2006 SSL_SHA1,
1600 256, 2007 SSL_TLSV1,
1601 SSL_ALL_CIPHERS, 2008 SSL_NOT_EXP|SSL_HIGH,
1602 SSL_ALL_STRENGTHS, 2009 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
1603 }, 2010 256,
2011 256,
2012 },
1604#endif /* OPENSSL_NO_ECDH */ 2013#endif /* OPENSSL_NO_ECDH */
1605 2014
2015#ifdef TEMP_GOST_TLS
2016/* Cipher FF00 */
2017 {
2018 1,
2019 "GOST-MD5",
2020 0x0300ff00,
2021 SSL_kRSA,
2022 SSL_aRSA,
2023 SSL_eGOST2814789CNT,
2024 SSL_MD5,
2025 SSL_TLSV1,
2026 SSL_NOT_EXP|SSL_HIGH,
2027 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2028 256,
2029 256,
2030 },
2031 {
2032 1,
2033 "GOST-GOST94",
2034 0x0300ff01,
2035 SSL_kRSA,
2036 SSL_aRSA,
2037 SSL_eGOST2814789CNT,
2038 SSL_GOST94,
2039 SSL_TLSV1,
2040 SSL_NOT_EXP|SSL_HIGH,
2041 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2042 256,
2043 256
2044 },
2045 {
2046 1,
2047 "GOST-GOST89MAC",
2048 0x0300ff02,
2049 SSL_kRSA,
2050 SSL_aRSA,
2051 SSL_eGOST2814789CNT,
2052 SSL_GOST89MAC,
2053 SSL_TLSV1,
2054 SSL_NOT_EXP|SSL_HIGH,
2055 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF,
2056 256,
2057 256
2058 },
2059 {
2060 1,
2061 "GOST-GOST89STREAM",
2062 0x0300ff03,
2063 SSL_kRSA,
2064 SSL_aRSA,
2065 SSL_eGOST2814789CNT,
2066 SSL_GOST89MAC,
2067 SSL_TLSV1,
2068 SSL_NOT_EXP|SSL_HIGH,
2069 SSL_HANDSHAKE_MAC_DEFAULT|TLS1_PRF|TLS1_STREAM_MAC,
2070 256,
2071 256
2072 },
2073#endif
1606 2074
1607/* end of list */ 2075/* end of list */
1608 }; 2076 };
1609 2077
1610SSL3_ENC_METHOD SSLv3_enc_data={ 2078SSL3_ENC_METHOD SSLv3_enc_data={
1611 ssl3_enc, 2079 ssl3_enc,
1612 ssl3_mac, 2080 n_ssl3_mac,
1613 ssl3_setup_key_block, 2081 ssl3_setup_key_block,
1614 ssl3_generate_master_secret, 2082 ssl3_generate_master_secret,
1615 ssl3_change_cipher_state, 2083 ssl3_change_cipher_state,
@@ -1628,17 +2096,12 @@ long ssl3_default_timeout(void)
1628 return(60*60*2); 2096 return(60*60*2);
1629 } 2097 }
1630 2098
1631IMPLEMENT_ssl3_meth_func(sslv3_base_method,
1632 ssl_undefined_function,
1633 ssl_undefined_function,
1634 ssl_bad_method)
1635
1636int ssl3_num_ciphers(void) 2099int ssl3_num_ciphers(void)
1637 { 2100 {
1638 return(SSL3_NUM_CIPHERS); 2101 return(SSL3_NUM_CIPHERS);
1639 } 2102 }
1640 2103
1641SSL_CIPHER *ssl3_get_cipher(unsigned int u) 2104const SSL_CIPHER *ssl3_get_cipher(unsigned int u)
1642 { 2105 {
1643 if (u < SSL3_NUM_CIPHERS) 2106 if (u < SSL3_NUM_CIPHERS)
1644 return(&(ssl3_ciphers[SSL3_NUM_CIPHERS-1-u])); 2107 return(&(ssl3_ciphers[SSL3_NUM_CIPHERS-1-u]));
@@ -1660,10 +2123,8 @@ int ssl3_new(SSL *s)
1660 2123
1661 if ((s3=OPENSSL_malloc(sizeof *s3)) == NULL) goto err; 2124 if ((s3=OPENSSL_malloc(sizeof *s3)) == NULL) goto err;
1662 memset(s3,0,sizeof *s3); 2125 memset(s3,0,sizeof *s3);
1663 EVP_MD_CTX_init(&s3->finish_dgst1); 2126 memset(s3->rrec.seq_num,0,sizeof(s3->rrec.seq_num));
1664 EVP_MD_CTX_init(&s3->finish_dgst2); 2127 memset(s3->wrec.seq_num,0,sizeof(s3->wrec.seq_num));
1665 pq_64bit_init(&(s3->rrec.seq_num));
1666 pq_64bit_init(&(s3->wrec.seq_num));
1667 2128
1668 s->s3=s3; 2129 s->s3=s3;
1669 2130
@@ -1678,11 +2139,18 @@ void ssl3_free(SSL *s)
1678 if(s == NULL) 2139 if(s == NULL)
1679 return; 2140 return;
1680 2141
2142#ifdef TLSEXT_TYPE_opaque_prf_input
2143 if (s->s3->client_opaque_prf_input != NULL)
2144 OPENSSL_free(s->s3->client_opaque_prf_input);
2145 if (s->s3->server_opaque_prf_input != NULL)
2146 OPENSSL_free(s->s3->server_opaque_prf_input);
2147#endif
2148
1681 ssl3_cleanup_key_block(s); 2149 ssl3_cleanup_key_block(s);
1682 if (s->s3->rbuf.buf != NULL) 2150 if (s->s3->rbuf.buf != NULL)
1683 OPENSSL_free(s->s3->rbuf.buf); 2151 ssl3_release_read_buffer(s);
1684 if (s->s3->wbuf.buf != NULL) 2152 if (s->s3->wbuf.buf != NULL)
1685 OPENSSL_free(s->s3->wbuf.buf); 2153 ssl3_release_write_buffer(s);
1686 if (s->s3->rrec.comp != NULL) 2154 if (s->s3->rrec.comp != NULL)
1687 OPENSSL_free(s->s3->rrec.comp); 2155 OPENSSL_free(s->s3->rrec.comp);
1688#ifndef OPENSSL_NO_DH 2156#ifndef OPENSSL_NO_DH
@@ -1696,11 +2164,10 @@ void ssl3_free(SSL *s)
1696 2164
1697 if (s->s3->tmp.ca_names != NULL) 2165 if (s->s3->tmp.ca_names != NULL)
1698 sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free); 2166 sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
1699 EVP_MD_CTX_cleanup(&s->s3->finish_dgst1); 2167 if (s->s3->handshake_buffer) {
1700 EVP_MD_CTX_cleanup(&s->s3->finish_dgst2); 2168 BIO_free(s->s3->handshake_buffer);
1701 pq_64bit_free(&(s->s3->rrec.seq_num)); 2169 }
1702 pq_64bit_free(&(s->s3->wrec.seq_num)); 2170 if (s->s3->handshake_dgst) ssl3_free_digest_list(s);
1703
1704 OPENSSL_cleanse(s->s3,sizeof *s->s3); 2171 OPENSSL_cleanse(s->s3,sizeof *s->s3);
1705 OPENSSL_free(s->s3); 2172 OPENSSL_free(s->s3);
1706 s->s3=NULL; 2173 s->s3=NULL;
@@ -1711,6 +2178,15 @@ void ssl3_clear(SSL *s)
1711 unsigned char *rp,*wp; 2178 unsigned char *rp,*wp;
1712 size_t rlen, wlen; 2179 size_t rlen, wlen;
1713 2180
2181#ifdef TLSEXT_TYPE_opaque_prf_input
2182 if (s->s3->client_opaque_prf_input != NULL)
2183 OPENSSL_free(s->s3->client_opaque_prf_input);
2184 s->s3->client_opaque_prf_input = NULL;
2185 if (s->s3->server_opaque_prf_input != NULL)
2186 OPENSSL_free(s->s3->server_opaque_prf_input);
2187 s->s3->server_opaque_prf_input = NULL;
2188#endif
2189
1714 ssl3_cleanup_key_block(s); 2190 ssl3_cleanup_key_block(s);
1715 if (s->s3->tmp.ca_names != NULL) 2191 if (s->s3->tmp.ca_names != NULL)
1716 sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free); 2192 sk_X509_NAME_pop_free(s->s3->tmp.ca_names,X509_NAME_free);
@@ -1733,10 +2209,13 @@ void ssl3_clear(SSL *s)
1733 wp = s->s3->wbuf.buf; 2209 wp = s->s3->wbuf.buf;
1734 rlen = s->s3->rbuf.len; 2210 rlen = s->s3->rbuf.len;
1735 wlen = s->s3->wbuf.len; 2211 wlen = s->s3->wbuf.len;
1736 2212 if (s->s3->handshake_buffer) {
1737 EVP_MD_CTX_cleanup(&s->s3->finish_dgst1); 2213 BIO_free(s->s3->handshake_buffer);
1738 EVP_MD_CTX_cleanup(&s->s3->finish_dgst2); 2214 s->s3->handshake_buffer = NULL;
1739 2215 }
2216 if (s->s3->handshake_dgst) {
2217 ssl3_free_digest_list(s);
2218 }
1740 memset(s->s3,0,sizeof *s->s3); 2219 memset(s->s3,0,sizeof *s->s3);
1741 s->s3->rbuf.buf = rp; 2220 s->s3->rbuf.buf = rp;
1742 s->s3->wbuf.buf = wp; 2221 s->s3->wbuf.buf = wp;
@@ -1936,7 +2415,31 @@ long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg)
1936 s->tlsext_debug_arg=parg; 2415 s->tlsext_debug_arg=parg;
1937 ret = 1; 2416 ret = 1;
1938 break; 2417 break;
1939 2418
2419#ifdef TLSEXT_TYPE_opaque_prf_input
2420 case SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT:
2421 if (larg > 12288) /* actual internal limit is 2^16 for the complete hello message
2422 * (including the cert chain and everything) */
2423 {
2424 SSLerr(SSL_F_SSL3_CTRL, SSL_R_OPAQUE_PRF_INPUT_TOO_LONG);
2425 break;
2426 }
2427 if (s->tlsext_opaque_prf_input != NULL)
2428 OPENSSL_free(s->tlsext_opaque_prf_input);
2429 if ((size_t)larg == 0)
2430 s->tlsext_opaque_prf_input = OPENSSL_malloc(1); /* dummy byte just to get non-NULL */
2431 else
2432 s->tlsext_opaque_prf_input = BUF_memdup(parg, (size_t)larg);
2433 if (s->tlsext_opaque_prf_input != NULL)
2434 {
2435 s->tlsext_opaque_prf_input_len = (size_t)larg;
2436 ret = 1;
2437 }
2438 else
2439 s->tlsext_opaque_prf_input_len = 0;
2440 break;
2441#endif
2442
1940 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE: 2443 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE:
1941 s->tlsext_status_type=larg; 2444 s->tlsext_status_type=larg;
1942 ret = 1; 2445 ret = 1;
@@ -2194,13 +2697,20 @@ long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
2194 } 2697 }
2195 return 1; 2698 return 1;
2196 } 2699 }
2197 2700
2701#ifdef TLSEXT_TYPE_opaque_prf_input
2702 case SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG:
2703 ctx->tlsext_opaque_prf_input_callback_arg = parg;
2704 return 1;
2705#endif
2706
2198 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG: 2707 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG:
2199 ctx->tlsext_status_arg=parg; 2708 ctx->tlsext_status_arg=parg;
2200 return 1; 2709 return 1;
2201 break; 2710 break;
2202 2711
2203#endif /* !OPENSSL_NO_TLSEXT */ 2712#endif /* !OPENSSL_NO_TLSEXT */
2713
2204 /* A Thawte special :-) */ 2714 /* A Thawte special :-) */
2205 case SSL_CTRL_EXTRA_CHAIN_CERT: 2715 case SSL_CTRL_EXTRA_CHAIN_CERT:
2206 if (ctx->extra_certs == NULL) 2716 if (ctx->extra_certs == NULL)
@@ -2250,7 +2760,13 @@ long ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void))
2250 case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB: 2760 case SSL_CTRL_SET_TLSEXT_SERVERNAME_CB:
2251 ctx->tlsext_servername_callback=(int (*)(SSL *,int *,void *))fp; 2761 ctx->tlsext_servername_callback=(int (*)(SSL *,int *,void *))fp;
2252 break; 2762 break;
2253 2763
2764#ifdef TLSEXT_TYPE_opaque_prf_input
2765 case SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB:
2766 ctx->tlsext_opaque_prf_input_callback = (int (*)(SSL *,void *, size_t, void *))fp;
2767 break;
2768#endif
2769
2254 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB: 2770 case SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB:
2255 ctx->tlsext_status_cb=(int (*)(SSL *,void *))fp; 2771 ctx->tlsext_status_cb=(int (*)(SSL *,void *))fp;
2256 break; 2772 break;
@@ -2271,17 +2787,15 @@ long ssl3_ctx_callback_ctrl(SSL_CTX *ctx, int cmd, void (*fp)(void))
2271 2787
2272/* This function needs to check if the ciphers required are actually 2788/* This function needs to check if the ciphers required are actually
2273 * available */ 2789 * available */
2274SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p) 2790const SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p)
2275 { 2791 {
2276 SSL_CIPHER c,*cp; 2792 SSL_CIPHER c;
2793 const SSL_CIPHER *cp;
2277 unsigned long id; 2794 unsigned long id;
2278 2795
2279 id=0x03000000L|((unsigned long)p[0]<<8L)|(unsigned long)p[1]; 2796 id=0x03000000L|((unsigned long)p[0]<<8L)|(unsigned long)p[1];
2280 c.id=id; 2797 c.id=id;
2281 cp = (SSL_CIPHER *)OBJ_bsearch((char *)&c, 2798 cp = OBJ_bsearch_ssl_cipher_id(&c, ssl3_ciphers, SSL3_NUM_CIPHERS);
2282 (char *)ssl3_ciphers,
2283 SSL3_NUM_CIPHERS,sizeof(SSL_CIPHER),
2284 FP_ICC ssl_cipher_id_cmp);
2285 if (cp == NULL || cp->valid == 0) 2799 if (cp == NULL || cp->valid == 0)
2286 return NULL; 2800 return NULL;
2287 else 2801 else
@@ -2307,10 +2821,14 @@ SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt,
2307 { 2821 {
2308 SSL_CIPHER *c,*ret=NULL; 2822 SSL_CIPHER *c,*ret=NULL;
2309 STACK_OF(SSL_CIPHER) *prio, *allow; 2823 STACK_OF(SSL_CIPHER) *prio, *allow;
2310 int i,j,ok; 2824 int i,ii,ok;
2311 2825#if !defined(OPENSSL_NO_TLSEXT) && !defined(OPENSSL_NO_EC)
2826 unsigned int j;
2827 int ec_ok, ec_nid;
2828 unsigned char ec_search1 = 0, ec_search2 = 0;
2829#endif
2312 CERT *cert; 2830 CERT *cert;
2313 unsigned long alg,mask,emask; 2831 unsigned long alg_k,alg_a,mask_k,mask_a,emask_k,emask_a;
2314 2832
2315 /* Let's see which ciphers we can support */ 2833 /* Let's see which ciphers we can support */
2316 cert=s->cert; 2834 cert=s->cert;
@@ -2326,73 +2844,237 @@ SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt,
2326#endif 2844#endif
2327 2845
2328#ifdef CIPHER_DEBUG 2846#ifdef CIPHER_DEBUG
2329 printf("Server has %d from %p:\n", sk_SSL_CIPHER_num(srvr), srvr); 2847 printf("Server has %d from %p:\n", sk_SSL_CIPHER_num(srvr), (void *)srvr);
2330 for(i=0 ; i < sk_SSL_CIPHER_num(srvr) ; ++i) 2848 for(i=0 ; i < sk_SSL_CIPHER_num(srvr) ; ++i)
2331 { 2849 {
2332 c=sk_SSL_CIPHER_value(srvr,i); 2850 c=sk_SSL_CIPHER_value(srvr,i);
2333 printf("%p:%s\n",c,c->name); 2851 printf("%p:%s\n",(void *)c,c->name);
2334 } 2852 }
2335 printf("Client sent %d from %p:\n", sk_SSL_CIPHER_num(clnt), clnt); 2853 printf("Client sent %d from %p:\n", sk_SSL_CIPHER_num(clnt), (void *)clnt);
2336 for(i=0 ; i < sk_SSL_CIPHER_num(clnt) ; ++i) 2854 for(i=0 ; i < sk_SSL_CIPHER_num(clnt) ; ++i)
2337 { 2855 {
2338 c=sk_SSL_CIPHER_value(clnt,i); 2856 c=sk_SSL_CIPHER_value(clnt,i);
2339 printf("%p:%s\n",c,c->name); 2857 printf("%p:%s\n",(void *)c,c->name);
2340 } 2858 }
2341#endif 2859#endif
2342 2860
2343 if (s->options & SSL_OP_CIPHER_SERVER_PREFERENCE) 2861 if (s->options & SSL_OP_CIPHER_SERVER_PREFERENCE)
2344 { 2862 {
2345 prio = srvr; 2863 prio = srvr;
2346 allow = clnt; 2864 allow = clnt;
2347 } 2865 }
2348 else 2866 else
2349 { 2867 {
2350 prio = clnt; 2868 prio = clnt;
2351 allow = srvr; 2869 allow = srvr;
2352 } 2870 }
2353 2871
2354 for (i=0; i<sk_SSL_CIPHER_num(prio); i++) 2872 for (i=0; i<sk_SSL_CIPHER_num(prio); i++)
2355 { 2873 {
2356 c=sk_SSL_CIPHER_value(prio,i); 2874 c=sk_SSL_CIPHER_value(prio,i);
2357 2875
2358 ssl_set_cert_masks(cert,c); 2876 ssl_set_cert_masks(cert,c);
2359 mask=cert->mask; 2877 mask_k = cert->mask_k;
2360 emask=cert->export_mask; 2878 mask_a = cert->mask_a;
2879 emask_k = cert->export_mask_k;
2880 emask_a = cert->export_mask_a;
2361 2881
2362#ifdef KSSL_DEBUG 2882#ifdef KSSL_DEBUG
2363 printf("ssl3_choose_cipher %d alg= %lx\n", i,c->algorithms); 2883/* printf("ssl3_choose_cipher %d alg= %lx\n", i,c->algorithms);*/
2364#endif /* KSSL_DEBUG */ 2884#endif /* KSSL_DEBUG */
2365 2885
2366 alg=c->algorithms&(SSL_MKEY_MASK|SSL_AUTH_MASK); 2886 alg_k=c->algorithm_mkey;
2887 alg_a=c->algorithm_auth;
2888
2367#ifndef OPENSSL_NO_KRB5 2889#ifndef OPENSSL_NO_KRB5
2368 if (alg & SSL_KRB5) 2890 if (alg_k & SSL_kKRB5)
2369 { 2891 {
2370 if ( !kssl_keytab_is_available(s->kssl_ctx) ) 2892 if ( !kssl_keytab_is_available(s->kssl_ctx) )
2371 continue; 2893 continue;
2372 } 2894 }
2373#endif /* OPENSSL_NO_KRB5 */ 2895#endif /* OPENSSL_NO_KRB5 */
2896#ifndef OPENSSL_NO_PSK
2897 /* with PSK there must be server callback set */
2898 if ((alg_k & SSL_kPSK) && s->psk_server_callback == NULL)
2899 continue;
2900#endif /* OPENSSL_NO_PSK */
2901
2374 if (SSL_C_IS_EXPORT(c)) 2902 if (SSL_C_IS_EXPORT(c))
2375 { 2903 {
2376 ok=((alg & emask) == alg)?1:0; 2904 ok = (alg_k & emask_k) && (alg_a & emask_a);
2377#ifdef CIPHER_DEBUG 2905#ifdef CIPHER_DEBUG
2378 printf("%d:[%08lX:%08lX]%p:%s (export)\n",ok,alg,emask, 2906 printf("%d:[%08lX:%08lX:%08lX:%08lX]%p:%s (export)\n",ok,alg_k,alg_a,emask_k,emask_a,
2379 c,c->name); 2907 (void *)c,c->name);
2380#endif 2908#endif
2381 } 2909 }
2382 else 2910 else
2383 { 2911 {
2384 ok=((alg & mask) == alg)?1:0; 2912 ok = (alg_k & mask_k) && (alg_a & mask_a);
2385#ifdef CIPHER_DEBUG 2913#ifdef CIPHER_DEBUG
2386 printf("%d:[%08lX:%08lX]%p:%s\n",ok,alg,mask,c, 2914 printf("%d:[%08lX:%08lX:%08lX:%08lX]%p:%s\n",ok,alg_k,alg_a,mask_k,mask_a,(void *)c,
2387 c->name); 2915 c->name);
2388#endif 2916#endif
2389 } 2917 }
2390 2918
2919#ifndef OPENSSL_NO_TLSEXT
2920#ifndef OPENSSL_NO_EC
2921 if (
2922 /* if we are considering an ECC cipher suite that uses our certificate */
2923 (alg_a & SSL_aECDSA || alg_a & SSL_aECDH)
2924 /* and we have an ECC certificate */
2925 && (s->cert->pkeys[SSL_PKEY_ECC].x509 != NULL)
2926 /* and the client specified a Supported Point Formats extension */
2927 && ((s->session->tlsext_ecpointformatlist_length > 0) && (s->session->tlsext_ecpointformatlist != NULL))
2928 /* and our certificate's point is compressed */
2929 && (
2930 (s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info != NULL)
2931 && (s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info->key != NULL)
2932 && (s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info->key->public_key != NULL)
2933 && (s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info->key->public_key->data != NULL)
2934 && (
2935 (*(s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info->key->public_key->data) == POINT_CONVERSION_COMPRESSED)
2936 || (*(s->cert->pkeys[SSL_PKEY_ECC].x509->cert_info->key->public_key->data) == POINT_CONVERSION_COMPRESSED + 1)
2937 )
2938 )
2939 )
2940 {
2941 ec_ok = 0;
2942 /* if our certificate's curve is over a field type that the client does not support
2943 * then do not allow this cipher suite to be negotiated */
2944 if (
2945 (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec != NULL)
2946 && (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group != NULL)
2947 && (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth != NULL)
2948 && (EC_METHOD_get_field_type(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_prime_field)
2949 )
2950 {
2951 for (j = 0; j < s->session->tlsext_ecpointformatlist_length; j++)
2952 {
2953 if (s->session->tlsext_ecpointformatlist[j] == TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime)
2954 {
2955 ec_ok = 1;
2956 break;
2957 }
2958 }
2959 }
2960 else if (EC_METHOD_get_field_type(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_characteristic_two_field)
2961 {
2962 for (j = 0; j < s->session->tlsext_ecpointformatlist_length; j++)
2963 {
2964 if (s->session->tlsext_ecpointformatlist[j] == TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2)
2965 {
2966 ec_ok = 1;
2967 break;
2968 }
2969 }
2970 }
2971 ok = ok && ec_ok;
2972 }
2973 if (
2974 /* if we are considering an ECC cipher suite that uses our certificate */
2975 (alg_a & SSL_aECDSA || alg_a & SSL_aECDH)
2976 /* and we have an ECC certificate */
2977 && (s->cert->pkeys[SSL_PKEY_ECC].x509 != NULL)
2978 /* and the client specified an EllipticCurves extension */
2979 && ((s->session->tlsext_ellipticcurvelist_length > 0) && (s->session->tlsext_ellipticcurvelist != NULL))
2980 )
2981 {
2982 ec_ok = 0;
2983 if (
2984 (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec != NULL)
2985 && (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group != NULL)
2986 )
2987 {
2988 ec_nid = EC_GROUP_get_curve_name(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group);
2989 if ((ec_nid == 0)
2990 && (s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth != NULL)
2991 )
2992 {
2993 if (EC_METHOD_get_field_type(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_prime_field)
2994 {
2995 ec_search1 = 0xFF;
2996 ec_search2 = 0x01;
2997 }
2998 else if (EC_METHOD_get_field_type(s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec->group->meth) == NID_X9_62_characteristic_two_field)
2999 {
3000 ec_search1 = 0xFF;
3001 ec_search2 = 0x02;
3002 }
3003 }
3004 else
3005 {
3006 ec_search1 = 0x00;
3007 ec_search2 = tls1_ec_nid2curve_id(ec_nid);
3008 }
3009 if ((ec_search1 != 0) || (ec_search2 != 0))
3010 {
3011 for (j = 0; j < s->session->tlsext_ellipticcurvelist_length / 2; j++)
3012 {
3013 if ((s->session->tlsext_ellipticcurvelist[2*j] == ec_search1) && (s->session->tlsext_ellipticcurvelist[2*j+1] == ec_search2))
3014 {
3015 ec_ok = 1;
3016 break;
3017 }
3018 }
3019 }
3020 }
3021 ok = ok && ec_ok;
3022 }
3023 if (
3024 /* if we are considering an ECC cipher suite that uses an ephemeral EC key */
3025 (alg_k & SSL_kEECDH)
3026 /* and we have an ephemeral EC key */
3027 && (s->cert->ecdh_tmp != NULL)
3028 /* and the client specified an EllipticCurves extension */
3029 && ((s->session->tlsext_ellipticcurvelist_length > 0) && (s->session->tlsext_ellipticcurvelist != NULL))
3030 )
3031 {
3032 ec_ok = 0;
3033 if (s->cert->ecdh_tmp->group != NULL)
3034 {
3035 ec_nid = EC_GROUP_get_curve_name(s->cert->ecdh_tmp->group);
3036 if ((ec_nid == 0)
3037 && (s->cert->ecdh_tmp->group->meth != NULL)
3038 )
3039 {
3040 if (EC_METHOD_get_field_type(s->cert->ecdh_tmp->group->meth) == NID_X9_62_prime_field)
3041 {
3042 ec_search1 = 0xFF;
3043 ec_search2 = 0x01;
3044 }
3045 else if (EC_METHOD_get_field_type(s->cert->ecdh_tmp->group->meth) == NID_X9_62_characteristic_two_field)
3046 {
3047 ec_search1 = 0xFF;
3048 ec_search2 = 0x02;
3049 }
3050 }
3051 else
3052 {
3053 ec_search1 = 0x00;
3054 ec_search2 = tls1_ec_nid2curve_id(ec_nid);
3055 }
3056 if ((ec_search1 != 0) || (ec_search2 != 0))
3057 {
3058 for (j = 0; j < s->session->tlsext_ellipticcurvelist_length / 2; j++)
3059 {
3060 if ((s->session->tlsext_ellipticcurvelist[2*j] == ec_search1) && (s->session->tlsext_ellipticcurvelist[2*j+1] == ec_search2))
3061 {
3062 ec_ok = 1;
3063 break;
3064 }
3065 }
3066 }
3067 }
3068 ok = ok && ec_ok;
3069 }
3070#endif /* OPENSSL_NO_EC */
3071#endif /* OPENSSL_NO_TLSEXT */
3072
2391 if (!ok) continue; 3073 if (!ok) continue;
2392 j=sk_SSL_CIPHER_find(allow,c); 3074 ii=sk_SSL_CIPHER_find(allow,c);
2393 if (j >= 0) 3075 if (ii >= 0)
2394 { 3076 {
2395 ret=sk_SSL_CIPHER_value(allow,j); 3077 ret=sk_SSL_CIPHER_value(allow,ii);
2396 break; 3078 break;
2397 } 3079 }
2398 } 3080 }
@@ -2402,12 +3084,24 @@ SSL_CIPHER *ssl3_choose_cipher(SSL *s, STACK_OF(SSL_CIPHER) *clnt,
2402int ssl3_get_req_cert_type(SSL *s, unsigned char *p) 3084int ssl3_get_req_cert_type(SSL *s, unsigned char *p)
2403 { 3085 {
2404 int ret=0; 3086 int ret=0;
2405 unsigned long alg; 3087 unsigned long alg_k;
3088
3089 alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
2406 3090
2407 alg=s->s3->tmp.new_cipher->algorithms; 3091#ifndef OPENSSL_NO_GOST
3092 if (s->version >= TLS1_VERSION)
3093 {
3094 if (alg_k & SSL_kGOST)
3095 {
3096 p[ret++]=TLS_CT_GOST94_SIGN;
3097 p[ret++]=TLS_CT_GOST01_SIGN;
3098 return(ret);
3099 }
3100 }
3101#endif
2408 3102
2409#ifndef OPENSSL_NO_DH 3103#ifndef OPENSSL_NO_DH
2410 if (alg & (SSL_kDHr|SSL_kEDH)) 3104 if (alg_k & (SSL_kDHr|SSL_kEDH))
2411 { 3105 {
2412# ifndef OPENSSL_NO_RSA 3106# ifndef OPENSSL_NO_RSA
2413 p[ret++]=SSL3_CT_RSA_FIXED_DH; 3107 p[ret++]=SSL3_CT_RSA_FIXED_DH;
@@ -2417,7 +3111,7 @@ int ssl3_get_req_cert_type(SSL *s, unsigned char *p)
2417# endif 3111# endif
2418 } 3112 }
2419 if ((s->version == SSL3_VERSION) && 3113 if ((s->version == SSL3_VERSION) &&
2420 (alg & (SSL_kEDH|SSL_kDHd|SSL_kDHr))) 3114 (alg_k & (SSL_kEDH|SSL_kDHd|SSL_kDHr)))
2421 { 3115 {
2422# ifndef OPENSSL_NO_RSA 3116# ifndef OPENSSL_NO_RSA
2423 p[ret++]=SSL3_CT_RSA_EPHEMERAL_DH; 3117 p[ret++]=SSL3_CT_RSA_EPHEMERAL_DH;
@@ -2434,10 +3128,7 @@ int ssl3_get_req_cert_type(SSL *s, unsigned char *p)
2434 p[ret++]=SSL3_CT_DSS_SIGN; 3128 p[ret++]=SSL3_CT_DSS_SIGN;
2435#endif 3129#endif
2436#ifndef OPENSSL_NO_ECDH 3130#ifndef OPENSSL_NO_ECDH
2437 /* We should ask for fixed ECDH certificates only 3131 if ((alg_k & (SSL_kECDHr|SSL_kECDHe)) && (s->version >= TLS1_VERSION))
2438 * for SSL_kECDH (and not SSL_kECDHE)
2439 */
2440 if ((alg & SSL_kECDH) && (s->version >= TLS1_VERSION))
2441 { 3132 {
2442 p[ret++]=TLS_CT_RSA_FIXED_ECDH; 3133 p[ret++]=TLS_CT_RSA_FIXED_ECDH;
2443 p[ret++]=TLS_CT_ECDSA_FIXED_ECDH; 3134 p[ret++]=TLS_CT_ECDSA_FIXED_ECDH;
@@ -2446,7 +3137,7 @@ int ssl3_get_req_cert_type(SSL *s, unsigned char *p)
2446 3137
2447#ifndef OPENSSL_NO_ECDSA 3138#ifndef OPENSSL_NO_ECDSA
2448 /* ECDSA certs can be used with RSA cipher suites as well 3139 /* ECDSA certs can be used with RSA cipher suites as well
2449 * so we don't need to check for SSL_kECDH or SSL_kECDHE 3140 * so we don't need to check for SSL_kECDH or SSL_kEECDH
2450 */ 3141 */
2451 if (s->version >= TLS1_VERSION) 3142 if (s->version >= TLS1_VERSION)
2452 { 3143 {
@@ -2458,6 +3149,7 @@ int ssl3_get_req_cert_type(SSL *s, unsigned char *p)
2458 3149
2459int ssl3_shutdown(SSL *s) 3150int ssl3_shutdown(SSL *s)
2460 { 3151 {
3152 int ret;
2461 3153
2462 /* Don't do anything much if we have not done the handshake or 3154 /* Don't do anything much if we have not done the handshake or
2463 * we don't want to send messages :-) */ 3155 * we don't want to send messages :-) */
@@ -2475,18 +3167,32 @@ int ssl3_shutdown(SSL *s)
2475#endif 3167#endif
2476 /* our shutdown alert has been sent now, and if it still needs 3168 /* our shutdown alert has been sent now, and if it still needs
2477 * to be written, s->s3->alert_dispatch will be true */ 3169 * to be written, s->s3->alert_dispatch will be true */
3170 if (s->s3->alert_dispatch)
3171 return(-1); /* return WANT_WRITE */
2478 } 3172 }
2479 else if (s->s3->alert_dispatch) 3173 else if (s->s3->alert_dispatch)
2480 { 3174 {
2481 /* resend it if not sent */ 3175 /* resend it if not sent */
2482#if 1 3176#if 1
2483 s->method->ssl_dispatch_alert(s); 3177 ret=s->method->ssl_dispatch_alert(s);
3178 if(ret == -1)
3179 {
3180 /* we only get to return -1 here the 2nd/Nth
3181 * invocation, we must have already signalled
3182 * return 0 upon a previous invoation,
3183 * return WANT_WRITE */
3184 return(ret);
3185 }
2484#endif 3186#endif
2485 } 3187 }
2486 else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN)) 3188 else if (!(s->shutdown & SSL_RECEIVED_SHUTDOWN))
2487 { 3189 {
2488 /* If we are waiting for a close from our peer, we are closed */ 3190 /* If we are waiting for a close from our peer, we are closed */
2489 s->method->ssl_read_bytes(s,0,NULL,0,0); 3191 s->method->ssl_read_bytes(s,0,NULL,0,0);
3192 if(!(s->shutdown & SSL_RECEIVED_SHUTDOWN))
3193 {
3194 return(-1); /* return WANT_READ */
3195 }
2490 } 3196 }
2491 3197
2492 if ((s->shutdown == (SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN)) && 3198 if ((s->shutdown == (SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN)) &&
diff --git a/src/lib/libssl/src/ssl/s3_meth.c b/src/lib/libssl/src/ssl/s3_meth.c
index 6a6eb1c58f..cdddb17b62 100644
--- a/src/lib/libssl/src/ssl/s3_meth.c
+++ b/src/lib/libssl/src/ssl/s3_meth.c
@@ -60,8 +60,8 @@
60#include <openssl/objects.h> 60#include <openssl/objects.h>
61#include "ssl_locl.h" 61#include "ssl_locl.h"
62 62
63static SSL_METHOD *ssl3_get_method(int ver); 63static const SSL_METHOD *ssl3_get_method(int ver);
64static SSL_METHOD *ssl3_get_method(int ver) 64static const SSL_METHOD *ssl3_get_method(int ver)
65 { 65 {
66 if (ver == SSL3_VERSION) 66 if (ver == SSL3_VERSION)
67 return(SSLv3_method()); 67 return(SSLv3_method());
@@ -70,8 +70,8 @@ static SSL_METHOD *ssl3_get_method(int ver)
70 } 70 }
71 71
72IMPLEMENT_ssl3_meth_func(SSLv3_method, 72IMPLEMENT_ssl3_meth_func(SSLv3_method,
73 ssl3_accept, 73 ssl3_accept,
74 ssl3_connect, 74 ssl3_connect,
75 ssl3_get_method) 75 ssl3_get_method)
76 76
77 77
diff --git a/src/lib/libssl/src/ssl/s3_pkt.c b/src/lib/libssl/src/ssl/s3_pkt.c
index 9476dcddf6..e3f6050a26 100644
--- a/src/lib/libssl/src/ssl/s3_pkt.c
+++ b/src/lib/libssl/src/ssl/s3_pkt.c
@@ -129,73 +129,113 @@ int ssl3_read_n(SSL *s, int n, int max, int extend)
129 * (If s->read_ahead is set, 'max' bytes may be stored in rbuf 129 * (If s->read_ahead is set, 'max' bytes may be stored in rbuf
130 * [plus s->packet_length bytes if extend == 1].) 130 * [plus s->packet_length bytes if extend == 1].)
131 */ 131 */
132 int i,off,newb; 132 int i,len,left;
133 long align=0;
134 unsigned char *pkt;
135 SSL3_BUFFER *rb;
136
137 if (n <= 0) return n;
138
139 rb = &(s->s3->rbuf);
140 if (rb->buf == NULL)
141 if (!ssl3_setup_read_buffer(s))
142 return -1;
143
144 left = rb->left;
145#if defined(SSL3_ALIGN_PAYLOAD) && SSL3_ALIGN_PAYLOAD!=0
146 align = (long)rb->buf + SSL3_RT_HEADER_LENGTH;
147 align = (-align)&(SSL3_ALIGN_PAYLOAD-1);
148#endif
133 149
134 if (!extend) 150 if (!extend)
135 { 151 {
136 /* start with empty packet ... */ 152 /* start with empty packet ... */
137 if (s->s3->rbuf.left == 0) 153 if (left == 0)
138 s->s3->rbuf.offset = 0; 154 rb->offset = align;
139 s->packet = s->s3->rbuf.buf + s->s3->rbuf.offset; 155 else if (align != 0 && left >= SSL3_RT_HEADER_LENGTH)
156 {
157 /* check if next packet length is large
158 * enough to justify payload alignment... */
159 pkt = rb->buf + rb->offset;
160 if (pkt[0] == SSL3_RT_APPLICATION_DATA
161 && (pkt[3]<<8|pkt[4]) >= 128)
162 {
163 /* Note that even if packet is corrupted
164 * and its length field is insane, we can
165 * only be led to wrong decision about
166 * whether memmove will occur or not.
167 * Header values has no effect on memmove
168 * arguments and therefore no buffer
169 * overrun can be triggered. */
170 memmove (rb->buf+align,pkt,left);
171 rb->offset = align;
172 }
173 }
174 s->packet = rb->buf + rb->offset;
140 s->packet_length = 0; 175 s->packet_length = 0;
141 /* ... now we can act as if 'extend' was set */ 176 /* ... now we can act as if 'extend' was set */
142 } 177 }
143 178
144 /* extend reads should not span multiple packets for DTLS */ 179 /* For DTLS/UDP reads should not span multiple packets
145 if ( SSL_version(s) == DTLS1_VERSION && 180 * because the read operation returns the whole packet
146 extend) 181 * at once (as long as it fits into the buffer). */
182 if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER)
147 { 183 {
148 if ( s->s3->rbuf.left > 0 && n > s->s3->rbuf.left) 184 if (left > 0 && n > left)
149 n = s->s3->rbuf.left; 185 n = left;
150 } 186 }
151 187
152 /* if there is enough in the buffer from a previous read, take some */ 188 /* if there is enough in the buffer from a previous read, take some */
153 if (s->s3->rbuf.left >= (int)n) 189 if (left >= n)
154 { 190 {
155 s->packet_length+=n; 191 s->packet_length+=n;
156 s->s3->rbuf.left-=n; 192 rb->left=left-n;
157 s->s3->rbuf.offset+=n; 193 rb->offset+=n;
158 return(n); 194 return(n);
159 } 195 }
160 196
161 /* else we need to read more data */ 197 /* else we need to read more data */
162 if (!s->read_ahead)
163 max=n;
164 198
165 { 199 len = s->packet_length;
166 /* avoid buffer overflow */ 200 pkt = rb->buf+align;
167 int max_max = s->s3->rbuf.len - s->packet_length; 201 /* Move any available bytes to front of buffer:
168 if (max > max_max) 202 * 'len' bytes already pointed to by 'packet',
169 max = max_max; 203 * 'left' extra ones at the end */
170 } 204 if (s->packet != pkt) /* len > 0 */
171 if (n > max) /* does not happen */ 205 {
206 memmove(pkt, s->packet, len+left);
207 s->packet = pkt;
208 rb->offset = len + align;
209 }
210
211 if (n > (int)(rb->len - rb->offset)) /* does not happen */
172 { 212 {
173 SSLerr(SSL_F_SSL3_READ_N,ERR_R_INTERNAL_ERROR); 213 SSLerr(SSL_F_SSL3_READ_N,ERR_R_INTERNAL_ERROR);
174 return -1; 214 return -1;
175 } 215 }
176 216
177 off = s->packet_length; 217 if (!s->read_ahead)
178 newb = s->s3->rbuf.left; 218 /* ignore max parameter */
179 /* Move any available bytes to front of buffer: 219 max = n;
180 * 'off' bytes already pointed to by 'packet', 220 else
181 * 'newb' extra ones at the end */
182 if (s->packet != s->s3->rbuf.buf)
183 { 221 {
184 /* off > 0 */ 222 if (max < n)
185 memmove(s->s3->rbuf.buf, s->packet, off+newb); 223 max = n;
186 s->packet = s->s3->rbuf.buf; 224 if (max > (int)(rb->len - rb->offset))
225 max = rb->len - rb->offset;
187 } 226 }
188 227
189 while (newb < n) 228 while (left < n)
190 { 229 {
191 /* Now we have off+newb bytes at the front of s->s3->rbuf.buf and need 230 /* Now we have len+left bytes at the front of s->s3->rbuf.buf
192 * to read in more until we have off+n (up to off+max if possible) */ 231 * and need to read in more until we have len+n (up to
232 * len+max if possible) */
193 233
194 clear_sys_error(); 234 clear_sys_error();
195 if (s->rbio != NULL) 235 if (s->rbio != NULL)
196 { 236 {
197 s->rwstate=SSL_READING; 237 s->rwstate=SSL_READING;
198 i=BIO_read(s->rbio, &(s->s3->rbuf.buf[off+newb]), max-newb); 238 i=BIO_read(s->rbio,pkt+len+left, max-left);
199 } 239 }
200 else 240 else
201 { 241 {
@@ -205,15 +245,26 @@ int ssl3_read_n(SSL *s, int n, int max, int extend)
205 245
206 if (i <= 0) 246 if (i <= 0)
207 { 247 {
208 s->s3->rbuf.left = newb; 248 rb->left = left;
249 if (s->mode & SSL_MODE_RELEASE_BUFFERS)
250 if (len+left == 0)
251 ssl3_release_read_buffer(s);
209 return(i); 252 return(i);
210 } 253 }
211 newb+=i; 254 left+=i;
255 /* reads should *never* span multiple packets for DTLS because
256 * the underlying transport protocol is message oriented as opposed
257 * to byte oriented as in the TLS case. */
258 if (SSL_version(s) == DTLS1_VERSION || SSL_version(s) == DTLS1_BAD_VER)
259 {
260 if (n > left)
261 n = left; /* makes the while condition false */
262 }
212 } 263 }
213 264
214 /* done reading, now the book-keeping */ 265 /* done reading, now the book-keeping */
215 s->s3->rbuf.offset = off + n; 266 rb->offset += n;
216 s->s3->rbuf.left = newb - n; 267 rb->left = left - n;
217 s->packet_length += n; 268 s->packet_length += n;
218 s->rwstate=SSL_NOTHING; 269 s->rwstate=SSL_NOTHING;
219 return(n); 270 return(n);
@@ -237,7 +288,7 @@ static int ssl3_get_record(SSL *s)
237 unsigned char *p; 288 unsigned char *p;
238 unsigned char md[EVP_MAX_MD_SIZE]; 289 unsigned char md[EVP_MAX_MD_SIZE];
239 short version; 290 short version;
240 unsigned int mac_size; 291 int mac_size;
241 int clear=0; 292 int clear=0;
242 size_t extra; 293 size_t extra;
243 int decryption_failed_or_bad_record_mac = 0; 294 int decryption_failed_or_bad_record_mac = 0;
@@ -250,9 +301,9 @@ static int ssl3_get_record(SSL *s)
250 extra=SSL3_RT_MAX_EXTRA; 301 extra=SSL3_RT_MAX_EXTRA;
251 else 302 else
252 extra=0; 303 extra=0;
253 if (extra != s->s3->rbuf.len - SSL3_RT_MAX_PACKET_SIZE) 304 if (extra && !s->s3->init_extra)
254 { 305 {
255 /* actually likely an application error: SLS_OP_MICROSOFT_BIG_SSLV3_BUFFER 306 /* An application error: SLS_OP_MICROSOFT_BIG_SSLV3_BUFFER
256 * set after ssl3_setup_buffers() was done */ 307 * set after ssl3_setup_buffers() was done */
257 SSLerr(SSL_F_SSL3_GET_RECORD, ERR_R_INTERNAL_ERROR); 308 SSLerr(SSL_F_SSL3_GET_RECORD, ERR_R_INTERNAL_ERROR);
258 return -1; 309 return -1;
@@ -275,6 +326,9 @@ again:
275 ssl_minor= *(p++); 326 ssl_minor= *(p++);
276 version=(ssl_major<<8)|ssl_minor; 327 version=(ssl_major<<8)|ssl_minor;
277 n2s(p,rr->length); 328 n2s(p,rr->length);
329#if 0
330fprintf(stderr, "Record type=%d, Length=%d\n", rr->type, rr->length);
331#endif
278 332
279 /* Lets check version */ 333 /* Lets check version */
280 if (!s->first_packet) 334 if (!s->first_packet)
@@ -282,9 +336,9 @@ again:
282 if (version != s->version) 336 if (version != s->version)
283 { 337 {
284 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_WRONG_VERSION_NUMBER); 338 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_WRONG_VERSION_NUMBER);
285 /* Send back error using their 339 if ((s->version & 0xFF00) == (version & 0xFF00))
286 * version number :-) */ 340 /* Send back error using their minor version number :-) */
287 s->version=version; 341 s->version = (unsigned short)version;
288 al=SSL_AD_PROTOCOL_VERSION; 342 al=SSL_AD_PROTOCOL_VERSION;
289 goto f_err; 343 goto f_err;
290 } 344 }
@@ -296,7 +350,7 @@ again:
296 goto err; 350 goto err;
297 } 351 }
298 352
299 if (rr->length > SSL3_RT_MAX_ENCRYPTED_LENGTH+extra) 353 if (rr->length > s->s3->rbuf.len - SSL3_RT_HEADER_LENGTH)
300 { 354 {
301 al=SSL_AD_RECORD_OVERFLOW; 355 al=SSL_AD_RECORD_OVERFLOW;
302 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_PACKET_LENGTH_TOO_LONG); 356 SSLerr(SSL_F_SSL3_GET_RECORD,SSL_R_PACKET_LENGTH_TOO_LONG);
@@ -369,12 +423,14 @@ printf("\n");
369 /* r->length is now the compressed data plus mac */ 423 /* r->length is now the compressed data plus mac */
370 if ( (sess == NULL) || 424 if ( (sess == NULL) ||
371 (s->enc_read_ctx == NULL) || 425 (s->enc_read_ctx == NULL) ||
372 (s->read_hash == NULL)) 426 (EVP_MD_CTX_md(s->read_hash) == NULL))
373 clear=1; 427 clear=1;
374 428
375 if (!clear) 429 if (!clear)
376 { 430 {
377 mac_size=EVP_MD_size(s->read_hash); 431 /* !clear => s->read_hash != NULL => mac_size != -1 */
432 mac_size=EVP_MD_CTX_size(s->read_hash);
433 OPENSSL_assert(mac_size >= 0);
378 434
379 if (rr->length > SSL3_RT_MAX_COMPRESSED_LENGTH+extra+mac_size) 435 if (rr->length > SSL3_RT_MAX_COMPRESSED_LENGTH+extra+mac_size)
380 { 436 {
@@ -387,7 +443,7 @@ printf("\n");
387#endif 443#endif
388 } 444 }
389 /* check the MAC for rr->input (it's in mac_size bytes at the tail) */ 445 /* check the MAC for rr->input (it's in mac_size bytes at the tail) */
390 if (rr->length >= mac_size) 446 if (rr->length >= (unsigned int)mac_size)
391 { 447 {
392 rr->length -= mac_size; 448 rr->length -= mac_size;
393 mac = &rr->data[rr->length]; 449 mac = &rr->data[rr->length];
@@ -405,7 +461,7 @@ printf("\n");
405#endif 461#endif
406 } 462 }
407 i=s->method->ssl3_enc->mac(s,md,0); 463 i=s->method->ssl3_enc->mac(s,md,0);
408 if (mac == NULL || memcmp(md, mac, mac_size) != 0) 464 if (i < 0 || mac == NULL || memcmp(md, mac, (size_t)mac_size) != 0)
409 { 465 {
410 decryption_failed_or_bad_record_mac = 1; 466 decryption_failed_or_bad_record_mac = 1;
411 } 467 }
@@ -462,6 +518,10 @@ printf("\n");
462 /* just read a 0 length packet */ 518 /* just read a 0 length packet */
463 if (rr->length == 0) goto again; 519 if (rr->length == 0) goto again;
464 520
521#if 0
522fprintf(stderr, "Ultimate Record type=%d, Length=%d\n", rr->type, rr->length);
523#endif
524
465 return(1); 525 return(1);
466 526
467f_err: 527f_err:
@@ -535,8 +595,8 @@ int ssl3_write_bytes(SSL *s, int type, const void *buf_, int len)
535 n=(len-tot); 595 n=(len-tot);
536 for (;;) 596 for (;;)
537 { 597 {
538 if (n > SSL3_RT_MAX_PLAIN_LENGTH) 598 if (n > s->max_send_fragment)
539 nw=SSL3_RT_MAX_PLAIN_LENGTH; 599 nw=s->max_send_fragment;
540 else 600 else
541 nw=n; 601 nw=n;
542 602
@@ -568,14 +628,19 @@ static int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
568 { 628 {
569 unsigned char *p,*plen; 629 unsigned char *p,*plen;
570 int i,mac_size,clear=0; 630 int i,mac_size,clear=0;
571 int prefix_len = 0; 631 int prefix_len=0;
632 long align=0;
572 SSL3_RECORD *wr; 633 SSL3_RECORD *wr;
573 SSL3_BUFFER *wb; 634 SSL3_BUFFER *wb=&(s->s3->wbuf);
574 SSL_SESSION *sess; 635 SSL_SESSION *sess;
575 636
637 if (wb->buf == NULL)
638 if (!ssl3_setup_write_buffer(s))
639 return -1;
640
576 /* first check if there is a SSL3_BUFFER still being written 641 /* first check if there is a SSL3_BUFFER still being written
577 * out. This will happen with non blocking IO */ 642 * out. This will happen with non blocking IO */
578 if (s->s3->wbuf.left != 0) 643 if (wb->left != 0)
579 return(ssl3_write_pending(s,type,buf,len)); 644 return(ssl3_write_pending(s,type,buf,len));
580 645
581 /* If we have an alert to send, lets send it */ 646 /* If we have an alert to send, lets send it */
@@ -591,18 +656,21 @@ static int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
591 return 0; 656 return 0;
592 657
593 wr= &(s->s3->wrec); 658 wr= &(s->s3->wrec);
594 wb= &(s->s3->wbuf);
595 sess=s->session; 659 sess=s->session;
596 660
597 if ( (sess == NULL) || 661 if ( (sess == NULL) ||
598 (s->enc_write_ctx == NULL) || 662 (s->enc_write_ctx == NULL) ||
599 (s->write_hash == NULL)) 663 (EVP_MD_CTX_md(s->write_hash) == NULL))
600 clear=1; 664 clear=1;
601 665
602 if (clear) 666 if (clear)
603 mac_size=0; 667 mac_size=0;
604 else 668 else
605 mac_size=EVP_MD_size(s->write_hash); 669 {
670 mac_size=EVP_MD_CTX_size(s->write_hash);
671 if (mac_size < 0)
672 goto err;
673 }
606 674
607 /* 'create_empty_fragment' is true only when this function calls itself */ 675 /* 'create_empty_fragment' is true only when this function calls itself */
608 if (!clear && !create_empty_fragment && !s->s3->empty_fragment_done) 676 if (!clear && !create_empty_fragment && !s->s3->empty_fragment_done)
@@ -620,7 +688,8 @@ static int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
620 if (prefix_len <= 0) 688 if (prefix_len <= 0)
621 goto err; 689 goto err;
622 690
623 if (s->s3->wbuf.len < (size_t)prefix_len + SSL3_RT_MAX_PACKET_SIZE) 691 if (prefix_len >
692 (SSL3_RT_HEADER_LENGTH + SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD))
624 { 693 {
625 /* insufficient space */ 694 /* insufficient space */
626 SSLerr(SSL_F_DO_SSL3_WRITE, ERR_R_INTERNAL_ERROR); 695 SSLerr(SSL_F_DO_SSL3_WRITE, ERR_R_INTERNAL_ERROR);
@@ -631,7 +700,32 @@ static int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
631 s->s3->empty_fragment_done = 1; 700 s->s3->empty_fragment_done = 1;
632 } 701 }
633 702
634 p = wb->buf + prefix_len; 703 if (create_empty_fragment)
704 {
705#if defined(SSL3_ALIGN_PAYLOAD) && SSL3_ALIGN_PAYLOAD!=0
706 /* extra fragment would be couple of cipher blocks,
707 * which would be multiple of SSL3_ALIGN_PAYLOAD, so
708 * if we want to align the real payload, then we can
709 * just pretent we simply have two headers. */
710 align = (long)wb->buf + 2*SSL3_RT_HEADER_LENGTH;
711 align = (-align)&(SSL3_ALIGN_PAYLOAD-1);
712#endif
713 p = wb->buf + align;
714 wb->offset = align;
715 }
716 else if (prefix_len)
717 {
718 p = wb->buf + wb->offset + prefix_len;
719 }
720 else
721 {
722#if defined(SSL3_ALIGN_PAYLOAD) && SSL3_ALIGN_PAYLOAD!=0
723 align = (long)wb->buf + SSL3_RT_HEADER_LENGTH;
724 align = (-align)&(SSL3_ALIGN_PAYLOAD-1);
725#endif
726 p = wb->buf + align;
727 wb->offset = align;
728 }
635 729
636 /* write the header */ 730 /* write the header */
637 731
@@ -674,7 +768,8 @@ static int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
674 768
675 if (mac_size != 0) 769 if (mac_size != 0)
676 { 770 {
677 s->method->ssl3_enc->mac(s,&(p[wr->length]),1); 771 if (s->method->ssl3_enc->mac(s,&(p[wr->length]),1) < 0)
772 goto err;
678 wr->length+=mac_size; 773 wr->length+=mac_size;
679 wr->input=p; 774 wr->input=p;
680 wr->data=p; 775 wr->data=p;
@@ -702,7 +797,6 @@ static int do_ssl3_write(SSL *s, int type, const unsigned char *buf,
702 797
703 /* now let's set up wb */ 798 /* now let's set up wb */
704 wb->left = prefix_len + wr->length; 799 wb->left = prefix_len + wr->length;
705 wb->offset = 0;
706 800
707 /* memorize arguments so that ssl3_write_pending can detect bad write retries later */ 801 /* memorize arguments so that ssl3_write_pending can detect bad write retries later */
708 s->s3->wpend_tot=len; 802 s->s3->wpend_tot=len;
@@ -721,6 +815,7 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
721 unsigned int len) 815 unsigned int len)
722 { 816 {
723 int i; 817 int i;
818 SSL3_BUFFER *wb=&(s->s3->wbuf);
724 819
725/* XXXX */ 820/* XXXX */
726 if ((s->s3->wpend_tot > (int)len) 821 if ((s->s3->wpend_tot > (int)len)
@@ -739,17 +834,20 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
739 { 834 {
740 s->rwstate=SSL_WRITING; 835 s->rwstate=SSL_WRITING;
741 i=BIO_write(s->wbio, 836 i=BIO_write(s->wbio,
742 (char *)&(s->s3->wbuf.buf[s->s3->wbuf.offset]), 837 (char *)&(wb->buf[wb->offset]),
743 (unsigned int)s->s3->wbuf.left); 838 (unsigned int)wb->left);
744 } 839 }
745 else 840 else
746 { 841 {
747 SSLerr(SSL_F_SSL3_WRITE_PENDING,SSL_R_BIO_NOT_SET); 842 SSLerr(SSL_F_SSL3_WRITE_PENDING,SSL_R_BIO_NOT_SET);
748 i= -1; 843 i= -1;
749 } 844 }
750 if (i == s->s3->wbuf.left) 845 if (i == wb->left)
751 { 846 {
752 s->s3->wbuf.left=0; 847 wb->left=0;
848 wb->offset+=i;
849 if (s->mode & SSL_MODE_RELEASE_BUFFERS)
850 ssl3_release_write_buffer(s);
753 s->rwstate=SSL_NOTHING; 851 s->rwstate=SSL_NOTHING;
754 return(s->s3->wpend_ret); 852 return(s->s3->wpend_ret);
755 } 853 }
@@ -758,12 +856,12 @@ int ssl3_write_pending(SSL *s, int type, const unsigned char *buf,
758 s->version == DTLS1_BAD_VER) { 856 s->version == DTLS1_BAD_VER) {
759 /* For DTLS, just drop it. That's kind of the whole 857 /* For DTLS, just drop it. That's kind of the whole
760 point in using a datagram service */ 858 point in using a datagram service */
761 s->s3->wbuf.left = 0; 859 wb->left = 0;
762 } 860 }
763 return(i); 861 return(i);
764 } 862 }
765 s->s3->wbuf.offset+=i; 863 wb->offset+=i;
766 s->s3->wbuf.left-=i; 864 wb->left-=i;
767 } 865 }
768 } 866 }
769 867
@@ -802,7 +900,7 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek)
802 void (*cb)(const SSL *ssl,int type2,int val)=NULL; 900 void (*cb)(const SSL *ssl,int type2,int val)=NULL;
803 901
804 if (s->s3->rbuf.buf == NULL) /* Not initialized yet */ 902 if (s->s3->rbuf.buf == NULL) /* Not initialized yet */
805 if (!ssl3_setup_buffers(s)) 903 if (!ssl3_setup_read_buffer(s))
806 return(-1); 904 return(-1);
807 905
808 if ((type && (type != SSL3_RT_APPLICATION_DATA) && (type != SSL3_RT_HANDSHAKE) && type) || 906 if ((type && (type != SSL3_RT_APPLICATION_DATA) && (type != SSL3_RT_HANDSHAKE) && type) ||
@@ -911,6 +1009,8 @@ start:
911 { 1009 {
912 s->rstate=SSL_ST_READ_HEADER; 1010 s->rstate=SSL_ST_READ_HEADER;
913 rr->off=0; 1011 rr->off=0;
1012 if (s->mode & SSL_MODE_RELEASE_BUFFERS)
1013 ssl3_release_read_buffer(s);
914 } 1014 }
915 } 1015 }
916 return(n); 1016 return(n);
@@ -1020,7 +1120,25 @@ start:
1020 * now try again to obtain the (application) data we were asked for */ 1120 * now try again to obtain the (application) data we were asked for */
1021 goto start; 1121 goto start;
1022 } 1122 }
1023 1123 /* If we are a server and get a client hello when renegotiation isn't
1124 * allowed send back a no renegotiation alert and carry on.
1125 * WARNING: experimental code, needs reviewing (steve)
1126 */
1127 if (s->server &&
1128 SSL_is_init_finished(s) &&
1129 !s->s3->send_connection_binding &&
1130 (s->version > SSL3_VERSION) &&
1131 (s->s3->handshake_fragment_len >= 4) &&
1132 (s->s3->handshake_fragment[0] == SSL3_MT_CLIENT_HELLO) &&
1133 (s->session != NULL) && (s->session->cipher != NULL) &&
1134 !(s->ctx->options & SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION))
1135
1136 {
1137 /*s->s3->handshake_fragment_len = 0;*/
1138 rr->length = 0;
1139 ssl3_send_alert(s,SSL3_AL_WARNING, SSL_AD_NO_RENEGOTIATION);
1140 goto start;
1141 }
1024 if (s->s3->alert_fragment_len >= 2) 1142 if (s->s3->alert_fragment_len >= 2)
1025 { 1143 {
1026 int alert_level = s->s3->alert_fragment[0]; 1144 int alert_level = s->s3->alert_fragment[0];
@@ -1050,6 +1168,21 @@ start:
1050 s->shutdown |= SSL_RECEIVED_SHUTDOWN; 1168 s->shutdown |= SSL_RECEIVED_SHUTDOWN;
1051 return(0); 1169 return(0);
1052 } 1170 }
1171 /* This is a warning but we receive it if we requested
1172 * renegotiation and the peer denied it. Terminate with
1173 * a fatal alert because if application tried to
1174 * renegotiatie it presumably had a good reason and
1175 * expects it to succeed.
1176 *
1177 * In future we might have a renegotiation where we
1178 * don't care if the peer refused it where we carry on.
1179 */
1180 else if (alert_descr == SSL_AD_NO_RENEGOTIATION)
1181 {
1182 al = SSL_AD_HANDSHAKE_FAILURE;
1183 SSLerr(SSL_F_SSL3_READ_BYTES,SSL_R_NO_RENEGOTIATION);
1184 goto f_err;
1185 }
1053 } 1186 }
1054 else if (alert_level == 2) /* fatal */ 1187 else if (alert_level == 2) /* fatal */
1055 { 1188 {
@@ -1261,20 +1394,18 @@ int ssl3_do_change_cipher_spec(SSL *s)
1261 } 1394 }
1262 1395
1263 s->s3->tmp.peer_finish_md_len = s->method->ssl3_enc->final_finish_mac(s, 1396 s->s3->tmp.peer_finish_md_len = s->method->ssl3_enc->final_finish_mac(s,
1264 &(s->s3->finish_dgst1),
1265 &(s->s3->finish_dgst2),
1266 sender,slen,s->s3->tmp.peer_finish_md); 1397 sender,slen,s->s3->tmp.peer_finish_md);
1267 1398
1268 return(1); 1399 return(1);
1269 } 1400 }
1270 1401
1271void ssl3_send_alert(SSL *s, int level, int desc) 1402int ssl3_send_alert(SSL *s, int level, int desc)
1272 { 1403 {
1273 /* Map tls/ssl alert value to correct one */ 1404 /* Map tls/ssl alert value to correct one */
1274 desc=s->method->ssl3_enc->alert_value(desc); 1405 desc=s->method->ssl3_enc->alert_value(desc);
1275 if (s->version == SSL3_VERSION && desc == SSL_AD_PROTOCOL_VERSION) 1406 if (s->version == SSL3_VERSION && desc == SSL_AD_PROTOCOL_VERSION)
1276 desc = SSL_AD_HANDSHAKE_FAILURE; /* SSL 3.0 does not have protocol_version alerts */ 1407 desc = SSL_AD_HANDSHAKE_FAILURE; /* SSL 3.0 does not have protocol_version alerts */
1277 if (desc < 0) return; 1408 if (desc < 0) return -1;
1278 /* If a fatal one, remove from cache */ 1409 /* If a fatal one, remove from cache */
1279 if ((level == 2) && (s->session != NULL)) 1410 if ((level == 2) && (s->session != NULL))
1280 SSL_CTX_remove_session(s->ctx,s->session); 1411 SSL_CTX_remove_session(s->ctx,s->session);
@@ -1283,9 +1414,10 @@ void ssl3_send_alert(SSL *s, int level, int desc)
1283 s->s3->send_alert[0]=level; 1414 s->s3->send_alert[0]=level;
1284 s->s3->send_alert[1]=desc; 1415 s->s3->send_alert[1]=desc;
1285 if (s->s3->wbuf.left == 0) /* data still being written out? */ 1416 if (s->s3->wbuf.left == 0) /* data still being written out? */
1286 s->method->ssl_dispatch_alert(s); 1417 return s->method->ssl_dispatch_alert(s);
1287 /* else data is still being written out, we will get written 1418 /* else data is still being written out, we will get written
1288 * some time in the future */ 1419 * some time in the future */
1420 return -1;
1289 } 1421 }
1290 1422
1291int ssl3_dispatch_alert(SSL *s) 1423int ssl3_dispatch_alert(SSL *s)
diff --git a/src/lib/libssl/src/ssl/s3_srvr.c b/src/lib/libssl/src/ssl/s3_srvr.c
index 80b45eb86f..92f73b6681 100644
--- a/src/lib/libssl/src/ssl/s3_srvr.c
+++ b/src/lib/libssl/src/ssl/s3_srvr.c
@@ -1,4 +1,4 @@
1/* ssl/s3_srvr.c */ 1/* ssl/s3_srvr.c -*- mode:C; c-file-style: "eay" -*- */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -121,6 +121,32 @@
121 * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories. 121 * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories.
122 * 122 *
123 */ 123 */
124/* ====================================================================
125 * Copyright 2005 Nokia. All rights reserved.
126 *
127 * The portions of the attached software ("Contribution") is developed by
128 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
129 * license.
130 *
131 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
132 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
133 * support (see RFC 4279) to OpenSSL.
134 *
135 * No patent licenses or other rights except those expressly stated in
136 * the OpenSSL open source license shall be deemed granted or received
137 * expressly, by implication, estoppel, or otherwise.
138 *
139 * No assurances are provided by Nokia that the Contribution does not
140 * infringe the patent or other intellectual property rights of any third
141 * party or that the license provides you with all the necessary rights
142 * to make use of the Contribution.
143 *
144 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
145 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
146 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
147 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
148 * OTHERWISE.
149 */
124 150
125#define REUSE_CIPHER_BUG 151#define REUSE_CIPHER_BUG
126#define NETSCAPE_HANG_BUG 152#define NETSCAPE_HANG_BUG
@@ -143,12 +169,9 @@
143#endif 169#endif
144#include <openssl/md5.h> 170#include <openssl/md5.h>
145 171
146static SSL_METHOD *ssl3_get_server_method(int ver); 172static const SSL_METHOD *ssl3_get_server_method(int ver);
147#ifndef OPENSSL_NO_ECDH
148static int nid2curve_id(int nid);
149#endif
150 173
151static SSL_METHOD *ssl3_get_server_method(int ver) 174static const SSL_METHOD *ssl3_get_server_method(int ver)
152 { 175 {
153 if (ver == SSL3_VERSION) 176 if (ver == SSL3_VERSION)
154 return(SSLv3_server_method()); 177 return(SSLv3_server_method());
@@ -164,9 +187,8 @@ IMPLEMENT_ssl3_meth_func(SSLv3_server_method,
164int ssl3_accept(SSL *s) 187int ssl3_accept(SSL *s)
165 { 188 {
166 BUF_MEM *buf; 189 BUF_MEM *buf;
167 unsigned long l,Time=(unsigned long)time(NULL); 190 unsigned long alg_k,Time=(unsigned long)time(NULL);
168 void (*cb)(const SSL *ssl,int type,int val)=NULL; 191 void (*cb)(const SSL *ssl,int type,int val)=NULL;
169 long num1;
170 int ret= -1; 192 int ret= -1;
171 int new_state,state,skip=0; 193 int new_state,state,skip=0;
172 194
@@ -248,6 +270,18 @@ int ssl3_accept(SSL *s)
248 s->state=SSL3_ST_SR_CLNT_HELLO_A; 270 s->state=SSL3_ST_SR_CLNT_HELLO_A;
249 s->ctx->stats.sess_accept++; 271 s->ctx->stats.sess_accept++;
250 } 272 }
273 else if (!s->s3->send_connection_binding &&
274 !(s->options & SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION))
275 {
276 /* Server attempting to renegotiate with
277 * client that doesn't support secure
278 * renegotiation.
279 */
280 SSLerr(SSL_F_SSL3_ACCEPT, SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED);
281 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_HANDSHAKE_FAILURE);
282 ret = -1;
283 goto end;
284 }
251 else 285 else
252 { 286 {
253 /* s->state == SSL_ST_RENEGOTIATE, 287 /* s->state == SSL_ST_RENEGOTIATE,
@@ -281,6 +315,7 @@ int ssl3_accept(SSL *s)
281 s->shutdown=0; 315 s->shutdown=0;
282 ret=ssl3_get_client_hello(s); 316 ret=ssl3_get_client_hello(s);
283 if (ret <= 0) goto end; 317 if (ret <= 0) goto end;
318
284 s->new_session = 2; 319 s->new_session = 2;
285 s->state=SSL3_ST_SW_SRVR_HELLO_A; 320 s->state=SSL3_ST_SW_SRVR_HELLO_A;
286 s->init_num=0; 321 s->init_num=0;
@@ -309,9 +344,11 @@ int ssl3_accept(SSL *s)
309 344
310 case SSL3_ST_SW_CERT_A: 345 case SSL3_ST_SW_CERT_A:
311 case SSL3_ST_SW_CERT_B: 346 case SSL3_ST_SW_CERT_B:
312 /* Check if it is anon DH or anon ECDH or KRB5 */ 347 /* Check if it is anon DH or anon ECDH, */
313 if (!(s->s3->tmp.new_cipher->algorithms & SSL_aNULL) 348 /* normal PSK or KRB5 */
314 && !(s->s3->tmp.new_cipher->algorithms & SSL_aKRB5)) 349 if (!(s->s3->tmp.new_cipher->algorithm_auth & SSL_aNULL)
350 && !(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK)
351 && !(s->s3->tmp.new_cipher->algorithm_auth & SSL_aKRB5))
315 { 352 {
316 ret=ssl3_send_server_certificate(s); 353 ret=ssl3_send_server_certificate(s);
317 if (ret <= 0) goto end; 354 if (ret <= 0) goto end;
@@ -338,13 +375,13 @@ int ssl3_accept(SSL *s)
338 375
339 case SSL3_ST_SW_KEY_EXCH_A: 376 case SSL3_ST_SW_KEY_EXCH_A:
340 case SSL3_ST_SW_KEY_EXCH_B: 377 case SSL3_ST_SW_KEY_EXCH_B:
341 l=s->s3->tmp.new_cipher->algorithms; 378 alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
342 379
343 /* clear this, it may get reset by 380 /* clear this, it may get reset by
344 * send_server_key_exchange */ 381 * send_server_key_exchange */
345 if ((s->options & SSL_OP_EPHEMERAL_RSA) 382 if ((s->options & SSL_OP_EPHEMERAL_RSA)
346#ifndef OPENSSL_NO_KRB5 383#ifndef OPENSSL_NO_KRB5
347 && !(l & SSL_KRB5) 384 && !(alg_k & SSL_kKRB5)
348#endif /* OPENSSL_NO_KRB5 */ 385#endif /* OPENSSL_NO_KRB5 */
349 ) 386 )
350 /* option SSL_OP_EPHEMERAL_RSA sends temporary RSA key 387 /* option SSL_OP_EPHEMERAL_RSA sends temporary RSA key
@@ -359,16 +396,23 @@ int ssl3_accept(SSL *s)
359 /* only send if a DH key exchange, fortezza or 396 /* only send if a DH key exchange, fortezza or
360 * RSA but we have a sign only certificate 397 * RSA but we have a sign only certificate
361 * 398 *
399 * PSK: may send PSK identity hints
400 *
362 * For ECC ciphersuites, we send a serverKeyExchange 401 * For ECC ciphersuites, we send a serverKeyExchange
363 * message only if the cipher suite is either 402 * message only if the cipher suite is either
364 * ECDH-anon or ECDHE. In other cases, the 403 * ECDH-anon or ECDHE. In other cases, the
365 * server certificate contains the server's 404 * server certificate contains the server's
366 * public key for key exchange. 405 * public key for key exchange.
367 */ 406 */
368 if (s->s3->tmp.use_rsa_tmp 407 if (s->s3->tmp.use_rsa_tmp
369 || (l & SSL_kECDHE) 408 /* PSK: send ServerKeyExchange if PSK identity
370 || (l & (SSL_DH|SSL_kFZA)) 409 * hint if provided */
371 || ((l & SSL_kRSA) 410#ifndef OPENSSL_NO_PSK
411 || ((alg_k & SSL_kPSK) && s->ctx->psk_identity_hint)
412#endif
413 || (alg_k & (SSL_kDHr|SSL_kDHd|SSL_kEDH))
414 || (alg_k & SSL_kEECDH)
415 || ((alg_k & SSL_kRSA)
372 && (s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL 416 && (s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey == NULL
373 || (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher) 417 || (SSL_C_IS_EXPORT(s->s3->tmp.new_cipher)
374 && EVP_PKEY_size(s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey)*8 > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher) 418 && EVP_PKEY_size(s->cert->pkeys[SSL_PKEY_RSA_ENC].privatekey)*8 > SSL_C_EXPORT_PKEYLENGTH(s->s3->tmp.new_cipher)
@@ -398,12 +442,15 @@ int ssl3_accept(SSL *s)
398 /* never request cert in anonymous ciphersuites 442 /* never request cert in anonymous ciphersuites
399 * (see section "Certificate request" in SSL 3 drafts 443 * (see section "Certificate request" in SSL 3 drafts
400 * and in RFC 2246): */ 444 * and in RFC 2246): */
401 ((s->s3->tmp.new_cipher->algorithms & SSL_aNULL) && 445 ((s->s3->tmp.new_cipher->algorithm_auth & SSL_aNULL) &&
402 /* ... except when the application insists on verification 446 /* ... except when the application insists on verification
403 * (against the specs, but s3_clnt.c accepts this for SSL 3) */ 447 * (against the specs, but s3_clnt.c accepts this for SSL 3) */
404 !(s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) || 448 !(s->verify_mode & SSL_VERIFY_FAIL_IF_NO_PEER_CERT)) ||
405 /* never request cert in Kerberos ciphersuites */ 449 /* never request cert in Kerberos ciphersuites */
406 (s->s3->tmp.new_cipher->algorithms & SSL_aKRB5)) 450 (s->s3->tmp.new_cipher->algorithm_auth & SSL_aKRB5)
451 /* With normal PSK Certificates and
452 * Certificate Requests are omitted */
453 || (s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK))
407 { 454 {
408 /* no cert request */ 455 /* no cert request */
409 skip=1; 456 skip=1;
@@ -435,15 +482,24 @@ int ssl3_accept(SSL *s)
435 break; 482 break;
436 483
437 case SSL3_ST_SW_FLUSH: 484 case SSL3_ST_SW_FLUSH:
438 /* number of bytes to be flushed */ 485
439 num1=BIO_ctrl(s->wbio,BIO_CTRL_INFO,0,NULL); 486 /* This code originally checked to see if
440 if (num1 > 0) 487 * any data was pending using BIO_CTRL_INFO
488 * and then flushed. This caused problems
489 * as documented in PR#1939. The proposed
490 * fix doesn't completely resolve this issue
491 * as buggy implementations of BIO_CTRL_PENDING
492 * still exist. So instead we just flush
493 * unconditionally.
494 */
495
496 s->rwstate=SSL_WRITING;
497 if (BIO_flush(s->wbio) <= 0)
441 { 498 {
442 s->rwstate=SSL_WRITING; 499 ret= -1;
443 num1=BIO_flush(s->wbio); 500 goto end;
444 if (num1 <= 0) { ret= -1; goto end; }
445 s->rwstate=SSL_NOTHING;
446 } 501 }
502 s->rwstate=SSL_NOTHING;
447 503
448 s->state=s->s3->tmp.next_state; 504 s->state=s->s3->tmp.next_state;
449 break; 505 break;
@@ -470,7 +526,7 @@ int ssl3_accept(SSL *s)
470 case SSL3_ST_SR_KEY_EXCH_A: 526 case SSL3_ST_SR_KEY_EXCH_A:
471 case SSL3_ST_SR_KEY_EXCH_B: 527 case SSL3_ST_SR_KEY_EXCH_B:
472 ret=ssl3_get_client_key_exchange(s); 528 ret=ssl3_get_client_key_exchange(s);
473 if (ret <= 0) 529 if (ret <= 0)
474 goto end; 530 goto end;
475 if (ret == 2) 531 if (ret == 2)
476 { 532 {
@@ -478,24 +534,43 @@ int ssl3_accept(SSL *s)
478 * the client sends its ECDH pub key in 534 * the client sends its ECDH pub key in
479 * a certificate, the CertificateVerify 535 * a certificate, the CertificateVerify
480 * message is not sent. 536 * message is not sent.
537 * Also for GOST ciphersuites when
538 * the client uses its key from the certificate
539 * for key exchange.
481 */ 540 */
482 s->state=SSL3_ST_SR_FINISHED_A; 541 s->state=SSL3_ST_SR_FINISHED_A;
483 s->init_num = 0; 542 s->init_num = 0;
484 } 543 }
485 else 544 else
486 { 545 {
546 int offset=0;
547 int dgst_num;
548
487 s->state=SSL3_ST_SR_CERT_VRFY_A; 549 s->state=SSL3_ST_SR_CERT_VRFY_A;
488 s->init_num=0; 550 s->init_num=0;
489 551
490 /* We need to get hashes here so if there is 552 /* We need to get hashes here so if there is
491 * a client cert, it can be verified 553 * a client cert, it can be verified
492 */ 554 * FIXME - digest processing for CertificateVerify
493 s->method->ssl3_enc->cert_verify_mac(s, 555 * should be generalized. But it is next step
494 &(s->s3->finish_dgst1), 556 */
495 &(s->s3->tmp.cert_verify_md[0])); 557 if (s->s3->handshake_buffer)
496 s->method->ssl3_enc->cert_verify_mac(s, 558 if (!ssl3_digest_cached_records(s))
497 &(s->s3->finish_dgst2), 559 return -1;
498 &(s->s3->tmp.cert_verify_md[MD5_DIGEST_LENGTH])); 560 for (dgst_num=0; dgst_num<SSL_MAX_DIGEST;dgst_num++)
561 if (s->s3->handshake_dgst[dgst_num])
562 {
563 int dgst_size;
564
565 s->method->ssl3_enc->cert_verify_mac(s,EVP_MD_CTX_type(s->s3->handshake_dgst[dgst_num]),&(s->s3->tmp.cert_verify_md[offset]));
566 dgst_size=EVP_MD_CTX_size(s->s3->handshake_dgst[dgst_num]);
567 if (dgst_size < 0)
568 {
569 ret = -1;
570 goto end;
571 }
572 offset+=dgst_size;
573 }
499 } 574 }
500 break; 575 break;
501 576
@@ -515,11 +590,14 @@ int ssl3_accept(SSL *s)
515 ret=ssl3_get_finished(s,SSL3_ST_SR_FINISHED_A, 590 ret=ssl3_get_finished(s,SSL3_ST_SR_FINISHED_A,
516 SSL3_ST_SR_FINISHED_B); 591 SSL3_ST_SR_FINISHED_B);
517 if (ret <= 0) goto end; 592 if (ret <= 0) goto end;
518 if (s->hit)
519 s->state=SSL_ST_OK;
520#ifndef OPENSSL_NO_TLSEXT 593#ifndef OPENSSL_NO_TLSEXT
521 else if (s->tlsext_ticket_expected) 594 if (s->tlsext_ticket_expected)
522 s->state=SSL3_ST_SW_SESSION_TICKET_A; 595 s->state=SSL3_ST_SW_SESSION_TICKET_A;
596 else if (s->hit)
597 s->state=SSL_ST_OK;
598#else
599 if (s->hit)
600 s->state=SSL_ST_OK;
523#endif 601#endif
524 else 602 else
525 s->state=SSL3_ST_SW_CHANGE_A; 603 s->state=SSL3_ST_SW_CHANGE_A;
@@ -749,7 +827,7 @@ int ssl3_get_client_hello(SSL *s)
749 (s->version != DTLS1_VERSION && s->client_version < s->version)) 827 (s->version != DTLS1_VERSION && s->client_version < s->version))
750 { 828 {
751 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_WRONG_VERSION_NUMBER); 829 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_WRONG_VERSION_NUMBER);
752 if ((s->client_version>>8) == SSL3_VERSION_MAJOR) 830 if ((s->client_version>>8) == SSL3_VERSION_MAJOR)
753 { 831 {
754 /* similar to ssl3_get_record, send alert using remote version number */ 832 /* similar to ssl3_get_record, send alert using remote version number */
755 s->version = s->client_version; 833 s->version = s->client_version;
@@ -758,6 +836,21 @@ int ssl3_get_client_hello(SSL *s)
758 goto f_err; 836 goto f_err;
759 } 837 }
760 838
839 /* If we require cookies and this ClientHello doesn't
840 * contain one, just return since we do not want to
841 * allocate any memory yet. So check cookie length...
842 */
843 if (SSL_get_options(s) & SSL_OP_COOKIE_EXCHANGE)
844 {
845 unsigned int session_length, cookie_length;
846
847 session_length = *(p + SSL3_RANDOM_SIZE);
848 cookie_length = *(p + SSL3_RANDOM_SIZE + session_length + 1);
849
850 if (cookie_length == 0)
851 return 1;
852 }
853
761 /* load the client random */ 854 /* load the client random */
762 memcpy(s->s3->client_random,p,SSL3_RANDOM_SIZE); 855 memcpy(s->s3->client_random,p,SSL3_RANDOM_SIZE);
763 p+=SSL3_RANDOM_SIZE; 856 p+=SSL3_RANDOM_SIZE;
@@ -797,23 +890,11 @@ int ssl3_get_client_hello(SSL *s)
797 890
798 p+=j; 891 p+=j;
799 892
800 if (s->version == DTLS1_VERSION) 893 if (s->version == DTLS1_VERSION || s->version == DTLS1_BAD_VER)
801 { 894 {
802 /* cookie stuff */ 895 /* cookie stuff */
803 cookie_len = *(p++); 896 cookie_len = *(p++);
804 897
805 if ( (SSL_get_options(s) & SSL_OP_COOKIE_EXCHANGE) &&
806 s->d1->send_cookie == 0)
807 {
808 /* HelloVerifyMessage has already been sent */
809 if ( cookie_len != s->d1->cookie_len)
810 {
811 al = SSL_AD_HANDSHAKE_FAILURE;
812 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, SSL_R_COOKIE_MISMATCH);
813 goto f_err;
814 }
815 }
816
817 /* 898 /*
818 * The ClientHello may contain a cookie even if the 899 * The ClientHello may contain a cookie even if the
819 * HelloVerify message has not been sent--make sure that it 900 * HelloVerify message has not been sent--make sure that it
@@ -828,7 +909,7 @@ int ssl3_get_client_hello(SSL *s)
828 } 909 }
829 910
830 /* verify the cookie if appropriate option is set. */ 911 /* verify the cookie if appropriate option is set. */
831 if ( (SSL_get_options(s) & SSL_OP_COOKIE_EXCHANGE) && 912 if ((SSL_get_options(s) & SSL_OP_COOKIE_EXCHANGE) &&
832 cookie_len > 0) 913 cookie_len > 0)
833 { 914 {
834 memcpy(s->d1->rcvd_cookie, p, cookie_len); 915 memcpy(s->d1->rcvd_cookie, p, cookie_len);
@@ -853,6 +934,8 @@ int ssl3_get_client_hello(SSL *s)
853 SSL_R_COOKIE_MISMATCH); 934 SSL_R_COOKIE_MISMATCH);
854 goto f_err; 935 goto f_err;
855 } 936 }
937
938 ret = 2;
856 } 939 }
857 940
858 p += cookie_len; 941 p += cookie_len;
@@ -952,7 +1035,7 @@ int ssl3_get_client_hello(SSL *s)
952 1035
953#ifndef OPENSSL_NO_TLSEXT 1036#ifndef OPENSSL_NO_TLSEXT
954 /* TLS extensions*/ 1037 /* TLS extensions*/
955 if (s->version > SSL3_VERSION) 1038 if (s->version >= SSL3_VERSION)
956 { 1039 {
957 if (!ssl_parse_clienthello_tlsext(s,&p,d,n, &al)) 1040 if (!ssl_parse_clienthello_tlsext(s,&p,d,n, &al))
958 { 1041 {
@@ -965,13 +1048,110 @@ int ssl3_get_client_hello(SSL *s)
965 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_CLIENTHELLO_TLSEXT); 1048 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_CLIENTHELLO_TLSEXT);
966 goto err; 1049 goto err;
967 } 1050 }
1051
1052 /* Check if we want to use external pre-shared secret for this
1053 * handshake for not reused session only. We need to generate
1054 * server_random before calling tls_session_secret_cb in order to allow
1055 * SessionTicket processing to use it in key derivation. */
1056 {
1057 unsigned long Time;
1058 unsigned char *pos;
1059 Time=(unsigned long)time(NULL); /* Time */
1060 pos=s->s3->server_random;
1061 l2n(Time,pos);
1062 if (RAND_pseudo_bytes(pos,SSL3_RANDOM_SIZE-4) <= 0)
1063 {
1064 al=SSL_AD_INTERNAL_ERROR;
1065 goto f_err;
1066 }
1067 }
1068
1069 if (!s->hit && s->version >= TLS1_VERSION && s->tls_session_secret_cb)
1070 {
1071 SSL_CIPHER *pref_cipher=NULL;
1072
1073 s->session->master_key_length=sizeof(s->session->master_key);
1074 if(s->tls_session_secret_cb(s, s->session->master_key, &s->session->master_key_length,
1075 ciphers, &pref_cipher, s->tls_session_secret_cb_arg))
1076 {
1077 s->hit=1;
1078 s->session->ciphers=ciphers;
1079 s->session->verify_result=X509_V_OK;
1080
1081 ciphers=NULL;
1082
1083 /* check if some cipher was preferred by call back */
1084 pref_cipher=pref_cipher ? pref_cipher : ssl3_choose_cipher(s, s->session->ciphers, SSL_get_ciphers(s));
1085 if (pref_cipher == NULL)
1086 {
1087 al=SSL_AD_HANDSHAKE_FAILURE;
1088 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_NO_SHARED_CIPHER);
1089 goto f_err;
1090 }
1091
1092 s->session->cipher=pref_cipher;
1093
1094 if (s->cipher_list)
1095 sk_SSL_CIPHER_free(s->cipher_list);
1096
1097 if (s->cipher_list_by_id)
1098 sk_SSL_CIPHER_free(s->cipher_list_by_id);
1099
1100 s->cipher_list = sk_SSL_CIPHER_dup(s->session->ciphers);
1101 s->cipher_list_by_id = sk_SSL_CIPHER_dup(s->session->ciphers);
1102 }
1103 }
968#endif 1104#endif
1105
969 /* Worst case, we will use the NULL compression, but if we have other 1106 /* Worst case, we will use the NULL compression, but if we have other
970 * options, we will now look for them. We have i-1 compression 1107 * options, we will now look for them. We have i-1 compression
971 * algorithms from the client, starting at q. */ 1108 * algorithms from the client, starting at q. */
972 s->s3->tmp.new_compression=NULL; 1109 s->s3->tmp.new_compression=NULL;
973#ifndef OPENSSL_NO_COMP 1110#ifndef OPENSSL_NO_COMP
974 if (s->ctx->comp_methods != NULL) 1111 /* This only happens if we have a cache hit */
1112 if (s->session->compress_meth != 0)
1113 {
1114 int m, comp_id = s->session->compress_meth;
1115 /* Perform sanity checks on resumed compression algorithm */
1116 /* Can't disable compression */
1117 if (s->options & SSL_OP_NO_COMPRESSION)
1118 {
1119 al=SSL_AD_INTERNAL_ERROR;
1120 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_INCONSISTENT_COMPRESSION);
1121 goto f_err;
1122 }
1123 /* Look for resumed compression method */
1124 for (m = 0; m < sk_SSL_COMP_num(s->ctx->comp_methods); m++)
1125 {
1126 comp=sk_SSL_COMP_value(s->ctx->comp_methods,m);
1127 if (comp_id == comp->id)
1128 {
1129 s->s3->tmp.new_compression=comp;
1130 break;
1131 }
1132 }
1133 if (s->s3->tmp.new_compression == NULL)
1134 {
1135 al=SSL_AD_INTERNAL_ERROR;
1136 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_INVALID_COMPRESSION_ALGORITHM);
1137 goto f_err;
1138 }
1139 /* Look for resumed method in compression list */
1140 for (m = 0; m < i; m++)
1141 {
1142 if (q[m] == comp_id)
1143 break;
1144 }
1145 if (m >= i)
1146 {
1147 al=SSL_AD_ILLEGAL_PARAMETER;
1148 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_REQUIRED_COMPRESSSION_ALGORITHM_MISSING);
1149 goto f_err;
1150 }
1151 }
1152 else if (s->hit)
1153 comp = NULL;
1154 else if (!(s->options & SSL_OP_NO_COMPRESSION) && s->ctx->comp_methods)
975 { /* See if we have a match */ 1155 { /* See if we have a match */
976 int m,nn,o,v,done=0; 1156 int m,nn,o,v,done=0;
977 1157
@@ -995,22 +1175,15 @@ int ssl3_get_client_hello(SSL *s)
995 else 1175 else
996 comp=NULL; 1176 comp=NULL;
997 } 1177 }
998#endif 1178#else
999 1179 /* If compression is disabled we'd better not try to resume a session
1000 /* TLS does not mind if there is extra stuff */ 1180 * using compression.
1001#if 0 /* SSL 3.0 does not mind either, so we should disable this test 1181 */
1002 * (was enabled in 0.9.6d through 0.9.6j and 0.9.7 through 0.9.7b, 1182 if (s->session->compress_meth != 0)
1003 * in earlier SSLeay/OpenSSL releases this test existed but was buggy) */
1004 if (s->version == SSL3_VERSION)
1005 { 1183 {
1006 if (p < (d+n)) 1184 al=SSL_AD_INTERNAL_ERROR;
1007 { 1185 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_INCONSISTENT_COMPRESSION);
1008 /* wrong number of bytes, 1186 goto f_err;
1009 * there could be more to follow */
1010 al=SSL_AD_DECODE_ERROR;
1011 SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO,SSL_R_LENGTH_MISMATCH);
1012 goto f_err;
1013 }
1014 } 1187 }
1015#endif 1188#endif
1016 1189
@@ -1059,7 +1232,7 @@ int ssl3_get_client_hello(SSL *s)
1059 for (i=0; i<sk_SSL_CIPHER_num(sk); i++) 1232 for (i=0; i<sk_SSL_CIPHER_num(sk); i++)
1060 { 1233 {
1061 c=sk_SSL_CIPHER_value(sk,i); 1234 c=sk_SSL_CIPHER_value(sk,i);
1062 if (c->algorithms & SSL_eNULL) 1235 if (c->algorithm_enc & SSL_eNULL)
1063 nc=c; 1236 nc=c;
1064 if (SSL_C_IS_EXPORT(c)) 1237 if (SSL_C_IS_EXPORT(c))
1065 ec=c; 1238 ec=c;
@@ -1075,6 +1248,9 @@ int ssl3_get_client_hello(SSL *s)
1075#endif 1248#endif
1076 s->s3->tmp.new_cipher=s->session->cipher; 1249 s->s3->tmp.new_cipher=s->session->cipher;
1077 } 1250 }
1251
1252 if (!ssl3_digest_cached_records(s))
1253 goto f_err;
1078 1254
1079 /* we now have the following setup. 1255 /* we now have the following setup.
1080 * client_random 1256 * client_random
@@ -1087,7 +1263,7 @@ int ssl3_get_client_hello(SSL *s)
1087 * s->tmp.new_cipher - the new cipher to use. 1263 * s->tmp.new_cipher - the new cipher to use.
1088 */ 1264 */
1089 1265
1090 ret=1; 1266 if (ret < 0) ret=1;
1091 if (0) 1267 if (0)
1092 { 1268 {
1093f_err: 1269f_err:
@@ -1103,16 +1279,22 @@ int ssl3_send_server_hello(SSL *s)
1103 unsigned char *buf; 1279 unsigned char *buf;
1104 unsigned char *p,*d; 1280 unsigned char *p,*d;
1105 int i,sl; 1281 int i,sl;
1106 unsigned long l,Time; 1282 unsigned long l;
1283#ifdef OPENSSL_NO_TLSEXT
1284 unsigned long Time;
1285#endif
1107 1286
1108 if (s->state == SSL3_ST_SW_SRVR_HELLO_A) 1287 if (s->state == SSL3_ST_SW_SRVR_HELLO_A)
1109 { 1288 {
1110 buf=(unsigned char *)s->init_buf->data; 1289 buf=(unsigned char *)s->init_buf->data;
1290#ifdef OPENSSL_NO_TLSEXT
1111 p=s->s3->server_random; 1291 p=s->s3->server_random;
1292 /* Generate server_random if it was not needed previously */
1112 Time=(unsigned long)time(NULL); /* Time */ 1293 Time=(unsigned long)time(NULL); /* Time */
1113 l2n(Time,p); 1294 l2n(Time,p);
1114 if (RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-4) <= 0) 1295 if (RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE-4) <= 0)
1115 return -1; 1296 return -1;
1297#endif
1116 /* Do the message type and length last */ 1298 /* Do the message type and length last */
1117 d=p= &(buf[4]); 1299 d=p= &(buf[4]);
1118 1300
@@ -1166,6 +1348,11 @@ int ssl3_send_server_hello(SSL *s)
1166 *(p++)=s->s3->tmp.new_compression->id; 1348 *(p++)=s->s3->tmp.new_compression->id;
1167#endif 1349#endif
1168#ifndef OPENSSL_NO_TLSEXT 1350#ifndef OPENSSL_NO_TLSEXT
1351 if (ssl_prepare_serverhello_tlsext(s) <= 0)
1352 {
1353 SSLerr(SSL_F_SSL3_SEND_SERVER_HELLO,SSL_R_SERVERHELLO_TLSEXT);
1354 return -1;
1355 }
1169 if ((p = ssl_add_serverhello_tlsext(s, p, buf+SSL3_RT_MAX_PLAIN_LENGTH)) == NULL) 1356 if ((p = ssl_add_serverhello_tlsext(s, p, buf+SSL3_RT_MAX_PLAIN_LENGTH)) == NULL)
1170 { 1357 {
1171 SSLerr(SSL_F_SSL3_SEND_SERVER_HELLO,ERR_R_INTERNAL_ERROR); 1358 SSLerr(SSL_F_SSL3_SEND_SERVER_HELLO,ERR_R_INTERNAL_ERROR);
@@ -1245,7 +1432,7 @@ int ssl3_send_server_key_exchange(SSL *s)
1245 EVP_MD_CTX_init(&md_ctx); 1432 EVP_MD_CTX_init(&md_ctx);
1246 if (s->state == SSL3_ST_SW_KEY_EXCH_A) 1433 if (s->state == SSL3_ST_SW_KEY_EXCH_A)
1247 { 1434 {
1248 type=s->s3->tmp.new_cipher->algorithms & SSL_MKEY_MASK; 1435 type=s->s3->tmp.new_cipher->algorithm_mkey;
1249 cert=s->cert; 1436 cert=s->cert;
1250 1437
1251 buf=s->init_buf; 1438 buf=s->init_buf;
@@ -1340,7 +1527,7 @@ int ssl3_send_server_key_exchange(SSL *s)
1340 else 1527 else
1341#endif 1528#endif
1342#ifndef OPENSSL_NO_ECDH 1529#ifndef OPENSSL_NO_ECDH
1343 if (type & SSL_kECDHE) 1530 if (type & SSL_kEECDH)
1344 { 1531 {
1345 const EC_GROUP *group; 1532 const EC_GROUP *group;
1346 1533
@@ -1410,7 +1597,7 @@ int ssl3_send_server_key_exchange(SSL *s)
1410 * supported named curves, curve_id is non-zero. 1597 * supported named curves, curve_id is non-zero.
1411 */ 1598 */
1412 if ((curve_id = 1599 if ((curve_id =
1413 nid2curve_id(EC_GROUP_get_curve_name(group))) 1600 tls1_ec_nid2curve_id(EC_GROUP_get_curve_name(group)))
1414 == 0) 1601 == 0)
1415 { 1602 {
1416 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,SSL_R_UNSUPPORTED_ELLIPTIC_CURVE); 1603 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,SSL_R_UNSUPPORTED_ELLIPTIC_CURVE);
@@ -1467,6 +1654,14 @@ int ssl3_send_server_key_exchange(SSL *s)
1467 } 1654 }
1468 else 1655 else
1469#endif /* !OPENSSL_NO_ECDH */ 1656#endif /* !OPENSSL_NO_ECDH */
1657#ifndef OPENSSL_NO_PSK
1658 if (type & SSL_kPSK)
1659 {
1660 /* reserve size for record length and PSK identity hint*/
1661 n+=2+strlen(s->ctx->psk_identity_hint);
1662 }
1663 else
1664#endif /* !OPENSSL_NO_PSK */
1470 { 1665 {
1471 al=SSL_AD_HANDSHAKE_FAILURE; 1666 al=SSL_AD_HANDSHAKE_FAILURE;
1472 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE); 1667 SSLerr(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE,SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE);
@@ -1478,7 +1673,8 @@ int ssl3_send_server_key_exchange(SSL *s)
1478 n+=2+nr[i]; 1673 n+=2+nr[i];
1479 } 1674 }
1480 1675
1481 if (!(s->s3->tmp.new_cipher->algorithms & SSL_aNULL)) 1676 if (!(s->s3->tmp.new_cipher->algorithm_auth & SSL_aNULL)
1677 && !(s->s3->tmp.new_cipher->algorithm_mkey & SSL_kPSK))
1482 { 1678 {
1483 if ((pkey=ssl_get_sign_pkey(s,s->s3->tmp.new_cipher)) 1679 if ((pkey=ssl_get_sign_pkey(s,s->s3->tmp.new_cipher))
1484 == NULL) 1680 == NULL)
@@ -1510,7 +1706,7 @@ int ssl3_send_server_key_exchange(SSL *s)
1510 } 1706 }
1511 1707
1512#ifndef OPENSSL_NO_ECDH 1708#ifndef OPENSSL_NO_ECDH
1513 if (type & SSL_kECDHE) 1709 if (type & SSL_kEECDH)
1514 { 1710 {
1515 /* XXX: For now, we only support named (not generic) curves. 1711 /* XXX: For now, we only support named (not generic) curves.
1516 * In this situation, the serverKeyExchange message has: 1712 * In this situation, the serverKeyExchange message has:
@@ -1534,6 +1730,16 @@ int ssl3_send_server_key_exchange(SSL *s)
1534 } 1730 }
1535#endif 1731#endif
1536 1732
1733#ifndef OPENSSL_NO_PSK
1734 if (type & SSL_kPSK)
1735 {
1736 /* copy PSK identity hint */
1737 s2n(strlen(s->ctx->psk_identity_hint), p);
1738 strncpy((char *)p, s->ctx->psk_identity_hint, strlen(s->ctx->psk_identity_hint));
1739 p+=strlen(s->ctx->psk_identity_hint);
1740 }
1741#endif
1742
1537 /* not anonymous */ 1743 /* not anonymous */
1538 if (pkey != NULL) 1744 if (pkey != NULL)
1539 { 1745 {
@@ -1546,8 +1752,6 @@ int ssl3_send_server_key_exchange(SSL *s)
1546 j=0; 1752 j=0;
1547 for (num=2; num > 0; num--) 1753 for (num=2; num > 0; num--)
1548 { 1754 {
1549 EVP_MD_CTX_set_flags(&md_ctx,
1550 EVP_MD_CTX_FLAG_NON_FIPS_ALLOW);
1551 EVP_DigestInit_ex(&md_ctx,(num == 2) 1755 EVP_DigestInit_ex(&md_ctx,(num == 2)
1552 ?s->ctx->md5:s->ctx->sha1, NULL); 1756 ?s->ctx->md5:s->ctx->sha1, NULL);
1553 EVP_DigestUpdate(&md_ctx,&(s->s3->client_random[0]),SSL3_RANDOM_SIZE); 1757 EVP_DigestUpdate(&md_ctx,&(s->s3->client_random[0]),SSL3_RANDOM_SIZE);
@@ -1731,7 +1935,7 @@ int ssl3_get_client_key_exchange(SSL *s)
1731 { 1935 {
1732 int i,al,ok; 1936 int i,al,ok;
1733 long n; 1937 long n;
1734 unsigned long l; 1938 unsigned long alg_k;
1735 unsigned char *p; 1939 unsigned char *p;
1736#ifndef OPENSSL_NO_RSA 1940#ifndef OPENSSL_NO_RSA
1737 RSA *rsa=NULL; 1941 RSA *rsa=NULL;
@@ -1742,7 +1946,7 @@ int ssl3_get_client_key_exchange(SSL *s)
1742 DH *dh_srvr; 1946 DH *dh_srvr;
1743#endif 1947#endif
1744#ifndef OPENSSL_NO_KRB5 1948#ifndef OPENSSL_NO_KRB5
1745 KSSL_ERR kssl_err; 1949 KSSL_ERR kssl_err;
1746#endif /* OPENSSL_NO_KRB5 */ 1950#endif /* OPENSSL_NO_KRB5 */
1747 1951
1748#ifndef OPENSSL_NO_ECDH 1952#ifndef OPENSSL_NO_ECDH
@@ -1762,10 +1966,10 @@ int ssl3_get_client_key_exchange(SSL *s)
1762 if (!ok) return((int)n); 1966 if (!ok) return((int)n);
1763 p=(unsigned char *)s->init_msg; 1967 p=(unsigned char *)s->init_msg;
1764 1968
1765 l=s->s3->tmp.new_cipher->algorithms; 1969 alg_k=s->s3->tmp.new_cipher->algorithm_mkey;
1766 1970
1767#ifndef OPENSSL_NO_RSA 1971#ifndef OPENSSL_NO_RSA
1768 if (l & SSL_kRSA) 1972 if (alg_k & SSL_kRSA)
1769 { 1973 {
1770 /* FIX THIS UP EAY EAY EAY EAY */ 1974 /* FIX THIS UP EAY EAY EAY EAY */
1771 if (s->s3->tmp.use_rsa_tmp) 1975 if (s->s3->tmp.use_rsa_tmp)
@@ -1796,9 +2000,8 @@ int ssl3_get_client_key_exchange(SSL *s)
1796 rsa=pkey->pkey.rsa; 2000 rsa=pkey->pkey.rsa;
1797 } 2001 }
1798 2002
1799 /* TLS and [incidentally] DTLS, including pre-0.9.8f */ 2003 /* TLS and [incidentally] DTLS{0xFEFF} */
1800 if (s->version > SSL3_VERSION && 2004 if (s->version > SSL3_VERSION && s->version != DTLS1_BAD_VER)
1801 s->client_version != DTLS1_BAD_VER)
1802 { 2005 {
1803 n2s(p,i); 2006 n2s(p,i);
1804 if (n != i+2) 2007 if (n != i+2)
@@ -1872,7 +2075,7 @@ int ssl3_get_client_key_exchange(SSL *s)
1872 else 2075 else
1873#endif 2076#endif
1874#ifndef OPENSSL_NO_DH 2077#ifndef OPENSSL_NO_DH
1875 if (l & (SSL_kEDH|SSL_kDHr|SSL_kDHd)) 2078 if (alg_k & (SSL_kEDH|SSL_kDHr|SSL_kDHd))
1876 { 2079 {
1877 n2s(p,i); 2080 n2s(p,i);
1878 if (n != i+2) 2081 if (n != i+2)
@@ -1935,30 +2138,30 @@ int ssl3_get_client_key_exchange(SSL *s)
1935 else 2138 else
1936#endif 2139#endif
1937#ifndef OPENSSL_NO_KRB5 2140#ifndef OPENSSL_NO_KRB5
1938 if (l & SSL_kKRB5) 2141 if (alg_k & SSL_kKRB5)
1939 { 2142 {
1940 krb5_error_code krb5rc; 2143 krb5_error_code krb5rc;
1941 krb5_data enc_ticket; 2144 krb5_data enc_ticket;
1942 krb5_data authenticator; 2145 krb5_data authenticator;
1943 krb5_data enc_pms; 2146 krb5_data enc_pms;
1944 KSSL_CTX *kssl_ctx = s->kssl_ctx; 2147 KSSL_CTX *kssl_ctx = s->kssl_ctx;
1945 EVP_CIPHER_CTX ciph_ctx; 2148 EVP_CIPHER_CTX ciph_ctx;
1946 EVP_CIPHER *enc = NULL; 2149 const EVP_CIPHER *enc = NULL;
1947 unsigned char iv[EVP_MAX_IV_LENGTH]; 2150 unsigned char iv[EVP_MAX_IV_LENGTH];
1948 unsigned char pms[SSL_MAX_MASTER_KEY_LENGTH 2151 unsigned char pms[SSL_MAX_MASTER_KEY_LENGTH
1949 + EVP_MAX_BLOCK_LENGTH]; 2152 + EVP_MAX_BLOCK_LENGTH];
1950 int padl, outl; 2153 int padl, outl;
1951 krb5_timestamp authtime = 0; 2154 krb5_timestamp authtime = 0;
1952 krb5_ticket_times ttimes; 2155 krb5_ticket_times ttimes;
1953 2156
1954 EVP_CIPHER_CTX_init(&ciph_ctx); 2157 EVP_CIPHER_CTX_init(&ciph_ctx);
1955 2158
1956 if (!kssl_ctx) kssl_ctx = kssl_ctx_new(); 2159 if (!kssl_ctx) kssl_ctx = kssl_ctx_new();
1957 2160
1958 n2s(p,i); 2161 n2s(p,i);
1959 enc_ticket.length = i; 2162 enc_ticket.length = i;
1960 2163
1961 if (n < (int)enc_ticket.length + 6) 2164 if (n < (long)(enc_ticket.length + 6))
1962 { 2165 {
1963 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, 2166 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1964 SSL_R_DATA_LENGTH_TOO_LONG); 2167 SSL_R_DATA_LENGTH_TOO_LONG);
@@ -1971,7 +2174,7 @@ int ssl3_get_client_key_exchange(SSL *s)
1971 n2s(p,i); 2174 n2s(p,i);
1972 authenticator.length = i; 2175 authenticator.length = i;
1973 2176
1974 if (n < (int)(enc_ticket.length + authenticator.length) + 6) 2177 if (n < (long)(enc_ticket.length + authenticator.length + 6))
1975 { 2178 {
1976 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, 2179 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
1977 SSL_R_DATA_LENGTH_TOO_LONG); 2180 SSL_R_DATA_LENGTH_TOO_LONG);
@@ -2004,19 +2207,19 @@ int ssl3_get_client_key_exchange(SSL *s)
2004 goto err; 2207 goto err;
2005 } 2208 }
2006 2209
2007 if ((krb5rc = kssl_sget_tkt(kssl_ctx, &enc_ticket, &ttimes, 2210 if ((krb5rc = kssl_sget_tkt(kssl_ctx, &enc_ticket, &ttimes,
2008 &kssl_err)) != 0) 2211 &kssl_err)) != 0)
2009 { 2212 {
2010#ifdef KSSL_DEBUG 2213#ifdef KSSL_DEBUG
2011 printf("kssl_sget_tkt rtn %d [%d]\n", 2214 printf("kssl_sget_tkt rtn %d [%d]\n",
2012 krb5rc, kssl_err.reason); 2215 krb5rc, kssl_err.reason);
2013 if (kssl_err.text) 2216 if (kssl_err.text)
2014 printf("kssl_err text= %s\n", kssl_err.text); 2217 printf("kssl_err text= %s\n", kssl_err.text);
2015#endif /* KSSL_DEBUG */ 2218#endif /* KSSL_DEBUG */
2016 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, 2219 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2017 kssl_err.reason); 2220 kssl_err.reason);
2018 goto err; 2221 goto err;
2019 } 2222 }
2020 2223
2021 /* Note: no authenticator is not considered an error, 2224 /* Note: no authenticator is not considered an error,
2022 ** but will return authtime == 0. 2225 ** but will return authtime == 0.
@@ -2025,29 +2228,29 @@ int ssl3_get_client_key_exchange(SSL *s)
2025 &authtime, &kssl_err)) != 0) 2228 &authtime, &kssl_err)) != 0)
2026 { 2229 {
2027#ifdef KSSL_DEBUG 2230#ifdef KSSL_DEBUG
2028 printf("kssl_check_authent rtn %d [%d]\n", 2231 printf("kssl_check_authent rtn %d [%d]\n",
2029 krb5rc, kssl_err.reason); 2232 krb5rc, kssl_err.reason);
2030 if (kssl_err.text) 2233 if (kssl_err.text)
2031 printf("kssl_err text= %s\n", kssl_err.text); 2234 printf("kssl_err text= %s\n", kssl_err.text);
2032#endif /* KSSL_DEBUG */ 2235#endif /* KSSL_DEBUG */
2033 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, 2236 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2034 kssl_err.reason); 2237 kssl_err.reason);
2035 goto err; 2238 goto err;
2036 } 2239 }
2037 2240
2038 if ((krb5rc = kssl_validate_times(authtime, &ttimes)) != 0) 2241 if ((krb5rc = kssl_validate_times(authtime, &ttimes)) != 0)
2039 { 2242 {
2040 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, krb5rc); 2243 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, krb5rc);
2041 goto err; 2244 goto err;
2042 } 2245 }
2043 2246
2044#ifdef KSSL_DEBUG 2247#ifdef KSSL_DEBUG
2045 kssl_ctx_show(kssl_ctx); 2248 kssl_ctx_show(kssl_ctx);
2046#endif /* KSSL_DEBUG */ 2249#endif /* KSSL_DEBUG */
2047 2250
2048 enc = kssl_map_enc(kssl_ctx->enctype); 2251 enc = kssl_map_enc(kssl_ctx->enctype);
2049 if (enc == NULL) 2252 if (enc == NULL)
2050 goto err; 2253 goto err;
2051 2254
2052 memset(iv, 0, sizeof iv); /* per RFC 1510 */ 2255 memset(iv, 0, sizeof iv); /* per RFC 1510 */
2053 2256
@@ -2094,7 +2297,7 @@ int ssl3_get_client_key_exchange(SSL *s)
2094 * (Perhaps we should have a separate BUG value for the Kerberos cipher) 2297 * (Perhaps we should have a separate BUG value for the Kerberos cipher)
2095 */ 2298 */
2096 if (!(s->options & SSL_OP_TLS_ROLLBACK_BUG)) 2299 if (!(s->options & SSL_OP_TLS_ROLLBACK_BUG))
2097 { 2300 {
2098 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, 2301 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2099 SSL_AD_DECODE_ERROR); 2302 SSL_AD_DECODE_ERROR);
2100 goto err; 2303 goto err;
@@ -2103,32 +2306,32 @@ int ssl3_get_client_key_exchange(SSL *s)
2103 2306
2104 EVP_CIPHER_CTX_cleanup(&ciph_ctx); 2307 EVP_CIPHER_CTX_cleanup(&ciph_ctx);
2105 2308
2106 s->session->master_key_length= 2309 s->session->master_key_length=
2107 s->method->ssl3_enc->generate_master_secret(s, 2310 s->method->ssl3_enc->generate_master_secret(s,
2108 s->session->master_key, pms, outl); 2311 s->session->master_key, pms, outl);
2109 2312
2110 if (kssl_ctx->client_princ) 2313 if (kssl_ctx->client_princ)
2111 { 2314 {
2112 size_t len = strlen(kssl_ctx->client_princ); 2315 size_t len = strlen(kssl_ctx->client_princ);
2113 if ( len < SSL_MAX_KRB5_PRINCIPAL_LENGTH ) 2316 if ( len < SSL_MAX_KRB5_PRINCIPAL_LENGTH )
2114 { 2317 {
2115 s->session->krb5_client_princ_len = len; 2318 s->session->krb5_client_princ_len = len;
2116 memcpy(s->session->krb5_client_princ,kssl_ctx->client_princ,len); 2319 memcpy(s->session->krb5_client_princ,kssl_ctx->client_princ,len);
2117 } 2320 }
2118 } 2321 }
2119 2322
2120 2323
2121 /* Was doing kssl_ctx_free() here, 2324 /* Was doing kssl_ctx_free() here,
2122 ** but it caused problems for apache. 2325 ** but it caused problems for apache.
2123 ** kssl_ctx = kssl_ctx_free(kssl_ctx); 2326 ** kssl_ctx = kssl_ctx_free(kssl_ctx);
2124 ** if (s->kssl_ctx) s->kssl_ctx = NULL; 2327 ** if (s->kssl_ctx) s->kssl_ctx = NULL;
2125 */ 2328 */
2126 } 2329 }
2127 else 2330 else
2128#endif /* OPENSSL_NO_KRB5 */ 2331#endif /* OPENSSL_NO_KRB5 */
2129 2332
2130#ifndef OPENSSL_NO_ECDH 2333#ifndef OPENSSL_NO_ECDH
2131 if ((l & SSL_kECDH) || (l & SSL_kECDHE)) 2334 if (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe))
2132 { 2335 {
2133 int ret = 1; 2336 int ret = 1;
2134 int field_size = 0; 2337 int field_size = 0;
@@ -2136,18 +2339,18 @@ int ssl3_get_client_key_exchange(SSL *s)
2136 const EC_GROUP *group; 2339 const EC_GROUP *group;
2137 const BIGNUM *priv_key; 2340 const BIGNUM *priv_key;
2138 2341
2139 /* initialize structures for server's ECDH key pair */ 2342 /* initialize structures for server's ECDH key pair */
2140 if ((srvr_ecdh = EC_KEY_new()) == NULL) 2343 if ((srvr_ecdh = EC_KEY_new()) == NULL)
2141 { 2344 {
2142 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, 2345 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2143 ERR_R_MALLOC_FAILURE); 2346 ERR_R_MALLOC_FAILURE);
2144 goto err; 2347 goto err;
2145 } 2348 }
2146 2349
2147 /* Let's get server private key and group information */ 2350 /* Let's get server private key and group information */
2148 if (l & SSL_kECDH) 2351 if (alg_k & (SSL_kECDHr|SSL_kECDHe))
2149 { 2352 {
2150 /* use the certificate */ 2353 /* use the certificate */
2151 tkey = s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec; 2354 tkey = s->cert->pkeys[SSL_PKEY_ECC].privatekey->pkey.ec;
2152 } 2355 }
2153 else 2356 else
@@ -2177,20 +2380,20 @@ int ssl3_get_client_key_exchange(SSL *s)
2177 goto err; 2380 goto err;
2178 } 2381 }
2179 2382
2180 if (n == 0L) 2383 if (n == 0L)
2181 { 2384 {
2182 /* Client Publickey was in Client Certificate */ 2385 /* Client Publickey was in Client Certificate */
2183 2386
2184 if (l & SSL_kECDHE) 2387 if (alg_k & SSL_kEECDH)
2185 { 2388 {
2186 al=SSL_AD_HANDSHAKE_FAILURE; 2389 al=SSL_AD_HANDSHAKE_FAILURE;
2187 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_MISSING_TMP_ECDH_KEY); 2390 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_MISSING_TMP_ECDH_KEY);
2188 goto f_err; 2391 goto f_err;
2189 } 2392 }
2190 if (((clnt_pub_pkey=X509_get_pubkey(s->session->peer)) 2393 if (((clnt_pub_pkey=X509_get_pubkey(s->session->peer))
2191 == NULL) || 2394 == NULL) ||
2192 (clnt_pub_pkey->type != EVP_PKEY_EC)) 2395 (clnt_pub_pkey->type != EVP_PKEY_EC))
2193 { 2396 {
2194 /* XXX: For now, we do not support client 2397 /* XXX: For now, we do not support client
2195 * authentication using ECDH certificates 2398 * authentication using ECDH certificates
2196 * so this branch (n == 0L) of the code is 2399 * so this branch (n == 0L) of the code is
@@ -2202,11 +2405,11 @@ int ssl3_get_client_key_exchange(SSL *s)
2202 * the two ECDH shares are for the same 2405 * the two ECDH shares are for the same
2203 * group. 2406 * group.
2204 */ 2407 */
2205 al=SSL_AD_HANDSHAKE_FAILURE; 2408 al=SSL_AD_HANDSHAKE_FAILURE;
2206 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, 2409 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2207 SSL_R_UNABLE_TO_DECODE_ECDH_CERTS); 2410 SSL_R_UNABLE_TO_DECODE_ECDH_CERTS);
2208 goto f_err; 2411 goto f_err;
2209 } 2412 }
2210 2413
2211 if (EC_POINT_copy(clnt_ecpoint, 2414 if (EC_POINT_copy(clnt_ecpoint,
2212 EC_KEY_get0_public_key(clnt_pub_pkey->pkey.ec)) == 0) 2415 EC_KEY_get0_public_key(clnt_pub_pkey->pkey.ec)) == 0)
@@ -2215,10 +2418,10 @@ int ssl3_get_client_key_exchange(SSL *s)
2215 ERR_R_EC_LIB); 2418 ERR_R_EC_LIB);
2216 goto err; 2419 goto err;
2217 } 2420 }
2218 ret = 2; /* Skip certificate verify processing */ 2421 ret = 2; /* Skip certificate verify processing */
2219 } 2422 }
2220 else 2423 else
2221 { 2424 {
2222 /* Get client's public key from encoded point 2425 /* Get client's public key from encoded point
2223 * in the ClientKeyExchange message. 2426 * in the ClientKeyExchange message.
2224 */ 2427 */
@@ -2229,21 +2432,21 @@ int ssl3_get_client_key_exchange(SSL *s)
2229 goto err; 2432 goto err;
2230 } 2433 }
2231 2434
2232 /* Get encoded point length */ 2435 /* Get encoded point length */
2233 i = *p; 2436 i = *p;
2234 p += 1; 2437 p += 1;
2235 if (EC_POINT_oct2point(group, 2438 if (EC_POINT_oct2point(group,
2236 clnt_ecpoint, p, i, bn_ctx) == 0) 2439 clnt_ecpoint, p, i, bn_ctx) == 0)
2237 { 2440 {
2238 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, 2441 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2239 ERR_R_EC_LIB); 2442 ERR_R_EC_LIB);
2240 goto err; 2443 goto err;
2241 } 2444 }
2242 /* p is pointing to somewhere in the buffer 2445 /* p is pointing to somewhere in the buffer
2243 * currently, so set it to the start 2446 * currently, so set it to the start
2244 */ 2447 */
2245 p=(unsigned char *)s->init_buf->data; 2448 p=(unsigned char *)s->init_buf->data;
2246 } 2449 }
2247 2450
2248 /* Compute the shared pre-master secret */ 2451 /* Compute the shared pre-master secret */
2249 field_size = EC_GROUP_get_degree(group); 2452 field_size = EC_GROUP_get_degree(group);
@@ -2254,28 +2457,190 @@ int ssl3_get_client_key_exchange(SSL *s)
2254 goto err; 2457 goto err;
2255 } 2458 }
2256 i = ECDH_compute_key(p, (field_size+7)/8, clnt_ecpoint, srvr_ecdh, NULL); 2459 i = ECDH_compute_key(p, (field_size+7)/8, clnt_ecpoint, srvr_ecdh, NULL);
2257 if (i <= 0) 2460 if (i <= 0)
2258 { 2461 {
2259 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, 2462 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2260 ERR_R_ECDH_LIB); 2463 ERR_R_ECDH_LIB);
2261 goto err; 2464 goto err;
2262 } 2465 }
2263 2466
2264 EVP_PKEY_free(clnt_pub_pkey); 2467 EVP_PKEY_free(clnt_pub_pkey);
2265 EC_POINT_free(clnt_ecpoint); 2468 EC_POINT_free(clnt_ecpoint);
2266 if (srvr_ecdh != NULL) 2469 EC_KEY_free(srvr_ecdh);
2267 EC_KEY_free(srvr_ecdh);
2268 BN_CTX_free(bn_ctx); 2470 BN_CTX_free(bn_ctx);
2471 EC_KEY_free(s->s3->tmp.ecdh);
2472 s->s3->tmp.ecdh = NULL;
2269 2473
2270 /* Compute the master secret */ 2474 /* Compute the master secret */
2271 s->session->master_key_length = s->method->ssl3_enc-> \ 2475 s->session->master_key_length = s->method->ssl3_enc-> \
2272 generate_master_secret(s, s->session->master_key, p, i); 2476 generate_master_secret(s, s->session->master_key, p, i);
2273 2477
2274 OPENSSL_cleanse(p, i); 2478 OPENSSL_cleanse(p, i);
2275 return (ret); 2479 return (ret);
2276 } 2480 }
2277 else 2481 else
2278#endif 2482#endif
2483#ifndef OPENSSL_NO_PSK
2484 if (alg_k & SSL_kPSK)
2485 {
2486 unsigned char *t = NULL;
2487 unsigned char psk_or_pre_ms[PSK_MAX_PSK_LEN*2+4];
2488 unsigned int pre_ms_len = 0, psk_len = 0;
2489 int psk_err = 1;
2490 char tmp_id[PSK_MAX_IDENTITY_LEN+1];
2491
2492 al=SSL_AD_HANDSHAKE_FAILURE;
2493
2494 n2s(p,i);
2495 if (n != i+2)
2496 {
2497 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2498 SSL_R_LENGTH_MISMATCH);
2499 goto psk_err;
2500 }
2501 if (i > PSK_MAX_IDENTITY_LEN)
2502 {
2503 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2504 SSL_R_DATA_LENGTH_TOO_LONG);
2505 goto psk_err;
2506 }
2507 if (s->psk_server_callback == NULL)
2508 {
2509 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2510 SSL_R_PSK_NO_SERVER_CB);
2511 goto psk_err;
2512 }
2513
2514 /* Create guaranteed NULL-terminated identity
2515 * string for the callback */
2516 memcpy(tmp_id, p, i);
2517 memset(tmp_id+i, 0, PSK_MAX_IDENTITY_LEN+1-i);
2518 psk_len = s->psk_server_callback(s, tmp_id,
2519 psk_or_pre_ms, sizeof(psk_or_pre_ms));
2520 OPENSSL_cleanse(tmp_id, PSK_MAX_IDENTITY_LEN+1);
2521
2522 if (psk_len > PSK_MAX_PSK_LEN)
2523 {
2524 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2525 ERR_R_INTERNAL_ERROR);
2526 goto psk_err;
2527 }
2528 else if (psk_len == 0)
2529 {
2530 /* PSK related to the given identity not found */
2531 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2532 SSL_R_PSK_IDENTITY_NOT_FOUND);
2533 al=SSL_AD_UNKNOWN_PSK_IDENTITY;
2534 goto psk_err;
2535 }
2536
2537 /* create PSK pre_master_secret */
2538 pre_ms_len=2+psk_len+2+psk_len;
2539 t = psk_or_pre_ms;
2540 memmove(psk_or_pre_ms+psk_len+4, psk_or_pre_ms, psk_len);
2541 s2n(psk_len, t);
2542 memset(t, 0, psk_len);
2543 t+=psk_len;
2544 s2n(psk_len, t);
2545
2546 if (s->session->psk_identity != NULL)
2547 OPENSSL_free(s->session->psk_identity);
2548 s->session->psk_identity = BUF_strdup((char *)p);
2549 if (s->session->psk_identity == NULL)
2550 {
2551 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2552 ERR_R_MALLOC_FAILURE);
2553 goto psk_err;
2554 }
2555
2556 if (s->session->psk_identity_hint != NULL)
2557 OPENSSL_free(s->session->psk_identity_hint);
2558 s->session->psk_identity_hint = BUF_strdup(s->ctx->psk_identity_hint);
2559 if (s->ctx->psk_identity_hint != NULL &&
2560 s->session->psk_identity_hint == NULL)
2561 {
2562 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
2563 ERR_R_MALLOC_FAILURE);
2564 goto psk_err;
2565 }
2566
2567 s->session->master_key_length=
2568 s->method->ssl3_enc->generate_master_secret(s,
2569 s->session->master_key, psk_or_pre_ms, pre_ms_len);
2570 psk_err = 0;
2571 psk_err:
2572 OPENSSL_cleanse(psk_or_pre_ms, sizeof(psk_or_pre_ms));
2573 if (psk_err != 0)
2574 goto f_err;
2575 }
2576 else
2577#endif
2578 if (alg_k & SSL_kGOST)
2579 {
2580 int ret = 0;
2581 EVP_PKEY_CTX *pkey_ctx;
2582 EVP_PKEY *client_pub_pkey = NULL;
2583 unsigned char premaster_secret[32], *start;
2584 size_t outlen=32, inlen;
2585
2586 /* Get our certificate private key*/
2587 pkey_ctx = EVP_PKEY_CTX_new(s->cert->key->privatekey,NULL);
2588 EVP_PKEY_decrypt_init(pkey_ctx);
2589 /* If client certificate is present and is of the same type, maybe
2590 * use it for key exchange. Don't mind errors from
2591 * EVP_PKEY_derive_set_peer, because it is completely valid to use
2592 * a client certificate for authorization only. */
2593 client_pub_pkey = X509_get_pubkey(s->session->peer);
2594 if (client_pub_pkey)
2595 {
2596 if (EVP_PKEY_derive_set_peer(pkey_ctx, client_pub_pkey) <= 0)
2597 ERR_clear_error();
2598 }
2599 /* Decrypt session key */
2600 if ((*p!=( V_ASN1_SEQUENCE| V_ASN1_CONSTRUCTED)))
2601 {
2602 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_DECRYPTION_FAILED);
2603 goto gerr;
2604 }
2605 if (p[1] == 0x81)
2606 {
2607 start = p+3;
2608 inlen = p[2];
2609 }
2610 else if (p[1] < 0x80)
2611 {
2612 start = p+2;
2613 inlen = p[1];
2614 }
2615 else
2616 {
2617 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_DECRYPTION_FAILED);
2618 goto gerr;
2619 }
2620 if (EVP_PKEY_decrypt(pkey_ctx,premaster_secret,&outlen,start,inlen) <=0)
2621
2622 {
2623 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,SSL_R_DECRYPTION_FAILED);
2624 goto gerr;
2625 }
2626 /* Generate master secret */
2627 s->session->master_key_length=
2628 s->method->ssl3_enc->generate_master_secret(s,
2629 s->session->master_key,premaster_secret,32);
2630 /* Check if pubkey from client certificate was used */
2631 if (EVP_PKEY_CTX_ctrl(pkey_ctx, -1, -1, EVP_PKEY_CTRL_PEER_KEY, 2, NULL) > 0)
2632 ret = 2;
2633 else
2634 ret = 1;
2635 gerr:
2636 EVP_PKEY_free(client_pub_pkey);
2637 EVP_PKEY_CTX_free(pkey_ctx);
2638 if (ret)
2639 return ret;
2640 else
2641 goto err;
2642 }
2643 else
2279 { 2644 {
2280 al=SSL_AD_HANDSHAKE_FAILURE; 2645 al=SSL_AD_HANDSHAKE_FAILURE;
2281 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE, 2646 SSLerr(SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE,
@@ -2365,15 +2730,25 @@ int ssl3_get_cert_verify(SSL *s)
2365 2730
2366 /* we now have a signature that we need to verify */ 2731 /* we now have a signature that we need to verify */
2367 p=(unsigned char *)s->init_msg; 2732 p=(unsigned char *)s->init_msg;
2368 n2s(p,i); 2733 /* Check for broken implementations of GOST ciphersuites */
2369 n-=2; 2734 /* If key is GOST and n is exactly 64, it is bare
2370 if (i > n) 2735 * signature without length field */
2736 if (n==64 && (pkey->type==NID_id_GostR3410_94 ||
2737 pkey->type == NID_id_GostR3410_2001) )
2371 { 2738 {
2372 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_LENGTH_MISMATCH); 2739 i=64;
2373 al=SSL_AD_DECODE_ERROR; 2740 }
2374 goto f_err; 2741 else
2375 } 2742 {
2376 2743 n2s(p,i);
2744 n-=2;
2745 if (i > n)
2746 {
2747 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,SSL_R_LENGTH_MISMATCH);
2748 al=SSL_AD_DECODE_ERROR;
2749 goto f_err;
2750 }
2751 }
2377 j=EVP_PKEY_size(pkey); 2752 j=EVP_PKEY_size(pkey);
2378 if ((i > j) || (n > j) || (n <= 0)) 2753 if ((i > j) || (n > j) || (n <= 0))
2379 { 2754 {
@@ -2436,6 +2811,28 @@ int ssl3_get_cert_verify(SSL *s)
2436 } 2811 }
2437 else 2812 else
2438#endif 2813#endif
2814 if (pkey->type == NID_id_GostR3410_94 || pkey->type == NID_id_GostR3410_2001)
2815 { unsigned char signature[64];
2816 int idx;
2817 EVP_PKEY_CTX *pctx = EVP_PKEY_CTX_new(pkey,NULL);
2818 EVP_PKEY_verify_init(pctx);
2819 if (i!=64) {
2820 fprintf(stderr,"GOST signature length is %d",i);
2821 }
2822 for (idx=0;idx<64;idx++) {
2823 signature[63-idx]=p[idx];
2824 }
2825 j=EVP_PKEY_verify(pctx,signature,64,s->s3->tmp.cert_verify_md,32);
2826 EVP_PKEY_CTX_free(pctx);
2827 if (j<=0)
2828 {
2829 al=SSL_AD_DECRYPT_ERROR;
2830 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,
2831 SSL_R_BAD_ECDSA_SIGNATURE);
2832 goto f_err;
2833 }
2834 }
2835 else
2439 { 2836 {
2440 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,ERR_R_INTERNAL_ERROR); 2837 SSLerr(SSL_F_SSL3_GET_CERT_VERIFY,ERR_R_INTERNAL_ERROR);
2441 al=SSL_AD_UNSUPPORTED_CERTIFICATE; 2838 al=SSL_AD_UNSUPPORTED_CERTIFICATE;
@@ -2618,14 +3015,15 @@ int ssl3_send_server_certificate(SSL *s)
2618 if (s->state == SSL3_ST_SW_CERT_A) 3015 if (s->state == SSL3_ST_SW_CERT_A)
2619 { 3016 {
2620 x=ssl_get_server_send_cert(s); 3017 x=ssl_get_server_send_cert(s);
2621 if (x == NULL && 3018 if (x == NULL)
2622 /* VRS: allow null cert if auth == KRB5 */
2623 (s->s3->tmp.new_cipher->algorithms
2624 & (SSL_MKEY_MASK|SSL_AUTH_MASK))
2625 != (SSL_aKRB5|SSL_kKRB5))
2626 { 3019 {
2627 SSLerr(SSL_F_SSL3_SEND_SERVER_CERTIFICATE,ERR_R_INTERNAL_ERROR); 3020 /* VRS: allow null cert if auth == KRB5 */
2628 return(0); 3021 if ((s->s3->tmp.new_cipher->algorithm_auth != SSL_aKRB5) ||
3022 (s->s3->tmp.new_cipher->algorithm_mkey & SSL_kKRB5))
3023 {
3024 SSLerr(SSL_F_SSL3_SEND_SERVER_CERTIFICATE,ERR_R_INTERNAL_ERROR);
3025 return(0);
3026 }
2629 } 3027 }
2630 3028
2631 l=ssl3_output_cert_chain(s,x); 3029 l=ssl3_output_cert_chain(s,x);
@@ -2637,70 +3035,6 @@ int ssl3_send_server_certificate(SSL *s)
2637 /* SSL3_ST_SW_CERT_B */ 3035 /* SSL3_ST_SW_CERT_B */
2638 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE)); 3036 return(ssl3_do_write(s,SSL3_RT_HANDSHAKE));
2639 } 3037 }
2640
2641
2642#ifndef OPENSSL_NO_ECDH
2643/* This is the complement of curve_id2nid in s3_clnt.c. */
2644static int nid2curve_id(int nid)
2645{
2646 /* ECC curves from draft-ietf-tls-ecc-01.txt (Mar 15, 2001)
2647 * (no changes in draft-ietf-tls-ecc-03.txt [June 2003]) */
2648 switch (nid) {
2649 case NID_sect163k1: /* sect163k1 (1) */
2650 return 1;
2651 case NID_sect163r1: /* sect163r1 (2) */
2652 return 2;
2653 case NID_sect163r2: /* sect163r2 (3) */
2654 return 3;
2655 case NID_sect193r1: /* sect193r1 (4) */
2656 return 4;
2657 case NID_sect193r2: /* sect193r2 (5) */
2658 return 5;
2659 case NID_sect233k1: /* sect233k1 (6) */
2660 return 6;
2661 case NID_sect233r1: /* sect233r1 (7) */
2662 return 7;
2663 case NID_sect239k1: /* sect239k1 (8) */
2664 return 8;
2665 case NID_sect283k1: /* sect283k1 (9) */
2666 return 9;
2667 case NID_sect283r1: /* sect283r1 (10) */
2668 return 10;
2669 case NID_sect409k1: /* sect409k1 (11) */
2670 return 11;
2671 case NID_sect409r1: /* sect409r1 (12) */
2672 return 12;
2673 case NID_sect571k1: /* sect571k1 (13) */
2674 return 13;
2675 case NID_sect571r1: /* sect571r1 (14) */
2676 return 14;
2677 case NID_secp160k1: /* secp160k1 (15) */
2678 return 15;
2679 case NID_secp160r1: /* secp160r1 (16) */
2680 return 16;
2681 case NID_secp160r2: /* secp160r2 (17) */
2682 return 17;
2683 case NID_secp192k1: /* secp192k1 (18) */
2684 return 18;
2685 case NID_X9_62_prime192v1: /* secp192r1 (19) */
2686 return 19;
2687 case NID_secp224k1: /* secp224k1 (20) */
2688 return 20;
2689 case NID_secp224r1: /* secp224r1 (21) */
2690 return 21;
2691 case NID_secp256k1: /* secp256k1 (22) */
2692 return 22;
2693 case NID_X9_62_prime256v1: /* secp256r1 (23) */
2694 return 23;
2695 case NID_secp384r1: /* secp384r1 (24) */
2696 return 24;
2697 case NID_secp521r1: /* secp521r1 (25) */
2698 return 25;
2699 default:
2700 return 0;
2701 }
2702}
2703#endif
2704#ifndef OPENSSL_NO_TLSEXT 3038#ifndef OPENSSL_NO_TLSEXT
2705int ssl3_send_newsession_ticket(SSL *s) 3039int ssl3_send_newsession_ticket(SSL *s)
2706 { 3040 {
@@ -2711,6 +3045,7 @@ int ssl3_send_newsession_ticket(SSL *s)
2711 unsigned int hlen; 3045 unsigned int hlen;
2712 EVP_CIPHER_CTX ctx; 3046 EVP_CIPHER_CTX ctx;
2713 HMAC_CTX hctx; 3047 HMAC_CTX hctx;
3048 SSL_CTX *tctx = s->initial_ctx;
2714 unsigned char iv[EVP_MAX_IV_LENGTH]; 3049 unsigned char iv[EVP_MAX_IV_LENGTH];
2715 unsigned char key_name[16]; 3050 unsigned char key_name[16];
2716 3051
@@ -2749,9 +3084,9 @@ int ssl3_send_newsession_ticket(SSL *s)
2749 * it does all the work otherwise use generated values 3084 * it does all the work otherwise use generated values
2750 * from parent ctx. 3085 * from parent ctx.
2751 */ 3086 */
2752 if (s->ctx->tlsext_ticket_key_cb) 3087 if (tctx->tlsext_ticket_key_cb)
2753 { 3088 {
2754 if (s->ctx->tlsext_ticket_key_cb(s, key_name, iv, &ctx, 3089 if (tctx->tlsext_ticket_key_cb(s, key_name, iv, &ctx,
2755 &hctx, 1) < 0) 3090 &hctx, 1) < 0)
2756 { 3091 {
2757 OPENSSL_free(senc); 3092 OPENSSL_free(senc);
@@ -2762,10 +3097,10 @@ int ssl3_send_newsession_ticket(SSL *s)
2762 { 3097 {
2763 RAND_pseudo_bytes(iv, 16); 3098 RAND_pseudo_bytes(iv, 16);
2764 EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, 3099 EVP_EncryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL,
2765 s->ctx->tlsext_tick_aes_key, iv); 3100 tctx->tlsext_tick_aes_key, iv);
2766 HMAC_Init_ex(&hctx, s->ctx->tlsext_tick_hmac_key, 16, 3101 HMAC_Init_ex(&hctx, tctx->tlsext_tick_hmac_key, 16,
2767 tlsext_tick_md(), NULL); 3102 tlsext_tick_md(), NULL);
2768 memcpy(key_name, s->ctx->tlsext_tick_key_name, 16); 3103 memcpy(key_name, tctx->tlsext_tick_key_name, 16);
2769 } 3104 }
2770 l2n(s->session->tlsext_tick_lifetime_hint, p); 3105 l2n(s->session->tlsext_tick_lifetime_hint, p);
2771 /* Skip ticket length for now */ 3106 /* Skip ticket length for now */
diff --git a/src/lib/libssl/src/ssl/ssl-lib.com b/src/lib/libssl/src/ssl/ssl-lib.com
index fcd7ff774c..c5ca9e1df7 100644
--- a/src/lib/libssl/src/ssl/ssl-lib.com
+++ b/src/lib/libssl/src/ssl/ssl-lib.com
@@ -8,11 +8,11 @@ $!
8$! Changes by Richard Levitte <richard@levitte.org> 8$! Changes by Richard Levitte <richard@levitte.org>
9$! 9$!
10$! This command file compiles and creates the "[.xxx.EXE.SSL]LIBSSL.OLB" 10$! This command file compiles and creates the "[.xxx.EXE.SSL]LIBSSL.OLB"
11$! library for OpenSSL. The "xxx" denotes the machine architecture of AXP 11$! library for OpenSSL. The "xxx" denotes the machine architecture of
12$! or VAX. 12$! ALPHA, IA64 or VAX.
13$! 13$!
14$! It is written to detect what type of machine you are compiling on 14$! It is written to detect what type of machine you are compiling on
15$! (i.e. AXP or VAX) and which "C" compiler you have (i.e. VAXC, DECC 15$! (i.e. ALPHA or VAX) and which "C" compiler you have (i.e. VAXC, DECC
16$! or GNU C) or you can specify which compiler to use. 16$! or GNU C) or you can specify which compiler to use.
17$! 17$!
18$! Specify the following as P1 to build just that part or ALL to just 18$! Specify the following as P1 to build just that part or ALL to just
@@ -30,7 +30,7 @@ $! VAXC For VAX C.
30$! DECC For DEC C. 30$! DECC For DEC C.
31$! GNUC For GNU C. 31$! GNUC For GNU C.
32$! 32$!
33$! If you don't speficy a compiler, it will try to determine which 33$! If you don't specify a compiler, it will try to determine which
34$! "C" compiler to use. 34$! "C" compiler to use.
35$! 35$!
36$! P4, if defined, sets a TCP/IP library to use, through one of the following 36$! P4, if defined, sets a TCP/IP library to use, through one of the following
@@ -48,27 +48,36 @@ $! (That Is, If We Need To Link To One.)
48$! 48$!
49$ TCPIP_LIB = "" 49$ TCPIP_LIB = ""
50$! 50$!
51$! Check Which Architecture We Are Using. 51$! Check What Architecture We Are Using.
52$! 52$!
53$ IF (F$GETSYI("CPU").GE.128) 53$ IF (F$GETSYI("CPU").LT.128)
54$ THEN 54$ THEN
55$! 55$!
56$! The Architecture Is AXP. 56$! The Architecture Is VAX.
57$! 57$!
58$ ARCH := AXP 58$ ARCH = "VAX"
59$! 59$!
60$! Else... 60$! Else...
61$! 61$!
62$ ELSE 62$ ELSE
63$! 63$!
64$! The Architecture Is VAX. 64$! The Architecture Is Alpha, IA64 or whatever comes in the future.
65$! 65$!
66$ ARCH := VAX 66$ ARCH = F$EDIT( F$GETSYI( "ARCH_NAME"), "UPCASE")
67$ IF (ARCH .EQS. "") THEN ARCH = "UNK"
67$! 68$!
68$! End The Architecture Check. 69$! End The Architecture Check.
69$! 70$!
70$ ENDIF 71$ ENDIF
71$! 72$!
73$! Define The OBJ Directory.
74$!
75$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.SSL]
76$!
77$! Define The EXE Directory.
78$!
79$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.SSL]
80$!
72$! Check To Make Sure We Have Valid Command Line Parameters. 81$! Check To Make Sure We Have Valid Command Line Parameters.
73$! 82$!
74$ GOSUB CHECK_OPTIONS 83$ GOSUB CHECK_OPTIONS
@@ -81,10 +90,6 @@ $! Tell The User What Kind of Machine We Run On.
81$! 90$!
82$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine." 91$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine."
83$! 92$!
84$! Define The OBJ Directory.
85$!
86$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.SSL]
87$!
88$! Check To See If The Architecture Specific OBJ Directory Exists. 93$! Check To See If The Architecture Specific OBJ Directory Exists.
89$! 94$!
90$ IF (F$PARSE(OBJ_DIR).EQS."") 95$ IF (F$PARSE(OBJ_DIR).EQS."")
@@ -98,10 +103,6 @@ $! End The Architecture Specific OBJ Directory Check.
98$! 103$!
99$ ENDIF 104$ ENDIF
100$! 105$!
101$! Define The EXE Directory.
102$!
103$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.SSL]
104$!
105$! Check To See If The Architecture Specific Directory Exists. 106$! Check To See If The Architecture Specific Directory Exists.
106$! 107$!
107$ IF (F$PARSE(EXE_DIR).EQS."") 108$ IF (F$PARSE(EXE_DIR).EQS."")
@@ -179,7 +180,7 @@ $ LIB_SSL = "s2_meth,s2_srvr,s2_clnt,s2_lib,s2_enc,s2_pkt,"+ -
179 "ssl_lib,ssl_err2,ssl_cert,ssl_sess,"+ - 180 "ssl_lib,ssl_err2,ssl_cert,ssl_sess,"+ -
180 "ssl_ciph,ssl_stat,ssl_rsa,"+ - 181 "ssl_ciph,ssl_stat,ssl_rsa,"+ -
181 "ssl_asn1,ssl_txt,ssl_algs,"+ - 182 "ssl_asn1,ssl_txt,ssl_algs,"+ -
182 "bio_ssl,ssl_err,kssl" 183 "bio_ssl,ssl_err,kssl,t1_reneg"
183$! 184$!
184$! Tell The User That We Are Compiling The Library. 185$! Tell The User That We Are Compiling The Library.
185$! 186$!
@@ -409,7 +410,7 @@ $!
409$ IF (F$SEARCH(OPT_FILE).EQS."") 410$ IF (F$SEARCH(OPT_FILE).EQS."")
410$ THEN 411$ THEN
411$! 412$!
412$! Figure Out If We Need An AXP Or A VAX Linker Option File. 413$! Figure Out If We Need A non-VAX Or A VAX Linker Option File.
413$! 414$!
414$ IF (ARCH.EQS."VAX") 415$ IF (ARCH.EQS."VAX")
415$ THEN 416$ THEN
@@ -429,19 +430,19 @@ $! Else...
429$! 430$!
430$ ELSE 431$ ELSE
431$! 432$!
432$! Create The AXP Linker Option File. 433$! Create The non-VAX Linker Option File.
433$! 434$!
434$ CREATE 'OPT_FILE' 435$ CREATE 'OPT_FILE'
435$DECK 436$DECK
436! 437!
437! Default System Options File For AXP To Link Agianst 438! Default System Options File For non-VAX To Link Agianst
438! The Sharable C Runtime Library. 439! The Sharable C Runtime Library.
439! 440!
440SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE 441SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE
441SYS$SHARE:CMA$OPEN_RTL/SHARE 442SYS$SHARE:CMA$OPEN_RTL/SHARE
442$EOD 443$EOD
443$! 444$!
444$! End The VAX/AXP DEC C Option File Check. 445$! End The DEC C Option File Check.
445$! 446$!
446$ ENDIF 447$ ENDIF
447$! 448$!
@@ -523,12 +524,12 @@ $! Else...
523$! 524$!
524$ ELSE 525$ ELSE
525$! 526$!
526$! Else, Check To See If P1 Has A Valid Arguement. 527$! Else, Check To See If P1 Has A Valid Argument.
527$! 528$!
528$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."SSL_TASK") 529$ IF (P1.EQS."LIBRARY").OR.(P1.EQS."SSL_TASK")
529$ THEN 530$ THEN
530$! 531$!
531$! A Valid Arguement. 532$! A Valid Argument.
532$! 533$!
533$ BUILDALL = P1 534$ BUILDALL = P1
534$! 535$!
@@ -547,15 +548,16 @@ $ WRITE SYS$OUTPUT " SSL_TASK : To Compile Just The [.xxx.EXE.SSL]SSL_TA
547$ WRITE SYS$OUTPUT "" 548$ WRITE SYS$OUTPUT ""
548$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:" 549$ WRITE SYS$OUTPUT " Where 'xxx' Stands For:"
549$ WRITE SYS$OUTPUT "" 550$ WRITE SYS$OUTPUT ""
550$ WRITE SYS$OUTPUT " AXP : Alpha Architecture." 551$ WRITE SYS$OUTPUT " ALPHA : Alpha Architecture."
551$ WRITE SYS$OUTPUT " VAX : VAX Architecture." 552$ WRITE SYS$OUTPUT " IA64 : IA64 Architecture."
553$ WRITE SYS$OUTPUT " VAX : VAX Architecture."
552$ WRITE SYS$OUTPUT "" 554$ WRITE SYS$OUTPUT ""
553$! 555$!
554$! Time To EXIT. 556$! Time To EXIT.
555$! 557$!
556$ EXIT 558$ EXIT
557$! 559$!
558$! End The Valid Arguement Check. 560$! End The Valid Argument Check.
559$! 561$!
560$ ENDIF 562$ ENDIF
561$! 563$!
@@ -609,7 +611,7 @@ $! Time To EXIT.
609$! 611$!
610$ EXIT 612$ EXIT
611$! 613$!
612$! End The Valid Arguement Check. 614$! End The Valid Argument Check.
613$! 615$!
614$ ENDIF 616$ ENDIF
615$! 617$!
@@ -674,7 +676,7 @@ $ ELSE
674$! 676$!
675$! Check To See If We Have VAXC Or DECC. 677$! Check To See If We Have VAXC Or DECC.
676$! 678$!
677$ IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."") 679$ IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
678$ THEN 680$ THEN
679$! 681$!
680$! Looks Like DECC, Set To Use DECC. 682$! Looks Like DECC, Set To Use DECC.
@@ -784,7 +786,7 @@ $ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + -
784$! 786$!
785$! Define The Linker Options File Name. 787$! Define The Linker Options File Name.
786$! 788$!
787$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT" 789$ OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
788$! 790$!
789$! End DECC Check. 791$! End DECC Check.
790$! 792$!
@@ -806,9 +808,9 @@ $!
806$! Compile Using VAXC. 808$! Compile Using VAXC.
807$! 809$!
808$ CC = "CC" 810$ CC = "CC"
809$ IF ARCH.EQS."AXP" 811$ IF ARCH.NES."VAX"
810$ THEN 812$ THEN
811$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!" 813$ WRITE SYS$OUTPUT "There is no VAX C on ''ARCH'!"
812$ EXIT 814$ EXIT
813$ ENDIF 815$ ENDIF
814$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC" 816$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC"
@@ -822,7 +824,7 @@ $ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB]
822$! 824$!
823$! Define The Linker Options File Name. 825$! Define The Linker Options File Name.
824$! 826$!
825$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT" 827$ OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
826$! 828$!
827$! End VAXC Check 829$! End VAXC Check
828$! 830$!
@@ -849,7 +851,7 @@ $ CC = GCC+"/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + -
849$! 851$!
850$! Define The Linker Options File Name. 852$! Define The Linker Options File Name.
851$! 853$!
852$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT" 854$ OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
853$! 855$!
854$! End The GNU C Check. 856$! End The GNU C Check.
855$! 857$!
@@ -891,7 +893,7 @@ $! Show user the result
891$! 893$!
892$ WRITE/SYMBOL SYS$OUTPUT "Main Compiling Command: ",CC 894$ WRITE/SYMBOL SYS$OUTPUT "Main Compiling Command: ",CC
893$! 895$!
894$! Else The User Entered An Invalid Arguement. 896$! Else The User Entered An Invalid Argument.
895$! 897$!
896$ ELSE 898$ ELSE
897$! 899$!
@@ -992,7 +994,7 @@ $! Print info
992$! 994$!
993$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB 995$ WRITE SYS$OUTPUT "TCP/IP library spec: ", TCPIP_LIB
994$! 996$!
995$! Else The User Entered An Invalid Arguement. 997$! Else The User Entered An Invalid Argument.
996$! 998$!
997$ ELSE 999$ ELSE
998$! 1000$!
diff --git a/src/lib/libssl/src/ssl/ssl.h b/src/lib/libssl/src/ssl/ssl.h
index ff8a128d3c..e4c3f65010 100644
--- a/src/lib/libssl/src/ssl/ssl.h
+++ b/src/lib/libssl/src/ssl/ssl.h
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -109,62 +109,35 @@
109 * 109 *
110 */ 110 */
111/* ==================================================================== 111/* ====================================================================
112 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. 112 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
113 * ECC cipher suite support in OpenSSL originally developed by
114 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
115 */
116/* ====================================================================
117 * Copyright 2005 Nokia. All rights reserved.
113 * 118 *
114 * Redistribution and use in source and binary forms, with or without 119 * The portions of the attached software ("Contribution") is developed by
115 * modification, are permitted provided that the following conditions 120 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
116 * are met: 121 * license.
117 * 122 *
118 * 1. Redistributions of source code must retain the above copyright 123 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
119 * notice, this list of conditions and the following disclaimer. 124 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
125 * support (see RFC 4279) to OpenSSL.
120 * 126 *
121 * 2. Redistributions in binary form must reproduce the above copyright 127 * No patent licenses or other rights except those expressly stated in
122 * notice, this list of conditions and the following disclaimer in 128 * the OpenSSL open source license shall be deemed granted or received
123 * the documentation and/or other materials provided with the 129 * expressly, by implication, estoppel, or otherwise.
124 * distribution.
125 * 130 *
126 * 3. All advertising materials mentioning features or use of this 131 * No assurances are provided by Nokia that the Contribution does not
127 * software must display the following acknowledgment: 132 * infringe the patent or other intellectual property rights of any third
128 * "This product includes software developed by the OpenSSL Project 133 * party or that the license provides you with all the necessary rights
129 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 134 * to make use of the Contribution.
130 *
131 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
132 * endorse or promote products derived from this software without
133 * prior written permission. For written permission, please contact
134 * openssl-core@openssl.org.
135 *
136 * 5. Products derived from this software may not be called "OpenSSL"
137 * nor may "OpenSSL" appear in their names without prior written
138 * permission of the OpenSSL Project.
139 *
140 * 6. Redistributions of any form whatsoever must retain the following
141 * acknowledgment:
142 * "This product includes software developed by the OpenSSL Project
143 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
144 *
145 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
146 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
147 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
148 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
149 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
150 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
151 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
152 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
153 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
154 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
155 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
156 * OF THE POSSIBILITY OF SUCH DAMAGE.
157 * ====================================================================
158 *
159 * This product includes cryptographic software written by Eric Young
160 * (eay@cryptsoft.com). This product includes software written by Tim
161 * Hudson (tjh@cryptsoft.com).
162 * 135 *
163 */ 136 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
164/* ==================================================================== 137 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
165 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 138 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
166 * ECC cipher suite support in OpenSSL originally developed by 139 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
167 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. 140 * OTHERWISE.
168 */ 141 */
169 142
170#ifndef HEADER_SSL_H 143#ifndef HEADER_SSL_H
@@ -248,56 +221,88 @@ extern "C" {
248#define SSL_MAX_KEY_ARG_LENGTH 8 221#define SSL_MAX_KEY_ARG_LENGTH 8
249#define SSL_MAX_MASTER_KEY_LENGTH 48 222#define SSL_MAX_MASTER_KEY_LENGTH 48
250 223
224
251/* These are used to specify which ciphers to use and not to use */ 225/* These are used to specify which ciphers to use and not to use */
226
227#define SSL_TXT_EXP40 "EXPORT40"
228#define SSL_TXT_EXP56 "EXPORT56"
252#define SSL_TXT_LOW "LOW" 229#define SSL_TXT_LOW "LOW"
253#define SSL_TXT_MEDIUM "MEDIUM" 230#define SSL_TXT_MEDIUM "MEDIUM"
254#define SSL_TXT_HIGH "HIGH" 231#define SSL_TXT_HIGH "HIGH"
255#define SSL_TXT_FIPS "FIPS" 232#define SSL_TXT_FIPS "FIPS"
256#define SSL_TXT_kFZA "kFZA" 233
257#define SSL_TXT_aFZA "aFZA" 234#define SSL_TXT_kFZA "kFZA" /* unused! */
258#define SSL_TXT_eFZA "eFZA" 235#define SSL_TXT_aFZA "aFZA" /* unused! */
259#define SSL_TXT_FZA "FZA" 236#define SSL_TXT_eFZA "eFZA" /* unused! */
237#define SSL_TXT_FZA "FZA" /* unused! */
260 238
261#define SSL_TXT_aNULL "aNULL" 239#define SSL_TXT_aNULL "aNULL"
262#define SSL_TXT_eNULL "eNULL" 240#define SSL_TXT_eNULL "eNULL"
263#define SSL_TXT_NULL "NULL" 241#define SSL_TXT_NULL "NULL"
264 242
265#define SSL_TXT_kKRB5 "kKRB5"
266#define SSL_TXT_aKRB5 "aKRB5"
267#define SSL_TXT_KRB5 "KRB5"
268
269#define SSL_TXT_kRSA "kRSA" 243#define SSL_TXT_kRSA "kRSA"
270#define SSL_TXT_kDHr "kDHr" 244#define SSL_TXT_kDHr "kDHr" /* no such ciphersuites supported! */
271#define SSL_TXT_kDHd "kDHd" 245#define SSL_TXT_kDHd "kDHd" /* no such ciphersuites supported! */
246#define SSL_TXT_kDH "kDH" /* no such ciphersuites supported! */
272#define SSL_TXT_kEDH "kEDH" 247#define SSL_TXT_kEDH "kEDH"
248#define SSL_TXT_kKRB5 "kKRB5"
249#define SSL_TXT_kECDHr "kECDHr"
250#define SSL_TXT_kECDHe "kECDHe"
251#define SSL_TXT_kECDH "kECDH"
252#define SSL_TXT_kEECDH "kEECDH"
253#define SSL_TXT_kPSK "kPSK"
254#define SSL_TXT_kGOST "kGOST"
255
273#define SSL_TXT_aRSA "aRSA" 256#define SSL_TXT_aRSA "aRSA"
274#define SSL_TXT_aDSS "aDSS" 257#define SSL_TXT_aDSS "aDSS"
275#define SSL_TXT_aDH "aDH" 258#define SSL_TXT_aDH "aDH" /* no such ciphersuites supported! */
259#define SSL_TXT_aECDH "aECDH"
260#define SSL_TXT_aKRB5 "aKRB5"
261#define SSL_TXT_aECDSA "aECDSA"
262#define SSL_TXT_aPSK "aPSK"
263#define SSL_TXT_aGOST94 "aGOST94"
264#define SSL_TXT_aGOST01 "aGOST01"
265#define SSL_TXT_aGOST "aGOST"
266
276#define SSL_TXT_DSS "DSS" 267#define SSL_TXT_DSS "DSS"
277#define SSL_TXT_DH "DH" 268#define SSL_TXT_DH "DH"
278#define SSL_TXT_EDH "EDH" 269#define SSL_TXT_EDH "EDH" /* same as "kEDH:-ADH" */
279#define SSL_TXT_ADH "ADH" 270#define SSL_TXT_ADH "ADH"
280#define SSL_TXT_RSA "RSA" 271#define SSL_TXT_RSA "RSA"
272#define SSL_TXT_ECDH "ECDH"
273#define SSL_TXT_EECDH "EECDH" /* same as "kEECDH:-AECDH" */
274#define SSL_TXT_AECDH "AECDH"
275#define SSL_TXT_ECDSA "ECDSA"
276#define SSL_TXT_KRB5 "KRB5"
277#define SSL_TXT_PSK "PSK"
278
281#define SSL_TXT_DES "DES" 279#define SSL_TXT_DES "DES"
282#define SSL_TXT_3DES "3DES" 280#define SSL_TXT_3DES "3DES"
283#define SSL_TXT_RC4 "RC4" 281#define SSL_TXT_RC4 "RC4"
284#define SSL_TXT_RC2 "RC2" 282#define SSL_TXT_RC2 "RC2"
285#define SSL_TXT_IDEA "IDEA" 283#define SSL_TXT_IDEA "IDEA"
286#define SSL_TXT_SEED "SEED" 284#define SSL_TXT_SEED "SEED"
285#define SSL_TXT_AES128 "AES128"
286#define SSL_TXT_AES256 "AES256"
287#define SSL_TXT_AES "AES" 287#define SSL_TXT_AES "AES"
288#define SSL_TXT_CAMELLIA128 "CAMELLIA128"
289#define SSL_TXT_CAMELLIA256 "CAMELLIA256"
288#define SSL_TXT_CAMELLIA "CAMELLIA" 290#define SSL_TXT_CAMELLIA "CAMELLIA"
291
289#define SSL_TXT_MD5 "MD5" 292#define SSL_TXT_MD5 "MD5"
290#define SSL_TXT_SHA1 "SHA1" 293#define SSL_TXT_SHA1 "SHA1"
291#define SSL_TXT_SHA "SHA" 294#define SSL_TXT_SHA "SHA" /* same as "SHA1" */
292#define SSL_TXT_EXP "EXP" 295#define SSL_TXT_GOST94 "GOST94"
293#define SSL_TXT_EXPORT "EXPORT" 296#define SSL_TXT_GOST89MAC "GOST89MAC"
294#define SSL_TXT_EXP40 "EXPORT40" 297
295#define SSL_TXT_EXP56 "EXPORT56"
296#define SSL_TXT_SSLV2 "SSLv2" 298#define SSL_TXT_SSLV2 "SSLv2"
297#define SSL_TXT_SSLV3 "SSLv3" 299#define SSL_TXT_SSLV3 "SSLv3"
298#define SSL_TXT_TLSV1 "TLSv1" 300#define SSL_TXT_TLSV1 "TLSv1"
301
302#define SSL_TXT_EXP "EXP"
303#define SSL_TXT_EXPORT "EXPORT"
304
299#define SSL_TXT_ALL "ALL" 305#define SSL_TXT_ALL "ALL"
300#define SSL_TXT_ECC "ECCdraft" /* ECC ciphersuites are not yet official */
301 306
302/* 307/*
303 * COMPLEMENTOF* definitions. These identifiers are used to (de-select) 308 * COMPLEMENTOF* definitions. These identifiers are used to (de-select)
@@ -319,7 +324,13 @@ extern "C" {
319/* The following cipher list is used by default. 324/* The following cipher list is used by default.
320 * It also is substituted when an application-defined cipher list string 325 * It also is substituted when an application-defined cipher list string
321 * starts with 'DEFAULT'. */ 326 * starts with 'DEFAULT'. */
322#define SSL_DEFAULT_CIPHER_LIST "AES:ALL:!aNULL:!eNULL:+RC4:@STRENGTH" /* low priority for RC4 */ 327#define SSL_DEFAULT_CIPHER_LIST "ALL:!aNULL:!eNULL:!SSLv2"
328/* As of OpenSSL 1.0.0, ssl_create_cipher_list() in ssl/ssl_ciph.c always
329 * starts with a reasonable order, and all we have to do for DEFAULT is
330 * throwing out anonymous and unencrypted ciphersuites!
331 * (The latter are not actually enabled by ALL, but "ALL:RSA" would enable
332 * some of them.)
333 */
323 334
324/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */ 335/* Used in SSL_set_shutdown()/SSL_get_shutdown(); */
325#define SSL_SENT_SHUTDOWN 1 336#define SSL_SENT_SHUTDOWN 1
@@ -344,6 +355,7 @@ extern "C" {
344 * 'struct ssl_st *' function parameters used to prototype callbacks 355 * 'struct ssl_st *' function parameters used to prototype callbacks
345 * in SSL_CTX. */ 356 * in SSL_CTX. */
346typedef struct ssl_st *ssl_crock_st; 357typedef struct ssl_st *ssl_crock_st;
358typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT;
347 359
348/* used to hold info on the particular ciphers used */ 360/* used to hold info on the particular ciphers used */
349typedef struct ssl_cipher_st 361typedef struct ssl_cipher_st
@@ -351,17 +363,25 @@ typedef struct ssl_cipher_st
351 int valid; 363 int valid;
352 const char *name; /* text name */ 364 const char *name; /* text name */
353 unsigned long id; /* id, 4 bytes, first is version */ 365 unsigned long id; /* id, 4 bytes, first is version */
354 unsigned long algorithms; /* what ciphers are used */ 366
367 /* changed in 0.9.9: these four used to be portions of a single value 'algorithms' */
368 unsigned long algorithm_mkey; /* key exchange algorithm */
369 unsigned long algorithm_auth; /* server authentication */
370 unsigned long algorithm_enc; /* symmetric encryption */
371 unsigned long algorithm_mac; /* symmetric authentication */
372 unsigned long algorithm_ssl; /* (major) protocol version */
373
355 unsigned long algo_strength; /* strength and export flags */ 374 unsigned long algo_strength; /* strength and export flags */
356 unsigned long algorithm2; /* Extra flags */ 375 unsigned long algorithm2; /* Extra flags */
357 int strength_bits; /* Number of bits really used */ 376 int strength_bits; /* Number of bits really used */
358 int alg_bits; /* Number of bits for algorithm */ 377 int alg_bits; /* Number of bits for algorithm */
359 unsigned long mask; /* used for matching */
360 unsigned long mask_strength; /* also used for matching */
361 } SSL_CIPHER; 378 } SSL_CIPHER;
362 379
363DECLARE_STACK_OF(SSL_CIPHER) 380DECLARE_STACK_OF(SSL_CIPHER)
364 381
382typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, int len, void *arg);
383typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, STACK_OF(SSL_CIPHER) *peer_ciphers, SSL_CIPHER **cipher, void *arg);
384
365/* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */ 385/* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */
366typedef struct ssl_method_st 386typedef struct ssl_method_st
367 { 387 {
@@ -385,12 +405,12 @@ typedef struct ssl_method_st
385 int (*ssl_dispatch_alert)(SSL *s); 405 int (*ssl_dispatch_alert)(SSL *s);
386 long (*ssl_ctrl)(SSL *s,int cmd,long larg,void *parg); 406 long (*ssl_ctrl)(SSL *s,int cmd,long larg,void *parg);
387 long (*ssl_ctx_ctrl)(SSL_CTX *ctx,int cmd,long larg,void *parg); 407 long (*ssl_ctx_ctrl)(SSL_CTX *ctx,int cmd,long larg,void *parg);
388 SSL_CIPHER *(*get_cipher_by_char)(const unsigned char *ptr); 408 const SSL_CIPHER *(*get_cipher_by_char)(const unsigned char *ptr);
389 int (*put_cipher_by_char)(const SSL_CIPHER *cipher,unsigned char *ptr); 409 int (*put_cipher_by_char)(const SSL_CIPHER *cipher,unsigned char *ptr);
390 int (*ssl_pending)(const SSL *s); 410 int (*ssl_pending)(const SSL *s);
391 int (*num_ciphers)(void); 411 int (*num_ciphers)(void);
392 SSL_CIPHER *(*get_cipher)(unsigned ncipher); 412 const SSL_CIPHER *(*get_cipher)(unsigned ncipher);
393 struct ssl_method_st *(*get_ssl_method)(int version); 413 const struct ssl_method_st *(*get_ssl_method)(int version);
394 long (*get_timeout)(void); 414 long (*get_timeout)(void);
395 struct ssl3_enc_method *ssl3_enc; /* Extra SSLv3/TLS stuff */ 415 struct ssl3_enc_method *ssl3_enc; /* Extra SSLv3/TLS stuff */
396 int (*ssl_version)(void); 416 int (*ssl_version)(void);
@@ -402,17 +422,20 @@ typedef struct ssl_method_st
402 * SSL_SESSION_ID ::= SEQUENCE { 422 * SSL_SESSION_ID ::= SEQUENCE {
403 * version INTEGER, -- structure version number 423 * version INTEGER, -- structure version number
404 * SSLversion INTEGER, -- SSL version number 424 * SSLversion INTEGER, -- SSL version number
405 * Cipher OCTET_STRING, -- the 3 byte cipher ID 425 * Cipher OCTET STRING, -- the 3 byte cipher ID
406 * Session_ID OCTET_STRING, -- the Session ID 426 * Session_ID OCTET STRING, -- the Session ID
407 * Master_key OCTET_STRING, -- the master key 427 * Master_key OCTET STRING, -- the master key
408 * KRB5_principal OCTET_STRING -- optional Kerberos principal 428 * KRB5_principal OCTET STRING -- optional Kerberos principal
409 * Key_Arg [ 0 ] IMPLICIT OCTET_STRING, -- the optional Key argument 429 * Key_Arg [ 0 ] IMPLICIT OCTET STRING, -- the optional Key argument
410 * Time [ 1 ] EXPLICIT INTEGER, -- optional Start Time 430 * Time [ 1 ] EXPLICIT INTEGER, -- optional Start Time
411 * Timeout [ 2 ] EXPLICIT INTEGER, -- optional Timeout ins seconds 431 * Timeout [ 2 ] EXPLICIT INTEGER, -- optional Timeout ins seconds
412 * Peer [ 3 ] EXPLICIT X509, -- optional Peer Certificate 432 * Peer [ 3 ] EXPLICIT X509, -- optional Peer Certificate
413 * Session_ID_context [ 4 ] EXPLICIT OCTET_STRING, -- the Session ID context 433 * Session_ID_context [ 4 ] EXPLICIT OCTET STRING, -- the Session ID context
414 * Verify_result [ 5 ] EXPLICIT INTEGER -- X509_V_... code for `Peer' 434 * Verify_result [ 5 ] EXPLICIT INTEGER, -- X509_V_... code for `Peer'
415 * Compression [6] IMPLICIT ASN1_OBJECT -- compression OID XXXXX 435 * HostName [ 6 ] EXPLICIT OCTET STRING, -- optional HostName from servername TLS extension
436 * ECPointFormatList [ 7 ] OCTET STRING, -- optional EC point format list from TLS extension
437 * PSK_identity_hint [ 8 ] EXPLICIT OCTET STRING, -- optional PSK identity hint
438 * PSK_identity [ 9 ] EXPLICIT OCTET STRING -- optional PSK identity
416 * } 439 * }
417 * Look in ssl/ssl_asn1.c for more details 440 * Look in ssl/ssl_asn1.c for more details
418 * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). 441 * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-).
@@ -440,7 +463,10 @@ typedef struct ssl_session_st
440 unsigned int krb5_client_princ_len; 463 unsigned int krb5_client_princ_len;
441 unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH]; 464 unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH];
442#endif /* OPENSSL_NO_KRB5 */ 465#endif /* OPENSSL_NO_KRB5 */
443 466#ifndef OPENSSL_NO_PSK
467 char *psk_identity_hint;
468 char *psk_identity;
469#endif
444 int not_resumable; 470 int not_resumable;
445 471
446 /* The cert is the certificate used to establish this connection */ 472 /* The cert is the certificate used to establish this connection */
@@ -459,9 +485,9 @@ typedef struct ssl_session_st
459 long timeout; 485 long timeout;
460 long time; 486 long time;
461 487
462 int compress_meth; /* Need to lookup the method */ 488 unsigned int compress_meth; /* Need to lookup the method */
463 489
464 SSL_CIPHER *cipher; 490 const SSL_CIPHER *cipher;
465 unsigned long cipher_id; /* when ASN.1 loaded, this 491 unsigned long cipher_id; /* when ASN.1 loaded, this
466 * needs to be used to load 492 * needs to be used to load
467 * the 'cipher' structure */ 493 * the 'cipher' structure */
@@ -475,6 +501,12 @@ typedef struct ssl_session_st
475 struct ssl_session_st *prev,*next; 501 struct ssl_session_st *prev,*next;
476#ifndef OPENSSL_NO_TLSEXT 502#ifndef OPENSSL_NO_TLSEXT
477 char *tlsext_hostname; 503 char *tlsext_hostname;
504#ifndef OPENSSL_NO_EC
505 size_t tlsext_ecpointformatlist_length;
506 unsigned char *tlsext_ecpointformatlist; /* peer's list */
507 size_t tlsext_ellipticcurvelist_length;
508 unsigned char *tlsext_ellipticcurvelist; /* peer's list */
509#endif /* OPENSSL_NO_EC */
478 /* RFC4507 info */ 510 /* RFC4507 info */
479 unsigned char *tlsext_tick; /* Session ticket */ 511 unsigned char *tlsext_tick; /* Session ticket */
480 size_t tlsext_ticklen; /* Session ticket length */ 512 size_t tlsext_ticklen; /* Session ticket length */
@@ -485,6 +517,8 @@ typedef struct ssl_session_st
485 517
486#define SSL_OP_MICROSOFT_SESS_ID_BUG 0x00000001L 518#define SSL_OP_MICROSOFT_SESS_ID_BUG 0x00000001L
487#define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x00000002L 519#define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x00000002L
520/* Allow initial connection to servers that don't support RI */
521#define SSL_OP_LEGACY_SERVER_CONNECT 0x00000004L
488#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L 522#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L
489#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x00000010L 523#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x00000010L
490#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L 524#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L
@@ -502,7 +536,7 @@ typedef struct ssl_session_st
502 536
503/* SSL_OP_ALL: various bug workarounds that should be rather harmless. 537/* SSL_OP_ALL: various bug workarounds that should be rather harmless.
504 * This used to be 0x000FFFFFL before 0.9.7. */ 538 * This used to be 0x000FFFFFL before 0.9.7. */
505#define SSL_OP_ALL 0x00000FFFL 539#define SSL_OP_ALL 0x80000FFFL
506 540
507/* DTLS options */ 541/* DTLS options */
508#define SSL_OP_NO_QUERY_MTU 0x00001000L 542#define SSL_OP_NO_QUERY_MTU 0x00001000L
@@ -510,9 +544,15 @@ typedef struct ssl_session_st
510#define SSL_OP_COOKIE_EXCHANGE 0x00002000L 544#define SSL_OP_COOKIE_EXCHANGE 0x00002000L
511/* Don't use RFC4507 ticket extension */ 545/* Don't use RFC4507 ticket extension */
512#define SSL_OP_NO_TICKET 0x00004000L 546#define SSL_OP_NO_TICKET 0x00004000L
547/* Use Cisco's "speshul" version of DTLS_BAD_VER (as client) */
548#define SSL_OP_CISCO_ANYCONNECT 0x00008000L
513 549
514/* As server, disallow session resumption on renegotiation */ 550/* As server, disallow session resumption on renegotiation */
515#define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000L 551#define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000L
552/* Don't use compression even if supported */
553#define SSL_OP_NO_COMPRESSION 0x00020000L
554/* Permit unsafe legacy renegotiation */
555#define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION 0x00040000L
516/* If set, always create a new key when using tmp_ecdh parameters */ 556/* If set, always create a new key when using tmp_ecdh parameters */
517#define SSL_OP_SINGLE_ECDH_USE 0x00080000L 557#define SSL_OP_SINGLE_ECDH_USE 0x00080000L
518/* If set, always create a new key when using tmp_dh parameters */ 558/* If set, always create a new key when using tmp_dh parameters */
@@ -539,7 +579,11 @@ typedef struct ssl_session_st
539#define SSL_OP_PKCS1_CHECK_2 0x10000000L 579#define SSL_OP_PKCS1_CHECK_2 0x10000000L
540#define SSL_OP_NETSCAPE_CA_DN_BUG 0x20000000L 580#define SSL_OP_NETSCAPE_CA_DN_BUG 0x20000000L
541#define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x40000000L 581#define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x40000000L
542 582/* Make server add server-hello extension from early version of
583 * cryptopro draft, when GOST ciphersuite is negotiated.
584 * Required for interoperability with CryptoPro CSP 3.x
585 */
586#define SSL_OP_CRYPTOPRO_TLSEXT_BUG 0x80000000L
543 587
544/* Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success 588/* Allow SSL_write(..., n) to return r with 0 < r < n (i.e. report success
545 * when just a single record has been written): */ 589 * when just a single record has been written): */
@@ -554,24 +598,35 @@ typedef struct ssl_session_st
554#define SSL_MODE_AUTO_RETRY 0x00000004L 598#define SSL_MODE_AUTO_RETRY 0x00000004L
555/* Don't attempt to automatically build certificate chain */ 599/* Don't attempt to automatically build certificate chain */
556#define SSL_MODE_NO_AUTO_CHAIN 0x00000008L 600#define SSL_MODE_NO_AUTO_CHAIN 0x00000008L
557 601/* Save RAM by releasing read and write buffers when they're empty. (SSL3 and
602 * TLS only.) "Released" buffers are put onto a free-list in the context
603 * or just freed (depending on the context's setting for freelist_max_len). */
604#define SSL_MODE_RELEASE_BUFFERS 0x00000010L
558 605
559/* Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value, 606/* Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value,
560 * they cannot be used to clear bits. */ 607 * they cannot be used to clear bits. */
561 608
562#define SSL_CTX_set_options(ctx,op) \ 609#define SSL_CTX_set_options(ctx,op) \
563 SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL) 610 SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,(op),NULL)
611#define SSL_CTX_clear_options(ctx,op) \
612 SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_OPTIONS,(op),NULL)
564#define SSL_CTX_get_options(ctx) \ 613#define SSL_CTX_get_options(ctx) \
565 SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,0,NULL) 614 SSL_CTX_ctrl((ctx),SSL_CTRL_OPTIONS,0,NULL)
566#define SSL_set_options(ssl,op) \ 615#define SSL_set_options(ssl,op) \
567 SSL_ctrl((ssl),SSL_CTRL_OPTIONS,(op),NULL) 616 SSL_ctrl((ssl),SSL_CTRL_OPTIONS,(op),NULL)
617#define SSL_clear_options(ssl,op) \
618 SSL_ctrl((ssl),SSL_CTRL_CLEAR_OPTIONS,(op),NULL)
568#define SSL_get_options(ssl) \ 619#define SSL_get_options(ssl) \
569 SSL_ctrl((ssl),SSL_CTRL_OPTIONS,0,NULL) 620 SSL_ctrl((ssl),SSL_CTRL_OPTIONS,0,NULL)
570 621
571#define SSL_CTX_set_mode(ctx,op) \ 622#define SSL_CTX_set_mode(ctx,op) \
572 SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL) 623 SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,(op),NULL)
624#define SSL_CTX_clear_mode(ctx,op) \
625 SSL_CTX_ctrl((ctx),SSL_CTRL_CLEAR_MODE,(op),NULL)
573#define SSL_CTX_get_mode(ctx) \ 626#define SSL_CTX_get_mode(ctx) \
574 SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL) 627 SSL_CTX_ctrl((ctx),SSL_CTRL_MODE,0,NULL)
628#define SSL_clear_mode(ssl,op) \
629 SSL_ctrl((ssl),SSL_CTRL_CLEAR_MODE,(op),NULL)
575#define SSL_set_mode(ssl,op) \ 630#define SSL_set_mode(ssl,op) \
576 SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL) 631 SSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL)
577#define SSL_get_mode(ssl) \ 632#define SSL_get_mode(ssl) \
@@ -579,6 +634,8 @@ typedef struct ssl_session_st
579#define SSL_set_mtu(ssl, mtu) \ 634#define SSL_set_mtu(ssl, mtu) \
580 SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL) 635 SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL)
581 636
637#define SSL_get_secure_renegotiation_support(ssl) \
638 SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL)
582 639
583void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); 640void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg));
584void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); 641void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg));
@@ -623,17 +680,18 @@ typedef struct ssl_comp_st
623 } SSL_COMP; 680 } SSL_COMP;
624 681
625DECLARE_STACK_OF(SSL_COMP) 682DECLARE_STACK_OF(SSL_COMP)
683DECLARE_LHASH_OF(SSL_SESSION);
626 684
627struct ssl_ctx_st 685struct ssl_ctx_st
628 { 686 {
629 SSL_METHOD *method; 687 const SSL_METHOD *method;
630 688
631 STACK_OF(SSL_CIPHER) *cipher_list; 689 STACK_OF(SSL_CIPHER) *cipher_list;
632 /* same as above but sorted for lookup */ 690 /* same as above but sorted for lookup */
633 STACK_OF(SSL_CIPHER) *cipher_list_by_id; 691 STACK_OF(SSL_CIPHER) *cipher_list_by_id;
634 692
635 struct x509_store_st /* X509_STORE */ *cert_store; 693 struct x509_store_st /* X509_STORE */ *cert_store;
636 struct lhash_st /* LHASH */ *sessions; /* a set of SSL_SESSIONs */ 694 LHASH_OF(SSL_SESSION) *sessions;
637 /* Most session-ids that will be cached, default is 695 /* Most session-ids that will be cached, default is
638 * SSL_SESSION_CACHE_MAX_SIZE_DEFAULT. 0 is unlimited. */ 696 * SSL_SESSION_CACHE_MAX_SIZE_DEFAULT. 0 is unlimited. */
639 unsigned long session_cache_size; 697 unsigned long session_cache_size;
@@ -758,6 +816,12 @@ struct ssl_ctx_st
758 816
759 int quiet_shutdown; 817 int quiet_shutdown;
760 818
819 /* Maximum amount of data to send in one fragment.
820 * actual record size can be more than this due to
821 * padding and MAC overheads.
822 */
823 unsigned int max_send_fragment;
824
761#ifndef OPENSSL_ENGINE 825#ifndef OPENSSL_ENGINE
762 /* Engine to pass requests for client certs to 826 /* Engine to pass requests for client certs to
763 */ 827 */
@@ -776,14 +840,33 @@ struct ssl_ctx_st
776 int (*tlsext_ticket_key_cb)(SSL *ssl, 840 int (*tlsext_ticket_key_cb)(SSL *ssl,
777 unsigned char *name, unsigned char *iv, 841 unsigned char *name, unsigned char *iv,
778 EVP_CIPHER_CTX *ectx, 842 EVP_CIPHER_CTX *ectx,
779 HMAC_CTX *hctx, int enc); 843 HMAC_CTX *hctx, int enc);
780 844
781 /* certificate status request info */ 845 /* certificate status request info */
782 /* Callback for status request */ 846 /* Callback for status request */
783 int (*tlsext_status_cb)(SSL *ssl, void *arg); 847 int (*tlsext_status_cb)(SSL *ssl, void *arg);
784 void *tlsext_status_arg; 848 void *tlsext_status_arg;
849
850 /* draft-rescorla-tls-opaque-prf-input-00.txt information */
851 int (*tlsext_opaque_prf_input_callback)(SSL *, void *peerinput, size_t len, void *arg);
852 void *tlsext_opaque_prf_input_callback_arg;
853#endif
854
855#ifndef OPENSSL_NO_PSK
856 char *psk_identity_hint;
857 unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, char *identity,
858 unsigned int max_identity_len, unsigned char *psk,
859 unsigned int max_psk_len);
860 unsigned int (*psk_server_callback)(SSL *ssl, const char *identity,
861 unsigned char *psk, unsigned int max_psk_len);
785#endif 862#endif
786 863
864#ifndef OPENSSL_NO_BUF_FREELISTS
865#define SSL_MAX_BUF_FREELIST_LEN_DEFAULT 32
866 unsigned int freelist_max_len;
867 struct ssl3_buf_freelist_st *wbuf_freelist;
868 struct ssl3_buf_freelist_st *rbuf_freelist;
869#endif
787 }; 870 };
788 871
789#define SSL_SESS_CACHE_OFF 0x0000 872#define SSL_SESS_CACHE_OFF 0x0000
@@ -797,7 +880,7 @@ struct ssl_ctx_st
797#define SSL_SESS_CACHE_NO_INTERNAL \ 880#define SSL_SESS_CACHE_NO_INTERNAL \
798 (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE) 881 (SSL_SESS_CACHE_NO_INTERNAL_LOOKUP|SSL_SESS_CACHE_NO_INTERNAL_STORE)
799 882
800 struct lhash_st *SSL_CTX_sessions(SSL_CTX *ctx); 883LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx);
801#define SSL_CTX_sess_number(ctx) \ 884#define SSL_CTX_sess_number(ctx) \
802 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL) 885 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL)
803#define SSL_CTX_sess_connect(ctx) \ 886#define SSL_CTX_sess_connect(ctx) \
@@ -839,6 +922,31 @@ int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e);
839void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)); 922void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len));
840void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, unsigned int cookie_len)); 923void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, unsigned int cookie_len));
841 924
925#ifndef OPENSSL_NO_PSK
926/* the maximum length of the buffer given to callbacks containing the
927 * resulting identity/psk */
928#define PSK_MAX_IDENTITY_LEN 128
929#define PSK_MAX_PSK_LEN 256
930void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx,
931 unsigned int (*psk_client_callback)(SSL *ssl, const char *hint,
932 char *identity, unsigned int max_identity_len, unsigned char *psk,
933 unsigned int max_psk_len));
934void SSL_set_psk_client_callback(SSL *ssl,
935 unsigned int (*psk_client_callback)(SSL *ssl, const char *hint,
936 char *identity, unsigned int max_identity_len, unsigned char *psk,
937 unsigned int max_psk_len));
938void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx,
939 unsigned int (*psk_server_callback)(SSL *ssl, const char *identity,
940 unsigned char *psk, unsigned int max_psk_len));
941void SSL_set_psk_server_callback(SSL *ssl,
942 unsigned int (*psk_server_callback)(SSL *ssl, const char *identity,
943 unsigned char *psk, unsigned int max_psk_len));
944int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint);
945int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint);
946const char *SSL_get_psk_identity_hint(const SSL *s);
947const char *SSL_get_psk_identity(const SSL *s);
948#endif
949
842#define SSL_NOTHING 1 950#define SSL_NOTHING 1
843#define SSL_WRITING 2 951#define SSL_WRITING 2
844#define SSL_READING 3 952#define SSL_READING 3
@@ -850,6 +958,9 @@ void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, int (*app_verify_cookie_cb)(SSL
850#define SSL_want_write(s) (SSL_want(s) == SSL_WRITING) 958#define SSL_want_write(s) (SSL_want(s) == SSL_WRITING)
851#define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP) 959#define SSL_want_x509_lookup(s) (SSL_want(s) == SSL_X509_LOOKUP)
852 960
961#define SSL_MAC_FLAG_READ_MAC_STREAM 1
962#define SSL_MAC_FLAG_WRITE_MAC_STREAM 2
963
853struct ssl_st 964struct ssl_st
854 { 965 {
855 /* protocol version 966 /* protocol version
@@ -858,7 +969,7 @@ struct ssl_st
858 int version; 969 int version;
859 int type; /* SSL_ST_CONNECT or SSL_ST_ACCEPT */ 970 int type; /* SSL_ST_CONNECT or SSL_ST_ACCEPT */
860 971
861 SSL_METHOD *method; /* SSLv3 */ 972 const SSL_METHOD *method; /* SSLv3 */
862 973
863 /* There are 2 BIO's even though they are normally both the 974 /* There are 2 BIO's even though they are normally both the
864 * same. This is so data can be read and written to different 975 * same. This is so data can be read and written to different
@@ -941,9 +1052,9 @@ struct ssl_st
941 1052
942 /* These are the ones being used, the ones in SSL_SESSION are 1053 /* These are the ones being used, the ones in SSL_SESSION are
943 * the ones to be 'copied' into these ones */ 1054 * the ones to be 'copied' into these ones */
944 1055 int mac_flags;
945 EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */ 1056 EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */
946 const EVP_MD *read_hash; /* used for mac generation */ 1057 EVP_MD_CTX *read_hash; /* used for mac generation */
947#ifndef OPENSSL_NO_COMP 1058#ifndef OPENSSL_NO_COMP
948 COMP_CTX *expand; /* uncompress */ 1059 COMP_CTX *expand; /* uncompress */
949#else 1060#else
@@ -951,7 +1062,7 @@ struct ssl_st
951#endif 1062#endif
952 1063
953 EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ 1064 EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */
954 const EVP_MD *write_hash; /* used for mac generation */ 1065 EVP_MD_CTX *write_hash; /* used for mac generation */
955#ifndef OPENSSL_NO_COMP 1066#ifndef OPENSSL_NO_COMP
956 COMP_CTX *compress; /* compression */ 1067 COMP_CTX *compress; /* compression */
957#else 1068#else
@@ -989,6 +1100,14 @@ struct ssl_st
989 KSSL_CTX *kssl_ctx; /* Kerberos 5 context */ 1100 KSSL_CTX *kssl_ctx; /* Kerberos 5 context */
990#endif /* OPENSSL_NO_KRB5 */ 1101#endif /* OPENSSL_NO_KRB5 */
991 1102
1103#ifndef OPENSSL_NO_PSK
1104 unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, char *identity,
1105 unsigned int max_identity_len, unsigned char *psk,
1106 unsigned int max_psk_len);
1107 unsigned int (*psk_server_callback)(SSL *ssl, const char *identity,
1108 unsigned char *psk, unsigned int max_psk_len);
1109#endif
1110
992 SSL_CTX *ctx; 1111 SSL_CTX *ctx;
993 /* set this flag to 1 and a sleep(1) is put into all SSL_read() 1112 /* set this flag to 1 and a sleep(1) is put into all SSL_read()
994 * and SSL_write() calls, good for nbio debuging :-) */ 1113 * and SSL_write() calls, good for nbio debuging :-) */
@@ -1008,6 +1127,7 @@ struct ssl_st
1008 int first_packet; 1127 int first_packet;
1009 int client_version; /* what was passed, used for 1128 int client_version; /* what was passed, used for
1010 * SSLv3/TLS rollback check */ 1129 * SSLv3/TLS rollback check */
1130 unsigned int max_send_fragment;
1011#ifndef OPENSSL_NO_TLSEXT 1131#ifndef OPENSSL_NO_TLSEXT
1012 /* TLS extension debug callback */ 1132 /* TLS extension debug callback */
1013 void (*tlsext_debug_cb)(SSL *s, int client_server, int type, 1133 void (*tlsext_debug_cb)(SSL *s, int client_server, int type,
@@ -1034,11 +1154,33 @@ struct ssl_st
1034 1154
1035 /* RFC4507 session ticket expected to be received or sent */ 1155 /* RFC4507 session ticket expected to be received or sent */
1036 int tlsext_ticket_expected; 1156 int tlsext_ticket_expected;
1157#ifndef OPENSSL_NO_EC
1158 size_t tlsext_ecpointformatlist_length;
1159 unsigned char *tlsext_ecpointformatlist; /* our list */
1160 size_t tlsext_ellipticcurvelist_length;
1161 unsigned char *tlsext_ellipticcurvelist; /* our list */
1162#endif /* OPENSSL_NO_EC */
1163
1164 /* draft-rescorla-tls-opaque-prf-input-00.txt information to be used for handshakes */
1165 void *tlsext_opaque_prf_input;
1166 size_t tlsext_opaque_prf_input_len;
1167
1168 /* TLS Session Ticket extension override */
1169 TLS_SESSION_TICKET_EXT *tlsext_session_ticket;
1170
1171 /* TLS Session Ticket extension callback */
1172 tls_session_ticket_ext_cb_fn tls_session_ticket_ext_cb;
1173 void *tls_session_ticket_ext_cb_arg;
1174
1175 /* TLS pre-shared secret session resumption */
1176 tls_session_secret_cb_fn tls_session_secret_cb;
1177 void *tls_session_secret_cb_arg;
1178
1037 SSL_CTX * initial_ctx; /* initial ctx, used to store sessions */ 1179 SSL_CTX * initial_ctx; /* initial ctx, used to store sessions */
1038#define session_ctx initial_ctx 1180#define session_ctx initial_ctx
1039#else 1181#else
1040#define session_ctx ctx 1182#define session_ctx ctx
1041#endif 1183#endif /* OPENSSL_NO_TLSEXT */
1042 }; 1184 };
1043 1185
1044#ifdef __cplusplus 1186#ifdef __cplusplus
@@ -1145,20 +1287,13 @@ size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);
1145#define SSL_get_timeout(a) SSL_SESSION_get_timeout(a) 1287#define SSL_get_timeout(a) SSL_SESSION_get_timeout(a)
1146#define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b)) 1288#define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b))
1147 1289
1148#if 1 /*SSLEAY_MACROS*/
1149#define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id) 1290#define d2i_SSL_SESSION_bio(bp,s_id) ASN1_d2i_bio_of(SSL_SESSION,SSL_SESSION_new,d2i_SSL_SESSION,bp,s_id)
1150#define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id) 1291#define i2d_SSL_SESSION_bio(bp,s_id) ASN1_i2d_bio_of(SSL_SESSION,i2d_SSL_SESSION,bp,s_id)
1151#define PEM_read_SSL_SESSION(fp,x,cb,u) (SSL_SESSION *)PEM_ASN1_read( \
1152 (char *(*)())d2i_SSL_SESSION,PEM_STRING_SSL_SESSION,fp,(char **)x,cb,u)
1153#define PEM_read_bio_SSL_SESSION(bp,x,cb,u) PEM_ASN1_read_bio_of(SSL_SESSION,d2i_SSL_SESSION,PEM_STRING_SSL_SESSION,bp,x,cb,u)
1154#define PEM_write_SSL_SESSION(fp,x) \
1155 PEM_ASN1_write((int (*)())i2d_SSL_SESSION, \
1156 PEM_STRING_SSL_SESSION,fp, (char *)x, NULL,NULL,0,NULL,NULL)
1157#define PEM_write_bio_SSL_SESSION(bp,x) \
1158 PEM_ASN1_write_bio_of(SSL_SESSION,i2d_SSL_SESSION,PEM_STRING_SSL_SESSION,bp,x,NULL,NULL,0,NULL,NULL)
1159#endif
1160 1292
1161#define SSL_AD_REASON_OFFSET 1000 1293DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
1294
1295#define SSL_AD_REASON_OFFSET 1000 /* offset to get SSL_R_... value from SSL_AD_... */
1296
1162/* These alert types are for SSLv3 and TLSv1 */ 1297/* These alert types are for SSLv3 and TLSv1 */
1163#define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY 1298#define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY
1164#define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE /* fatal */ 1299#define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE /* fatal */
@@ -1188,6 +1323,8 @@ size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);
1188#define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE 1323#define SSL_AD_CERTIFICATE_UNOBTAINABLE TLS1_AD_CERTIFICATE_UNOBTAINABLE
1189#define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME 1324#define SSL_AD_UNRECOGNIZED_NAME TLS1_AD_UNRECOGNIZED_NAME
1190#define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE 1325#define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE
1326#define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE
1327#define SSL_AD_UNKNOWN_PSK_IDENTITY TLS1_AD_UNKNOWN_PSK_IDENTITY /* fatal */
1191 1328
1192#define SSL_ERROR_NONE 0 1329#define SSL_ERROR_NONE 0
1193#define SSL_ERROR_SSL 1 1330#define SSL_ERROR_SSL 1
@@ -1246,6 +1383,8 @@ size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);
1246#define SSL_CTRL_GET_MAX_CERT_LIST 50 1383#define SSL_CTRL_GET_MAX_CERT_LIST 50
1247#define SSL_CTRL_SET_MAX_CERT_LIST 51 1384#define SSL_CTRL_SET_MAX_CERT_LIST 51
1248 1385
1386#define SSL_CTRL_SET_MAX_SEND_FRAGMENT 52
1387
1249/* see tls1.h for macros based on these */ 1388/* see tls1.h for macros based on these */
1250#ifndef OPENSSL_NO_TLSEXT 1389#ifndef OPENSSL_NO_TLSEXT
1251#define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 1390#define SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53
@@ -1255,7 +1394,9 @@ size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);
1255#define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 1394#define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57
1256#define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 1395#define SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58
1257#define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 1396#define SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59
1258 1397#define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT 60
1398#define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61
1399#define SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62
1259#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 1400#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63
1260#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 1401#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64
1261#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 1402#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65
@@ -1269,6 +1410,21 @@ size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);
1269#define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 1410#define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72
1270#endif 1411#endif
1271 1412
1413#define DTLS_CTRL_GET_TIMEOUT 73
1414#define DTLS_CTRL_HANDLE_TIMEOUT 74
1415#define DTLS_CTRL_LISTEN 75
1416
1417#define SSL_CTRL_GET_RI_SUPPORT 76
1418#define SSL_CTRL_CLEAR_OPTIONS 77
1419#define SSL_CTRL_CLEAR_MODE 78
1420
1421#define DTLSv1_get_timeout(ssl, arg) \
1422 SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)arg)
1423#define DTLSv1_handle_timeout(ssl) \
1424 SSL_ctrl(ssl,DTLS_CTRL_HANDLE_TIMEOUT,0, NULL)
1425#define DTLSv1_listen(ssl, peer) \
1426 SSL_ctrl(ssl,DTLS_CTRL_LISTEN,0, (void *)peer)
1427
1272#define SSL_session_reused(ssl) \ 1428#define SSL_session_reused(ssl) \
1273 SSL_ctrl((ssl),SSL_CTRL_GET_SESSION_REUSED,0,NULL) 1429 SSL_ctrl((ssl),SSL_CTRL_GET_SESSION_REUSED,0,NULL)
1274#define SSL_num_renegotiations(ssl) \ 1430#define SSL_num_renegotiations(ssl) \
@@ -1310,7 +1466,7 @@ void BIO_ssl_shutdown(BIO *ssl_bio);
1310#endif 1466#endif
1311 1467
1312int SSL_CTX_set_cipher_list(SSL_CTX *,const char *str); 1468int SSL_CTX_set_cipher_list(SSL_CTX *,const char *str);
1313SSL_CTX *SSL_CTX_new(SSL_METHOD *meth); 1469SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth);
1314void SSL_CTX_free(SSL_CTX *); 1470void SSL_CTX_free(SSL_CTX *);
1315long SSL_CTX_set_timeout(SSL_CTX *ctx,long t); 1471long SSL_CTX_set_timeout(SSL_CTX *ctx,long t);
1316long SSL_CTX_get_timeout(const SSL_CTX *ctx); 1472long SSL_CTX_get_timeout(const SSL_CTX *ctx);
@@ -1321,7 +1477,7 @@ int SSL_clear(SSL *s);
1321 1477
1322void SSL_CTX_flush_sessions(SSL_CTX *ctx,long tm); 1478void SSL_CTX_flush_sessions(SSL_CTX *ctx,long tm);
1323 1479
1324SSL_CIPHER *SSL_get_current_cipher(const SSL *s); 1480const SSL_CIPHER *SSL_get_current_cipher(const SSL *s);
1325int SSL_CIPHER_get_bits(const SSL_CIPHER *c,int *alg_bits); 1481int SSL_CIPHER_get_bits(const SSL_CIPHER *c,int *alg_bits);
1326char * SSL_CIPHER_get_version(const SSL_CIPHER *c); 1482char * SSL_CIPHER_get_version(const SSL_CIPHER *c);
1327const char * SSL_CIPHER_get_name(const SSL_CIPHER *c); 1483const char * SSL_CIPHER_get_name(const SSL_CIPHER *c);
@@ -1392,9 +1548,8 @@ long SSL_SESSION_set_timeout(SSL_SESSION *s, long t);
1392void SSL_copy_session_id(SSL *to,const SSL *from); 1548void SSL_copy_session_id(SSL *to,const SSL *from);
1393 1549
1394SSL_SESSION *SSL_SESSION_new(void); 1550SSL_SESSION *SSL_SESSION_new(void);
1395unsigned long SSL_SESSION_hash(const SSL_SESSION *a); 1551const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s,
1396int SSL_SESSION_cmp(const SSL_SESSION *a,const SSL_SESSION *b); 1552 unsigned int *len);
1397const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, unsigned int *len);
1398#ifndef OPENSSL_NO_FP_API 1553#ifndef OPENSSL_NO_FP_API
1399int SSL_SESSION_print_fp(FILE *fp,const SSL_SESSION *ses); 1554int SSL_SESSION_print_fp(FILE *fp,const SSL_SESSION *ses);
1400#endif 1555#endif
@@ -1454,6 +1609,9 @@ int SSL_set_purpose(SSL *s, int purpose);
1454int SSL_CTX_set_trust(SSL_CTX *s, int trust); 1609int SSL_CTX_set_trust(SSL_CTX *s, int trust);
1455int SSL_set_trust(SSL *s, int trust); 1610int SSL_set_trust(SSL *s, int trust);
1456 1611
1612int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm);
1613int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm);
1614
1457void SSL_free(SSL *ssl); 1615void SSL_free(SSL *ssl);
1458int SSL_accept(SSL *ssl); 1616int SSL_accept(SSL *ssl);
1459int SSL_connect(SSL *ssl); 1617int SSL_connect(SSL *ssl);
@@ -1469,27 +1627,29 @@ int SSL_get_error(const SSL *s,int ret_code);
1469const char *SSL_get_version(const SSL *s); 1627const char *SSL_get_version(const SSL *s);
1470 1628
1471/* This sets the 'default' SSL version that SSL_new() will create */ 1629/* This sets the 'default' SSL version that SSL_new() will create */
1472int SSL_CTX_set_ssl_version(SSL_CTX *ctx,SSL_METHOD *meth); 1630int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth);
1473 1631
1474SSL_METHOD *SSLv2_method(void); /* SSLv2 */ 1632#ifndef OPENSSL_NO_SSL2
1475SSL_METHOD *SSLv2_server_method(void); /* SSLv2 */ 1633const SSL_METHOD *SSLv2_method(void); /* SSLv2 */
1476SSL_METHOD *SSLv2_client_method(void); /* SSLv2 */ 1634const SSL_METHOD *SSLv2_server_method(void); /* SSLv2 */
1635const SSL_METHOD *SSLv2_client_method(void); /* SSLv2 */
1636#endif
1477 1637
1478SSL_METHOD *SSLv3_method(void); /* SSLv3 */ 1638const SSL_METHOD *SSLv3_method(void); /* SSLv3 */
1479SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */ 1639const SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */
1480SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */ 1640const SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */
1481 1641
1482SSL_METHOD *SSLv23_method(void); /* SSLv3 but can rollback to v2 */ 1642const SSL_METHOD *SSLv23_method(void); /* SSLv3 but can rollback to v2 */
1483SSL_METHOD *SSLv23_server_method(void); /* SSLv3 but can rollback to v2 */ 1643const SSL_METHOD *SSLv23_server_method(void); /* SSLv3 but can rollback to v2 */
1484SSL_METHOD *SSLv23_client_method(void); /* SSLv3 but can rollback to v2 */ 1644const SSL_METHOD *SSLv23_client_method(void); /* SSLv3 but can rollback to v2 */
1485 1645
1486SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ 1646const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */
1487SSL_METHOD *TLSv1_server_method(void); /* TLSv1.0 */ 1647const SSL_METHOD *TLSv1_server_method(void); /* TLSv1.0 */
1488SSL_METHOD *TLSv1_client_method(void); /* TLSv1.0 */ 1648const SSL_METHOD *TLSv1_client_method(void); /* TLSv1.0 */
1489 1649
1490SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ 1650const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */
1491SSL_METHOD *DTLSv1_server_method(void); /* DTLSv1.0 */ 1651const SSL_METHOD *DTLSv1_server_method(void); /* DTLSv1.0 */
1492SSL_METHOD *DTLSv1_client_method(void); /* DTLSv1.0 */ 1652const SSL_METHOD *DTLSv1_client_method(void); /* DTLSv1.0 */
1493 1653
1494STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s); 1654STACK_OF(SSL_CIPHER) *SSL_get_ciphers(const SSL *s);
1495 1655
@@ -1498,8 +1658,8 @@ int SSL_renegotiate(SSL *s);
1498int SSL_renegotiate_pending(SSL *s); 1658int SSL_renegotiate_pending(SSL *s);
1499int SSL_shutdown(SSL *s); 1659int SSL_shutdown(SSL *s);
1500 1660
1501SSL_METHOD *SSL_get_ssl_method(SSL *s); 1661const SSL_METHOD *SSL_get_ssl_method(SSL *s);
1502int SSL_set_ssl_method(SSL *s,SSL_METHOD *method); 1662int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);
1503const char *SSL_alert_type_string_long(int value); 1663const char *SSL_alert_type_string_long(int value);
1504const char *SSL_alert_type_string(int value); 1664const char *SSL_alert_type_string(int value);
1505const char *SSL_alert_desc_string_long(int value); 1665const char *SSL_alert_desc_string_long(int value);
@@ -1519,7 +1679,7 @@ long SSL_get_default_timeout(const SSL *s);
1519 1679
1520int SSL_library_init(void ); 1680int SSL_library_init(void );
1521 1681
1522char *SSL_CIPHER_description(SSL_CIPHER *,char *buf,int size); 1682char *SSL_CIPHER_description(const SSL_CIPHER *,char *buf,int size);
1523STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk); 1683STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk);
1524 1684
1525SSL *SSL_dup(SSL *ssl); 1685SSL *SSL_dup(SSL *ssl);
@@ -1591,6 +1751,11 @@ int SSL_get_ex_data_X509_STORE_CTX_idx(void );
1591#define SSL_set_max_cert_list(ssl,m) \ 1751#define SSL_set_max_cert_list(ssl,m) \
1592 SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL) 1752 SSL_ctrl(ssl,SSL_CTRL_SET_MAX_CERT_LIST,m,NULL)
1593 1753
1754#define SSL_CTX_set_max_send_fragment(ctx,m) \
1755 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
1756#define SSL_set_max_send_fragment(ssl,m) \
1757 SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL)
1758
1594 /* NB: the keylength is only applicable when is_export is true */ 1759 /* NB: the keylength is only applicable when is_export is true */
1595#ifndef OPENSSL_NO_RSA 1760#ifndef OPENSSL_NO_RSA
1596void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, 1761void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx,
@@ -1632,6 +1797,15 @@ void *SSL_COMP_get_compression_methods(void);
1632int SSL_COMP_add_compression_method(int id,void *cm); 1797int SSL_COMP_add_compression_method(int id,void *cm);
1633#endif 1798#endif
1634 1799
1800/* TLS extensions functions */
1801int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len);
1802
1803int SSL_set_session_ticket_ext_cb(SSL *s, tls_session_ticket_ext_cb_fn cb,
1804 void *arg);
1805
1806/* Pre-shared secret session resumption functions */
1807int SSL_set_session_secret_cb(SSL *s, tls_session_secret_cb_fn tls_session_secret_cb, void *arg);
1808
1635/* BEGIN ERROR CODES */ 1809/* BEGIN ERROR CODES */
1636/* The following lines are auto generated by the script mkerr.pl. Any changes 1810/* The following lines are auto generated by the script mkerr.pl. Any changes
1637 * made after this point may be overwritten when the script is next run. 1811 * made after this point may be overwritten when the script is next run.
@@ -1649,6 +1823,7 @@ void ERR_load_SSL_strings(void);
1649#define SSL_F_DO_DTLS1_WRITE 245 1823#define SSL_F_DO_DTLS1_WRITE 245
1650#define SSL_F_DO_SSL3_WRITE 104 1824#define SSL_F_DO_SSL3_WRITE 104
1651#define SSL_F_DTLS1_ACCEPT 246 1825#define SSL_F_DTLS1_ACCEPT 246
1826#define SSL_F_DTLS1_ADD_CERT_TO_BUF 295
1652#define SSL_F_DTLS1_BUFFER_RECORD 247 1827#define SSL_F_DTLS1_BUFFER_RECORD 247
1653#define SSL_F_DTLS1_CLIENT_HELLO 248 1828#define SSL_F_DTLS1_CLIENT_HELLO 248
1654#define SSL_F_DTLS1_CONNECT 249 1829#define SSL_F_DTLS1_CONNECT 249
@@ -1657,8 +1832,9 @@ void ERR_load_SSL_strings(void);
1657#define SSL_F_DTLS1_GET_MESSAGE 252 1832#define SSL_F_DTLS1_GET_MESSAGE 252
1658#define SSL_F_DTLS1_GET_MESSAGE_FRAGMENT 253 1833#define SSL_F_DTLS1_GET_MESSAGE_FRAGMENT 253
1659#define SSL_F_DTLS1_GET_RECORD 254 1834#define SSL_F_DTLS1_GET_RECORD 254
1835#define SSL_F_DTLS1_HANDLE_TIMEOUT 297
1660#define SSL_F_DTLS1_OUTPUT_CERT_CHAIN 255 1836#define SSL_F_DTLS1_OUTPUT_CERT_CHAIN 255
1661#define SSL_F_DTLS1_PREPROCESS_FRAGMENT 277 1837#define SSL_F_DTLS1_PREPROCESS_FRAGMENT 288
1662#define SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE 256 1838#define SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE 256
1663#define SSL_F_DTLS1_PROCESS_RECORD 257 1839#define SSL_F_DTLS1_PROCESS_RECORD 257
1664#define SSL_F_DTLS1_READ_BYTES 258 1840#define SSL_F_DTLS1_READ_BYTES 258
@@ -1702,6 +1878,7 @@ void ERR_load_SSL_strings(void);
1702#define SSL_F_SSL2_SET_CERTIFICATE 126 1878#define SSL_F_SSL2_SET_CERTIFICATE 126
1703#define SSL_F_SSL2_WRITE 127 1879#define SSL_F_SSL2_WRITE 127
1704#define SSL_F_SSL3_ACCEPT 128 1880#define SSL_F_SSL3_ACCEPT 128
1881#define SSL_F_SSL3_ADD_CERT_TO_BUF 296
1705#define SSL_F_SSL3_CALLBACK_CTRL 233 1882#define SSL_F_SSL3_CALLBACK_CTRL 233
1706#define SSL_F_SSL3_CHANGE_CIPHER_STATE 129 1883#define SSL_F_SSL3_CHANGE_CIPHER_STATE 129
1707#define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130 1884#define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130
@@ -1709,11 +1886,12 @@ void ERR_load_SSL_strings(void);
1709#define SSL_F_SSL3_CONNECT 132 1886#define SSL_F_SSL3_CONNECT 132
1710#define SSL_F_SSL3_CTRL 213 1887#define SSL_F_SSL3_CTRL 213
1711#define SSL_F_SSL3_CTX_CTRL 133 1888#define SSL_F_SSL3_CTX_CTRL 133
1712#define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 279 1889#define SSL_F_SSL3_DIGEST_CACHED_RECORDS 293
1890#define SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC 292
1713#define SSL_F_SSL3_ENC 134 1891#define SSL_F_SSL3_ENC 134
1714#define SSL_F_SSL3_GENERATE_KEY_BLOCK 238 1892#define SSL_F_SSL3_GENERATE_KEY_BLOCK 238
1715#define SSL_F_SSL3_GET_CERTIFICATE_REQUEST 135 1893#define SSL_F_SSL3_GET_CERTIFICATE_REQUEST 135
1716#define SSL_F_SSL3_GET_CERT_STATUS 288 1894#define SSL_F_SSL3_GET_CERT_STATUS 289
1717#define SSL_F_SSL3_GET_CERT_VERIFY 136 1895#define SSL_F_SSL3_GET_CERT_VERIFY 136
1718#define SSL_F_SSL3_GET_CLIENT_CERTIFICATE 137 1896#define SSL_F_SSL3_GET_CLIENT_CERTIFICATE 137
1719#define SSL_F_SSL3_GET_CLIENT_HELLO 138 1897#define SSL_F_SSL3_GET_CLIENT_HELLO 138
@@ -1726,7 +1904,8 @@ void ERR_load_SSL_strings(void);
1726#define SSL_F_SSL3_GET_SERVER_CERTIFICATE 144 1904#define SSL_F_SSL3_GET_SERVER_CERTIFICATE 144
1727#define SSL_F_SSL3_GET_SERVER_DONE 145 1905#define SSL_F_SSL3_GET_SERVER_DONE 145
1728#define SSL_F_SSL3_GET_SERVER_HELLO 146 1906#define SSL_F_SSL3_GET_SERVER_HELLO 146
1729#define SSL_F_SSL3_NEW_SESSION_TICKET 284 1907#define SSL_F_SSL3_HANDSHAKE_MAC 285
1908#define SSL_F_SSL3_NEW_SESSION_TICKET 287
1730#define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147 1909#define SSL_F_SSL3_OUTPUT_CERT_CHAIN 147
1731#define SSL_F_SSL3_PEEK 235 1910#define SSL_F_SSL3_PEEK 235
1732#define SSL_F_SSL3_READ_BYTES 148 1911#define SSL_F_SSL3_READ_BYTES 148
@@ -1738,14 +1917,17 @@ void ERR_load_SSL_strings(void);
1738#define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 154 1917#define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 154
1739#define SSL_F_SSL3_SEND_SERVER_HELLO 242 1918#define SSL_F_SSL3_SEND_SERVER_HELLO 242
1740#define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 155 1919#define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 155
1741#define SSL_F_SSL3_SETUP_BUFFERS 156
1742#define SSL_F_SSL3_SETUP_KEY_BLOCK 157 1920#define SSL_F_SSL3_SETUP_KEY_BLOCK 157
1921#define SSL_F_SSL3_SETUP_READ_BUFFER 156
1922#define SSL_F_SSL3_SETUP_WRITE_BUFFER 291
1743#define SSL_F_SSL3_WRITE_BYTES 158 1923#define SSL_F_SSL3_WRITE_BYTES 158
1744#define SSL_F_SSL3_WRITE_PENDING 159 1924#define SSL_F_SSL3_WRITE_PENDING 159
1745#define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 272 1925#define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT 298
1926#define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT 277
1746#define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215 1927#define SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK 215
1747#define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216 1928#define SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK 216
1748#define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 273 1929#define SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT 299
1930#define SSL_F_SSL_ADD_SERVERHELLO_TLSEXT 278
1749#define SSL_F_SSL_BAD_METHOD 160 1931#define SSL_F_SSL_BAD_METHOD 160
1750#define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161 1932#define SSL_F_SSL_BYTES_TO_CIPHER_LIST 161
1751#define SSL_F_SSL_CERT_DUP 221 1933#define SSL_F_SSL_CERT_DUP 221
@@ -1753,7 +1935,8 @@ void ERR_load_SSL_strings(void);
1753#define SSL_F_SSL_CERT_INSTANTIATE 214 1935#define SSL_F_SSL_CERT_INSTANTIATE 214
1754#define SSL_F_SSL_CERT_NEW 162 1936#define SSL_F_SSL_CERT_NEW 162
1755#define SSL_F_SSL_CHECK_PRIVATE_KEY 163 1937#define SSL_F_SSL_CHECK_PRIVATE_KEY 163
1756#define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 274 1938#define SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT 280
1939#define SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG 279
1757#define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230 1940#define SSL_F_SSL_CIPHER_PROCESS_RULESTR 230
1758#define SSL_F_SSL_CIPHER_STRENGTH_SORT 231 1941#define SSL_F_SSL_CIPHER_STRENGTH_SORT 231
1759#define SSL_F_SSL_CLEAR 164 1942#define SSL_F_SSL_CLEAR 164
@@ -1763,7 +1946,7 @@ void ERR_load_SSL_strings(void);
1763#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168 1946#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 168
1764#define SSL_F_SSL_CTX_NEW 169 1947#define SSL_F_SSL_CTX_NEW 169
1765#define SSL_F_SSL_CTX_SET_CIPHER_LIST 269 1948#define SSL_F_SSL_CTX_SET_CIPHER_LIST 269
1766#define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 278 1949#define SSL_F_SSL_CTX_SET_CLIENT_CERT_ENGINE 290
1767#define SSL_F_SSL_CTX_SET_PURPOSE 226 1950#define SSL_F_SSL_CTX_SET_PURPOSE 226
1768#define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219 1951#define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 219
1769#define SSL_F_SSL_CTX_SET_SSL_VERSION 170 1952#define SSL_F_SSL_CTX_SET_SSL_VERSION 170
@@ -1775,6 +1958,7 @@ void ERR_load_SSL_strings(void);
1775#define SSL_F_SSL_CTX_USE_PRIVATEKEY 174 1958#define SSL_F_SSL_CTX_USE_PRIVATEKEY 174
1776#define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175 1959#define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175
1777#define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176 1960#define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176
1961#define SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT 272
1778#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177 1962#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177
1779#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178 1963#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178
1780#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179 1964#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179
@@ -1786,9 +1970,13 @@ void ERR_load_SSL_strings(void);
1786#define SSL_F_SSL_INIT_WBIO_BUFFER 184 1970#define SSL_F_SSL_INIT_WBIO_BUFFER 184
1787#define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185 1971#define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185
1788#define SSL_F_SSL_NEW 186 1972#define SSL_F_SSL_NEW 186
1973#define SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT 300
1974#define SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT 302
1975#define SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT 301
1976#define SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT 303
1789#define SSL_F_SSL_PEEK 270 1977#define SSL_F_SSL_PEEK 270
1790#define SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT 275 1978#define SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT 281
1791#define SSL_F_SSL_PREPARE_SERVERHELLO_TLSEXT 276 1979#define SSL_F_SSL_PREPARE_SERVERHELLO_TLSEXT 282
1792#define SSL_F_SSL_READ 223 1980#define SSL_F_SSL_READ 223
1793#define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187 1981#define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187
1794#define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188 1982#define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188
@@ -1803,6 +1991,7 @@ void ERR_load_SSL_strings(void);
1803#define SSL_F_SSL_SET_RFD 194 1991#define SSL_F_SSL_SET_RFD 194
1804#define SSL_F_SSL_SET_SESSION 195 1992#define SSL_F_SSL_SET_SESSION 195
1805#define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218 1993#define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218
1994#define SSL_F_SSL_SET_SESSION_TICKET_EXT 294
1806#define SSL_F_SSL_SET_TRUST 228 1995#define SSL_F_SSL_SET_TRUST 228
1807#define SSL_F_SSL_SET_WFD 196 1996#define SSL_F_SSL_SET_WFD 196
1808#define SSL_F_SSL_SHUTDOWN 224 1997#define SSL_F_SSL_SHUTDOWN 224
@@ -1815,13 +2004,19 @@ void ERR_load_SSL_strings(void);
1815#define SSL_F_SSL_USE_PRIVATEKEY 201 2004#define SSL_F_SSL_USE_PRIVATEKEY 201
1816#define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202 2005#define SSL_F_SSL_USE_PRIVATEKEY_ASN1 202
1817#define SSL_F_SSL_USE_PRIVATEKEY_FILE 203 2006#define SSL_F_SSL_USE_PRIVATEKEY_FILE 203
2007#define SSL_F_SSL_USE_PSK_IDENTITY_HINT 273
1818#define SSL_F_SSL_USE_RSAPRIVATEKEY 204 2008#define SSL_F_SSL_USE_RSAPRIVATEKEY 204
1819#define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205 2009#define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 205
1820#define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206 2010#define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 206
1821#define SSL_F_SSL_VERIFY_CERT_CHAIN 207 2011#define SSL_F_SSL_VERIFY_CERT_CHAIN 207
1822#define SSL_F_SSL_WRITE 208 2012#define SSL_F_SSL_WRITE 208
2013#define SSL_F_TLS1_CERT_VERIFY_MAC 286
1823#define SSL_F_TLS1_CHANGE_CIPHER_STATE 209 2014#define SSL_F_TLS1_CHANGE_CIPHER_STATE 209
2015#define SSL_F_TLS1_CHECK_SERVERHELLO_TLSEXT 274
1824#define SSL_F_TLS1_ENC 210 2016#define SSL_F_TLS1_ENC 210
2017#define SSL_F_TLS1_PREPARE_CLIENTHELLO_TLSEXT 275
2018#define SSL_F_TLS1_PREPARE_SERVERHELLO_TLSEXT 276
2019#define SSL_F_TLS1_PRF 284
1825#define SSL_F_TLS1_SETUP_KEY_BLOCK 211 2020#define SSL_F_TLS1_SETUP_KEY_BLOCK 211
1826#define SSL_F_WRITE_PENDING 212 2021#define SSL_F_WRITE_PENDING 212
1827 2022
@@ -1842,12 +2037,15 @@ void ERR_load_SSL_strings(void);
1842#define SSL_R_BAD_ECC_CERT 304 2037#define SSL_R_BAD_ECC_CERT 304
1843#define SSL_R_BAD_ECDSA_SIGNATURE 305 2038#define SSL_R_BAD_ECDSA_SIGNATURE 305
1844#define SSL_R_BAD_ECPOINT 306 2039#define SSL_R_BAD_ECPOINT 306
2040#define SSL_R_BAD_HANDSHAKE_LENGTH 332
1845#define SSL_R_BAD_HELLO_REQUEST 105 2041#define SSL_R_BAD_HELLO_REQUEST 105
1846#define SSL_R_BAD_LENGTH 271 2042#define SSL_R_BAD_LENGTH 271
1847#define SSL_R_BAD_MAC_DECODE 113 2043#define SSL_R_BAD_MAC_DECODE 113
2044#define SSL_R_BAD_MAC_LENGTH 333
1848#define SSL_R_BAD_MESSAGE_TYPE 114 2045#define SSL_R_BAD_MESSAGE_TYPE 114
1849#define SSL_R_BAD_PACKET_LENGTH 115 2046#define SSL_R_BAD_PACKET_LENGTH 115
1850#define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116 2047#define SSL_R_BAD_PROTOCOL_VERSION_NUMBER 116
2048#define SSL_R_BAD_PSK_IDENTITY_HINT_LENGTH 316
1851#define SSL_R_BAD_RESPONSE_ARGUMENT 117 2049#define SSL_R_BAD_RESPONSE_ARGUMENT 117
1852#define SSL_R_BAD_RSA_DECRYPT 118 2050#define SSL_R_BAD_RSA_DECRYPT 118
1853#define SSL_R_BAD_RSA_ENCRYPT 119 2051#define SSL_R_BAD_RSA_ENCRYPT 119
@@ -1871,8 +2069,9 @@ void ERR_load_SSL_strings(void);
1871#define SSL_R_CIPHER_CODE_WRONG_LENGTH 137 2069#define SSL_R_CIPHER_CODE_WRONG_LENGTH 137
1872#define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138 2070#define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138
1873#define SSL_R_CIPHER_TABLE_SRC_ERROR 139 2071#define SSL_R_CIPHER_TABLE_SRC_ERROR 139
1874#define SSL_R_CLIENTHELLO_TLSEXT 157 2072#define SSL_R_CLIENTHELLO_TLSEXT 226
1875#define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140 2073#define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140
2074#define SSL_R_COMPRESSION_DISABLED 343
1876#define SSL_R_COMPRESSION_FAILURE 141 2075#define SSL_R_COMPRESSION_FAILURE 141
1877#define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307 2076#define SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE 307
1878#define SSL_R_COMPRESSION_LIBRARY_ERROR 142 2077#define SSL_R_COMPRESSION_LIBRARY_ERROR 142
@@ -1885,7 +2084,12 @@ void ERR_load_SSL_strings(void);
1885#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281 2084#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC 281
1886#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148 2085#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148
1887#define SSL_R_DIGEST_CHECK_FAILED 149 2086#define SSL_R_DIGEST_CHECK_FAILED 149
2087#define SSL_R_DTLS_MESSAGE_TOO_BIG 334
1888#define SSL_R_DUPLICATE_COMPRESSION_ID 309 2088#define SSL_R_DUPLICATE_COMPRESSION_ID 309
2089#define SSL_R_ECC_CERT_NOT_FOR_KEY_AGREEMENT 317
2090#define SSL_R_ECC_CERT_NOT_FOR_SIGNING 318
2091#define SSL_R_ECC_CERT_SHOULD_HAVE_RSA_SIGNATURE 322
2092#define SSL_R_ECC_CERT_SHOULD_HAVE_SHA1_SIGNATURE 323
1889#define SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER 310 2093#define SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER 310
1890#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150 2094#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150
1891#define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 282 2095#define SSL_R_ERROR_GENERATING_TMP_RSA_KEY 282
@@ -1896,11 +2100,13 @@ void ERR_load_SSL_strings(void);
1896#define SSL_R_HTTPS_PROXY_REQUEST 155 2100#define SSL_R_HTTPS_PROXY_REQUEST 155
1897#define SSL_R_HTTP_REQUEST 156 2101#define SSL_R_HTTP_REQUEST 156
1898#define SSL_R_ILLEGAL_PADDING 283 2102#define SSL_R_ILLEGAL_PADDING 283
2103#define SSL_R_INCONSISTENT_COMPRESSION 340
1899#define SSL_R_INVALID_CHALLENGE_LENGTH 158 2104#define SSL_R_INVALID_CHALLENGE_LENGTH 158
1900#define SSL_R_INVALID_COMMAND 280 2105#define SSL_R_INVALID_COMMAND 280
2106#define SSL_R_INVALID_COMPRESSION_ALGORITHM 341
1901#define SSL_R_INVALID_PURPOSE 278 2107#define SSL_R_INVALID_PURPOSE 278
1902#define SSL_R_INVALID_STATUS_RESPONSE 316 2108#define SSL_R_INVALID_STATUS_RESPONSE 328
1903#define SSL_R_INVALID_TICKET_KEYS_LENGTH 275 2109#define SSL_R_INVALID_TICKET_KEYS_LENGTH 325
1904#define SSL_R_INVALID_TRUST 279 2110#define SSL_R_INVALID_TRUST 279
1905#define SSL_R_KEY_ARG_TOO_LONG 284 2111#define SSL_R_KEY_ARG_TOO_LONG 284
1906#define SSL_R_KRB5 285 2112#define SSL_R_KRB5 285
@@ -1944,22 +2150,27 @@ void ERR_load_SSL_strings(void);
1944#define SSL_R_NO_CIPHERS_SPECIFIED 183 2150#define SSL_R_NO_CIPHERS_SPECIFIED 183
1945#define SSL_R_NO_CIPHER_LIST 184 2151#define SSL_R_NO_CIPHER_LIST 184
1946#define SSL_R_NO_CIPHER_MATCH 185 2152#define SSL_R_NO_CIPHER_MATCH 185
1947#define SSL_R_NO_CLIENT_CERT_METHOD 317 2153#define SSL_R_NO_CLIENT_CERT_METHOD 331
1948#define SSL_R_NO_CLIENT_CERT_RECEIVED 186 2154#define SSL_R_NO_CLIENT_CERT_RECEIVED 186
1949#define SSL_R_NO_COMPRESSION_SPECIFIED 187 2155#define SSL_R_NO_COMPRESSION_SPECIFIED 187
2156#define SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER 330
1950#define SSL_R_NO_METHOD_SPECIFIED 188 2157#define SSL_R_NO_METHOD_SPECIFIED 188
1951#define SSL_R_NO_PRIVATEKEY 189 2158#define SSL_R_NO_PRIVATEKEY 189
1952#define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190 2159#define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190
1953#define SSL_R_NO_PROTOCOLS_AVAILABLE 191 2160#define SSL_R_NO_PROTOCOLS_AVAILABLE 191
1954#define SSL_R_NO_PUBLICKEY 192 2161#define SSL_R_NO_PUBLICKEY 192
2162#define SSL_R_NO_RENEGOTIATION 339
2163#define SSL_R_NO_REQUIRED_DIGEST 324
1955#define SSL_R_NO_SHARED_CIPHER 193 2164#define SSL_R_NO_SHARED_CIPHER 193
1956#define SSL_R_NO_VERIFY_CALLBACK 194 2165#define SSL_R_NO_VERIFY_CALLBACK 194
1957#define SSL_R_NULL_SSL_CTX 195 2166#define SSL_R_NULL_SSL_CTX 195
1958#define SSL_R_NULL_SSL_METHOD_PASSED 196 2167#define SSL_R_NULL_SSL_METHOD_PASSED 196
1959#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197 2168#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197
2169#define SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED 344
1960#define SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE 297 2170#define SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE 297
2171#define SSL_R_OPAQUE_PRF_INPUT_TOO_LONG 327
1961#define SSL_R_PACKET_LENGTH_TOO_LONG 198 2172#define SSL_R_PACKET_LENGTH_TOO_LONG 198
1962#define SSL_R_PARSE_TLSEXT 223 2173#define SSL_R_PARSE_TLSEXT 227
1963#define SSL_R_PATH_TOO_LONG 270 2174#define SSL_R_PATH_TOO_LONG 270
1964#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199 2175#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199
1965#define SSL_R_PEER_ERROR 200 2176#define SSL_R_PEER_ERROR 200
@@ -1970,6 +2181,9 @@ void ERR_load_SSL_strings(void);
1970#define SSL_R_PRE_MAC_LENGTH_TOO_LONG 205 2181#define SSL_R_PRE_MAC_LENGTH_TOO_LONG 205
1971#define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS 206 2182#define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS 206
1972#define SSL_R_PROTOCOL_IS_SHUTDOWN 207 2183#define SSL_R_PROTOCOL_IS_SHUTDOWN 207
2184#define SSL_R_PSK_IDENTITY_NOT_FOUND 223
2185#define SSL_R_PSK_NO_CLIENT_CB 224
2186#define SSL_R_PSK_NO_SERVER_CB 225
1973#define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR 208 2187#define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR 208
1974#define SSL_R_PUBLIC_KEY_IS_NOT_RSA 209 2188#define SSL_R_PUBLIC_KEY_IS_NOT_RSA 209
1975#define SSL_R_PUBLIC_KEY_NOT_RSA 210 2189#define SSL_R_PUBLIC_KEY_NOT_RSA 210
@@ -1979,18 +2193,24 @@ void ERR_load_SSL_strings(void);
1979#define SSL_R_RECORD_LENGTH_MISMATCH 213 2193#define SSL_R_RECORD_LENGTH_MISMATCH 213
1980#define SSL_R_RECORD_TOO_LARGE 214 2194#define SSL_R_RECORD_TOO_LARGE 214
1981#define SSL_R_RECORD_TOO_SMALL 298 2195#define SSL_R_RECORD_TOO_SMALL 298
2196#define SSL_R_RENEGOTIATE_EXT_TOO_LONG 335
2197#define SSL_R_RENEGOTIATION_ENCODING_ERR 336
2198#define SSL_R_RENEGOTIATION_MISMATCH 337
1982#define SSL_R_REQUIRED_CIPHER_MISSING 215 2199#define SSL_R_REQUIRED_CIPHER_MISSING 215
2200#define SSL_R_REQUIRED_COMPRESSSION_ALGORITHM_MISSING 342
1983#define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216 2201#define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216
1984#define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217 2202#define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217
1985#define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO 218 2203#define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO 218
1986#define SSL_R_SERVERHELLO_TLSEXT 224 2204#define SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING 345
2205#define SSL_R_SERVERHELLO_TLSEXT 275
1987#define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277 2206#define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277
1988#define SSL_R_SHORT_READ 219 2207#define SSL_R_SHORT_READ 219
1989#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220 2208#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220
1990#define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221 2209#define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221
1991#define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 299 2210#define SSL_R_SSL2_CONNECTION_ID_TOO_LONG 299
1992#define SSL_R_SSL3_EXT_INVALID_SERVERNAME 225 2211#define SSL_R_SSL3_EXT_INVALID_ECPOINTFORMAT 321
1993#define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 226 2212#define SSL_R_SSL3_EXT_INVALID_SERVERNAME 319
2213#define SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE 320
1994#define SSL_R_SSL3_SESSION_ID_TOO_LONG 300 2214#define SSL_R_SSL3_SESSION_ID_TOO_LONG 300
1995#define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222 2215#define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222
1996#define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042 2216#define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042
@@ -2024,8 +2244,13 @@ void ERR_load_SSL_strings(void);
2024#define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022 2244#define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022
2025#define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048 2245#define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048
2026#define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090 2246#define SSL_R_TLSV1_ALERT_USER_CANCELLED 1090
2247#define SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE 1114
2248#define SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE 1113
2249#define SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE 1111
2250#define SSL_R_TLSV1_UNRECOGNIZED_NAME 1112
2251#define SSL_R_TLSV1_UNSUPPORTED_EXTENSION 1110
2027#define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232 2252#define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232
2028#define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 227 2253#define SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST 157
2029#define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233 2254#define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233
2030#define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234 2255#define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234
2031#define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235 2256#define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235
@@ -2052,8 +2277,10 @@ void ERR_load_SSL_strings(void);
2052#define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE 253 2277#define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE 253
2053#define SSL_R_UNKNOWN_SSL_VERSION 254 2278#define SSL_R_UNKNOWN_SSL_VERSION 254
2054#define SSL_R_UNKNOWN_STATE 255 2279#define SSL_R_UNKNOWN_STATE 255
2280#define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED 338
2055#define SSL_R_UNSUPPORTED_CIPHER 256 2281#define SSL_R_UNSUPPORTED_CIPHER 256
2056#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257 2282#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257
2283#define SSL_R_UNSUPPORTED_DIGEST_TYPE 326
2057#define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315 2284#define SSL_R_UNSUPPORTED_ELLIPTIC_CURVE 315
2058#define SSL_R_UNSUPPORTED_PROTOCOL 258 2285#define SSL_R_UNSUPPORTED_PROTOCOL 258
2059#define SSL_R_UNSUPPORTED_SSL_VERSION 259 2286#define SSL_R_UNSUPPORTED_SSL_VERSION 259
diff --git a/src/lib/libssl/src/ssl/ssl3.h b/src/lib/libssl/src/ssl/ssl3.h
index 4b1e2e9834..baaa89e717 100644
--- a/src/lib/libssl/src/ssl/ssl3.h
+++ b/src/lib/libssl/src/ssl/ssl3.h
@@ -123,12 +123,14 @@
123#include <openssl/buffer.h> 123#include <openssl/buffer.h>
124#include <openssl/evp.h> 124#include <openssl/evp.h>
125#include <openssl/ssl.h> 125#include <openssl/ssl.h>
126#include <openssl/pq_compat.h>
127 126
128#ifdef __cplusplus 127#ifdef __cplusplus
129extern "C" { 128extern "C" {
130#endif 129#endif
131 130
131/* Signalling cipher suite value: from draft-ietf-tls-renegotiation-03.txt */
132#define SSL3_CK_SCSV 0x030000FF
133
132#define SSL3_CK_RSA_NULL_MD5 0x03000001 134#define SSL3_CK_RSA_NULL_MD5 0x03000001
133#define SSL3_CK_RSA_NULL_SHA 0x03000002 135#define SSL3_CK_RSA_NULL_SHA 0x03000002
134#define SSL3_CK_RSA_RC4_40_MD5 0x03000003 136#define SSL3_CK_RSA_RC4_40_MD5 0x03000003
@@ -160,12 +162,14 @@ extern "C" {
160#define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A 162#define SSL3_CK_ADH_DES_64_CBC_SHA 0x0300001A
161#define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B 163#define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B
162 164
163#define SSL3_CK_FZA_DMS_NULL_SHA 0x0300001C 165#if 0
164#define SSL3_CK_FZA_DMS_FZA_SHA 0x0300001D 166 #define SSL3_CK_FZA_DMS_NULL_SHA 0x0300001C
165#if 0 /* Because it clashes with KRB5, is never used any more, and is safe 167 #define SSL3_CK_FZA_DMS_FZA_SHA 0x0300001D
166 to remove according to David Hopwood <david.hopwood@zetnet.co.uk> 168 #if 0 /* Because it clashes with KRB5, is never used any more, and is safe
167 of the ietf-tls list */ 169 to remove according to David Hopwood <david.hopwood@zetnet.co.uk>
168#define SSL3_CK_FZA_DMS_RC4_SHA 0x0300001E 170 of the ietf-tls list */
171 #define SSL3_CK_FZA_DMS_RC4_SHA 0x0300001E
172 #endif
169#endif 173#endif
170 174
171/* VRS Additional Kerberos5 entries 175/* VRS Additional Kerberos5 entries
@@ -217,9 +221,11 @@ extern "C" {
217#define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA" 221#define SSL3_TXT_ADH_DES_64_CBC_SHA "ADH-DES-CBC-SHA"
218#define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" 222#define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA"
219 223
220#define SSL3_TXT_FZA_DMS_NULL_SHA "FZA-NULL-SHA" 224#if 0
221#define SSL3_TXT_FZA_DMS_FZA_SHA "FZA-FZA-CBC-SHA" 225 #define SSL3_TXT_FZA_DMS_NULL_SHA "FZA-NULL-SHA"
222#define SSL3_TXT_FZA_DMS_RC4_SHA "FZA-RC4-SHA" 226 #define SSL3_TXT_FZA_DMS_FZA_SHA "FZA-FZA-CBC-SHA"
227 #define SSL3_TXT_FZA_DMS_RC4_SHA "FZA-RC4-SHA"
228#endif
223 229
224#define SSL3_TXT_KRB5_DES_64_CBC_SHA "KRB5-DES-CBC-SHA" 230#define SSL3_TXT_KRB5_DES_64_CBC_SHA "KRB5-DES-CBC-SHA"
225#define SSL3_TXT_KRB5_DES_192_CBC3_SHA "KRB5-DES-CBC3-SHA" 231#define SSL3_TXT_KRB5_DES_192_CBC3_SHA "KRB5-DES-CBC3-SHA"
@@ -245,23 +251,65 @@ extern "C" {
245#define SSL3_SESSION_ID_SIZE 32 251#define SSL3_SESSION_ID_SIZE 32
246#define SSL3_RT_HEADER_LENGTH 5 252#define SSL3_RT_HEADER_LENGTH 5
247 253
248/* Due to MS stuffing up, this can change.... */ 254#ifndef SSL3_ALIGN_PAYLOAD
249#if defined(OPENSSL_SYS_WIN16) || \ 255 /* Some will argue that this increases memory footprint, but it's
250 (defined(OPENSSL_SYS_MSDOS) && !defined(OPENSSL_SYS_WIN32)) 256 * not actually true. Point is that malloc has to return at least
251#define SSL3_RT_MAX_EXTRA (14000) 257 * 64-bit aligned pointers, meaning that allocating 5 bytes wastes
258 * 3 bytes in either case. Suggested pre-gaping simply moves these
259 * wasted bytes from the end of allocated region to its front,
260 * but makes data payload aligned, which improves performance:-) */
261# define SSL3_ALIGN_PAYLOAD 8
252#else 262#else
253#define SSL3_RT_MAX_EXTRA (16384) 263# if (SSL3_ALIGN_PAYLOAD&(SSL3_ALIGN_PAYLOAD-1))!=0
264# error "insane SSL3_ALIGN_PAYLOAD"
265# undef SSL3_ALIGN_PAYLOAD
266# endif
254#endif 267#endif
255 268
269/* This is the maximum MAC (digest) size used by the SSL library.
270 * Currently maximum of 20 is used by SHA1, but we reserve for
271 * future extension for 512-bit hashes.
272 */
273
274#define SSL3_RT_MAX_MD_SIZE 64
275
276/* Maximum block size used in all ciphersuites. Currently 16 for AES.
277 */
278
279#define SSL_RT_MAX_CIPHER_BLOCK_SIZE 16
280
281#define SSL3_RT_MAX_EXTRA (16384)
282
283/* Maximum plaintext length: defined by SSL/TLS standards */
256#define SSL3_RT_MAX_PLAIN_LENGTH 16384 284#define SSL3_RT_MAX_PLAIN_LENGTH 16384
285/* Maximum compression overhead: defined by SSL/TLS standards */
286#define SSL3_RT_MAX_COMPRESSED_OVERHEAD 1024
287
288/* The standards give a maximum encryption overhead of 1024 bytes.
289 * In practice the value is lower than this. The overhead is the maximum
290 * number of padding bytes (256) plus the mac size.
291 */
292#define SSL3_RT_MAX_ENCRYPTED_OVERHEAD (256 + SSL3_RT_MAX_MD_SIZE)
293
294/* OpenSSL currently only uses a padding length of at most one block so
295 * the send overhead is smaller.
296 */
297
298#define SSL3_RT_SEND_MAX_ENCRYPTED_OVERHEAD \
299 (SSL_RT_MAX_CIPHER_BLOCK_SIZE + SSL3_RT_MAX_MD_SIZE)
300
301/* If compression isn't used don't include the compression overhead */
302
257#ifdef OPENSSL_NO_COMP 303#ifdef OPENSSL_NO_COMP
258#define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH 304#define SSL3_RT_MAX_COMPRESSED_LENGTH SSL3_RT_MAX_PLAIN_LENGTH
259#else 305#else
260#define SSL3_RT_MAX_COMPRESSED_LENGTH (1024+SSL3_RT_MAX_PLAIN_LENGTH) 306#define SSL3_RT_MAX_COMPRESSED_LENGTH \
307 (SSL3_RT_MAX_PLAIN_LENGTH+SSL3_RT_MAX_COMPRESSED_OVERHEAD)
261#endif 308#endif
262#define SSL3_RT_MAX_ENCRYPTED_LENGTH (1024+SSL3_RT_MAX_COMPRESSED_LENGTH) 309#define SSL3_RT_MAX_ENCRYPTED_LENGTH \
263#define SSL3_RT_MAX_PACKET_SIZE (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH) 310 (SSL3_RT_MAX_ENCRYPTED_OVERHEAD+SSL3_RT_MAX_COMPRESSED_LENGTH)
264#define SSL3_RT_MAX_DATA_SIZE (1024*1024) 311#define SSL3_RT_MAX_PACKET_SIZE \
312 (SSL3_RT_MAX_ENCRYPTED_LENGTH+SSL3_RT_HEADER_LENGTH)
265 313
266#define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54" 314#define SSL3_MD_CLIENT_FINISHED_CONST "\x43\x4C\x4E\x54"
267#define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52" 315#define SSL3_MD_SERVER_FINISHED_CONST "\x53\x52\x56\x52"
@@ -300,7 +348,7 @@ typedef struct ssl3_record_st
300/*rw*/ unsigned char *input; /* where the decode bytes are */ 348/*rw*/ unsigned char *input; /* where the decode bytes are */
301/*r */ unsigned char *comp; /* only used with decompression - malloc()ed */ 349/*r */ unsigned char *comp; /* only used with decompression - malloc()ed */
302/*r */ unsigned long epoch; /* epoch number, needed by DTLS1 */ 350/*r */ unsigned long epoch; /* epoch number, needed by DTLS1 */
303/*r */ PQ_64BIT seq_num; /* sequence number, needed by DTLS1 */ 351/*r */ unsigned char seq_num[8]; /* sequence number, needed by DTLS1 */
304 } SSL3_RECORD; 352 } SSL3_RECORD;
305 353
306typedef struct ssl3_buffer_st 354typedef struct ssl3_buffer_st
@@ -323,13 +371,14 @@ typedef struct ssl3_buffer_st
323 * enough to contain all of the cert types defined either for 371 * enough to contain all of the cert types defined either for
324 * SSLv3 and TLSv1. 372 * SSLv3 and TLSv1.
325 */ 373 */
326#define SSL3_CT_NUMBER 7 374#define SSL3_CT_NUMBER 9
327 375
328 376
329#define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001 377#define SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS 0x0001
330#define SSL3_FLAGS_DELAY_CLIENT_FINISHED 0x0002 378#define SSL3_FLAGS_DELAY_CLIENT_FINISHED 0x0002
331#define SSL3_FLAGS_POP_BUFFER 0x0004 379#define SSL3_FLAGS_POP_BUFFER 0x0004
332#define TLS1_FLAGS_TLS_PADDING_BUG 0x0008 380#define TLS1_FLAGS_TLS_PADDING_BUG 0x0008
381#define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010
333 382
334typedef struct ssl3_state_st 383typedef struct ssl3_state_st
335 { 384 {
@@ -337,8 +386,10 @@ typedef struct ssl3_state_st
337 int delay_buf_pop_ret; 386 int delay_buf_pop_ret;
338 387
339 unsigned char read_sequence[8]; 388 unsigned char read_sequence[8];
389 int read_mac_secret_size;
340 unsigned char read_mac_secret[EVP_MAX_MD_SIZE]; 390 unsigned char read_mac_secret[EVP_MAX_MD_SIZE];
341 unsigned char write_sequence[8]; 391 unsigned char write_sequence[8];
392 int write_mac_secret_size;
342 unsigned char write_mac_secret[EVP_MAX_MD_SIZE]; 393 unsigned char write_mac_secret[EVP_MAX_MD_SIZE];
343 394
344 unsigned char server_random[SSL3_RANDOM_SIZE]; 395 unsigned char server_random[SSL3_RANDOM_SIZE];
@@ -348,6 +399,9 @@ typedef struct ssl3_state_st
348 int need_empty_fragments; 399 int need_empty_fragments;
349 int empty_fragment_done; 400 int empty_fragment_done;
350 401
402 /* The value of 'extra' when the buffers were initialized */
403 int init_extra;
404
351 SSL3_BUFFER rbuf; /* read IO goes into here */ 405 SSL3_BUFFER rbuf; /* read IO goes into here */
352 SSL3_BUFFER wbuf; /* write IO goes into here */ 406 SSL3_BUFFER wbuf; /* write IO goes into here */
353 407
@@ -369,9 +423,11 @@ typedef struct ssl3_state_st
369 const unsigned char *wpend_buf; 423 const unsigned char *wpend_buf;
370 424
371 /* used during startup, digest all incoming/outgoing packets */ 425 /* used during startup, digest all incoming/outgoing packets */
372 EVP_MD_CTX finish_dgst1; 426 BIO *handshake_buffer;
373 EVP_MD_CTX finish_dgst2; 427 /* When set of handshake digests is determined, buffer is hashed
374 428 * and freed and MD_CTX-es for all required digests are stored in
429 * this array */
430 EVP_MD_CTX **handshake_dgst;
375 /* this is set whenerver we see a change_cipher_spec message 431 /* this is set whenerver we see a change_cipher_spec message
376 * come in when we are not looking for one */ 432 * come in when we are not looking for one */
377 int change_cipher_spec; 433 int change_cipher_spec;
@@ -391,6 +447,14 @@ typedef struct ssl3_state_st
391 447
392 int in_read_app_data; 448 int in_read_app_data;
393 449
450 /* Opaque PRF input as used for the current handshake.
451 * These fields are used only if TLSEXT_TYPE_opaque_prf_input is defined
452 * (otherwise, they are merely present to improve binary compatibility) */
453 void *client_opaque_prf_input;
454 size_t client_opaque_prf_input_len;
455 void *server_opaque_prf_input;
456 size_t server_opaque_prf_input_len;
457
394 struct { 458 struct {
395 /* actually only needs to be 16+20 */ 459 /* actually only needs to be 16+20 */
396 unsigned char cert_verify_md[EVP_MAX_MD_SIZE*2]; 460 unsigned char cert_verify_md[EVP_MAX_MD_SIZE*2];
@@ -405,7 +469,7 @@ typedef struct ssl3_state_st
405 int message_type; 469 int message_type;
406 470
407 /* used to hold the new cipher we are going to use */ 471 /* used to hold the new cipher we are going to use */
408 SSL_CIPHER *new_cipher; 472 const SSL_CIPHER *new_cipher;
409#ifndef OPENSSL_NO_DH 473#ifndef OPENSSL_NO_DH
410 DH *dh; 474 DH *dh;
411#endif 475#endif
@@ -432,6 +496,8 @@ typedef struct ssl3_state_st
432 496
433 const EVP_CIPHER *new_sym_enc; 497 const EVP_CIPHER *new_sym_enc;
434 const EVP_MD *new_hash; 498 const EVP_MD *new_hash;
499 int new_mac_pkey_type;
500 int new_mac_secret_size;
435#ifndef OPENSSL_NO_COMP 501#ifndef OPENSSL_NO_COMP
436 const SSL_COMP *new_compression; 502 const SSL_COMP *new_compression;
437#else 503#else
@@ -440,6 +506,12 @@ typedef struct ssl3_state_st
440 int cert_request; 506 int cert_request;
441 } tmp; 507 } tmp;
442 508
509 /* Connection binding to prevent renegotiation attacks */
510 unsigned char previous_client_finished[EVP_MAX_MD_SIZE];
511 unsigned char previous_client_finished_len;
512 unsigned char previous_server_finished[EVP_MAX_MD_SIZE];
513 unsigned char previous_server_finished_len;
514 int send_connection_binding; /* TODOEKR */
443 } SSL3_STATE; 515 } SSL3_STATE;
444 516
445 517
diff --git a/src/lib/libssl/src/ssl/ssl_algs.c b/src/lib/libssl/src/ssl/ssl_algs.c
index 4717c0e6e1..0967b2dfe4 100644
--- a/src/lib/libssl/src/ssl/ssl_algs.c
+++ b/src/lib/libssl/src/ssl/ssl_algs.c
@@ -76,13 +76,16 @@ int SSL_library_init(void)
76#endif 76#endif
77#ifndef OPENSSL_NO_RC2 77#ifndef OPENSSL_NO_RC2
78 EVP_add_cipher(EVP_rc2_cbc()); 78 EVP_add_cipher(EVP_rc2_cbc());
79 /* Not actually used for SSL/TLS but this makes PKCS#12 work
80 * if an application only calls SSL_library_init().
81 */
82 EVP_add_cipher(EVP_rc2_40_cbc());
79#endif 83#endif
80#ifndef OPENSSL_NO_AES 84#ifndef OPENSSL_NO_AES
81 EVP_add_cipher(EVP_aes_128_cbc()); 85 EVP_add_cipher(EVP_aes_128_cbc());
82 EVP_add_cipher(EVP_aes_192_cbc()); 86 EVP_add_cipher(EVP_aes_192_cbc());
83 EVP_add_cipher(EVP_aes_256_cbc()); 87 EVP_add_cipher(EVP_aes_256_cbc());
84#endif 88#endif
85
86#ifndef OPENSSL_NO_CAMELLIA 89#ifndef OPENSSL_NO_CAMELLIA
87 EVP_add_cipher(EVP_camellia_128_cbc()); 90 EVP_add_cipher(EVP_camellia_128_cbc());
88 EVP_add_cipher(EVP_camellia_256_cbc()); 91 EVP_add_cipher(EVP_camellia_256_cbc());
@@ -91,10 +94,7 @@ int SSL_library_init(void)
91#ifndef OPENSSL_NO_SEED 94#ifndef OPENSSL_NO_SEED
92 EVP_add_cipher(EVP_seed_cbc()); 95 EVP_add_cipher(EVP_seed_cbc());
93#endif 96#endif
94 97
95#ifndef OPENSSL_NO_MD2
96 EVP_add_digest(EVP_md2());
97#endif
98#ifndef OPENSSL_NO_MD5 98#ifndef OPENSSL_NO_MD5
99 EVP_add_digest(EVP_md5()); 99 EVP_add_digest(EVP_md5());
100 EVP_add_digest_alias(SN_md5,"ssl2-md5"); 100 EVP_add_digest_alias(SN_md5,"ssl2-md5");
@@ -105,6 +105,14 @@ int SSL_library_init(void)
105 EVP_add_digest_alias(SN_sha1,"ssl3-sha1"); 105 EVP_add_digest_alias(SN_sha1,"ssl3-sha1");
106 EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA); 106 EVP_add_digest_alias(SN_sha1WithRSAEncryption,SN_sha1WithRSA);
107#endif 107#endif
108#ifndef OPENSSL_NO_SHA256
109 EVP_add_digest(EVP_sha224());
110 EVP_add_digest(EVP_sha256());
111#endif
112#ifndef OPENSSL_NO_SHA512
113 EVP_add_digest(EVP_sha384());
114 EVP_add_digest(EVP_sha512());
115#endif
108#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_DSA) 116#if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_DSA)
109 EVP_add_digest(EVP_dss1()); /* DSA with sha1 */ 117 EVP_add_digest(EVP_dss1()); /* DSA with sha1 */
110 EVP_add_digest_alias(SN_dsaWithSHA1,SN_dsaWithSHA1_2); 118 EVP_add_digest_alias(SN_dsaWithSHA1,SN_dsaWithSHA1_2);
diff --git a/src/lib/libssl/src/ssl/ssl_asn1.c b/src/lib/libssl/src/ssl/ssl_asn1.c
index 0f9a3489dd..28709978b5 100644
--- a/src/lib/libssl/src/ssl/ssl_asn1.c
+++ b/src/lib/libssl/src/ssl/ssl_asn1.c
@@ -55,6 +55,32 @@
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ====================================================================
59 * Copyright 2005 Nokia. All rights reserved.
60 *
61 * The portions of the attached software ("Contribution") is developed by
62 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
63 * license.
64 *
65 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
66 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
67 * support (see RFC 4279) to OpenSSL.
68 *
69 * No patent licenses or other rights except those expressly stated in
70 * the OpenSSL open source license shall be deemed granted or received
71 * expressly, by implication, estoppel, or otherwise.
72 *
73 * No assurances are provided by Nokia that the Contribution does not
74 * infringe the patent or other intellectual property rights of any third
75 * party or that the license provides you with all the necessary rights
76 * to make use of the Contribution.
77 *
78 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
79 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
80 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
81 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
82 * OTHERWISE.
83 */
58 84
59#include <stdio.h> 85#include <stdio.h>
60#include <stdlib.h> 86#include <stdlib.h>
@@ -68,6 +94,7 @@ typedef struct ssl_session_asn1_st
68 ASN1_INTEGER version; 94 ASN1_INTEGER version;
69 ASN1_INTEGER ssl_version; 95 ASN1_INTEGER ssl_version;
70 ASN1_OCTET_STRING cipher; 96 ASN1_OCTET_STRING cipher;
97 ASN1_OCTET_STRING comp_id;
71 ASN1_OCTET_STRING master_key; 98 ASN1_OCTET_STRING master_key;
72 ASN1_OCTET_STRING session_id; 99 ASN1_OCTET_STRING session_id;
73 ASN1_OCTET_STRING session_id_context; 100 ASN1_OCTET_STRING session_id_context;
@@ -83,18 +110,26 @@ typedef struct ssl_session_asn1_st
83 ASN1_INTEGER tlsext_tick_lifetime; 110 ASN1_INTEGER tlsext_tick_lifetime;
84 ASN1_OCTET_STRING tlsext_tick; 111 ASN1_OCTET_STRING tlsext_tick;
85#endif /* OPENSSL_NO_TLSEXT */ 112#endif /* OPENSSL_NO_TLSEXT */
113#ifndef OPENSSL_NO_PSK
114 ASN1_OCTET_STRING psk_identity_hint;
115 ASN1_OCTET_STRING psk_identity;
116#endif /* OPENSSL_NO_PSK */
86 } SSL_SESSION_ASN1; 117 } SSL_SESSION_ASN1;
87 118
88int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp) 119int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
89 { 120 {
90#define LSIZE2 (sizeof(long)*2) 121#define LSIZE2 (sizeof(long)*2)
91 int v1=0,v2=0,v3=0,v4=0,v5=0; 122 int v1=0,v2=0,v3=0,v4=0,v5=0,v7=0,v8=0;
92 unsigned char buf[4],ibuf1[LSIZE2],ibuf2[LSIZE2]; 123 unsigned char buf[4],ibuf1[LSIZE2],ibuf2[LSIZE2];
93 unsigned char ibuf3[LSIZE2],ibuf4[LSIZE2],ibuf5[LSIZE2]; 124 unsigned char ibuf3[LSIZE2],ibuf4[LSIZE2],ibuf5[LSIZE2];
94#ifndef OPENSSL_NO_TLSEXT 125#ifndef OPENSSL_NO_TLSEXT
95 int v6=0,v9=0,v10=0; 126 int v6=0,v9=0,v10=0;
96 unsigned char ibuf6[LSIZE2]; 127 unsigned char ibuf6[LSIZE2];
97#endif 128#endif
129#ifndef OPENSSL_NO_COMP
130 unsigned char cbuf;
131 int v11=0;
132#endif
98 long l; 133 long l;
99 SSL_SESSION_ASN1 a; 134 SSL_SESSION_ASN1 a;
100 M_ASN1_I2D_vars(in); 135 M_ASN1_I2D_vars(in);
@@ -138,6 +173,16 @@ int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
138 buf[1]=((unsigned char)(l ))&0xff; 173 buf[1]=((unsigned char)(l ))&0xff;
139 } 174 }
140 175
176#ifndef OPENSSL_NO_COMP
177 if (in->compress_meth)
178 {
179 cbuf = (unsigned char)in->compress_meth;
180 a.comp_id.length = 1;
181 a.comp_id.type = V_ASN1_OCTET_STRING;
182 a.comp_id.data = &cbuf;
183 }
184#endif
185
141 a.master_key.length=in->master_key_length; 186 a.master_key.length=in->master_key_length;
142 a.master_key.type=V_ASN1_OCTET_STRING; 187 a.master_key.type=V_ASN1_OCTET_STRING;
143 a.master_key.data=in->master_key; 188 a.master_key.data=in->master_key;
@@ -162,7 +207,7 @@ int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
162 a.krb5_princ.data=in->krb5_client_princ; 207 a.krb5_princ.data=in->krb5_client_princ;
163 } 208 }
164#endif /* OPENSSL_NO_KRB5 */ 209#endif /* OPENSSL_NO_KRB5 */
165 210
166 if (in->time != 0L) 211 if (in->time != 0L)
167 { 212 {
168 a.time.length=LSIZE2; 213 a.time.length=LSIZE2;
@@ -199,12 +244,6 @@ int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
199 a.tlsext_tick.length= in->tlsext_ticklen; 244 a.tlsext_tick.length= in->tlsext_ticklen;
200 a.tlsext_tick.type=V_ASN1_OCTET_STRING; 245 a.tlsext_tick.type=V_ASN1_OCTET_STRING;
201 a.tlsext_tick.data=(unsigned char *)in->tlsext_tick; 246 a.tlsext_tick.data=(unsigned char *)in->tlsext_tick;
202 /* If we have a ticket set session ID to empty because
203 * it will be bogus. If liftime hint is -1 treat as a special
204 * case because the session is being used as a container
205 */
206 if (in->tlsext_ticklen && (in->tlsext_tick_lifetime_hint != -1))
207 a.session_id.length=0;
208 } 247 }
209 if (in->tlsext_tick_lifetime_hint > 0) 248 if (in->tlsext_tick_lifetime_hint > 0)
210 { 249 {
@@ -214,6 +253,21 @@ int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
214 ASN1_INTEGER_set(&a.tlsext_tick_lifetime,in->tlsext_tick_lifetime_hint); 253 ASN1_INTEGER_set(&a.tlsext_tick_lifetime,in->tlsext_tick_lifetime_hint);
215 } 254 }
216#endif /* OPENSSL_NO_TLSEXT */ 255#endif /* OPENSSL_NO_TLSEXT */
256#ifndef OPENSSL_NO_PSK
257 if (in->psk_identity_hint)
258 {
259 a.psk_identity_hint.length=strlen(in->psk_identity_hint);
260 a.psk_identity_hint.type=V_ASN1_OCTET_STRING;
261 a.psk_identity_hint.data=(unsigned char *)(in->psk_identity_hint);
262 }
263 if (in->psk_identity)
264 {
265 a.psk_identity.length=strlen(in->psk_identity);
266 a.psk_identity.type=V_ASN1_OCTET_STRING;
267 a.psk_identity.data=(unsigned char *)(in->psk_identity);
268 }
269#endif /* OPENSSL_NO_PSK */
270
217 M_ASN1_I2D_len(&(a.version), i2d_ASN1_INTEGER); 271 M_ASN1_I2D_len(&(a.version), i2d_ASN1_INTEGER);
218 M_ASN1_I2D_len(&(a.ssl_version), i2d_ASN1_INTEGER); 272 M_ASN1_I2D_len(&(a.ssl_version), i2d_ASN1_INTEGER);
219 M_ASN1_I2D_len(&(a.cipher), i2d_ASN1_OCTET_STRING); 273 M_ASN1_I2D_len(&(a.cipher), i2d_ASN1_OCTET_STRING);
@@ -242,7 +296,18 @@ int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
242 M_ASN1_I2D_len_EXP_opt(&(a.tlsext_tick), i2d_ASN1_OCTET_STRING,10,v10); 296 M_ASN1_I2D_len_EXP_opt(&(a.tlsext_tick), i2d_ASN1_OCTET_STRING,10,v10);
243 if (in->tlsext_hostname) 297 if (in->tlsext_hostname)
244 M_ASN1_I2D_len_EXP_opt(&(a.tlsext_hostname), i2d_ASN1_OCTET_STRING,6,v6); 298 M_ASN1_I2D_len_EXP_opt(&(a.tlsext_hostname), i2d_ASN1_OCTET_STRING,6,v6);
299#ifndef OPENSSL_NO_COMP
300 if (in->compress_meth)
301 M_ASN1_I2D_len_EXP_opt(&(a.comp_id), i2d_ASN1_OCTET_STRING,11,v11);
302#endif
245#endif /* OPENSSL_NO_TLSEXT */ 303#endif /* OPENSSL_NO_TLSEXT */
304#ifndef OPENSSL_NO_PSK
305 if (in->psk_identity_hint)
306 M_ASN1_I2D_len_EXP_opt(&(a.psk_identity_hint), i2d_ASN1_OCTET_STRING,7,v7);
307 if (in->psk_identity)
308 M_ASN1_I2D_len_EXP_opt(&(a.psk_identity), i2d_ASN1_OCTET_STRING,8,v8);
309#endif /* OPENSSL_NO_PSK */
310
246 M_ASN1_I2D_seq_total(); 311 M_ASN1_I2D_seq_total();
247 312
248 M_ASN1_I2D_put(&(a.version), i2d_ASN1_INTEGER); 313 M_ASN1_I2D_put(&(a.version), i2d_ASN1_INTEGER);
@@ -269,16 +334,28 @@ int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp)
269#ifndef OPENSSL_NO_TLSEXT 334#ifndef OPENSSL_NO_TLSEXT
270 if (in->tlsext_hostname) 335 if (in->tlsext_hostname)
271 M_ASN1_I2D_put_EXP_opt(&(a.tlsext_hostname), i2d_ASN1_OCTET_STRING,6,v6); 336 M_ASN1_I2D_put_EXP_opt(&(a.tlsext_hostname), i2d_ASN1_OCTET_STRING,6,v6);
337#endif /* OPENSSL_NO_TLSEXT */
338#ifndef OPENSSL_NO_PSK
339 if (in->psk_identity_hint)
340 M_ASN1_I2D_put_EXP_opt(&(a.psk_identity_hint), i2d_ASN1_OCTET_STRING,7,v7);
341 if (in->psk_identity)
342 M_ASN1_I2D_put_EXP_opt(&(a.psk_identity), i2d_ASN1_OCTET_STRING,8,v8);
343#endif /* OPENSSL_NO_PSK */
344#ifndef OPENSSL_NO_TLSEXT
272 if (in->tlsext_tick_lifetime_hint > 0) 345 if (in->tlsext_tick_lifetime_hint > 0)
273 M_ASN1_I2D_put_EXP_opt(&a.tlsext_tick_lifetime, i2d_ASN1_INTEGER,9,v9); 346 M_ASN1_I2D_put_EXP_opt(&a.tlsext_tick_lifetime, i2d_ASN1_INTEGER,9,v9);
274 if (in->tlsext_tick) 347 if (in->tlsext_tick)
275 M_ASN1_I2D_put_EXP_opt(&(a.tlsext_tick), i2d_ASN1_OCTET_STRING,10,v10); 348 M_ASN1_I2D_put_EXP_opt(&(a.tlsext_tick), i2d_ASN1_OCTET_STRING,10,v10);
276#endif /* OPENSSL_NO_TLSEXT */ 349#endif /* OPENSSL_NO_TLSEXT */
350#ifndef OPENSSL_NO_COMP
351 if (in->compress_meth)
352 M_ASN1_I2D_put_EXP_opt(&(a.comp_id), i2d_ASN1_OCTET_STRING,11,v11);
353#endif
277 M_ASN1_I2D_finish(); 354 M_ASN1_I2D_finish();
278 } 355 }
279 356
280SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, 357SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
281 long length) 358 long length)
282 { 359 {
283 int version,ssl_version=0,i; 360 int version,ssl_version=0,i;
284 long id; 361 long id;
@@ -317,7 +394,7 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
317 ((unsigned long)os.data[1]<< 8L)| 394 ((unsigned long)os.data[1]<< 8L)|
318 (unsigned long)os.data[2]; 395 (unsigned long)os.data[2];
319 } 396 }
320 else if ((ssl_version>>8) == SSL3_VERSION_MAJOR) 397 else if ((ssl_version>>8) >= SSL3_VERSION_MAJOR)
321 { 398 {
322 if (os.length != 2) 399 if (os.length != 2)
323 { 400 {
@@ -330,15 +407,15 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
330 } 407 }
331 else 408 else
332 { 409 {
333 SSLerr(SSL_F_D2I_SSL_SESSION,SSL_R_UNKNOWN_SSL_VERSION); 410 c.error=SSL_R_UNKNOWN_SSL_VERSION;
334 return(NULL); 411 goto err;
335 } 412 }
336 413
337 ret->cipher=NULL; 414 ret->cipher=NULL;
338 ret->cipher_id=id; 415 ret->cipher_id=id;
339 416
340 M_ASN1_D2I_get_x(ASN1_OCTET_STRING,osp,d2i_ASN1_OCTET_STRING); 417 M_ASN1_D2I_get_x(ASN1_OCTET_STRING,osp,d2i_ASN1_OCTET_STRING);
341 if ((ssl_version>>8) == SSL3_VERSION_MAJOR) 418 if ((ssl_version>>8) >= SSL3_VERSION_MAJOR)
342 i=SSL3_MAX_SSL_SESSION_ID_LENGTH; 419 i=SSL3_MAX_SSL_SESSION_ID_LENGTH;
343 else /* if (ssl_version>>8 == SSL2_VERSION_MAJOR) */ 420 else /* if (ssl_version>>8 == SSL2_VERSION_MAJOR) */
344 i=SSL2_MAX_SSL_SESSION_ID_LENGTH; 421 i=SSL2_MAX_SSL_SESSION_ID_LENGTH;
@@ -422,8 +499,8 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
422 { 499 {
423 if (os.length > SSL_MAX_SID_CTX_LENGTH) 500 if (os.length > SSL_MAX_SID_CTX_LENGTH)
424 { 501 {
425 ret->sid_ctx_length=os.length; 502 c.error=SSL_R_BAD_LENGTH;
426 SSLerr(SSL_F_D2I_SSL_SESSION,SSL_R_BAD_LENGTH); 503 goto err;
427 } 504 }
428 else 505 else
429 { 506 {
@@ -458,6 +535,24 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
458 } 535 }
459 else 536 else
460 ret->tlsext_hostname=NULL; 537 ret->tlsext_hostname=NULL;
538#endif /* OPENSSL_NO_TLSEXT */
539
540#ifndef OPENSSL_NO_PSK
541 os.length=0;
542 os.data=NULL;
543 M_ASN1_D2I_get_EXP_opt(osp,d2i_ASN1_OCTET_STRING,7);
544 if (os.data)
545 {
546 ret->psk_identity_hint = BUF_strndup((char *)os.data, os.length);
547 OPENSSL_free(os.data);
548 os.data = NULL;
549 os.length = 0;
550 }
551 else
552 ret->psk_identity_hint=NULL;
553#endif /* OPENSSL_NO_PSK */
554
555#ifndef OPENSSL_NO_TLSEXT
461 ai.length=0; 556 ai.length=0;
462 M_ASN1_D2I_get_EXP_opt(aip,d2i_ASN1_INTEGER,9); 557 M_ASN1_D2I_get_EXP_opt(aip,d2i_ASN1_INTEGER,9);
463 if (ai.data != NULL) 558 if (ai.data != NULL)
@@ -468,33 +563,31 @@ SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp,
468 else if (ret->tlsext_ticklen && ret->session_id_length) 563 else if (ret->tlsext_ticklen && ret->session_id_length)
469 ret->tlsext_tick_lifetime_hint = -1; 564 ret->tlsext_tick_lifetime_hint = -1;
470 else 565 else
471 ret->tlsext_tick_lifetime_hint = 0; 566 ret->tlsext_tick_lifetime_hint=0;
472 os.length=0; 567 os.length=0;
473 os.data=NULL; 568 os.data=NULL;
474 M_ASN1_D2I_get_EXP_opt(osp,d2i_ASN1_OCTET_STRING,10); 569 M_ASN1_D2I_get_EXP_opt(osp,d2i_ASN1_OCTET_STRING,10);
475 if (os.data) 570 if (os.data)
476 { 571 {
477 ret->tlsext_tick = os.data; 572 ret->tlsext_tick = os.data;
478 ret->tlsext_ticklen = os.length; 573 ret->tlsext_ticklen = os.length;
479 os.data = NULL; 574 os.data = NULL;
480 os.length = 0; 575 os.length = 0;
481#if 0 576 }
482 /* There are two ways to detect a resumed ticket sesion.
483 * One is to set a random session ID and then the server
484 * must return a match in ServerHello. This allows the normal
485 * client session ID matching to work.
486 */
487 if (ret->session_id_length == 0)
488 {
489 ret->session_id_length=SSL3_MAX_SSL_SESSION_ID_LENGTH;
490 RAND_pseudo_bytes(ret->session_id,
491 ret->session_id_length);
492 }
493#endif
494 }
495 else 577 else
496 ret->tlsext_tick=NULL; 578 ret->tlsext_tick=NULL;
497#endif /* OPENSSL_NO_TLSEXT */ 579#endif /* OPENSSL_NO_TLSEXT */
580#ifndef OPENSSL_NO_COMP
581 os.length=0;
582 os.data=NULL;
583 M_ASN1_D2I_get_EXP_opt(osp,d2i_ASN1_OCTET_STRING,11);
584 if (os.data)
585 {
586 ret->compress_meth = os.data[0];
587 OPENSSL_free(os.data);
588 os.data = NULL;
589 }
590#endif
498 591
499 M_ASN1_D2I_Finish(a,SSL_SESSION_free,SSL_F_D2I_SSL_SESSION); 592 M_ASN1_D2I_Finish(a,SSL_SESSION_free,SSL_F_D2I_SSL_SESSION);
500 } 593 }
diff --git a/src/lib/libssl/src/ssl/ssl_cert.c b/src/lib/libssl/src/ssl/ssl_cert.c
index a32b2d4446..27256eea81 100644
--- a/src/lib/libssl/src/ssl/ssl_cert.c
+++ b/src/lib/libssl/src/ssl/ssl_cert.c
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -197,8 +197,10 @@ CERT *ssl_cert_dup(CERT *cert)
197 * if you find that more readable */ 197 * if you find that more readable */
198 198
199 ret->valid = cert->valid; 199 ret->valid = cert->valid;
200 ret->mask = cert->mask; 200 ret->mask_k = cert->mask_k;
201 ret->export_mask = cert->export_mask; 201 ret->mask_a = cert->mask_a;
202 ret->export_mask_k = cert->export_mask_k;
203 ret->export_mask_a = cert->export_mask_a;
202 204
203#ifndef OPENSSL_NO_RSA 205#ifndef OPENSSL_NO_RSA
204 if (cert->rsa_tmp != NULL) 206 if (cert->rsa_tmp != NULL)
@@ -500,9 +502,6 @@ int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk)
500 SSLerr(SSL_F_SSL_VERIFY_CERT_CHAIN,ERR_R_X509_LIB); 502 SSLerr(SSL_F_SSL_VERIFY_CERT_CHAIN,ERR_R_X509_LIB);
501 return(0); 503 return(0);
502 } 504 }
503 if (s->param)
504 X509_VERIFY_PARAM_inherit(X509_STORE_CTX_get0_param(&ctx),
505 s->param);
506#if 0 505#if 0
507 if (SSL_get_verify_depth(s) >= 0) 506 if (SSL_get_verify_depth(s) >= 0)
508 X509_STORE_CTX_set_depth(&ctx, SSL_get_verify_depth(s)); 507 X509_STORE_CTX_set_depth(&ctx, SSL_get_verify_depth(s));
@@ -516,6 +515,10 @@ int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk)
516 515
517 X509_STORE_CTX_set_default(&ctx, 516 X509_STORE_CTX_set_default(&ctx,
518 s->server ? "ssl_client" : "ssl_server"); 517 s->server ? "ssl_client" : "ssl_server");
518 /* Anything non-default in "param" should overwrite anything in the
519 * ctx.
520 */
521 X509_VERIFY_PARAM_set1(X509_STORE_CTX_get0_param(&ctx), s->param);
519 522
520 if (s->verify_callback) 523 if (s->verify_callback)
521 X509_STORE_CTX_set_verify_cb(&ctx, s->verify_callback); 524 X509_STORE_CTX_set_verify_cb(&ctx, s->verify_callback);
@@ -752,6 +755,8 @@ int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
752 sk_X509_NAME_push(stack,xn); 755 sk_X509_NAME_push(stack,xn);
753 } 756 }
754 757
758 ERR_clear_error();
759
755 if (0) 760 if (0)
756 { 761 {
757err: 762err:
diff --git a/src/lib/libssl/src/ssl/ssl_ciph.c b/src/lib/libssl/src/ssl/ssl_ciph.c
index 52f91cfe60..bee3507ea1 100644
--- a/src/lib/libssl/src/ssl/ssl_ciph.c
+++ b/src/lib/libssl/src/ssl/ssl_ciph.c
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -113,12 +113,41 @@
113 * ECC cipher suite support in OpenSSL originally developed by 113 * ECC cipher suite support in OpenSSL originally developed by
114 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. 114 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
115 */ 115 */
116/* ====================================================================
117 * Copyright 2005 Nokia. All rights reserved.
118 *
119 * The portions of the attached software ("Contribution") is developed by
120 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
121 * license.
122 *
123 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
124 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
125 * support (see RFC 4279) to OpenSSL.
126 *
127 * No patent licenses or other rights except those expressly stated in
128 * the OpenSSL open source license shall be deemed granted or received
129 * expressly, by implication, estoppel, or otherwise.
130 *
131 * No assurances are provided by Nokia that the Contribution does not
132 * infringe the patent or other intellectual property rights of any third
133 * party or that the license provides you with all the necessary rights
134 * to make use of the Contribution.
135 *
136 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
137 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
138 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
139 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
140 * OTHERWISE.
141 */
142
116#include <stdio.h> 143#include <stdio.h>
117#include <openssl/objects.h> 144#include <openssl/objects.h>
118#ifndef OPENSSL_NO_COMP 145#ifndef OPENSSL_NO_COMP
119#include <openssl/comp.h> 146#include <openssl/comp.h>
120#endif 147#endif
121 148#ifndef OPENSSL_NO_ENGINE
149#include <openssl/engine.h>
150#endif
122#include "ssl_locl.h" 151#include "ssl_locl.h"
123 152
124#define SSL_ENC_DES_IDX 0 153#define SSL_ENC_DES_IDX 0
@@ -126,18 +155,18 @@
126#define SSL_ENC_RC4_IDX 2 155#define SSL_ENC_RC4_IDX 2
127#define SSL_ENC_RC2_IDX 3 156#define SSL_ENC_RC2_IDX 3
128#define SSL_ENC_IDEA_IDX 4 157#define SSL_ENC_IDEA_IDX 4
129#define SSL_ENC_eFZA_IDX 5 158#define SSL_ENC_NULL_IDX 5
130#define SSL_ENC_NULL_IDX 6 159#define SSL_ENC_AES128_IDX 6
131#define SSL_ENC_AES128_IDX 7 160#define SSL_ENC_AES256_IDX 7
132#define SSL_ENC_AES256_IDX 8 161#define SSL_ENC_CAMELLIA128_IDX 8
133#define SSL_ENC_CAMELLIA128_IDX 9 162#define SSL_ENC_CAMELLIA256_IDX 9
134#define SSL_ENC_CAMELLIA256_IDX 10 163#define SSL_ENC_GOST89_IDX 10
135#define SSL_ENC_SEED_IDX 11 164#define SSL_ENC_SEED_IDX 11
136#define SSL_ENC_NUM_IDX 12 165#define SSL_ENC_NUM_IDX 12
137 166
138 167
139static const EVP_CIPHER *ssl_cipher_methods[SSL_ENC_NUM_IDX]={ 168static const EVP_CIPHER *ssl_cipher_methods[SSL_ENC_NUM_IDX]={
140 NULL,NULL,NULL,NULL,NULL,NULL, 169 NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
141 }; 170 };
142 171
143#define SSL_COMP_NULL_IDX 0 172#define SSL_COMP_NULL_IDX 0
@@ -148,9 +177,30 @@ static STACK_OF(SSL_COMP) *ssl_comp_methods=NULL;
148 177
149#define SSL_MD_MD5_IDX 0 178#define SSL_MD_MD5_IDX 0
150#define SSL_MD_SHA1_IDX 1 179#define SSL_MD_SHA1_IDX 1
151#define SSL_MD_NUM_IDX 2 180#define SSL_MD_GOST94_IDX 2
181#define SSL_MD_GOST89MAC_IDX 3
182/*Constant SSL_MAX_DIGEST equal to size of digests array should be
183 * defined in the
184 * ssl_locl.h */
185#define SSL_MD_NUM_IDX SSL_MAX_DIGEST
152static const EVP_MD *ssl_digest_methods[SSL_MD_NUM_IDX]={ 186static const EVP_MD *ssl_digest_methods[SSL_MD_NUM_IDX]={
153 NULL,NULL, 187 NULL,NULL,NULL,NULL
188 };
189/* PKEY_TYPE for GOST89MAC is known in advance, but, because
190 * implementation is engine-provided, we'll fill it only if
191 * corresponding EVP_PKEY_METHOD is found
192 */
193static int ssl_mac_pkey_id[SSL_MD_NUM_IDX]={
194 EVP_PKEY_HMAC,EVP_PKEY_HMAC,EVP_PKEY_HMAC,NID_undef
195 };
196
197static int ssl_mac_secret_size[SSL_MD_NUM_IDX]={
198 0,0,0,0
199 };
200
201static int ssl_handshake_digest_flag[SSL_MD_NUM_IDX]={
202 SSL_HANDSHAKE_MAC_MD5,SSL_HANDSHAKE_MAC_SHA,
203 SSL_HANDSHAKE_MAC_GOST94,0
154 }; 204 };
155 205
156#define CIPHER_ADD 1 206#define CIPHER_ADD 1
@@ -161,72 +211,144 @@ static const EVP_MD *ssl_digest_methods[SSL_MD_NUM_IDX]={
161 211
162typedef struct cipher_order_st 212typedef struct cipher_order_st
163 { 213 {
164 SSL_CIPHER *cipher; 214 const SSL_CIPHER *cipher;
165 int active; 215 int active;
166 int dead; 216 int dead;
167 struct cipher_order_st *next,*prev; 217 struct cipher_order_st *next,*prev;
168 } CIPHER_ORDER; 218 } CIPHER_ORDER;
169 219
170static const SSL_CIPHER cipher_aliases[]={ 220static const SSL_CIPHER cipher_aliases[]={
171 /* Don't include eNULL unless specifically enabled. */ 221 /* "ALL" doesn't include eNULL (must be specifically enabled) */
172 /* Don't include ECC in ALL because these ciphers are not yet official. */ 222 {0,SSL_TXT_ALL,0, 0,0,~SSL_eNULL,0,0,0,0,0,0},
173 {0,SSL_TXT_ALL, 0,SSL_ALL & ~SSL_eNULL & ~SSL_kECDH & ~SSL_kECDHE, SSL_ALL ,0,0,0,SSL_ALL,SSL_ALL}, /* must be first */ 223 /* "COMPLEMENTOFALL" */
174 /* TODO: COMPLEMENT OF ALL and COMPLEMENT OF DEFAULT do not have ECC cipher suites handled properly. */ 224 {0,SSL_TXT_CMPALL,0, 0,0,SSL_eNULL,0,0,0,0,0,0},
175 {0,SSL_TXT_CMPALL,0,SSL_eNULL,0,0,0,0,SSL_ENC_MASK,0}, /* COMPLEMENT OF ALL */ 225
176 {0,SSL_TXT_CMPDEF,0,SSL_ADH, 0,0,0,0,SSL_AUTH_MASK,0}, 226 /* "COMPLEMENTOFDEFAULT" (does *not* include ciphersuites not found in ALL!) */
177 {0,SSL_TXT_kKRB5,0,SSL_kKRB5,0,0,0,0,SSL_MKEY_MASK,0}, /* VRS Kerberos5 */ 227 {0,SSL_TXT_CMPDEF,0, SSL_kEDH|SSL_kEECDH,SSL_aNULL,~SSL_eNULL,0,0,0,0,0,0},
178 {0,SSL_TXT_kRSA,0,SSL_kRSA, 0,0,0,0,SSL_MKEY_MASK,0}, 228
179 {0,SSL_TXT_kDHr,0,SSL_kDHr, 0,0,0,0,SSL_MKEY_MASK,0}, 229 /* key exchange aliases
180 {0,SSL_TXT_kDHd,0,SSL_kDHd, 0,0,0,0,SSL_MKEY_MASK,0}, 230 * (some of those using only a single bit here combine
181 {0,SSL_TXT_kEDH,0,SSL_kEDH, 0,0,0,0,SSL_MKEY_MASK,0}, 231 * multiple key exchange algs according to the RFCs,
182 {0,SSL_TXT_kFZA,0,SSL_kFZA, 0,0,0,0,SSL_MKEY_MASK,0}, 232 * e.g. kEDH combines DHE_DSS and DHE_RSA) */
183 {0,SSL_TXT_DH, 0,SSL_DH, 0,0,0,0,SSL_MKEY_MASK,0}, 233 {0,SSL_TXT_kRSA,0, SSL_kRSA, 0,0,0,0,0,0,0,0},
184 {0,SSL_TXT_ECC, 0,(SSL_kECDH|SSL_kECDHE), 0,0,0,0,SSL_MKEY_MASK,0}, 234
185 {0,SSL_TXT_EDH, 0,SSL_EDH, 0,0,0,0,SSL_MKEY_MASK|SSL_AUTH_MASK,0}, 235 {0,SSL_TXT_kDHr,0, SSL_kDHr, 0,0,0,0,0,0,0,0}, /* no such ciphersuites supported! */
186 {0,SSL_TXT_aKRB5,0,SSL_aKRB5,0,0,0,0,SSL_AUTH_MASK,0}, /* VRS Kerberos5 */ 236 {0,SSL_TXT_kDHd,0, SSL_kDHd, 0,0,0,0,0,0,0,0}, /* no such ciphersuites supported! */
187 {0,SSL_TXT_aRSA,0,SSL_aRSA, 0,0,0,0,SSL_AUTH_MASK,0}, 237 {0,SSL_TXT_kDH,0, SSL_kDHr|SSL_kDHd,0,0,0,0,0,0,0,0}, /* no such ciphersuites supported! */
188 {0,SSL_TXT_aDSS,0,SSL_aDSS, 0,0,0,0,SSL_AUTH_MASK,0}, 238 {0,SSL_TXT_kEDH,0, SSL_kEDH, 0,0,0,0,0,0,0,0},
189 {0,SSL_TXT_aFZA,0,SSL_aFZA, 0,0,0,0,SSL_AUTH_MASK,0}, 239 {0,SSL_TXT_DH,0, SSL_kDHr|SSL_kDHd|SSL_kEDH,0,0,0,0,0,0,0,0},
190 {0,SSL_TXT_aNULL,0,SSL_aNULL,0,0,0,0,SSL_AUTH_MASK,0}, 240
191 {0,SSL_TXT_aDH, 0,SSL_aDH, 0,0,0,0,SSL_AUTH_MASK,0}, 241 {0,SSL_TXT_kKRB5,0, SSL_kKRB5, 0,0,0,0,0,0,0,0},
192 {0,SSL_TXT_DSS, 0,SSL_DSS, 0,0,0,0,SSL_AUTH_MASK,0}, 242
193 243 {0,SSL_TXT_kECDHr,0, SSL_kECDHr,0,0,0,0,0,0,0,0},
194 {0,SSL_TXT_DES, 0,SSL_DES, 0,0,0,0,SSL_ENC_MASK,0}, 244 {0,SSL_TXT_kECDHe,0, SSL_kECDHe,0,0,0,0,0,0,0,0},
195 {0,SSL_TXT_3DES,0,SSL_3DES, 0,0,0,0,SSL_ENC_MASK,0}, 245 {0,SSL_TXT_kECDH,0, SSL_kECDHr|SSL_kECDHe,0,0,0,0,0,0,0,0},
196 {0,SSL_TXT_RC4, 0,SSL_RC4, 0,0,0,0,SSL_ENC_MASK,0}, 246 {0,SSL_TXT_kEECDH,0, SSL_kEECDH,0,0,0,0,0,0,0,0},
197 {0,SSL_TXT_RC2, 0,SSL_RC2, 0,0,0,0,SSL_ENC_MASK,0}, 247 {0,SSL_TXT_ECDH,0, SSL_kECDHr|SSL_kECDHe|SSL_kEECDH,0,0,0,0,0,0,0,0},
198#ifndef OPENSSL_NO_IDEA 248
199 {0,SSL_TXT_IDEA,0,SSL_IDEA, 0,0,0,0,SSL_ENC_MASK,0}, 249 {0,SSL_TXT_kPSK,0, SSL_kPSK, 0,0,0,0,0,0,0,0},
200#endif 250 {0,SSL_TXT_kGOST,0, SSL_kGOST,0,0,0,0,0,0,0,0},
201 {0,SSL_TXT_SEED,0,SSL_SEED, 0,0,0,0,SSL_ENC_MASK,0}, 251
202 {0,SSL_TXT_eNULL,0,SSL_eNULL,0,0,0,0,SSL_ENC_MASK,0}, 252 /* server authentication aliases */
203 {0,SSL_TXT_eFZA,0,SSL_eFZA, 0,0,0,0,SSL_ENC_MASK,0}, 253 {0,SSL_TXT_aRSA,0, 0,SSL_aRSA, 0,0,0,0,0,0,0},
204 {0,SSL_TXT_AES, 0,SSL_AES, 0,0,0,0,SSL_ENC_MASK,0}, 254 {0,SSL_TXT_aDSS,0, 0,SSL_aDSS, 0,0,0,0,0,0,0},
205 {0,SSL_TXT_CAMELLIA,0,SSL_CAMELLIA, 0,0,0,0,SSL_ENC_MASK,0}, 255 {0,SSL_TXT_DSS,0, 0,SSL_aDSS, 0,0,0,0,0,0,0},
206 256 {0,SSL_TXT_aKRB5,0, 0,SSL_aKRB5, 0,0,0,0,0,0,0},
207 {0,SSL_TXT_MD5, 0,SSL_MD5, 0,0,0,0,SSL_MAC_MASK,0}, 257 {0,SSL_TXT_aNULL,0, 0,SSL_aNULL, 0,0,0,0,0,0,0},
208 {0,SSL_TXT_SHA1,0,SSL_SHA1, 0,0,0,0,SSL_MAC_MASK,0}, 258 {0,SSL_TXT_aDH,0, 0,SSL_aDH, 0,0,0,0,0,0,0}, /* no such ciphersuites supported! */
209 {0,SSL_TXT_SHA, 0,SSL_SHA, 0,0,0,0,SSL_MAC_MASK,0}, 259 {0,SSL_TXT_aECDH,0, 0,SSL_aECDH, 0,0,0,0,0,0,0},
210 260 {0,SSL_TXT_aECDSA,0, 0,SSL_aECDSA,0,0,0,0,0,0,0},
211 {0,SSL_TXT_NULL,0,SSL_NULL, 0,0,0,0,SSL_ENC_MASK,0}, 261 {0,SSL_TXT_ECDSA,0, 0,SSL_aECDSA, 0,0,0,0,0,0,0},
212 {0,SSL_TXT_KRB5,0,SSL_KRB5, 0,0,0,0,SSL_AUTH_MASK|SSL_MKEY_MASK,0}, 262 {0,SSL_TXT_aPSK,0, 0,SSL_aPSK, 0,0,0,0,0,0,0},
213 {0,SSL_TXT_RSA, 0,SSL_RSA, 0,0,0,0,SSL_AUTH_MASK|SSL_MKEY_MASK,0}, 263 {0,SSL_TXT_aGOST94,0,0,SSL_aGOST94,0,0,0,0,0,0,0},
214 {0,SSL_TXT_ADH, 0,SSL_ADH, 0,0,0,0,SSL_AUTH_MASK|SSL_MKEY_MASK,0}, 264 {0,SSL_TXT_aGOST01,0,0,SSL_aGOST01,0,0,0,0,0,0,0},
215 {0,SSL_TXT_FZA, 0,SSL_FZA, 0,0,0,0,SSL_AUTH_MASK|SSL_MKEY_MASK|SSL_ENC_MASK,0}, 265 {0,SSL_TXT_aGOST,0,0,SSL_aGOST94|SSL_aGOST01,0,0,0,0,0,0,0},
216 266
217 {0,SSL_TXT_SSLV2, 0,SSL_SSLV2, 0,0,0,0,SSL_SSL_MASK,0}, 267 /* aliases combining key exchange and server authentication */
218 {0,SSL_TXT_SSLV3, 0,SSL_SSLV3, 0,0,0,0,SSL_SSL_MASK,0}, 268 {0,SSL_TXT_EDH,0, SSL_kEDH,~SSL_aNULL,0,0,0,0,0,0,0},
219 {0,SSL_TXT_TLSV1, 0,SSL_TLSV1, 0,0,0,0,SSL_SSL_MASK,0}, 269 {0,SSL_TXT_EECDH,0, SSL_kEECDH,~SSL_aNULL,0,0,0,0,0,0,0},
220 270 {0,SSL_TXT_NULL,0, 0,0,SSL_eNULL, 0,0,0,0,0,0},
221 {0,SSL_TXT_EXP ,0, 0,SSL_EXPORT, 0,0,0,0,SSL_EXP_MASK}, 271 {0,SSL_TXT_KRB5,0, SSL_kKRB5,SSL_aKRB5,0,0,0,0,0,0,0},
222 {0,SSL_TXT_EXPORT,0, 0,SSL_EXPORT, 0,0,0,0,SSL_EXP_MASK}, 272 {0,SSL_TXT_RSA,0, SSL_kRSA,SSL_aRSA,0,0,0,0,0,0,0},
223 {0,SSL_TXT_EXP40, 0, 0, SSL_EXP40, 0,0,0,0,SSL_STRONG_MASK}, 273 {0,SSL_TXT_ADH,0, SSL_kEDH,SSL_aNULL,0,0,0,0,0,0,0},
224 {0,SSL_TXT_EXP56, 0, 0, SSL_EXP56, 0,0,0,0,SSL_STRONG_MASK}, 274 {0,SSL_TXT_AECDH,0, SSL_kEECDH,SSL_aNULL,0,0,0,0,0,0,0},
225 {0,SSL_TXT_LOW, 0, 0, SSL_LOW, 0,0,0,0,SSL_STRONG_MASK}, 275 {0,SSL_TXT_PSK,0, SSL_kPSK,SSL_aPSK,0,0,0,0,0,0,0},
226 {0,SSL_TXT_MEDIUM,0, 0,SSL_MEDIUM, 0,0,0,0,SSL_STRONG_MASK}, 276
227 {0,SSL_TXT_HIGH, 0, 0, SSL_HIGH, 0,0,0,0,SSL_STRONG_MASK}, 277
228 {0,SSL_TXT_FIPS, 0, 0, SSL_FIPS, 0,0,0,0,SSL_FIPS|SSL_STRONG_NONE}, 278 /* symmetric encryption aliases */
279 {0,SSL_TXT_DES,0, 0,0,SSL_DES, 0,0,0,0,0,0},
280 {0,SSL_TXT_3DES,0, 0,0,SSL_3DES, 0,0,0,0,0,0},
281 {0,SSL_TXT_RC4,0, 0,0,SSL_RC4, 0,0,0,0,0,0},
282 {0,SSL_TXT_RC2,0, 0,0,SSL_RC2, 0,0,0,0,0,0},
283 {0,SSL_TXT_IDEA,0, 0,0,SSL_IDEA, 0,0,0,0,0,0},
284 {0,SSL_TXT_SEED,0, 0,0,SSL_SEED, 0,0,0,0,0,0},
285 {0,SSL_TXT_eNULL,0, 0,0,SSL_eNULL, 0,0,0,0,0,0},
286 {0,SSL_TXT_AES128,0, 0,0,SSL_AES128,0,0,0,0,0,0},
287 {0,SSL_TXT_AES256,0, 0,0,SSL_AES256,0,0,0,0,0,0},
288 {0,SSL_TXT_AES,0, 0,0,SSL_AES128|SSL_AES256,0,0,0,0,0,0},
289 {0,SSL_TXT_CAMELLIA128,0,0,0,SSL_CAMELLIA128,0,0,0,0,0,0},
290 {0,SSL_TXT_CAMELLIA256,0,0,0,SSL_CAMELLIA256,0,0,0,0,0,0},
291 {0,SSL_TXT_CAMELLIA ,0,0,0,SSL_CAMELLIA128|SSL_CAMELLIA256,0,0,0,0,0,0},
292
293 /* MAC aliases */
294 {0,SSL_TXT_MD5,0, 0,0,0,SSL_MD5, 0,0,0,0,0},
295 {0,SSL_TXT_SHA1,0, 0,0,0,SSL_SHA1, 0,0,0,0,0},
296 {0,SSL_TXT_SHA,0, 0,0,0,SSL_SHA1, 0,0,0,0,0},
297 {0,SSL_TXT_GOST94,0, 0,0,0,SSL_GOST94, 0,0,0,0,0},
298 {0,SSL_TXT_GOST89MAC,0, 0,0,0,SSL_GOST89MAC, 0,0,0,0,0},
299
300 /* protocol version aliases */
301 {0,SSL_TXT_SSLV2,0, 0,0,0,0,SSL_SSLV2, 0,0,0,0},
302 {0,SSL_TXT_SSLV3,0, 0,0,0,0,SSL_SSLV3, 0,0,0,0},
303 {0,SSL_TXT_TLSV1,0, 0,0,0,0,SSL_TLSV1, 0,0,0,0},
304
305 /* export flag */
306 {0,SSL_TXT_EXP,0, 0,0,0,0,0,SSL_EXPORT,0,0,0},
307 {0,SSL_TXT_EXPORT,0, 0,0,0,0,0,SSL_EXPORT,0,0,0},
308
309 /* strength classes */
310 {0,SSL_TXT_EXP40,0, 0,0,0,0,0,SSL_EXP40, 0,0,0},
311 {0,SSL_TXT_EXP56,0, 0,0,0,0,0,SSL_EXP56, 0,0,0},
312 {0,SSL_TXT_LOW,0, 0,0,0,0,0,SSL_LOW, 0,0,0},
313 {0,SSL_TXT_MEDIUM,0, 0,0,0,0,0,SSL_MEDIUM,0,0,0},
314 {0,SSL_TXT_HIGH,0, 0,0,0,0,0,SSL_HIGH, 0,0,0},
315 /* FIPS 140-2 approved ciphersuite */
316 {0,SSL_TXT_FIPS,0, 0,0,~SSL_eNULL,0,0,SSL_FIPS, 0,0,0},
229 }; 317 };
318/* Search for public key algorithm with given name and
319 * return its pkey_id if it is available. Otherwise return 0
320 */
321#ifdef OPENSSL_NO_ENGINE
322
323static int get_optional_pkey_id(const char *pkey_name)
324 {
325 const EVP_PKEY_ASN1_METHOD *ameth;
326 int pkey_id=0;
327 ameth = EVP_PKEY_asn1_find_str(NULL,pkey_name,-1);
328 if (ameth)
329 {
330 EVP_PKEY_asn1_get0_info(&pkey_id, NULL,NULL,NULL,NULL,ameth);
331 }
332 return pkey_id;
333 }
334
335#else
336
337static int get_optional_pkey_id(const char *pkey_name)
338 {
339 const EVP_PKEY_ASN1_METHOD *ameth;
340 ENGINE *tmpeng = NULL;
341 int pkey_id=0;
342 ameth = EVP_PKEY_asn1_find_str(&tmpeng,pkey_name,-1);
343 if (ameth)
344 {
345 EVP_PKEY_asn1_get0_info(&pkey_id, NULL,NULL,NULL,NULL,ameth);
346 }
347 if (tmpeng) ENGINE_finish(tmpeng);
348 return pkey_id;
349 }
350
351#endif
230 352
231void ssl_load_ciphers(void) 353void ssl_load_ciphers(void)
232 { 354 {
@@ -252,16 +374,37 @@ void ssl_load_ciphers(void)
252 EVP_get_cipherbyname(SN_camellia_128_cbc); 374 EVP_get_cipherbyname(SN_camellia_128_cbc);
253 ssl_cipher_methods[SSL_ENC_CAMELLIA256_IDX]= 375 ssl_cipher_methods[SSL_ENC_CAMELLIA256_IDX]=
254 EVP_get_cipherbyname(SN_camellia_256_cbc); 376 EVP_get_cipherbyname(SN_camellia_256_cbc);
377 ssl_cipher_methods[SSL_ENC_GOST89_IDX]=
378 EVP_get_cipherbyname(SN_gost89_cnt);
255 ssl_cipher_methods[SSL_ENC_SEED_IDX]= 379 ssl_cipher_methods[SSL_ENC_SEED_IDX]=
256 EVP_get_cipherbyname(SN_seed_cbc); 380 EVP_get_cipherbyname(SN_seed_cbc);
257 381
258 ssl_digest_methods[SSL_MD_MD5_IDX]= 382 ssl_digest_methods[SSL_MD_MD5_IDX]=
259 EVP_get_digestbyname(SN_md5); 383 EVP_get_digestbyname(SN_md5);
384 ssl_mac_secret_size[SSL_MD_MD5_IDX]=
385 EVP_MD_size(ssl_digest_methods[SSL_MD_MD5_IDX]);
386 OPENSSL_assert(ssl_mac_secret_size[SSL_MD_MD5_IDX] >= 0);
260 ssl_digest_methods[SSL_MD_SHA1_IDX]= 387 ssl_digest_methods[SSL_MD_SHA1_IDX]=
261 EVP_get_digestbyname(SN_sha1); 388 EVP_get_digestbyname(SN_sha1);
262 } 389 ssl_mac_secret_size[SSL_MD_SHA1_IDX]=
263 390 EVP_MD_size(ssl_digest_methods[SSL_MD_SHA1_IDX]);
391 OPENSSL_assert(ssl_mac_secret_size[SSL_MD_SHA1_IDX] >= 0);
392 ssl_digest_methods[SSL_MD_GOST94_IDX]=
393 EVP_get_digestbyname(SN_id_GostR3411_94);
394 if (ssl_digest_methods[SSL_MD_GOST94_IDX])
395 {
396 ssl_mac_secret_size[SSL_MD_GOST94_IDX]=
397 EVP_MD_size(ssl_digest_methods[SSL_MD_GOST94_IDX]);
398 OPENSSL_assert(ssl_mac_secret_size[SSL_MD_GOST94_IDX] >= 0);
399 }
400 ssl_digest_methods[SSL_MD_GOST89MAC_IDX]=
401 EVP_get_digestbyname(SN_id_Gost28147_89_MAC);
402 ssl_mac_pkey_id[SSL_MD_GOST89MAC_IDX] = get_optional_pkey_id("gost-mac");
403 if (ssl_mac_pkey_id[SSL_MD_GOST89MAC_IDX]) {
404 ssl_mac_secret_size[SSL_MD_GOST89MAC_IDX]=32;
405 }
264 406
407 }
265#ifndef OPENSSL_NO_COMP 408#ifndef OPENSSL_NO_COMP
266 409
267static int sk_comp_cmp(const SSL_COMP * const *a, 410static int sk_comp_cmp(const SSL_COMP * const *a,
@@ -316,10 +459,10 @@ static void load_builtin_compressions(void)
316#endif 459#endif
317 460
318int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc, 461int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
319 const EVP_MD **md, SSL_COMP **comp) 462 const EVP_MD **md, int *mac_pkey_type, int *mac_secret_size,SSL_COMP **comp)
320 { 463 {
321 int i; 464 int i;
322 SSL_CIPHER *c; 465 const SSL_CIPHER *c;
323 466
324 c=s->cipher; 467 c=s->cipher;
325 if (c == NULL) return(0); 468 if (c == NULL) return(0);
@@ -344,7 +487,7 @@ int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
344 487
345 if ((enc == NULL) || (md == NULL)) return(0); 488 if ((enc == NULL) || (md == NULL)) return(0);
346 489
347 switch (c->algorithms & SSL_ENC_MASK) 490 switch (c->algorithm_enc)
348 { 491 {
349 case SSL_DES: 492 case SSL_DES:
350 i=SSL_ENC_DES_IDX; 493 i=SSL_ENC_DES_IDX;
@@ -364,26 +507,24 @@ int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
364 case SSL_eNULL: 507 case SSL_eNULL:
365 i=SSL_ENC_NULL_IDX; 508 i=SSL_ENC_NULL_IDX;
366 break; 509 break;
367 case SSL_AES: 510 case SSL_AES128:
368 switch(c->alg_bits) 511 i=SSL_ENC_AES128_IDX;
369 {
370 case 128: i=SSL_ENC_AES128_IDX; break;
371 case 256: i=SSL_ENC_AES256_IDX; break;
372 default: i=-1; break;
373 }
374 break; 512 break;
375 case SSL_CAMELLIA: 513 case SSL_AES256:
376 switch(c->alg_bits) 514 i=SSL_ENC_AES256_IDX;
377 { 515 break;
378 case 128: i=SSL_ENC_CAMELLIA128_IDX; break; 516 case SSL_CAMELLIA128:
379 case 256: i=SSL_ENC_CAMELLIA256_IDX; break; 517 i=SSL_ENC_CAMELLIA128_IDX;
380 default: i=-1; break; 518 break;
381 } 519 case SSL_CAMELLIA256:
520 i=SSL_ENC_CAMELLIA256_IDX;
521 break;
522 case SSL_eGOST2814789CNT:
523 i=SSL_ENC_GOST89_IDX;
382 break; 524 break;
383 case SSL_SEED: 525 case SSL_SEED:
384 i=SSL_ENC_SEED_IDX; 526 i=SSL_ENC_SEED_IDX;
385 break; 527 break;
386
387 default: 528 default:
388 i= -1; 529 i= -1;
389 break; 530 break;
@@ -399,7 +540,7 @@ int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
399 *enc=ssl_cipher_methods[i]; 540 *enc=ssl_cipher_methods[i];
400 } 541 }
401 542
402 switch (c->algorithms & SSL_MAC_MASK) 543 switch (c->algorithm_mac)
403 { 544 {
404 case SSL_MD5: 545 case SSL_MD5:
405 i=SSL_MD_MD5_IDX; 546 i=SSL_MD_MD5_IDX;
@@ -407,21 +548,48 @@ int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc,
407 case SSL_SHA1: 548 case SSL_SHA1:
408 i=SSL_MD_SHA1_IDX; 549 i=SSL_MD_SHA1_IDX;
409 break; 550 break;
551 case SSL_GOST94:
552 i = SSL_MD_GOST94_IDX;
553 break;
554 case SSL_GOST89MAC:
555 i = SSL_MD_GOST89MAC_IDX;
556 break;
410 default: 557 default:
411 i= -1; 558 i= -1;
412 break; 559 break;
413 } 560 }
414 if ((i < 0) || (i > SSL_MD_NUM_IDX)) 561 if ((i < 0) || (i > SSL_MD_NUM_IDX))
415 *md=NULL; 562 {
563 *md=NULL;
564 if (mac_pkey_type!=NULL) *mac_pkey_type = NID_undef;
565 if (mac_secret_size!=NULL) *mac_secret_size = 0;
566
567 }
416 else 568 else
569 {
417 *md=ssl_digest_methods[i]; 570 *md=ssl_digest_methods[i];
571 if (mac_pkey_type!=NULL) *mac_pkey_type = ssl_mac_pkey_id[i];
572 if (mac_secret_size!=NULL) *mac_secret_size = ssl_mac_secret_size[i];
573 }
418 574
419 if ((*enc != NULL) && (*md != NULL)) 575 if ((*enc != NULL) && (*md != NULL) && (!mac_pkey_type||*mac_pkey_type != NID_undef))
420 return(1); 576 return(1);
421 else 577 else
422 return(0); 578 return(0);
423 } 579 }
424 580
581int ssl_get_handshake_digest(int idx, long *mask, const EVP_MD **md)
582{
583 if (idx <0||idx>=SSL_MD_NUM_IDX)
584 {
585 return 0;
586 }
587 if (ssl_handshake_digest_flag[idx]==0) return 0;
588 *mask = ssl_handshake_digest_flag[idx];
589 *md = ssl_digest_methods[idx];
590 return 1;
591}
592
425#define ITEM_SEP(a) \ 593#define ITEM_SEP(a) \
426 (((a) == ':') || ((a) == ' ') || ((a) == ';') || ((a) == ',')) 594 (((a) == ':') || ((a) == ' ') || ((a) == ';') || ((a) == ','))
427 595
@@ -433,7 +601,7 @@ static void ll_append_tail(CIPHER_ORDER **head, CIPHER_ORDER *curr,
433 *head=curr->next; 601 *head=curr->next;
434 if (curr->prev != NULL) 602 if (curr->prev != NULL)
435 curr->prev->next=curr->next; 603 curr->prev->next=curr->next;
436 if (curr->next != NULL) /* should always be true */ 604 if (curr->next != NULL)
437 curr->next->prev=curr->prev; 605 curr->next->prev=curr->prev;
438 (*tail)->next=curr; 606 (*tail)->next=curr;
439 curr->prev= *tail; 607 curr->prev= *tail;
@@ -441,69 +609,105 @@ static void ll_append_tail(CIPHER_ORDER **head, CIPHER_ORDER *curr,
441 *tail=curr; 609 *tail=curr;
442 } 610 }
443 611
444struct disabled_masks { /* This is a kludge no longer needed with OpenSSL 0.9.9, 612static void ll_append_head(CIPHER_ORDER **head, CIPHER_ORDER *curr,
445 * where 128-bit and 256-bit algorithms simply will get 613 CIPHER_ORDER **tail)
446 * separate bits. */ 614 {
447 unsigned long mask; /* everything except m256 */ 615 if (curr == *head) return;
448 unsigned long m256; /* applies to 256-bit algorithms only */ 616 if (curr == *tail)
449}; 617 *tail=curr->prev;
618 if (curr->next != NULL)
619 curr->next->prev=curr->prev;
620 if (curr->prev != NULL)
621 curr->prev->next=curr->next;
622 (*head)->prev=curr;
623 curr->next= *head;
624 curr->prev=NULL;
625 *head=curr;
626 }
450 627
451static struct disabled_masks ssl_cipher_get_disabled(void) 628static void ssl_cipher_get_disabled(unsigned long *mkey, unsigned long *auth, unsigned long *enc, unsigned long *mac, unsigned long *ssl)
452 { 629 {
453 unsigned long mask; 630 *mkey = 0;
454 unsigned long m256; 631 *auth = 0;
455 struct disabled_masks ret; 632 *enc = 0;
633 *mac = 0;
634 *ssl = 0;
456 635
457 mask = SSL_kFZA;
458#ifdef OPENSSL_NO_RSA 636#ifdef OPENSSL_NO_RSA
459 mask |= SSL_aRSA|SSL_kRSA; 637 *mkey |= SSL_kRSA;
638 *auth |= SSL_aRSA;
460#endif 639#endif
461#ifdef OPENSSL_NO_DSA 640#ifdef OPENSSL_NO_DSA
462 mask |= SSL_aDSS; 641 *auth |= SSL_aDSS;
463#endif 642#endif
643 *mkey |= SSL_kDHr|SSL_kDHd; /* no such ciphersuites supported! */
644 *auth |= SSL_aDH;
464#ifdef OPENSSL_NO_DH 645#ifdef OPENSSL_NO_DH
465 mask |= SSL_kDHr|SSL_kDHd|SSL_kEDH|SSL_aDH; 646 *mkey |= SSL_kDHr|SSL_kDHd|SSL_kEDH;
647 *auth |= SSL_aDH;
466#endif 648#endif
467#ifdef OPENSSL_NO_KRB5 649#ifdef OPENSSL_NO_KRB5
468 mask |= SSL_kKRB5|SSL_aKRB5; 650 *mkey |= SSL_kKRB5;
651 *auth |= SSL_aKRB5;
652#endif
653#ifdef OPENSSL_NO_ECDSA
654 *auth |= SSL_aECDSA;
469#endif 655#endif
470#ifdef OPENSSL_NO_ECDH 656#ifdef OPENSSL_NO_ECDH
471 mask |= SSL_kECDH|SSL_kECDHE; 657 *mkey |= SSL_kECDHe|SSL_kECDHr;
658 *auth |= SSL_aECDH;
472#endif 659#endif
660#ifdef OPENSSL_NO_PSK
661 *mkey |= SSL_kPSK;
662 *auth |= SSL_aPSK;
663#endif
664 /* Check for presence of GOST 34.10 algorithms, and if they
665 * do not present, disable appropriate auth and key exchange */
666 if (!get_optional_pkey_id("gost94")) {
667 *auth |= SSL_aGOST94;
668 }
669 if (!get_optional_pkey_id("gost2001")) {
670 *auth |= SSL_aGOST01;
671 }
672 /* Disable GOST key exchange if no GOST signature algs are available * */
673 if ((*auth & (SSL_aGOST94|SSL_aGOST01)) == (SSL_aGOST94|SSL_aGOST01)) {
674 *mkey |= SSL_kGOST;
675 }
473#ifdef SSL_FORBID_ENULL 676#ifdef SSL_FORBID_ENULL
474 mask |= SSL_eNULL; 677 *enc |= SSL_eNULL;
475#endif 678#endif
679
680
681
682 *enc |= (ssl_cipher_methods[SSL_ENC_DES_IDX ] == NULL) ? SSL_DES :0;
683 *enc |= (ssl_cipher_methods[SSL_ENC_3DES_IDX] == NULL) ? SSL_3DES:0;
684 *enc |= (ssl_cipher_methods[SSL_ENC_RC4_IDX ] == NULL) ? SSL_RC4 :0;
685 *enc |= (ssl_cipher_methods[SSL_ENC_RC2_IDX ] == NULL) ? SSL_RC2 :0;
686 *enc |= (ssl_cipher_methods[SSL_ENC_IDEA_IDX] == NULL) ? SSL_IDEA:0;
687 *enc |= (ssl_cipher_methods[SSL_ENC_AES128_IDX] == NULL) ? SSL_AES128:0;
688 *enc |= (ssl_cipher_methods[SSL_ENC_AES256_IDX] == NULL) ? SSL_AES256:0;
689 *enc |= (ssl_cipher_methods[SSL_ENC_CAMELLIA128_IDX] == NULL) ? SSL_CAMELLIA128:0;
690 *enc |= (ssl_cipher_methods[SSL_ENC_CAMELLIA256_IDX] == NULL) ? SSL_CAMELLIA256:0;
691 *enc |= (ssl_cipher_methods[SSL_ENC_GOST89_IDX] == NULL) ? SSL_eGOST2814789CNT:0;
692 *enc |= (ssl_cipher_methods[SSL_ENC_SEED_IDX] == NULL) ? SSL_SEED:0;
693
694 *mac |= (ssl_digest_methods[SSL_MD_MD5_IDX ] == NULL) ? SSL_MD5 :0;
695 *mac |= (ssl_digest_methods[SSL_MD_SHA1_IDX] == NULL) ? SSL_SHA1:0;
696 *mac |= (ssl_digest_methods[SSL_MD_GOST94_IDX] == NULL) ? SSL_GOST94:0;
697 *mac |= (ssl_digest_methods[SSL_MD_GOST89MAC_IDX] == NULL || ssl_mac_pkey_id[SSL_MD_GOST89MAC_IDX]==NID_undef)? SSL_GOST89MAC:0;
476 698
477 mask |= (ssl_cipher_methods[SSL_ENC_DES_IDX ] == NULL) ? SSL_DES :0;
478 mask |= (ssl_cipher_methods[SSL_ENC_3DES_IDX] == NULL) ? SSL_3DES:0;
479 mask |= (ssl_cipher_methods[SSL_ENC_RC4_IDX ] == NULL) ? SSL_RC4 :0;
480 mask |= (ssl_cipher_methods[SSL_ENC_RC2_IDX ] == NULL) ? SSL_RC2 :0;
481 mask |= (ssl_cipher_methods[SSL_ENC_IDEA_IDX] == NULL) ? SSL_IDEA:0;
482 mask |= (ssl_cipher_methods[SSL_ENC_eFZA_IDX] == NULL) ? SSL_eFZA:0;
483 mask |= (ssl_cipher_methods[SSL_ENC_SEED_IDX] == NULL) ? SSL_SEED:0;
484
485 mask |= (ssl_digest_methods[SSL_MD_MD5_IDX ] == NULL) ? SSL_MD5 :0;
486 mask |= (ssl_digest_methods[SSL_MD_SHA1_IDX] == NULL) ? SSL_SHA1:0;
487
488 /* finally consider algorithms where mask and m256 differ */
489 m256 = mask;
490 mask |= (ssl_cipher_methods[SSL_ENC_AES128_IDX] == NULL) ? SSL_AES:0;
491 mask |= (ssl_cipher_methods[SSL_ENC_CAMELLIA128_IDX] == NULL) ? SSL_CAMELLIA:0;
492 m256 |= (ssl_cipher_methods[SSL_ENC_AES256_IDX] == NULL) ? SSL_AES:0;
493 m256 |= (ssl_cipher_methods[SSL_ENC_CAMELLIA256_IDX] == NULL) ? SSL_CAMELLIA:0;
494
495 ret.mask = mask;
496 ret.m256 = m256;
497 return ret;
498 } 699 }
499 700
500static void ssl_cipher_collect_ciphers(const SSL_METHOD *ssl_method, 701static void ssl_cipher_collect_ciphers(const SSL_METHOD *ssl_method,
501 int num_of_ciphers, unsigned long mask, unsigned long m256, 702 int num_of_ciphers,
502 CIPHER_ORDER *co_list, CIPHER_ORDER **head_p, 703 unsigned long disabled_mkey, unsigned long disabled_auth,
503 CIPHER_ORDER **tail_p) 704 unsigned long disabled_enc, unsigned long disabled_mac,
705 unsigned long disabled_ssl,
706 CIPHER_ORDER *co_list,
707 CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p)
504 { 708 {
505 int i, co_list_num; 709 int i, co_list_num;
506 SSL_CIPHER *c; 710 const SSL_CIPHER *c;
507 711
508 /* 712 /*
509 * We have num_of_ciphers descriptions compiled in, depending on the 713 * We have num_of_ciphers descriptions compiled in, depending on the
@@ -517,14 +721,13 @@ static void ssl_cipher_collect_ciphers(const SSL_METHOD *ssl_method,
517 for (i = 0; i < num_of_ciphers; i++) 721 for (i = 0; i < num_of_ciphers; i++)
518 { 722 {
519 c = ssl_method->get_cipher(i); 723 c = ssl_method->get_cipher(i);
520#define IS_MASKED(c) ((c)->algorithms & (((c)->alg_bits == 256) ? m256 : mask))
521 /* drop those that use any of that is not available */ 724 /* drop those that use any of that is not available */
522#ifdef OPENSSL_FIPS 725 if ((c != NULL) && c->valid &&
523 if ((c != NULL) && c->valid && !IS_MASKED(c) 726 !(c->algorithm_mkey & disabled_mkey) &&
524 && (!FIPS_mode() || (c->algo_strength & SSL_FIPS))) 727 !(c->algorithm_auth & disabled_auth) &&
525#else 728 !(c->algorithm_enc & disabled_enc) &&
526 if ((c != NULL) && c->valid && !IS_MASKED(c)) 729 !(c->algorithm_mac & disabled_mac) &&
527#endif 730 !(c->algorithm_ssl & disabled_ssl))
528 { 731 {
529 co_list[co_list_num].cipher = c; 732 co_list[co_list_num].cipher = c;
530 co_list[co_list_num].next = NULL; 733 co_list[co_list_num].next = NULL;
@@ -532,7 +735,7 @@ static void ssl_cipher_collect_ciphers(const SSL_METHOD *ssl_method,
532 co_list[co_list_num].active = 0; 735 co_list[co_list_num].active = 0;
533 co_list_num++; 736 co_list_num++;
534#ifdef KSSL_DEBUG 737#ifdef KSSL_DEBUG
535 printf("\t%d: %s %lx %lx\n",i,c->name,c->id,c->algorithms); 738 printf("\t%d: %s %lx %lx %lx\n",i,c->name,c->id,c->algorithm_mkey,c->algorithm_auth);
536#endif /* KSSL_DEBUG */ 739#endif /* KSSL_DEBUG */
537 /* 740 /*
538 if (!sk_push(ca_list,(char *)c)) goto err; 741 if (!sk_push(ca_list,(char *)c)) goto err;
@@ -543,29 +746,45 @@ static void ssl_cipher_collect_ciphers(const SSL_METHOD *ssl_method,
543 /* 746 /*
544 * Prepare linked list from list entries 747 * Prepare linked list from list entries
545 */ 748 */
546 for (i = 1; i < co_list_num - 1; i++)
547 {
548 co_list[i].prev = &(co_list[i-1]);
549 co_list[i].next = &(co_list[i+1]);
550 }
551 if (co_list_num > 0) 749 if (co_list_num > 0)
552 { 750 {
553 (*head_p) = &(co_list[0]); 751 co_list[0].prev = NULL;
554 (*head_p)->prev = NULL; 752
555 (*head_p)->next = &(co_list[1]); 753 if (co_list_num > 1)
556 (*tail_p) = &(co_list[co_list_num - 1]); 754 {
557 (*tail_p)->prev = &(co_list[co_list_num - 2]); 755 co_list[0].next = &co_list[1];
558 (*tail_p)->next = NULL; 756
757 for (i = 1; i < co_list_num - 1; i++)
758 {
759 co_list[i].prev = &co_list[i - 1];
760 co_list[i].next = &co_list[i + 1];
761 }
762
763 co_list[co_list_num - 1].prev = &co_list[co_list_num - 2];
764 }
765
766 co_list[co_list_num - 1].next = NULL;
767
768 *head_p = &co_list[0];
769 *tail_p = &co_list[co_list_num - 1];
559 } 770 }
560 } 771 }
561 772
562static void ssl_cipher_collect_aliases(SSL_CIPHER **ca_list, 773static void ssl_cipher_collect_aliases(const SSL_CIPHER **ca_list,
563 int num_of_group_aliases, unsigned long mask, 774 int num_of_group_aliases,
775 unsigned long disabled_mkey, unsigned long disabled_auth,
776 unsigned long disabled_enc, unsigned long disabled_mac,
777 unsigned long disabled_ssl,
564 CIPHER_ORDER *head) 778 CIPHER_ORDER *head)
565 { 779 {
566 CIPHER_ORDER *ciph_curr; 780 CIPHER_ORDER *ciph_curr;
567 SSL_CIPHER **ca_curr; 781 const SSL_CIPHER **ca_curr;
568 int i; 782 int i;
783 unsigned long mask_mkey = ~disabled_mkey;
784 unsigned long mask_auth = ~disabled_auth;
785 unsigned long mask_enc = ~disabled_enc;
786 unsigned long mask_mac = ~disabled_mac;
787 unsigned long mask_ssl = ~disabled_ssl;
569 788
570 /* 789 /*
571 * First, add the real ciphers as already collected 790 * First, add the real ciphers as already collected
@@ -581,84 +800,118 @@ static void ssl_cipher_collect_aliases(SSL_CIPHER **ca_list,
581 800
582 /* 801 /*
583 * Now we add the available ones from the cipher_aliases[] table. 802 * Now we add the available ones from the cipher_aliases[] table.
584 * They represent either an algorithm, that must be fully 803 * They represent either one or more algorithms, some of which
585 * supported (not match any bit in mask) or represent a cipher 804 * in any affected category must be supported (set in enabled_mask),
586 * strength value (will be added in any case because algorithms=0). 805 * or represent a cipher strength value (will be added in any case because algorithms=0).
587 */ 806 */
588 for (i = 0; i < num_of_group_aliases; i++) 807 for (i = 0; i < num_of_group_aliases; i++)
589 { 808 {
590 if ((i == 0) || /* always fetch "ALL" */ 809 unsigned long algorithm_mkey = cipher_aliases[i].algorithm_mkey;
591 !(cipher_aliases[i].algorithms & mask)) 810 unsigned long algorithm_auth = cipher_aliases[i].algorithm_auth;
592 { 811 unsigned long algorithm_enc = cipher_aliases[i].algorithm_enc;
593 *ca_curr = (SSL_CIPHER *)(cipher_aliases + i); 812 unsigned long algorithm_mac = cipher_aliases[i].algorithm_mac;
594 ca_curr++; 813 unsigned long algorithm_ssl = cipher_aliases[i].algorithm_ssl;
595 } 814
815 if (algorithm_mkey)
816 if ((algorithm_mkey & mask_mkey) == 0)
817 continue;
818
819 if (algorithm_auth)
820 if ((algorithm_auth & mask_auth) == 0)
821 continue;
822
823 if (algorithm_enc)
824 if ((algorithm_enc & mask_enc) == 0)
825 continue;
826
827 if (algorithm_mac)
828 if ((algorithm_mac & mask_mac) == 0)
829 continue;
830
831 if (algorithm_ssl)
832 if ((algorithm_ssl & mask_ssl) == 0)
833 continue;
834
835 *ca_curr = (SSL_CIPHER *)(cipher_aliases + i);
836 ca_curr++;
596 } 837 }
597 838
598 *ca_curr = NULL; /* end of list */ 839 *ca_curr = NULL; /* end of list */
599 } 840 }
600 841
601static void ssl_cipher_apply_rule(unsigned long cipher_id, unsigned long ssl_version, 842static void ssl_cipher_apply_rule(unsigned long cipher_id,
602 unsigned long algorithms, unsigned long mask, 843 unsigned long alg_mkey, unsigned long alg_auth,
603 unsigned long algo_strength, unsigned long mask_strength, 844 unsigned long alg_enc, unsigned long alg_mac,
604 int rule, int strength_bits, CIPHER_ORDER *co_list, 845 unsigned long alg_ssl,
846 unsigned long algo_strength,
847 int rule, int strength_bits,
605 CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p) 848 CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p)
606 { 849 {
607 CIPHER_ORDER *head, *tail, *curr, *curr2, *tail2; 850 CIPHER_ORDER *head, *tail, *curr, *curr2, *last;
608 SSL_CIPHER *cp; 851 const SSL_CIPHER *cp;
609 unsigned long ma, ma_s; 852 int reverse = 0;
610 853
611#ifdef CIPHER_DEBUG 854#ifdef CIPHER_DEBUG
612 printf("Applying rule %d with %08lx %08lx %08lx %08lx (%d)\n", 855 printf("Applying rule %d with %08lx/%08lx/%08lx/%08lx/%08lx %08lx (%d)\n",
613 rule, algorithms, mask, algo_strength, mask_strength, 856 rule, alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl, algo_strength, strength_bits);
614 strength_bits);
615#endif 857#endif
616 858
617 curr = head = *head_p; 859 if (rule == CIPHER_DEL)
618 curr2 = head; 860 reverse = 1; /* needed to maintain sorting between currently deleted ciphers */
619 tail2 = tail = *tail_p; 861
862 head = *head_p;
863 tail = *tail_p;
864
865 if (reverse)
866 {
867 curr = tail;
868 last = head;
869 }
870 else
871 {
872 curr = head;
873 last = tail;
874 }
875
876 curr2 = curr;
620 for (;;) 877 for (;;)
621 { 878 {
622 if ((curr == NULL) || (curr == tail2)) break; 879 if ((curr == NULL) || (curr == last)) break;
623 curr = curr2; 880 curr = curr2;
624 curr2 = curr->next; 881 curr2 = reverse ? curr->prev : curr->next;
625 882
626 cp = curr->cipher; 883 cp = curr->cipher;
627 884
628 /* If explicit cipher suite, match only that one for its own protocol version. 885 /*
629 * Usual selection criteria will be used for similar ciphersuites from other version! */ 886 * Selection criteria is either the value of strength_bits
630 887 * or the algorithms used.
631 if (cipher_id && (cp->algorithms & SSL_SSL_MASK) == ssl_version) 888 */
889 if (strength_bits >= 0)
632 { 890 {
633 if (cp->id != cipher_id) 891 if (strength_bits != cp->strength_bits)
634 continue; 892 continue;
635 } 893 }
636 894 else
637 /*
638 * Selection criteria is either the number of strength_bits
639 * or the algorithm used.
640 */
641 else if (strength_bits == -1)
642 { 895 {
643 ma = mask & cp->algorithms;
644 ma_s = mask_strength & cp->algo_strength;
645
646#ifdef CIPHER_DEBUG 896#ifdef CIPHER_DEBUG
647 printf("\nName: %s:\nAlgo = %08lx Algo_strength = %08lx\nMask = %08lx Mask_strength %08lx\n", cp->name, cp->algorithms, cp->algo_strength, mask, mask_strength); 897 printf("\nName: %s:\nAlgo = %08lx/%08lx/%08lx/%08lx/%08lx Algo_strength = %08lx\n", cp->name, cp->algorithm_mkey, cp->algorithm_auth, cp->algorithm_enc, cp->algorithm_mac, cp->algorithm_ssl, cp->algo_strength);
648 printf("ma = %08lx ma_s %08lx, ma&algo=%08lx, ma_s&algos=%08lx\n", ma, ma_s, ma&algorithms, ma_s&algo_strength);
649#endif 898#endif
650 /* 899
651 * Select: if none of the mask bit was met from the 900 if (alg_mkey && !(alg_mkey & cp->algorithm_mkey))
652 * cipher or not all of the bits were met, the 901 continue;
653 * selection does not apply. 902 if (alg_auth && !(alg_auth & cp->algorithm_auth))
654 */ 903 continue;
655 if (((ma == 0) && (ma_s == 0)) || 904 if (alg_enc && !(alg_enc & cp->algorithm_enc))
656 ((ma & algorithms) != ma) || 905 continue;
657 ((ma_s & algo_strength) != ma_s)) 906 if (alg_mac && !(alg_mac & cp->algorithm_mac))
658 continue; /* does not apply */ 907 continue;
908 if (alg_ssl && !(alg_ssl & cp->algorithm_ssl))
909 continue;
910 if ((algo_strength & SSL_EXP_MASK) && !(algo_strength & SSL_EXP_MASK & cp->algo_strength))
911 continue;
912 if ((algo_strength & SSL_STRONG_MASK) && !(algo_strength & SSL_STRONG_MASK & cp->algo_strength))
913 continue;
659 } 914 }
660 else if (strength_bits != cp->strength_bits)
661 continue; /* does not apply */
662 915
663#ifdef CIPHER_DEBUG 916#ifdef CIPHER_DEBUG
664 printf("Action = %d\n", rule); 917 printf("Action = %d\n", rule);
@@ -667,38 +920,37 @@ static void ssl_cipher_apply_rule(unsigned long cipher_id, unsigned long ssl_ver
667 /* add the cipher if it has not been added yet. */ 920 /* add the cipher if it has not been added yet. */
668 if (rule == CIPHER_ADD) 921 if (rule == CIPHER_ADD)
669 { 922 {
923 /* reverse == 0 */
670 if (!curr->active) 924 if (!curr->active)
671 { 925 {
672 int add_this_cipher = 1; 926 ll_append_tail(&head, curr, &tail);
673 927 curr->active = 1;
674 if (((cp->algorithms & (SSL_kECDHE|SSL_kECDH|SSL_aECDSA)) != 0))
675 {
676 /* Make sure "ECCdraft" ciphersuites are activated only if
677 * *explicitly* requested, but not implicitly (such as
678 * as part of the "AES" alias). */
679
680 add_this_cipher = (mask & (SSL_kECDHE|SSL_kECDH|SSL_aECDSA)) != 0 || cipher_id != 0;
681 }
682
683 if (add_this_cipher)
684 {
685 ll_append_tail(&head, curr, &tail);
686 curr->active = 1;
687 }
688 } 928 }
689 } 929 }
690 /* Move the added cipher to this location */ 930 /* Move the added cipher to this location */
691 else if (rule == CIPHER_ORD) 931 else if (rule == CIPHER_ORD)
692 { 932 {
933 /* reverse == 0 */
693 if (curr->active) 934 if (curr->active)
694 { 935 {
695 ll_append_tail(&head, curr, &tail); 936 ll_append_tail(&head, curr, &tail);
696 } 937 }
697 } 938 }
698 else if (rule == CIPHER_DEL) 939 else if (rule == CIPHER_DEL)
699 curr->active = 0; 940 {
941 /* reverse == 1 */
942 if (curr->active)
943 {
944 /* most recently deleted ciphersuites get best positions
945 * for any future CIPHER_ADD (note that the CIPHER_DEL loop
946 * works in reverse to maintain the order) */
947 ll_append_head(&head, curr, &tail);
948 curr->active = 0;
949 }
950 }
700 else if (rule == CIPHER_KILL) 951 else if (rule == CIPHER_KILL)
701 { 952 {
953 /* reverse == 0 */
702 if (head == curr) 954 if (head == curr)
703 head = curr->next; 955 head = curr->next;
704 else 956 else
@@ -719,8 +971,7 @@ static void ssl_cipher_apply_rule(unsigned long cipher_id, unsigned long ssl_ver
719 *tail_p = tail; 971 *tail_p = tail;
720 } 972 }
721 973
722static int ssl_cipher_strength_sort(CIPHER_ORDER *co_list, 974static int ssl_cipher_strength_sort(CIPHER_ORDER **head_p,
723 CIPHER_ORDER **head_p,
724 CIPHER_ORDER **tail_p) 975 CIPHER_ORDER **tail_p)
725 { 976 {
726 int max_strength_bits, i, *number_uses; 977 int max_strength_bits, i, *number_uses;
@@ -743,10 +994,10 @@ static int ssl_cipher_strength_sort(CIPHER_ORDER *co_list,
743 994
744 number_uses = OPENSSL_malloc((max_strength_bits + 1) * sizeof(int)); 995 number_uses = OPENSSL_malloc((max_strength_bits + 1) * sizeof(int));
745 if (!number_uses) 996 if (!number_uses)
746 { 997 {
747 SSLerr(SSL_F_SSL_CIPHER_STRENGTH_SORT,ERR_R_MALLOC_FAILURE); 998 SSLerr(SSL_F_SSL_CIPHER_STRENGTH_SORT,ERR_R_MALLOC_FAILURE);
748 return(0); 999 return(0);
749 } 1000 }
750 memset(number_uses, 0, (max_strength_bits + 1) * sizeof(int)); 1001 memset(number_uses, 0, (max_strength_bits + 1) * sizeof(int));
751 1002
752 /* 1003 /*
@@ -765,21 +1016,20 @@ static int ssl_cipher_strength_sort(CIPHER_ORDER *co_list,
765 */ 1016 */
766 for (i = max_strength_bits; i >= 0; i--) 1017 for (i = max_strength_bits; i >= 0; i--)
767 if (number_uses[i] > 0) 1018 if (number_uses[i] > 0)
768 ssl_cipher_apply_rule(0, 0, 0, 0, 0, 0, CIPHER_ORD, i, 1019 ssl_cipher_apply_rule(0, 0, 0, 0, 0, 0, 0, CIPHER_ORD, i, head_p, tail_p);
769 co_list, head_p, tail_p);
770 1020
771 OPENSSL_free(number_uses); 1021 OPENSSL_free(number_uses);
772 return(1); 1022 return(1);
773 } 1023 }
774 1024
775static int ssl_cipher_process_rulestr(const char *rule_str, 1025static int ssl_cipher_process_rulestr(const char *rule_str,
776 CIPHER_ORDER *co_list, CIPHER_ORDER **head_p, 1026 CIPHER_ORDER **head_p, CIPHER_ORDER **tail_p,
777 CIPHER_ORDER **tail_p, SSL_CIPHER **ca_list) 1027 const SSL_CIPHER **ca_list)
778 { 1028 {
779 unsigned long algorithms, mask, algo_strength, mask_strength; 1029 unsigned long alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl, algo_strength;
780 const char *l, *start, *buf; 1030 const char *l, *start, *buf;
781 int j, multi, found, rule, retval, ok, buflen; 1031 int j, multi, found, rule, retval, ok, buflen;
782 unsigned long cipher_id = 0, ssl_version = 0; 1032 unsigned long cipher_id = 0;
783 char ch; 1033 char ch;
784 1034
785 retval = 1; 1035 retval = 1;
@@ -807,7 +1057,12 @@ static int ssl_cipher_process_rulestr(const char *rule_str,
807 continue; 1057 continue;
808 } 1058 }
809 1059
810 algorithms = mask = algo_strength = mask_strength = 0; 1060 alg_mkey = 0;
1061 alg_auth = 0;
1062 alg_enc = 0;
1063 alg_mac = 0;
1064 alg_ssl = 0;
1065 algo_strength = 0;
811 1066
812 start=l; 1067 start=l;
813 for (;;) 1068 for (;;)
@@ -868,10 +1123,9 @@ static int ssl_cipher_process_rulestr(const char *rule_str,
868 * sufficient, we have to strncmp() anyway. (We cannot 1123 * sufficient, we have to strncmp() anyway. (We cannot
869 * use strcmp(), because buf is not '\0' terminated.) 1124 * use strcmp(), because buf is not '\0' terminated.)
870 */ 1125 */
871 j = found = 0; 1126 j = found = 0;
872 cipher_id = 0; 1127 cipher_id = 0;
873 ssl_version = 0; 1128 while (ca_list[j])
874 while (ca_list[j])
875 { 1129 {
876 if (!strncmp(buf, ca_list[j]->name, buflen) && 1130 if (!strncmp(buf, ca_list[j]->name, buflen) &&
877 (ca_list[j]->name[buflen] == '\0')) 1131 (ca_list[j]->name[buflen] == '\0'))
@@ -882,31 +1136,100 @@ static int ssl_cipher_process_rulestr(const char *rule_str,
882 else 1136 else
883 j++; 1137 j++;
884 } 1138 }
1139
885 if (!found) 1140 if (!found)
886 break; /* ignore this entry */ 1141 break; /* ignore this entry */
887 1142
888 /* New algorithms: 1143 if (ca_list[j]->algorithm_mkey)
889 * 1 - any old restrictions apply outside new mask 1144 {
890 * 2 - any new restrictions apply outside old mask 1145 if (alg_mkey)
891 * 3 - enforce old & new where masks intersect 1146 {
892 */ 1147 alg_mkey &= ca_list[j]->algorithm_mkey;
893 algorithms = (algorithms & ~ca_list[j]->mask) | /* 1 */ 1148 if (!alg_mkey) { found = 0; break; }
894 (ca_list[j]->algorithms & ~mask) | /* 2 */ 1149 }
895 (algorithms & ca_list[j]->algorithms); /* 3 */ 1150 else
896 mask |= ca_list[j]->mask; 1151 alg_mkey = ca_list[j]->algorithm_mkey;
897 algo_strength = (algo_strength & ~ca_list[j]->mask_strength) | 1152 }
898 (ca_list[j]->algo_strength & ~mask_strength) | 1153
899 (algo_strength & ca_list[j]->algo_strength); 1154 if (ca_list[j]->algorithm_auth)
900 mask_strength |= ca_list[j]->mask_strength; 1155 {
901 1156 if (alg_auth)
902 /* explicit ciphersuite found */ 1157 {
1158 alg_auth &= ca_list[j]->algorithm_auth;
1159 if (!alg_auth) { found = 0; break; }
1160 }
1161 else
1162 alg_auth = ca_list[j]->algorithm_auth;
1163 }
1164
1165 if (ca_list[j]->algorithm_enc)
1166 {
1167 if (alg_enc)
1168 {
1169 alg_enc &= ca_list[j]->algorithm_enc;
1170 if (!alg_enc) { found = 0; break; }
1171 }
1172 else
1173 alg_enc = ca_list[j]->algorithm_enc;
1174 }
1175
1176 if (ca_list[j]->algorithm_mac)
1177 {
1178 if (alg_mac)
1179 {
1180 alg_mac &= ca_list[j]->algorithm_mac;
1181 if (!alg_mac) { found = 0; break; }
1182 }
1183 else
1184 alg_mac = ca_list[j]->algorithm_mac;
1185 }
1186
1187 if (ca_list[j]->algo_strength & SSL_EXP_MASK)
1188 {
1189 if (algo_strength & SSL_EXP_MASK)
1190 {
1191 algo_strength &= (ca_list[j]->algo_strength & SSL_EXP_MASK) | ~SSL_EXP_MASK;
1192 if (!(algo_strength & SSL_EXP_MASK)) { found = 0; break; }
1193 }
1194 else
1195 algo_strength |= ca_list[j]->algo_strength & SSL_EXP_MASK;
1196 }
1197
1198 if (ca_list[j]->algo_strength & SSL_STRONG_MASK)
1199 {
1200 if (algo_strength & SSL_STRONG_MASK)
1201 {
1202 algo_strength &= (ca_list[j]->algo_strength & SSL_STRONG_MASK) | ~SSL_STRONG_MASK;
1203 if (!(algo_strength & SSL_STRONG_MASK)) { found = 0; break; }
1204 }
1205 else
1206 algo_strength |= ca_list[j]->algo_strength & SSL_STRONG_MASK;
1207 }
1208
903 if (ca_list[j]->valid) 1209 if (ca_list[j]->valid)
904 { 1210 {
1211 /* explicit ciphersuite found; its protocol version
1212 * does not become part of the search pattern!*/
1213
905 cipher_id = ca_list[j]->id; 1214 cipher_id = ca_list[j]->id;
906 ssl_version = ca_list[j]->algorithms & SSL_SSL_MASK;
907 break;
908 } 1215 }
1216 else
1217 {
1218 /* not an explicit ciphersuite; only in this case, the
1219 * protocol version is considered part of the search pattern */
909 1220
1221 if (ca_list[j]->algorithm_ssl)
1222 {
1223 if (alg_ssl)
1224 {
1225 alg_ssl &= ca_list[j]->algorithm_ssl;
1226 if (!alg_ssl) { found = 0; break; }
1227 }
1228 else
1229 alg_ssl = ca_list[j]->algorithm_ssl;
1230 }
1231 }
1232
910 if (!multi) break; 1233 if (!multi) break;
911 } 1234 }
912 1235
@@ -918,8 +1241,7 @@ static int ssl_cipher_process_rulestr(const char *rule_str,
918 ok = 0; 1241 ok = 0;
919 if ((buflen == 8) && 1242 if ((buflen == 8) &&
920 !strncmp(buf, "STRENGTH", 8)) 1243 !strncmp(buf, "STRENGTH", 8))
921 ok = ssl_cipher_strength_sort(co_list, 1244 ok = ssl_cipher_strength_sort(head_p, tail_p);
922 head_p, tail_p);
923 else 1245 else
924 SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR, 1246 SSLerr(SSL_F_SSL_CIPHER_PROCESS_RULESTR,
925 SSL_R_INVALID_COMMAND); 1247 SSL_R_INVALID_COMMAND);
@@ -936,9 +1258,9 @@ static int ssl_cipher_process_rulestr(const char *rule_str,
936 } 1258 }
937 else if (found) 1259 else if (found)
938 { 1260 {
939 ssl_cipher_apply_rule(cipher_id, ssl_version, algorithms, mask, 1261 ssl_cipher_apply_rule(cipher_id,
940 algo_strength, mask_strength, rule, -1, 1262 alg_mkey, alg_auth, alg_enc, alg_mac, alg_ssl, algo_strength,
941 co_list, head_p, tail_p); 1263 rule, -1, head_p, tail_p);
942 } 1264 }
943 else 1265 else
944 { 1266 {
@@ -957,12 +1279,11 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
957 const char *rule_str) 1279 const char *rule_str)
958 { 1280 {
959 int ok, num_of_ciphers, num_of_alias_max, num_of_group_aliases; 1281 int ok, num_of_ciphers, num_of_alias_max, num_of_group_aliases;
960 unsigned long disabled_mask; 1282 unsigned long disabled_mkey, disabled_auth, disabled_enc, disabled_mac, disabled_ssl;
961 unsigned long disabled_m256;
962 STACK_OF(SSL_CIPHER) *cipherstack, *tmp_cipher_list; 1283 STACK_OF(SSL_CIPHER) *cipherstack, *tmp_cipher_list;
963 const char *rule_p; 1284 const char *rule_p;
964 CIPHER_ORDER *co_list = NULL, *head = NULL, *tail = NULL, *curr; 1285 CIPHER_ORDER *co_list = NULL, *head = NULL, *tail = NULL, *curr;
965 SSL_CIPHER **ca_list = NULL; 1286 const SSL_CIPHER **ca_list = NULL;
966 1287
967 /* 1288 /*
968 * Return with error if nothing to do. 1289 * Return with error if nothing to do.
@@ -974,12 +1295,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
974 * To reduce the work to do we only want to process the compiled 1295 * To reduce the work to do we only want to process the compiled
975 * in algorithms, so we first get the mask of disabled ciphers. 1296 * in algorithms, so we first get the mask of disabled ciphers.
976 */ 1297 */
977 { 1298 ssl_cipher_get_disabled(&disabled_mkey, &disabled_auth, &disabled_enc, &disabled_mac, &disabled_ssl);
978 struct disabled_masks d;
979 d = ssl_cipher_get_disabled();
980 disabled_mask = d.mask;
981 disabled_m256 = d.m256;
982 }
983 1299
984 /* 1300 /*
985 * Now we have to collect the available ciphers from the compiled 1301 * Now we have to collect the available ciphers from the compiled
@@ -997,8 +1313,52 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
997 return(NULL); /* Failure */ 1313 return(NULL); /* Failure */
998 } 1314 }
999 1315
1000 ssl_cipher_collect_ciphers(ssl_method, num_of_ciphers, disabled_mask, 1316 ssl_cipher_collect_ciphers(ssl_method, num_of_ciphers,
1001 disabled_m256, co_list, &head, &tail); 1317 disabled_mkey, disabled_auth, disabled_enc, disabled_mac, disabled_ssl,
1318 co_list, &head, &tail);
1319
1320
1321 /* Now arrange all ciphers by preference: */
1322
1323 /* Everything else being equal, prefer ephemeral ECDH over other key exchange mechanisms */
1324 ssl_cipher_apply_rule(0, SSL_kEECDH, 0, 0, 0, 0, 0, CIPHER_ADD, -1, &head, &tail);
1325 ssl_cipher_apply_rule(0, SSL_kEECDH, 0, 0, 0, 0, 0, CIPHER_DEL, -1, &head, &tail);
1326
1327 /* AES is our preferred symmetric cipher */
1328 ssl_cipher_apply_rule(0, 0, 0, SSL_AES, 0, 0, 0, CIPHER_ADD, -1, &head, &tail);
1329
1330 /* Temporarily enable everything else for sorting */
1331 ssl_cipher_apply_rule(0, 0, 0, 0, 0, 0, 0, CIPHER_ADD, -1, &head, &tail);
1332
1333 /* Low priority for MD5 */
1334 ssl_cipher_apply_rule(0, 0, 0, 0, SSL_MD5, 0, 0, CIPHER_ORD, -1, &head, &tail);
1335
1336 /* Move anonymous ciphers to the end. Usually, these will remain disabled.
1337 * (For applications that allow them, they aren't too bad, but we prefer
1338 * authenticated ciphers.) */
1339 ssl_cipher_apply_rule(0, 0, SSL_aNULL, 0, 0, 0, 0, CIPHER_ORD, -1, &head, &tail);
1340
1341 /* Move ciphers without forward secrecy to the end */
1342 ssl_cipher_apply_rule(0, 0, SSL_aECDH, 0, 0, 0, 0, CIPHER_ORD, -1, &head, &tail);
1343 /* ssl_cipher_apply_rule(0, 0, SSL_aDH, 0, 0, 0, 0, CIPHER_ORD, -1, &head, &tail); */
1344 ssl_cipher_apply_rule(0, SSL_kRSA, 0, 0, 0, 0, 0, CIPHER_ORD, -1, &head, &tail);
1345 ssl_cipher_apply_rule(0, SSL_kPSK, 0,0, 0, 0, 0, CIPHER_ORD, -1, &head, &tail);
1346 ssl_cipher_apply_rule(0, SSL_kKRB5, 0,0, 0, 0, 0, CIPHER_ORD, -1, &head, &tail);
1347
1348 /* RC4 is sort-of broken -- move the the end */
1349 ssl_cipher_apply_rule(0, 0, 0, SSL_RC4, 0, 0, 0, CIPHER_ORD, -1, &head, &tail);
1350
1351 /* Now sort by symmetric encryption strength. The above ordering remains
1352 * in force within each class */
1353 if (!ssl_cipher_strength_sort(&head, &tail))
1354 {
1355 OPENSSL_free(co_list);
1356 return NULL;
1357 }
1358
1359 /* Now disable everything (maintaining the ordering!) */
1360 ssl_cipher_apply_rule(0, 0, 0, 0, 0, 0, 0, CIPHER_DEL, -1, &head, &tail);
1361
1002 1362
1003 /* 1363 /*
1004 * We also need cipher aliases for selecting based on the rule_str. 1364 * We also need cipher aliases for selecting based on the rule_str.
@@ -1010,8 +1370,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
1010 */ 1370 */
1011 num_of_group_aliases = sizeof(cipher_aliases) / sizeof(SSL_CIPHER); 1371 num_of_group_aliases = sizeof(cipher_aliases) / sizeof(SSL_CIPHER);
1012 num_of_alias_max = num_of_ciphers + num_of_group_aliases + 1; 1372 num_of_alias_max = num_of_ciphers + num_of_group_aliases + 1;
1013 ca_list = 1373 ca_list = OPENSSL_malloc(sizeof(SSL_CIPHER *) * num_of_alias_max);
1014 (SSL_CIPHER **)OPENSSL_malloc(sizeof(SSL_CIPHER *) * num_of_alias_max);
1015 if (ca_list == NULL) 1374 if (ca_list == NULL)
1016 { 1375 {
1017 OPENSSL_free(co_list); 1376 OPENSSL_free(co_list);
@@ -1019,7 +1378,8 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
1019 return(NULL); /* Failure */ 1378 return(NULL); /* Failure */
1020 } 1379 }
1021 ssl_cipher_collect_aliases(ca_list, num_of_group_aliases, 1380 ssl_cipher_collect_aliases(ca_list, num_of_group_aliases,
1022 (disabled_mask & disabled_m256), head); 1381 disabled_mkey, disabled_auth, disabled_enc,
1382 disabled_mac, disabled_ssl, head);
1023 1383
1024 /* 1384 /*
1025 * If the rule_string begins with DEFAULT, apply the default rule 1385 * If the rule_string begins with DEFAULT, apply the default rule
@@ -1030,23 +1390,23 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
1030 if (strncmp(rule_str,"DEFAULT",7) == 0) 1390 if (strncmp(rule_str,"DEFAULT",7) == 0)
1031 { 1391 {
1032 ok = ssl_cipher_process_rulestr(SSL_DEFAULT_CIPHER_LIST, 1392 ok = ssl_cipher_process_rulestr(SSL_DEFAULT_CIPHER_LIST,
1033 co_list, &head, &tail, ca_list); 1393 &head, &tail, ca_list);
1034 rule_p += 7; 1394 rule_p += 7;
1035 if (*rule_p == ':') 1395 if (*rule_p == ':')
1036 rule_p++; 1396 rule_p++;
1037 } 1397 }
1038 1398
1039 if (ok && (strlen(rule_p) > 0)) 1399 if (ok && (strlen(rule_p) > 0))
1040 ok = ssl_cipher_process_rulestr(rule_p, co_list, &head, &tail, 1400 ok = ssl_cipher_process_rulestr(rule_p, &head, &tail, ca_list);
1041 ca_list);
1042 1401
1043 OPENSSL_free(ca_list); /* Not needed anymore */ 1402 OPENSSL_free((void *)ca_list); /* Not needed anymore */
1044 1403
1045 if (!ok) 1404 if (!ok)
1046 { /* Rule processing failure */ 1405 { /* Rule processing failure */
1047 OPENSSL_free(co_list); 1406 OPENSSL_free(co_list);
1048 return(NULL); 1407 return(NULL);
1049 } 1408 }
1409
1050 /* 1410 /*
1051 * Allocate new "cipherstack" for the result, return with error 1411 * Allocate new "cipherstack" for the result, return with error
1052 * if we cannot get one. 1412 * if we cannot get one.
@@ -1063,11 +1423,7 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
1063 */ 1423 */
1064 for (curr = head; curr != NULL; curr = curr->next) 1424 for (curr = head; curr != NULL; curr = curr->next)
1065 { 1425 {
1066#ifdef OPENSSL_FIPS
1067 if (curr->active && (!FIPS_mode() || curr->cipher->algo_strength & SSL_FIPS))
1068#else
1069 if (curr->active) 1426 if (curr->active)
1070#endif
1071 { 1427 {
1072 sk_SSL_CIPHER_push(cipherstack, curr->cipher); 1428 sk_SSL_CIPHER_push(cipherstack, curr->cipher);
1073#ifdef CIPHER_DEBUG 1429#ifdef CIPHER_DEBUG
@@ -1091,22 +1447,28 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *ssl_method,
1091 *cipher_list_by_id = tmp_cipher_list; 1447 *cipher_list_by_id = tmp_cipher_list;
1092 (void)sk_SSL_CIPHER_set_cmp_func(*cipher_list_by_id,ssl_cipher_ptr_id_cmp); 1448 (void)sk_SSL_CIPHER_set_cmp_func(*cipher_list_by_id,ssl_cipher_ptr_id_cmp);
1093 1449
1450 sk_SSL_CIPHER_sort(*cipher_list_by_id);
1094 return(cipherstack); 1451 return(cipherstack);
1095 } 1452 }
1096 1453
1097char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int len) 1454char *SSL_CIPHER_description(const SSL_CIPHER *cipher, char *buf, int len)
1098 { 1455 {
1099 int is_export,pkl,kl; 1456 int is_export,pkl,kl;
1100 const char *ver,*exp_str; 1457 const char *ver,*exp_str;
1101 const char *kx,*au,*enc,*mac; 1458 const char *kx,*au,*enc,*mac;
1102 unsigned long alg,alg2,alg_s; 1459 unsigned long alg_mkey,alg_auth,alg_enc,alg_mac,alg_ssl,alg2,alg_s;
1103#ifdef KSSL_DEBUG 1460#ifdef KSSL_DEBUG
1104 static const char *format="%-23s %s Kx=%-8s Au=%-4s Enc=%-9s Mac=%-4s%s AL=%lx\n"; 1461 static const char *format="%-23s %s Kx=%-8s Au=%-4s Enc=%-9s Mac=%-4s%s AL=%lx/%lx/%lx/%lx/%lx\n";
1105#else 1462#else
1106 static const char *format="%-23s %s Kx=%-8s Au=%-4s Enc=%-9s Mac=%-4s%s\n"; 1463 static const char *format="%-23s %s Kx=%-8s Au=%-4s Enc=%-9s Mac=%-4s%s\n";
1107#endif /* KSSL_DEBUG */ 1464#endif /* KSSL_DEBUG */
1108 1465
1109 alg=cipher->algorithms; 1466 alg_mkey = cipher->algorithm_mkey;
1467 alg_auth = cipher->algorithm_auth;
1468 alg_enc = cipher->algorithm_enc;
1469 alg_mac = cipher->algorithm_mac;
1470 alg_ssl = cipher->algorithm_ssl;
1471
1110 alg_s=cipher->algo_strength; 1472 alg_s=cipher->algo_strength;
1111 alg2=cipher->algorithm2; 1473 alg2=cipher->algorithm2;
1112 1474
@@ -1115,14 +1477,14 @@ char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int len)
1115 kl=SSL_C_EXPORT_KEYLENGTH(cipher); 1477 kl=SSL_C_EXPORT_KEYLENGTH(cipher);
1116 exp_str=is_export?" export":""; 1478 exp_str=is_export?" export":"";
1117 1479
1118 if (alg & SSL_SSLV2) 1480 if (alg_ssl & SSL_SSLV2)
1119 ver="SSLv2"; 1481 ver="SSLv2";
1120 else if (alg & SSL_SSLV3) 1482 else if (alg_ssl & SSL_SSLV3)
1121 ver="SSLv3"; 1483 ver="SSLv3";
1122 else 1484 else
1123 ver="unknown"; 1485 ver="unknown";
1124 1486
1125 switch (alg&SSL_MKEY_MASK) 1487 switch (alg_mkey)
1126 { 1488 {
1127 case SSL_kRSA: 1489 case SSL_kRSA:
1128 kx=is_export?(pkl == 512 ? "RSA(512)" : "RSA(1024)"):"RSA"; 1490 kx=is_export?(pkl == 512 ? "RSA(512)" : "RSA(1024)"):"RSA";
@@ -1133,25 +1495,29 @@ char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int len)
1133 case SSL_kDHd: 1495 case SSL_kDHd:
1134 kx="DH/DSS"; 1496 kx="DH/DSS";
1135 break; 1497 break;
1136 case SSL_kKRB5: /* VRS */ 1498 case SSL_kKRB5:
1137 case SSL_KRB5: /* VRS */ 1499 kx="KRB5";
1138 kx="KRB5";
1139 break;
1140 case SSL_kFZA:
1141 kx="Fortezza";
1142 break; 1500 break;
1143 case SSL_kEDH: 1501 case SSL_kEDH:
1144 kx=is_export?(pkl == 512 ? "DH(512)" : "DH(1024)"):"DH"; 1502 kx=is_export?(pkl == 512 ? "DH(512)" : "DH(1024)"):"DH";
1145 break; 1503 break;
1146 case SSL_kECDH: 1504 case SSL_kECDHr:
1147 case SSL_kECDHE: 1505 kx="ECDH/RSA";
1148 kx=is_export?"ECDH(<=163)":"ECDH"; 1506 break;
1507 case SSL_kECDHe:
1508 kx="ECDH/ECDSA";
1509 break;
1510 case SSL_kEECDH:
1511 kx="ECDH";
1512 break;
1513 case SSL_kPSK:
1514 kx="PSK";
1149 break; 1515 break;
1150 default: 1516 default:
1151 kx="unknown"; 1517 kx="unknown";
1152 } 1518 }
1153 1519
1154 switch (alg&SSL_AUTH_MASK) 1520 switch (alg_auth)
1155 { 1521 {
1156 case SSL_aRSA: 1522 case SSL_aRSA:
1157 au="RSA"; 1523 au="RSA";
@@ -1162,23 +1528,27 @@ char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int len)
1162 case SSL_aDH: 1528 case SSL_aDH:
1163 au="DH"; 1529 au="DH";
1164 break; 1530 break;
1165 case SSL_aKRB5: /* VRS */ 1531 case SSL_aKRB5:
1166 case SSL_KRB5: /* VRS */ 1532 au="KRB5";
1167 au="KRB5"; 1533 break;
1168 break; 1534 case SSL_aECDH:
1169 case SSL_aFZA: 1535 au="ECDH";
1536 break;
1170 case SSL_aNULL: 1537 case SSL_aNULL:
1171 au="None"; 1538 au="None";
1172 break; 1539 break;
1173 case SSL_aECDSA: 1540 case SSL_aECDSA:
1174 au="ECDSA"; 1541 au="ECDSA";
1175 break; 1542 break;
1543 case SSL_aPSK:
1544 au="PSK";
1545 break;
1176 default: 1546 default:
1177 au="unknown"; 1547 au="unknown";
1178 break; 1548 break;
1179 } 1549 }
1180 1550
1181 switch (alg&SSL_ENC_MASK) 1551 switch (alg_enc)
1182 { 1552 {
1183 case SSL_DES: 1553 case SSL_DES:
1184 enc=(is_export && kl == 5)?"DES(40)":"DES(56)"; 1554 enc=(is_export && kl == 5)?"DES(40)":"DES(56)";
@@ -1196,39 +1566,30 @@ char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int len)
1196 case SSL_IDEA: 1566 case SSL_IDEA:
1197 enc="IDEA(128)"; 1567 enc="IDEA(128)";
1198 break; 1568 break;
1199 case SSL_eFZA:
1200 enc="Fortezza";
1201 break;
1202 case SSL_eNULL: 1569 case SSL_eNULL:
1203 enc="None"; 1570 enc="None";
1204 break; 1571 break;
1205 case SSL_AES: 1572 case SSL_AES128:
1206 switch(cipher->strength_bits) 1573 enc="AES(128)";
1207 {
1208 case 128: enc="AES(128)"; break;
1209 case 192: enc="AES(192)"; break;
1210 case 256: enc="AES(256)"; break;
1211 default: enc="AES(?""?""?)"; break;
1212 }
1213 break; 1574 break;
1214 case SSL_CAMELLIA: 1575 case SSL_AES256:
1215 switch(cipher->strength_bits) 1576 enc="AES(256)";
1216 { 1577 break;
1217 case 128: enc="Camellia(128)"; break; 1578 case SSL_CAMELLIA128:
1218 case 256: enc="Camellia(256)"; break; 1579 enc="Camellia(128)";
1219 default: enc="Camellia(?""?""?)"; break; 1580 break;
1220 } 1581 case SSL_CAMELLIA256:
1582 enc="Camellia(256)";
1221 break; 1583 break;
1222 case SSL_SEED: 1584 case SSL_SEED:
1223 enc="SEED(128)"; 1585 enc="SEED(128)";
1224 break; 1586 break;
1225
1226 default: 1587 default:
1227 enc="unknown"; 1588 enc="unknown";
1228 break; 1589 break;
1229 } 1590 }
1230 1591
1231 switch (alg&SSL_MAC_MASK) 1592 switch (alg_mac)
1232 { 1593 {
1233 case SSL_MD5: 1594 case SSL_MD5:
1234 mac="MD5"; 1595 mac="MD5";
@@ -1251,7 +1612,7 @@ char *SSL_CIPHER_description(SSL_CIPHER *cipher, char *buf, int len)
1251 return("Buffer too small"); 1612 return("Buffer too small");
1252 1613
1253#ifdef KSSL_DEBUG 1614#ifdef KSSL_DEBUG
1254 BIO_snprintf(buf,len,format,cipher->name,ver,kx,au,enc,mac,exp_str,alg); 1615 BIO_snprintf(buf,len,format,cipher->name,ver,kx,au,enc,mac,exp_str,alg_mkey,alg_auth,alg_enc,alg_mac,alg_ssl);
1255#else 1616#else
1256 BIO_snprintf(buf,len,format,cipher->name,ver,kx,au,enc,mac,exp_str); 1617 BIO_snprintf(buf,len,format,cipher->name,ver,kx,au,enc,mac,exp_str);
1257#endif /* KSSL_DEBUG */ 1618#endif /* KSSL_DEBUG */
diff --git a/src/lib/libssl/src/ssl/ssl_err.c b/src/lib/libssl/src/ssl/ssl_err.c
index 24a994fe01..0eed464749 100644
--- a/src/lib/libssl/src/ssl/ssl_err.c
+++ b/src/lib/libssl/src/ssl/ssl_err.c
@@ -1,6 +1,6 @@
1/* ssl/ssl_err.c */ 1/* ssl/ssl_err.c */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 1999-2009 The OpenSSL Project. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
@@ -78,6 +78,7 @@ static ERR_STRING_DATA SSL_str_functs[]=
78{ERR_FUNC(SSL_F_DO_DTLS1_WRITE), "DO_DTLS1_WRITE"}, 78{ERR_FUNC(SSL_F_DO_DTLS1_WRITE), "DO_DTLS1_WRITE"},
79{ERR_FUNC(SSL_F_DO_SSL3_WRITE), "DO_SSL3_WRITE"}, 79{ERR_FUNC(SSL_F_DO_SSL3_WRITE), "DO_SSL3_WRITE"},
80{ERR_FUNC(SSL_F_DTLS1_ACCEPT), "DTLS1_ACCEPT"}, 80{ERR_FUNC(SSL_F_DTLS1_ACCEPT), "DTLS1_ACCEPT"},
81{ERR_FUNC(SSL_F_DTLS1_ADD_CERT_TO_BUF), "DTLS1_ADD_CERT_TO_BUF"},
81{ERR_FUNC(SSL_F_DTLS1_BUFFER_RECORD), "DTLS1_BUFFER_RECORD"}, 82{ERR_FUNC(SSL_F_DTLS1_BUFFER_RECORD), "DTLS1_BUFFER_RECORD"},
82{ERR_FUNC(SSL_F_DTLS1_CLIENT_HELLO), "DTLS1_CLIENT_HELLO"}, 83{ERR_FUNC(SSL_F_DTLS1_CLIENT_HELLO), "DTLS1_CLIENT_HELLO"},
83{ERR_FUNC(SSL_F_DTLS1_CONNECT), "DTLS1_CONNECT"}, 84{ERR_FUNC(SSL_F_DTLS1_CONNECT), "DTLS1_CONNECT"},
@@ -86,6 +87,7 @@ static ERR_STRING_DATA SSL_str_functs[]=
86{ERR_FUNC(SSL_F_DTLS1_GET_MESSAGE), "DTLS1_GET_MESSAGE"}, 87{ERR_FUNC(SSL_F_DTLS1_GET_MESSAGE), "DTLS1_GET_MESSAGE"},
87{ERR_FUNC(SSL_F_DTLS1_GET_MESSAGE_FRAGMENT), "DTLS1_GET_MESSAGE_FRAGMENT"}, 88{ERR_FUNC(SSL_F_DTLS1_GET_MESSAGE_FRAGMENT), "DTLS1_GET_MESSAGE_FRAGMENT"},
88{ERR_FUNC(SSL_F_DTLS1_GET_RECORD), "DTLS1_GET_RECORD"}, 89{ERR_FUNC(SSL_F_DTLS1_GET_RECORD), "DTLS1_GET_RECORD"},
90{ERR_FUNC(SSL_F_DTLS1_HANDLE_TIMEOUT), "DTLS1_HANDLE_TIMEOUT"},
89{ERR_FUNC(SSL_F_DTLS1_OUTPUT_CERT_CHAIN), "DTLS1_OUTPUT_CERT_CHAIN"}, 91{ERR_FUNC(SSL_F_DTLS1_OUTPUT_CERT_CHAIN), "DTLS1_OUTPUT_CERT_CHAIN"},
90{ERR_FUNC(SSL_F_DTLS1_PREPROCESS_FRAGMENT), "DTLS1_PREPROCESS_FRAGMENT"}, 92{ERR_FUNC(SSL_F_DTLS1_PREPROCESS_FRAGMENT), "DTLS1_PREPROCESS_FRAGMENT"},
91{ERR_FUNC(SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE), "DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE"}, 93{ERR_FUNC(SSL_F_DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE), "DTLS1_PROCESS_OUT_OF_SEQ_MESSAGE"},
@@ -131,6 +133,7 @@ static ERR_STRING_DATA SSL_str_functs[]=
131{ERR_FUNC(SSL_F_SSL2_SET_CERTIFICATE), "SSL2_SET_CERTIFICATE"}, 133{ERR_FUNC(SSL_F_SSL2_SET_CERTIFICATE), "SSL2_SET_CERTIFICATE"},
132{ERR_FUNC(SSL_F_SSL2_WRITE), "SSL2_WRITE"}, 134{ERR_FUNC(SSL_F_SSL2_WRITE), "SSL2_WRITE"},
133{ERR_FUNC(SSL_F_SSL3_ACCEPT), "SSL3_ACCEPT"}, 135{ERR_FUNC(SSL_F_SSL3_ACCEPT), "SSL3_ACCEPT"},
136{ERR_FUNC(SSL_F_SSL3_ADD_CERT_TO_BUF), "SSL3_ADD_CERT_TO_BUF"},
134{ERR_FUNC(SSL_F_SSL3_CALLBACK_CTRL), "SSL3_CALLBACK_CTRL"}, 137{ERR_FUNC(SSL_F_SSL3_CALLBACK_CTRL), "SSL3_CALLBACK_CTRL"},
135{ERR_FUNC(SSL_F_SSL3_CHANGE_CIPHER_STATE), "SSL3_CHANGE_CIPHER_STATE"}, 138{ERR_FUNC(SSL_F_SSL3_CHANGE_CIPHER_STATE), "SSL3_CHANGE_CIPHER_STATE"},
136{ERR_FUNC(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM), "SSL3_CHECK_CERT_AND_ALGORITHM"}, 139{ERR_FUNC(SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM), "SSL3_CHECK_CERT_AND_ALGORITHM"},
@@ -138,6 +141,7 @@ static ERR_STRING_DATA SSL_str_functs[]=
138{ERR_FUNC(SSL_F_SSL3_CONNECT), "SSL3_CONNECT"}, 141{ERR_FUNC(SSL_F_SSL3_CONNECT), "SSL3_CONNECT"},
139{ERR_FUNC(SSL_F_SSL3_CTRL), "SSL3_CTRL"}, 142{ERR_FUNC(SSL_F_SSL3_CTRL), "SSL3_CTRL"},
140{ERR_FUNC(SSL_F_SSL3_CTX_CTRL), "SSL3_CTX_CTRL"}, 143{ERR_FUNC(SSL_F_SSL3_CTX_CTRL), "SSL3_CTX_CTRL"},
144{ERR_FUNC(SSL_F_SSL3_DIGEST_CACHED_RECORDS), "SSL3_DIGEST_CACHED_RECORDS"},
141{ERR_FUNC(SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC), "SSL3_DO_CHANGE_CIPHER_SPEC"}, 145{ERR_FUNC(SSL_F_SSL3_DO_CHANGE_CIPHER_SPEC), "SSL3_DO_CHANGE_CIPHER_SPEC"},
142{ERR_FUNC(SSL_F_SSL3_ENC), "SSL3_ENC"}, 146{ERR_FUNC(SSL_F_SSL3_ENC), "SSL3_ENC"},
143{ERR_FUNC(SSL_F_SSL3_GENERATE_KEY_BLOCK), "SSL3_GENERATE_KEY_BLOCK"}, 147{ERR_FUNC(SSL_F_SSL3_GENERATE_KEY_BLOCK), "SSL3_GENERATE_KEY_BLOCK"},
@@ -155,6 +159,7 @@ static ERR_STRING_DATA SSL_str_functs[]=
155{ERR_FUNC(SSL_F_SSL3_GET_SERVER_CERTIFICATE), "SSL3_GET_SERVER_CERTIFICATE"}, 159{ERR_FUNC(SSL_F_SSL3_GET_SERVER_CERTIFICATE), "SSL3_GET_SERVER_CERTIFICATE"},
156{ERR_FUNC(SSL_F_SSL3_GET_SERVER_DONE), "SSL3_GET_SERVER_DONE"}, 160{ERR_FUNC(SSL_F_SSL3_GET_SERVER_DONE), "SSL3_GET_SERVER_DONE"},
157{ERR_FUNC(SSL_F_SSL3_GET_SERVER_HELLO), "SSL3_GET_SERVER_HELLO"}, 161{ERR_FUNC(SSL_F_SSL3_GET_SERVER_HELLO), "SSL3_GET_SERVER_HELLO"},
162{ERR_FUNC(SSL_F_SSL3_HANDSHAKE_MAC), "ssl3_handshake_mac"},
158{ERR_FUNC(SSL_F_SSL3_NEW_SESSION_TICKET), "SSL3_NEW_SESSION_TICKET"}, 163{ERR_FUNC(SSL_F_SSL3_NEW_SESSION_TICKET), "SSL3_NEW_SESSION_TICKET"},
159{ERR_FUNC(SSL_F_SSL3_OUTPUT_CERT_CHAIN), "SSL3_OUTPUT_CERT_CHAIN"}, 164{ERR_FUNC(SSL_F_SSL3_OUTPUT_CERT_CHAIN), "SSL3_OUTPUT_CERT_CHAIN"},
160{ERR_FUNC(SSL_F_SSL3_PEEK), "SSL3_PEEK"}, 165{ERR_FUNC(SSL_F_SSL3_PEEK), "SSL3_PEEK"},
@@ -167,13 +172,16 @@ static ERR_STRING_DATA SSL_str_functs[]=
167{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_CERTIFICATE), "SSL3_SEND_SERVER_CERTIFICATE"}, 172{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_CERTIFICATE), "SSL3_SEND_SERVER_CERTIFICATE"},
168{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_HELLO), "SSL3_SEND_SERVER_HELLO"}, 173{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_HELLO), "SSL3_SEND_SERVER_HELLO"},
169{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE), "SSL3_SEND_SERVER_KEY_EXCHANGE"}, 174{ERR_FUNC(SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE), "SSL3_SEND_SERVER_KEY_EXCHANGE"},
170{ERR_FUNC(SSL_F_SSL3_SETUP_BUFFERS), "SSL3_SETUP_BUFFERS"},
171{ERR_FUNC(SSL_F_SSL3_SETUP_KEY_BLOCK), "SSL3_SETUP_KEY_BLOCK"}, 175{ERR_FUNC(SSL_F_SSL3_SETUP_KEY_BLOCK), "SSL3_SETUP_KEY_BLOCK"},
176{ERR_FUNC(SSL_F_SSL3_SETUP_READ_BUFFER), "SSL3_SETUP_READ_BUFFER"},
177{ERR_FUNC(SSL_F_SSL3_SETUP_WRITE_BUFFER), "SSL3_SETUP_WRITE_BUFFER"},
172{ERR_FUNC(SSL_F_SSL3_WRITE_BYTES), "SSL3_WRITE_BYTES"}, 178{ERR_FUNC(SSL_F_SSL3_WRITE_BYTES), "SSL3_WRITE_BYTES"},
173{ERR_FUNC(SSL_F_SSL3_WRITE_PENDING), "SSL3_WRITE_PENDING"}, 179{ERR_FUNC(SSL_F_SSL3_WRITE_PENDING), "SSL3_WRITE_PENDING"},
180{ERR_FUNC(SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT), "SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT"},
174{ERR_FUNC(SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT), "SSL_ADD_CLIENTHELLO_TLSEXT"}, 181{ERR_FUNC(SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT), "SSL_ADD_CLIENTHELLO_TLSEXT"},
175{ERR_FUNC(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK), "SSL_add_dir_cert_subjects_to_stack"}, 182{ERR_FUNC(SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK), "SSL_add_dir_cert_subjects_to_stack"},
176{ERR_FUNC(SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK), "SSL_add_file_cert_subjects_to_stack"}, 183{ERR_FUNC(SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK), "SSL_add_file_cert_subjects_to_stack"},
184{ERR_FUNC(SSL_F_SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT), "SSL_ADD_SERVERHELLO_RENEGOTIATE_EXT"},
177{ERR_FUNC(SSL_F_SSL_ADD_SERVERHELLO_TLSEXT), "SSL_ADD_SERVERHELLO_TLSEXT"}, 185{ERR_FUNC(SSL_F_SSL_ADD_SERVERHELLO_TLSEXT), "SSL_ADD_SERVERHELLO_TLSEXT"},
178{ERR_FUNC(SSL_F_SSL_BAD_METHOD), "SSL_BAD_METHOD"}, 186{ERR_FUNC(SSL_F_SSL_BAD_METHOD), "SSL_BAD_METHOD"},
179{ERR_FUNC(SSL_F_SSL_BYTES_TO_CIPHER_LIST), "SSL_BYTES_TO_CIPHER_LIST"}, 187{ERR_FUNC(SSL_F_SSL_BYTES_TO_CIPHER_LIST), "SSL_BYTES_TO_CIPHER_LIST"},
@@ -183,6 +191,7 @@ static ERR_STRING_DATA SSL_str_functs[]=
183{ERR_FUNC(SSL_F_SSL_CERT_NEW), "SSL_CERT_NEW"}, 191{ERR_FUNC(SSL_F_SSL_CERT_NEW), "SSL_CERT_NEW"},
184{ERR_FUNC(SSL_F_SSL_CHECK_PRIVATE_KEY), "SSL_check_private_key"}, 192{ERR_FUNC(SSL_F_SSL_CHECK_PRIVATE_KEY), "SSL_check_private_key"},
185{ERR_FUNC(SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT), "SSL_CHECK_SERVERHELLO_TLSEXT"}, 193{ERR_FUNC(SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT), "SSL_CHECK_SERVERHELLO_TLSEXT"},
194{ERR_FUNC(SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG), "SSL_CHECK_SRVR_ECC_CERT_AND_ALG"},
186{ERR_FUNC(SSL_F_SSL_CIPHER_PROCESS_RULESTR), "SSL_CIPHER_PROCESS_RULESTR"}, 195{ERR_FUNC(SSL_F_SSL_CIPHER_PROCESS_RULESTR), "SSL_CIPHER_PROCESS_RULESTR"},
187{ERR_FUNC(SSL_F_SSL_CIPHER_STRENGTH_SORT), "SSL_CIPHER_STRENGTH_SORT"}, 196{ERR_FUNC(SSL_F_SSL_CIPHER_STRENGTH_SORT), "SSL_CIPHER_STRENGTH_SORT"},
188{ERR_FUNC(SSL_F_SSL_CLEAR), "SSL_clear"}, 197{ERR_FUNC(SSL_F_SSL_CLEAR), "SSL_clear"},
@@ -204,6 +213,7 @@ static ERR_STRING_DATA SSL_str_functs[]=
204{ERR_FUNC(SSL_F_SSL_CTX_USE_PRIVATEKEY), "SSL_CTX_use_PrivateKey"}, 213{ERR_FUNC(SSL_F_SSL_CTX_USE_PRIVATEKEY), "SSL_CTX_use_PrivateKey"},
205{ERR_FUNC(SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1), "SSL_CTX_use_PrivateKey_ASN1"}, 214{ERR_FUNC(SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1), "SSL_CTX_use_PrivateKey_ASN1"},
206{ERR_FUNC(SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE), "SSL_CTX_use_PrivateKey_file"}, 215{ERR_FUNC(SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE), "SSL_CTX_use_PrivateKey_file"},
216{ERR_FUNC(SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT), "SSL_CTX_use_psk_identity_hint"},
207{ERR_FUNC(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY), "SSL_CTX_use_RSAPrivateKey"}, 217{ERR_FUNC(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY), "SSL_CTX_use_RSAPrivateKey"},
208{ERR_FUNC(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1), "SSL_CTX_use_RSAPrivateKey_ASN1"}, 218{ERR_FUNC(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1), "SSL_CTX_use_RSAPrivateKey_ASN1"},
209{ERR_FUNC(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE), "SSL_CTX_use_RSAPrivateKey_file"}, 219{ERR_FUNC(SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE), "SSL_CTX_use_RSAPrivateKey_file"},
@@ -215,6 +225,10 @@ static ERR_STRING_DATA SSL_str_functs[]=
215{ERR_FUNC(SSL_F_SSL_INIT_WBIO_BUFFER), "SSL_INIT_WBIO_BUFFER"}, 225{ERR_FUNC(SSL_F_SSL_INIT_WBIO_BUFFER), "SSL_INIT_WBIO_BUFFER"},
216{ERR_FUNC(SSL_F_SSL_LOAD_CLIENT_CA_FILE), "SSL_load_client_CA_file"}, 226{ERR_FUNC(SSL_F_SSL_LOAD_CLIENT_CA_FILE), "SSL_load_client_CA_file"},
217{ERR_FUNC(SSL_F_SSL_NEW), "SSL_new"}, 227{ERR_FUNC(SSL_F_SSL_NEW), "SSL_new"},
228{ERR_FUNC(SSL_F_SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT), "SSL_PARSE_CLIENTHELLO_RENEGOTIATE_EXT"},
229{ERR_FUNC(SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT), "SSL_PARSE_CLIENTHELLO_TLSEXT"},
230{ERR_FUNC(SSL_F_SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT), "SSL_PARSE_SERVERHELLO_RENEGOTIATE_EXT"},
231{ERR_FUNC(SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT), "SSL_PARSE_SERVERHELLO_TLSEXT"},
218{ERR_FUNC(SSL_F_SSL_PEEK), "SSL_peek"}, 232{ERR_FUNC(SSL_F_SSL_PEEK), "SSL_peek"},
219{ERR_FUNC(SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT), "SSL_PREPARE_CLIENTHELLO_TLSEXT"}, 233{ERR_FUNC(SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT), "SSL_PREPARE_CLIENTHELLO_TLSEXT"},
220{ERR_FUNC(SSL_F_SSL_PREPARE_SERVERHELLO_TLSEXT), "SSL_PREPARE_SERVERHELLO_TLSEXT"}, 234{ERR_FUNC(SSL_F_SSL_PREPARE_SERVERHELLO_TLSEXT), "SSL_PREPARE_SERVERHELLO_TLSEXT"},
@@ -232,6 +246,7 @@ static ERR_STRING_DATA SSL_str_functs[]=
232{ERR_FUNC(SSL_F_SSL_SET_RFD), "SSL_set_rfd"}, 246{ERR_FUNC(SSL_F_SSL_SET_RFD), "SSL_set_rfd"},
233{ERR_FUNC(SSL_F_SSL_SET_SESSION), "SSL_set_session"}, 247{ERR_FUNC(SSL_F_SSL_SET_SESSION), "SSL_set_session"},
234{ERR_FUNC(SSL_F_SSL_SET_SESSION_ID_CONTEXT), "SSL_set_session_id_context"}, 248{ERR_FUNC(SSL_F_SSL_SET_SESSION_ID_CONTEXT), "SSL_set_session_id_context"},
249{ERR_FUNC(SSL_F_SSL_SET_SESSION_TICKET_EXT), "SSL_set_session_ticket_ext"},
235{ERR_FUNC(SSL_F_SSL_SET_TRUST), "SSL_set_trust"}, 250{ERR_FUNC(SSL_F_SSL_SET_TRUST), "SSL_set_trust"},
236{ERR_FUNC(SSL_F_SSL_SET_WFD), "SSL_set_wfd"}, 251{ERR_FUNC(SSL_F_SSL_SET_WFD), "SSL_set_wfd"},
237{ERR_FUNC(SSL_F_SSL_SHUTDOWN), "SSL_shutdown"}, 252{ERR_FUNC(SSL_F_SSL_SHUTDOWN), "SSL_shutdown"},
@@ -244,13 +259,19 @@ static ERR_STRING_DATA SSL_str_functs[]=
244{ERR_FUNC(SSL_F_SSL_USE_PRIVATEKEY), "SSL_use_PrivateKey"}, 259{ERR_FUNC(SSL_F_SSL_USE_PRIVATEKEY), "SSL_use_PrivateKey"},
245{ERR_FUNC(SSL_F_SSL_USE_PRIVATEKEY_ASN1), "SSL_use_PrivateKey_ASN1"}, 260{ERR_FUNC(SSL_F_SSL_USE_PRIVATEKEY_ASN1), "SSL_use_PrivateKey_ASN1"},
246{ERR_FUNC(SSL_F_SSL_USE_PRIVATEKEY_FILE), "SSL_use_PrivateKey_file"}, 261{ERR_FUNC(SSL_F_SSL_USE_PRIVATEKEY_FILE), "SSL_use_PrivateKey_file"},
262{ERR_FUNC(SSL_F_SSL_USE_PSK_IDENTITY_HINT), "SSL_use_psk_identity_hint"},
247{ERR_FUNC(SSL_F_SSL_USE_RSAPRIVATEKEY), "SSL_use_RSAPrivateKey"}, 263{ERR_FUNC(SSL_F_SSL_USE_RSAPRIVATEKEY), "SSL_use_RSAPrivateKey"},
248{ERR_FUNC(SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1), "SSL_use_RSAPrivateKey_ASN1"}, 264{ERR_FUNC(SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1), "SSL_use_RSAPrivateKey_ASN1"},
249{ERR_FUNC(SSL_F_SSL_USE_RSAPRIVATEKEY_FILE), "SSL_use_RSAPrivateKey_file"}, 265{ERR_FUNC(SSL_F_SSL_USE_RSAPRIVATEKEY_FILE), "SSL_use_RSAPrivateKey_file"},
250{ERR_FUNC(SSL_F_SSL_VERIFY_CERT_CHAIN), "SSL_VERIFY_CERT_CHAIN"}, 266{ERR_FUNC(SSL_F_SSL_VERIFY_CERT_CHAIN), "SSL_VERIFY_CERT_CHAIN"},
251{ERR_FUNC(SSL_F_SSL_WRITE), "SSL_write"}, 267{ERR_FUNC(SSL_F_SSL_WRITE), "SSL_write"},
268{ERR_FUNC(SSL_F_TLS1_CERT_VERIFY_MAC), "tls1_cert_verify_mac"},
252{ERR_FUNC(SSL_F_TLS1_CHANGE_CIPHER_STATE), "TLS1_CHANGE_CIPHER_STATE"}, 269{ERR_FUNC(SSL_F_TLS1_CHANGE_CIPHER_STATE), "TLS1_CHANGE_CIPHER_STATE"},
270{ERR_FUNC(SSL_F_TLS1_CHECK_SERVERHELLO_TLSEXT), "TLS1_CHECK_SERVERHELLO_TLSEXT"},
253{ERR_FUNC(SSL_F_TLS1_ENC), "TLS1_ENC"}, 271{ERR_FUNC(SSL_F_TLS1_ENC), "TLS1_ENC"},
272{ERR_FUNC(SSL_F_TLS1_PREPARE_CLIENTHELLO_TLSEXT), "TLS1_PREPARE_CLIENTHELLO_TLSEXT"},
273{ERR_FUNC(SSL_F_TLS1_PREPARE_SERVERHELLO_TLSEXT), "TLS1_PREPARE_SERVERHELLO_TLSEXT"},
274{ERR_FUNC(SSL_F_TLS1_PRF), "tls1_prf"},
254{ERR_FUNC(SSL_F_TLS1_SETUP_KEY_BLOCK), "TLS1_SETUP_KEY_BLOCK"}, 275{ERR_FUNC(SSL_F_TLS1_SETUP_KEY_BLOCK), "TLS1_SETUP_KEY_BLOCK"},
255{ERR_FUNC(SSL_F_WRITE_PENDING), "WRITE_PENDING"}, 276{ERR_FUNC(SSL_F_WRITE_PENDING), "WRITE_PENDING"},
256{0,NULL} 277{0,NULL}
@@ -274,12 +295,15 @@ static ERR_STRING_DATA SSL_str_reasons[]=
274{ERR_REASON(SSL_R_BAD_ECC_CERT) ,"bad ecc cert"}, 295{ERR_REASON(SSL_R_BAD_ECC_CERT) ,"bad ecc cert"},
275{ERR_REASON(SSL_R_BAD_ECDSA_SIGNATURE) ,"bad ecdsa signature"}, 296{ERR_REASON(SSL_R_BAD_ECDSA_SIGNATURE) ,"bad ecdsa signature"},
276{ERR_REASON(SSL_R_BAD_ECPOINT) ,"bad ecpoint"}, 297{ERR_REASON(SSL_R_BAD_ECPOINT) ,"bad ecpoint"},
298{ERR_REASON(SSL_R_BAD_HANDSHAKE_LENGTH) ,"bad handshake length"},
277{ERR_REASON(SSL_R_BAD_HELLO_REQUEST) ,"bad hello request"}, 299{ERR_REASON(SSL_R_BAD_HELLO_REQUEST) ,"bad hello request"},
278{ERR_REASON(SSL_R_BAD_LENGTH) ,"bad length"}, 300{ERR_REASON(SSL_R_BAD_LENGTH) ,"bad length"},
279{ERR_REASON(SSL_R_BAD_MAC_DECODE) ,"bad mac decode"}, 301{ERR_REASON(SSL_R_BAD_MAC_DECODE) ,"bad mac decode"},
302{ERR_REASON(SSL_R_BAD_MAC_LENGTH) ,"bad mac length"},
280{ERR_REASON(SSL_R_BAD_MESSAGE_TYPE) ,"bad message type"}, 303{ERR_REASON(SSL_R_BAD_MESSAGE_TYPE) ,"bad message type"},
281{ERR_REASON(SSL_R_BAD_PACKET_LENGTH) ,"bad packet length"}, 304{ERR_REASON(SSL_R_BAD_PACKET_LENGTH) ,"bad packet length"},
282{ERR_REASON(SSL_R_BAD_PROTOCOL_VERSION_NUMBER),"bad protocol version number"}, 305{ERR_REASON(SSL_R_BAD_PROTOCOL_VERSION_NUMBER),"bad protocol version number"},
306{ERR_REASON(SSL_R_BAD_PSK_IDENTITY_HINT_LENGTH),"bad psk identity hint length"},
283{ERR_REASON(SSL_R_BAD_RESPONSE_ARGUMENT) ,"bad response argument"}, 307{ERR_REASON(SSL_R_BAD_RESPONSE_ARGUMENT) ,"bad response argument"},
284{ERR_REASON(SSL_R_BAD_RSA_DECRYPT) ,"bad rsa decrypt"}, 308{ERR_REASON(SSL_R_BAD_RSA_DECRYPT) ,"bad rsa decrypt"},
285{ERR_REASON(SSL_R_BAD_RSA_ENCRYPT) ,"bad rsa encrypt"}, 309{ERR_REASON(SSL_R_BAD_RSA_ENCRYPT) ,"bad rsa encrypt"},
@@ -305,6 +329,7 @@ static ERR_STRING_DATA SSL_str_reasons[]=
305{ERR_REASON(SSL_R_CIPHER_TABLE_SRC_ERROR),"cipher table src error"}, 329{ERR_REASON(SSL_R_CIPHER_TABLE_SRC_ERROR),"cipher table src error"},
306{ERR_REASON(SSL_R_CLIENTHELLO_TLSEXT) ,"clienthello tlsext"}, 330{ERR_REASON(SSL_R_CLIENTHELLO_TLSEXT) ,"clienthello tlsext"},
307{ERR_REASON(SSL_R_COMPRESSED_LENGTH_TOO_LONG),"compressed length too long"}, 331{ERR_REASON(SSL_R_COMPRESSED_LENGTH_TOO_LONG),"compressed length too long"},
332{ERR_REASON(SSL_R_COMPRESSION_DISABLED) ,"compression disabled"},
308{ERR_REASON(SSL_R_COMPRESSION_FAILURE) ,"compression failure"}, 333{ERR_REASON(SSL_R_COMPRESSION_FAILURE) ,"compression failure"},
309{ERR_REASON(SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE),"compression id not within private range"}, 334{ERR_REASON(SSL_R_COMPRESSION_ID_NOT_WITHIN_PRIVATE_RANGE),"compression id not within private range"},
310{ERR_REASON(SSL_R_COMPRESSION_LIBRARY_ERROR),"compression library error"}, 335{ERR_REASON(SSL_R_COMPRESSION_LIBRARY_ERROR),"compression library error"},
@@ -317,7 +342,12 @@ static ERR_STRING_DATA SSL_str_reasons[]=
317{ERR_REASON(SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC),"decryption failed or bad record mac"}, 342{ERR_REASON(SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC),"decryption failed or bad record mac"},
318{ERR_REASON(SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG),"dh public value length is wrong"}, 343{ERR_REASON(SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG),"dh public value length is wrong"},
319{ERR_REASON(SSL_R_DIGEST_CHECK_FAILED) ,"digest check failed"}, 344{ERR_REASON(SSL_R_DIGEST_CHECK_FAILED) ,"digest check failed"},
345{ERR_REASON(SSL_R_DTLS_MESSAGE_TOO_BIG) ,"dtls message too big"},
320{ERR_REASON(SSL_R_DUPLICATE_COMPRESSION_ID),"duplicate compression id"}, 346{ERR_REASON(SSL_R_DUPLICATE_COMPRESSION_ID),"duplicate compression id"},
347{ERR_REASON(SSL_R_ECC_CERT_NOT_FOR_KEY_AGREEMENT),"ecc cert not for key agreement"},
348{ERR_REASON(SSL_R_ECC_CERT_NOT_FOR_SIGNING),"ecc cert not for signing"},
349{ERR_REASON(SSL_R_ECC_CERT_SHOULD_HAVE_RSA_SIGNATURE),"ecc cert should have rsa signature"},
350{ERR_REASON(SSL_R_ECC_CERT_SHOULD_HAVE_SHA1_SIGNATURE),"ecc cert should have sha1 signature"},
321{ERR_REASON(SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER),"ecgroup too large for cipher"}, 351{ERR_REASON(SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER),"ecgroup too large for cipher"},
322{ERR_REASON(SSL_R_ENCRYPTED_LENGTH_TOO_LONG),"encrypted length too long"}, 352{ERR_REASON(SSL_R_ENCRYPTED_LENGTH_TOO_LONG),"encrypted length too long"},
323{ERR_REASON(SSL_R_ERROR_GENERATING_TMP_RSA_KEY),"error generating tmp rsa key"}, 353{ERR_REASON(SSL_R_ERROR_GENERATING_TMP_RSA_KEY),"error generating tmp rsa key"},
@@ -328,8 +358,10 @@ static ERR_STRING_DATA SSL_str_reasons[]=
328{ERR_REASON(SSL_R_HTTPS_PROXY_REQUEST) ,"https proxy request"}, 358{ERR_REASON(SSL_R_HTTPS_PROXY_REQUEST) ,"https proxy request"},
329{ERR_REASON(SSL_R_HTTP_REQUEST) ,"http request"}, 359{ERR_REASON(SSL_R_HTTP_REQUEST) ,"http request"},
330{ERR_REASON(SSL_R_ILLEGAL_PADDING) ,"illegal padding"}, 360{ERR_REASON(SSL_R_ILLEGAL_PADDING) ,"illegal padding"},
361{ERR_REASON(SSL_R_INCONSISTENT_COMPRESSION),"inconsistent compression"},
331{ERR_REASON(SSL_R_INVALID_CHALLENGE_LENGTH),"invalid challenge length"}, 362{ERR_REASON(SSL_R_INVALID_CHALLENGE_LENGTH),"invalid challenge length"},
332{ERR_REASON(SSL_R_INVALID_COMMAND) ,"invalid command"}, 363{ERR_REASON(SSL_R_INVALID_COMMAND) ,"invalid command"},
364{ERR_REASON(SSL_R_INVALID_COMPRESSION_ALGORITHM),"invalid compression algorithm"},
333{ERR_REASON(SSL_R_INVALID_PURPOSE) ,"invalid purpose"}, 365{ERR_REASON(SSL_R_INVALID_PURPOSE) ,"invalid purpose"},
334{ERR_REASON(SSL_R_INVALID_STATUS_RESPONSE),"invalid status response"}, 366{ERR_REASON(SSL_R_INVALID_STATUS_RESPONSE),"invalid status response"},
335{ERR_REASON(SSL_R_INVALID_TICKET_KEYS_LENGTH),"invalid ticket keys length"}, 367{ERR_REASON(SSL_R_INVALID_TICKET_KEYS_LENGTH),"invalid ticket keys length"},
@@ -379,17 +411,22 @@ static ERR_STRING_DATA SSL_str_reasons[]=
379{ERR_REASON(SSL_R_NO_CLIENT_CERT_METHOD) ,"no client cert method"}, 411{ERR_REASON(SSL_R_NO_CLIENT_CERT_METHOD) ,"no client cert method"},
380{ERR_REASON(SSL_R_NO_CLIENT_CERT_RECEIVED),"no client cert received"}, 412{ERR_REASON(SSL_R_NO_CLIENT_CERT_RECEIVED),"no client cert received"},
381{ERR_REASON(SSL_R_NO_COMPRESSION_SPECIFIED),"no compression specified"}, 413{ERR_REASON(SSL_R_NO_COMPRESSION_SPECIFIED),"no compression specified"},
414{ERR_REASON(SSL_R_NO_GOST_CERTIFICATE_SENT_BY_PEER),"Peer haven't sent GOST certificate, required for selected ciphersuite"},
382{ERR_REASON(SSL_R_NO_METHOD_SPECIFIED) ,"no method specified"}, 415{ERR_REASON(SSL_R_NO_METHOD_SPECIFIED) ,"no method specified"},
383{ERR_REASON(SSL_R_NO_PRIVATEKEY) ,"no privatekey"}, 416{ERR_REASON(SSL_R_NO_PRIVATEKEY) ,"no privatekey"},
384{ERR_REASON(SSL_R_NO_PRIVATE_KEY_ASSIGNED),"no private key assigned"}, 417{ERR_REASON(SSL_R_NO_PRIVATE_KEY_ASSIGNED),"no private key assigned"},
385{ERR_REASON(SSL_R_NO_PROTOCOLS_AVAILABLE),"no protocols available"}, 418{ERR_REASON(SSL_R_NO_PROTOCOLS_AVAILABLE),"no protocols available"},
386{ERR_REASON(SSL_R_NO_PUBLICKEY) ,"no publickey"}, 419{ERR_REASON(SSL_R_NO_PUBLICKEY) ,"no publickey"},
420{ERR_REASON(SSL_R_NO_RENEGOTIATION) ,"no renegotiation"},
421{ERR_REASON(SSL_R_NO_REQUIRED_DIGEST) ,"digest requred for handshake isn't computed"},
387{ERR_REASON(SSL_R_NO_SHARED_CIPHER) ,"no shared cipher"}, 422{ERR_REASON(SSL_R_NO_SHARED_CIPHER) ,"no shared cipher"},
388{ERR_REASON(SSL_R_NO_VERIFY_CALLBACK) ,"no verify callback"}, 423{ERR_REASON(SSL_R_NO_VERIFY_CALLBACK) ,"no verify callback"},
389{ERR_REASON(SSL_R_NULL_SSL_CTX) ,"null ssl ctx"}, 424{ERR_REASON(SSL_R_NULL_SSL_CTX) ,"null ssl ctx"},
390{ERR_REASON(SSL_R_NULL_SSL_METHOD_PASSED),"null ssl method passed"}, 425{ERR_REASON(SSL_R_NULL_SSL_METHOD_PASSED),"null ssl method passed"},
391{ERR_REASON(SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED),"old session cipher not returned"}, 426{ERR_REASON(SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED),"old session cipher not returned"},
427{ERR_REASON(SSL_R_OLD_SESSION_COMPRESSION_ALGORITHM_NOT_RETURNED),"old session compression algorithm not returned"},
392{ERR_REASON(SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE),"only tls allowed in fips mode"}, 428{ERR_REASON(SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE),"only tls allowed in fips mode"},
429{ERR_REASON(SSL_R_OPAQUE_PRF_INPUT_TOO_LONG),"opaque PRF input too long"},
393{ERR_REASON(SSL_R_PACKET_LENGTH_TOO_LONG),"packet length too long"}, 430{ERR_REASON(SSL_R_PACKET_LENGTH_TOO_LONG),"packet length too long"},
394{ERR_REASON(SSL_R_PARSE_TLSEXT) ,"parse tlsext"}, 431{ERR_REASON(SSL_R_PARSE_TLSEXT) ,"parse tlsext"},
395{ERR_REASON(SSL_R_PATH_TOO_LONG) ,"path too long"}, 432{ERR_REASON(SSL_R_PATH_TOO_LONG) ,"path too long"},
@@ -402,6 +439,9 @@ static ERR_STRING_DATA SSL_str_reasons[]=
402{ERR_REASON(SSL_R_PRE_MAC_LENGTH_TOO_LONG),"pre mac length too long"}, 439{ERR_REASON(SSL_R_PRE_MAC_LENGTH_TOO_LONG),"pre mac length too long"},
403{ERR_REASON(SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS),"problems mapping cipher functions"}, 440{ERR_REASON(SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS),"problems mapping cipher functions"},
404{ERR_REASON(SSL_R_PROTOCOL_IS_SHUTDOWN) ,"protocol is shutdown"}, 441{ERR_REASON(SSL_R_PROTOCOL_IS_SHUTDOWN) ,"protocol is shutdown"},
442{ERR_REASON(SSL_R_PSK_IDENTITY_NOT_FOUND),"psk identity not found"},
443{ERR_REASON(SSL_R_PSK_NO_CLIENT_CB) ,"psk no client cb"},
444{ERR_REASON(SSL_R_PSK_NO_SERVER_CB) ,"psk no server cb"},
405{ERR_REASON(SSL_R_PUBLIC_KEY_ENCRYPT_ERROR),"public key encrypt error"}, 445{ERR_REASON(SSL_R_PUBLIC_KEY_ENCRYPT_ERROR),"public key encrypt error"},
406{ERR_REASON(SSL_R_PUBLIC_KEY_IS_NOT_RSA) ,"public key is not rsa"}, 446{ERR_REASON(SSL_R_PUBLIC_KEY_IS_NOT_RSA) ,"public key is not rsa"},
407{ERR_REASON(SSL_R_PUBLIC_KEY_NOT_RSA) ,"public key not rsa"}, 447{ERR_REASON(SSL_R_PUBLIC_KEY_NOT_RSA) ,"public key not rsa"},
@@ -411,16 +451,22 @@ static ERR_STRING_DATA SSL_str_reasons[]=
411{ERR_REASON(SSL_R_RECORD_LENGTH_MISMATCH),"record length mismatch"}, 451{ERR_REASON(SSL_R_RECORD_LENGTH_MISMATCH),"record length mismatch"},
412{ERR_REASON(SSL_R_RECORD_TOO_LARGE) ,"record too large"}, 452{ERR_REASON(SSL_R_RECORD_TOO_LARGE) ,"record too large"},
413{ERR_REASON(SSL_R_RECORD_TOO_SMALL) ,"record too small"}, 453{ERR_REASON(SSL_R_RECORD_TOO_SMALL) ,"record too small"},
454{ERR_REASON(SSL_R_RENEGOTIATE_EXT_TOO_LONG),"renegotiate ext too long"},
455{ERR_REASON(SSL_R_RENEGOTIATION_ENCODING_ERR),"renegotiation encoding err"},
456{ERR_REASON(SSL_R_RENEGOTIATION_MISMATCH),"renegotiation mismatch"},
414{ERR_REASON(SSL_R_REQUIRED_CIPHER_MISSING),"required cipher missing"}, 457{ERR_REASON(SSL_R_REQUIRED_CIPHER_MISSING),"required cipher missing"},
458{ERR_REASON(SSL_R_REQUIRED_COMPRESSSION_ALGORITHM_MISSING),"required compresssion algorithm missing"},
415{ERR_REASON(SSL_R_REUSE_CERT_LENGTH_NOT_ZERO),"reuse cert length not zero"}, 459{ERR_REASON(SSL_R_REUSE_CERT_LENGTH_NOT_ZERO),"reuse cert length not zero"},
416{ERR_REASON(SSL_R_REUSE_CERT_TYPE_NOT_ZERO),"reuse cert type not zero"}, 460{ERR_REASON(SSL_R_REUSE_CERT_TYPE_NOT_ZERO),"reuse cert type not zero"},
417{ERR_REASON(SSL_R_REUSE_CIPHER_LIST_NOT_ZERO),"reuse cipher list not zero"}, 461{ERR_REASON(SSL_R_REUSE_CIPHER_LIST_NOT_ZERO),"reuse cipher list not zero"},
462{ERR_REASON(SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING),"scsv received when renegotiating"},
418{ERR_REASON(SSL_R_SERVERHELLO_TLSEXT) ,"serverhello tlsext"}, 463{ERR_REASON(SSL_R_SERVERHELLO_TLSEXT) ,"serverhello tlsext"},
419{ERR_REASON(SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED),"session id context uninitialized"}, 464{ERR_REASON(SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED),"session id context uninitialized"},
420{ERR_REASON(SSL_R_SHORT_READ) ,"short read"}, 465{ERR_REASON(SSL_R_SHORT_READ) ,"short read"},
421{ERR_REASON(SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE),"signature for non signing certificate"}, 466{ERR_REASON(SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE),"signature for non signing certificate"},
422{ERR_REASON(SSL_R_SSL23_DOING_SESSION_ID_REUSE),"ssl23 doing session id reuse"}, 467{ERR_REASON(SSL_R_SSL23_DOING_SESSION_ID_REUSE),"ssl23 doing session id reuse"},
423{ERR_REASON(SSL_R_SSL2_CONNECTION_ID_TOO_LONG),"ssl2 connection id too long"}, 468{ERR_REASON(SSL_R_SSL2_CONNECTION_ID_TOO_LONG),"ssl2 connection id too long"},
469{ERR_REASON(SSL_R_SSL3_EXT_INVALID_ECPOINTFORMAT),"ssl3 ext invalid ecpointformat"},
424{ERR_REASON(SSL_R_SSL3_EXT_INVALID_SERVERNAME),"ssl3 ext invalid servername"}, 470{ERR_REASON(SSL_R_SSL3_EXT_INVALID_SERVERNAME),"ssl3 ext invalid servername"},
425{ERR_REASON(SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE),"ssl3 ext invalid servername type"}, 471{ERR_REASON(SSL_R_SSL3_EXT_INVALID_SERVERNAME_TYPE),"ssl3 ext invalid servername type"},
426{ERR_REASON(SSL_R_SSL3_SESSION_ID_TOO_LONG),"ssl3 session id too long"}, 472{ERR_REASON(SSL_R_SSL3_SESSION_ID_TOO_LONG),"ssl3 session id too long"},
@@ -456,6 +502,11 @@ static ERR_STRING_DATA SSL_str_reasons[]=
456{ERR_REASON(SSL_R_TLSV1_ALERT_RECORD_OVERFLOW),"tlsv1 alert record overflow"}, 502{ERR_REASON(SSL_R_TLSV1_ALERT_RECORD_OVERFLOW),"tlsv1 alert record overflow"},
457{ERR_REASON(SSL_R_TLSV1_ALERT_UNKNOWN_CA),"tlsv1 alert unknown ca"}, 503{ERR_REASON(SSL_R_TLSV1_ALERT_UNKNOWN_CA),"tlsv1 alert unknown ca"},
458{ERR_REASON(SSL_R_TLSV1_ALERT_USER_CANCELLED),"tlsv1 alert user cancelled"}, 504{ERR_REASON(SSL_R_TLSV1_ALERT_USER_CANCELLED),"tlsv1 alert user cancelled"},
505{ERR_REASON(SSL_R_TLSV1_BAD_CERTIFICATE_HASH_VALUE),"tlsv1 bad certificate hash value"},
506{ERR_REASON(SSL_R_TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE),"tlsv1 bad certificate status response"},
507{ERR_REASON(SSL_R_TLSV1_CERTIFICATE_UNOBTAINABLE),"tlsv1 certificate unobtainable"},
508{ERR_REASON(SSL_R_TLSV1_UNRECOGNIZED_NAME),"tlsv1 unrecognized name"},
509{ERR_REASON(SSL_R_TLSV1_UNSUPPORTED_EXTENSION),"tlsv1 unsupported extension"},
459{ERR_REASON(SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER),"tls client cert req with anon cipher"}, 510{ERR_REASON(SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER),"tls client cert req with anon cipher"},
460{ERR_REASON(SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST),"tls invalid ecpointformat list"}, 511{ERR_REASON(SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST),"tls invalid ecpointformat list"},
461{ERR_REASON(SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST),"tls peer did not respond with certificate list"}, 512{ERR_REASON(SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST),"tls peer did not respond with certificate list"},
@@ -484,8 +535,10 @@ static ERR_STRING_DATA SSL_str_reasons[]=
484{ERR_REASON(SSL_R_UNKNOWN_REMOTE_ERROR_TYPE),"unknown remote error type"}, 535{ERR_REASON(SSL_R_UNKNOWN_REMOTE_ERROR_TYPE),"unknown remote error type"},
485{ERR_REASON(SSL_R_UNKNOWN_SSL_VERSION) ,"unknown ssl version"}, 536{ERR_REASON(SSL_R_UNKNOWN_SSL_VERSION) ,"unknown ssl version"},
486{ERR_REASON(SSL_R_UNKNOWN_STATE) ,"unknown state"}, 537{ERR_REASON(SSL_R_UNKNOWN_STATE) ,"unknown state"},
538{ERR_REASON(SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED),"unsafe legacy renegotiation disabled"},
487{ERR_REASON(SSL_R_UNSUPPORTED_CIPHER) ,"unsupported cipher"}, 539{ERR_REASON(SSL_R_UNSUPPORTED_CIPHER) ,"unsupported cipher"},
488{ERR_REASON(SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM),"unsupported compression algorithm"}, 540{ERR_REASON(SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM),"unsupported compression algorithm"},
541{ERR_REASON(SSL_R_UNSUPPORTED_DIGEST_TYPE),"unsupported digest type"},
489{ERR_REASON(SSL_R_UNSUPPORTED_ELLIPTIC_CURVE),"unsupported elliptic curve"}, 542{ERR_REASON(SSL_R_UNSUPPORTED_ELLIPTIC_CURVE),"unsupported elliptic curve"},
490{ERR_REASON(SSL_R_UNSUPPORTED_PROTOCOL) ,"unsupported protocol"}, 543{ERR_REASON(SSL_R_UNSUPPORTED_PROTOCOL) ,"unsupported protocol"},
491{ERR_REASON(SSL_R_UNSUPPORTED_SSL_VERSION),"unsupported ssl version"}, 544{ERR_REASON(SSL_R_UNSUPPORTED_SSL_VERSION),"unsupported ssl version"},
diff --git a/src/lib/libssl/src/ssl/ssl_lib.c b/src/lib/libssl/src/ssl/ssl_lib.c
index 893abff1f4..3157f20eac 100644
--- a/src/lib/libssl/src/ssl/ssl_lib.c
+++ b/src/lib/libssl/src/ssl/ssl_lib.c
@@ -58,7 +58,7 @@
58 * [including the GNU Public Licence.] 58 * [including the GNU Public Licence.]
59 */ 59 */
60/* ==================================================================== 60/* ====================================================================
61 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. 61 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
62 * 62 *
63 * Redistribution and use in source and binary forms, with or without 63 * Redistribution and use in source and binary forms, with or without
64 * modification, are permitted provided that the following conditions 64 * modification, are permitted provided that the following conditions
@@ -115,6 +115,32 @@
115 * ECC cipher suite support in OpenSSL originally developed by 115 * ECC cipher suite support in OpenSSL originally developed by
116 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. 116 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
117 */ 117 */
118/* ====================================================================
119 * Copyright 2005 Nokia. All rights reserved.
120 *
121 * The portions of the attached software ("Contribution") is developed by
122 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
123 * license.
124 *
125 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
126 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
127 * support (see RFC 4279) to OpenSSL.
128 *
129 * No patent licenses or other rights except those expressly stated in
130 * the OpenSSL open source license shall be deemed granted or received
131 * expressly, by implication, estoppel, or otherwise.
132 *
133 * No assurances are provided by Nokia that the Contribution does not
134 * infringe the patent or other intellectual property rights of any third
135 * party or that the license provides you with all the necessary rights
136 * to make use of the Contribution.
137 *
138 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
139 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
140 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
141 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
142 * OTHERWISE.
143 */
118 144
119#ifdef REF_CHECK 145#ifdef REF_CHECK
120# include <assert.h> 146# include <assert.h>
@@ -143,9 +169,9 @@ SSL3_ENC_METHOD ssl3_undef_enc_method={
143 ssl_undefined_function, 169 ssl_undefined_function,
144 (int (*)(SSL *, unsigned char *, unsigned char *, int))ssl_undefined_function, 170 (int (*)(SSL *, unsigned char *, unsigned char *, int))ssl_undefined_function,
145 (int (*)(SSL*, int))ssl_undefined_function, 171 (int (*)(SSL*, int))ssl_undefined_function,
146 (int (*)(SSL *, EVP_MD_CTX *, EVP_MD_CTX *, const char*, int, unsigned char *))ssl_undefined_function, 172 (int (*)(SSL *, const char*, int, unsigned char *))ssl_undefined_function,
147 0, /* finish_mac_length */ 173 0, /* finish_mac_length */
148 (int (*)(SSL *, EVP_MD_CTX *, unsigned char *))ssl_undefined_function, 174 (int (*)(SSL *, int, unsigned char *))ssl_undefined_function,
149 NULL, /* client_finished_label */ 175 NULL, /* client_finished_label */
150 0, /* client_finished_label_len */ 176 0, /* client_finished_label_len */
151 NULL, /* server_finished_label */ 177 NULL, /* server_finished_label */
@@ -204,6 +230,8 @@ int SSL_clear(SSL *s)
204 } 230 }
205 231
206 ssl_clear_cipher_ctx(s); 232 ssl_clear_cipher_ctx(s);
233 ssl_clear_hash_ctx(&s->read_hash);
234 ssl_clear_hash_ctx(&s->write_hash);
207 235
208 s->first_packet=0; 236 s->first_packet=0;
209 237
@@ -224,14 +252,15 @@ int SSL_clear(SSL *s)
224 } 252 }
225 253
226/** Used to change an SSL_CTXs default SSL method type */ 254/** Used to change an SSL_CTXs default SSL method type */
227int SSL_CTX_set_ssl_version(SSL_CTX *ctx,SSL_METHOD *meth) 255int SSL_CTX_set_ssl_version(SSL_CTX *ctx,const SSL_METHOD *meth)
228 { 256 {
229 STACK_OF(SSL_CIPHER) *sk; 257 STACK_OF(SSL_CIPHER) *sk;
230 258
231 ctx->method=meth; 259 ctx->method=meth;
232 260
233 sk=ssl_create_cipher_list(ctx->method,&(ctx->cipher_list), 261 sk=ssl_create_cipher_list(ctx->method,&(ctx->cipher_list),
234 &(ctx->cipher_list_by_id),SSL_DEFAULT_CIPHER_LIST); 262 &(ctx->cipher_list_by_id),
263 meth->version == SSL2_VERSION ? "SSLv2" : SSL_DEFAULT_CIPHER_LIST);
235 if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= 0)) 264 if ((sk == NULL) || (sk_SSL_CIPHER_num(sk) <= 0))
236 { 265 {
237 SSLerr(SSL_F_SSL_CTX_SET_SSL_VERSION,SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS); 266 SSLerr(SSL_F_SSL_CTX_SET_SSL_VERSION,SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS);
@@ -308,6 +337,7 @@ SSL *SSL_new(SSL_CTX *ctx)
308 s->trust = ctx->trust; 337 s->trust = ctx->trust;
309#endif 338#endif
310 s->quiet_shutdown=ctx->quiet_shutdown; 339 s->quiet_shutdown=ctx->quiet_shutdown;
340 s->max_send_fragment = ctx->max_send_fragment;
311 341
312 CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX); 342 CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX);
313 s->ctx=ctx; 343 s->ctx=ctx;
@@ -324,6 +354,7 @@ SSL *SSL_new(SSL_CTX *ctx)
324 CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX); 354 CRYPTO_add(&ctx->references,1,CRYPTO_LOCK_SSL_CTX);
325 s->initial_ctx=ctx; 355 s->initial_ctx=ctx;
326#endif 356#endif
357
327 s->verify_result=X509_V_OK; 358 s->verify_result=X509_V_OK;
328 359
329 s->method=ctx->method; 360 s->method=ctx->method;
@@ -338,6 +369,11 @@ SSL *SSL_new(SSL_CTX *ctx)
338 369
339 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL, s, &s->ex_data); 370 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL, s, &s->ex_data);
340 371
372#ifndef OPENSSL_NO_PSK
373 s->psk_client_callback=ctx->psk_client_callback;
374 s->psk_server_callback=ctx->psk_server_callback;
375#endif
376
341 return(s); 377 return(s);
342err: 378err:
343 if (s != NULL) 379 if (s != NULL)
@@ -425,7 +461,7 @@ int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id,
425 } 461 }
426 462
427 CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX); 463 CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);
428 p = (SSL_SESSION *)lh_retrieve(ssl->ctx->sessions, &r); 464 p = lh_SSL_SESSION_retrieve(ssl->ctx->sessions, &r);
429 CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX); 465 CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX);
430 return (p != NULL); 466 return (p != NULL);
431 } 467 }
@@ -450,6 +486,16 @@ int SSL_set_trust(SSL *s, int trust)
450 return X509_VERIFY_PARAM_set_trust(s->param, trust); 486 return X509_VERIFY_PARAM_set_trust(s->param, trust);
451 } 487 }
452 488
489int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm)
490 {
491 return X509_VERIFY_PARAM_set1(ctx->param, vpm);
492 }
493
494int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm)
495 {
496 return X509_VERIFY_PARAM_set1(ssl->param, vpm);
497 }
498
453void SSL_free(SSL *s) 499void SSL_free(SSL *s)
454 { 500 {
455 int i; 501 int i;
@@ -504,15 +550,21 @@ void SSL_free(SSL *s)
504 } 550 }
505 551
506 ssl_clear_cipher_ctx(s); 552 ssl_clear_cipher_ctx(s);
553 ssl_clear_hash_ctx(&s->read_hash);
554 ssl_clear_hash_ctx(&s->write_hash);
507 555
508 if (s->cert != NULL) ssl_cert_free(s->cert); 556 if (s->cert != NULL) ssl_cert_free(s->cert);
509 /* Free up if allocated */ 557 /* Free up if allocated */
510 558
511 if (s->ctx) SSL_CTX_free(s->ctx);
512#ifndef OPENSSL_NO_TLSEXT 559#ifndef OPENSSL_NO_TLSEXT
513 if (s->tlsext_hostname) 560 if (s->tlsext_hostname)
514 OPENSSL_free(s->tlsext_hostname); 561 OPENSSL_free(s->tlsext_hostname);
515 if (s->initial_ctx) SSL_CTX_free(s->initial_ctx); 562 if (s->initial_ctx) SSL_CTX_free(s->initial_ctx);
563#ifndef OPENSSL_NO_EC
564 if (s->tlsext_ecpointformatlist) OPENSSL_free(s->tlsext_ecpointformatlist);
565 if (s->tlsext_ellipticcurvelist) OPENSSL_free(s->tlsext_ellipticcurvelist);
566#endif /* OPENSSL_NO_EC */
567 if (s->tlsext_opaque_prf_input) OPENSSL_free(s->tlsext_opaque_prf_input);
516 if (s->tlsext_ocsp_exts) 568 if (s->tlsext_ocsp_exts)
517 sk_X509_EXTENSION_pop_free(s->tlsext_ocsp_exts, 569 sk_X509_EXTENSION_pop_free(s->tlsext_ocsp_exts,
518 X509_EXTENSION_free); 570 X509_EXTENSION_free);
@@ -521,11 +573,14 @@ void SSL_free(SSL *s)
521 if (s->tlsext_ocsp_resp) 573 if (s->tlsext_ocsp_resp)
522 OPENSSL_free(s->tlsext_ocsp_resp); 574 OPENSSL_free(s->tlsext_ocsp_resp);
523#endif 575#endif
576
524 if (s->client_CA != NULL) 577 if (s->client_CA != NULL)
525 sk_X509_NAME_pop_free(s->client_CA,X509_NAME_free); 578 sk_X509_NAME_pop_free(s->client_CA,X509_NAME_free);
526 579
527 if (s->method != NULL) s->method->ssl_free(s); 580 if (s->method != NULL) s->method->ssl_free(s);
528 581
582 if (s->ctx) SSL_CTX_free(s->ctx);
583
529#ifndef OPENSSL_NO_KRB5 584#ifndef OPENSSL_NO_KRB5
530 if (s->kssl_ctx != NULL) 585 if (s->kssl_ctx != NULL)
531 kssl_ctx_free(s->kssl_ctx); 586 kssl_ctx_free(s->kssl_ctx);
@@ -843,7 +898,7 @@ int SSL_check_private_key(const SSL *ssl)
843 } 898 }
844 if (ssl->cert == NULL) 899 if (ssl->cert == NULL)
845 { 900 {
846 SSLerr(SSL_F_SSL_CHECK_PRIVATE_KEY,SSL_R_NO_CERTIFICATE_ASSIGNED); 901 SSLerr(SSL_F_SSL_CHECK_PRIVATE_KEY,SSL_R_NO_CERTIFICATE_ASSIGNED);
847 return 0; 902 return 0;
848 } 903 }
849 if (ssl->cert->key->x509 == NULL) 904 if (ssl->cert->key->x509 == NULL)
@@ -986,8 +1041,12 @@ long SSL_ctrl(SSL *s,int cmd,long larg,void *parg)
986 1041
987 case SSL_CTRL_OPTIONS: 1042 case SSL_CTRL_OPTIONS:
988 return(s->options|=larg); 1043 return(s->options|=larg);
1044 case SSL_CTRL_CLEAR_OPTIONS:
1045 return(s->options&=~larg);
989 case SSL_CTRL_MODE: 1046 case SSL_CTRL_MODE:
990 return(s->mode|=larg); 1047 return(s->mode|=larg);
1048 case SSL_CTRL_CLEAR_MODE:
1049 return(s->mode &=~larg);
991 case SSL_CTRL_GET_MAX_CERT_LIST: 1050 case SSL_CTRL_GET_MAX_CERT_LIST:
992 return(s->max_cert_list); 1051 return(s->max_cert_list);
993 case SSL_CTRL_SET_MAX_CERT_LIST: 1052 case SSL_CTRL_SET_MAX_CERT_LIST:
@@ -995,12 +1054,22 @@ long SSL_ctrl(SSL *s,int cmd,long larg,void *parg)
995 s->max_cert_list=larg; 1054 s->max_cert_list=larg;
996 return(l); 1055 return(l);
997 case SSL_CTRL_SET_MTU: 1056 case SSL_CTRL_SET_MTU:
998 if (SSL_version(s) == DTLS1_VERSION) 1057 if (SSL_version(s) == DTLS1_VERSION ||
1058 SSL_version(s) == DTLS1_BAD_VER)
999 { 1059 {
1000 s->d1->mtu = larg; 1060 s->d1->mtu = larg;
1001 return larg; 1061 return larg;
1002 } 1062 }
1003 return 0; 1063 return 0;
1064 case SSL_CTRL_SET_MAX_SEND_FRAGMENT:
1065 if (larg < 512 || larg > SSL3_RT_MAX_PLAIN_LENGTH)
1066 return 0;
1067 s->max_send_fragment = larg;
1068 return 1;
1069 case SSL_CTRL_GET_RI_SUPPORT:
1070 if (s->s3)
1071 return s->s3->send_connection_binding;
1072 else return 0;
1004 default: 1073 default:
1005 return(s->method->ssl_ctrl(s,cmd,larg,parg)); 1074 return(s->method->ssl_ctrl(s,cmd,larg,parg));
1006 } 1075 }
@@ -1019,7 +1088,7 @@ long SSL_callback_ctrl(SSL *s, int cmd, void (*fp)(void))
1019 } 1088 }
1020 } 1089 }
1021 1090
1022struct lhash_st *SSL_CTX_sessions(SSL_CTX *ctx) 1091LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx)
1023 { 1092 {
1024 return ctx->sessions; 1093 return ctx->sessions;
1025 } 1094 }
@@ -1062,7 +1131,7 @@ long SSL_CTX_ctrl(SSL_CTX *ctx,int cmd,long larg,void *parg)
1062 return(ctx->session_cache_mode); 1131 return(ctx->session_cache_mode);
1063 1132
1064 case SSL_CTRL_SESS_NUMBER: 1133 case SSL_CTRL_SESS_NUMBER:
1065 return(ctx->sessions->num_items); 1134 return(lh_SSL_SESSION_num_items(ctx->sessions));
1066 case SSL_CTRL_SESS_CONNECT: 1135 case SSL_CTRL_SESS_CONNECT:
1067 return(ctx->stats.sess_connect); 1136 return(ctx->stats.sess_connect);
1068 case SSL_CTRL_SESS_CONNECT_GOOD: 1137 case SSL_CTRL_SESS_CONNECT_GOOD:
@@ -1087,8 +1156,17 @@ long SSL_CTX_ctrl(SSL_CTX *ctx,int cmd,long larg,void *parg)
1087 return(ctx->stats.sess_cache_full); 1156 return(ctx->stats.sess_cache_full);
1088 case SSL_CTRL_OPTIONS: 1157 case SSL_CTRL_OPTIONS:
1089 return(ctx->options|=larg); 1158 return(ctx->options|=larg);
1159 case SSL_CTRL_CLEAR_OPTIONS:
1160 return(ctx->options&=~larg);
1090 case SSL_CTRL_MODE: 1161 case SSL_CTRL_MODE:
1091 return(ctx->mode|=larg); 1162 return(ctx->mode|=larg);
1163 case SSL_CTRL_CLEAR_MODE:
1164 return(ctx->mode&=~larg);
1165 case SSL_CTRL_SET_MAX_SEND_FRAGMENT:
1166 if (larg < 512 || larg > SSL3_RT_MAX_PLAIN_LENGTH)
1167 return 0;
1168 ctx->max_send_fragment = larg;
1169 return 1;
1092 default: 1170 default:
1093 return(ctx->method->ssl_ctx_ctrl(ctx,cmd,larg,parg)); 1171 return(ctx->method->ssl_ctx_ctrl(ctx,cmd,larg,parg));
1094 } 1172 }
@@ -1193,8 +1271,8 @@ int SSL_CTX_set_cipher_list(SSL_CTX *ctx, const char *str)
1193 /* ssl_create_cipher_list may return an empty stack if it 1271 /* ssl_create_cipher_list may return an empty stack if it
1194 * was unable to find a cipher matching the given rule string 1272 * was unable to find a cipher matching the given rule string
1195 * (for example if the rule string specifies a cipher which 1273 * (for example if the rule string specifies a cipher which
1196 * has been disabled). This is not an error as far as 1274 * has been disabled). This is not an error as far as
1197 * ssl_create_cipher_list is concerned, and hence 1275 * ssl_create_cipher_list is concerned, and hence
1198 * ctx->cipher_list and ctx->cipher_list_by_id has been 1276 * ctx->cipher_list and ctx->cipher_list_by_id has been
1199 * updated. */ 1277 * updated. */
1200 if (sk == NULL) 1278 if (sk == NULL)
@@ -1262,13 +1340,13 @@ char *SSL_get_shared_ciphers(const SSL *s,char *buf,int len)
1262 } 1340 }
1263 1341
1264int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p, 1342int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p,
1265 int (*put_cb)(const SSL_CIPHER *, unsigned char *)) 1343 int (*put_cb)(const SSL_CIPHER *, unsigned char *))
1266 { 1344 {
1267 int i,j=0; 1345 int i,j=0;
1268 SSL_CIPHER *c; 1346 SSL_CIPHER *c;
1269 unsigned char *q; 1347 unsigned char *q;
1270#ifndef OPENSSL_NO_KRB5 1348#ifndef OPENSSL_NO_KRB5
1271 int nokrb5 = !kssl_tgt_is_available(s->kssl_ctx); 1349 int nokrb5 = !kssl_tgt_is_available(s->kssl_ctx);
1272#endif /* OPENSSL_NO_KRB5 */ 1350#endif /* OPENSSL_NO_KRB5 */
1273 1351
1274 if (sk == NULL) return(0); 1352 if (sk == NULL) return(0);
@@ -1278,22 +1356,46 @@ int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p,
1278 { 1356 {
1279 c=sk_SSL_CIPHER_value(sk,i); 1357 c=sk_SSL_CIPHER_value(sk,i);
1280#ifndef OPENSSL_NO_KRB5 1358#ifndef OPENSSL_NO_KRB5
1281 if ((c->algorithms & SSL_KRB5) && nokrb5) 1359 if (((c->algorithm_mkey & SSL_kKRB5) || (c->algorithm_auth & SSL_aKRB5)) &&
1282 continue; 1360 nokrb5)
1283#endif /* OPENSSL_NO_KRB5 */ 1361 continue;
1284 1362#endif /* OPENSSL_NO_KRB5 */
1363#ifndef OPENSSL_NO_PSK
1364 /* with PSK there must be client callback set */
1365 if (((c->algorithm_mkey & SSL_kPSK) || (c->algorithm_auth & SSL_aPSK)) &&
1366 s->psk_client_callback == NULL)
1367 continue;
1368#endif /* OPENSSL_NO_PSK */
1285 j = put_cb ? put_cb(c,p) : ssl_put_cipher_by_char(s,c,p); 1369 j = put_cb ? put_cb(c,p) : ssl_put_cipher_by_char(s,c,p);
1286 p+=j; 1370 p+=j;
1287 } 1371 }
1372 /* If p == q, no ciphers and caller indicates an error. Otherwise
1373 * add SCSV if not renegotiating.
1374 */
1375 if (p != q && !s->new_session)
1376 {
1377 static SSL_CIPHER scsv =
1378 {
1379 0, NULL, SSL3_CK_SCSV, 0, 0, 0, 0, 0, 0, 0, 0, 0
1380 };
1381 j = put_cb ? put_cb(&scsv,p) : ssl_put_cipher_by_char(s,&scsv,p);
1382 p+=j;
1383#ifdef OPENSSL_RI_DEBUG
1384 fprintf(stderr, "SCSV sent by client\n");
1385#endif
1386 }
1387
1288 return(p-q); 1388 return(p-q);
1289 } 1389 }
1290 1390
1291STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num, 1391STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,
1292 STACK_OF(SSL_CIPHER) **skp) 1392 STACK_OF(SSL_CIPHER) **skp)
1293 { 1393 {
1294 SSL_CIPHER *c; 1394 const SSL_CIPHER *c;
1295 STACK_OF(SSL_CIPHER) *sk; 1395 STACK_OF(SSL_CIPHER) *sk;
1296 int i,n; 1396 int i,n;
1397 if (s->s3)
1398 s->s3->send_connection_binding = 0;
1297 1399
1298 n=ssl_put_cipher_by_char(s,NULL,NULL); 1400 n=ssl_put_cipher_by_char(s,NULL,NULL);
1299 if ((num%n) != 0) 1401 if ((num%n) != 0)
@@ -1311,6 +1413,26 @@ STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,
1311 1413
1312 for (i=0; i<num; i+=n) 1414 for (i=0; i<num; i+=n)
1313 { 1415 {
1416 /* Check for SCSV */
1417 if (s->s3 && (n != 3 || !p[0]) &&
1418 (p[n-2] == ((SSL3_CK_SCSV >> 8) & 0xff)) &&
1419 (p[n-1] == (SSL3_CK_SCSV & 0xff)))
1420 {
1421 /* SCSV fatal if renegotiating */
1422 if (s->new_session)
1423 {
1424 SSLerr(SSL_F_SSL_BYTES_TO_CIPHER_LIST,SSL_R_SCSV_RECEIVED_WHEN_RENEGOTIATING);
1425 ssl3_send_alert(s,SSL3_AL_FATAL,SSL_AD_HANDSHAKE_FAILURE);
1426 goto err;
1427 }
1428 s->s3->send_connection_binding = 1;
1429 p += n;
1430#ifdef OPENSSL_RI_DEBUG
1431 fprintf(stderr, "SCSV received by server\n");
1432#endif
1433 continue;
1434 }
1435
1314 c=ssl_get_cipher_by_char(s,p); 1436 c=ssl_get_cipher_by_char(s,p);
1315 p+=n; 1437 p+=n;
1316 if (c != NULL) 1438 if (c != NULL)
@@ -1332,6 +1454,7 @@ err:
1332 return(NULL); 1454 return(NULL);
1333 } 1455 }
1334 1456
1457
1335#ifndef OPENSSL_NO_TLSEXT 1458#ifndef OPENSSL_NO_TLSEXT
1336/** return a servername extension value if provided in Client Hello, or NULL. 1459/** return a servername extension value if provided in Client Hello, or NULL.
1337 * So far, only host_name types are defined (RFC 3546). 1460 * So far, only host_name types are defined (RFC 3546).
@@ -1355,7 +1478,7 @@ int SSL_get_servername_type(const SSL *s)
1355 } 1478 }
1356#endif 1479#endif
1357 1480
1358unsigned long SSL_SESSION_hash(const SSL_SESSION *a) 1481static unsigned long ssl_session_hash(const SSL_SESSION *a)
1359 { 1482 {
1360 unsigned long l; 1483 unsigned long l;
1361 1484
@@ -1372,7 +1495,7 @@ unsigned long SSL_SESSION_hash(const SSL_SESSION *a)
1372 * SSL_CTX_has_matching_session_id() is checked accordingly. It relies on being 1495 * SSL_CTX_has_matching_session_id() is checked accordingly. It relies on being
1373 * able to construct an SSL_SESSION that will collide with any existing session 1496 * able to construct an SSL_SESSION that will collide with any existing session
1374 * with a matching session ID. */ 1497 * with a matching session ID. */
1375int SSL_SESSION_cmp(const SSL_SESSION *a,const SSL_SESSION *b) 1498static int ssl_session_cmp(const SSL_SESSION *a,const SSL_SESSION *b)
1376 { 1499 {
1377 if (a->ssl_version != b->ssl_version) 1500 if (a->ssl_version != b->ssl_version)
1378 return(1); 1501 return(1);
@@ -1385,27 +1508,19 @@ int SSL_SESSION_cmp(const SSL_SESSION *a,const SSL_SESSION *b)
1385 * SSL_SESSION_hash and SSL_SESSION_cmp for void* types and casting each 1508 * SSL_SESSION_hash and SSL_SESSION_cmp for void* types and casting each
1386 * variable. The reason is that the functions aren't static, they're exposed via 1509 * variable. The reason is that the functions aren't static, they're exposed via
1387 * ssl.h. */ 1510 * ssl.h. */
1388static IMPLEMENT_LHASH_HASH_FN(SSL_SESSION_hash, SSL_SESSION *) 1511static IMPLEMENT_LHASH_HASH_FN(ssl_session, SSL_SESSION)
1389static IMPLEMENT_LHASH_COMP_FN(SSL_SESSION_cmp, SSL_SESSION *) 1512static IMPLEMENT_LHASH_COMP_FN(ssl_session, SSL_SESSION)
1390 1513
1391SSL_CTX *SSL_CTX_new(SSL_METHOD *meth) 1514SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth)
1392 { 1515 {
1393 SSL_CTX *ret=NULL; 1516 SSL_CTX *ret=NULL;
1394 1517
1395 if (meth == NULL) 1518 if (meth == NULL)
1396 { 1519 {
1397 SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_NULL_SSL_METHOD_PASSED); 1520 SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_NULL_SSL_METHOD_PASSED);
1398 return(NULL); 1521 return(NULL);
1399 } 1522 }
1400 1523
1401#ifdef OPENSSL_FIPS
1402 if (FIPS_mode() && (meth->version < TLS1_VERSION))
1403 {
1404 SSLerr(SSL_F_SSL_CTX_NEW, SSL_R_ONLY_TLS_ALLOWED_IN_FIPS_MODE);
1405 return NULL;
1406 }
1407#endif
1408
1409 if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0) 1524 if (SSL_get_ex_data_X509_STORE_CTX_idx() < 0)
1410 { 1525 {
1411 SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_X509_VERIFICATION_SETUP_PROBLEMS); 1526 SSLerr(SSL_F_SSL_CTX_NEW,SSL_R_X509_VERIFICATION_SETUP_PROBLEMS);
@@ -1468,15 +1583,14 @@ SSL_CTX *SSL_CTX_new(SSL_METHOD *meth)
1468 ret->app_gen_cookie_cb=0; 1583 ret->app_gen_cookie_cb=0;
1469 ret->app_verify_cookie_cb=0; 1584 ret->app_verify_cookie_cb=0;
1470 1585
1471 ret->sessions=lh_new(LHASH_HASH_FN(SSL_SESSION_hash), 1586 ret->sessions=lh_SSL_SESSION_new();
1472 LHASH_COMP_FN(SSL_SESSION_cmp));
1473 if (ret->sessions == NULL) goto err; 1587 if (ret->sessions == NULL) goto err;
1474 ret->cert_store=X509_STORE_new(); 1588 ret->cert_store=X509_STORE_new();
1475 if (ret->cert_store == NULL) goto err; 1589 if (ret->cert_store == NULL) goto err;
1476 1590
1477 ssl_create_cipher_list(ret->method, 1591 ssl_create_cipher_list(ret->method,
1478 &ret->cipher_list,&ret->cipher_list_by_id, 1592 &ret->cipher_list,&ret->cipher_list_by_id,
1479 SSL_DEFAULT_CIPHER_LIST); 1593 meth->version == SSL2_VERSION ? "SSLv2" : SSL_DEFAULT_CIPHER_LIST);
1480 if (ret->cipher_list == NULL 1594 if (ret->cipher_list == NULL
1481 || sk_SSL_CIPHER_num(ret->cipher_list) <= 0) 1595 || sk_SSL_CIPHER_num(ret->cipher_list) <= 0)
1482 { 1596 {
@@ -1512,6 +1626,8 @@ SSL_CTX *SSL_CTX_new(SSL_METHOD *meth)
1512 ret->extra_certs=NULL; 1626 ret->extra_certs=NULL;
1513 ret->comp_methods=SSL_COMP_get_compression_methods(); 1627 ret->comp_methods=SSL_COMP_get_compression_methods();
1514 1628
1629 ret->max_send_fragment = SSL3_RT_MAX_PLAIN_LENGTH;
1630
1515#ifndef OPENSSL_NO_TLSEXT 1631#ifndef OPENSSL_NO_TLSEXT
1516 ret->tlsext_servername_callback = 0; 1632 ret->tlsext_servername_callback = 0;
1517 ret->tlsext_servername_arg = NULL; 1633 ret->tlsext_servername_arg = NULL;
@@ -1525,7 +1641,29 @@ SSL_CTX *SSL_CTX_new(SSL_METHOD *meth)
1525 ret->tlsext_status_arg = NULL; 1641 ret->tlsext_status_arg = NULL;
1526 1642
1527#endif 1643#endif
1528 1644#ifndef OPENSSL_NO_PSK
1645 ret->psk_identity_hint=NULL;
1646 ret->psk_client_callback=NULL;
1647 ret->psk_server_callback=NULL;
1648#endif
1649#ifndef OPENSSL_NO_BUF_FREELISTS
1650 ret->freelist_max_len = SSL_MAX_BUF_FREELIST_LEN_DEFAULT;
1651 ret->rbuf_freelist = OPENSSL_malloc(sizeof(SSL3_BUF_FREELIST));
1652 if (!ret->rbuf_freelist)
1653 goto err;
1654 ret->rbuf_freelist->chunklen = 0;
1655 ret->rbuf_freelist->len = 0;
1656 ret->rbuf_freelist->head = NULL;
1657 ret->wbuf_freelist = OPENSSL_malloc(sizeof(SSL3_BUF_FREELIST));
1658 if (!ret->wbuf_freelist)
1659 {
1660 OPENSSL_free(ret->rbuf_freelist);
1661 goto err;
1662 }
1663 ret->wbuf_freelist->chunklen = 0;
1664 ret->wbuf_freelist->len = 0;
1665 ret->wbuf_freelist->head = NULL;
1666#endif
1529#ifndef OPENSSL_NO_ENGINE 1667#ifndef OPENSSL_NO_ENGINE
1530 ret->client_cert_engine = NULL; 1668 ret->client_cert_engine = NULL;
1531#ifdef OPENSSL_SSL_CLIENT_ENGINE_AUTO 1669#ifdef OPENSSL_SSL_CLIENT_ENGINE_AUTO
@@ -1546,6 +1684,10 @@ SSL_CTX *SSL_CTX_new(SSL_METHOD *meth)
1546 } 1684 }
1547#endif 1685#endif
1548#endif 1686#endif
1687 /* Default is to connect to non-RI servers. When RI is more widely
1688 * deployed might change this.
1689 */
1690 ret->options |= SSL_OP_LEGACY_SERVER_CONNECT;
1549 1691
1550 return(ret); 1692 return(ret);
1551err: 1693err:
@@ -1560,6 +1702,20 @@ static void SSL_COMP_free(SSL_COMP *comp)
1560 { OPENSSL_free(comp); } 1702 { OPENSSL_free(comp); }
1561#endif 1703#endif
1562 1704
1705#ifndef OPENSSL_NO_BUF_FREELISTS
1706static void
1707ssl_buf_freelist_free(SSL3_BUF_FREELIST *list)
1708 {
1709 SSL3_BUF_FREELIST_ENTRY *ent, *next;
1710 for (ent = list->head; ent; ent = next)
1711 {
1712 next = ent->next;
1713 OPENSSL_free(ent);
1714 }
1715 OPENSSL_free(list);
1716 }
1717#endif
1718
1563void SSL_CTX_free(SSL_CTX *a) 1719void SSL_CTX_free(SSL_CTX *a)
1564 { 1720 {
1565 int i; 1721 int i;
@@ -1597,7 +1753,7 @@ void SSL_CTX_free(SSL_CTX *a)
1597 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_CTX, a, &a->ex_data); 1753 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_SSL_CTX, a, &a->ex_data);
1598 1754
1599 if (a->sessions != NULL) 1755 if (a->sessions != NULL)
1600 lh_free(a->sessions); 1756 lh_SSL_SESSION_free(a->sessions);
1601 1757
1602 if (a->cert_store != NULL) 1758 if (a->cert_store != NULL)
1603 X509_STORE_free(a->cert_store); 1759 X509_STORE_free(a->cert_store);
@@ -1617,10 +1773,23 @@ void SSL_CTX_free(SSL_CTX *a)
1617#else 1773#else
1618 a->comp_methods = NULL; 1774 a->comp_methods = NULL;
1619#endif 1775#endif
1776
1777#ifndef OPENSSL_NO_PSK
1778 if (a->psk_identity_hint)
1779 OPENSSL_free(a->psk_identity_hint);
1780#endif
1620#ifndef OPENSSL_NO_ENGINE 1781#ifndef OPENSSL_NO_ENGINE
1621 if (a->client_cert_engine) 1782 if (a->client_cert_engine)
1622 ENGINE_finish(a->client_cert_engine); 1783 ENGINE_finish(a->client_cert_engine);
1623#endif 1784#endif
1785
1786#ifndef OPENSSL_NO_BUF_FREELISTS
1787 if (a->wbuf_freelist)
1788 ssl_buf_freelist_free(a->wbuf_freelist);
1789 if (a->rbuf_freelist)
1790 ssl_buf_freelist_free(a->rbuf_freelist);
1791#endif
1792
1624 OPENSSL_free(a); 1793 OPENSSL_free(a);
1625 } 1794 }
1626 1795
@@ -1651,13 +1820,13 @@ void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth)
1651 X509_VERIFY_PARAM_set_depth(ctx->param, depth); 1820 X509_VERIFY_PARAM_set_depth(ctx->param, depth);
1652 } 1821 }
1653 1822
1654void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher) 1823void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher)
1655 { 1824 {
1656 CERT_PKEY *cpk; 1825 CERT_PKEY *cpk;
1657 int rsa_enc,rsa_tmp,rsa_sign,dh_tmp,dh_rsa,dh_dsa,dsa_sign; 1826 int rsa_enc,rsa_tmp,rsa_sign,dh_tmp,dh_rsa,dh_dsa,dsa_sign;
1658 int rsa_enc_export,dh_rsa_export,dh_dsa_export; 1827 int rsa_enc_export,dh_rsa_export,dh_dsa_export;
1659 int rsa_tmp_export,dh_tmp_export,kl; 1828 int rsa_tmp_export,dh_tmp_export,kl;
1660 unsigned long mask,emask; 1829 unsigned long mask_k,mask_a,emask_k,emask_a;
1661 int have_ecc_cert, ecdh_ok, ecdsa_ok, ecc_pkey_size; 1830 int have_ecc_cert, ecdh_ok, ecdsa_ok, ecc_pkey_size;
1662#ifndef OPENSSL_NO_ECDH 1831#ifndef OPENSSL_NO_ECDH
1663 int have_ecdh_tmp; 1832 int have_ecdh_tmp;
@@ -1704,60 +1873,77 @@ void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher)
1704 dh_dsa_export=(dh_dsa && EVP_PKEY_size(cpk->privatekey)*8 <= kl); 1873 dh_dsa_export=(dh_dsa && EVP_PKEY_size(cpk->privatekey)*8 <= kl);
1705 cpk= &(c->pkeys[SSL_PKEY_ECC]); 1874 cpk= &(c->pkeys[SSL_PKEY_ECC]);
1706 have_ecc_cert= (cpk->x509 != NULL && cpk->privatekey != NULL); 1875 have_ecc_cert= (cpk->x509 != NULL && cpk->privatekey != NULL);
1707 mask=0; 1876 mask_k=0;
1708 emask=0; 1877 mask_a=0;
1878 emask_k=0;
1879 emask_a=0;
1880
1881
1709 1882
1710#ifdef CIPHER_DEBUG 1883#ifdef CIPHER_DEBUG
1711 printf("rt=%d rte=%d dht=%d re=%d ree=%d rs=%d ds=%d dhr=%d dhd=%d\n", 1884 printf("rt=%d rte=%d dht=%d ecdht=%d re=%d ree=%d rs=%d ds=%d dhr=%d dhd=%d\n",
1712 rsa_tmp,rsa_tmp_export,dh_tmp, 1885 rsa_tmp,rsa_tmp_export,dh_tmp,have_ecdh_tmp,
1713 rsa_enc,rsa_enc_export,rsa_sign,dsa_sign,dh_rsa,dh_dsa); 1886 rsa_enc,rsa_enc_export,rsa_sign,dsa_sign,dh_rsa,dh_dsa);
1714#endif 1887#endif
1888
1889 cpk = &(c->pkeys[SSL_PKEY_GOST01]);
1890 if (cpk->x509 != NULL && cpk->privatekey !=NULL) {
1891 mask_k |= SSL_kGOST;
1892 mask_a |= SSL_aGOST01;
1893 }
1894 cpk = &(c->pkeys[SSL_PKEY_GOST94]);
1895 if (cpk->x509 != NULL && cpk->privatekey !=NULL) {
1896 mask_k |= SSL_kGOST;
1897 mask_a |= SSL_aGOST94;
1898 }
1715 1899
1716 if (rsa_enc || (rsa_tmp && rsa_sign)) 1900 if (rsa_enc || (rsa_tmp && rsa_sign))
1717 mask|=SSL_kRSA; 1901 mask_k|=SSL_kRSA;
1718 if (rsa_enc_export || (rsa_tmp_export && (rsa_sign || rsa_enc))) 1902 if (rsa_enc_export || (rsa_tmp_export && (rsa_sign || rsa_enc)))
1719 emask|=SSL_kRSA; 1903 emask_k|=SSL_kRSA;
1720 1904
1721#if 0 1905#if 0
1722 /* The match needs to be both kEDH and aRSA or aDSA, so don't worry */ 1906 /* The match needs to be both kEDH and aRSA or aDSA, so don't worry */
1723 if ( (dh_tmp || dh_rsa || dh_dsa) && 1907 if ( (dh_tmp || dh_rsa || dh_dsa) &&
1724 (rsa_enc || rsa_sign || dsa_sign)) 1908 (rsa_enc || rsa_sign || dsa_sign))
1725 mask|=SSL_kEDH; 1909 mask_k|=SSL_kEDH;
1726 if ((dh_tmp_export || dh_rsa_export || dh_dsa_export) && 1910 if ((dh_tmp_export || dh_rsa_export || dh_dsa_export) &&
1727 (rsa_enc || rsa_sign || dsa_sign)) 1911 (rsa_enc || rsa_sign || dsa_sign))
1728 emask|=SSL_kEDH; 1912 emask_k|=SSL_kEDH;
1729#endif 1913#endif
1730 1914
1731 if (dh_tmp_export) 1915 if (dh_tmp_export)
1732 emask|=SSL_kEDH; 1916 emask_k|=SSL_kEDH;
1733 1917
1734 if (dh_tmp) 1918 if (dh_tmp)
1735 mask|=SSL_kEDH; 1919 mask_k|=SSL_kEDH;
1736 1920
1737 if (dh_rsa) mask|=SSL_kDHr; 1921 if (dh_rsa) mask_k|=SSL_kDHr;
1738 if (dh_rsa_export) emask|=SSL_kDHr; 1922 if (dh_rsa_export) emask_k|=SSL_kDHr;
1739 1923
1740 if (dh_dsa) mask|=SSL_kDHd; 1924 if (dh_dsa) mask_k|=SSL_kDHd;
1741 if (dh_dsa_export) emask|=SSL_kDHd; 1925 if (dh_dsa_export) emask_k|=SSL_kDHd;
1742 1926
1743 if (rsa_enc || rsa_sign) 1927 if (rsa_enc || rsa_sign)
1744 { 1928 {
1745 mask|=SSL_aRSA; 1929 mask_a|=SSL_aRSA;
1746 emask|=SSL_aRSA; 1930 emask_a|=SSL_aRSA;
1747 } 1931 }
1748 1932
1749 if (dsa_sign) 1933 if (dsa_sign)
1750 { 1934 {
1751 mask|=SSL_aDSS; 1935 mask_a|=SSL_aDSS;
1752 emask|=SSL_aDSS; 1936 emask_a|=SSL_aDSS;
1753 } 1937 }
1754 1938
1755 mask|=SSL_aNULL; 1939 mask_a|=SSL_aNULL;
1756 emask|=SSL_aNULL; 1940 emask_a|=SSL_aNULL;
1757 1941
1758#ifndef OPENSSL_NO_KRB5 1942#ifndef OPENSSL_NO_KRB5
1759 mask|=SSL_kKRB5|SSL_aKRB5; 1943 mask_k|=SSL_kKRB5;
1760 emask|=SSL_kKRB5|SSL_aKRB5; 1944 mask_a|=SSL_aKRB5;
1945 emask_k|=SSL_kKRB5;
1946 emask_a|=SSL_aKRB5;
1761#endif 1947#endif
1762 1948
1763 /* An ECC certificate may be usable for ECDH and/or 1949 /* An ECC certificate may be usable for ECDH and/or
@@ -1765,7 +1951,7 @@ void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher)
1765 */ 1951 */
1766 if (have_ecc_cert) 1952 if (have_ecc_cert)
1767 { 1953 {
1768 /* This call populates extension flags (ex_flags) */ 1954 /* This call populates extension flags (ex_flags) */
1769 x = (c->pkeys[SSL_PKEY_ECC]).x509; 1955 x = (c->pkeys[SSL_PKEY_ECC]).x509;
1770 X509_check_purpose(x, -1, 0); 1956 X509_check_purpose(x, -1, 0);
1771 ecdh_ok = (x->ex_flags & EXFLAG_KUSAGE) ? 1957 ecdh_ok = (x->ex_flags & EXFLAG_KUSAGE) ?
@@ -1773,7 +1959,7 @@ void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher)
1773 ecdsa_ok = (x->ex_flags & EXFLAG_KUSAGE) ? 1959 ecdsa_ok = (x->ex_flags & EXFLAG_KUSAGE) ?
1774 (x->ex_kusage & X509v3_KU_DIGITAL_SIGNATURE) : 1; 1960 (x->ex_kusage & X509v3_KU_DIGITAL_SIGNATURE) : 1;
1775 ecc_pkey = X509_get_pubkey(x); 1961 ecc_pkey = X509_get_pubkey(x);
1776 ecc_pkey_size = (ecc_pkey != NULL) ? 1962 ecc_pkey_size = (ecc_pkey != NULL) ?
1777 EVP_PKEY_bits(ecc_pkey) : 0; 1963 EVP_PKEY_bits(ecc_pkey) : 0;
1778 EVP_PKEY_free(ecc_pkey); 1964 EVP_PKEY_free(ecc_pkey);
1779 if ((x->sig_alg) && (x->sig_alg->algorithm)) 1965 if ((x->sig_alg) && (x->sig_alg->algorithm))
@@ -1781,27 +1967,41 @@ void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher)
1781#ifndef OPENSSL_NO_ECDH 1967#ifndef OPENSSL_NO_ECDH
1782 if (ecdh_ok) 1968 if (ecdh_ok)
1783 { 1969 {
1784 if ((signature_nid == NID_md5WithRSAEncryption) || 1970 const char *sig = OBJ_nid2ln(signature_nid);
1785 (signature_nid == NID_md4WithRSAEncryption) || 1971 if (sig == NULL)
1786 (signature_nid == NID_md2WithRSAEncryption)) 1972 {
1973 ERR_clear_error();
1974 sig = "unknown";
1975 }
1976
1977 if (strstr(sig, "WithRSA"))
1787 { 1978 {
1788 mask|=SSL_kECDH|SSL_aRSA; 1979 mask_k|=SSL_kECDHr;
1980 mask_a|=SSL_aECDH;
1789 if (ecc_pkey_size <= 163) 1981 if (ecc_pkey_size <= 163)
1790 emask|=SSL_kECDH|SSL_aRSA; 1982 {
1983 emask_k|=SSL_kECDHr;
1984 emask_a|=SSL_aECDH;
1985 }
1791 } 1986 }
1987
1792 if (signature_nid == NID_ecdsa_with_SHA1) 1988 if (signature_nid == NID_ecdsa_with_SHA1)
1793 { 1989 {
1794 mask|=SSL_kECDH|SSL_aECDSA; 1990 mask_k|=SSL_kECDHe;
1991 mask_a|=SSL_aECDH;
1795 if (ecc_pkey_size <= 163) 1992 if (ecc_pkey_size <= 163)
1796 emask|=SSL_kECDH|SSL_aECDSA; 1993 {
1994 emask_k|=SSL_kECDHe;
1995 emask_a|=SSL_aECDH;
1996 }
1797 } 1997 }
1798 } 1998 }
1799#endif 1999#endif
1800#ifndef OPENSSL_NO_ECDSA 2000#ifndef OPENSSL_NO_ECDSA
1801 if (ecdsa_ok) 2001 if (ecdsa_ok)
1802 { 2002 {
1803 mask|=SSL_aECDSA; 2003 mask_a|=SSL_aECDSA;
1804 emask|=SSL_aECDSA; 2004 emask_a|=SSL_aECDSA;
1805 } 2005 }
1806#endif 2006#endif
1807 } 2007 }
@@ -1809,12 +2009,22 @@ void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher)
1809#ifndef OPENSSL_NO_ECDH 2009#ifndef OPENSSL_NO_ECDH
1810 if (have_ecdh_tmp) 2010 if (have_ecdh_tmp)
1811 { 2011 {
1812 mask|=SSL_kECDHE; 2012 mask_k|=SSL_kEECDH;
1813 emask|=SSL_kECDHE; 2013 emask_k|=SSL_kEECDH;
1814 } 2014 }
1815#endif 2015#endif
1816 c->mask=mask; 2016
1817 c->export_mask=emask; 2017#ifndef OPENSSL_NO_PSK
2018 mask_k |= SSL_kPSK;
2019 mask_a |= SSL_aPSK;
2020 emask_k |= SSL_kPSK;
2021 emask_a |= SSL_aPSK;
2022#endif
2023
2024 c->mask_k=mask_k;
2025 c->mask_a=mask_a;
2026 c->export_mask_k=emask_k;
2027 c->export_mask_a=emask_a;
1818 c->valid=1; 2028 c->valid=1;
1819 } 2029 }
1820 2030
@@ -1822,13 +2032,18 @@ void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher)
1822#define ku_reject(x, usage) \ 2032#define ku_reject(x, usage) \
1823 (((x)->ex_flags & EXFLAG_KUSAGE) && !((x)->ex_kusage & (usage))) 2033 (((x)->ex_flags & EXFLAG_KUSAGE) && !((x)->ex_kusage & (usage)))
1824 2034
1825int check_srvr_ecc_cert_and_alg(X509 *x, SSL_CIPHER *cs) 2035#ifndef OPENSSL_NO_EC
2036
2037int ssl_check_srvr_ecc_cert_and_alg(X509 *x, const SSL_CIPHER *cs)
1826 { 2038 {
1827 unsigned long alg = cs->algorithms; 2039 unsigned long alg_k, alg_a;
1828 EVP_PKEY *pkey = NULL; 2040 EVP_PKEY *pkey = NULL;
1829 int keysize = 0; 2041 int keysize = 0;
1830 int signature_nid = 0; 2042 int signature_nid = 0;
1831 2043
2044 alg_k = cs->algorithm_mkey;
2045 alg_a = cs->algorithm_auth;
2046
1832 if (SSL_C_IS_EXPORT(cs)) 2047 if (SSL_C_IS_EXPORT(cs))
1833 { 2048 {
1834 /* ECDH key length in export ciphers must be <= 163 bits */ 2049 /* ECDH key length in export ciphers must be <= 163 bits */
@@ -1843,37 +2058,46 @@ int check_srvr_ecc_cert_and_alg(X509 *x, SSL_CIPHER *cs)
1843 X509_check_purpose(x, -1, 0); 2058 X509_check_purpose(x, -1, 0);
1844 if ((x->sig_alg) && (x->sig_alg->algorithm)) 2059 if ((x->sig_alg) && (x->sig_alg->algorithm))
1845 signature_nid = OBJ_obj2nid(x->sig_alg->algorithm); 2060 signature_nid = OBJ_obj2nid(x->sig_alg->algorithm);
1846 if (alg & SSL_kECDH) 2061 if (alg_k & SSL_kECDHe || alg_k & SSL_kECDHr)
1847 { 2062 {
1848 /* key usage, if present, must allow key agreement */ 2063 /* key usage, if present, must allow key agreement */
1849 if (ku_reject(x, X509v3_KU_KEY_AGREEMENT)) 2064 if (ku_reject(x, X509v3_KU_KEY_AGREEMENT))
1850 { 2065 {
2066 SSLerr(SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG, SSL_R_ECC_CERT_NOT_FOR_KEY_AGREEMENT);
1851 return 0; 2067 return 0;
1852 } 2068 }
1853 if (alg & SSL_aECDSA) 2069 if (alg_k & SSL_kECDHe)
1854 { 2070 {
1855 /* signature alg must be ECDSA */ 2071 /* signature alg must be ECDSA */
1856 if (signature_nid != NID_ecdsa_with_SHA1) 2072 if (signature_nid != NID_ecdsa_with_SHA1)
1857 { 2073 {
2074 SSLerr(SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG, SSL_R_ECC_CERT_SHOULD_HAVE_SHA1_SIGNATURE);
1858 return 0; 2075 return 0;
1859 } 2076 }
1860 } 2077 }
1861 if (alg & SSL_aRSA) 2078 if (alg_k & SSL_kECDHr)
1862 { 2079 {
1863 /* signature alg must be RSA */ 2080 /* signature alg must be RSA */
1864 if ((signature_nid != NID_md5WithRSAEncryption) && 2081
1865 (signature_nid != NID_md4WithRSAEncryption) && 2082 const char *sig = OBJ_nid2ln(signature_nid);
1866 (signature_nid != NID_md2WithRSAEncryption)) 2083 if (sig == NULL)
1867 { 2084 {
2085 ERR_clear_error();
2086 sig = "unknown";
2087 }
2088 if (strstr(sig, "WithRSA") == NULL)
2089 {
2090 SSLerr(SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG, SSL_R_ECC_CERT_SHOULD_HAVE_RSA_SIGNATURE);
1868 return 0; 2091 return 0;
1869 } 2092 }
1870 } 2093 }
1871 } 2094 }
1872 else if (alg & SSL_aECDSA) 2095 if (alg_a & SSL_aECDSA)
1873 { 2096 {
1874 /* key usage, if present, must allow signing */ 2097 /* key usage, if present, must allow signing */
1875 if (ku_reject(x, X509v3_KU_DIGITAL_SIGNATURE)) 2098 if (ku_reject(x, X509v3_KU_DIGITAL_SIGNATURE))
1876 { 2099 {
2100 SSLerr(SSL_F_SSL_CHECK_SRVR_ECC_CERT_AND_ALG, SSL_R_ECC_CERT_NOT_FOR_SIGNING);
1877 return 0; 2101 return 0;
1878 } 2102 }
1879 } 2103 }
@@ -1881,58 +2105,74 @@ int check_srvr_ecc_cert_and_alg(X509 *x, SSL_CIPHER *cs)
1881 return 1; /* all checks are ok */ 2105 return 1; /* all checks are ok */
1882 } 2106 }
1883 2107
2108#endif
2109
1884/* THIS NEEDS CLEANING UP */ 2110/* THIS NEEDS CLEANING UP */
1885X509 *ssl_get_server_send_cert(SSL *s) 2111X509 *ssl_get_server_send_cert(SSL *s)
1886 { 2112 {
1887 unsigned long alg,mask,kalg; 2113 unsigned long alg_k,alg_a,mask_k,mask_a;
1888 CERT *c; 2114 CERT *c;
1889 int i,is_export; 2115 int i,is_export;
1890 2116
1891 c=s->cert; 2117 c=s->cert;
1892 ssl_set_cert_masks(c, s->s3->tmp.new_cipher); 2118 ssl_set_cert_masks(c, s->s3->tmp.new_cipher);
1893 alg=s->s3->tmp.new_cipher->algorithms;
1894 is_export=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher); 2119 is_export=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher);
1895 mask=is_export?c->export_mask:c->mask; 2120 if (is_export)
1896 kalg=alg&(SSL_MKEY_MASK|SSL_AUTH_MASK); 2121 {
2122 mask_k = c->export_mask_k;
2123 mask_a = c->export_mask_a;
2124 }
2125 else
2126 {
2127 mask_k = c->mask_k;
2128 mask_a = c->mask_a;
2129 }
2130
2131 alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
2132 alg_a = s->s3->tmp.new_cipher->algorithm_auth;
1897 2133
1898 if (kalg & SSL_kECDH) 2134 if (alg_k & (SSL_kECDHr|SSL_kECDHe))
1899 { 2135 {
1900 /* we don't need to look at SSL_kECDHE 2136 /* we don't need to look at SSL_kEECDH
1901 * since no certificate is needed for 2137 * since no certificate is needed for
1902 * anon ECDH and for authenticated 2138 * anon ECDH and for authenticated
1903 * ECDHE, the check for the auth 2139 * EECDH, the check for the auth
1904 * algorithm will set i correctly 2140 * algorithm will set i correctly
1905 * NOTE: For ECDH-RSA, we need an ECC 2141 * NOTE: For ECDH-RSA, we need an ECC
1906 * not an RSA cert but for ECDHE-RSA 2142 * not an RSA cert but for EECDH-RSA
1907 * we need an RSA cert. Placing the 2143 * we need an RSA cert. Placing the
1908 * checks for SSL_kECDH before RSA 2144 * checks for SSL_kECDH before RSA
1909 * checks ensures the correct cert is chosen. 2145 * checks ensures the correct cert is chosen.
1910 */ 2146 */
1911 i=SSL_PKEY_ECC; 2147 i=SSL_PKEY_ECC;
1912 } 2148 }
1913 else if (kalg & SSL_aECDSA) 2149 else if (alg_a & SSL_aECDSA)
1914 { 2150 {
1915 i=SSL_PKEY_ECC; 2151 i=SSL_PKEY_ECC;
1916 } 2152 }
1917 else if (kalg & SSL_kDHr) 2153 else if (alg_k & SSL_kDHr)
1918 i=SSL_PKEY_DH_RSA; 2154 i=SSL_PKEY_DH_RSA;
1919 else if (kalg & SSL_kDHd) 2155 else if (alg_k & SSL_kDHd)
1920 i=SSL_PKEY_DH_DSA; 2156 i=SSL_PKEY_DH_DSA;
1921 else if (kalg & SSL_aDSS) 2157 else if (alg_a & SSL_aDSS)
1922 i=SSL_PKEY_DSA_SIGN; 2158 i=SSL_PKEY_DSA_SIGN;
1923 else if (kalg & SSL_aRSA) 2159 else if (alg_a & SSL_aRSA)
1924 { 2160 {
1925 if (c->pkeys[SSL_PKEY_RSA_ENC].x509 == NULL) 2161 if (c->pkeys[SSL_PKEY_RSA_ENC].x509 == NULL)
1926 i=SSL_PKEY_RSA_SIGN; 2162 i=SSL_PKEY_RSA_SIGN;
1927 else 2163 else
1928 i=SSL_PKEY_RSA_ENC; 2164 i=SSL_PKEY_RSA_ENC;
1929 } 2165 }
1930 else if (kalg & SSL_aKRB5) 2166 else if (alg_a & SSL_aKRB5)
1931 { 2167 {
1932 /* VRS something else here? */ 2168 /* VRS something else here? */
1933 return(NULL); 2169 return(NULL);
1934 } 2170 }
1935 else /* if (kalg & SSL_aNULL) */ 2171 else if (alg_a & SSL_aGOST94)
2172 i=SSL_PKEY_GOST94;
2173 else if (alg_a & SSL_aGOST01)
2174 i=SSL_PKEY_GOST01;
2175 else /* if (alg_a & SSL_aNULL) */
1936 { 2176 {
1937 SSLerr(SSL_F_SSL_GET_SERVER_SEND_CERT,ERR_R_INTERNAL_ERROR); 2177 SSLerr(SSL_F_SSL_GET_SERVER_SEND_CERT,ERR_R_INTERNAL_ERROR);
1938 return(NULL); 2178 return(NULL);
@@ -1942,18 +2182,18 @@ X509 *ssl_get_server_send_cert(SSL *s)
1942 return(c->pkeys[i].x509); 2182 return(c->pkeys[i].x509);
1943 } 2183 }
1944 2184
1945EVP_PKEY *ssl_get_sign_pkey(SSL *s,SSL_CIPHER *cipher) 2185EVP_PKEY *ssl_get_sign_pkey(SSL *s,const SSL_CIPHER *cipher)
1946 { 2186 {
1947 unsigned long alg; 2187 unsigned long alg_a;
1948 CERT *c; 2188 CERT *c;
1949 2189
1950 alg=cipher->algorithms; 2190 alg_a = cipher->algorithm_auth;
1951 c=s->cert; 2191 c=s->cert;
1952 2192
1953 if ((alg & SSL_aDSS) && 2193 if ((alg_a & SSL_aDSS) &&
1954 (c->pkeys[SSL_PKEY_DSA_SIGN].privatekey != NULL)) 2194 (c->pkeys[SSL_PKEY_DSA_SIGN].privatekey != NULL))
1955 return(c->pkeys[SSL_PKEY_DSA_SIGN].privatekey); 2195 return(c->pkeys[SSL_PKEY_DSA_SIGN].privatekey);
1956 else if (alg & SSL_aRSA) 2196 else if (alg_a & SSL_aRSA)
1957 { 2197 {
1958 if (c->pkeys[SSL_PKEY_RSA_SIGN].privatekey != NULL) 2198 if (c->pkeys[SSL_PKEY_RSA_SIGN].privatekey != NULL)
1959 return(c->pkeys[SSL_PKEY_RSA_SIGN].privatekey); 2199 return(c->pkeys[SSL_PKEY_RSA_SIGN].privatekey);
@@ -1962,10 +2202,10 @@ EVP_PKEY *ssl_get_sign_pkey(SSL *s,SSL_CIPHER *cipher)
1962 else 2202 else
1963 return(NULL); 2203 return(NULL);
1964 } 2204 }
1965 else if ((alg & SSL_aECDSA) && 2205 else if ((alg_a & SSL_aECDSA) &&
1966 (c->pkeys[SSL_PKEY_ECC].privatekey != NULL)) 2206 (c->pkeys[SSL_PKEY_ECC].privatekey != NULL))
1967 return(c->pkeys[SSL_PKEY_ECC].privatekey); 2207 return(c->pkeys[SSL_PKEY_ECC].privatekey);
1968 else /* if (alg & SSL_aNULL) */ 2208 else /* if (alg_a & SSL_aNULL) */
1969 { 2209 {
1970 SSLerr(SSL_F_SSL_GET_SIGN_PKEY,ERR_R_INTERNAL_ERROR); 2210 SSLerr(SSL_F_SSL_GET_SIGN_PKEY,ERR_R_INTERNAL_ERROR);
1971 return(NULL); 2211 return(NULL);
@@ -1980,14 +2220,14 @@ void ssl_update_cache(SSL *s,int mode)
1980 * and it would be rather hard to do anyway :-) */ 2220 * and it would be rather hard to do anyway :-) */
1981 if (s->session->session_id_length == 0) return; 2221 if (s->session->session_id_length == 0) return;
1982 2222
1983 i=s->ctx->session_cache_mode; 2223 i=s->session_ctx->session_cache_mode;
1984 if ((i & mode) && (!s->hit) 2224 if ((i & mode) && (!s->hit)
1985 && ((i & SSL_SESS_CACHE_NO_INTERNAL_STORE) 2225 && ((i & SSL_SESS_CACHE_NO_INTERNAL_STORE)
1986 || SSL_CTX_add_session(s->ctx,s->session)) 2226 || SSL_CTX_add_session(s->session_ctx,s->session))
1987 && (s->ctx->new_session_cb != NULL)) 2227 && (s->session_ctx->new_session_cb != NULL))
1988 { 2228 {
1989 CRYPTO_add(&s->session->references,1,CRYPTO_LOCK_SSL_SESSION); 2229 CRYPTO_add(&s->session->references,1,CRYPTO_LOCK_SSL_SESSION);
1990 if (!s->ctx->new_session_cb(s,s->session)) 2230 if (!s->session_ctx->new_session_cb(s,s->session))
1991 SSL_SESSION_free(s->session); 2231 SSL_SESSION_free(s->session);
1992 } 2232 }
1993 2233
@@ -1996,20 +2236,20 @@ void ssl_update_cache(SSL *s,int mode)
1996 ((i & mode) == mode)) 2236 ((i & mode) == mode))
1997 { 2237 {
1998 if ( (((mode & SSL_SESS_CACHE_CLIENT) 2238 if ( (((mode & SSL_SESS_CACHE_CLIENT)
1999 ?s->ctx->stats.sess_connect_good 2239 ?s->session_ctx->stats.sess_connect_good
2000 :s->ctx->stats.sess_accept_good) & 0xff) == 0xff) 2240 :s->session_ctx->stats.sess_accept_good) & 0xff) == 0xff)
2001 { 2241 {
2002 SSL_CTX_flush_sessions(s->ctx,(unsigned long)time(NULL)); 2242 SSL_CTX_flush_sessions(s->session_ctx,(unsigned long)time(NULL));
2003 } 2243 }
2004 } 2244 }
2005 } 2245 }
2006 2246
2007SSL_METHOD *SSL_get_ssl_method(SSL *s) 2247const SSL_METHOD *SSL_get_ssl_method(SSL *s)
2008 { 2248 {
2009 return(s->method); 2249 return(s->method);
2010 } 2250 }
2011 2251
2012int SSL_set_ssl_method(SSL *s,SSL_METHOD *meth) 2252int SSL_set_ssl_method(SSL *s, const SSL_METHOD *meth)
2013 { 2253 {
2014 int conn= -1; 2254 int conn= -1;
2015 int ret=1; 2255 int ret=1;
@@ -2152,6 +2392,8 @@ void SSL_set_accept_state(SSL *s)
2152 s->handshake_func=s->method->ssl_accept; 2392 s->handshake_func=s->method->ssl_accept;
2153 /* clear the current cipher */ 2393 /* clear the current cipher */
2154 ssl_clear_cipher_ctx(s); 2394 ssl_clear_cipher_ctx(s);
2395 ssl_clear_hash_ctx(&s->read_hash);
2396 ssl_clear_hash_ctx(&s->write_hash);
2155 } 2397 }
2156 2398
2157void SSL_set_connect_state(SSL *s) 2399void SSL_set_connect_state(SSL *s)
@@ -2162,6 +2404,8 @@ void SSL_set_connect_state(SSL *s)
2162 s->handshake_func=s->method->ssl_connect; 2404 s->handshake_func=s->method->ssl_connect;
2163 /* clear the current cipher */ 2405 /* clear the current cipher */
2164 ssl_clear_cipher_ctx(s); 2406 ssl_clear_cipher_ctx(s);
2407 ssl_clear_hash_ctx(&s->read_hash);
2408 ssl_clear_hash_ctx(&s->write_hash);
2165 } 2409 }
2166 2410
2167int ssl_undefined_function(SSL *s) 2411int ssl_undefined_function(SSL *s)
@@ -2206,7 +2450,7 @@ SSL *SSL_dup(SSL *s)
2206 X509_NAME *xn; 2450 X509_NAME *xn;
2207 SSL *ret; 2451 SSL *ret;
2208 int i; 2452 int i;
2209 2453
2210 if ((ret=SSL_new(SSL_get_SSL_CTX(s))) == NULL) 2454 if ((ret=SSL_new(SSL_get_SSL_CTX(s))) == NULL)
2211 return(NULL); 2455 return(NULL);
2212 2456
@@ -2376,7 +2620,7 @@ EVP_PKEY *SSL_get_privatekey(SSL *s)
2376 return(NULL); 2620 return(NULL);
2377 } 2621 }
2378 2622
2379SSL_CIPHER *SSL_get_current_cipher(const SSL *s) 2623const SSL_CIPHER *SSL_get_current_cipher(const SSL *s)
2380 { 2624 {
2381 if ((s->session != NULL) && (s->session->cipher != NULL)) 2625 if ((s->session != NULL) && (s->session->cipher != NULL))
2382 return(s->session->cipher); 2626 return(s->session->cipher);
@@ -2454,7 +2698,7 @@ void ssl_free_wbio_buffer(SSL *s)
2454 s->wbio=BIO_pop(s->wbio); 2698 s->wbio=BIO_pop(s->wbio);
2455#ifdef REF_CHECK /* not the usual REF_CHECK, but this avoids adding one more preprocessor symbol */ 2699#ifdef REF_CHECK /* not the usual REF_CHECK, but this avoids adding one more preprocessor symbol */
2456 assert(s->wbio != NULL); 2700 assert(s->wbio != NULL);
2457#endif 2701#endif
2458 } 2702 }
2459 BIO_free(s->bbio); 2703 BIO_free(s->bbio);
2460 s->bbio=NULL; 2704 s->bbio=NULL;
@@ -2539,7 +2783,7 @@ void SSL_set_info_callback(SSL *ssl,
2539 2783
2540/* One compiler (Diab DCC) doesn't like argument names in returned 2784/* One compiler (Diab DCC) doesn't like argument names in returned
2541 function pointer. */ 2785 function pointer. */
2542void (*SSL_get_info_callback(const SSL *ssl))(const SSL * /*ssl*/,int /*type*/,int /*val*/) 2786void (*SSL_get_info_callback(const SSL *ssl))(const SSL * /*ssl*/,int /*type*/,int /*val*/)
2543 { 2787 {
2544 return ssl->info_callback; 2788 return ssl->info_callback;
2545 } 2789 }
@@ -2660,13 +2904,13 @@ RSA *cb(SSL *ssl,int is_export,int keylength)
2660 2904
2661#ifndef OPENSSL_NO_DH 2905#ifndef OPENSSL_NO_DH
2662void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,DH *(*dh)(SSL *ssl,int is_export, 2906void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,DH *(*dh)(SSL *ssl,int is_export,
2663 int keylength)) 2907 int keylength))
2664 { 2908 {
2665 SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TMP_DH_CB,(void (*)(void))dh); 2909 SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TMP_DH_CB,(void (*)(void))dh);
2666 } 2910 }
2667 2911
2668void SSL_set_tmp_dh_callback(SSL *ssl,DH *(*dh)(SSL *ssl,int is_export, 2912void SSL_set_tmp_dh_callback(SSL *ssl,DH *(*dh)(SSL *ssl,int is_export,
2669 int keylength)) 2913 int keylength))
2670 { 2914 {
2671 SSL_callback_ctrl(ssl,SSL_CTRL_SET_TMP_DH_CB,(void (*)(void))dh); 2915 SSL_callback_ctrl(ssl,SSL_CTRL_SET_TMP_DH_CB,(void (*)(void))dh);
2672 } 2916 }
@@ -2674,18 +2918,109 @@ void SSL_set_tmp_dh_callback(SSL *ssl,DH *(*dh)(SSL *ssl,int is_export,
2674 2918
2675#ifndef OPENSSL_NO_ECDH 2919#ifndef OPENSSL_NO_ECDH
2676void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx,EC_KEY *(*ecdh)(SSL *ssl,int is_export, 2920void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx,EC_KEY *(*ecdh)(SSL *ssl,int is_export,
2677 int keylength)) 2921 int keylength))
2678 { 2922 {
2679 SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH_CB,(void (*)(void))ecdh); 2923 SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH_CB,(void (*)(void))ecdh);
2680 } 2924 }
2681 2925
2682void SSL_set_tmp_ecdh_callback(SSL *ssl,EC_KEY *(*ecdh)(SSL *ssl,int is_export, 2926void SSL_set_tmp_ecdh_callback(SSL *ssl,EC_KEY *(*ecdh)(SSL *ssl,int is_export,
2683 int keylength)) 2927 int keylength))
2684 { 2928 {
2685 SSL_callback_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH_CB,(void (*)(void))ecdh); 2929 SSL_callback_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH_CB,(void (*)(void))ecdh);
2686 } 2930 }
2687#endif 2931#endif
2688 2932
2933#ifndef OPENSSL_NO_PSK
2934int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint)
2935 {
2936 if (identity_hint != NULL && strlen(identity_hint) > PSK_MAX_IDENTITY_LEN)
2937 {
2938 SSLerr(SSL_F_SSL_CTX_USE_PSK_IDENTITY_HINT, SSL_R_DATA_LENGTH_TOO_LONG);
2939 return 0;
2940 }
2941 if (ctx->psk_identity_hint != NULL)
2942 OPENSSL_free(ctx->psk_identity_hint);
2943 if (identity_hint != NULL)
2944 {
2945 ctx->psk_identity_hint = BUF_strdup(identity_hint);
2946 if (ctx->psk_identity_hint == NULL)
2947 return 0;
2948 }
2949 else
2950 ctx->psk_identity_hint = NULL;
2951 return 1;
2952 }
2953
2954int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint)
2955 {
2956 if (s == NULL)
2957 return 0;
2958
2959 if (s->session == NULL)
2960 return 1; /* session not created yet, ignored */
2961
2962 if (identity_hint != NULL && strlen(identity_hint) > PSK_MAX_IDENTITY_LEN)
2963 {
2964 SSLerr(SSL_F_SSL_USE_PSK_IDENTITY_HINT, SSL_R_DATA_LENGTH_TOO_LONG);
2965 return 0;
2966 }
2967 if (s->session->psk_identity_hint != NULL)
2968 OPENSSL_free(s->session->psk_identity_hint);
2969 if (identity_hint != NULL)
2970 {
2971 s->session->psk_identity_hint = BUF_strdup(identity_hint);
2972 if (s->session->psk_identity_hint == NULL)
2973 return 0;
2974 }
2975 else
2976 s->session->psk_identity_hint = NULL;
2977 return 1;
2978 }
2979
2980const char *SSL_get_psk_identity_hint(const SSL *s)
2981 {
2982 if (s == NULL || s->session == NULL)
2983 return NULL;
2984 return(s->session->psk_identity_hint);
2985 }
2986
2987const char *SSL_get_psk_identity(const SSL *s)
2988 {
2989 if (s == NULL || s->session == NULL)
2990 return NULL;
2991 return(s->session->psk_identity);
2992 }
2993
2994void SSL_set_psk_client_callback(SSL *s,
2995 unsigned int (*cb)(SSL *ssl, const char *hint,
2996 char *identity, unsigned int max_identity_len, unsigned char *psk,
2997 unsigned int max_psk_len))
2998 {
2999 s->psk_client_callback = cb;
3000 }
3001
3002void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx,
3003 unsigned int (*cb)(SSL *ssl, const char *hint,
3004 char *identity, unsigned int max_identity_len, unsigned char *psk,
3005 unsigned int max_psk_len))
3006 {
3007 ctx->psk_client_callback = cb;
3008 }
3009
3010void SSL_set_psk_server_callback(SSL *s,
3011 unsigned int (*cb)(SSL *ssl, const char *identity,
3012 unsigned char *psk, unsigned int max_psk_len))
3013 {
3014 s->psk_server_callback = cb;
3015 }
3016
3017void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx,
3018 unsigned int (*cb)(SSL *ssl, const char *identity,
3019 unsigned char *psk, unsigned int max_psk_len))
3020 {
3021 ctx->psk_server_callback = cb;
3022 }
3023#endif
2689 3024
2690void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)) 3025void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg))
2691 { 3026 {
@@ -2696,7 +3031,25 @@ void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, int con
2696 SSL_callback_ctrl(ssl, SSL_CTRL_SET_MSG_CALLBACK, (void (*)(void))cb); 3031 SSL_callback_ctrl(ssl, SSL_CTRL_SET_MSG_CALLBACK, (void (*)(void))cb);
2697 } 3032 }
2698 3033
3034/* Allocates new EVP_MD_CTX and sets pointer to it into given pointer
3035 * vairable, freeing EVP_MD_CTX previously stored in that variable, if
3036 * any. If EVP_MD pointer is passed, initializes ctx with this md
3037 * Returns newly allocated ctx;
3038 */
3039
3040EVP_MD_CTX *ssl_replace_hash(EVP_MD_CTX **hash,const EVP_MD *md)
3041{
3042 ssl_clear_hash_ctx(hash);
3043 *hash = EVP_MD_CTX_create();
3044 if (md) EVP_DigestInit_ex(*hash,md,NULL);
3045 return *hash;
3046}
3047void ssl_clear_hash_ctx(EVP_MD_CTX **hash)
3048{
2699 3049
3050 if (*hash) EVP_MD_CTX_destroy(*hash);
3051 *hash=NULL;
3052}
2700 3053
2701#if defined(_WINDLL) && defined(OPENSSL_SYS_WIN16) 3054#if defined(_WINDLL) && defined(OPENSSL_SYS_WIN16)
2702#include "../crypto/bio/bss_file.c" 3055#include "../crypto/bio/bss_file.c"
@@ -2704,3 +3057,6 @@ void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, int con
2704 3057
2705IMPLEMENT_STACK_OF(SSL_CIPHER) 3058IMPLEMENT_STACK_OF(SSL_CIPHER)
2706IMPLEMENT_STACK_OF(SSL_COMP) 3059IMPLEMENT_STACK_OF(SSL_COMP)
3060IMPLEMENT_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER,
3061 ssl_cipher_id);
3062
diff --git a/src/lib/libssl/src/ssl/ssl_locl.h b/src/lib/libssl/src/ssl/ssl_locl.h
index ed4ddbbae6..4c78393f3f 100644
--- a/src/lib/libssl/src/ssl/ssl_locl.h
+++ b/src/lib/libssl/src/ssl/ssl_locl.h
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -113,6 +113,32 @@
113 * ECC cipher suite support in OpenSSL originally developed by 113 * ECC cipher suite support in OpenSSL originally developed by
114 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. 114 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
115 */ 115 */
116/* ====================================================================
117 * Copyright 2005 Nokia. All rights reserved.
118 *
119 * The portions of the attached software ("Contribution") is developed by
120 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
121 * license.
122 *
123 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
124 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
125 * support (see RFC 4279) to OpenSSL.
126 *
127 * No patent licenses or other rights except those expressly stated in
128 * the OpenSSL open source license shall be deemed granted or received
129 * expressly, by implication, estoppel, or otherwise.
130 *
131 * No assurances are provided by Nokia that the Contribution does not
132 * infringe the patent or other intellectual property rights of any third
133 * party or that the license provides you with all the necessary rights
134 * to make use of the Contribution.
135 *
136 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
137 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
138 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
139 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
140 * OTHERWISE.
141 */
116 142
117#ifndef HEADER_SSL_LOCL_H 143#ifndef HEADER_SSL_LOCL_H
118#define HEADER_SSL_LOCL_H 144#define HEADER_SSL_LOCL_H
@@ -251,58 +277,84 @@
251 * that the different entities within are mutually exclusive: 277 * that the different entities within are mutually exclusive:
252 * ONLY ONE BIT PER MASK CAN BE SET AT A TIME. 278 * ONLY ONE BIT PER MASK CAN BE SET AT A TIME.
253 */ 279 */
254#define SSL_MKEY_MASK 0x000000FFL 280
281/* Bits for algorithm_mkey (key exchange algorithm) */
255#define SSL_kRSA 0x00000001L /* RSA key exchange */ 282#define SSL_kRSA 0x00000001L /* RSA key exchange */
256#define SSL_kDHr 0x00000002L /* DH cert RSA CA cert */ 283#define SSL_kDHr 0x00000002L /* DH cert, RSA CA cert */ /* no such ciphersuites supported! */
257#define SSL_kDHd 0x00000004L /* DH cert DSA CA cert */ 284#define SSL_kDHd 0x00000004L /* DH cert, DSA CA cert */ /* no such ciphersuite supported! */
258#define SSL_kFZA 0x00000008L 285#define SSL_kEDH 0x00000008L /* tmp DH key no DH cert */
259#define SSL_kEDH 0x00000010L /* tmp DH key no DH cert */ 286#define SSL_kKRB5 0x00000010L /* Kerberos5 key exchange */
260#define SSL_kKRB5 0x00000020L /* Kerberos5 key exchange */ 287#define SSL_kECDHr 0x00000020L /* ECDH cert, RSA CA cert */
261#define SSL_kECDH 0x00000040L /* ECDH w/ long-term keys */ 288#define SSL_kECDHe 0x00000040L /* ECDH cert, ECDSA CA cert */
262#define SSL_kECDHE 0x00000080L /* ephemeral ECDH */ 289#define SSL_kEECDH 0x00000080L /* ephemeral ECDH */
263#define SSL_EDH (SSL_kEDH|(SSL_AUTH_MASK^SSL_aNULL)) 290#define SSL_kPSK 0x00000100L /* PSK */
264 291#define SSL_kGOST 0x00000200L /* GOST key exchange */
265#define SSL_AUTH_MASK 0x00007F00L 292
266#define SSL_aRSA 0x00000100L /* Authenticate with RSA */ 293/* Bits for algorithm_auth (server authentication) */
267#define SSL_aDSS 0x00000200L /* Authenticate with DSS */ 294#define SSL_aRSA 0x00000001L /* RSA auth */
268#define SSL_DSS SSL_aDSS 295#define SSL_aDSS 0x00000002L /* DSS auth */
269#define SSL_aFZA 0x00000400L 296#define SSL_aNULL 0x00000004L /* no auth (i.e. use ADH or AECDH) */
270#define SSL_aNULL 0x00000800L /* no Authenticate, ADH */ 297#define SSL_aDH 0x00000008L /* Fixed DH auth (kDHd or kDHr) */ /* no such ciphersuites supported! */
271#define SSL_aDH 0x00001000L /* no Authenticate, ADH */ 298#define SSL_aECDH 0x00000010L /* Fixed ECDH auth (kECDHe or kECDHr) */
272#define SSL_aKRB5 0x00002000L /* Authenticate with KRB5 */ 299#define SSL_aKRB5 0x00000020L /* KRB5 auth */
273#define SSL_aECDSA 0x00004000L /* Authenticate with ECDSA */ 300#define SSL_aECDSA 0x00000040L /* ECDSA auth*/
274 301#define SSL_aPSK 0x00000080L /* PSK auth */
275#define SSL_NULL (SSL_eNULL) 302#define SSL_aGOST94 0x00000100L /* GOST R 34.10-94 signature auth */
276#define SSL_ADH (SSL_kEDH|SSL_aNULL) 303#define SSL_aGOST01 0x00000200L /* GOST R 34.10-2001 signature auth */
277#define SSL_RSA (SSL_kRSA|SSL_aRSA) 304
278#define SSL_DH (SSL_kDHr|SSL_kDHd|SSL_kEDH) 305
279#define SSL_ECDH (SSL_kECDH|SSL_kECDHE) 306/* Bits for algorithm_enc (symmetric encryption) */
280#define SSL_FZA (SSL_aFZA|SSL_kFZA|SSL_eFZA) 307#define SSL_DES 0x00000001L
281#define SSL_KRB5 (SSL_kKRB5|SSL_aKRB5) 308#define SSL_3DES 0x00000002L
282 309#define SSL_RC4 0x00000004L
283#define SSL_ENC_MASK 0x1C3F8000L 310#define SSL_RC2 0x00000008L
284#define SSL_DES 0x00008000L 311#define SSL_IDEA 0x00000010L
285#define SSL_3DES 0x00010000L 312#define SSL_eNULL 0x00000020L
286#define SSL_RC4 0x00020000L 313#define SSL_AES128 0x00000040L
287#define SSL_RC2 0x00040000L 314#define SSL_AES256 0x00000080L
288#define SSL_IDEA 0x00080000L 315#define SSL_CAMELLIA128 0x00000100L
289#define SSL_eFZA 0x00100000L 316#define SSL_CAMELLIA256 0x00000200L
290#define SSL_eNULL 0x00200000L 317#define SSL_eGOST2814789CNT 0x00000400L
291#define SSL_AES 0x04000000L 318#define SSL_SEED 0x00000800L
292#define SSL_CAMELLIA 0x08000000L 319
293#define SSL_SEED 0x10000000L 320#define SSL_AES (SSL_AES128|SSL_AES256)
294 321#define SSL_CAMELLIA (SSL_CAMELLIA128|SSL_CAMELLIA256)
295#define SSL_MAC_MASK 0x00c00000L 322
296#define SSL_MD5 0x00400000L 323
297#define SSL_SHA1 0x00800000L 324/* Bits for algorithm_mac (symmetric authentication) */
298#define SSL_SHA (SSL_SHA1) 325#define SSL_MD5 0x00000001L
299 326#define SSL_SHA1 0x00000002L
300#define SSL_SSL_MASK 0x03000000L 327#define SSL_GOST94 0x00000004L
301#define SSL_SSLV2 0x01000000L 328#define SSL_GOST89MAC 0x00000008L
302#define SSL_SSLV3 0x02000000L 329
330/* Bits for algorithm_ssl (protocol version) */
331#define SSL_SSLV2 0x00000001L
332#define SSL_SSLV3 0x00000002L
303#define SSL_TLSV1 SSL_SSLV3 /* for now */ 333#define SSL_TLSV1 SSL_SSLV3 /* for now */
304 334
305/* we have used 1fffffff - 3 bits left to go. */ 335
336/* Bits for algorithm2 (handshake digests and other extra flags) */
337
338#define SSL_HANDSHAKE_MAC_MD5 0x10
339#define SSL_HANDSHAKE_MAC_SHA 0x20
340#define SSL_HANDSHAKE_MAC_GOST94 0x40
341#define SSL_HANDSHAKE_MAC_DEFAULT (SSL_HANDSHAKE_MAC_MD5 | SSL_HANDSHAKE_MAC_SHA)
342
343/* When adding new digest in the ssl_ciph.c and increment SSM_MD_NUM_IDX
344 * make sure to update this constant too */
345#define SSL_MAX_DIGEST 4
346
347#define TLS1_PRF_DGST_SHIFT 8
348#define TLS1_PRF_MD5 (SSL_HANDSHAKE_MAC_MD5 << TLS1_PRF_DGST_SHIFT)
349#define TLS1_PRF_SHA1 (SSL_HANDSHAKE_MAC_SHA << TLS1_PRF_DGST_SHIFT)
350#define TLS1_PRF_GOST94 (SSL_HANDSHAKE_MAC_GOST94 << TLS1_PRF_DGST_SHIFT)
351#define TLS1_PRF (TLS1_PRF_MD5 | TLS1_PRF_SHA1)
352
353/* Stream MAC for GOST ciphersuites from cryptopro draft
354 * (currently this also goes into algorithm2) */
355#define TLS1_STREAM_MAC 0x04
356
357
306 358
307/* 359/*
308 * Export and cipher strength information. For each cipher we have to decide 360 * Export and cipher strength information. For each cipher we have to decide
@@ -320,10 +372,11 @@
320 * be possible. 372 * be possible.
321 */ 373 */
322#define SSL_EXP_MASK 0x00000003L 374#define SSL_EXP_MASK 0x00000003L
375#define SSL_STRONG_MASK 0x000001fcL
376
323#define SSL_NOT_EXP 0x00000001L 377#define SSL_NOT_EXP 0x00000001L
324#define SSL_EXPORT 0x00000002L 378#define SSL_EXPORT 0x00000002L
325 379
326#define SSL_STRONG_MASK 0x000000fcL
327#define SSL_STRONG_NONE 0x00000004L 380#define SSL_STRONG_NONE 0x00000004L
328#define SSL_EXP40 0x00000008L 381#define SSL_EXP40 0x00000008L
329#define SSL_MICRO (SSL_EXP40) 382#define SSL_MICRO (SSL_EXP40)
@@ -357,17 +410,14 @@
357#define SSL_C_IS_EXPORT40(c) SSL_IS_EXPORT40((c)->algo_strength) 410#define SSL_C_IS_EXPORT40(c) SSL_IS_EXPORT40((c)->algo_strength)
358 411
359#define SSL_EXPORT_KEYLENGTH(a,s) (SSL_IS_EXPORT40(s) ? 5 : \ 412#define SSL_EXPORT_KEYLENGTH(a,s) (SSL_IS_EXPORT40(s) ? 5 : \
360 ((a)&SSL_ENC_MASK) == SSL_DES ? 8 : 7) 413 (a) == SSL_DES ? 8 : 7)
361#define SSL_EXPORT_PKEYLENGTH(a) (SSL_IS_EXPORT40(a) ? 512 : 1024) 414#define SSL_EXPORT_PKEYLENGTH(a) (SSL_IS_EXPORT40(a) ? 512 : 1024)
362#define SSL_C_EXPORT_KEYLENGTH(c) SSL_EXPORT_KEYLENGTH((c)->algorithms, \ 415#define SSL_C_EXPORT_KEYLENGTH(c) SSL_EXPORT_KEYLENGTH((c)->algorithm_enc, \
363 (c)->algo_strength) 416 (c)->algo_strength)
364#define SSL_C_EXPORT_PKEYLENGTH(c) SSL_EXPORT_PKEYLENGTH((c)->algo_strength) 417#define SSL_C_EXPORT_PKEYLENGTH(c) SSL_EXPORT_PKEYLENGTH((c)->algo_strength)
365 418
366 419
367#define SSL_ALL 0xffffffffL 420
368#define SSL_ALL_CIPHERS (SSL_MKEY_MASK|SSL_AUTH_MASK|SSL_ENC_MASK|\
369 SSL_MAC_MASK)
370#define SSL_ALL_STRENGTHS (SSL_EXP_MASK|SSL_STRONG_MASK)
371 421
372/* Mostly for SSLv3 */ 422/* Mostly for SSLv3 */
373#define SSL_PKEY_RSA_ENC 0 423#define SSL_PKEY_RSA_ENC 0
@@ -376,7 +426,9 @@
376#define SSL_PKEY_DH_RSA 3 426#define SSL_PKEY_DH_RSA 3
377#define SSL_PKEY_DH_DSA 4 427#define SSL_PKEY_DH_DSA 4
378#define SSL_PKEY_ECC 5 428#define SSL_PKEY_ECC 5
379#define SSL_PKEY_NUM 6 429#define SSL_PKEY_GOST94 6
430#define SSL_PKEY_GOST01 7
431#define SSL_PKEY_NUM 8
380 432
381/* SSL_kRSA <- RSA_ENC | (RSA_TMP & RSA_SIGN) | 433/* SSL_kRSA <- RSA_ENC | (RSA_TMP & RSA_SIGN) |
382 * <- (EXPORT & (RSA_ENC | RSA_TMP) & RSA_SIGN) 434 * <- (EXPORT & (RSA_ENC | RSA_TMP) & RSA_SIGN)
@@ -417,8 +469,10 @@ typedef struct cert_st
417 /* The following masks are for the key and auth 469 /* The following masks are for the key and auth
418 * algorithms that are supported by the certs below */ 470 * algorithms that are supported by the certs below */
419 int valid; 471 int valid;
420 unsigned long mask; 472 unsigned long mask_k;
421 unsigned long export_mask; 473 unsigned long mask_a;
474 unsigned long export_mask_k;
475 unsigned long export_mask_a;
422#ifndef OPENSSL_NO_RSA 476#ifndef OPENSSL_NO_RSA
423 RSA *rsa_tmp; 477 RSA *rsa_tmp;
424 RSA *(*rsa_tmp_cb)(SSL *ssl,int is_export,int keysize); 478 RSA *(*rsa_tmp_cb)(SSL *ssl,int is_export,int keysize);
@@ -492,9 +546,9 @@ typedef struct ssl3_enc_method
492 int (*setup_key_block)(SSL *); 546 int (*setup_key_block)(SSL *);
493 int (*generate_master_secret)(SSL *, unsigned char *, unsigned char *, int); 547 int (*generate_master_secret)(SSL *, unsigned char *, unsigned char *, int);
494 int (*change_cipher_state)(SSL *, int); 548 int (*change_cipher_state)(SSL *, int);
495 int (*final_finish_mac)(SSL *, EVP_MD_CTX *, EVP_MD_CTX *, const char *, int, unsigned char *); 549 int (*final_finish_mac)(SSL *, const char *, int, unsigned char *);
496 int finish_mac_length; 550 int finish_mac_length;
497 int (*cert_verify_mac)(SSL *, EVP_MD_CTX *, unsigned char *); 551 int (*cert_verify_mac)(SSL *, int, unsigned char *);
498 const char *client_finished_label; 552 const char *client_finished_label;
499 int client_finished_label_len; 553 int client_finished_label_len;
500 const char *server_finished_label; 554 const char *server_finished_label;
@@ -512,24 +566,35 @@ typedef struct ssl3_comp_st
512 } SSL3_COMP; 566 } SSL3_COMP;
513#endif 567#endif
514 568
569#ifndef OPENSSL_NO_BUF_FREELISTS
570typedef struct ssl3_buf_freelist_st
571 {
572 size_t chunklen;
573 unsigned int len;
574 struct ssl3_buf_freelist_entry_st *head;
575 } SSL3_BUF_FREELIST;
576
577typedef struct ssl3_buf_freelist_entry_st
578 {
579 struct ssl3_buf_freelist_entry_st *next;
580 } SSL3_BUF_FREELIST_ENTRY;
581#endif
582
515extern SSL3_ENC_METHOD ssl3_undef_enc_method; 583extern SSL3_ENC_METHOD ssl3_undef_enc_method;
516OPENSSL_EXTERN SSL_CIPHER ssl2_ciphers[]; 584OPENSSL_EXTERN const SSL_CIPHER ssl2_ciphers[];
517OPENSSL_EXTERN SSL_CIPHER ssl3_ciphers[]; 585OPENSSL_EXTERN SSL_CIPHER ssl3_ciphers[];
518 586
519 587
520SSL_METHOD *ssl_bad_method(int ver); 588SSL_METHOD *ssl_bad_method(int ver);
521SSL_METHOD *sslv2_base_method(void);
522SSL_METHOD *sslv23_base_method(void);
523SSL_METHOD *sslv3_base_method(void);
524 589
525extern SSL3_ENC_METHOD TLSv1_enc_data; 590extern SSL3_ENC_METHOD TLSv1_enc_data;
526extern SSL3_ENC_METHOD SSLv3_enc_data; 591extern SSL3_ENC_METHOD SSLv3_enc_data;
527extern SSL3_ENC_METHOD DTLSv1_enc_data; 592extern SSL3_ENC_METHOD DTLSv1_enc_data;
528 593
529#define IMPLEMENT_tls1_meth_func(func_name, s_accept, s_connect, s_get_meth) \ 594#define IMPLEMENT_tls1_meth_func(func_name, s_accept, s_connect, s_get_meth) \
530SSL_METHOD *func_name(void) \ 595const SSL_METHOD *func_name(void) \
531 { \ 596 { \
532 static SSL_METHOD func_name##_data= { \ 597 static const SSL_METHOD func_name##_data= { \
533 TLS1_VERSION, \ 598 TLS1_VERSION, \
534 tls1_new, \ 599 tls1_new, \
535 tls1_clear, \ 600 tls1_clear, \
@@ -564,9 +629,9 @@ SSL_METHOD *func_name(void) \
564 } 629 }
565 630
566#define IMPLEMENT_ssl3_meth_func(func_name, s_accept, s_connect, s_get_meth) \ 631#define IMPLEMENT_ssl3_meth_func(func_name, s_accept, s_connect, s_get_meth) \
567SSL_METHOD *func_name(void) \ 632const SSL_METHOD *func_name(void) \
568 { \ 633 { \
569 static SSL_METHOD func_name##_data= { \ 634 static const SSL_METHOD func_name##_data= { \
570 SSL3_VERSION, \ 635 SSL3_VERSION, \
571 ssl3_new, \ 636 ssl3_new, \
572 ssl3_clear, \ 637 ssl3_clear, \
@@ -601,9 +666,9 @@ SSL_METHOD *func_name(void) \
601 } 666 }
602 667
603#define IMPLEMENT_ssl23_meth_func(func_name, s_accept, s_connect, s_get_meth) \ 668#define IMPLEMENT_ssl23_meth_func(func_name, s_accept, s_connect, s_get_meth) \
604SSL_METHOD *func_name(void) \ 669const SSL_METHOD *func_name(void) \
605 { \ 670 { \
606 static SSL_METHOD func_name##_data= { \ 671 static const SSL_METHOD func_name##_data= { \
607 TLS1_VERSION, \ 672 TLS1_VERSION, \
608 tls1_new, \ 673 tls1_new, \
609 tls1_clear, \ 674 tls1_clear, \
@@ -638,9 +703,9 @@ SSL_METHOD *func_name(void) \
638 } 703 }
639 704
640#define IMPLEMENT_ssl2_meth_func(func_name, s_accept, s_connect, s_get_meth) \ 705#define IMPLEMENT_ssl2_meth_func(func_name, s_accept, s_connect, s_get_meth) \
641SSL_METHOD *func_name(void) \ 706const SSL_METHOD *func_name(void) \
642 { \ 707 { \
643 static SSL_METHOD func_name##_data= { \ 708 static const SSL_METHOD func_name##_data= { \
644 SSL2_VERSION, \ 709 SSL2_VERSION, \
645 ssl2_new, /* local */ \ 710 ssl2_new, /* local */ \
646 ssl2_clear, /* local */ \ 711 ssl2_clear, /* local */ \
@@ -675,9 +740,9 @@ SSL_METHOD *func_name(void) \
675 } 740 }
676 741
677#define IMPLEMENT_dtls1_meth_func(func_name, s_accept, s_connect, s_get_meth) \ 742#define IMPLEMENT_dtls1_meth_func(func_name, s_accept, s_connect, s_get_meth) \
678SSL_METHOD *func_name(void) \ 743const SSL_METHOD *func_name(void) \
679 { \ 744 { \
680 static SSL_METHOD func_name##_data= { \ 745 static const SSL_METHOD func_name##_data= { \
681 DTLS1_VERSION, \ 746 DTLS1_VERSION, \
682 dtls1_new, \ 747 dtls1_new, \
683 dtls1_clear, \ 748 dtls1_clear, \
@@ -694,7 +759,7 @@ SSL_METHOD *func_name(void) \
694 dtls1_read_bytes, \ 759 dtls1_read_bytes, \
695 dtls1_write_app_data_bytes, \ 760 dtls1_write_app_data_bytes, \
696 dtls1_dispatch_alert, \ 761 dtls1_dispatch_alert, \
697 ssl3_ctrl, \ 762 dtls1_ctrl, \
698 ssl3_ctx_ctrl, \ 763 ssl3_ctx_ctrl, \
699 ssl3_get_cipher_by_char, \ 764 ssl3_get_cipher_by_char, \
700 ssl3_put_cipher_by_char, \ 765 ssl3_put_cipher_by_char, \
@@ -723,6 +788,8 @@ int ssl_set_peer_cert_type(SESS_CERT *c, int type);
723int ssl_get_new_session(SSL *s, int session); 788int ssl_get_new_session(SSL *s, int session);
724int ssl_get_prev_session(SSL *s, unsigned char *session,int len, const unsigned char *limit); 789int ssl_get_prev_session(SSL *s, unsigned char *session,int len, const unsigned char *limit);
725int ssl_cipher_id_cmp(const SSL_CIPHER *a,const SSL_CIPHER *b); 790int ssl_cipher_id_cmp(const SSL_CIPHER *a,const SSL_CIPHER *b);
791DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER,
792 ssl_cipher_id);
726int ssl_cipher_ptr_id_cmp(const SSL_CIPHER * const *ap, 793int ssl_cipher_ptr_id_cmp(const SSL_CIPHER * const *ap,
727 const SSL_CIPHER * const *bp); 794 const SSL_CIPHER * const *bp);
728STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num, 795STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num,
@@ -735,15 +802,16 @@ STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *meth,
735 const char *rule_str); 802 const char *rule_str);
736void ssl_update_cache(SSL *s, int mode); 803void ssl_update_cache(SSL *s, int mode);
737int ssl_cipher_get_evp(const SSL_SESSION *s,const EVP_CIPHER **enc, 804int ssl_cipher_get_evp(const SSL_SESSION *s,const EVP_CIPHER **enc,
738 const EVP_MD **md,SSL_COMP **comp); 805 const EVP_MD **md,int *mac_pkey_type,int *mac_secret_size, SSL_COMP **comp);
806int ssl_get_handshake_digest(int i,long *mask,const EVP_MD **md);
739int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk); 807int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk);
740int ssl_undefined_function(SSL *s); 808int ssl_undefined_function(SSL *s);
741int ssl_undefined_void_function(void); 809int ssl_undefined_void_function(void);
742int ssl_undefined_const_function(const SSL *s); 810int ssl_undefined_const_function(const SSL *s);
743X509 *ssl_get_server_send_cert(SSL *); 811X509 *ssl_get_server_send_cert(SSL *);
744EVP_PKEY *ssl_get_sign_pkey(SSL *,SSL_CIPHER *); 812EVP_PKEY *ssl_get_sign_pkey(SSL *,const SSL_CIPHER *);
745int ssl_cert_type(X509 *x,EVP_PKEY *pkey); 813int ssl_cert_type(X509 *x,EVP_PKEY *pkey);
746void ssl_set_cert_masks(CERT *c, SSL_CIPHER *cipher); 814void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher);
747STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s); 815STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s);
748int ssl_verify_alarm_type(long type); 816int ssl_verify_alarm_type(long type);
749void ssl_load_ciphers(void); 817void ssl_load_ciphers(void);
@@ -752,7 +820,7 @@ int ssl2_enc_init(SSL *s, int client);
752int ssl2_generate_key_material(SSL *s); 820int ssl2_generate_key_material(SSL *s);
753void ssl2_enc(SSL *s,int send_data); 821void ssl2_enc(SSL *s,int send_data);
754void ssl2_mac(SSL *s,unsigned char *mac,int send_data); 822void ssl2_mac(SSL *s,unsigned char *mac,int send_data);
755SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p); 823const SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p);
756int ssl2_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p); 824int ssl2_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p);
757int ssl2_part_read(SSL *s, unsigned long f, int i); 825int ssl2_part_read(SSL *s, unsigned long f, int i);
758int ssl2_do_write(SSL *s); 826int ssl2_do_write(SSL *s);
@@ -760,7 +828,7 @@ int ssl2_set_certificate(SSL *s, int type, int len, const unsigned char *data);
760void ssl2_return_error(SSL *s,int reason); 828void ssl2_return_error(SSL *s,int reason);
761void ssl2_write_error(SSL *s); 829void ssl2_write_error(SSL *s);
762int ssl2_num_ciphers(void); 830int ssl2_num_ciphers(void);
763SSL_CIPHER *ssl2_get_cipher(unsigned int u); 831const SSL_CIPHER *ssl2_get_cipher(unsigned int u);
764int ssl2_new(SSL *s); 832int ssl2_new(SSL *s);
765void ssl2_free(SSL *s); 833void ssl2_free(SSL *s);
766int ssl2_accept(SSL *s); 834int ssl2_accept(SSL *s);
@@ -777,7 +845,7 @@ long ssl2_ctx_callback_ctrl(SSL_CTX *s,int cmd, void (*fp)(void));
777int ssl2_pending(const SSL *s); 845int ssl2_pending(const SSL *s);
778long ssl2_default_timeout(void ); 846long ssl2_default_timeout(void );
779 847
780SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p); 848const SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p);
781int ssl3_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p); 849int ssl3_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p);
782void ssl3_init_finished_mac(SSL *s); 850void ssl3_init_finished_mac(SSL *s);
783int ssl3_send_server_certificate(SSL *s); 851int ssl3_send_server_certificate(SSL *s);
@@ -789,29 +857,34 @@ int ssl3_send_change_cipher_spec(SSL *s,int state_a,int state_b);
789int ssl3_change_cipher_state(SSL *s,int which); 857int ssl3_change_cipher_state(SSL *s,int which);
790void ssl3_cleanup_key_block(SSL *s); 858void ssl3_cleanup_key_block(SSL *s);
791int ssl3_do_write(SSL *s,int type); 859int ssl3_do_write(SSL *s,int type);
792void ssl3_send_alert(SSL *s,int level, int desc); 860int ssl3_send_alert(SSL *s,int level, int desc);
793int ssl3_generate_master_secret(SSL *s, unsigned char *out, 861int ssl3_generate_master_secret(SSL *s, unsigned char *out,
794 unsigned char *p, int len); 862 unsigned char *p, int len);
795int ssl3_get_req_cert_type(SSL *s,unsigned char *p); 863int ssl3_get_req_cert_type(SSL *s,unsigned char *p);
796long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok); 864long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok);
797int ssl3_send_finished(SSL *s, int a, int b, const char *sender,int slen); 865int ssl3_send_finished(SSL *s, int a, int b, const char *sender,int slen);
798int ssl3_num_ciphers(void); 866int ssl3_num_ciphers(void);
799SSL_CIPHER *ssl3_get_cipher(unsigned int u); 867const SSL_CIPHER *ssl3_get_cipher(unsigned int u);
800int ssl3_renegotiate(SSL *ssl); 868int ssl3_renegotiate(SSL *ssl);
801int ssl3_renegotiate_check(SSL *ssl); 869int ssl3_renegotiate_check(SSL *ssl);
802int ssl3_dispatch_alert(SSL *s); 870int ssl3_dispatch_alert(SSL *s);
803int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); 871int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek);
804int ssl3_write_bytes(SSL *s, int type, const void *buf, int len); 872int ssl3_write_bytes(SSL *s, int type, const void *buf, int len);
805int ssl3_final_finish_mac(SSL *s, EVP_MD_CTX *ctx1, EVP_MD_CTX *ctx2, 873int ssl3_final_finish_mac(SSL *s, const char *sender, int slen,unsigned char *p);
806 const char *sender, int slen,unsigned char *p); 874int ssl3_cert_verify_mac(SSL *s, int md_nid, unsigned char *p);
807int ssl3_cert_verify_mac(SSL *s, EVP_MD_CTX *in, unsigned char *p);
808void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len); 875void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len);
809int ssl3_enc(SSL *s, int send_data); 876int ssl3_enc(SSL *s, int send_data);
810int ssl3_mac(SSL *ssl, unsigned char *md, int send_data); 877int n_ssl3_mac(SSL *ssl, unsigned char *md, int send_data);
878void ssl3_free_digest_list(SSL *s);
811unsigned long ssl3_output_cert_chain(SSL *s, X509 *x); 879unsigned long ssl3_output_cert_chain(SSL *s, X509 *x);
812SSL_CIPHER *ssl3_choose_cipher(SSL *ssl,STACK_OF(SSL_CIPHER) *clnt, 880SSL_CIPHER *ssl3_choose_cipher(SSL *ssl,STACK_OF(SSL_CIPHER) *clnt,
813 STACK_OF(SSL_CIPHER) *srvr); 881 STACK_OF(SSL_CIPHER) *srvr);
814int ssl3_setup_buffers(SSL *s); 882int ssl3_setup_buffers(SSL *s);
883int ssl3_setup_read_buffer(SSL *s);
884int ssl3_setup_write_buffer(SSL *s);
885int ssl3_release_read_buffer(SSL *s);
886int ssl3_release_write_buffer(SSL *s);
887int ssl3_digest_cached_records(SSL *s);
815int ssl3_new(SSL *s); 888int ssl3_new(SSL *s);
816void ssl3_free(SSL *s); 889void ssl3_free(SSL *s);
817int ssl3_accept(SSL *s); 890int ssl3_accept(SSL *s);
@@ -832,12 +905,12 @@ int ssl3_do_change_cipher_spec(SSL *ssl);
832long ssl3_default_timeout(void ); 905long ssl3_default_timeout(void );
833 906
834int ssl23_num_ciphers(void ); 907int ssl23_num_ciphers(void );
835SSL_CIPHER *ssl23_get_cipher(unsigned int u); 908const SSL_CIPHER *ssl23_get_cipher(unsigned int u);
836int ssl23_read(SSL *s, void *buf, int len); 909int ssl23_read(SSL *s, void *buf, int len);
837int ssl23_peek(SSL *s, void *buf, int len); 910int ssl23_peek(SSL *s, void *buf, int len);
838int ssl23_write(SSL *s, const void *buf, int len); 911int ssl23_write(SSL *s, const void *buf, int len);
839int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p); 912int ssl23_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p);
840SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p); 913const SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p);
841long ssl23_default_timeout(void ); 914long ssl23_default_timeout(void );
842 915
843long tls1_default_timeout(void); 916long tls1_default_timeout(void);
@@ -862,14 +935,21 @@ int dtls1_read_failed(SSL *s, int code);
862int dtls1_buffer_message(SSL *s, int ccs); 935int dtls1_buffer_message(SSL *s, int ccs);
863int dtls1_retransmit_message(SSL *s, unsigned short seq, 936int dtls1_retransmit_message(SSL *s, unsigned short seq,
864 unsigned long frag_off, int *found); 937 unsigned long frag_off, int *found);
938int dtls1_get_queue_priority(unsigned short seq, int is_ccs);
939int dtls1_retransmit_buffered_messages(SSL *s);
865void dtls1_clear_record_buffer(SSL *s); 940void dtls1_clear_record_buffer(SSL *s);
866void dtls1_get_message_header(unsigned char *data, struct hm_header_st *msg_hdr); 941void dtls1_get_message_header(unsigned char *data, struct hm_header_st *msg_hdr);
867void dtls1_get_ccs_header(unsigned char *data, struct ccs_header_st *ccs_hdr); 942void dtls1_get_ccs_header(unsigned char *data, struct ccs_header_st *ccs_hdr);
868void dtls1_reset_seq_numbers(SSL *s, int rw); 943void dtls1_reset_seq_numbers(SSL *s, int rw);
869long dtls1_default_timeout(void); 944long dtls1_default_timeout(void);
870SSL_CIPHER *dtls1_get_cipher(unsigned int u); 945struct timeval* dtls1_get_timeout(SSL *s, struct timeval* timeleft);
871 946int dtls1_handle_timeout(SSL *s);
872 947const SSL_CIPHER *dtls1_get_cipher(unsigned int u);
948void dtls1_start_timer(SSL *s);
949void dtls1_stop_timer(SSL *s);
950int dtls1_is_timer_expired(SSL *s);
951void dtls1_double_timeout(SSL *s);
952int dtls1_send_newsession_ticket(SSL *s);
873 953
874/* some client-only functions */ 954/* some client-only functions */
875int ssl3_client_hello(SSL *s); 955int ssl3_client_hello(SSL *s);
@@ -879,12 +959,15 @@ int ssl3_get_new_session_ticket(SSL *s);
879int ssl3_get_cert_status(SSL *s); 959int ssl3_get_cert_status(SSL *s);
880int ssl3_get_server_done(SSL *s); 960int ssl3_get_server_done(SSL *s);
881int ssl3_send_client_verify(SSL *s); 961int ssl3_send_client_verify(SSL *s);
882int ssl_do_client_cert_cb(SSL *s, X509 **px509, EVP_PKEY **ppkey);
883int ssl3_send_client_certificate(SSL *s); 962int ssl3_send_client_certificate(SSL *s);
963int ssl_do_client_cert_cb(SSL *s, X509 **px509, EVP_PKEY **ppkey);
884int ssl3_send_client_key_exchange(SSL *s); 964int ssl3_send_client_key_exchange(SSL *s);
885int ssl3_get_key_exchange(SSL *s); 965int ssl3_get_key_exchange(SSL *s);
886int ssl3_get_server_certificate(SSL *s); 966int ssl3_get_server_certificate(SSL *s);
887int ssl3_check_cert_and_algorithm(SSL *s); 967int ssl3_check_cert_and_algorithm(SSL *s);
968#ifndef OPENSSL_NO_TLSEXT
969int ssl3_check_finished(SSL *s);
970#endif
888 971
889int dtls1_client_hello(SSL *s); 972int dtls1_client_hello(SSL *s);
890int dtls1_send_client_certificate(SSL *s); 973int dtls1_send_client_certificate(SSL *s);
@@ -922,7 +1005,6 @@ void tls1_free(SSL *s);
922void tls1_clear(SSL *s); 1005void tls1_clear(SSL *s);
923long tls1_ctrl(SSL *s,int cmd, long larg, void *parg); 1006long tls1_ctrl(SSL *s,int cmd, long larg, void *parg);
924long tls1_callback_ctrl(SSL *s,int cmd, void (*fp)(void)); 1007long tls1_callback_ctrl(SSL *s,int cmd, void (*fp)(void));
925SSL_METHOD *tlsv1_base_method(void );
926 1008
927int dtls1_new(SSL *s); 1009int dtls1_new(SSL *s);
928int dtls1_accept(SSL *s); 1010int dtls1_accept(SSL *s);
@@ -930,7 +1012,6 @@ int dtls1_connect(SSL *s);
930void dtls1_free(SSL *s); 1012void dtls1_free(SSL *s);
931void dtls1_clear(SSL *s); 1013void dtls1_clear(SSL *s);
932long dtls1_ctrl(SSL *s,int cmd, long larg, void *parg); 1014long dtls1_ctrl(SSL *s,int cmd, long larg, void *parg);
933SSL_METHOD *dtlsv1_base_method(void );
934 1015
935long dtls1_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok); 1016long dtls1_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok);
936int dtls1_get_record(SSL *s); 1017int dtls1_get_record(SSL *s);
@@ -945,9 +1026,9 @@ void ssl_free_wbio_buffer(SSL *s);
945int tls1_change_cipher_state(SSL *s, int which); 1026int tls1_change_cipher_state(SSL *s, int which);
946int tls1_setup_key_block(SSL *s); 1027int tls1_setup_key_block(SSL *s);
947int tls1_enc(SSL *s, int snd); 1028int tls1_enc(SSL *s, int snd);
948int tls1_final_finish_mac(SSL *s, EVP_MD_CTX *in1_ctx, EVP_MD_CTX *in2_ctx, 1029int tls1_final_finish_mac(SSL *s,
949 const char *str, int slen, unsigned char *p); 1030 const char *str, int slen, unsigned char *p);
950int tls1_cert_verify_mac(SSL *s, EVP_MD_CTX *in, unsigned char *p); 1031int tls1_cert_verify_mac(SSL *s, int md_nid, unsigned char *p);
951int tls1_mac(SSL *ssl, unsigned char *md, int snd); 1032int tls1_mac(SSL *ssl, unsigned char *md, int snd);
952int tls1_generate_master_secret(SSL *s, unsigned char *out, 1033int tls1_generate_master_secret(SSL *s, unsigned char *out,
953 unsigned char *p, int len); 1034 unsigned char *p, int len);
@@ -955,10 +1036,17 @@ int tls1_alert_code(int code);
955int ssl3_alert_code(int code); 1036int ssl3_alert_code(int code);
956int ssl_ok(SSL *s); 1037int ssl_ok(SSL *s);
957 1038
958int check_srvr_ecc_cert_and_alg(X509 *x, SSL_CIPHER *cs); 1039#ifndef OPENSSL_NO_ECDH
1040int ssl_check_srvr_ecc_cert_and_alg(X509 *x, const SSL_CIPHER *cs);
1041#endif
959 1042
960SSL_COMP *ssl3_comp_find(STACK_OF(SSL_COMP) *sk, int n); 1043SSL_COMP *ssl3_comp_find(STACK_OF(SSL_COMP) *sk, int n);
961 1044
1045#ifndef OPENSSL_NO_EC
1046int tls1_ec_curve_id2nid(int curve_id);
1047int tls1_ec_nid2curve_id(int nid);
1048#endif /* OPENSSL_NO_EC */
1049
962#ifndef OPENSSL_NO_TLSEXT 1050#ifndef OPENSSL_NO_TLSEXT
963unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit); 1051unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit);
964unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned char *limit); 1052unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned char *limit);
@@ -968,6 +1056,7 @@ int ssl_prepare_clienthello_tlsext(SSL *s);
968int ssl_prepare_serverhello_tlsext(SSL *s); 1056int ssl_prepare_serverhello_tlsext(SSL *s);
969int ssl_check_clienthello_tlsext(SSL *s); 1057int ssl_check_clienthello_tlsext(SSL *s);
970int ssl_check_serverhello_tlsext(SSL *s); 1058int ssl_check_serverhello_tlsext(SSL *s);
1059
971#ifdef OPENSSL_NO_SHA256 1060#ifdef OPENSSL_NO_SHA256
972#define tlsext_tick_md EVP_sha1 1061#define tlsext_tick_md EVP_sha1
973#else 1062#else
@@ -975,8 +1064,15 @@ int ssl_check_serverhello_tlsext(SSL *s);
975#endif 1064#endif
976int tls1_process_ticket(SSL *s, unsigned char *session_id, int len, 1065int tls1_process_ticket(SSL *s, unsigned char *session_id, int len,
977 const unsigned char *limit, SSL_SESSION **ret); 1066 const unsigned char *limit, SSL_SESSION **ret);
1067#endif
978EVP_MD_CTX* ssl_replace_hash(EVP_MD_CTX **hash,const EVP_MD *md) ; 1068EVP_MD_CTX* ssl_replace_hash(EVP_MD_CTX **hash,const EVP_MD *md) ;
979void ssl_clear_hash_ctx(EVP_MD_CTX **hash); 1069void ssl_clear_hash_ctx(EVP_MD_CTX **hash);
980#endif 1070int ssl_add_serverhello_renegotiate_ext(SSL *s, unsigned char *p, int *len,
981 1071 int maxlen);
1072int ssl_parse_serverhello_renegotiate_ext(SSL *s, unsigned char *d, int len,
1073 int *al);
1074int ssl_add_clienthello_renegotiate_ext(SSL *s, unsigned char *p, int *len,
1075 int maxlen);
1076int ssl_parse_clienthello_renegotiate_ext(SSL *s, unsigned char *d, int len,
1077 int *al);
982#endif 1078#endif
diff --git a/src/lib/libssl/src/ssl/ssl_rsa.c b/src/lib/libssl/src/ssl/ssl_rsa.c
index 27113eba50..c0960b5712 100644
--- a/src/lib/libssl/src/ssl/ssl_rsa.c
+++ b/src/lib/libssl/src/ssl/ssl_rsa.c
@@ -723,7 +723,7 @@ int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file)
723 goto end; 723 goto end;
724 } 724 }
725 725
726 x=PEM_read_bio_X509(in,NULL,ctx->default_passwd_callback,ctx->default_passwd_callback_userdata); 726 x=PEM_read_bio_X509_AUX(in,NULL,ctx->default_passwd_callback,ctx->default_passwd_callback_userdata);
727 if (x == NULL) 727 if (x == NULL)
728 { 728 {
729 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE,ERR_R_PEM_LIB); 729 SSLerr(SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE,ERR_R_PEM_LIB);
diff --git a/src/lib/libssl/src/ssl/ssl_sess.c b/src/lib/libssl/src/ssl/ssl_sess.c
index 8391d62212..8e5d8a0972 100644
--- a/src/lib/libssl/src/ssl/ssl_sess.c
+++ b/src/lib/libssl/src/ssl/ssl_sess.c
@@ -55,6 +55,85 @@
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ====================================================================
59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60 *
61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions
63 * are met:
64 *
65 * 1. Redistributions of source code must retain the above copyright
66 * notice, this list of conditions and the following disclaimer.
67 *
68 * 2. Redistributions in binary form must reproduce the above copyright
69 * notice, this list of conditions and the following disclaimer in
70 * the documentation and/or other materials provided with the
71 * distribution.
72 *
73 * 3. All advertising materials mentioning features or use of this
74 * software must display the following acknowledgment:
75 * "This product includes software developed by the OpenSSL Project
76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77 *
78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79 * endorse or promote products derived from this software without
80 * prior written permission. For written permission, please contact
81 * openssl-core@openssl.org.
82 *
83 * 5. Products derived from this software may not be called "OpenSSL"
84 * nor may "OpenSSL" appear in their names without prior written
85 * permission of the OpenSSL Project.
86 *
87 * 6. Redistributions of any form whatsoever must retain the following
88 * acknowledgment:
89 * "This product includes software developed by the OpenSSL Project
90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91 *
92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103 * OF THE POSSIBILITY OF SUCH DAMAGE.
104 * ====================================================================
105 *
106 * This product includes cryptographic software written by Eric Young
107 * (eay@cryptsoft.com). This product includes software written by Tim
108 * Hudson (tjh@cryptsoft.com).
109 *
110 */
111/* ====================================================================
112 * Copyright 2005 Nokia. All rights reserved.
113 *
114 * The portions of the attached software ("Contribution") is developed by
115 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
116 * license.
117 *
118 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
119 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
120 * support (see RFC 4279) to OpenSSL.
121 *
122 * No patent licenses or other rights except those expressly stated in
123 * the OpenSSL open source license shall be deemed granted or received
124 * expressly, by implication, estoppel, or otherwise.
125 *
126 * No assurances are provided by Nokia that the Contribution does not
127 * infringe the patent or other intellectual property rights of any third
128 * party or that the license provides you with all the necessary rights
129 * to make use of the Contribution.
130 *
131 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
132 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
133 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
134 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
135 * OTHERWISE.
136 */
58 137
59#include <stdio.h> 138#include <stdio.h>
60#include <openssl/lhash.h> 139#include <openssl/lhash.h>
@@ -127,8 +206,18 @@ SSL_SESSION *SSL_SESSION_new(void)
127 ss->compress_meth=0; 206 ss->compress_meth=0;
128#ifndef OPENSSL_NO_TLSEXT 207#ifndef OPENSSL_NO_TLSEXT
129 ss->tlsext_hostname = NULL; 208 ss->tlsext_hostname = NULL;
209#ifndef OPENSSL_NO_EC
210 ss->tlsext_ecpointformatlist_length = 0;
211 ss->tlsext_ecpointformatlist = NULL;
212 ss->tlsext_ellipticcurvelist_length = 0;
213 ss->tlsext_ellipticcurvelist = NULL;
214#endif
130#endif 215#endif
131 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data); 216 CRYPTO_new_ex_data(CRYPTO_EX_INDEX_SSL_SESSION, ss, &ss->ex_data);
217#ifndef OPENSSL_NO_PSK
218 ss->psk_identity_hint=NULL;
219 ss->psk_identity=NULL;
220#endif
132 return(ss); 221 return(ss);
133 } 222 }
134 223
@@ -183,10 +272,10 @@ int ssl_get_new_session(SSL *s, int session)
183 if ((ss=SSL_SESSION_new()) == NULL) return(0); 272 if ((ss=SSL_SESSION_new()) == NULL) return(0);
184 273
185 /* If the context has a default timeout, use it */ 274 /* If the context has a default timeout, use it */
186 if (s->ctx->session_timeout == 0) 275 if (s->session_ctx->session_timeout == 0)
187 ss->timeout=SSL_get_default_timeout(s); 276 ss->timeout=SSL_get_default_timeout(s);
188 else 277 else
189 ss->timeout=s->ctx->session_timeout; 278 ss->timeout=s->session_ctx->session_timeout;
190 279
191 if (s->session != NULL) 280 if (s->session != NULL)
192 { 281 {
@@ -211,6 +300,11 @@ int ssl_get_new_session(SSL *s, int session)
211 ss->ssl_version=TLS1_VERSION; 300 ss->ssl_version=TLS1_VERSION;
212 ss->session_id_length=SSL3_SSL_SESSION_ID_LENGTH; 301 ss->session_id_length=SSL3_SSL_SESSION_ID_LENGTH;
213 } 302 }
303 else if (s->version == DTLS1_BAD_VER)
304 {
305 ss->ssl_version=DTLS1_BAD_VER;
306 ss->session_id_length=SSL3_SSL_SESSION_ID_LENGTH;
307 }
214 else if (s->version == DTLS1_VERSION) 308 else if (s->version == DTLS1_VERSION)
215 { 309 {
216 ss->ssl_version=DTLS1_VERSION; 310 ss->ssl_version=DTLS1_VERSION;
@@ -234,8 +328,8 @@ int ssl_get_new_session(SSL *s, int session)
234 CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX); 328 CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);
235 if(s->generate_session_id) 329 if(s->generate_session_id)
236 cb = s->generate_session_id; 330 cb = s->generate_session_id;
237 else if(s->ctx->generate_session_id) 331 else if(s->session_ctx->generate_session_id)
238 cb = s->ctx->generate_session_id; 332 cb = s->session_ctx->generate_session_id;
239 CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX); 333 CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX);
240 /* Choose a session ID */ 334 /* Choose a session ID */
241 tmp = ss->session_id_length; 335 tmp = ss->session_id_length;
@@ -281,6 +375,32 @@ int ssl_get_new_session(SSL *s, int session)
281 return 0; 375 return 0;
282 } 376 }
283 } 377 }
378#ifndef OPENSSL_NO_EC
379 if (s->tlsext_ecpointformatlist)
380 {
381 if (ss->tlsext_ecpointformatlist != NULL) OPENSSL_free(ss->tlsext_ecpointformatlist);
382 if ((ss->tlsext_ecpointformatlist = OPENSSL_malloc(s->tlsext_ecpointformatlist_length)) == NULL)
383 {
384 SSLerr(SSL_F_SSL_GET_NEW_SESSION, ERR_R_MALLOC_FAILURE);
385 SSL_SESSION_free(ss);
386 return 0;
387 }
388 ss->tlsext_ecpointformatlist_length = s->tlsext_ecpointformatlist_length;
389 memcpy(ss->tlsext_ecpointformatlist, s->tlsext_ecpointformatlist, s->tlsext_ecpointformatlist_length);
390 }
391 if (s->tlsext_ellipticcurvelist)
392 {
393 if (ss->tlsext_ellipticcurvelist != NULL) OPENSSL_free(ss->tlsext_ellipticcurvelist);
394 if ((ss->tlsext_ellipticcurvelist = OPENSSL_malloc(s->tlsext_ellipticcurvelist_length)) == NULL)
395 {
396 SSLerr(SSL_F_SSL_GET_NEW_SESSION, ERR_R_MALLOC_FAILURE);
397 SSL_SESSION_free(ss);
398 return 0;
399 }
400 ss->tlsext_ellipticcurvelist_length = s->tlsext_ellipticcurvelist_length;
401 memcpy(ss->tlsext_ellipticcurvelist, s->tlsext_ellipticcurvelist, s->tlsext_ellipticcurvelist_length);
402 }
403#endif
284#endif 404#endif
285 } 405 }
286 else 406 else
@@ -313,15 +433,15 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
313#ifndef OPENSSL_NO_TLSEXT 433#ifndef OPENSSL_NO_TLSEXT
314 int r; 434 int r;
315#endif 435#endif
316 436
317 if (len > SSL_MAX_SSL_SESSION_ID_LENGTH) 437 if (len > SSL_MAX_SSL_SESSION_ID_LENGTH)
318 goto err; 438 goto err;
319#ifndef OPENSSL_NO_TLSEXT 439#ifndef OPENSSL_NO_TLSEXT
320 r = tls1_process_ticket(s, session_id, len, limit, &ret); 440 r = tls1_process_ticket(s, session_id, len, limit, &ret);
321 if (r == -1) 441 if (r == -1)
322 { 442 {
323 fatal = 1; 443 fatal = 1;
324 goto err; 444 goto err;
325 } 445 }
326 else if (r == 0 || (!ret && !len)) 446 else if (r == 0 || (!ret && !len))
327 goto err; 447 goto err;
@@ -329,7 +449,7 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
329#else 449#else
330 if (len == 0) 450 if (len == 0)
331 goto err; 451 goto err;
332 if (!(s->ctx->session_cache_mode & SSL_SESS_CACHE_NO_INTERNAL_LOOKUP)) 452 if (!(s->session_ctx->session_cache_mode & SSL_SESS_CACHE_NO_INTERNAL_LOOKUP))
333#endif 453#endif
334 { 454 {
335 SSL_SESSION data; 455 SSL_SESSION data;
@@ -337,9 +457,9 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
337 data.session_id_length=len; 457 data.session_id_length=len;
338 if (len == 0) 458 if (len == 0)
339 return 0; 459 return 0;
340 memcpy(data.session_id,session_id,len); 460 memcpy(data.session_id,session_id,len);
341 CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX); 461 CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);
342 ret=(SSL_SESSION *)lh_retrieve(s->ctx->sessions,&data); 462 ret=lh_SSL_SESSION_retrieve(s->session_ctx->sessions,&data);
343 if (ret != NULL) 463 if (ret != NULL)
344 /* don't allow other threads to steal it: */ 464 /* don't allow other threads to steal it: */
345 CRYPTO_add(&ret->references,1,CRYPTO_LOCK_SSL_SESSION); 465 CRYPTO_add(&ret->references,1,CRYPTO_LOCK_SSL_SESSION);
@@ -350,13 +470,13 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
350 { 470 {
351 int copy=1; 471 int copy=1;
352 472
353 s->ctx->stats.sess_miss++; 473 s->session_ctx->stats.sess_miss++;
354 ret=NULL; 474 ret=NULL;
355 if (s->ctx->get_session_cb != NULL 475 if (s->session_ctx->get_session_cb != NULL
356 && (ret=s->ctx->get_session_cb(s,session_id,len,&copy)) 476 && (ret=s->session_ctx->get_session_cb(s,session_id,len,&copy))
357 != NULL) 477 != NULL)
358 { 478 {
359 s->ctx->stats.sess_cb_hit++; 479 s->session_ctx->stats.sess_cb_hit++;
360 480
361 /* Increment reference count now if the session callback 481 /* Increment reference count now if the session callback
362 * asks us to do so (note that if the session structures 482 * asks us to do so (note that if the session structures
@@ -368,10 +488,10 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
368 488
369 /* Add the externally cached session to the internal 489 /* Add the externally cached session to the internal
370 * cache as well if and only if we are supposed to. */ 490 * cache as well if and only if we are supposed to. */
371 if(!(s->ctx->session_cache_mode & SSL_SESS_CACHE_NO_INTERNAL_STORE)) 491 if(!(s->session_ctx->session_cache_mode & SSL_SESS_CACHE_NO_INTERNAL_STORE))
372 /* The following should not return 1, otherwise, 492 /* The following should not return 1, otherwise,
373 * things are very strange */ 493 * things are very strange */
374 SSL_CTX_add_session(s->ctx,ret); 494 SSL_CTX_add_session(s->session_ctx,ret);
375 } 495 }
376 if (ret == NULL) 496 if (ret == NULL)
377 goto err; 497 goto err;
@@ -418,7 +538,7 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
418 p=buf; 538 p=buf;
419 l=ret->cipher_id; 539 l=ret->cipher_id;
420 l2n(l,p); 540 l2n(l,p);
421 if ((ret->ssl_version>>8) == SSL3_VERSION_MAJOR) 541 if ((ret->ssl_version>>8) >= SSL3_VERSION_MAJOR)
422 ret->cipher=ssl_get_cipher_by_char(s,&(buf[2])); 542 ret->cipher=ssl_get_cipher_by_char(s,&(buf[2]));
423 else 543 else
424 ret->cipher=ssl_get_cipher_by_char(s,&(buf[1])); 544 ret->cipher=ssl_get_cipher_by_char(s,&(buf[1]));
@@ -438,13 +558,13 @@ int ssl_get_prev_session(SSL *s, unsigned char *session_id, int len,
438 558
439 if (ret->timeout < (long)(time(NULL) - ret->time)) /* timeout */ 559 if (ret->timeout < (long)(time(NULL) - ret->time)) /* timeout */
440 { 560 {
441 s->ctx->stats.sess_timeout++; 561 s->session_ctx->stats.sess_timeout++;
442 /* remove it from the cache */ 562 /* remove it from the cache */
443 SSL_CTX_remove_session(s->ctx,ret); 563 SSL_CTX_remove_session(s->session_ctx,ret);
444 goto err; 564 goto err;
445 } 565 }
446 566
447 s->ctx->stats.sess_hit++; 567 s->session_ctx->stats.sess_hit++;
448 568
449 /* ret->time=time(NULL); */ /* rezero timeout? */ 569 /* ret->time=time(NULL); */ /* rezero timeout? */
450 /* again, just leave the session 570 /* again, just leave the session
@@ -477,7 +597,7 @@ int SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *c)
477 /* if session c is in already in cache, we take back the increment later */ 597 /* if session c is in already in cache, we take back the increment later */
478 598
479 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX); 599 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
480 s=(SSL_SESSION *)lh_insert(ctx->sessions,c); 600 s=lh_SSL_SESSION_insert(ctx->sessions,c);
481 601
482 /* s != NULL iff we already had a session with the given PID. 602 /* s != NULL iff we already had a session with the given PID.
483 * In this case, s == c should hold (then we did not really modify 603 * In this case, s == c should hold (then we did not really modify
@@ -543,10 +663,10 @@ static int remove_session_lock(SSL_CTX *ctx, SSL_SESSION *c, int lck)
543 if ((c != NULL) && (c->session_id_length != 0)) 663 if ((c != NULL) && (c->session_id_length != 0))
544 { 664 {
545 if(lck) CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX); 665 if(lck) CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
546 if ((r = (SSL_SESSION *)lh_retrieve(ctx->sessions,c)) == c) 666 if ((r = lh_SSL_SESSION_retrieve(ctx->sessions,c)) == c)
547 { 667 {
548 ret=1; 668 ret=1;
549 r=(SSL_SESSION *)lh_delete(ctx->sessions,c); 669 r=lh_SSL_SESSION_delete(ctx->sessions,c);
550 SSL_SESSION_list_remove(ctx,c); 670 SSL_SESSION_list_remove(ctx,c);
551 } 671 }
552 672
@@ -596,6 +716,18 @@ void SSL_SESSION_free(SSL_SESSION *ss)
596#ifndef OPENSSL_NO_TLSEXT 716#ifndef OPENSSL_NO_TLSEXT
597 if (ss->tlsext_hostname != NULL) OPENSSL_free(ss->tlsext_hostname); 717 if (ss->tlsext_hostname != NULL) OPENSSL_free(ss->tlsext_hostname);
598 if (ss->tlsext_tick != NULL) OPENSSL_free(ss->tlsext_tick); 718 if (ss->tlsext_tick != NULL) OPENSSL_free(ss->tlsext_tick);
719#ifndef OPENSSL_NO_EC
720 ss->tlsext_ecpointformatlist_length = 0;
721 if (ss->tlsext_ecpointformatlist != NULL) OPENSSL_free(ss->tlsext_ecpointformatlist);
722 ss->tlsext_ellipticcurvelist_length = 0;
723 if (ss->tlsext_ellipticcurvelist != NULL) OPENSSL_free(ss->tlsext_ellipticcurvelist);
724#endif /* OPENSSL_NO_EC */
725#endif
726#ifndef OPENSSL_NO_PSK
727 if (ss->psk_identity_hint != NULL)
728 OPENSSL_free(ss->psk_identity_hint);
729 if (ss->psk_identity != NULL)
730 OPENSSL_free(ss->psk_identity);
599#endif 731#endif
600 OPENSSL_cleanse(ss,sizeof(*ss)); 732 OPENSSL_cleanse(ss,sizeof(*ss));
601 OPENSSL_free(ss); 733 OPENSSL_free(ss);
@@ -604,7 +736,7 @@ void SSL_SESSION_free(SSL_SESSION *ss)
604int SSL_set_session(SSL *s, SSL_SESSION *session) 736int SSL_set_session(SSL *s, SSL_SESSION *session)
605 { 737 {
606 int ret=0; 738 int ret=0;
607 SSL_METHOD *meth; 739 const SSL_METHOD *meth;
608 740
609 if (session != NULL) 741 if (session != NULL)
610 { 742 {
@@ -707,20 +839,75 @@ long SSL_CTX_get_timeout(const SSL_CTX *s)
707 return(s->session_timeout); 839 return(s->session_timeout);
708 } 840 }
709 841
842#ifndef OPENSSL_NO_TLSEXT
843int SSL_set_session_secret_cb(SSL *s, int (*tls_session_secret_cb)(SSL *s, void *secret, int *secret_len,
844 STACK_OF(SSL_CIPHER) *peer_ciphers, SSL_CIPHER **cipher, void *arg), void *arg)
845 {
846 if (s == NULL) return(0);
847 s->tls_session_secret_cb = tls_session_secret_cb;
848 s->tls_session_secret_cb_arg = arg;
849 return(1);
850 }
851
852int SSL_set_session_ticket_ext_cb(SSL *s, tls_session_ticket_ext_cb_fn cb,
853 void *arg)
854 {
855 if (s == NULL) return(0);
856 s->tls_session_ticket_ext_cb = cb;
857 s->tls_session_ticket_ext_cb_arg = arg;
858 return(1);
859 }
860
861int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len)
862 {
863 if (s->version >= TLS1_VERSION)
864 {
865 if (s->tlsext_session_ticket)
866 {
867 OPENSSL_free(s->tlsext_session_ticket);
868 s->tlsext_session_ticket = NULL;
869 }
870
871 s->tlsext_session_ticket = OPENSSL_malloc(sizeof(TLS_SESSION_TICKET_EXT) + ext_len);
872 if (!s->tlsext_session_ticket)
873 {
874 SSLerr(SSL_F_SSL_SET_SESSION_TICKET_EXT, ERR_R_MALLOC_FAILURE);
875 return 0;
876 }
877
878 if (ext_data)
879 {
880 s->tlsext_session_ticket->length = ext_len;
881 s->tlsext_session_ticket->data = s->tlsext_session_ticket + 1;
882 memcpy(s->tlsext_session_ticket->data, ext_data, ext_len);
883 }
884 else
885 {
886 s->tlsext_session_ticket->length = 0;
887 s->tlsext_session_ticket->data = NULL;
888 }
889
890 return 1;
891 }
892
893 return 0;
894 }
895#endif /* OPENSSL_NO_TLSEXT */
896
710typedef struct timeout_param_st 897typedef struct timeout_param_st
711 { 898 {
712 SSL_CTX *ctx; 899 SSL_CTX *ctx;
713 long time; 900 long time;
714 LHASH *cache; 901 LHASH_OF(SSL_SESSION) *cache;
715 } TIMEOUT_PARAM; 902 } TIMEOUT_PARAM;
716 903
717static void timeout(SSL_SESSION *s, TIMEOUT_PARAM *p) 904static void timeout_doall_arg(SSL_SESSION *s, TIMEOUT_PARAM *p)
718 { 905 {
719 if ((p->time == 0) || (p->time > (s->time+s->timeout))) /* timeout */ 906 if ((p->time == 0) || (p->time > (s->time+s->timeout))) /* timeout */
720 { 907 {
721 /* The reason we don't call SSL_CTX_remove_session() is to 908 /* The reason we don't call SSL_CTX_remove_session() is to
722 * save on locking overhead */ 909 * save on locking overhead */
723 lh_delete(p->cache,s); 910 (void)lh_SSL_SESSION_delete(p->cache,s);
724 SSL_SESSION_list_remove(p->ctx,s); 911 SSL_SESSION_list_remove(p->ctx,s);
725 s->not_resumable=1; 912 s->not_resumable=1;
726 if (p->ctx->remove_session_cb != NULL) 913 if (p->ctx->remove_session_cb != NULL)
@@ -729,7 +916,7 @@ static void timeout(SSL_SESSION *s, TIMEOUT_PARAM *p)
729 } 916 }
730 } 917 }
731 918
732static IMPLEMENT_LHASH_DOALL_ARG_FN(timeout, SSL_SESSION *, TIMEOUT_PARAM *) 919static IMPLEMENT_LHASH_DOALL_ARG_FN(timeout, SSL_SESSION, TIMEOUT_PARAM)
733 920
734void SSL_CTX_flush_sessions(SSL_CTX *s, long t) 921void SSL_CTX_flush_sessions(SSL_CTX *s, long t)
735 { 922 {
@@ -741,10 +928,11 @@ void SSL_CTX_flush_sessions(SSL_CTX *s, long t)
741 if (tp.cache == NULL) return; 928 if (tp.cache == NULL) return;
742 tp.time=t; 929 tp.time=t;
743 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX); 930 CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
744 i=tp.cache->down_load; 931 i=CHECKED_LHASH_OF(SSL_SESSION, tp.cache)->down_load;
745 tp.cache->down_load=0; 932 CHECKED_LHASH_OF(SSL_SESSION, tp.cache)->down_load=0;
746 lh_doall_arg(tp.cache, LHASH_DOALL_ARG_FN(timeout), &tp); 933 lh_SSL_SESSION_doall_arg(tp.cache, LHASH_DOALL_ARG_FN(timeout),
747 tp.cache->down_load=i; 934 TIMEOUT_PARAM, &tp);
935 CHECKED_LHASH_OF(SSL_SESSION, tp.cache)->down_load=i;
748 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX); 936 CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
749 } 937 }
750 938
@@ -904,3 +1092,4 @@ void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx,
904 ctx->app_verify_cookie_cb=cb; 1092 ctx->app_verify_cookie_cb=cb;
905 } 1093 }
906 1094
1095IMPLEMENT_PEM_rw(SSL_SESSION, SSL_SESSION, PEM_STRING_SSL_SESSION, SSL_SESSION)
diff --git a/src/lib/libssl/src/ssl/ssl_stat.c b/src/lib/libssl/src/ssl/ssl_stat.c
index 73b02509d4..144b81e55f 100644
--- a/src/lib/libssl/src/ssl/ssl_stat.c
+++ b/src/lib/libssl/src/ssl/ssl_stat.c
@@ -55,6 +55,32 @@
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ====================================================================
59 * Copyright 2005 Nokia. All rights reserved.
60 *
61 * The portions of the attached software ("Contribution") is developed by
62 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
63 * license.
64 *
65 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
66 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
67 * support (see RFC 4279) to OpenSSL.
68 *
69 * No patent licenses or other rights except those expressly stated in
70 * the OpenSSL open source license shall be deemed granted or received
71 * expressly, by implication, estoppel, or otherwise.
72 *
73 * No assurances are provided by Nokia that the Contribution does not
74 * infringe the patent or other intellectual property rights of any third
75 * party or that the license provides you with all the necessary rights
76 * to make use of the Contribution.
77 *
78 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
79 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
80 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
81 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
82 * OTHERWISE.
83 */
58 84
59#include <stdio.h> 85#include <stdio.h>
60#include "ssl_locl.h" 86#include "ssl_locl.h"
@@ -198,6 +224,12 @@ case SSL23_ST_SR_CLNT_HELLO_A: str="SSLv2/v3 read client hello A"; break;
198case SSL23_ST_SR_CLNT_HELLO_B: str="SSLv2/v3 read client hello B"; break; 224case SSL23_ST_SR_CLNT_HELLO_B: str="SSLv2/v3 read client hello B"; break;
199#endif 225#endif
200 226
227/* DTLS */
228case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A: str="DTLS1 read hello verify request A"; break;
229case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B: str="DTLS1 read hello verify request B"; break;
230case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A: str="DTLS1 write hello verify request A"; break;
231case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B: str="DTLS1 write hello verify request B"; break;
232
201default: str="unknown state"; break; 233default: str="unknown state"; break;
202 } 234 }
203 return(str); 235 return(str);
@@ -345,6 +377,11 @@ case SSL23_ST_CR_SRVR_HELLO_B: str="23RSHA"; break;
345case SSL23_ST_SR_CLNT_HELLO_A: str="23RCHA"; break; 377case SSL23_ST_SR_CLNT_HELLO_A: str="23RCHA"; break;
346case SSL23_ST_SR_CLNT_HELLO_B: str="23RCHB"; break; 378case SSL23_ST_SR_CLNT_HELLO_B: str="23RCHB"; break;
347#endif 379#endif
380/* DTLS */
381case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_A: str="DRCHVA"; break;
382case DTLS1_ST_CR_HELLO_VERIFY_REQUEST_B: str="DRCHVB"; break;
383case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_A: str="DWCHVA"; break;
384case DTLS1_ST_SW_HELLO_VERIFY_REQUEST_B: str="DWCHVB"; break;
348 385
349default: str="UNKWN "; break; 386default: str="UNKWN "; break;
350 } 387 }
@@ -403,6 +440,12 @@ const char *SSL_alert_desc_string(int value)
403 case TLS1_AD_INTERNAL_ERROR: str="IE"; break; 440 case TLS1_AD_INTERNAL_ERROR: str="IE"; break;
404 case TLS1_AD_USER_CANCELLED: str="US"; break; 441 case TLS1_AD_USER_CANCELLED: str="US"; break;
405 case TLS1_AD_NO_RENEGOTIATION: str="NR"; break; 442 case TLS1_AD_NO_RENEGOTIATION: str="NR"; break;
443 case TLS1_AD_UNSUPPORTED_EXTENSION: str="UE"; break;
444 case TLS1_AD_CERTIFICATE_UNOBTAINABLE: str="CO"; break;
445 case TLS1_AD_UNRECOGNIZED_NAME: str="UN"; break;
446 case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE: str="BR"; break;
447 case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE: str="BH"; break;
448 case TLS1_AD_UNKNOWN_PSK_IDENTITY: str="UP"; break;
406 default: str="UK"; break; 449 default: str="UK"; break;
407 } 450 }
408 return(str); 451 return(str);
@@ -486,6 +529,24 @@ const char *SSL_alert_desc_string_long(int value)
486 case TLS1_AD_NO_RENEGOTIATION: 529 case TLS1_AD_NO_RENEGOTIATION:
487 str="no renegotiation"; 530 str="no renegotiation";
488 break; 531 break;
532 case TLS1_AD_UNSUPPORTED_EXTENSION:
533 str="unsupported extension";
534 break;
535 case TLS1_AD_CERTIFICATE_UNOBTAINABLE:
536 str="certificate unobtainable";
537 break;
538 case TLS1_AD_UNRECOGNIZED_NAME:
539 str="unrecognized name";
540 break;
541 case TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE:
542 str="bad certificate status response";
543 break;
544 case TLS1_AD_BAD_CERTIFICATE_HASH_VALUE:
545 str="bad certificate hash value";
546 break;
547 case TLS1_AD_UNKNOWN_PSK_IDENTITY:
548 str="unknown PSK identity";
549 break;
489 default: str="unknown"; break; 550 default: str="unknown"; break;
490 } 551 }
491 return(str); 552 return(str);
diff --git a/src/lib/libssl/src/ssl/ssl_txt.c b/src/lib/libssl/src/ssl/ssl_txt.c
index 06b86750fd..3122440e26 100644
--- a/src/lib/libssl/src/ssl/ssl_txt.c
+++ b/src/lib/libssl/src/ssl/ssl_txt.c
@@ -55,6 +55,32 @@
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ====================================================================
59 * Copyright 2005 Nokia. All rights reserved.
60 *
61 * The portions of the attached software ("Contribution") is developed by
62 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
63 * license.
64 *
65 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
66 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
67 * support (see RFC 4279) to OpenSSL.
68 *
69 * No patent licenses or other rights except those expressly stated in
70 * the OpenSSL open source license shall be deemed granted or received
71 * expressly, by implication, estoppel, or otherwise.
72 *
73 * No assurances are provided by Nokia that the Contribution does not
74 * infringe the patent or other intellectual property rights of any third
75 * party or that the license provides you with all the necessary rights
76 * to make use of the Contribution.
77 *
78 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
79 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
80 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
81 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
82 * OTHERWISE.
83 */
58 84
59#include <stdio.h> 85#include <stdio.h>
60#include <openssl/buffer.h> 86#include <openssl/buffer.h>
@@ -91,6 +117,10 @@ int SSL_SESSION_print(BIO *bp, const SSL_SESSION *x)
91 s="SSLv3"; 117 s="SSLv3";
92 else if (x->ssl_version == TLS1_VERSION) 118 else if (x->ssl_version == TLS1_VERSION)
93 s="TLSv1"; 119 s="TLSv1";
120 else if (x->ssl_version == DTLS1_VERSION)
121 s="DTLSv1";
122 else if (x->ssl_version == DTLS1_BAD_VER)
123 s="DTLSv1-bad";
94 else 124 else
95 s="unknown"; 125 s="unknown";
96 if (BIO_printf(bp," Protocol : %s\n",s) <= 0) goto err; 126 if (BIO_printf(bp," Protocol : %s\n",s) <= 0) goto err;
@@ -151,6 +181,12 @@ int SSL_SESSION_print(BIO *bp, const SSL_SESSION *x)
151 if (BIO_printf(bp,"%02X",x->krb5_client_princ[i]) <= 0) goto err; 181 if (BIO_printf(bp,"%02X",x->krb5_client_princ[i]) <= 0) goto err;
152 } 182 }
153#endif /* OPENSSL_NO_KRB5 */ 183#endif /* OPENSSL_NO_KRB5 */
184#ifndef OPENSSL_NO_PSK
185 if (BIO_puts(bp,"\n PSK identity: ") <= 0) goto err;
186 if (BIO_printf(bp, "%s", x->psk_identity ? x->psk_identity : "None") <= 0) goto err;
187 if (BIO_puts(bp,"\n PSK identity hint: ") <= 0) goto err;
188 if (BIO_printf(bp, "%s", x->psk_identity_hint ? x->psk_identity_hint : "None") <= 0) goto err;
189#endif
154#ifndef OPENSSL_NO_TLSEXT 190#ifndef OPENSSL_NO_TLSEXT
155 if (x->tlsext_tick_lifetime_hint) 191 if (x->tlsext_tick_lifetime_hint)
156 { 192 {
@@ -166,19 +202,20 @@ int SSL_SESSION_print(BIO *bp, const SSL_SESSION *x)
166 goto err; 202 goto err;
167 } 203 }
168#endif 204#endif
205
169#ifndef OPENSSL_NO_COMP 206#ifndef OPENSSL_NO_COMP
170 if (x->compress_meth != 0) 207 if (x->compress_meth != 0)
171 { 208 {
172 SSL_COMP *comp = NULL; 209 SSL_COMP *comp = NULL;
173 210
174 ssl_cipher_get_evp(x,NULL,NULL,&comp); 211 ssl_cipher_get_evp(x,NULL,NULL,NULL,NULL,&comp);
175 if (comp == NULL) 212 if (comp == NULL)
176 { 213 {
177 if (BIO_printf(bp,"\n Compression: %d",x->compress_meth) <= 0) goto err; 214 if (BIO_printf(bp,"\n Compression: %d",x->compress_meth) <= 0) goto err;
178 } 215 }
179 else 216 else
180 { 217 {
181 if (BIO_printf(bp,"\n Compression: %d (%s)", comp->id,comp->method->name) <= 0) goto err; 218 if (BIO_printf(bp,"\n Compression: %d (%s)", comp->id,comp->method->name) <= 0) goto err;
182 } 219 }
183 } 220 }
184#endif 221#endif
diff --git a/src/lib/libssl/src/ssl/ssltest.c b/src/lib/libssl/src/ssl/ssltest.c
index b09c542087..abf214ad7f 100644
--- a/src/lib/libssl/src/ssl/ssltest.c
+++ b/src/lib/libssl/src/ssl/ssltest.c
@@ -113,6 +113,32 @@
113 * ECC cipher suite support in OpenSSL originally developed by 113 * ECC cipher suite support in OpenSSL originally developed by
114 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project. 114 * SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
115 */ 115 */
116/* ====================================================================
117 * Copyright 2005 Nokia. All rights reserved.
118 *
119 * The portions of the attached software ("Contribution") is developed by
120 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
121 * license.
122 *
123 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
124 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
125 * support (see RFC 4279) to OpenSSL.
126 *
127 * No patent licenses or other rights except those expressly stated in
128 * the OpenSSL open source license shall be deemed granted or received
129 * expressly, by implication, estoppel, or otherwise.
130 *
131 * No assurances are provided by Nokia that the Contribution does not
132 * infringe the patent or other intellectual property rights of any third
133 * party or that the license provides you with all the necessary rights
134 * to make use of the Contribution.
135 *
136 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
137 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
138 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
139 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
140 * OTHERWISE.
141 */
116 142
117#define _BSD_SOURCE 1 /* Or gethostname won't be declared properly 143#define _BSD_SOURCE 1 /* Or gethostname won't be declared properly
118 on Linux and GNU platforms. */ 144 on Linux and GNU platforms. */
@@ -128,8 +154,11 @@
128#define USE_SOCKETS 154#define USE_SOCKETS
129#include "e_os.h" 155#include "e_os.h"
130 156
157#ifdef OPENSSL_SYS_VMS
131#define _XOPEN_SOURCE 500 /* Or isascii won't be declared properly on 158#define _XOPEN_SOURCE 500 /* Or isascii won't be declared properly on
132 VMS (at least with DECompHP C). */ 159 VMS (at least with DECompHP C). */
160#endif
161
133#include <ctype.h> 162#include <ctype.h>
134 163
135#include <openssl/bio.h> 164#include <openssl/bio.h>
@@ -207,6 +236,16 @@ static DH *get_dh1024(void);
207static DH *get_dh1024dsa(void); 236static DH *get_dh1024dsa(void);
208#endif 237#endif
209 238
239
240static char *psk_key=NULL; /* by default PSK is not used */
241#ifndef OPENSSL_NO_PSK
242static unsigned int psk_client_callback(SSL *ssl, const char *hint, char *identity,
243 unsigned int max_identity_len, unsigned char *psk,
244 unsigned int max_psk_len);
245static unsigned int psk_server_callback(SSL *ssl, const char *identity, unsigned char *psk,
246 unsigned int max_psk_len);
247#endif
248
210static BIO *bio_err=NULL; 249static BIO *bio_err=NULL;
211static BIO *bio_stdout=NULL; 250static BIO *bio_stdout=NULL;
212 251
@@ -229,9 +268,6 @@ static void sv_usage(void)
229 { 268 {
230 fprintf(stderr,"usage: ssltest [args ...]\n"); 269 fprintf(stderr,"usage: ssltest [args ...]\n");
231 fprintf(stderr,"\n"); 270 fprintf(stderr,"\n");
232#ifdef OPENSSL_FIPS
233 fprintf(stderr,"-F - run test in FIPS mode\n");
234#endif
235 fprintf(stderr," -server_auth - check server certificate\n"); 271 fprintf(stderr," -server_auth - check server certificate\n");
236 fprintf(stderr," -client_auth - do client authentication\n"); 272 fprintf(stderr," -client_auth - do client authentication\n");
237 fprintf(stderr," -proxy - allow proxy certificates\n"); 273 fprintf(stderr," -proxy - allow proxy certificates\n");
@@ -250,6 +286,9 @@ static void sv_usage(void)
250#ifndef OPENSSL_NO_ECDH 286#ifndef OPENSSL_NO_ECDH
251 fprintf(stderr," -no_ecdhe - disable ECDHE\n"); 287 fprintf(stderr," -no_ecdhe - disable ECDHE\n");
252#endif 288#endif
289#ifndef OPENSSL_NO_PSK
290 fprintf(stderr," -psk arg - PSK in hex (without 0x)\n");
291#endif
253#ifndef OPENSSL_NO_SSL2 292#ifndef OPENSSL_NO_SSL2
254 fprintf(stderr," -ssl2 - use SSLv2\n"); 293 fprintf(stderr," -ssl2 - use SSLv2\n");
255#endif 294#endif
@@ -281,7 +320,7 @@ static void sv_usage(void)
281 320
282static void print_details(SSL *c_ssl, const char *prefix) 321static void print_details(SSL *c_ssl, const char *prefix)
283 { 322 {
284 SSL_CIPHER *ciph; 323 const SSL_CIPHER *ciph;
285 X509 *cert; 324 X509 *cert;
286 325
287 ciph=SSL_get_current_cipher(c_ssl); 326 ciph=SSL_get_current_cipher(c_ssl);
@@ -386,6 +425,25 @@ static void lock_dbg_cb(int mode, int type, const char *file, int line)
386 } 425 }
387 } 426 }
388 427
428#ifdef TLSEXT_TYPE_opaque_prf_input
429struct cb_info_st { void *input; size_t len; int ret; };
430struct cb_info_st co1 = { "C", 1, 1 }; /* try to negotiate oqaque PRF input */
431struct cb_info_st co2 = { "C", 1, 2 }; /* insist on oqaque PRF input */
432struct cb_info_st so1 = { "S", 1, 1 }; /* try to negotiate oqaque PRF input */
433struct cb_info_st so2 = { "S", 1, 2 }; /* insist on oqaque PRF input */
434
435int opaque_prf_input_cb(SSL *ssl, void *peerinput, size_t len, void *arg_)
436 {
437 struct cb_info_st *arg = arg_;
438
439 if (arg == NULL)
440 return 1;
441
442 if (!SSL_set_tlsext_opaque_prf_input(ssl, arg->input, arg->len))
443 return 0;
444 return arg->ret;
445 }
446#endif
389 447
390int main(int argc, char *argv[]) 448int main(int argc, char *argv[])
391 { 449 {
@@ -407,19 +465,20 @@ int main(int argc, char *argv[])
407#endif 465#endif
408 SSL_CTX *s_ctx=NULL; 466 SSL_CTX *s_ctx=NULL;
409 SSL_CTX *c_ctx=NULL; 467 SSL_CTX *c_ctx=NULL;
410 SSL_METHOD *meth=NULL; 468 const SSL_METHOD *meth=NULL;
411 SSL *c_ssl,*s_ssl; 469 SSL *c_ssl,*s_ssl;
412 int number=1,reuse=0; 470 int number=1,reuse=0;
413 long bytes=256L; 471 long bytes=256L;
414#ifndef OPENSSL_NO_DH 472#ifndef OPENSSL_NO_DH
415 DH *dh; 473 DH *dh;
416 int dhe1024 = 1, dhe1024dsa = 0; 474 int dhe1024 = 0, dhe1024dsa = 0;
417#endif 475#endif
418#ifndef OPENSSL_NO_ECDH 476#ifndef OPENSSL_NO_ECDH
419 EC_KEY *ecdh = NULL; 477 EC_KEY *ecdh = NULL;
420#endif 478#endif
421 int no_dhe = 0; 479 int no_dhe = 0;
422 int no_ecdhe = 0; 480 int no_ecdhe = 0;
481 int no_psk = 0;
423 int print_time = 0; 482 int print_time = 0;
424 clock_t s_time = 0, c_time = 0; 483 clock_t s_time = 0, c_time = 0;
425 int comp = 0; 484 int comp = 0;
@@ -428,15 +487,12 @@ int main(int argc, char *argv[])
428#endif 487#endif
429 STACK_OF(SSL_COMP) *ssl_comp_methods = NULL; 488 STACK_OF(SSL_COMP) *ssl_comp_methods = NULL;
430 int test_cipherlist = 0; 489 int test_cipherlist = 0;
431#ifdef OPENSSL_FIPS
432 int fips_mode=0;
433#endif
434 490
435 verbose = 0; 491 verbose = 0;
436 debug = 0; 492 debug = 0;
437 cipher = 0; 493 cipher = 0;
438 494
439 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE); 495 bio_err=BIO_new_fp(stderr,BIO_NOCLOSE|BIO_FP_TEXT);
440 496
441 CRYPTO_set_locking_callback(lock_dbg_cb); 497 CRYPTO_set_locking_callback(lock_dbg_cb);
442 498
@@ -455,23 +511,14 @@ int main(int argc, char *argv[])
455 511
456 RAND_seed(rnd_seed, sizeof rnd_seed); 512 RAND_seed(rnd_seed, sizeof rnd_seed);
457 513
458 bio_stdout=BIO_new_fp(stdout,BIO_NOCLOSE); 514 bio_stdout=BIO_new_fp(stdout,BIO_NOCLOSE|BIO_FP_TEXT);
459 515
460 argc--; 516 argc--;
461 argv++; 517 argv++;
462 518
463 while (argc >= 1) 519 while (argc >= 1)
464 { 520 {
465 if(!strcmp(*argv,"-F")) 521 if (strcmp(*argv,"-server_auth") == 0)
466 {
467#ifdef OPENSSL_FIPS
468 fips_mode=1;
469#else
470 fprintf(stderr,"not compiled with FIPS support, so exitting without running.\n");
471 EXIT(0);
472#endif
473 }
474 else if (strcmp(*argv,"-server_auth") == 0)
475 server_auth=1; 522 server_auth=1;
476 else if (strcmp(*argv,"-client_auth") == 0) 523 else if (strcmp(*argv,"-client_auth") == 0)
477 client_auth=1; 524 client_auth=1;
@@ -511,6 +558,20 @@ int main(int argc, char *argv[])
511 no_dhe=1; 558 no_dhe=1;
512 else if (strcmp(*argv,"-no_ecdhe") == 0) 559 else if (strcmp(*argv,"-no_ecdhe") == 0)
513 no_ecdhe=1; 560 no_ecdhe=1;
561 else if (strcmp(*argv,"-psk") == 0)
562 {
563 if (--argc < 1) goto bad;
564 psk_key=*(++argv);
565#ifndef OPENSSL_NO_PSK
566 if (strspn(psk_key, "abcdefABCDEF1234567890") != strlen(psk_key))
567 {
568 BIO_printf(bio_err,"Not a hex number '%s'\n",*argv);
569 goto bad;
570 }
571#else
572 no_psk=1;
573#endif
574 }
514 else if (strcmp(*argv,"-ssl2") == 0) 575 else if (strcmp(*argv,"-ssl2") == 0)
515 ssl2=1; 576 ssl2=1;
516 else if (strcmp(*argv,"-tls1") == 0) 577 else if (strcmp(*argv,"-tls1") == 0)
@@ -653,20 +714,6 @@ bad:
653 EXIT(1); 714 EXIT(1);
654 } 715 }
655 716
656#ifdef OPENSSL_FIPS
657 if(fips_mode)
658 {
659 if(!FIPS_mode_set(1))
660 {
661 ERR_load_crypto_strings();
662 ERR_print_errors(BIO_new_fp(stderr,BIO_NOCLOSE));
663 EXIT(1);
664 }
665 else
666 fprintf(stderr,"*** IN FIPS MODE ***\n");
667 }
668#endif
669
670 if (print_time) 717 if (print_time)
671 { 718 {
672 if (!bio_pair) 719 if (!bio_pair)
@@ -811,6 +858,13 @@ bad:
811 SSL_CTX_set_tmp_rsa_callback(s_ctx,tmp_rsa_cb); 858 SSL_CTX_set_tmp_rsa_callback(s_ctx,tmp_rsa_cb);
812#endif 859#endif
813 860
861#ifdef TLSEXT_TYPE_opaque_prf_input
862 SSL_CTX_set_tlsext_opaque_prf_input_callback(c_ctx, opaque_prf_input_cb);
863 SSL_CTX_set_tlsext_opaque_prf_input_callback(s_ctx, opaque_prf_input_cb);
864 SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(c_ctx, &co1); /* or &co2 or NULL */
865 SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(s_ctx, &so1); /* or &so2 or NULL */
866#endif
867
814 if (!SSL_CTX_use_certificate_file(s_ctx,server_cert,SSL_FILETYPE_PEM)) 868 if (!SSL_CTX_use_certificate_file(s_ctx,server_cert,SSL_FILETYPE_PEM))
815 { 869 {
816 ERR_print_errors(bio_err); 870 ERR_print_errors(bio_err);
@@ -862,6 +916,31 @@ bad:
862 SSL_CTX_set_session_id_context(s_ctx, (void *)&session_id_context, sizeof session_id_context); 916 SSL_CTX_set_session_id_context(s_ctx, (void *)&session_id_context, sizeof session_id_context);
863 } 917 }
864 918
919 /* Use PSK only if PSK key is given */
920 if (psk_key != NULL)
921 {
922 /* no_psk is used to avoid putting psk command to openssl tool */
923 if (no_psk)
924 {
925 /* if PSK is not compiled in and psk key is
926 * given, do nothing and exit successfully */
927 ret=0;
928 goto end;
929 }
930#ifndef OPENSSL_NO_PSK
931 SSL_CTX_set_psk_client_callback(c_ctx, psk_client_callback);
932 SSL_CTX_set_psk_server_callback(s_ctx, psk_server_callback);
933 if (debug)
934 BIO_printf(bio_err,"setting PSK identity hint to s_ctx\n");
935 if (!SSL_CTX_use_psk_identity_hint(s_ctx, "ctx server identity_hint"))
936 {
937 BIO_printf(bio_err,"error setting PSK identity hint to s_ctx\n");
938 ERR_print_errors(bio_err);
939 goto end;
940 }
941#endif
942 }
943
865 c_ssl=SSL_new(c_ctx); 944 c_ssl=SSL_new(c_ctx);
866 s_ssl=SSL_new(s_ctx); 945 s_ssl=SSL_new(s_ctx);
867 946
@@ -938,7 +1017,7 @@ end:
938#endif 1017#endif
939 CRYPTO_cleanup_all_ex_data(); 1018 CRYPTO_cleanup_all_ex_data();
940 ERR_free_strings(); 1019 ERR_free_strings();
941 ERR_remove_state(0); 1020 ERR_remove_thread_state(NULL);
942 EVP_cleanup(); 1021 EVP_cleanup();
943 CRYPTO_mem_leaks(bio_err); 1022 CRYPTO_mem_leaks(bio_err);
944 if (bio_err != NULL) BIO_free(bio_err); 1023 if (bio_err != NULL) BIO_free(bio_err);
@@ -2088,7 +2167,15 @@ static int MS_CALLBACK app_verify_callback(X509_STORE_CTX *ctx, void *arg)
2088 } 2167 }
2089 2168
2090#ifndef OPENSSL_NO_X509_VERIFY 2169#ifndef OPENSSL_NO_X509_VERIFY
2170# ifdef OPENSSL_FIPS
2171 if(s->version == TLS1_VERSION)
2172 FIPS_allow_md5(1);
2173# endif
2091 ok = X509_verify_cert(ctx); 2174 ok = X509_verify_cert(ctx);
2175# ifdef OPENSSL_FIPS
2176 if(s->version == TLS1_VERSION)
2177 FIPS_allow_md5(0);
2178# endif
2092#endif 2179#endif
2093 2180
2094 if (cb_arg->proxy_auth) 2181 if (cb_arg->proxy_auth)
@@ -2257,11 +2344,74 @@ static DH *get_dh1024dsa()
2257 } 2344 }
2258#endif 2345#endif
2259 2346
2347#ifndef OPENSSL_NO_PSK
2348/* convert the PSK key (psk_key) in ascii to binary (psk) */
2349static int psk_key2bn(const char *pskkey, unsigned char *psk,
2350 unsigned int max_psk_len)
2351 {
2352 int ret;
2353 BIGNUM *bn = NULL;
2354
2355 ret = BN_hex2bn(&bn, pskkey);
2356 if (!ret)
2357 {
2358 BIO_printf(bio_err,"Could not convert PSK key '%s' to BIGNUM\n", pskkey);
2359 if (bn)
2360 BN_free(bn);
2361 return 0;
2362 }
2363 if (BN_num_bytes(bn) > (int)max_psk_len)
2364 {
2365 BIO_printf(bio_err,"psk buffer of callback is too small (%d) for key (%d)\n",
2366 max_psk_len, BN_num_bytes(bn));
2367 BN_free(bn);
2368 return 0;
2369 }
2370 ret = BN_bn2bin(bn, psk);
2371 BN_free(bn);
2372 return ret;
2373 }
2374
2375static unsigned int psk_client_callback(SSL *ssl, const char *hint, char *identity,
2376 unsigned int max_identity_len, unsigned char *psk,
2377 unsigned int max_psk_len)
2378 {
2379 int ret;
2380 unsigned int psk_len = 0;
2381
2382 ret = BIO_snprintf(identity, max_identity_len, "Client_identity");
2383 if (ret < 0)
2384 goto out_err;
2385 if (debug)
2386 fprintf(stderr, "client: created identity '%s' len=%d\n", identity, ret);
2387 ret = psk_key2bn(psk_key, psk, max_psk_len);
2388 if (ret < 0)
2389 goto out_err;
2390 psk_len = ret;
2391out_err:
2392 return psk_len;
2393 }
2394
2395static unsigned int psk_server_callback(SSL *ssl, const char *identity,
2396 unsigned char *psk, unsigned int max_psk_len)
2397 {
2398 unsigned int psk_len=0;
2399
2400 if (strcmp(identity, "Client_identity") != 0)
2401 {
2402 BIO_printf(bio_err, "server: PSK error: client identity not found\n");
2403 return 0;
2404 }
2405 psk_len=psk_key2bn(psk_key, psk, max_psk_len);
2406 return psk_len;
2407 }
2408#endif
2409
2260static int do_test_cipherlist(void) 2410static int do_test_cipherlist(void)
2261 { 2411 {
2262 int i = 0; 2412 int i = 0;
2263 const SSL_METHOD *meth; 2413 const SSL_METHOD *meth;
2264 SSL_CIPHER *ci, *tci = NULL; 2414 const SSL_CIPHER *ci, *tci = NULL;
2265 2415
2266#ifndef OPENSSL_NO_SSL2 2416#ifndef OPENSSL_NO_SSL2
2267 fprintf(stderr, "testing SSLv2 cipher list order: "); 2417 fprintf(stderr, "testing SSLv2 cipher list order: ");
diff --git a/src/lib/libssl/src/ssl/t1_clnt.c b/src/lib/libssl/src/ssl/t1_clnt.c
index 4d1e198cdc..c87af17712 100644
--- a/src/lib/libssl/src/ssl/t1_clnt.c
+++ b/src/lib/libssl/src/ssl/t1_clnt.c
@@ -63,8 +63,8 @@
63#include <openssl/objects.h> 63#include <openssl/objects.h>
64#include <openssl/evp.h> 64#include <openssl/evp.h>
65 65
66static SSL_METHOD *tls1_get_client_method(int ver); 66static const SSL_METHOD *tls1_get_client_method(int ver);
67static SSL_METHOD *tls1_get_client_method(int ver) 67static const SSL_METHOD *tls1_get_client_method(int ver)
68 { 68 {
69 if (ver == TLS1_VERSION) 69 if (ver == TLS1_VERSION)
70 return(TLSv1_client_method()); 70 return(TLSv1_client_method());
diff --git a/src/lib/libssl/src/ssl/t1_enc.c b/src/lib/libssl/src/ssl/t1_enc.c
index 7cb3e29a41..9719541f2b 100644
--- a/src/lib/libssl/src/ssl/t1_enc.c
+++ b/src/lib/libssl/src/ssl/t1_enc.c
@@ -56,7 +56,7 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. 59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
60 * 60 *
61 * Redistribution and use in source and binary forms, with or without 61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions 62 * modification, are permitted provided that the following conditions
@@ -108,6 +108,32 @@
108 * Hudson (tjh@cryptsoft.com). 108 * Hudson (tjh@cryptsoft.com).
109 * 109 *
110 */ 110 */
111/* ====================================================================
112 * Copyright 2005 Nokia. All rights reserved.
113 *
114 * The portions of the attached software ("Contribution") is developed by
115 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
116 * license.
117 *
118 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
119 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
120 * support (see RFC 4279) to OpenSSL.
121 *
122 * No patent licenses or other rights except those expressly stated in
123 * the OpenSSL open source license shall be deemed granted or received
124 * expressly, by implication, estoppel, or otherwise.
125 *
126 * No assurances are provided by Nokia that the Contribution does not
127 * infringe the patent or other intellectual property rights of any third
128 * party or that the license provides you with all the necessary rights
129 * to make use of the Contribution.
130 *
131 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
132 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
133 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
134 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
135 * OTHERWISE.
136 */
111 137
112#include <stdio.h> 138#include <stdio.h>
113#include "ssl_locl.h" 139#include "ssl_locl.h"
@@ -121,8 +147,14 @@
121#include <openssl/des.h> 147#include <openssl/des.h>
122#endif 148#endif
123 149
124static void tls1_P_hash(const EVP_MD *md, const unsigned char *sec, 150/* seed1 through seed5 are virtually concatenated */
125 int sec_len, unsigned char *seed, int seed_len, 151static int tls1_P_hash(const EVP_MD *md, const unsigned char *sec,
152 int sec_len,
153 const void *seed1, int seed1_len,
154 const void *seed2, int seed2_len,
155 const void *seed3, int seed3_len,
156 const void *seed4, int seed4_len,
157 const void *seed5, int seed5_len,
126 unsigned char *out, int olen) 158 unsigned char *out, int olen)
127 { 159 {
128 int chunk,n; 160 int chunk,n;
@@ -131,84 +163,133 @@ static void tls1_P_hash(const EVP_MD *md, const unsigned char *sec,
131 HMAC_CTX ctx_tmp; 163 HMAC_CTX ctx_tmp;
132 unsigned char A1[EVP_MAX_MD_SIZE]; 164 unsigned char A1[EVP_MAX_MD_SIZE];
133 unsigned int A1_len; 165 unsigned int A1_len;
166 int ret = 0;
134 167
135 chunk=EVP_MD_size(md); 168 chunk=EVP_MD_size(md);
169 OPENSSL_assert(chunk >= 0);
136 170
137 HMAC_CTX_init(&ctx); 171 HMAC_CTX_init(&ctx);
138 HMAC_CTX_init(&ctx_tmp); 172 HMAC_CTX_init(&ctx_tmp);
139 HMAC_CTX_set_flags(&ctx, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); 173 if (!HMAC_Init_ex(&ctx,sec,sec_len,md, NULL))
140 HMAC_CTX_set_flags(&ctx_tmp, EVP_MD_CTX_FLAG_NON_FIPS_ALLOW); 174 goto err;
141 HMAC_Init_ex(&ctx,sec,sec_len,md, NULL); 175 if (!HMAC_Init_ex(&ctx_tmp,sec,sec_len,md, NULL))
142 HMAC_Init_ex(&ctx_tmp,sec,sec_len,md, NULL); 176 goto err;
143 HMAC_Update(&ctx,seed,seed_len); 177 if (seed1 != NULL && !HMAC_Update(&ctx,seed1,seed1_len))
144 HMAC_Final(&ctx,A1,&A1_len); 178 goto err;
179 if (seed2 != NULL && !HMAC_Update(&ctx,seed2,seed2_len))
180 goto err;
181 if (seed3 != NULL && !HMAC_Update(&ctx,seed3,seed3_len))
182 goto err;
183 if (seed4 != NULL && !HMAC_Update(&ctx,seed4,seed4_len))
184 goto err;
185 if (seed5 != NULL && !HMAC_Update(&ctx,seed5,seed5_len))
186 goto err;
187 if (!HMAC_Final(&ctx,A1,&A1_len))
188 goto err;
145 189
146 n=0; 190 n=0;
147 for (;;) 191 for (;;)
148 { 192 {
149 HMAC_Init_ex(&ctx,NULL,0,NULL,NULL); /* re-init */ 193 if (!HMAC_Init_ex(&ctx,NULL,0,NULL,NULL)) /* re-init */
150 HMAC_Init_ex(&ctx_tmp,NULL,0,NULL,NULL); /* re-init */ 194 goto err;
151 HMAC_Update(&ctx,A1,A1_len); 195 if (!HMAC_Init_ex(&ctx_tmp,NULL,0,NULL,NULL)) /* re-init */
152 HMAC_Update(&ctx_tmp,A1,A1_len); 196 goto err;
153 HMAC_Update(&ctx,seed,seed_len); 197 if (!HMAC_Update(&ctx,A1,A1_len))
198 goto err;
199 if (!HMAC_Update(&ctx_tmp,A1,A1_len))
200 goto err;
201 if (seed1 != NULL && !HMAC_Update(&ctx,seed1,seed1_len))
202 goto err;
203 if (seed2 != NULL && !HMAC_Update(&ctx,seed2,seed2_len))
204 goto err;
205 if (seed3 != NULL && !HMAC_Update(&ctx,seed3,seed3_len))
206 goto err;
207 if (seed4 != NULL && !HMAC_Update(&ctx,seed4,seed4_len))
208 goto err;
209 if (seed5 != NULL && !HMAC_Update(&ctx,seed5,seed5_len))
210 goto err;
154 211
155 if (olen > chunk) 212 if (olen > chunk)
156 { 213 {
157 HMAC_Final(&ctx,out,&j); 214 if (!HMAC_Final(&ctx,out,&j))
215 goto err;
158 out+=j; 216 out+=j;
159 olen-=j; 217 olen-=j;
160 HMAC_Final(&ctx_tmp,A1,&A1_len); /* calc the next A1 value */ 218 if (!HMAC_Final(&ctx_tmp,A1,&A1_len)) /* calc the next A1 value */
219 goto err;
161 } 220 }
162 else /* last one */ 221 else /* last one */
163 { 222 {
164 HMAC_Final(&ctx,A1,&A1_len); 223 if (!HMAC_Final(&ctx,A1,&A1_len))
224 goto err;
165 memcpy(out,A1,olen); 225 memcpy(out,A1,olen);
166 break; 226 break;
167 } 227 }
168 } 228 }
229 ret = 1;
230err:
169 HMAC_CTX_cleanup(&ctx); 231 HMAC_CTX_cleanup(&ctx);
170 HMAC_CTX_cleanup(&ctx_tmp); 232 HMAC_CTX_cleanup(&ctx_tmp);
171 OPENSSL_cleanse(A1,sizeof(A1)); 233 OPENSSL_cleanse(A1,sizeof(A1));
234 return ret;
172 } 235 }
173 236
174static void tls1_PRF(const EVP_MD *md5, const EVP_MD *sha1, 237/* seed1 through seed5 are virtually concatenated */
175 unsigned char *label, int label_len, 238static int tls1_PRF(long digest_mask,
176 const unsigned char *sec, int slen, unsigned char *out1, 239 const void *seed1, int seed1_len,
240 const void *seed2, int seed2_len,
241 const void *seed3, int seed3_len,
242 const void *seed4, int seed4_len,
243 const void *seed5, int seed5_len,
244 const unsigned char *sec, int slen,
245 unsigned char *out1,
177 unsigned char *out2, int olen) 246 unsigned char *out2, int olen)
178 { 247 {
179 int len,i; 248 int len,i,idx,count;
180 const unsigned char *S1,*S2; 249 const unsigned char *S1;
181 250 long m;
182 len=slen/2; 251 const EVP_MD *md;
252 int ret = 0;
253
254 /* Count number of digests and partition sec evenly */
255 count=0;
256 for (idx=0;ssl_get_handshake_digest(idx,&m,&md);idx++) {
257 if ((m<<TLS1_PRF_DGST_SHIFT) & digest_mask) count++;
258 }
259 len=slen/count;
183 S1=sec; 260 S1=sec;
184 S2= &(sec[len]); 261 memset(out1,0,olen);
185 len+=(slen&1); /* add for odd, make longer */ 262 for (idx=0;ssl_get_handshake_digest(idx,&m,&md);idx++) {
186 263 if ((m<<TLS1_PRF_DGST_SHIFT) & digest_mask) {
187 264 if (!md) {
188 tls1_P_hash(md5 ,S1,len,label,label_len,out1,olen); 265 SSLerr(SSL_F_TLS1_PRF,
189 tls1_P_hash(sha1,S2,len,label,label_len,out2,olen); 266 SSL_R_UNSUPPORTED_DIGEST_TYPE);
190 267 goto err;
191 for (i=0; i<olen; i++) 268 }
192 out1[i]^=out2[i]; 269 if (!tls1_P_hash(md ,S1,len+(slen&1),
270 seed1,seed1_len,seed2,seed2_len,seed3,seed3_len,seed4,seed4_len,seed5,seed5_len,
271 out2,olen))
272 goto err;
273 S1+=len;
274 for (i=0; i<olen; i++)
275 {
276 out1[i]^=out2[i];
277 }
278 }
193 } 279 }
194 280 ret = 1;
195static void tls1_generate_key_block(SSL *s, unsigned char *km, 281err:
282 return ret;
283}
284static int tls1_generate_key_block(SSL *s, unsigned char *km,
196 unsigned char *tmp, int num) 285 unsigned char *tmp, int num)
197 { 286 {
198 unsigned char *p; 287 int ret;
199 unsigned char buf[SSL3_RANDOM_SIZE*2+ 288 ret = tls1_PRF(s->s3->tmp.new_cipher->algorithm2,
200 TLS_MD_MAX_CONST_SIZE]; 289 TLS_MD_KEY_EXPANSION_CONST,TLS_MD_KEY_EXPANSION_CONST_SIZE,
201 p=buf; 290 s->s3->server_random,SSL3_RANDOM_SIZE,
202 291 s->s3->client_random,SSL3_RANDOM_SIZE,
203 memcpy(p,TLS_MD_KEY_EXPANSION_CONST, 292 NULL,0,NULL,0,
204 TLS_MD_KEY_EXPANSION_CONST_SIZE);
205 p+=TLS_MD_KEY_EXPANSION_CONST_SIZE;
206 memcpy(p,s->s3->server_random,SSL3_RANDOM_SIZE);
207 p+=SSL3_RANDOM_SIZE;
208 memcpy(p,s->s3->client_random,SSL3_RANDOM_SIZE);
209 p+=SSL3_RANDOM_SIZE;
210
211 tls1_PRF(s->ctx->md5,s->ctx->sha1,buf,(int)(p-buf),
212 s->session->master_key,s->session->master_key_length, 293 s->session->master_key,s->session->master_key_length,
213 km,tmp,num); 294 km,tmp,num);
214#ifdef KSSL_DEBUG 295#ifdef KSSL_DEBUG
@@ -222,14 +303,14 @@ static void tls1_generate_key_block(SSL *s, unsigned char *km,
222 } 303 }
223 printf("\n"); } 304 printf("\n"); }
224#endif /* KSSL_DEBUG */ 305#endif /* KSSL_DEBUG */
306 return ret;
225 } 307 }
226 308
227int tls1_change_cipher_state(SSL *s, int which) 309int tls1_change_cipher_state(SSL *s, int which)
228 { 310 {
229 static const unsigned char empty[]=""; 311 static const unsigned char empty[]="";
230 unsigned char *p,*key_block,*mac_secret; 312 unsigned char *p,*key_block,*mac_secret;
231 unsigned char *exp_label,buf[TLS_MD_MAX_CONST_SIZE+ 313 unsigned char *exp_label;
232 SSL3_RANDOM_SIZE*2];
233 unsigned char tmp1[EVP_MAX_KEY_LENGTH]; 314 unsigned char tmp1[EVP_MAX_KEY_LENGTH];
234 unsigned char tmp2[EVP_MAX_KEY_LENGTH]; 315 unsigned char tmp2[EVP_MAX_KEY_LENGTH];
235 unsigned char iv1[EVP_MAX_IV_LENGTH*2]; 316 unsigned char iv1[EVP_MAX_IV_LENGTH*2];
@@ -242,12 +323,17 @@ int tls1_change_cipher_state(SSL *s, int which)
242 const SSL_COMP *comp; 323 const SSL_COMP *comp;
243#endif 324#endif
244 const EVP_MD *m; 325 const EVP_MD *m;
326 int mac_type;
327 int *mac_secret_size;
328 EVP_MD_CTX *mac_ctx;
329 EVP_PKEY *mac_key;
245 int is_export,n,i,j,k,exp_label_len,cl; 330 int is_export,n,i,j,k,exp_label_len,cl;
246 int reuse_dd = 0; 331 int reuse_dd = 0;
247 332
248 is_export=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher); 333 is_export=SSL_C_IS_EXPORT(s->s3->tmp.new_cipher);
249 c=s->s3->tmp.new_sym_enc; 334 c=s->s3->tmp.new_sym_enc;
250 m=s->s3->tmp.new_hash; 335 m=s->s3->tmp.new_hash;
336 mac_type = s->s3->tmp.new_mac_pkey_type;
251#ifndef OPENSSL_NO_COMP 337#ifndef OPENSSL_NO_COMP
252 comp=s->s3->tmp.new_compression; 338 comp=s->s3->tmp.new_compression;
253#endif 339#endif
@@ -255,21 +341,28 @@ int tls1_change_cipher_state(SSL *s, int which)
255 341
256#ifdef KSSL_DEBUG 342#ifdef KSSL_DEBUG
257 printf("tls1_change_cipher_state(which= %d) w/\n", which); 343 printf("tls1_change_cipher_state(which= %d) w/\n", which);
258 printf("\talg= %ld, comp= %p\n", s->s3->tmp.new_cipher->algorithms, 344 printf("\talg= %ld/%ld, comp= %p\n",
259 (void *)comp); 345 s->s3->tmp.new_cipher->algorithm_mkey,
260 printf("\tevp_cipher == %p ==? &d_cbc_ede_cipher3\n", (void *)c); 346 s->s3->tmp.new_cipher->algorithm_auth,
347 comp);
348 printf("\tevp_cipher == %p ==? &d_cbc_ede_cipher3\n", c);
261 printf("\tevp_cipher: nid, blksz= %d, %d, keylen=%d, ivlen=%d\n", 349 printf("\tevp_cipher: nid, blksz= %d, %d, keylen=%d, ivlen=%d\n",
262 c->nid,c->block_size,c->key_len,c->iv_len); 350 c->nid,c->block_size,c->key_len,c->iv_len);
263 printf("\tkey_block: len= %d, data= ", s->s3->tmp.key_block_length); 351 printf("\tkey_block: len= %d, data= ", s->s3->tmp.key_block_length);
264 { 352 {
265 int ki; 353 int i;
266 for (ki=0; ki<s->s3->tmp.key_block_length; ki++) 354 for (i=0; i<s->s3->tmp.key_block_length; i++)
267 printf("%02x", key_block[ki]); printf("\n"); 355 printf("%02x", key_block[i]); printf("\n");
268 } 356 }
269#endif /* KSSL_DEBUG */ 357#endif /* KSSL_DEBUG */
270 358
271 if (which & SSL3_CC_READ) 359 if (which & SSL3_CC_READ)
272 { 360 {
361 if (s->s3->tmp.new_cipher->algorithm2 & TLS1_STREAM_MAC)
362 s->mac_flags |= SSL_MAC_FLAG_READ_MAC_STREAM;
363 else
364 s->mac_flags &= ~SSL_MAC_FLAG_READ_MAC_STREAM;
365
273 if (s->enc_read_ctx != NULL) 366 if (s->enc_read_ctx != NULL)
274 reuse_dd = 1; 367 reuse_dd = 1;
275 else if ((s->enc_read_ctx=OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL) 368 else if ((s->enc_read_ctx=OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL)
@@ -278,7 +371,7 @@ int tls1_change_cipher_state(SSL *s, int which)
278 /* make sure it's intialized in case we exit later with an error */ 371 /* make sure it's intialized in case we exit later with an error */
279 EVP_CIPHER_CTX_init(s->enc_read_ctx); 372 EVP_CIPHER_CTX_init(s->enc_read_ctx);
280 dd= s->enc_read_ctx; 373 dd= s->enc_read_ctx;
281 s->read_hash=m; 374 mac_ctx=ssl_replace_hash(&s->read_hash,NULL);
282#ifndef OPENSSL_NO_COMP 375#ifndef OPENSSL_NO_COMP
283 if (s->expand != NULL) 376 if (s->expand != NULL)
284 { 377 {
@@ -304,9 +397,14 @@ int tls1_change_cipher_state(SSL *s, int which)
304 if (s->version != DTLS1_VERSION) 397 if (s->version != DTLS1_VERSION)
305 memset(&(s->s3->read_sequence[0]),0,8); 398 memset(&(s->s3->read_sequence[0]),0,8);
306 mac_secret= &(s->s3->read_mac_secret[0]); 399 mac_secret= &(s->s3->read_mac_secret[0]);
400 mac_secret_size=&(s->s3->read_mac_secret_size);
307 } 401 }
308 else 402 else
309 { 403 {
404 if (s->s3->tmp.new_cipher->algorithm2 & TLS1_STREAM_MAC)
405 s->mac_flags |= SSL_MAC_FLAG_WRITE_MAC_STREAM;
406 else
407 s->mac_flags &= ~SSL_MAC_FLAG_WRITE_MAC_STREAM;
310 if (s->enc_write_ctx != NULL) 408 if (s->enc_write_ctx != NULL)
311 reuse_dd = 1; 409 reuse_dd = 1;
312 else if ((s->enc_write_ctx=OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL) 410 else if ((s->enc_write_ctx=OPENSSL_malloc(sizeof(EVP_CIPHER_CTX))) == NULL)
@@ -315,7 +413,7 @@ int tls1_change_cipher_state(SSL *s, int which)
315 /* make sure it's intialized in case we exit later with an error */ 413 /* make sure it's intialized in case we exit later with an error */
316 EVP_CIPHER_CTX_init(s->enc_write_ctx); 414 EVP_CIPHER_CTX_init(s->enc_write_ctx);
317 dd= s->enc_write_ctx; 415 dd= s->enc_write_ctx;
318 s->write_hash=m; 416 mac_ctx = ssl_replace_hash(&s->write_hash,NULL);
319#ifndef OPENSSL_NO_COMP 417#ifndef OPENSSL_NO_COMP
320 if (s->compress != NULL) 418 if (s->compress != NULL)
321 { 419 {
@@ -336,13 +434,15 @@ int tls1_change_cipher_state(SSL *s, int which)
336 if (s->version != DTLS1_VERSION) 434 if (s->version != DTLS1_VERSION)
337 memset(&(s->s3->write_sequence[0]),0,8); 435 memset(&(s->s3->write_sequence[0]),0,8);
338 mac_secret= &(s->s3->write_mac_secret[0]); 436 mac_secret= &(s->s3->write_mac_secret[0]);
437 mac_secret_size = &(s->s3->write_mac_secret_size);
339 } 438 }
340 439
341 if (reuse_dd) 440 if (reuse_dd)
342 EVP_CIPHER_CTX_cleanup(dd); 441 EVP_CIPHER_CTX_cleanup(dd);
343 442
344 p=s->s3->tmp.key_block; 443 p=s->s3->tmp.key_block;
345 i=EVP_MD_size(m); 444 i=*mac_secret_size=s->s3->tmp.new_mac_secret_size;
445
346 cl=EVP_CIPHER_key_length(c); 446 cl=EVP_CIPHER_key_length(c);
347 j=is_export ? (cl < SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher) ? 447 j=is_export ? (cl < SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher) ?
348 cl : SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher)) : cl; 448 cl : SSL_C_EXPORT_KEYLENGTH(s->s3->tmp.new_cipher)) : cl;
@@ -378,6 +478,10 @@ int tls1_change_cipher_state(SSL *s, int which)
378 } 478 }
379 479
380 memcpy(mac_secret,ms,i); 480 memcpy(mac_secret,ms,i);
481 mac_key = EVP_PKEY_new_mac_key(mac_type, NULL,
482 mac_secret,*mac_secret_size);
483 EVP_DigestSignInit(mac_ctx,NULL,m,NULL,mac_key);
484 EVP_PKEY_free(mac_key);
381#ifdef TLS_DEBUG 485#ifdef TLS_DEBUG
382printf("which = %04X\nmac key=",which); 486printf("which = %04X\nmac key=",which);
383{ int z; for (z=0; z<i; z++) printf("%02X%c",ms[z],((z+1)%16)?' ':'\n'); } 487{ int z; for (z=0; z<i; z++) printf("%02X%c",ms[z],((z+1)%16)?' ':'\n'); }
@@ -387,29 +491,24 @@ printf("which = %04X\nmac key=",which);
387 /* In here I set both the read and write key/iv to the 491 /* In here I set both the read and write key/iv to the
388 * same value since only the correct one will be used :-). 492 * same value since only the correct one will be used :-).
389 */ 493 */
390 p=buf; 494 if (!tls1_PRF(s->s3->tmp.new_cipher->algorithm2,
391 memcpy(p,exp_label,exp_label_len); 495 exp_label,exp_label_len,
392 p+=exp_label_len; 496 s->s3->client_random,SSL3_RANDOM_SIZE,
393 memcpy(p,s->s3->client_random,SSL3_RANDOM_SIZE); 497 s->s3->server_random,SSL3_RANDOM_SIZE,
394 p+=SSL3_RANDOM_SIZE; 498 NULL,0,NULL,0,
395 memcpy(p,s->s3->server_random,SSL3_RANDOM_SIZE); 499 key,j,tmp1,tmp2,EVP_CIPHER_key_length(c)))
396 p+=SSL3_RANDOM_SIZE; 500 goto err2;
397 tls1_PRF(s->ctx->md5,s->ctx->sha1,buf,(int)(p-buf),key,j,
398 tmp1,tmp2,EVP_CIPHER_key_length(c));
399 key=tmp1; 501 key=tmp1;
400 502
401 if (k > 0) 503 if (k > 0)
402 { 504 {
403 p=buf; 505 if (!tls1_PRF(s->s3->tmp.new_cipher->algorithm2,
404 memcpy(p,TLS_MD_IV_BLOCK_CONST, 506 TLS_MD_IV_BLOCK_CONST,TLS_MD_IV_BLOCK_CONST_SIZE,
405 TLS_MD_IV_BLOCK_CONST_SIZE); 507 s->s3->client_random,SSL3_RANDOM_SIZE,
406 p+=TLS_MD_IV_BLOCK_CONST_SIZE; 508 s->s3->server_random,SSL3_RANDOM_SIZE,
407 memcpy(p,s->s3->client_random,SSL3_RANDOM_SIZE); 509 NULL,0,NULL,0,
408 p+=SSL3_RANDOM_SIZE; 510 empty,0,iv1,iv2,k*2))
409 memcpy(p,s->s3->server_random,SSL3_RANDOM_SIZE); 511 goto err2;
410 p+=SSL3_RANDOM_SIZE;
411 tls1_PRF(s->ctx->md5,s->ctx->sha1,buf,p-buf,empty,0,
412 iv1,iv2,k*2);
413 if (client_write) 512 if (client_write)
414 iv=iv1; 513 iv=iv1;
415 else 514 else
@@ -420,13 +519,11 @@ printf("which = %04X\nmac key=",which);
420 s->session->key_arg_length=0; 519 s->session->key_arg_length=0;
421#ifdef KSSL_DEBUG 520#ifdef KSSL_DEBUG
422 { 521 {
423 int ki; 522 int i;
424 printf("EVP_CipherInit_ex(dd,c,key=,iv=,which)\n"); 523 printf("EVP_CipherInit_ex(dd,c,key=,iv=,which)\n");
425 printf("\tkey= "); 524 printf("\tkey= "); for (i=0; i<c->key_len; i++) printf("%02x", key[i]);
426 for (ki=0; ki<c->key_len; ki++) printf("%02x", key[ki]);
427 printf("\n"); 525 printf("\n");
428 printf("\t iv= "); 526 printf("\t iv= "); for (i=0; i<c->iv_len; i++) printf("%02x", iv[i]);
429 for (ki=0; ki<c->iv_len; ki++) printf("%02x", iv[ki]);
430 printf("\n"); 527 printf("\n");
431 } 528 }
432#endif /* KSSL_DEBUG */ 529#endif /* KSSL_DEBUG */
@@ -453,11 +550,13 @@ err2:
453 550
454int tls1_setup_key_block(SSL *s) 551int tls1_setup_key_block(SSL *s)
455 { 552 {
456 unsigned char *p1,*p2; 553 unsigned char *p1,*p2=NULL;
457 const EVP_CIPHER *c; 554 const EVP_CIPHER *c;
458 const EVP_MD *hash; 555 const EVP_MD *hash;
459 int num; 556 int num;
460 SSL_COMP *comp; 557 SSL_COMP *comp;
558 int mac_type= NID_undef,mac_secret_size=0;
559 int ret=0;
461 560
462#ifdef KSSL_DEBUG 561#ifdef KSSL_DEBUG
463 printf ("tls1_setup_key_block()\n"); 562 printf ("tls1_setup_key_block()\n");
@@ -466,7 +565,7 @@ int tls1_setup_key_block(SSL *s)
466 if (s->s3->tmp.key_block_length != 0) 565 if (s->s3->tmp.key_block_length != 0)
467 return(1); 566 return(1);
468 567
469 if (!ssl_cipher_get_evp(s->session,&c,&hash,&comp)) 568 if (!ssl_cipher_get_evp(s->session,&c,&hash,&mac_type,&mac_secret_size,&comp))
470 { 569 {
471 SSLerr(SSL_F_TLS1_SETUP_KEY_BLOCK,SSL_R_CIPHER_OR_HASH_UNAVAILABLE); 570 SSLerr(SSL_F_TLS1_SETUP_KEY_BLOCK,SSL_R_CIPHER_OR_HASH_UNAVAILABLE);
472 return(0); 571 return(0);
@@ -474,20 +573,27 @@ int tls1_setup_key_block(SSL *s)
474 573
475 s->s3->tmp.new_sym_enc=c; 574 s->s3->tmp.new_sym_enc=c;
476 s->s3->tmp.new_hash=hash; 575 s->s3->tmp.new_hash=hash;
477 576 s->s3->tmp.new_mac_pkey_type = mac_type;
478 num=EVP_CIPHER_key_length(c)+EVP_MD_size(hash)+EVP_CIPHER_iv_length(c); 577 s->s3->tmp.new_mac_secret_size = mac_secret_size;
578 num=EVP_CIPHER_key_length(c)+mac_secret_size+EVP_CIPHER_iv_length(c);
479 num*=2; 579 num*=2;
480 580
481 ssl3_cleanup_key_block(s); 581 ssl3_cleanup_key_block(s);
482 582
483 if ((p1=(unsigned char *)OPENSSL_malloc(num)) == NULL) 583 if ((p1=(unsigned char *)OPENSSL_malloc(num)) == NULL)
584 {
585 SSLerr(SSL_F_TLS1_SETUP_KEY_BLOCK,ERR_R_MALLOC_FAILURE);
484 goto err; 586 goto err;
485 if ((p2=(unsigned char *)OPENSSL_malloc(num)) == NULL) 587 }
486 goto err;
487 588
488 s->s3->tmp.key_block_length=num; 589 s->s3->tmp.key_block_length=num;
489 s->s3->tmp.key_block=p1; 590 s->s3->tmp.key_block=p1;
490 591
592 if ((p2=(unsigned char *)OPENSSL_malloc(num)) == NULL)
593 {
594 SSLerr(SSL_F_TLS1_SETUP_KEY_BLOCK,ERR_R_MALLOC_FAILURE);
595 goto err;
596 }
491 597
492#ifdef TLS_DEBUG 598#ifdef TLS_DEBUG
493printf("client random\n"); 599printf("client random\n");
@@ -497,9 +603,8 @@ printf("server random\n");
497printf("pre-master\n"); 603printf("pre-master\n");
498{ int z; for (z=0; z<s->session->master_key_length; z++) printf("%02X%c",s->session->master_key[z],((z+1)%16)?' ':'\n'); } 604{ int z; for (z=0; z<s->session->master_key_length; z++) printf("%02X%c",s->session->master_key[z],((z+1)%16)?' ':'\n'); }
499#endif 605#endif
500 tls1_generate_key_block(s,p1,p2,num); 606 if (!tls1_generate_key_block(s,p1,p2,num))
501 OPENSSL_cleanse(p2,num); 607 goto err;
502 OPENSSL_free(p2);
503#ifdef TLS_DEBUG 608#ifdef TLS_DEBUG
504printf("\nkey block\n"); 609printf("\nkey block\n");
505{ int z; for (z=0; z<num; z++) printf("%02X%c",p1[z],((z+1)%16)?' ':'\n'); } 610{ int z; for (z=0; z<num; z++) printf("%02X%c",p1[z],((z+1)%16)?' ':'\n'); }
@@ -514,20 +619,24 @@ printf("\nkey block\n");
514 619
515 if (s->session->cipher != NULL) 620 if (s->session->cipher != NULL)
516 { 621 {
517 if ((s->session->cipher->algorithms & SSL_ENC_MASK) == SSL_eNULL) 622 if (s->session->cipher->algorithm_enc == SSL_eNULL)
518 s->s3->need_empty_fragments = 0; 623 s->s3->need_empty_fragments = 0;
519 624
520#ifndef OPENSSL_NO_RC4 625#ifndef OPENSSL_NO_RC4
521 if ((s->session->cipher->algorithms & SSL_ENC_MASK) == SSL_RC4) 626 if (s->session->cipher->algorithm_enc == SSL_RC4)
522 s->s3->need_empty_fragments = 0; 627 s->s3->need_empty_fragments = 0;
523#endif 628#endif
524 } 629 }
525 } 630 }
526 631
527 return(1); 632 ret = 1;
528err: 633err:
529 SSLerr(SSL_F_TLS1_SETUP_KEY_BLOCK,ERR_R_MALLOC_FAILURE); 634 if (p2)
530 return(0); 635 {
636 OPENSSL_cleanse(p2,num);
637 OPENSSL_free(p2);
638 }
639 return(ret);
531 } 640 }
532 641
533int tls1_enc(SSL *s, int send) 642int tls1_enc(SSL *s, int send)
@@ -540,8 +649,11 @@ int tls1_enc(SSL *s, int send)
540 649
541 if (send) 650 if (send)
542 { 651 {
543 if (s->write_hash != NULL) 652 if (EVP_MD_CTX_md(s->write_hash))
544 n=EVP_MD_size(s->write_hash); 653 {
654 n=EVP_MD_CTX_size(s->write_hash);
655 OPENSSL_assert(n >= 0);
656 }
545 ds=s->enc_write_ctx; 657 ds=s->enc_write_ctx;
546 rec= &(s->s3->wrec); 658 rec= &(s->s3->wrec);
547 if (s->enc_write_ctx == NULL) 659 if (s->enc_write_ctx == NULL)
@@ -551,8 +663,11 @@ int tls1_enc(SSL *s, int send)
551 } 663 }
552 else 664 else
553 { 665 {
554 if (s->read_hash != NULL) 666 if (EVP_MD_CTX_md(s->read_hash))
555 n=EVP_MD_size(s->read_hash); 667 {
668 n=EVP_MD_CTX_size(s->read_hash);
669 OPENSSL_assert(n >= 0);
670 }
556 ds=s->enc_read_ctx; 671 ds=s->enc_read_ctx;
557 rec= &(s->s3->rrec); 672 rec= &(s->s3->rrec);
558 if (s->enc_read_ctx == NULL) 673 if (s->enc_read_ctx == NULL)
@@ -599,11 +714,10 @@ int tls1_enc(SSL *s, int send)
599 { 714 {
600 unsigned long ui; 715 unsigned long ui;
601 printf("EVP_Cipher(ds=%p,rec->data=%p,rec->input=%p,l=%ld) ==>\n", 716 printf("EVP_Cipher(ds=%p,rec->data=%p,rec->input=%p,l=%ld) ==>\n",
602 (void *)ds,rec->data,rec->input,l); 717 ds,rec->data,rec->input,l);
603 printf("\tEVP_CIPHER_CTX: %d buf_len, %d key_len [%ld %ld], %d iv_len\n", 718 printf("\tEVP_CIPHER_CTX: %d buf_len, %d key_len [%d %d], %d iv_len\n",
604 ds->buf_len, ds->cipher->key_len, 719 ds->buf_len, ds->cipher->key_len,
605 (unsigned long)DES_KEY_SZ, 720 DES_KEY_SZ, DES_SCHEDULE_SZ,
606 (unsigned long)DES_SCHEDULE_SZ,
607 ds->cipher->iv_len); 721 ds->cipher->iv_len);
608 printf("\t\tIV: "); 722 printf("\t\tIV: ");
609 for (i=0; i<ds->cipher->iv_len; i++) printf("%02X", ds->iv[i]); 723 for (i=0; i<ds->cipher->iv_len; i++) printf("%02X", ds->iv[i]);
@@ -628,10 +742,10 @@ int tls1_enc(SSL *s, int send)
628 742
629#ifdef KSSL_DEBUG 743#ifdef KSSL_DEBUG
630 { 744 {
631 unsigned long ki; 745 unsigned long i;
632 printf("\trec->data="); 746 printf("\trec->data=");
633 for (ki=0; ki<l; i++) 747 for (i=0; i<l; i++)
634 printf(" %02x", rec->data[ki]); printf("\n"); 748 printf(" %02x", rec->data[i]); printf("\n");
635 } 749 }
636#endif /* KSSL_DEBUG */ 750#endif /* KSSL_DEBUG */
637 751
@@ -679,56 +793,101 @@ int tls1_enc(SSL *s, int send)
679 } 793 }
680 return(1); 794 return(1);
681 } 795 }
682 796int tls1_cert_verify_mac(SSL *s, int md_nid, unsigned char *out)
683int tls1_cert_verify_mac(SSL *s, EVP_MD_CTX *in_ctx, unsigned char *out)
684 { 797 {
685 unsigned int ret; 798 unsigned int ret;
686 EVP_MD_CTX ctx; 799 EVP_MD_CTX ctx, *d=NULL;
800 int i;
801
802 if (s->s3->handshake_buffer)
803 if (!ssl3_digest_cached_records(s))
804 return 0;
805
806 for (i=0;i<SSL_MAX_DIGEST;i++)
807 {
808 if (s->s3->handshake_dgst[i]&&EVP_MD_CTX_type(s->s3->handshake_dgst[i])==md_nid)
809 {
810 d=s->s3->handshake_dgst[i];
811 break;
812 }
813 }
814 if (!d) {
815 SSLerr(SSL_F_TLS1_CERT_VERIFY_MAC,SSL_R_NO_REQUIRED_DIGEST);
816 return 0;
817 }
687 818
688 EVP_MD_CTX_init(&ctx); 819 EVP_MD_CTX_init(&ctx);
689 EVP_MD_CTX_copy_ex(&ctx,in_ctx); 820 EVP_MD_CTX_copy_ex(&ctx,d);
690 EVP_DigestFinal_ex(&ctx,out,&ret); 821 EVP_DigestFinal_ex(&ctx,out,&ret);
691 EVP_MD_CTX_cleanup(&ctx); 822 EVP_MD_CTX_cleanup(&ctx);
692 return((int)ret); 823 return((int)ret);
693 } 824 }
694 825
695int tls1_final_finish_mac(SSL *s, EVP_MD_CTX *in1_ctx, EVP_MD_CTX *in2_ctx, 826int tls1_final_finish_mac(SSL *s,
696 const char *str, int slen, unsigned char *out) 827 const char *str, int slen, unsigned char *out)
697 { 828 {
698 unsigned int i; 829 unsigned int i;
699 EVP_MD_CTX ctx; 830 EVP_MD_CTX ctx;
700 unsigned char buf[TLS_MD_MAX_CONST_SIZE+MD5_DIGEST_LENGTH+SHA_DIGEST_LENGTH]; 831 unsigned char buf[2*EVP_MAX_MD_SIZE];
701 unsigned char *q,buf2[12]; 832 unsigned char *q,buf2[12];
833 int idx;
834 long mask;
835 int err=0;
836 const EVP_MD *md;
702 837
703 q=buf; 838 q=buf;
704 memcpy(q,str,slen); 839
705 q+=slen; 840 if (s->s3->handshake_buffer)
841 if (!ssl3_digest_cached_records(s))
842 return 0;
706 843
707 EVP_MD_CTX_init(&ctx); 844 EVP_MD_CTX_init(&ctx);
708 EVP_MD_CTX_copy_ex(&ctx,in1_ctx); 845
709 EVP_DigestFinal_ex(&ctx,q,&i); 846 for (idx=0;ssl_get_handshake_digest(idx,&mask,&md);idx++)
710 q+=i; 847 {
711 EVP_MD_CTX_copy_ex(&ctx,in2_ctx); 848 if (mask & s->s3->tmp.new_cipher->algorithm2)
712 EVP_DigestFinal_ex(&ctx,q,&i); 849 {
713 q+=i; 850 int hashsize = EVP_MD_size(md);
714 851 if (hashsize < 0 || hashsize > (int)(sizeof buf - (size_t)(q-buf)))
715 tls1_PRF(s->ctx->md5,s->ctx->sha1,buf,(int)(q-buf), 852 {
716 s->session->master_key,s->session->master_key_length, 853 /* internal error: 'buf' is too small for this cipersuite! */
717 out,buf2,sizeof buf2); 854 err = 1;
855 }
856 else
857 {
858 EVP_MD_CTX_copy_ex(&ctx,s->s3->handshake_dgst[idx]);
859 EVP_DigestFinal_ex(&ctx,q,&i);
860 if (i != (unsigned int)hashsize) /* can't really happen */
861 err = 1;
862 q+=i;
863 }
864 }
865 }
866
867 if (!tls1_PRF(s->s3->tmp.new_cipher->algorithm2,
868 str,slen, buf,(int)(q-buf), NULL,0, NULL,0, NULL,0,
869 s->session->master_key,s->session->master_key_length,
870 out,buf2,sizeof buf2))
871 err = 1;
718 EVP_MD_CTX_cleanup(&ctx); 872 EVP_MD_CTX_cleanup(&ctx);
719 873
720 return sizeof buf2; 874 if (err)
875 return 0;
876 else
877 return sizeof buf2;
721 } 878 }
722 879
723int tls1_mac(SSL *ssl, unsigned char *md, int send) 880int tls1_mac(SSL *ssl, unsigned char *md, int send)
724 { 881 {
725 SSL3_RECORD *rec; 882 SSL3_RECORD *rec;
726 unsigned char *mac_sec,*seq; 883 unsigned char *mac_sec,*seq;
727 const EVP_MD *hash; 884 EVP_MD_CTX *hash;
728 unsigned int md_size; 885 size_t md_size;
729 int i; 886 int i;
730 HMAC_CTX hmac; 887 EVP_MD_CTX hmac, *mac_ctx;
731 unsigned char buf[5]; 888 unsigned char buf[5];
889 int stream_mac = (send?(ssl->mac_flags & SSL_MAC_FLAG_WRITE_MAC_STREAM):(ssl->mac_flags&SSL_MAC_FLAG_READ_MAC_STREAM));
890 int t;
732 891
733 if (send) 892 if (send)
734 { 893 {
@@ -745,43 +904,45 @@ int tls1_mac(SSL *ssl, unsigned char *md, int send)
745 hash=ssl->read_hash; 904 hash=ssl->read_hash;
746 } 905 }
747 906
748 md_size=EVP_MD_size(hash); 907 t=EVP_MD_CTX_size(hash);
908 OPENSSL_assert(t >= 0);
909 md_size=t;
749 910
750 buf[0]=rec->type; 911 buf[0]=rec->type;
751 if (ssl->version == DTLS1_VERSION && ssl->client_version == DTLS1_BAD_VER) 912 buf[1]=(unsigned char)(ssl->version>>8);
752 { 913 buf[2]=(unsigned char)(ssl->version);
753 buf[1]=TLS1_VERSION_MAJOR;
754 buf[2]=TLS1_VERSION_MINOR;
755 }
756 else {
757 buf[1]=(unsigned char)(ssl->version>>8);
758 buf[2]=(unsigned char)(ssl->version);
759 }
760
761 buf[3]=rec->length>>8; 914 buf[3]=rec->length>>8;
762 buf[4]=rec->length&0xff; 915 buf[4]=rec->length&0xff;
763 916
764 /* I should fix this up TLS TLS TLS TLS TLS XXXXXXXX */ 917 /* I should fix this up TLS TLS TLS TLS TLS XXXXXXXX */
765 HMAC_CTX_init(&hmac); 918 if (stream_mac)
766 HMAC_Init_ex(&hmac,mac_sec,EVP_MD_size(hash),hash,NULL); 919 {
920 mac_ctx = hash;
921 }
922 else
923 {
924 EVP_MD_CTX_copy(&hmac,hash);
925 mac_ctx = &hmac;
926 }
767 927
768 if (ssl->version == DTLS1_VERSION && ssl->client_version != DTLS1_BAD_VER) 928 if (ssl->version == DTLS1_VERSION || ssl->version == DTLS1_BAD_VER)
769 { 929 {
770 unsigned char dtlsseq[8],*p=dtlsseq; 930 unsigned char dtlsseq[8],*p=dtlsseq;
771 931
772 s2n(send?ssl->d1->w_epoch:ssl->d1->r_epoch, p); 932 s2n(send?ssl->d1->w_epoch:ssl->d1->r_epoch, p);
773 memcpy (p,&seq[2],6); 933 memcpy (p,&seq[2],6);
774 934
775 HMAC_Update(&hmac,dtlsseq,8); 935 EVP_DigestSignUpdate(mac_ctx,dtlsseq,8);
776 } 936 }
777 else 937 else
778 HMAC_Update(&hmac,seq,8); 938 EVP_DigestSignUpdate(mac_ctx,seq,8);
779
780 HMAC_Update(&hmac,buf,5);
781 HMAC_Update(&hmac,rec->input,rec->length);
782 HMAC_Final(&hmac,md,&md_size);
783 HMAC_CTX_cleanup(&hmac);
784 939
940 EVP_DigestSignUpdate(mac_ctx,buf,5);
941 EVP_DigestSignUpdate(mac_ctx,rec->input,rec->length);
942 t=EVP_DigestSignFinal(mac_ctx,md,&md_size);
943 OPENSSL_assert(t > 0);
944
945 if (!stream_mac) EVP_MD_CTX_cleanup(&hmac);
785#ifdef TLS_DEBUG 946#ifdef TLS_DEBUG
786printf("sec="); 947printf("sec=");
787{unsigned int z; for (z=0; z<md_size; z++) printf("%02X ",mac_sec[z]); printf("\n"); } 948{unsigned int z; for (z=0; z<md_size; z++) printf("%02X ",mac_sec[z]); printf("\n"); }
@@ -793,7 +954,7 @@ printf("rec=");
793{unsigned int z; for (z=0; z<rec->length; z++) printf("%02X ",buf[z]); printf("\n"); } 954{unsigned int z; for (z=0; z<rec->length; z++) printf("%02X ",buf[z]); printf("\n"); }
794#endif 955#endif
795 956
796 if ( SSL_version(ssl) != DTLS1_VERSION) 957 if (ssl->version != DTLS1_VERSION && ssl->version != DTLS1_BAD_VER)
797 { 958 {
798 for (i=7; i>=0; i--) 959 for (i=7; i>=0; i--)
799 { 960 {
@@ -811,23 +972,35 @@ printf("rec=");
811int tls1_generate_master_secret(SSL *s, unsigned char *out, unsigned char *p, 972int tls1_generate_master_secret(SSL *s, unsigned char *out, unsigned char *p,
812 int len) 973 int len)
813 { 974 {
814 unsigned char buf[SSL3_RANDOM_SIZE*2+TLS_MD_MASTER_SECRET_CONST_SIZE];
815 unsigned char buff[SSL_MAX_MASTER_KEY_LENGTH]; 975 unsigned char buff[SSL_MAX_MASTER_KEY_LENGTH];
976 const void *co = NULL, *so = NULL;
977 int col = 0, sol = 0;
816 978
817#ifdef KSSL_DEBUG 979#ifdef KSSL_DEBUG
818 printf ("tls1_generate_master_secret(%p,%p, %p, %d)\n", (void *)s,out, p,len); 980 printf ("tls1_generate_master_secret(%p,%p, %p, %d)\n", s,out, p,len);
819#endif /* KSSL_DEBUG */ 981#endif /* KSSL_DEBUG */
820 982
821 /* Setup the stuff to munge */ 983#ifdef TLSEXT_TYPE_opaque_prf_input
822 memcpy(buf,TLS_MD_MASTER_SECRET_CONST, 984 if (s->s3->client_opaque_prf_input != NULL && s->s3->server_opaque_prf_input != NULL &&
823 TLS_MD_MASTER_SECRET_CONST_SIZE); 985 s->s3->client_opaque_prf_input_len > 0 &&
824 memcpy(&(buf[TLS_MD_MASTER_SECRET_CONST_SIZE]), 986 s->s3->client_opaque_prf_input_len == s->s3->server_opaque_prf_input_len)
825 s->s3->client_random,SSL3_RANDOM_SIZE); 987 {
826 memcpy(&(buf[SSL3_RANDOM_SIZE+TLS_MD_MASTER_SECRET_CONST_SIZE]), 988 co = s->s3->client_opaque_prf_input;
827 s->s3->server_random,SSL3_RANDOM_SIZE); 989 col = s->s3->server_opaque_prf_input_len;
828 tls1_PRF(s->ctx->md5,s->ctx->sha1, 990 so = s->s3->server_opaque_prf_input;
829 buf,TLS_MD_MASTER_SECRET_CONST_SIZE+SSL3_RANDOM_SIZE*2,p,len, 991 sol = s->s3->client_opaque_prf_input_len; /* must be same as col (see draft-rescorla-tls-opaque-prf-input-00.txt, section 3.1) */
992 }
993#endif
994
995 tls1_PRF(s->s3->tmp.new_cipher->algorithm2,
996 TLS_MD_MASTER_SECRET_CONST,TLS_MD_MASTER_SECRET_CONST_SIZE,
997 s->s3->client_random,SSL3_RANDOM_SIZE,
998 co, col,
999 s->s3->server_random,SSL3_RANDOM_SIZE,
1000 so, sol,
1001 p,len,
830 s->session->master_key,buff,sizeof buff); 1002 s->session->master_key,buff,sizeof buff);
1003
831#ifdef KSSL_DEBUG 1004#ifdef KSSL_DEBUG
832 printf ("tls1_generate_master_secret() complete\n"); 1005 printf ("tls1_generate_master_secret() complete\n");
833#endif /* KSSL_DEBUG */ 1006#endif /* KSSL_DEBUG */
@@ -862,7 +1035,13 @@ int tls1_alert_code(int code)
862 case SSL_AD_INTERNAL_ERROR: return(TLS1_AD_INTERNAL_ERROR); 1035 case SSL_AD_INTERNAL_ERROR: return(TLS1_AD_INTERNAL_ERROR);
863 case SSL_AD_USER_CANCELLED: return(TLS1_AD_USER_CANCELLED); 1036 case SSL_AD_USER_CANCELLED: return(TLS1_AD_USER_CANCELLED);
864 case SSL_AD_NO_RENEGOTIATION: return(TLS1_AD_NO_RENEGOTIATION); 1037 case SSL_AD_NO_RENEGOTIATION: return(TLS1_AD_NO_RENEGOTIATION);
865#ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 1038 case SSL_AD_UNSUPPORTED_EXTENSION: return(TLS1_AD_UNSUPPORTED_EXTENSION);
1039 case SSL_AD_CERTIFICATE_UNOBTAINABLE: return(TLS1_AD_CERTIFICATE_UNOBTAINABLE);
1040 case SSL_AD_UNRECOGNIZED_NAME: return(TLS1_AD_UNRECOGNIZED_NAME);
1041 case SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE: return(TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE);
1042 case SSL_AD_BAD_CERTIFICATE_HASH_VALUE: return(TLS1_AD_BAD_CERTIFICATE_HASH_VALUE);
1043 case SSL_AD_UNKNOWN_PSK_IDENTITY:return(TLS1_AD_UNKNOWN_PSK_IDENTITY);
1044#if 0 /* not appropriate for TLS, not used for DTLS */
866 case DTLS1_AD_MISSING_HANDSHAKE_MESSAGE: return 1045 case DTLS1_AD_MISSING_HANDSHAKE_MESSAGE: return
867 (DTLS1_AD_MISSING_HANDSHAKE_MESSAGE); 1046 (DTLS1_AD_MISSING_HANDSHAKE_MESSAGE);
868#endif 1047#endif
diff --git a/src/lib/libssl/src/ssl/t1_lib.c b/src/lib/libssl/src/ssl/t1_lib.c
index 9ce726996d..e8bc34c111 100644
--- a/src/lib/libssl/src/ssl/t1_lib.c
+++ b/src/lib/libssl/src/ssl/t1_lib.c
@@ -55,6 +55,59 @@
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ====================================================================
59 * Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
60 *
61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions
63 * are met:
64 *
65 * 1. Redistributions of source code must retain the above copyright
66 * notice, this list of conditions and the following disclaimer.
67 *
68 * 2. Redistributions in binary form must reproduce the above copyright
69 * notice, this list of conditions and the following disclaimer in
70 * the documentation and/or other materials provided with the
71 * distribution.
72 *
73 * 3. All advertising materials mentioning features or use of this
74 * software must display the following acknowledgment:
75 * "This product includes software developed by the OpenSSL Project
76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77 *
78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79 * endorse or promote products derived from this software without
80 * prior written permission. For written permission, please contact
81 * openssl-core@openssl.org.
82 *
83 * 5. Products derived from this software may not be called "OpenSSL"
84 * nor may "OpenSSL" appear in their names without prior written
85 * permission of the OpenSSL Project.
86 *
87 * 6. Redistributions of any form whatsoever must retain the following
88 * acknowledgment:
89 * "This product includes software developed by the OpenSSL Project
90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91 *
92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103 * OF THE POSSIBILITY OF SUCH DAMAGE.
104 * ====================================================================
105 *
106 * This product includes cryptographic software written by Eric Young
107 * (eay@cryptsoft.com). This product includes software written by Tim
108 * Hudson (tjh@cryptsoft.com).
109 *
110 */
58 111
59#include <stdio.h> 112#include <stdio.h>
60#include <openssl/objects.h> 113#include <openssl/objects.h>
@@ -92,11 +145,6 @@ long tls1_default_timeout(void)
92 return(60*60*2); 145 return(60*60*2);
93 } 146 }
94 147
95IMPLEMENT_tls1_meth_func(tlsv1_base_method,
96 ssl_undefined_function,
97 ssl_undefined_function,
98 ssl_bad_method)
99
100int tls1_new(SSL *s) 148int tls1_new(SSL *s)
101 { 149 {
102 if (!ssl3_new(s)) return(0); 150 if (!ssl3_new(s)) return(0);
@@ -106,6 +154,12 @@ int tls1_new(SSL *s)
106 154
107void tls1_free(SSL *s) 155void tls1_free(SSL *s)
108 { 156 {
157#ifndef OPENSSL_NO_TLSEXT
158 if (s->tlsext_session_ticket)
159 {
160 OPENSSL_free(s->tlsext_session_ticket);
161 }
162#endif /* OPENSSL_NO_TLSEXT */
109 ssl3_free(s); 163 ssl3_free(s);
110 } 164 }
111 165
@@ -115,17 +169,105 @@ void tls1_clear(SSL *s)
115 s->version=TLS1_VERSION; 169 s->version=TLS1_VERSION;
116 } 170 }
117 171
118#if 0 172#ifndef OPENSSL_NO_EC
119long tls1_ctrl(SSL *s, int cmd, long larg, char *parg) 173static int nid_list[] =
120 { 174 {
121 return(0); 175 NID_sect163k1, /* sect163k1 (1) */
176 NID_sect163r1, /* sect163r1 (2) */
177 NID_sect163r2, /* sect163r2 (3) */
178 NID_sect193r1, /* sect193r1 (4) */
179 NID_sect193r2, /* sect193r2 (5) */
180 NID_sect233k1, /* sect233k1 (6) */
181 NID_sect233r1, /* sect233r1 (7) */
182 NID_sect239k1, /* sect239k1 (8) */
183 NID_sect283k1, /* sect283k1 (9) */
184 NID_sect283r1, /* sect283r1 (10) */
185 NID_sect409k1, /* sect409k1 (11) */
186 NID_sect409r1, /* sect409r1 (12) */
187 NID_sect571k1, /* sect571k1 (13) */
188 NID_sect571r1, /* sect571r1 (14) */
189 NID_secp160k1, /* secp160k1 (15) */
190 NID_secp160r1, /* secp160r1 (16) */
191 NID_secp160r2, /* secp160r2 (17) */
192 NID_secp192k1, /* secp192k1 (18) */
193 NID_X9_62_prime192v1, /* secp192r1 (19) */
194 NID_secp224k1, /* secp224k1 (20) */
195 NID_secp224r1, /* secp224r1 (21) */
196 NID_secp256k1, /* secp256k1 (22) */
197 NID_X9_62_prime256v1, /* secp256r1 (23) */
198 NID_secp384r1, /* secp384r1 (24) */
199 NID_secp521r1 /* secp521r1 (25) */
200 };
201
202int tls1_ec_curve_id2nid(int curve_id)
203 {
204 /* ECC curves from draft-ietf-tls-ecc-12.txt (Oct. 17, 2005) */
205 if ((curve_id < 1) || ((unsigned int)curve_id >
206 sizeof(nid_list)/sizeof(nid_list[0])))
207 return 0;
208 return nid_list[curve_id-1];
122 } 209 }
123 210
124long tls1_callback_ctrl(SSL *s, int cmd, void *(*fp)()) 211int tls1_ec_nid2curve_id(int nid)
125 { 212 {
126 return(0); 213 /* ECC curves from draft-ietf-tls-ecc-12.txt (Oct. 17, 2005) */
214 switch (nid)
215 {
216 case NID_sect163k1: /* sect163k1 (1) */
217 return 1;
218 case NID_sect163r1: /* sect163r1 (2) */
219 return 2;
220 case NID_sect163r2: /* sect163r2 (3) */
221 return 3;
222 case NID_sect193r1: /* sect193r1 (4) */
223 return 4;
224 case NID_sect193r2: /* sect193r2 (5) */
225 return 5;
226 case NID_sect233k1: /* sect233k1 (6) */
227 return 6;
228 case NID_sect233r1: /* sect233r1 (7) */
229 return 7;
230 case NID_sect239k1: /* sect239k1 (8) */
231 return 8;
232 case NID_sect283k1: /* sect283k1 (9) */
233 return 9;
234 case NID_sect283r1: /* sect283r1 (10) */
235 return 10;
236 case NID_sect409k1: /* sect409k1 (11) */
237 return 11;
238 case NID_sect409r1: /* sect409r1 (12) */
239 return 12;
240 case NID_sect571k1: /* sect571k1 (13) */
241 return 13;
242 case NID_sect571r1: /* sect571r1 (14) */
243 return 14;
244 case NID_secp160k1: /* secp160k1 (15) */
245 return 15;
246 case NID_secp160r1: /* secp160r1 (16) */
247 return 16;
248 case NID_secp160r2: /* secp160r2 (17) */
249 return 17;
250 case NID_secp192k1: /* secp192k1 (18) */
251 return 18;
252 case NID_X9_62_prime192v1: /* secp192r1 (19) */
253 return 19;
254 case NID_secp224k1: /* secp224k1 (20) */
255 return 20;
256 case NID_secp224r1: /* secp224r1 (21) */
257 return 21;
258 case NID_secp256k1: /* secp256k1 (22) */
259 return 22;
260 case NID_X9_62_prime256v1: /* secp256r1 (23) */
261 return 23;
262 case NID_secp384r1: /* secp384r1 (24) */
263 return 24;
264 case NID_secp521r1: /* secp521r1 (25) */
265 return 25;
266 default:
267 return 0;
268 }
127 } 269 }
128#endif 270#endif /* OPENSSL_NO_EC */
129 271
130#ifndef OPENSSL_NO_TLSEXT 272#ifndef OPENSSL_NO_TLSEXT
131unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit) 273unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit)
@@ -133,6 +275,11 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned cha
133 int extdatalen=0; 275 int extdatalen=0;
134 unsigned char *ret = p; 276 unsigned char *ret = p;
135 277
278 /* don't add extensions for SSLv3 unless doing secure renegotiation */
279 if (s->client_version == SSL3_VERSION
280 && !s->s3->send_connection_binding)
281 return p;
282
136 ret+=2; 283 ret+=2;
137 284
138 if (ret>=limit) return NULL; /* this really never occurs, but ... */ 285 if (ret>=limit) return NULL; /* this really never occurs, but ... */
@@ -152,7 +299,7 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned cha
152 */ 299 */
153 300
154 if ((lenmax = limit - ret - 9) < 0 301 if ((lenmax = limit - ret - 9) < 0
155 || (size_str = strlen(s->tlsext_hostname)) > (unsigned long)lenmax) 302 || (size_str = strlen(s->tlsext_hostname)) > (unsigned long)lenmax)
156 return NULL; 303 return NULL;
157 304
158 /* extension type and length */ 305 /* extension type and length */
@@ -167,21 +314,108 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned cha
167 s2n(size_str,ret); 314 s2n(size_str,ret);
168 memcpy(ret, s->tlsext_hostname, size_str); 315 memcpy(ret, s->tlsext_hostname, size_str);
169 ret+=size_str; 316 ret+=size_str;
317 }
170 318
319 /* Add RI if renegotiating */
320 if (s->new_session)
321 {
322 int el;
323
324 if(!ssl_add_clienthello_renegotiate_ext(s, 0, &el, 0))
325 {
326 SSLerr(SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT, ERR_R_INTERNAL_ERROR);
327 return NULL;
328 }
329
330 if((limit - p - 4 - el) < 0) return NULL;
331
332 s2n(TLSEXT_TYPE_renegotiate,ret);
333 s2n(el,ret);
334
335 if(!ssl_add_clienthello_renegotiate_ext(s, ret, &el, el))
336 {
337 SSLerr(SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT, ERR_R_INTERNAL_ERROR);
338 return NULL;
339 }
340
341 ret += el;
342 }
343
344#ifndef OPENSSL_NO_EC
345 if (s->tlsext_ecpointformatlist != NULL &&
346 s->version != DTLS1_VERSION)
347 {
348 /* Add TLS extension ECPointFormats to the ClientHello message */
349 long lenmax;
350
351 if ((lenmax = limit - ret - 5) < 0) return NULL;
352 if (s->tlsext_ecpointformatlist_length > (unsigned long)lenmax) return NULL;
353 if (s->tlsext_ecpointformatlist_length > 255)
354 {
355 SSLerr(SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT, ERR_R_INTERNAL_ERROR);
356 return NULL;
357 }
358
359 s2n(TLSEXT_TYPE_ec_point_formats,ret);
360 s2n(s->tlsext_ecpointformatlist_length + 1,ret);
361 *(ret++) = (unsigned char) s->tlsext_ecpointformatlist_length;
362 memcpy(ret, s->tlsext_ecpointformatlist, s->tlsext_ecpointformatlist_length);
363 ret+=s->tlsext_ecpointformatlist_length;
364 }
365 if (s->tlsext_ellipticcurvelist != NULL &&
366 s->version != DTLS1_VERSION)
367 {
368 /* Add TLS extension EllipticCurves to the ClientHello message */
369 long lenmax;
370
371 if ((lenmax = limit - ret - 6) < 0) return NULL;
372 if (s->tlsext_ellipticcurvelist_length > (unsigned long)lenmax) return NULL;
373 if (s->tlsext_ellipticcurvelist_length > 65532)
374 {
375 SSLerr(SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT, ERR_R_INTERNAL_ERROR);
376 return NULL;
377 }
378
379 s2n(TLSEXT_TYPE_elliptic_curves,ret);
380 s2n(s->tlsext_ellipticcurvelist_length + 2, ret);
381
382 /* NB: draft-ietf-tls-ecc-12.txt uses a one-byte prefix for
383 * elliptic_curve_list, but the examples use two bytes.
384 * http://www1.ietf.org/mail-archive/web/tls/current/msg00538.html
385 * resolves this to two bytes.
386 */
387 s2n(s->tlsext_ellipticcurvelist_length, ret);
388 memcpy(ret, s->tlsext_ellipticcurvelist, s->tlsext_ellipticcurvelist_length);
389 ret+=s->tlsext_ellipticcurvelist_length;
171 } 390 }
391#endif /* OPENSSL_NO_EC */
172 392
173 if (!(SSL_get_options(s) & SSL_OP_NO_TICKET)) 393 if (!(SSL_get_options(s) & SSL_OP_NO_TICKET))
174 { 394 {
175 int ticklen; 395 int ticklen;
176 if (s->session && s->session->tlsext_tick) 396 if (!s->new_session && s->session && s->session->tlsext_tick)
177 ticklen = s->session->tlsext_ticklen; 397 ticklen = s->session->tlsext_ticklen;
398 else if (s->session && s->tlsext_session_ticket &&
399 s->tlsext_session_ticket->data)
400 {
401 ticklen = s->tlsext_session_ticket->length;
402 s->session->tlsext_tick = OPENSSL_malloc(ticklen);
403 if (!s->session->tlsext_tick)
404 return NULL;
405 memcpy(s->session->tlsext_tick,
406 s->tlsext_session_ticket->data,
407 ticklen);
408 s->session->tlsext_ticklen = ticklen;
409 }
178 else 410 else
179 ticklen = 0; 411 ticklen = 0;
412 if (ticklen == 0 && s->tlsext_session_ticket &&
413 s->tlsext_session_ticket->data == NULL)
414 goto skip_ext;
180 /* Check for enough room 2 for extension type, 2 for len 415 /* Check for enough room 2 for extension type, 2 for len
181 * rest for ticket 416 * rest for ticket
182 */ 417 */
183 if (limit - ret - 4 - ticklen < 0) 418 if ((long)(limit - ret - 4 - ticklen) < 0) return NULL;
184 return NULL;
185 s2n(TLSEXT_TYPE_session_ticket,ret); 419 s2n(TLSEXT_TYPE_session_ticket,ret);
186 s2n(ticklen,ret); 420 s2n(ticklen,ret);
187 if (ticklen) 421 if (ticklen)
@@ -190,8 +424,29 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned cha
190 ret += ticklen; 424 ret += ticklen;
191 } 425 }
192 } 426 }
427 skip_ext:
193 428
194 if (s->tlsext_status_type == TLSEXT_STATUSTYPE_ocsp) 429#ifdef TLSEXT_TYPE_opaque_prf_input
430 if (s->s3->client_opaque_prf_input != NULL &&
431 s->version != DTLS1_VERSION)
432 {
433 size_t col = s->s3->client_opaque_prf_input_len;
434
435 if ((long)(limit - ret - 6 - col < 0))
436 return NULL;
437 if (col > 0xFFFD) /* can't happen */
438 return NULL;
439
440 s2n(TLSEXT_TYPE_opaque_prf_input, ret);
441 s2n(col + 2, ret);
442 s2n(col, ret);
443 memcpy(ret, s->s3->client_opaque_prf_input, col);
444 ret += col;
445 }
446#endif
447
448 if (s->tlsext_status_type == TLSEXT_STATUSTYPE_ocsp &&
449 s->version != DTLS1_VERSION)
195 { 450 {
196 int i; 451 int i;
197 long extlen, idlen, itmp; 452 long extlen, idlen, itmp;
@@ -251,21 +506,74 @@ unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned cha
251 int extdatalen=0; 506 int extdatalen=0;
252 unsigned char *ret = p; 507 unsigned char *ret = p;
253 508
509 /* don't add extensions for SSLv3, unless doing secure renegotiation */
510 if (s->version == SSL3_VERSION && !s->s3->send_connection_binding)
511 return p;
512
254 ret+=2; 513 ret+=2;
255 if (ret>=limit) return NULL; /* this really never occurs, but ... */ 514 if (ret>=limit) return NULL; /* this really never occurs, but ... */
256 515
257 if (!s->hit && s->servername_done == 1 && s->session->tlsext_hostname != NULL) 516 if (!s->hit && s->servername_done == 1 && s->session->tlsext_hostname != NULL)
258 { 517 {
259 if (limit - ret - 4 < 0) return NULL; 518 if ((long)(limit - ret - 4) < 0) return NULL;
260 519
261 s2n(TLSEXT_TYPE_server_name,ret); 520 s2n(TLSEXT_TYPE_server_name,ret);
262 s2n(0,ret); 521 s2n(0,ret);
263 } 522 }
264 523
524 if(s->s3->send_connection_binding)
525 {
526 int el;
527
528 if(!ssl_add_serverhello_renegotiate_ext(s, 0, &el, 0))
529 {
530 SSLerr(SSL_F_SSL_ADD_SERVERHELLO_TLSEXT, ERR_R_INTERNAL_ERROR);
531 return NULL;
532 }
533
534 if((limit - p - 4 - el) < 0) return NULL;
535
536 s2n(TLSEXT_TYPE_renegotiate,ret);
537 s2n(el,ret);
538
539 if(!ssl_add_serverhello_renegotiate_ext(s, ret, &el, el))
540 {
541 SSLerr(SSL_F_SSL_ADD_SERVERHELLO_TLSEXT, ERR_R_INTERNAL_ERROR);
542 return NULL;
543 }
544
545 ret += el;
546 }
547
548#ifndef OPENSSL_NO_EC
549 if (s->tlsext_ecpointformatlist != NULL &&
550 s->version != DTLS1_VERSION)
551 {
552 /* Add TLS extension ECPointFormats to the ServerHello message */
553 long lenmax;
554
555 if ((lenmax = limit - ret - 5) < 0) return NULL;
556 if (s->tlsext_ecpointformatlist_length > (unsigned long)lenmax) return NULL;
557 if (s->tlsext_ecpointformatlist_length > 255)
558 {
559 SSLerr(SSL_F_SSL_ADD_SERVERHELLO_TLSEXT, ERR_R_INTERNAL_ERROR);
560 return NULL;
561 }
562
563 s2n(TLSEXT_TYPE_ec_point_formats,ret);
564 s2n(s->tlsext_ecpointformatlist_length + 1,ret);
565 *(ret++) = (unsigned char) s->tlsext_ecpointformatlist_length;
566 memcpy(ret, s->tlsext_ecpointformatlist, s->tlsext_ecpointformatlist_length);
567 ret+=s->tlsext_ecpointformatlist_length;
568
569 }
570 /* Currently the server should not respond with a SupportedCurves extension */
571#endif /* OPENSSL_NO_EC */
572
265 if (s->tlsext_ticket_expected 573 if (s->tlsext_ticket_expected
266 && !(SSL_get_options(s) & SSL_OP_NO_TICKET)) 574 && !(SSL_get_options(s) & SSL_OP_NO_TICKET))
267 { 575 {
268 if (limit - ret - 4 < 0) return NULL; 576 if ((long)(limit - ret - 4) < 0) return NULL;
269 s2n(TLSEXT_TYPE_session_ticket,ret); 577 s2n(TLSEXT_TYPE_session_ticket,ret);
270 s2n(0,ret); 578 s2n(0,ret);
271 } 579 }
@@ -277,6 +585,39 @@ unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned cha
277 s2n(0,ret); 585 s2n(0,ret);
278 } 586 }
279 587
588#ifdef TLSEXT_TYPE_opaque_prf_input
589 if (s->s3->server_opaque_prf_input != NULL &&
590 s->version != DTLS1_VERSION)
591 {
592 size_t sol = s->s3->server_opaque_prf_input_len;
593
594 if ((long)(limit - ret - 6 - sol) < 0)
595 return NULL;
596 if (sol > 0xFFFD) /* can't happen */
597 return NULL;
598
599 s2n(TLSEXT_TYPE_opaque_prf_input, ret);
600 s2n(sol + 2, ret);
601 s2n(sol, ret);
602 memcpy(ret, s->s3->server_opaque_prf_input, sol);
603 ret += sol;
604 }
605#endif
606 if (((s->s3->tmp.new_cipher->id & 0xFFFF)==0x80 || (s->s3->tmp.new_cipher->id & 0xFFFF)==0x81)
607 && (SSL_get_options(s) & SSL_OP_CRYPTOPRO_TLSEXT_BUG))
608 { const unsigned char cryptopro_ext[36] = {
609 0xfd, 0xe8, /*65000*/
610 0x00, 0x20, /*32 bytes length*/
611 0x30, 0x1e, 0x30, 0x08, 0x06, 0x06, 0x2a, 0x85,
612 0x03, 0x02, 0x02, 0x09, 0x30, 0x08, 0x06, 0x06,
613 0x2a, 0x85, 0x03, 0x02, 0x02, 0x16, 0x30, 0x08,
614 0x06, 0x06, 0x2a, 0x85, 0x03, 0x02, 0x02, 0x17};
615 if (limit-ret<36) return NULL;
616 memcpy(ret,cryptopro_ext,36);
617 ret+=36;
618
619 }
620
280 if ((extdatalen = ret-p-2)== 0) 621 if ((extdatalen = ret-p-2)== 0)
281 return p; 622 return p;
282 623
@@ -290,15 +631,17 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
290 unsigned short size; 631 unsigned short size;
291 unsigned short len; 632 unsigned short len;
292 unsigned char *data = *p; 633 unsigned char *data = *p;
634 int renegotiate_seen = 0;
635
293 s->servername_done = 0; 636 s->servername_done = 0;
294 s->tlsext_status_type = -1; 637 s->tlsext_status_type = -1;
295 638
296 if (data >= (d+n-2)) 639 if (data >= (d+n-2))
297 return 1; 640 goto ri_check;
298 n2s(data,len); 641 n2s(data,len);
299 642
300 if (data > (d+n-len)) 643 if (data > (d+n-len))
301 return 1; 644 goto ri_check;
302 645
303 while (data <= (d+n-4)) 646 while (data <= (d+n-4))
304 { 647 {
@@ -306,8 +649,10 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
306 n2s(data,size); 649 n2s(data,size);
307 650
308 if (data+size > (d+n)) 651 if (data+size > (d+n))
309 return 1; 652 goto ri_check;
310 653#if 0
654 fprintf(stderr,"Received extension type %d size %d\n",type,size);
655#endif
311 if (s->tlsext_debug_cb) 656 if (s->tlsext_debug_cb)
312 s->tlsext_debug_cb(s, 0, type, data, size, 657 s->tlsext_debug_cb(s, 0, type, data, size,
313 s->tlsext_debug_arg); 658 s->tlsext_debug_arg);
@@ -407,8 +752,114 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
407 } 752 }
408 753
409 } 754 }
410 else if (type == TLSEXT_TYPE_status_request 755
411 && s->ctx->tlsext_status_cb) 756#ifndef OPENSSL_NO_EC
757 else if (type == TLSEXT_TYPE_ec_point_formats &&
758 s->version != DTLS1_VERSION)
759 {
760 unsigned char *sdata = data;
761 int ecpointformatlist_length = *(sdata++);
762
763 if (ecpointformatlist_length != size - 1)
764 {
765 *al = TLS1_AD_DECODE_ERROR;
766 return 0;
767 }
768 s->session->tlsext_ecpointformatlist_length = 0;
769 if (s->session->tlsext_ecpointformatlist != NULL) OPENSSL_free(s->session->tlsext_ecpointformatlist);
770 if ((s->session->tlsext_ecpointformatlist = OPENSSL_malloc(ecpointformatlist_length)) == NULL)
771 {
772 *al = TLS1_AD_INTERNAL_ERROR;
773 return 0;
774 }
775 s->session->tlsext_ecpointformatlist_length = ecpointformatlist_length;
776 memcpy(s->session->tlsext_ecpointformatlist, sdata, ecpointformatlist_length);
777#if 0
778 fprintf(stderr,"ssl_parse_clienthello_tlsext s->session->tlsext_ecpointformatlist (length=%i) ", s->session->tlsext_ecpointformatlist_length);
779 sdata = s->session->tlsext_ecpointformatlist;
780 for (i = 0; i < s->session->tlsext_ecpointformatlist_length; i++)
781 fprintf(stderr,"%i ",*(sdata++));
782 fprintf(stderr,"\n");
783#endif
784 }
785 else if (type == TLSEXT_TYPE_elliptic_curves &&
786 s->version != DTLS1_VERSION)
787 {
788 unsigned char *sdata = data;
789 int ellipticcurvelist_length = (*(sdata++) << 8);
790 ellipticcurvelist_length += (*(sdata++));
791
792 if (ellipticcurvelist_length != size - 2)
793 {
794 *al = TLS1_AD_DECODE_ERROR;
795 return 0;
796 }
797 s->session->tlsext_ellipticcurvelist_length = 0;
798 if (s->session->tlsext_ellipticcurvelist != NULL) OPENSSL_free(s->session->tlsext_ellipticcurvelist);
799 if ((s->session->tlsext_ellipticcurvelist = OPENSSL_malloc(ellipticcurvelist_length)) == NULL)
800 {
801 *al = TLS1_AD_INTERNAL_ERROR;
802 return 0;
803 }
804 s->session->tlsext_ellipticcurvelist_length = ellipticcurvelist_length;
805 memcpy(s->session->tlsext_ellipticcurvelist, sdata, ellipticcurvelist_length);
806#if 0
807 fprintf(stderr,"ssl_parse_clienthello_tlsext s->session->tlsext_ellipticcurvelist (length=%i) ", s->session->tlsext_ellipticcurvelist_length);
808 sdata = s->session->tlsext_ellipticcurvelist;
809 for (i = 0; i < s->session->tlsext_ellipticcurvelist_length; i++)
810 fprintf(stderr,"%i ",*(sdata++));
811 fprintf(stderr,"\n");
812#endif
813 }
814#endif /* OPENSSL_NO_EC */
815#ifdef TLSEXT_TYPE_opaque_prf_input
816 else if (type == TLSEXT_TYPE_opaque_prf_input &&
817 s->version != DTLS1_VERSION)
818 {
819 unsigned char *sdata = data;
820
821 if (size < 2)
822 {
823 *al = SSL_AD_DECODE_ERROR;
824 return 0;
825 }
826 n2s(sdata, s->s3->client_opaque_prf_input_len);
827 if (s->s3->client_opaque_prf_input_len != size - 2)
828 {
829 *al = SSL_AD_DECODE_ERROR;
830 return 0;
831 }
832
833 if (s->s3->client_opaque_prf_input != NULL) /* shouldn't really happen */
834 OPENSSL_free(s->s3->client_opaque_prf_input);
835 if (s->s3->client_opaque_prf_input_len == 0)
836 s->s3->client_opaque_prf_input = OPENSSL_malloc(1); /* dummy byte just to get non-NULL */
837 else
838 s->s3->client_opaque_prf_input = BUF_memdup(sdata, s->s3->client_opaque_prf_input_len);
839 if (s->s3->client_opaque_prf_input == NULL)
840 {
841 *al = TLS1_AD_INTERNAL_ERROR;
842 return 0;
843 }
844 }
845#endif
846 else if (type == TLSEXT_TYPE_session_ticket)
847 {
848 if (s->tls_session_ticket_ext_cb &&
849 !s->tls_session_ticket_ext_cb(s, data, size, s->tls_session_ticket_ext_cb_arg))
850 {
851 *al = TLS1_AD_INTERNAL_ERROR;
852 return 0;
853 }
854 }
855 else if (type == TLSEXT_TYPE_renegotiate)
856 {
857 if(!ssl_parse_clienthello_renegotiate_ext(s, data, size, al))
858 return 0;
859 renegotiate_seen = 1;
860 }
861 else if (type == TLSEXT_TYPE_status_request &&
862 s->version != DTLS1_VERSION && s->ctx->tlsext_status_cb)
412 { 863 {
413 864
414 if (size < 5) 865 if (size < 5)
@@ -507,12 +958,26 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
507 else 958 else
508 s->tlsext_status_type = -1; 959 s->tlsext_status_type = -1;
509 } 960 }
961
510 /* session ticket processed earlier */ 962 /* session ticket processed earlier */
963 data+=size;
964 }
965
966 *p = data;
511 967
512 data+=size; 968 ri_check:
969
970 /* Need RI if renegotiating */
971
972 if (!renegotiate_seen && s->new_session &&
973 !(s->options & SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION))
974 {
975 *al = SSL_AD_HANDSHAKE_FAILURE;
976 SSLerr(SSL_F_SSL_PARSE_CLIENTHELLO_TLSEXT,
977 SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED);
978 return 0;
513 } 979 }
514 980
515 *p = data;
516 return 1; 981 return 1;
517 } 982 }
518 983
@@ -522,11 +987,11 @@ int ssl_parse_serverhello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
522 unsigned short size; 987 unsigned short size;
523 unsigned short len; 988 unsigned short len;
524 unsigned char *data = *p; 989 unsigned char *data = *p;
525
526 int tlsext_servername = 0; 990 int tlsext_servername = 0;
991 int renegotiate_seen = 0;
527 992
528 if (data >= (d+n-2)) 993 if (data >= (d+n-2))
529 return 1; 994 goto ri_check;
530 995
531 n2s(data,len); 996 n2s(data,len);
532 997
@@ -536,7 +1001,7 @@ int ssl_parse_serverhello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
536 n2s(data,size); 1001 n2s(data,size);
537 1002
538 if (data+size > (d+n)) 1003 if (data+size > (d+n))
539 return 1; 1004 goto ri_check;
540 1005
541 if (s->tlsext_debug_cb) 1006 if (s->tlsext_debug_cb)
542 s->tlsext_debug_cb(s, 1, type, data, size, 1007 s->tlsext_debug_cb(s, 1, type, data, size,
@@ -551,8 +1016,46 @@ int ssl_parse_serverhello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
551 } 1016 }
552 tlsext_servername = 1; 1017 tlsext_servername = 1;
553 } 1018 }
1019
1020#ifndef OPENSSL_NO_EC
1021 else if (type == TLSEXT_TYPE_ec_point_formats &&
1022 s->version != DTLS1_VERSION)
1023 {
1024 unsigned char *sdata = data;
1025 int ecpointformatlist_length = *(sdata++);
1026
1027 if (ecpointformatlist_length != size - 1)
1028 {
1029 *al = TLS1_AD_DECODE_ERROR;
1030 return 0;
1031 }
1032 s->session->tlsext_ecpointformatlist_length = 0;
1033 if (s->session->tlsext_ecpointformatlist != NULL) OPENSSL_free(s->session->tlsext_ecpointformatlist);
1034 if ((s->session->tlsext_ecpointformatlist = OPENSSL_malloc(ecpointformatlist_length)) == NULL)
1035 {
1036 *al = TLS1_AD_INTERNAL_ERROR;
1037 return 0;
1038 }
1039 s->session->tlsext_ecpointformatlist_length = ecpointformatlist_length;
1040 memcpy(s->session->tlsext_ecpointformatlist, sdata, ecpointformatlist_length);
1041#if 0
1042 fprintf(stderr,"ssl_parse_serverhello_tlsext s->session->tlsext_ecpointformatlist ");
1043 sdata = s->session->tlsext_ecpointformatlist;
1044 for (i = 0; i < s->session->tlsext_ecpointformatlist_length; i++)
1045 fprintf(stderr,"%i ",*(sdata++));
1046 fprintf(stderr,"\n");
1047#endif
1048 }
1049#endif /* OPENSSL_NO_EC */
1050
554 else if (type == TLSEXT_TYPE_session_ticket) 1051 else if (type == TLSEXT_TYPE_session_ticket)
555 { 1052 {
1053 if (s->tls_session_ticket_ext_cb &&
1054 !s->tls_session_ticket_ext_cb(s, data, size, s->tls_session_ticket_ext_cb_arg))
1055 {
1056 *al = TLS1_AD_INTERNAL_ERROR;
1057 return 0;
1058 }
556 if ((SSL_get_options(s) & SSL_OP_NO_TICKET) 1059 if ((SSL_get_options(s) & SSL_OP_NO_TICKET)
557 || (size > 0)) 1060 || (size > 0))
558 { 1061 {
@@ -561,7 +1064,40 @@ int ssl_parse_serverhello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
561 } 1064 }
562 s->tlsext_ticket_expected = 1; 1065 s->tlsext_ticket_expected = 1;
563 } 1066 }
564 else if (type == TLSEXT_TYPE_status_request) 1067#ifdef TLSEXT_TYPE_opaque_prf_input
1068 else if (type == TLSEXT_TYPE_opaque_prf_input &&
1069 s->version != DTLS1_VERSION)
1070 {
1071 unsigned char *sdata = data;
1072
1073 if (size < 2)
1074 {
1075 *al = SSL_AD_DECODE_ERROR;
1076 return 0;
1077 }
1078 n2s(sdata, s->s3->server_opaque_prf_input_len);
1079 if (s->s3->server_opaque_prf_input_len != size - 2)
1080 {
1081 *al = SSL_AD_DECODE_ERROR;
1082 return 0;
1083 }
1084
1085 if (s->s3->server_opaque_prf_input != NULL) /* shouldn't really happen */
1086 OPENSSL_free(s->s3->server_opaque_prf_input);
1087 if (s->s3->server_opaque_prf_input_len == 0)
1088 s->s3->server_opaque_prf_input = OPENSSL_malloc(1); /* dummy byte just to get non-NULL */
1089 else
1090 s->s3->server_opaque_prf_input = BUF_memdup(sdata, s->s3->server_opaque_prf_input_len);
1091
1092 if (s->s3->server_opaque_prf_input == NULL)
1093 {
1094 *al = TLS1_AD_INTERNAL_ERROR;
1095 return 0;
1096 }
1097 }
1098#endif
1099 else if (type == TLSEXT_TYPE_status_request &&
1100 s->version != DTLS1_VERSION)
565 { 1101 {
566 /* MUST be empty and only sent if we've requested 1102 /* MUST be empty and only sent if we've requested
567 * a status request message. 1103 * a status request message.
@@ -574,7 +1110,12 @@ int ssl_parse_serverhello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
574 /* Set flag to expect CertificateStatus message */ 1110 /* Set flag to expect CertificateStatus message */
575 s->tlsext_status_expected = 1; 1111 s->tlsext_status_expected = 1;
576 } 1112 }
577 1113 else if (type == TLSEXT_TYPE_renegotiate)
1114 {
1115 if(!ssl_parse_serverhello_renegotiate_ext(s, data, size, al))
1116 return 0;
1117 renegotiate_seen = 1;
1118 }
578 data+=size; 1119 data+=size;
579 } 1120 }
580 1121
@@ -606,6 +1147,148 @@ int ssl_parse_serverhello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
606 } 1147 }
607 1148
608 *p = data; 1149 *p = data;
1150
1151 ri_check:
1152
1153 /* Determine if we need to see RI. Strictly speaking if we want to
1154 * avoid an attack we should *always* see RI even on initial server
1155 * hello because the client doesn't see any renegotiation during an
1156 * attack. However this would mean we could not connect to any server
1157 * which doesn't support RI so for the immediate future tolerate RI
1158 * absence on initial connect only.
1159 */
1160 if (!renegotiate_seen
1161 && !(s->options & SSL_OP_LEGACY_SERVER_CONNECT)
1162 && !(s->options & SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION))
1163 {
1164 *al = SSL_AD_HANDSHAKE_FAILURE;
1165 SSLerr(SSL_F_SSL_PARSE_SERVERHELLO_TLSEXT,
1166 SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED);
1167 return 0;
1168 }
1169
1170 return 1;
1171 }
1172
1173
1174int ssl_prepare_clienthello_tlsext(SSL *s)
1175 {
1176#ifndef OPENSSL_NO_EC
1177 /* If we are client and using an elliptic curve cryptography cipher suite, send the point formats
1178 * and elliptic curves we support.
1179 */
1180 int using_ecc = 0;
1181 int i;
1182 unsigned char *j;
1183 unsigned long alg_k, alg_a;
1184 STACK_OF(SSL_CIPHER) *cipher_stack = SSL_get_ciphers(s);
1185
1186 for (i = 0; i < sk_SSL_CIPHER_num(cipher_stack); i++)
1187 {
1188 SSL_CIPHER *c = sk_SSL_CIPHER_value(cipher_stack, i);
1189
1190 alg_k = c->algorithm_mkey;
1191 alg_a = c->algorithm_auth;
1192 if ((alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe) || (alg_a & SSL_aECDSA)))
1193 {
1194 using_ecc = 1;
1195 break;
1196 }
1197 }
1198 using_ecc = using_ecc && (s->version == TLS1_VERSION);
1199 if (using_ecc)
1200 {
1201 if (s->tlsext_ecpointformatlist != NULL) OPENSSL_free(s->tlsext_ecpointformatlist);
1202 if ((s->tlsext_ecpointformatlist = OPENSSL_malloc(3)) == NULL)
1203 {
1204 SSLerr(SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT,ERR_R_MALLOC_FAILURE);
1205 return -1;
1206 }
1207 s->tlsext_ecpointformatlist_length = 3;
1208 s->tlsext_ecpointformatlist[0] = TLSEXT_ECPOINTFORMAT_uncompressed;
1209 s->tlsext_ecpointformatlist[1] = TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime;
1210 s->tlsext_ecpointformatlist[2] = TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2;
1211
1212 /* we support all named elliptic curves in draft-ietf-tls-ecc-12 */
1213 if (s->tlsext_ellipticcurvelist != NULL) OPENSSL_free(s->tlsext_ellipticcurvelist);
1214 s->tlsext_ellipticcurvelist_length = sizeof(nid_list)/sizeof(nid_list[0]) * 2;
1215 if ((s->tlsext_ellipticcurvelist = OPENSSL_malloc(s->tlsext_ellipticcurvelist_length)) == NULL)
1216 {
1217 s->tlsext_ellipticcurvelist_length = 0;
1218 SSLerr(SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT,ERR_R_MALLOC_FAILURE);
1219 return -1;
1220 }
1221 for (i = 1, j = s->tlsext_ellipticcurvelist; (unsigned int)i <=
1222 sizeof(nid_list)/sizeof(nid_list[0]); i++)
1223 s2n(i,j);
1224 }
1225#endif /* OPENSSL_NO_EC */
1226
1227#ifdef TLSEXT_TYPE_opaque_prf_input
1228 {
1229 int r = 1;
1230
1231 if (s->ctx->tlsext_opaque_prf_input_callback != 0)
1232 {
1233 r = s->ctx->tlsext_opaque_prf_input_callback(s, NULL, 0, s->ctx->tlsext_opaque_prf_input_callback_arg);
1234 if (!r)
1235 return -1;
1236 }
1237
1238 if (s->tlsext_opaque_prf_input != NULL)
1239 {
1240 if (s->s3->client_opaque_prf_input != NULL) /* shouldn't really happen */
1241 OPENSSL_free(s->s3->client_opaque_prf_input);
1242
1243 if (s->tlsext_opaque_prf_input_len == 0)
1244 s->s3->client_opaque_prf_input = OPENSSL_malloc(1); /* dummy byte just to get non-NULL */
1245 else
1246 s->s3->client_opaque_prf_input = BUF_memdup(s->tlsext_opaque_prf_input, s->tlsext_opaque_prf_input_len);
1247 if (s->s3->client_opaque_prf_input == NULL)
1248 {
1249 SSLerr(SSL_F_SSL_PREPARE_CLIENTHELLO_TLSEXT,ERR_R_MALLOC_FAILURE);
1250 return -1;
1251 }
1252 s->s3->client_opaque_prf_input_len = s->tlsext_opaque_prf_input_len;
1253 }
1254
1255 if (r == 2)
1256 /* at callback's request, insist on receiving an appropriate server opaque PRF input */
1257 s->s3->server_opaque_prf_input_len = s->tlsext_opaque_prf_input_len;
1258 }
1259#endif
1260
1261 return 1;
1262 }
1263
1264int ssl_prepare_serverhello_tlsext(SSL *s)
1265 {
1266#ifndef OPENSSL_NO_EC
1267 /* If we are server and using an ECC cipher suite, send the point formats we support
1268 * if the client sent us an ECPointsFormat extension. Note that the server is not
1269 * supposed to send an EllipticCurves extension.
1270 */
1271
1272 unsigned long alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
1273 unsigned long alg_a = s->s3->tmp.new_cipher->algorithm_auth;
1274 int using_ecc = (alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) || (alg_a & SSL_aECDSA);
1275 using_ecc = using_ecc && (s->session->tlsext_ecpointformatlist != NULL);
1276
1277 if (using_ecc)
1278 {
1279 if (s->tlsext_ecpointformatlist != NULL) OPENSSL_free(s->tlsext_ecpointformatlist);
1280 if ((s->tlsext_ecpointformatlist = OPENSSL_malloc(3)) == NULL)
1281 {
1282 SSLerr(SSL_F_SSL_PREPARE_SERVERHELLO_TLSEXT,ERR_R_MALLOC_FAILURE);
1283 return -1;
1284 }
1285 s->tlsext_ecpointformatlist_length = 3;
1286 s->tlsext_ecpointformatlist[0] = TLSEXT_ECPOINTFORMAT_uncompressed;
1287 s->tlsext_ecpointformatlist[1] = TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime;
1288 s->tlsext_ecpointformatlist[2] = TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2;
1289 }
1290#endif /* OPENSSL_NO_EC */
1291
609 return 1; 1292 return 1;
610 } 1293 }
611 1294
@@ -614,6 +1297,15 @@ int ssl_check_clienthello_tlsext(SSL *s)
614 int ret=SSL_TLSEXT_ERR_NOACK; 1297 int ret=SSL_TLSEXT_ERR_NOACK;
615 int al = SSL_AD_UNRECOGNIZED_NAME; 1298 int al = SSL_AD_UNRECOGNIZED_NAME;
616 1299
1300#ifndef OPENSSL_NO_EC
1301 /* The handling of the ECPointFormats extension is done elsewhere, namely in
1302 * ssl3_choose_cipher in s3_lib.c.
1303 */
1304 /* The handling of the EllipticCurves extension is done elsewhere, namely in
1305 * ssl3_choose_cipher in s3_lib.c.
1306 */
1307#endif
1308
617 if (s->ctx != NULL && s->ctx->tlsext_servername_callback != 0) 1309 if (s->ctx != NULL && s->ctx->tlsext_servername_callback != 0)
618 ret = s->ctx->tlsext_servername_callback(s, &al, s->ctx->tlsext_servername_arg); 1310 ret = s->ctx->tlsext_servername_callback(s, &al, s->ctx->tlsext_servername_arg);
619 else if (s->initial_ctx != NULL && s->initial_ctx->tlsext_servername_callback != 0) 1311 else if (s->initial_ctx != NULL && s->initial_ctx->tlsext_servername_callback != 0)
@@ -623,7 +1315,7 @@ int ssl_check_clienthello_tlsext(SSL *s)
623 * Note: this must be called after servername callbacks in case 1315 * Note: this must be called after servername callbacks in case
624 * the certificate has changed. 1316 * the certificate has changed.
625 */ 1317 */
626 if ((s->tlsext_status_type != -1) && s->ctx->tlsext_status_cb) 1318 if ((s->tlsext_status_type != -1) && s->ctx && s->ctx->tlsext_status_cb)
627 { 1319 {
628 int r; 1320 int r;
629 r = s->ctx->tlsext_status_cb(s, s->ctx->tlsext_status_arg); 1321 r = s->ctx->tlsext_status_cb(s, s->ctx->tlsext_status_arg);
@@ -649,7 +1341,65 @@ int ssl_check_clienthello_tlsext(SSL *s)
649 } 1341 }
650 else 1342 else
651 s->tlsext_status_expected = 0; 1343 s->tlsext_status_expected = 0;
652 err: 1344
1345#ifdef TLSEXT_TYPE_opaque_prf_input
1346 {
1347 /* This sort of belongs into ssl_prepare_serverhello_tlsext(),
1348 * but we might be sending an alert in response to the client hello,
1349 * so this has to happen here in ssl_check_clienthello_tlsext(). */
1350
1351 int r = 1;
1352
1353 if (s->ctx->tlsext_opaque_prf_input_callback != 0)
1354 {
1355 r = s->ctx->tlsext_opaque_prf_input_callback(s, NULL, 0, s->ctx->tlsext_opaque_prf_input_callback_arg);
1356 if (!r)
1357 {
1358 ret = SSL_TLSEXT_ERR_ALERT_FATAL;
1359 al = SSL_AD_INTERNAL_ERROR;
1360 goto err;
1361 }
1362 }
1363
1364 if (s->s3->server_opaque_prf_input != NULL) /* shouldn't really happen */
1365 OPENSSL_free(s->s3->server_opaque_prf_input);
1366 s->s3->server_opaque_prf_input = NULL;
1367
1368 if (s->tlsext_opaque_prf_input != NULL)
1369 {
1370 if (s->s3->client_opaque_prf_input != NULL &&
1371 s->s3->client_opaque_prf_input_len == s->tlsext_opaque_prf_input_len)
1372 {
1373 /* can only use this extension if we have a server opaque PRF input
1374 * of the same length as the client opaque PRF input! */
1375
1376 if (s->tlsext_opaque_prf_input_len == 0)
1377 s->s3->server_opaque_prf_input = OPENSSL_malloc(1); /* dummy byte just to get non-NULL */
1378 else
1379 s->s3->server_opaque_prf_input = BUF_memdup(s->tlsext_opaque_prf_input, s->tlsext_opaque_prf_input_len);
1380 if (s->s3->server_opaque_prf_input == NULL)
1381 {
1382 ret = SSL_TLSEXT_ERR_ALERT_FATAL;
1383 al = SSL_AD_INTERNAL_ERROR;
1384 goto err;
1385 }
1386 s->s3->server_opaque_prf_input_len = s->tlsext_opaque_prf_input_len;
1387 }
1388 }
1389
1390 if (r == 2 && s->s3->server_opaque_prf_input == NULL)
1391 {
1392 /* The callback wants to enforce use of the extension,
1393 * but we can't do that with the client opaque PRF input;
1394 * abort the handshake.
1395 */
1396 ret = SSL_TLSEXT_ERR_ALERT_FATAL;
1397 al = SSL_AD_HANDSHAKE_FAILURE;
1398 }
1399 }
1400
1401#endif
1402 err:
653 switch (ret) 1403 switch (ret)
654 { 1404 {
655 case SSL_TLSEXT_ERR_ALERT_FATAL: 1405 case SSL_TLSEXT_ERR_ALERT_FATAL:
@@ -672,16 +1422,75 @@ int ssl_check_serverhello_tlsext(SSL *s)
672 int ret=SSL_TLSEXT_ERR_NOACK; 1422 int ret=SSL_TLSEXT_ERR_NOACK;
673 int al = SSL_AD_UNRECOGNIZED_NAME; 1423 int al = SSL_AD_UNRECOGNIZED_NAME;
674 1424
1425#ifndef OPENSSL_NO_EC
1426 /* If we are client and using an elliptic curve cryptography cipher suite, then server
1427 * must return a an EC point formats lists containing uncompressed.
1428 */
1429 unsigned long alg_k = s->s3->tmp.new_cipher->algorithm_mkey;
1430 unsigned long alg_a = s->s3->tmp.new_cipher->algorithm_auth;
1431 if ((s->tlsext_ecpointformatlist != NULL) && (s->tlsext_ecpointformatlist_length > 0) &&
1432 ((alg_k & (SSL_kEECDH|SSL_kECDHr|SSL_kECDHe)) || (alg_a & SSL_aECDSA)))
1433 {
1434 /* we are using an ECC cipher */
1435 size_t i;
1436 unsigned char *list;
1437 int found_uncompressed = 0;
1438 if ((s->session->tlsext_ecpointformatlist == NULL) || (s->session->tlsext_ecpointformatlist_length == 0))
1439 {
1440 SSLerr(SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT,SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST);
1441 return -1;
1442 }
1443 list = s->session->tlsext_ecpointformatlist;
1444 for (i = 0; i < s->session->tlsext_ecpointformatlist_length; i++)
1445 {
1446 if (*(list++) == TLSEXT_ECPOINTFORMAT_uncompressed)
1447 {
1448 found_uncompressed = 1;
1449 break;
1450 }
1451 }
1452 if (!found_uncompressed)
1453 {
1454 SSLerr(SSL_F_SSL_CHECK_SERVERHELLO_TLSEXT,SSL_R_TLS_INVALID_ECPOINTFORMAT_LIST);
1455 return -1;
1456 }
1457 }
1458 ret = SSL_TLSEXT_ERR_OK;
1459#endif /* OPENSSL_NO_EC */
1460
675 if (s->ctx != NULL && s->ctx->tlsext_servername_callback != 0) 1461 if (s->ctx != NULL && s->ctx->tlsext_servername_callback != 0)
676 ret = s->ctx->tlsext_servername_callback(s, &al, s->ctx->tlsext_servername_arg); 1462 ret = s->ctx->tlsext_servername_callback(s, &al, s->ctx->tlsext_servername_arg);
677 else if (s->initial_ctx != NULL && s->initial_ctx->tlsext_servername_callback != 0) 1463 else if (s->initial_ctx != NULL && s->initial_ctx->tlsext_servername_callback != 0)
678 ret = s->initial_ctx->tlsext_servername_callback(s, &al, s->initial_ctx->tlsext_servername_arg); 1464 ret = s->initial_ctx->tlsext_servername_callback(s, &al, s->initial_ctx->tlsext_servername_arg);
679 1465
1466#ifdef TLSEXT_TYPE_opaque_prf_input
1467 if (s->s3->server_opaque_prf_input_len > 0)
1468 {
1469 /* This case may indicate that we, as a client, want to insist on using opaque PRF inputs.
1470 * So first verify that we really have a value from the server too. */
1471
1472 if (s->s3->server_opaque_prf_input == NULL)
1473 {
1474 ret = SSL_TLSEXT_ERR_ALERT_FATAL;
1475 al = SSL_AD_HANDSHAKE_FAILURE;
1476 }
1477
1478 /* Anytime the server *has* sent an opaque PRF input, we need to check
1479 * that we have a client opaque PRF input of the same size. */
1480 if (s->s3->client_opaque_prf_input == NULL ||
1481 s->s3->client_opaque_prf_input_len != s->s3->server_opaque_prf_input_len)
1482 {
1483 ret = SSL_TLSEXT_ERR_ALERT_FATAL;
1484 al = SSL_AD_ILLEGAL_PARAMETER;
1485 }
1486 }
1487#endif
1488
680 /* If we've requested certificate status and we wont get one 1489 /* If we've requested certificate status and we wont get one
681 * tell the callback 1490 * tell the callback
682 */ 1491 */
683 if ((s->tlsext_status_type != -1) && !(s->tlsext_status_expected) 1492 if ((s->tlsext_status_type != -1) && !(s->tlsext_status_expected)
684 && s->ctx->tlsext_status_cb) 1493 && s->ctx && s->ctx->tlsext_status_cb)
685 { 1494 {
686 int r; 1495 int r;
687 /* Set resp to NULL, resplen to -1 so callback knows 1496 /* Set resp to NULL, resplen to -1 so callback knows
@@ -745,6 +1554,14 @@ int tls1_process_ticket(SSL *s, unsigned char *session_id, int len,
745 return 1; 1554 return 1;
746 if (p >= limit) 1555 if (p >= limit)
747 return -1; 1556 return -1;
1557 /* Skip past DTLS cookie */
1558 if (s->version == DTLS1_VERSION || s->version == DTLS1_BAD_VER)
1559 {
1560 i = *(p++);
1561 p+= i;
1562 if (p >= limit)
1563 return -1;
1564 }
748 /* Skip past cipher list */ 1565 /* Skip past cipher list */
749 n2s(p, i); 1566 n2s(p, i);
750 p+= i; 1567 p+= i;
@@ -768,6 +1585,11 @@ int tls1_process_ticket(SSL *s, unsigned char *session_id, int len,
768 return 1; 1585 return 1;
769 if (type == TLSEXT_TYPE_session_ticket) 1586 if (type == TLSEXT_TYPE_session_ticket)
770 { 1587 {
1588 /* If tickets disabled indicate cache miss which will
1589 * trigger a full handshake
1590 */
1591 if (SSL_get_options(s) & SSL_OP_NO_TICKET)
1592 return 1;
771 /* If zero length note client will accept a ticket 1593 /* If zero length note client will accept a ticket
772 * and indicate cache miss to trigger full handshake 1594 * and indicate cache miss to trigger full handshake
773 */ 1595 */
@@ -776,6 +1598,15 @@ int tls1_process_ticket(SSL *s, unsigned char *session_id, int len,
776 s->tlsext_ticket_expected = 1; 1598 s->tlsext_ticket_expected = 1;
777 return 0; /* Cache miss */ 1599 return 0; /* Cache miss */
778 } 1600 }
1601 if (s->tls_session_secret_cb)
1602 {
1603 /* Indicate cache miss here and instead of
1604 * generating the session from ticket now,
1605 * trigger abbreviated handshake based on
1606 * external mechanism to calculate the master
1607 * secret later. */
1608 return 0;
1609 }
779 return tls_decrypt_ticket(s, p, size, session_id, len, 1610 return tls_decrypt_ticket(s, p, size, session_id, len,
780 ret); 1611 ret);
781 } 1612 }
@@ -795,16 +1626,17 @@ static int tls_decrypt_ticket(SSL *s, const unsigned char *etick, int eticklen,
795 unsigned char tick_hmac[EVP_MAX_MD_SIZE]; 1626 unsigned char tick_hmac[EVP_MAX_MD_SIZE];
796 HMAC_CTX hctx; 1627 HMAC_CTX hctx;
797 EVP_CIPHER_CTX ctx; 1628 EVP_CIPHER_CTX ctx;
1629 SSL_CTX *tctx = s->initial_ctx;
798 /* Need at least keyname + iv + some encrypted data */ 1630 /* Need at least keyname + iv + some encrypted data */
799 if (eticklen < 48) 1631 if (eticklen < 48)
800 goto tickerr; 1632 goto tickerr;
801 /* Initialize session ticket encryption and HMAC contexts */ 1633 /* Initialize session ticket encryption and HMAC contexts */
802 HMAC_CTX_init(&hctx); 1634 HMAC_CTX_init(&hctx);
803 EVP_CIPHER_CTX_init(&ctx); 1635 EVP_CIPHER_CTX_init(&ctx);
804 if (s->ctx->tlsext_ticket_key_cb) 1636 if (tctx->tlsext_ticket_key_cb)
805 { 1637 {
806 unsigned char *nctick = (unsigned char *)etick; 1638 unsigned char *nctick = (unsigned char *)etick;
807 int rv = s->ctx->tlsext_ticket_key_cb(s, nctick, nctick + 16, 1639 int rv = tctx->tlsext_ticket_key_cb(s, nctick, nctick + 16,
808 &ctx, &hctx, 0); 1640 &ctx, &hctx, 0);
809 if (rv < 0) 1641 if (rv < 0)
810 return -1; 1642 return -1;
@@ -816,17 +1648,22 @@ static int tls_decrypt_ticket(SSL *s, const unsigned char *etick, int eticklen,
816 else 1648 else
817 { 1649 {
818 /* Check key name matches */ 1650 /* Check key name matches */
819 if (memcmp(etick, s->ctx->tlsext_tick_key_name, 16)) 1651 if (memcmp(etick, tctx->tlsext_tick_key_name, 16))
820 goto tickerr; 1652 goto tickerr;
821 HMAC_Init_ex(&hctx, s->ctx->tlsext_tick_hmac_key, 16, 1653 HMAC_Init_ex(&hctx, tctx->tlsext_tick_hmac_key, 16,
822 tlsext_tick_md(), NULL); 1654 tlsext_tick_md(), NULL);
823 EVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL, 1655 EVP_DecryptInit_ex(&ctx, EVP_aes_128_cbc(), NULL,
824 s->ctx->tlsext_tick_aes_key, etick + 16); 1656 tctx->tlsext_tick_aes_key, etick + 16);
825 } 1657 }
826 /* Attempt to process session ticket, first conduct sanity and 1658 /* Attempt to process session ticket, first conduct sanity and
827 * integrity checks on ticket. 1659 * integrity checks on ticket.
828 */ 1660 */
829 mlen = HMAC_size(&hctx); 1661 mlen = HMAC_size(&hctx);
1662 if (mlen < 0)
1663 {
1664 EVP_CIPHER_CTX_cleanup(&ctx);
1665 return -1;
1666 }
830 eticklen -= mlen; 1667 eticklen -= mlen;
831 /* Check HMAC of encrypted ticket */ 1668 /* Check HMAC of encrypted ticket */
832 HMAC_Update(&hctx, etick, eticklen); 1669 HMAC_Update(&hctx, etick, eticklen);
diff --git a/src/lib/libssl/src/ssl/t1_meth.c b/src/lib/libssl/src/ssl/t1_meth.c
index f5d8df634e..6ce7c0bbf5 100644
--- a/src/lib/libssl/src/ssl/t1_meth.c
+++ b/src/lib/libssl/src/ssl/t1_meth.c
@@ -60,8 +60,8 @@
60#include <openssl/objects.h> 60#include <openssl/objects.h>
61#include "ssl_locl.h" 61#include "ssl_locl.h"
62 62
63static SSL_METHOD *tls1_get_method(int ver); 63static const SSL_METHOD *tls1_get_method(int ver);
64static SSL_METHOD *tls1_get_method(int ver) 64static const SSL_METHOD *tls1_get_method(int ver)
65 { 65 {
66 if (ver == TLS1_VERSION) 66 if (ver == TLS1_VERSION)
67 return(TLSv1_method()); 67 return(TLSv1_method());
diff --git a/src/lib/libssl/src/ssl/t1_srvr.c b/src/lib/libssl/src/ssl/t1_srvr.c
index b75636abba..42525e9e89 100644
--- a/src/lib/libssl/src/ssl/t1_srvr.c
+++ b/src/lib/libssl/src/ssl/t1_srvr.c
@@ -64,8 +64,8 @@
64#include <openssl/evp.h> 64#include <openssl/evp.h>
65#include <openssl/x509.h> 65#include <openssl/x509.h>
66 66
67static SSL_METHOD *tls1_get_server_method(int ver); 67static const SSL_METHOD *tls1_get_server_method(int ver);
68static SSL_METHOD *tls1_get_server_method(int ver) 68static const SSL_METHOD *tls1_get_server_method(int ver)
69 { 69 {
70 if (ver == TLS1_VERSION) 70 if (ver == TLS1_VERSION)
71 return(TLSv1_server_method()); 71 return(TLSv1_server_method());
diff --git a/src/lib/libssl/src/ssl/tls1.h b/src/lib/libssl/src/ssl/tls1.h
index 2d1d293e1a..b3cc8f098b 100644
--- a/src/lib/libssl/src/ssl/tls1.h
+++ b/src/lib/libssl/src/ssl/tls1.h
@@ -56,6 +56,59 @@
56 * [including the GNU Public Licence.] 56 * [including the GNU Public Licence.]
57 */ 57 */
58/* ==================================================================== 58/* ====================================================================
59 * Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
60 *
61 * Redistribution and use in source and binary forms, with or without
62 * modification, are permitted provided that the following conditions
63 * are met:
64 *
65 * 1. Redistributions of source code must retain the above copyright
66 * notice, this list of conditions and the following disclaimer.
67 *
68 * 2. Redistributions in binary form must reproduce the above copyright
69 * notice, this list of conditions and the following disclaimer in
70 * the documentation and/or other materials provided with the
71 * distribution.
72 *
73 * 3. All advertising materials mentioning features or use of this
74 * software must display the following acknowledgment:
75 * "This product includes software developed by the OpenSSL Project
76 * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
77 *
78 * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
79 * endorse or promote products derived from this software without
80 * prior written permission. For written permission, please contact
81 * openssl-core@openssl.org.
82 *
83 * 5. Products derived from this software may not be called "OpenSSL"
84 * nor may "OpenSSL" appear in their names without prior written
85 * permission of the OpenSSL Project.
86 *
87 * 6. Redistributions of any form whatsoever must retain the following
88 * acknowledgment:
89 * "This product includes software developed by the OpenSSL Project
90 * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
91 *
92 * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
93 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
94 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
95 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
96 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
97 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
98 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
99 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
100 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
101 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
102 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
103 * OF THE POSSIBILITY OF SUCH DAMAGE.
104 * ====================================================================
105 *
106 * This product includes cryptographic software written by Eric Young
107 * (eay@cryptsoft.com). This product includes software written by Tim
108 * Hudson (tjh@cryptsoft.com).
109 *
110 */
111/* ====================================================================
59 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. 112 * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
60 * 113 *
61 * Portions of the attached software ("Contribution") are developed by 114 * Portions of the attached software ("Contribution") are developed by
@@ -68,6 +121,32 @@
68 * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories. 121 * Vipul Gupta and Sumit Gupta of Sun Microsystems Laboratories.
69 * 122 *
70 */ 123 */
124/* ====================================================================
125 * Copyright 2005 Nokia. All rights reserved.
126 *
127 * The portions of the attached software ("Contribution") is developed by
128 * Nokia Corporation and is licensed pursuant to the OpenSSL open source
129 * license.
130 *
131 * The Contribution, originally written by Mika Kousa and Pasi Eronen of
132 * Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
133 * support (see RFC 4279) to OpenSSL.
134 *
135 * No patent licenses or other rights except those expressly stated in
136 * the OpenSSL open source license shall be deemed granted or received
137 * expressly, by implication, estoppel, or otherwise.
138 *
139 * No assurances are provided by Nokia that the Contribution does not
140 * infringe the patent or other intellectual property rights of any third
141 * party or that the license provides you with all the necessary rights
142 * to make use of the Contribution.
143 *
144 * THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
145 * ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
146 * SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
147 * OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
148 * OTHERWISE.
149 */
71 150
72#ifndef HEADER_TLS1_H 151#ifndef HEADER_TLS1_H
73#define HEADER_TLS1_H 152#define HEADER_TLS1_H
@@ -104,22 +183,39 @@ extern "C" {
104#define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114 183#define TLS1_AD_BAD_CERTIFICATE_HASH_VALUE 114
105#define TLS1_AD_UNKNOWN_PSK_IDENTITY 115 /* fatal */ 184#define TLS1_AD_UNKNOWN_PSK_IDENTITY 115 /* fatal */
106 185
107/* ExtensionType values from RFC 3546 */ 186/* ExtensionType values from RFC3546 / RFC4366 */
108#define TLSEXT_TYPE_server_name 0 187#define TLSEXT_TYPE_server_name 0
109#define TLSEXT_TYPE_max_fragment_length 1 188#define TLSEXT_TYPE_max_fragment_length 1
110#define TLSEXT_TYPE_client_certificate_url 2 189#define TLSEXT_TYPE_client_certificate_url 2
111#define TLSEXT_TYPE_trusted_ca_keys 3 190#define TLSEXT_TYPE_trusted_ca_keys 3
112#define TLSEXT_TYPE_truncated_hmac 4 191#define TLSEXT_TYPE_truncated_hmac 4
113#define TLSEXT_TYPE_status_request 5 192#define TLSEXT_TYPE_status_request 5
193/* ExtensionType values from RFC4492 */
114#define TLSEXT_TYPE_elliptic_curves 10 194#define TLSEXT_TYPE_elliptic_curves 10
115#define TLSEXT_TYPE_ec_point_formats 11 195#define TLSEXT_TYPE_ec_point_formats 11
116#define TLSEXT_TYPE_session_ticket 35 196#define TLSEXT_TYPE_session_ticket 35
197/* ExtensionType value from draft-rescorla-tls-opaque-prf-input-00.txt */
198#if 0 /* will have to be provided externally for now ,
199 * i.e. build with -DTLSEXT_TYPE_opaque_prf_input=38183
200 * using whatever extension number you'd like to try */
201# define TLSEXT_TYPE_opaque_prf_input ?? */
202#endif
203
204/* Temporary extension type */
205#define TLSEXT_TYPE_renegotiate 0xff01
117 206
118/* NameType value from RFC 3546 */ 207/* NameType value from RFC 3546 */
119#define TLSEXT_NAMETYPE_host_name 0 208#define TLSEXT_NAMETYPE_host_name 0
120/* status request value from RFC 3546 */ 209/* status request value from RFC 3546 */
121#define TLSEXT_STATUSTYPE_ocsp 1 210#define TLSEXT_STATUSTYPE_ocsp 1
122 211
212/* ECPointFormat values from draft-ietf-tls-ecc-12 */
213#define TLSEXT_ECPOINTFORMAT_first 0
214#define TLSEXT_ECPOINTFORMAT_uncompressed 0
215#define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1
216#define TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2
217#define TLSEXT_ECPOINTFORMAT_last 2
218
123#ifndef OPENSSL_NO_TLSEXT 219#ifndef OPENSSL_NO_TLSEXT
124 220
125#define TLSEXT_MAXLEN_host_name 255 221#define TLSEXT_MAXLEN_host_name 255
@@ -169,9 +265,9 @@ SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_CB,(void (*)(void))cb)
169SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0, (void *)arg) 265SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG,0, (void *)arg)
170 266
171#define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \ 267#define SSL_CTX_get_tlsext_ticket_keys(ctx, keys, keylen) \
172 SSL_CTX_ctrl((ctx),SSL_CTRL_GET_TLXEXT_TICKET_KEYS,(keylen),(keys)) 268 SSL_CTX_ctrl((ctx),SSL_CTRL_GET_TLSEXT_TICKET_KEYS,(keylen),(keys))
173#define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \ 269#define SSL_CTX_set_tlsext_ticket_keys(ctx, keys, keylen) \
174 SSL_CTX_ctrl((ctx),SSL_CTRL_SET_TLXEXT_TICKET_KEYS,(keylen),(keys)) 270 SSL_CTX_ctrl((ctx),SSL_CTRL_SET_TLSEXT_TICKET_KEYS,(keylen),(keys))
175 271
176#define SSL_CTX_set_tlsext_status_cb(ssl, cb) \ 272#define SSL_CTX_set_tlsext_status_cb(ssl, cb) \
177SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,(void (*)(void))cb) 273SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,(void (*)(void))cb)
@@ -179,17 +275,31 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB,(void (*)(void))cb)
179#define SSL_CTX_set_tlsext_status_arg(ssl, arg) \ 275#define SSL_CTX_set_tlsext_status_arg(ssl, arg) \
180SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)arg) 276SSL_CTX_ctrl(ssl,SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG,0, (void *)arg)
181 277
278#define SSL_set_tlsext_opaque_prf_input(s, src, len) \
279SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT, len, src)
280#define SSL_CTX_set_tlsext_opaque_prf_input_callback(ctx, cb) \
281SSL_CTX_callback_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB, (void (*)(void))cb)
282#define SSL_CTX_set_tlsext_opaque_prf_input_callback_arg(ctx, arg) \
283SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG, 0, arg)
284
182#define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \ 285#define SSL_CTX_set_tlsext_ticket_key_cb(ssl, cb) \
183SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) 286SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb)
184 287
185#endif 288#endif
186 289
187/* Additional TLS ciphersuites from draft-ietf-tls-56-bit-ciphersuites-00.txt 290/* PSK ciphersuites from 4279 */
291#define TLS1_CK_PSK_WITH_RC4_128_SHA 0x0300008A
292#define TLS1_CK_PSK_WITH_3DES_EDE_CBC_SHA 0x0300008B
293#define TLS1_CK_PSK_WITH_AES_128_CBC_SHA 0x0300008C
294#define TLS1_CK_PSK_WITH_AES_256_CBC_SHA 0x0300008D
295
296/* Additional TLS ciphersuites from expired Internet Draft
297 * draft-ietf-tls-56-bit-ciphersuites-01.txt
188 * (available if TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES is defined, see 298 * (available if TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES is defined, see
189 * s3_lib.c). We actually treat them like SSL 3.0 ciphers, which we probably 299 * s3_lib.c). We actually treat them like SSL 3.0 ciphers, which we probably
190 * shouldn't. */ 300 * shouldn't. Note that the first two are actually not in the IDs. */
191#define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5 0x03000060 301#define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5 0x03000060 /* not in ID */
192#define TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 0x03000061 302#define TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 0x03000061 /* not in ID */
193#define TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA 0x03000062 303#define TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA 0x03000062
194#define TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA 0x03000063 304#define TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA 0x03000063
195#define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA 0x03000064 305#define TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA 0x03000064
@@ -327,6 +437,12 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb)
327#define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA" 437#define TLS1_TXT_ECDH_anon_WITH_AES_128_CBC_SHA "AECDH-AES128-SHA"
328#define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA" 438#define TLS1_TXT_ECDH_anon_WITH_AES_256_CBC_SHA "AECDH-AES256-SHA"
329 439
440/* PSK ciphersuites from RFC 4279 */
441#define TLS1_TXT_PSK_WITH_RC4_128_SHA "PSK-RC4-SHA"
442#define TLS1_TXT_PSK_WITH_3DES_EDE_CBC_SHA "PSK-3DES-EDE-CBC-SHA"
443#define TLS1_TXT_PSK_WITH_AES_128_CBC_SHA "PSK-AES128-CBC-SHA"
444#define TLS1_TXT_PSK_WITH_AES_256_CBC_SHA "PSK-AES256-CBC-SHA"
445
330/* Camellia ciphersuites from RFC4132 */ 446/* Camellia ciphersuites from RFC4132 */
331#define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA" 447#define TLS1_TXT_RSA_WITH_CAMELLIA_128_CBC_SHA "CAMELLIA128-SHA"
332#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA" 448#define TLS1_TXT_DH_DSS_WITH_CAMELLIA_128_CBC_SHA "DH-DSS-CAMELLIA128-SHA"
@@ -350,6 +466,7 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb)
350#define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA" 466#define TLS1_TXT_DHE_RSA_WITH_SEED_SHA "DHE-RSA-SEED-SHA"
351#define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA" 467#define TLS1_TXT_ADH_WITH_SEED_SHA "ADH-SEED-SHA"
352 468
469
353#define TLS_CT_RSA_SIGN 1 470#define TLS_CT_RSA_SIGN 1
354#define TLS_CT_DSS_SIGN 2 471#define TLS_CT_DSS_SIGN 2
355#define TLS_CT_RSA_FIXED_DH 3 472#define TLS_CT_RSA_FIXED_DH 3
@@ -357,7 +474,11 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb)
357#define TLS_CT_ECDSA_SIGN 64 474#define TLS_CT_ECDSA_SIGN 64
358#define TLS_CT_RSA_FIXED_ECDH 65 475#define TLS_CT_RSA_FIXED_ECDH 65
359#define TLS_CT_ECDSA_FIXED_ECDH 66 476#define TLS_CT_ECDSA_FIXED_ECDH 66
360#define TLS_CT_NUMBER 7 477#define TLS_CT_GOST94_SIGN 21
478#define TLS_CT_GOST01_SIGN 22
479/* when correcting this number, correct also SSL3_CT_NUMBER in ssl3.h (see
480 * comment there) */
481#define TLS_CT_NUMBER 9
361 482
362#define TLS1_FINISH_MAC_LENGTH 12 483#define TLS1_FINISH_MAC_LENGTH 12
363 484
@@ -398,10 +519,14 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb)
398#define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" /*master secret*/ 519#define TLS_MD_MASTER_SECRET_CONST "\x6d\x61\x73\x74\x65\x72\x20\x73\x65\x63\x72\x65\x74" /*master secret*/
399#endif 520#endif
400 521
522/* TLS Session Ticket extension struct */
523struct tls_session_ticket_ext_st
524 {
525 unsigned short length;
526 void *data;
527 };
528
401#ifdef __cplusplus 529#ifdef __cplusplus
402} 530}
403#endif 531#endif
404#endif 532#endif
405
406
407
diff --git a/src/lib/libssl/src/test/CAss.cnf b/src/lib/libssl/src/test/CAss.cnf
index 546e660626..20f8f05e3d 100644
--- a/src/lib/libssl/src/test/CAss.cnf
+++ b/src/lib/libssl/src/test/CAss.cnf
@@ -7,7 +7,7 @@ RANDFILE = ./.rnd
7 7
8#################################################################### 8####################################################################
9[ req ] 9[ req ]
10default_bits = 1024 10default_bits = 512
11default_keyfile = keySS.pem 11default_keyfile = keySS.pem
12distinguished_name = req_distinguished_name 12distinguished_name = req_distinguished_name
13encrypt_rsa_key = no 13encrypt_rsa_key = no
diff --git a/src/lib/libssl/src/test/Makefile b/src/lib/libssl/src/test/Makefile
index 228ee368cd..3912f82427 100644
--- a/src/lib/libssl/src/test/Makefile
+++ b/src/lib/libssl/src/test/Makefile
@@ -5,7 +5,7 @@
5DIR= test 5DIR= test
6TOP= .. 6TOP= ..
7CC= cc 7CC= cc
8INCLUDES= -I$(TOP) -I../include $(KRB5_INCLUDES) -I$(TOP)/fips 8INCLUDES= -I$(TOP) -I../include $(KRB5_INCLUDES)
9CFLAG= -g 9CFLAG= -g
10MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) 10MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
11PERL= perl 11PERL= perl
@@ -27,7 +27,6 @@ DLIBCRYPTO= ../libcrypto.a
27DLIBSSL= ../libssl.a 27DLIBSSL= ../libssl.a
28LIBCRYPTO= -L.. -lcrypto 28LIBCRYPTO= -L.. -lcrypto
29LIBSSL= -L.. -lssl 29LIBSSL= -L.. -lssl
30LIBFIPS= -L.. -lfips
31 30
32BNTEST= bntest 31BNTEST= bntest
33ECTEST= ectest 32ECTEST= ectest
@@ -45,6 +44,7 @@ MD2TEST= md2test
45MD4TEST= md4test 44MD4TEST= md4test
46MD5TEST= md5test 45MD5TEST= md5test
47HMACTEST= hmactest 46HMACTEST= hmactest
47WPTEST= wp_test
48RC2TEST= rc2test 48RC2TEST= rc2test
49RC4TEST= rc4test 49RC4TEST= rc4test
50RC5TEST= rc5test 50RC5TEST= rc5test
@@ -60,66 +60,40 @@ RSATEST= rsa_test
60ENGINETEST= enginetest 60ENGINETEST= enginetest
61EVPTEST= evp_test 61EVPTEST= evp_test
62IGETEST= igetest 62IGETEST= igetest
63FIPS_SHATEST= fips_shatest 63JPAKETEST= jpaketest
64FIPS_DESTEST= fips_desmovs 64ASN1TEST= asn1test
65FIPS_RANDTEST= fips_randtest
66FIPS_AESTEST= fips_aesavs
67FIPS_HMACTEST= fips_hmactest
68FIPS_RSAVTEST= fips_rsavtest
69FIPS_RSASTEST= fips_rsastest
70FIPS_RSAGTEST= fips_rsagtest
71FIPS_DSATEST= fips_dsatest
72FIPS_DSSVS= fips_dssvs
73FIPS_RNGVS= fips_rngvs
74FIPS_TEST_SUITE=fips_test_suite
75 65
76TESTS= alltests 66TESTS= alltests
77 67
78EXE= $(BNTEST)$(EXE_EXT) $(ECTEST)$(EXE_EXT) $(ECDSATEST)$(EXE_EXT) $(ECDHTEST)$(EXE_EXT) $(IDEATEST)$(EXE_EXT) \ 68EXE= $(BNTEST)$(EXE_EXT) $(ECTEST)$(EXE_EXT) $(ECDSATEST)$(EXE_EXT) $(ECDHTEST)$(EXE_EXT) $(IDEATEST)$(EXE_EXT) \
79 $(MD2TEST)$(EXE_EXT) $(MD4TEST)$(EXE_EXT) $(MD5TEST)$(EXE_EXT) $(HMACTEST)$(EXE_EXT) \ 69 $(MD2TEST)$(EXE_EXT) $(MD4TEST)$(EXE_EXT) $(MD5TEST)$(EXE_EXT) $(HMACTEST)$(EXE_EXT) $(WPTEST)$(EXE_EXT) \
80 $(RC2TEST)$(EXE_EXT) $(RC4TEST)$(EXE_EXT) $(RC5TEST)$(EXE_EXT) \ 70 $(RC2TEST)$(EXE_EXT) $(RC4TEST)$(EXE_EXT) $(RC5TEST)$(EXE_EXT) \
81 $(DESTEST)$(EXE_EXT) $(SHATEST)$(EXE_EXT) $(SHA1TEST)$(EXE_EXT) $(SHA256TEST)$(EXE_EXT) $(SHA512TEST)$(EXE_EXT) \ 71 $(DESTEST)$(EXE_EXT) $(SHATEST)$(EXE_EXT) $(SHA1TEST)$(EXE_EXT) $(SHA256TEST)$(EXE_EXT) $(SHA512TEST)$(EXE_EXT) \
82 $(MDC2TEST)$(EXE_EXT) $(RMDTEST)$(EXE_EXT) \ 72 $(MDC2TEST)$(EXE_EXT) $(RMDTEST)$(EXE_EXT) \
83 $(RANDTEST)$(EXE_EXT) $(DHTEST)$(EXE_EXT) $(ENGINETEST)$(EXE_EXT) \ 73 $(RANDTEST)$(EXE_EXT) $(DHTEST)$(EXE_EXT) $(ENGINETEST)$(EXE_EXT) \
84 $(BFTEST)$(EXE_EXT) $(CASTTEST)$(EXE_EXT) $(SSLTEST)$(EXE_EXT) $(EXPTEST)$(EXE_EXT) $(DSATEST)$(EXE_EXT) $(RSATEST)$(EXE_EXT) \ 74 $(BFTEST)$(EXE_EXT) $(CASTTEST)$(EXE_EXT) $(SSLTEST)$(EXE_EXT) $(EXPTEST)$(EXE_EXT) $(DSATEST)$(EXE_EXT) $(RSATEST)$(EXE_EXT) \
85 $(EVPTEST)$(EXE_EXT) $(IGETEST)$(EXE_EXT) \ 75 $(EVPTEST)$(EXE_EXT) $(IGETEST)$(EXE_EXT) $(JPAKETEST)$(EXE_EXT) \
86 $(FIPS_SHATEST)$(EXE_EXT) $(FIPS_DESTEST)$(EXE_EXT) \ 76 $(ASN1TEST)$(EXE_EXT)
87 $(FIPS_RANDTEST)$(EXE_EXT) $(FIPS_AESTEST)$(EXE_EXT) \
88 $(FIPS_HMACTEST)$(EXE_EXT) $(FIPS_RSAVTEST)$(EXE_EXT) \
89 $(FIPS_RSASTEST)$(EXE_EXT) $(FIPS_RSAGTEST)$(EXE_EXT) \
90 $(FIPS_DSSVS)$(EXE_EXT) $(FIPS_DSATEST)$(EXE_EXT) \
91 $(FIPS_RNGVS)$(EXE_EXT) $(FIPS_TEST_SUITE)$(EXE_EXT) jpaketest$(EXE_EXT)
92 77
93# $(METHTEST)$(EXE_EXT) 78# $(METHTEST)$(EXE_EXT)
94 79
95OBJ= $(BNTEST).o $(ECTEST).o $(ECDSATEST).o $(ECDHTEST).o $(IDEATEST).o \ 80OBJ= $(BNTEST).o $(ECTEST).o $(ECDSATEST).o $(ECDHTEST).o $(IDEATEST).o \
96 $(MD2TEST).o $(MD4TEST).o $(MD5TEST).o \ 81 $(MD2TEST).o $(MD4TEST).o $(MD5TEST).o \
97 $(HMACTEST).o \ 82 $(HMACTEST).o $(WPTEST).o \
98 $(RC2TEST).o $(RC4TEST).o $(RC5TEST).o \ 83 $(RC2TEST).o $(RC4TEST).o $(RC5TEST).o \
99 $(DESTEST).o $(SHATEST).o $(SHA1TEST).o $(SHA256TEST).o $(SHA512TEST).o \ 84 $(DESTEST).o $(SHATEST).o $(SHA1TEST).o $(SHA256TEST).o $(SHA512TEST).o \
100 $(MDC2TEST).o $(RMDTEST).o \ 85 $(MDC2TEST).o $(RMDTEST).o \
101 $(RANDTEST).o $(DHTEST).o $(ENGINETEST).o $(CASTTEST).o \ 86 $(RANDTEST).o $(DHTEST).o $(ENGINETEST).o $(CASTTEST).o \
102 $(BFTEST).o $(SSLTEST).o $(DSATEST).o $(EXPTEST).o $(RSATEST).o \ 87 $(BFTEST).o $(SSLTEST).o $(DSATEST).o $(EXPTEST).o $(RSATEST).o \
103 $(EVPTEST).o $(IGETEST).o \ 88 $(EVPTEST).o $(IGETEST).o $(JPAKETEST).o $(ASN1TEST).o
104 $(FIPS_SHATEST).o $(FIPS_DESTEST).o $(FIPS_RANDTEST).o \
105 $(FIPS_AESTEST).o $(FIPS_HMACTEST).o $(FIPS_RSAVTEST).o \
106 $(FIPS_RSASTEST).o $(FIPS_RSAGTEST).o \
107 $(FIPS_DSSVS).o $(FIPS_DSATEST).o $(FIPS_RNGVS).o $(FIPS_TEST_SUITE).o \
108 jpaketest.o
109
110SRC= $(BNTEST).c $(ECTEST).c $(ECDSATEST).c $(ECDHTEST).c $(IDEATEST).c \ 89SRC= $(BNTEST).c $(ECTEST).c $(ECDSATEST).c $(ECDHTEST).c $(IDEATEST).c \
111 $(MD2TEST).c $(MD4TEST).c $(MD5TEST).c \ 90 $(MD2TEST).c $(MD4TEST).c $(MD5TEST).c \
112 $(HMACTEST).c \ 91 $(HMACTEST).c $(WPTEST).c \
113 $(RC2TEST).c $(RC4TEST).c $(RC5TEST).c \ 92 $(RC2TEST).c $(RC4TEST).c $(RC5TEST).c \
114 $(DESTEST).c $(SHATEST).c $(SHA1TEST).c $(MDC2TEST).c $(RMDTEST).c \ 93 $(DESTEST).c $(SHATEST).c $(SHA1TEST).c $(MDC2TEST).c $(RMDTEST).c \
115 $(RANDTEST).c $(DHTEST).c $(ENGINETEST).c $(CASTTEST).c \ 94 $(RANDTEST).c $(DHTEST).c $(ENGINETEST).c $(CASTTEST).c \
116 $(BFTEST).c $(SSLTEST).c $(DSATEST).c $(EXPTEST).c $(RSATEST).c \ 95 $(BFTEST).c $(SSLTEST).c $(DSATEST).c $(EXPTEST).c $(RSATEST).c \
117 $(EVPTEST).c $(IGETEST).c \ 96 $(EVPTEST).c $(IGETEST).c $(JPAKETEST).c $(ASN1TEST).c
118 $(FIPS_SHATEST).c $(FIPS_DESTEST).c $(FIPS_RANDTEST).c \
119 $(FIPS_AESTEST).c $(FIPS_HMACTEST).c $(FIPS_RSAVTEST).c \
120 $(FIPS_RSASTEST).c $(FIPS_RSAGTEST).c \
121 $(FIPS_DSSVS).c $(FIPS_DSATEST).c $(FIPS_RNGVS).c $(FIPS_TEST_SUITE).c \
122 jpaketest.c
123 97
124EXHEADER= 98EXHEADER=
125HEADER= $(EXHEADER) 99HEADER= $(EXHEADER)
@@ -156,12 +130,13 @@ apps:
156 130
157alltests: \ 131alltests: \
158 test_des test_idea test_sha test_md4 test_md5 test_hmac \ 132 test_des test_idea test_sha test_md4 test_md5 test_hmac \
159 test_md2 test_mdc2 \ 133 test_md2 test_mdc2 test_wp \
160 test_rmd test_rc2 test_rc4 test_rc5 test_bf test_cast test_aes \ 134 test_rmd test_rc2 test_rc4 test_rc5 test_bf test_cast test_aes \
161 test_rand test_bn test_ec test_ecdsa test_ecdh \ 135 test_rand test_bn test_ec test_ecdsa test_ecdh \
162 test_enc test_x509 test_rsa test_crl test_sid \ 136 test_enc test_x509 test_rsa test_crl test_sid \
163 test_gen test_req test_pkcs7 test_verify test_dh test_dsa \ 137 test_gen test_req test_pkcs7 test_verify test_dh test_dsa \
164 test_ss test_ca test_engine test_evp test_ssl test_ige test_jpake 138 test_ss test_ca test_engine test_evp test_ssl test_tsa test_ige \
139 test_jpake test_cms
165 140
166test_evp: 141test_evp:
167 ../util/shlib_wrap.sh ./$(EVPTEST) evptests.txt 142 ../util/shlib_wrap.sh ./$(EVPTEST) evptests.txt
@@ -177,9 +152,6 @@ test_sha:
177 ../util/shlib_wrap.sh ./$(SHA1TEST) 152 ../util/shlib_wrap.sh ./$(SHA1TEST)
178 ../util/shlib_wrap.sh ./$(SHA256TEST) 153 ../util/shlib_wrap.sh ./$(SHA256TEST)
179 ../util/shlib_wrap.sh ./$(SHA512TEST) 154 ../util/shlib_wrap.sh ./$(SHA512TEST)
180 if [ -n "$(FIPSCANLIB)" ]; then \
181 ../util/shlib_wrap.sh ./$(FIPS_SHATEST) < SHAmix.r | diff -w SHAmix.x - ; \
182 fi
183 155
184test_mdc2: 156test_mdc2:
185 ../util/shlib_wrap.sh ./$(MDC2TEST) 157 ../util/shlib_wrap.sh ./$(MDC2TEST)
@@ -193,6 +165,9 @@ test_md4:
193test_hmac: 165test_hmac:
194 ../util/shlib_wrap.sh ./$(HMACTEST) 166 ../util/shlib_wrap.sh ./$(HMACTEST)
195 167
168test_wp:
169 ../util/shlib_wrap.sh ./$(WPTEST)
170
196test_md2: 171test_md2:
197 ../util/shlib_wrap.sh ./$(MD2TEST) 172 ../util/shlib_wrap.sh ./$(MD2TEST)
198 173
@@ -216,12 +191,9 @@ test_rc5:
216 191
217test_rand: 192test_rand:
218 ../util/shlib_wrap.sh ./$(RANDTEST) 193 ../util/shlib_wrap.sh ./$(RANDTEST)
219 if [ -n "$(FIPSCANLIB)" ]; then \
220 ../util/shlib_wrap.sh ./$(FIPS_RANDTEST); \
221 fi
222 194
223test_enc: 195test_enc:
224 sh ./testenc 196 @sh ./testenc
225 197
226test_x509: 198test_x509:
227 echo test normal x509v1 certificate 199 echo test normal x509v1 certificate
@@ -283,9 +255,6 @@ test_dsa:
283 @echo "Generate a set of DSA parameters" 255 @echo "Generate a set of DSA parameters"
284 ../util/shlib_wrap.sh ./$(DSATEST) 256 ../util/shlib_wrap.sh ./$(DSATEST)
285 ../util/shlib_wrap.sh ./$(DSATEST) -app2_1 257 ../util/shlib_wrap.sh ./$(DSATEST) -app2_1
286 if [ -n "$(FIPSCANLIB)" ]; then \
287 ../util/shlib_wrap.sh ./$(FIPS_DSATEST); \
288 fi
289 258
290test_gen: 259test_gen:
291 @echo "Generate and verify a certificate request" 260 @echo "Generate and verify a certificate request"
@@ -305,9 +274,6 @@ test_engine:
305test_ssl: keyU.ss certU.ss certCA.ss certP1.ss keyP1.ss certP2.ss keyP2.ss \ 274test_ssl: keyU.ss certU.ss certCA.ss certP1.ss keyP1.ss certP2.ss keyP2.ss \
306 intP1.ss intP2.ss 275 intP1.ss intP2.ss
307 @echo "test SSL protocol" 276 @echo "test SSL protocol"
308 @if [ -n "$(FIPSCANLIB)" ]; then \
309 sh ./testfipsssl keyU.ss certU.ss certCA.ss; \
310 fi
311 ../util/shlib_wrap.sh ./$(SSLTEST) -test_cipherlist 277 ../util/shlib_wrap.sh ./$(SSLTEST) -test_cipherlist
312 @sh ./testssl keyU.ss certU.ss certCA.ss 278 @sh ./testssl keyU.ss certU.ss certCA.ss
313 @sh ./testsslproxy keyP1.ss certP1.ss intP1.ss 279 @sh ./testsslproxy keyP1.ss certP1.ss intP1.ss
@@ -325,13 +291,24 @@ test_aes: #$(AESTEST)
325# @echo "test Rijndael" 291# @echo "test Rijndael"
326# ../util/shlib_wrap.sh ./$(AESTEST) 292# ../util/shlib_wrap.sh ./$(AESTEST)
327 293
294test_tsa:
295 @if ../util/shlib_wrap.sh ../apps/openssl no-rsa; then \
296 echo "skipping testtsa test -- requires RSA"; \
297 else \
298 sh ./testtsa; \
299 fi
300
328test_ige: $(IGETEST)$(EXE_EXT) 301test_ige: $(IGETEST)$(EXE_EXT)
329 @echo "Test IGE mode" 302 @echo "Test IGE mode"
330 ../util/shlib_wrap.sh ./$(IGETEST) 303 ../util/shlib_wrap.sh ./$(IGETEST)
331 304
332test_jpake: jpaketest$(EXE_EXT) 305test_jpake: $(JPAKETEST)$(EXE_EXT)
333 @echo "Test JPAKE" 306 @echo "Test JPAKE"
334 ../util/shlib_wrap.sh ./jpaketest 307 ../util/shlib_wrap.sh ./$(JPAKETEST)
308
309test_cms:
310 @echo "CMS consistency test"
311 $(PERL) cms-test.pl
335 312
336lint: 313lint:
337 lint -DLINT $(INCLUDES) $(SRC)>fluff 314 lint -DLINT $(INCLUDES) $(SRC)>fluff
@@ -346,9 +323,11 @@ depend:
346dclean: 323dclean:
347 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new 324 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
348 mv -f Makefile.new $(MAKEFILE) 325 mv -f Makefile.new $(MAKEFILE)
326 rm -f $(SRC) $(SHA256TEST).c $(SHA512TEST).c evptests.txt newkey.pem testkey.pem \
327 testreq.pem
349 328
350clean: 329clean:
351 rm -f .rnd tmp.bntest tmp.bctest *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss *.srl log dummytest 330 rm -f .rnd tmp.bntest tmp.bctest *.o *.obj *.dll lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss *.srl log dummytest
352 331
353$(DLIBSSL): 332$(DLIBSSL):
354 (cd ..; $(MAKE) DIRS=ssl all) 333 (cd ..; $(MAKE) DIRS=ssl all)
@@ -360,7 +339,6 @@ BUILD_CMD=shlib_target=; if [ -n "$(SHARED_LIBS)" ]; then \
360 shlib_target="$(SHLIB_TARGET)"; \ 339 shlib_target="$(SHLIB_TARGET)"; \
361 fi; \ 340 fi; \
362 LIBRARIES="$(LIBSSL) $(LIBCRYPTO) $(LIBKRB5)"; \ 341 LIBRARIES="$(LIBSSL) $(LIBCRYPTO) $(LIBKRB5)"; \
363 [ "$(FIPSCANLIB)" = "libfips" ] && LIBRARIES="$$LIBRARIES -lfips"; \
364 $(MAKE) -f $(TOP)/Makefile.shared -e \ 342 $(MAKE) -f $(TOP)/Makefile.shared -e \
365 APPNAME=$$target$(EXE_EXT) OBJECTS="$$target.o" \ 343 APPNAME=$$target$(EXE_EXT) OBJECTS="$$target.o" \
366 LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \ 344 LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \
@@ -396,71 +374,6 @@ $(SHA256TEST)$(EXE_EXT): $(SHA256TEST).o $(DLIBCRYPTO)
396$(SHA512TEST)$(EXE_EXT): $(SHA512TEST).o $(DLIBCRYPTO) 374$(SHA512TEST)$(EXE_EXT): $(SHA512TEST).o $(DLIBCRYPTO)
397 @target=$(SHA512TEST); $(BUILD_CMD) 375 @target=$(SHA512TEST); $(BUILD_CMD)
398 376
399FIPS_BUILD_CMD=shlib_target=; if [ -n "$(SHARED_LIBS)" ]; then \
400 shlib_target="$(SHLIB_TARGET)"; \
401 fi; \
402 if [ "$(FIPSCANLIB)" = "libfips" ]; then \
403 LIBRARIES="-L$(TOP) -lfips"; \
404 elif [ -n "$(FIPSCANLIB)" ]; then \
405 FIPSLD_CC=$(CC); CC=$(TOP)/fips/fipsld; export CC FIPSLD_CC; \
406 LIBRARIES="$${FIPSLIBDIR:-$(TOP)/fips/}fipscanister.o"; \
407 else \
408 LIBRARIES="$(LIBCRYPTO)"; \
409 fi; \
410 $(MAKE) -f $(TOP)/Makefile.shared -e \
411 CC=$${CC} APPNAME=$$target$(EXE_EXT) OBJECTS="$$target.o" \
412 LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \
413 link_app.$${shlib_target}
414
415FIPS_CRYPTO_BUILD_CMD=shlib_target=; if [ -n "$(SHARED_LIBS)" ]; then \
416 shlib_target="$(SHLIB_TARGET)"; \
417 fi; \
418 LIBRARIES="$(LIBSSL) $(LIBCRYPTO) $(LIBKRB5)"; \
419 if [ -z "$(SHARED_LIBS)" -a -n "$(FIPSCANLIB)" ] ; then \
420 FIPSLD_CC=$(CC); CC=$(TOP)/fips/fipsld; export CC FIPSLD_CC; \
421 fi; \
422 [ "$(FIPSCANLIB)" = "libfips" ] && LIBRARIES="$$LIBRARIES -lfips"; \
423 $(MAKE) -f $(TOP)/Makefile.shared -e \
424 CC=$${CC} APPNAME=$$target$(EXE_EXT) OBJECTS="$$target.o" \
425 LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \
426 link_app.$${shlib_target}
427
428$(FIPS_SHATEST)$(EXE_EXT): $(FIPS_SHATEST).o $(DLIBCRYPTO)
429 @target=$(FIPS_SHATEST); $(FIPS_BUILD_CMD)
430
431$(FIPS_AESTEST)$(EXE_EXT): $(FIPS_AESTEST).o $(DLIBCRYPTO)
432 @target=$(FIPS_AESTEST); $(FIPS_BUILD_CMD)
433
434$(FIPS_DESTEST)$(EXE_EXT): $(FIPS_DESTEST).o $(DLIBCRYPTO)
435 @target=$(FIPS_DESTEST); $(FIPS_BUILD_CMD)
436
437$(FIPS_HMACTEST)$(EXE_EXT): $(FIPS_HMACTEST).o $(DLIBCRYPTO)
438 @target=$(FIPS_HMACTEST); $(FIPS_BUILD_CMD)
439
440$(FIPS_RANDTEST)$(EXE_EXT): $(FIPS_RANDTEST).o $(DLIBCRYPTO)
441 @target=$(FIPS_RANDTEST); $(FIPS_BUILD_CMD)
442
443$(FIPS_RSAVTEST)$(EXE_EXT): $(FIPS_RSAVTEST).o $(DLIBCRYPTO)
444 @target=$(FIPS_RSAVTEST); $(FIPS_BUILD_CMD)
445
446$(FIPS_RSASTEST)$(EXE_EXT): $(FIPS_RSASTEST).o $(DLIBCRYPTO)
447 @target=$(FIPS_RSASTEST); $(FIPS_BUILD_CMD)
448
449$(FIPS_RSAGTEST)$(EXE_EXT): $(FIPS_RSAGTEST).o $(DLIBCRYPTO)
450 @target=$(FIPS_RSAGTEST); $(FIPS_BUILD_CMD)
451
452$(FIPS_DSATEST)$(EXE_EXT): $(FIPS_DSATEST).o $(DLIBCRYPTO)
453 @target=$(FIPS_DSATEST); $(FIPS_BUILD_CMD)
454
455$(FIPS_DSSVS)$(EXE_EXT): $(FIPS_DSSVS).o $(DLIBCRYPTO)
456 @target=$(FIPS_DSSVS); $(FIPS_BUILD_CMD)
457
458$(FIPS_RNGVS)$(EXE_EXT): $(FIPS_RNGVS).o $(DLIBCRYPTO)
459 @target=$(FIPS_RNGVS); $(FIPS_BUILD_CMD)
460
461$(FIPS_TEST_SUITE)$(EXE_EXT): $(FIPS_TEST_SUITE).o $(DLIBCRYPTO)
462 @target=$(FIPS_TEST_SUITE); $(FIPS_BUILD_CMD)
463
464$(RMDTEST)$(EXE_EXT): $(RMDTEST).o $(DLIBCRYPTO) 377$(RMDTEST)$(EXE_EXT): $(RMDTEST).o $(DLIBCRYPTO)
465 @target=$(RMDTEST); $(BUILD_CMD) 378 @target=$(RMDTEST); $(BUILD_CMD)
466 379
@@ -476,6 +389,9 @@ $(MD5TEST)$(EXE_EXT): $(MD5TEST).o $(DLIBCRYPTO)
476$(HMACTEST)$(EXE_EXT): $(HMACTEST).o $(DLIBCRYPTO) 389$(HMACTEST)$(EXE_EXT): $(HMACTEST).o $(DLIBCRYPTO)
477 @target=$(HMACTEST); $(BUILD_CMD) 390 @target=$(HMACTEST); $(BUILD_CMD)
478 391
392$(WPTEST)$(EXE_EXT): $(WPTEST).o $(DLIBCRYPTO)
393 @target=$(WPTEST); $(BUILD_CMD)
394
479$(RC2TEST)$(EXE_EXT): $(RC2TEST).o $(DLIBCRYPTO) 395$(RC2TEST)$(EXE_EXT): $(RC2TEST).o $(DLIBCRYPTO)
480 @target=$(RC2TEST); $(BUILD_CMD) 396 @target=$(RC2TEST); $(BUILD_CMD)
481 397
@@ -507,7 +423,7 @@ $(METHTEST)$(EXE_EXT): $(METHTEST).o $(DLIBCRYPTO)
507 @target=$(METHTEST); $(BUILD_CMD) 423 @target=$(METHTEST); $(BUILD_CMD)
508 424
509$(SSLTEST)$(EXE_EXT): $(SSLTEST).o $(DLIBSSL) $(DLIBCRYPTO) 425$(SSLTEST)$(EXE_EXT): $(SSLTEST).o $(DLIBSSL) $(DLIBCRYPTO)
510 @target=$(SSLTEST); $(FIPS_CRYPTO_BUILD_CMD) 426 @target=$(SSLTEST); $(BUILD_CMD)
511 427
512$(ENGINETEST)$(EXE_EXT): $(ENGINETEST).o $(DLIBCRYPTO) 428$(ENGINETEST)$(EXE_EXT): $(ENGINETEST).o $(DLIBCRYPTO)
513 @target=$(ENGINETEST); $(BUILD_CMD) 429 @target=$(ENGINETEST); $(BUILD_CMD)
@@ -524,8 +440,11 @@ $(ECDHTEST)$(EXE_EXT): $(ECDHTEST).o $(DLIBCRYPTO)
524$(IGETEST)$(EXE_EXT): $(IGETEST).o $(DLIBCRYPTO) 440$(IGETEST)$(EXE_EXT): $(IGETEST).o $(DLIBCRYPTO)
525 @target=$(IGETEST); $(BUILD_CMD) 441 @target=$(IGETEST); $(BUILD_CMD)
526 442
527jpaketest$(EXE_EXT): jpaketest.o $(DLIBCRYPTO) 443$(JPAKETEST)$(EXE_EXT): $(JPAKETEST).o $(DLIBCRYPTO)
528 @target=jpaketest; $(BUILD_CMD) 444 @target=$(JPAKETEST); $(BUILD_CMD)
445
446$(ASN1TEST)$(EXE_EXT): $(ASN1TEST).o $(DLIBCRYPTO)
447 @target=$(ASN1TEST); $(BUILD_CMD)
529 448
530#$(AESTEST).o: $(AESTEST).c 449#$(AESTEST).o: $(AESTEST).c
531# $(CC) -c $(CFLAGS) -DINTERMEDIATE_VALUE_KAT -DTRACE_KAT_MCT $(AESTEST).c 450# $(CC) -c $(CFLAGS) -DINTERMEDIATE_VALUE_KAT -DTRACE_KAT_MCT $(AESTEST).c
@@ -538,10 +457,22 @@ jpaketest$(EXE_EXT): jpaketest.o $(DLIBCRYPTO)
538# fi 457# fi
539 458
540dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO) 459dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO)
541 @target=dummytest$; $(BUILD_CMD) 460 @target=dummytest; $(BUILD_CMD)
542 461
543# DO NOT DELETE THIS LINE -- make depend depends on it. 462# DO NOT DELETE THIS LINE -- make depend depends on it.
544 463
464asn1test.o: ../include/openssl/asn1.h ../include/openssl/asn1_mac.h
465asn1test.o: ../include/openssl/bio.h ../include/openssl/buffer.h
466asn1test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
467asn1test.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
468asn1test.o: ../include/openssl/ecdsa.h ../include/openssl/evp.h
469asn1test.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
470asn1test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
471asn1test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
472asn1test.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
473asn1test.o: ../include/openssl/sha.h ../include/openssl/stack.h
474asn1test.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
475asn1test.o: ../include/openssl/x509_vfy.h asn1test.c
545bftest.o: ../e_os.h ../include/openssl/blowfish.h ../include/openssl/e_os2.h 476bftest.o: ../e_os.h ../include/openssl/blowfish.h ../include/openssl/e_os2.h
546bftest.o: ../include/openssl/opensslconf.h bftest.c 477bftest.o: ../include/openssl/opensslconf.h bftest.c
547bntest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 478bntest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
@@ -550,15 +481,14 @@ bntest.o: ../include/openssl/crypto.h ../include/openssl/dh.h
550bntest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h 481bntest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
551bntest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 482bntest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
552bntest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 483bntest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
553bntest.o: ../include/openssl/evp.h ../include/openssl/fips.h 484bntest.o: ../include/openssl/evp.h ../include/openssl/lhash.h
554bntest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 485bntest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
555bntest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 486bntest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
556bntest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 487bntest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
557bntest.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h 488bntest.o: ../include/openssl/rand.h ../include/openssl/rsa.h
558bntest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 489bntest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
559bntest.o: ../include/openssl/sha.h ../include/openssl/stack.h 490bntest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
560bntest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h 491bntest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h bntest.c
561bntest.o: ../include/openssl/x509_vfy.h bntest.c
562casttest.o: ../e_os.h ../include/openssl/cast.h ../include/openssl/e_os2.h 492casttest.o: ../e_os.h ../include/openssl/cast.h ../include/openssl/e_os2.h
563casttest.o: ../include/openssl/opensslconf.h casttest.c 493casttest.o: ../include/openssl/opensslconf.h casttest.c
564destest.o: ../include/openssl/des.h ../include/openssl/des_old.h 494destest.o: ../include/openssl/des.h ../include/openssl/des_old.h
@@ -597,54 +527,53 @@ ecdsatest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
597ecdsatest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 527ecdsatest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
598ecdsatest.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 528ecdsatest.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
599ecdsatest.o: ../include/openssl/err.h ../include/openssl/evp.h 529ecdsatest.o: ../include/openssl/err.h ../include/openssl/evp.h
600ecdsatest.o: ../include/openssl/fips.h ../include/openssl/lhash.h 530ecdsatest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
601ecdsatest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 531ecdsatest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
602ecdsatest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 532ecdsatest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
603ecdsatest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h 533ecdsatest.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
604ecdsatest.o: ../include/openssl/rand.h ../include/openssl/safestack.h 534ecdsatest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
605ecdsatest.o: ../include/openssl/sha.h ../include/openssl/stack.h 535ecdsatest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
606ecdsatest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h 536ecdsatest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
607ecdsatest.o: ../include/openssl/x509_vfy.h ecdsatest.c 537ecdsatest.o: ecdsatest.c
608ectest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 538ectest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
609ectest.o: ../include/openssl/bn.h ../include/openssl/buffer.h 539ectest.o: ../include/openssl/bn.h ../include/openssl/buffer.h
610ectest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 540ectest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
611ectest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 541ectest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
612ectest.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 542ectest.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
613ectest.o: ../include/openssl/err.h ../include/openssl/evp.h 543ectest.o: ../include/openssl/err.h ../include/openssl/evp.h
614ectest.o: ../include/openssl/fips.h ../include/openssl/lhash.h 544ectest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
615ectest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 545ectest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
616ectest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 546ectest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
617ectest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h 547ectest.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
618ectest.o: ../include/openssl/rand.h ../include/openssl/safestack.h 548ectest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
619ectest.o: ../include/openssl/sha.h ../include/openssl/stack.h 549ectest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
620ectest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h 550ectest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ectest.c
621ectest.o: ../include/openssl/x509_vfy.h ectest.c
622enginetest.o: ../include/openssl/asn1.h ../include/openssl/bio.h 551enginetest.o: ../include/openssl/asn1.h ../include/openssl/bio.h
623enginetest.o: ../include/openssl/buffer.h ../include/openssl/crypto.h 552enginetest.o: ../include/openssl/buffer.h ../include/openssl/crypto.h
624enginetest.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 553enginetest.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
625enginetest.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 554enginetest.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
626enginetest.o: ../include/openssl/engine.h ../include/openssl/err.h 555enginetest.o: ../include/openssl/engine.h ../include/openssl/err.h
627enginetest.o: ../include/openssl/evp.h ../include/openssl/fips.h 556enginetest.o: ../include/openssl/evp.h ../include/openssl/lhash.h
628enginetest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 557enginetest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
629enginetest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 558enginetest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
630enginetest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 559enginetest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
631enginetest.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 560enginetest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
632enginetest.o: ../include/openssl/sha.h ../include/openssl/stack.h 561enginetest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
633enginetest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h 562enginetest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
634enginetest.o: ../include/openssl/x509_vfy.h enginetest.c 563enginetest.o: enginetest.c
635evp_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 564evp_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
636evp_test.o: ../include/openssl/buffer.h ../include/openssl/conf.h 565evp_test.o: ../include/openssl/buffer.h ../include/openssl/conf.h
637evp_test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 566evp_test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
638evp_test.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 567evp_test.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
639evp_test.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 568evp_test.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
640evp_test.o: ../include/openssl/err.h ../include/openssl/evp.h 569evp_test.o: ../include/openssl/err.h ../include/openssl/evp.h
641evp_test.o: ../include/openssl/fips.h ../include/openssl/lhash.h 570evp_test.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
642evp_test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 571evp_test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
643evp_test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 572evp_test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
644evp_test.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h 573evp_test.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
645evp_test.o: ../include/openssl/safestack.h ../include/openssl/sha.h 574evp_test.o: ../include/openssl/sha.h ../include/openssl/stack.h
646evp_test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 575evp_test.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
647evp_test.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h evp_test.c 576evp_test.o: ../include/openssl/x509_vfy.h evp_test.c
648exptest.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/bn.h 577exptest.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/bn.h
649exptest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 578exptest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
650exptest.o: ../include/openssl/err.h ../include/openssl/lhash.h 579exptest.o: ../include/openssl/err.h ../include/openssl/lhash.h
@@ -652,186 +581,14 @@ exptest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
652exptest.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h 581exptest.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
653exptest.o: ../include/openssl/safestack.h ../include/openssl/stack.h 582exptest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
654exptest.o: ../include/openssl/symhacks.h exptest.c 583exptest.o: ../include/openssl/symhacks.h exptest.c
655fips_aesavs.o: ../e_os.h ../fips/fips_utl.h ../include/openssl/aes.h
656fips_aesavs.o: ../include/openssl/asn1.h ../include/openssl/bio.h
657fips_aesavs.o: ../include/openssl/bn.h ../include/openssl/crypto.h
658fips_aesavs.o: ../include/openssl/e_os2.h ../include/openssl/err.h
659fips_aesavs.o: ../include/openssl/evp.h ../include/openssl/fips.h
660fips_aesavs.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
661fips_aesavs.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
662fips_aesavs.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
663fips_aesavs.o: ../include/openssl/safestack.h ../include/openssl/stack.h
664fips_aesavs.o: ../include/openssl/symhacks.h fips_aesavs.c
665fips_desmovs.o: ../e_os.h ../fips/fips_utl.h ../include/openssl/asn1.h
666fips_desmovs.o: ../include/openssl/bio.h ../include/openssl/bn.h
667fips_desmovs.o: ../include/openssl/crypto.h ../include/openssl/des.h
668fips_desmovs.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h
669fips_desmovs.o: ../include/openssl/err.h ../include/openssl/evp.h
670fips_desmovs.o: ../include/openssl/fips.h ../include/openssl/lhash.h
671fips_desmovs.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
672fips_desmovs.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
673fips_desmovs.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
674fips_desmovs.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
675fips_desmovs.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
676fips_desmovs.o: fips_desmovs.c
677fips_dsatest.o: ../e_os.h ../fips/fips_utl.h ../include/openssl/asn1.h
678fips_dsatest.o: ../include/openssl/bio.h ../include/openssl/bn.h
679fips_dsatest.o: ../include/openssl/buffer.h ../include/openssl/crypto.h
680fips_dsatest.o: ../include/openssl/des.h ../include/openssl/des_old.h
681fips_dsatest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
682fips_dsatest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
683fips_dsatest.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
684fips_dsatest.o: ../include/openssl/err.h ../include/openssl/evp.h
685fips_dsatest.o: ../include/openssl/fips.h ../include/openssl/fips_rand.h
686fips_dsatest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
687fips_dsatest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
688fips_dsatest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
689fips_dsatest.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
690fips_dsatest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
691fips_dsatest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
692fips_dsatest.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
693fips_dsatest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
694fips_dsatest.o: fips_dsatest.c
695fips_dssvs.o: ../fips/fips_utl.h ../include/openssl/asn1.h
696fips_dssvs.o: ../include/openssl/bio.h ../include/openssl/bn.h
697fips_dssvs.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
698fips_dssvs.o: ../include/openssl/e_os2.h ../include/openssl/err.h
699fips_dssvs.o: ../include/openssl/evp.h ../include/openssl/fips.h
700fips_dssvs.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
701fips_dssvs.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
702fips_dssvs.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
703fips_dssvs.o: ../include/openssl/safestack.h ../include/openssl/stack.h
704fips_dssvs.o: ../include/openssl/symhacks.h fips_dssvs.c
705fips_hmactest.o: ../fips/fips_utl.h ../include/openssl/asn1.h
706fips_hmactest.o: ../include/openssl/bio.h ../include/openssl/bn.h
707fips_hmactest.o: ../include/openssl/buffer.h ../include/openssl/conf.h
708fips_hmactest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
709fips_hmactest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
710fips_hmactest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
711fips_hmactest.o: ../include/openssl/evp.h ../include/openssl/fips.h
712fips_hmactest.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
713fips_hmactest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
714fips_hmactest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
715fips_hmactest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
716fips_hmactest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
717fips_hmactest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
718fips_hmactest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
719fips_hmactest.o: ../include/openssl/x509v3.h fips_hmactest.c
720fips_randtest.o: ../e_os.h ../fips/fips_utl.h ../include/openssl/bio.h
721fips_randtest.o: ../include/openssl/bn.h ../include/openssl/crypto.h
722fips_randtest.o: ../include/openssl/des.h ../include/openssl/des_old.h
723fips_randtest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
724fips_randtest.o: ../include/openssl/fips_rand.h ../include/openssl/lhash.h
725fips_randtest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
726fips_randtest.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
727fips_randtest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
728fips_randtest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
729fips_randtest.o: ../include/openssl/ui_compat.h fips_randtest.c
730fips_rngvs.o: ../fips/fips_utl.h ../include/openssl/asn1.h
731fips_rngvs.o: ../include/openssl/bio.h ../include/openssl/bn.h
732fips_rngvs.o: ../include/openssl/buffer.h ../include/openssl/conf.h
733fips_rngvs.o: ../include/openssl/crypto.h ../include/openssl/des.h
734fips_rngvs.o: ../include/openssl/des_old.h ../include/openssl/dsa.h
735fips_rngvs.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
736fips_rngvs.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
737fips_rngvs.o: ../include/openssl/err.h ../include/openssl/evp.h
738fips_rngvs.o: ../include/openssl/fips.h ../include/openssl/fips_rand.h
739fips_rngvs.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
740fips_rngvs.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
741fips_rngvs.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
742fips_rngvs.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
743fips_rngvs.o: ../include/openssl/safestack.h ../include/openssl/sha.h
744fips_rngvs.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
745fips_rngvs.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
746fips_rngvs.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
747fips_rngvs.o: ../include/openssl/x509v3.h fips_rngvs.c
748fips_rsagtest.o: ../fips/fips_utl.h ../include/openssl/asn1.h
749fips_rsagtest.o: ../include/openssl/bio.h ../include/openssl/bn.h
750fips_rsagtest.o: ../include/openssl/buffer.h ../include/openssl/conf.h
751fips_rsagtest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
752fips_rsagtest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
753fips_rsagtest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
754fips_rsagtest.o: ../include/openssl/evp.h ../include/openssl/fips.h
755fips_rsagtest.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
756fips_rsagtest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
757fips_rsagtest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
758fips_rsagtest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
759fips_rsagtest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
760fips_rsagtest.o: ../include/openssl/sha.h ../include/openssl/stack.h
761fips_rsagtest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
762fips_rsagtest.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h
763fips_rsagtest.o: fips_rsagtest.c
764fips_rsastest.o: ../fips/fips_utl.h ../include/openssl/asn1.h
765fips_rsastest.o: ../include/openssl/bio.h ../include/openssl/bn.h
766fips_rsastest.o: ../include/openssl/buffer.h ../include/openssl/conf.h
767fips_rsastest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
768fips_rsastest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
769fips_rsastest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
770fips_rsastest.o: ../include/openssl/evp.h ../include/openssl/fips.h
771fips_rsastest.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
772fips_rsastest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
773fips_rsastest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
774fips_rsastest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
775fips_rsastest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
776fips_rsastest.o: ../include/openssl/sha.h ../include/openssl/stack.h
777fips_rsastest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
778fips_rsastest.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h
779fips_rsastest.o: fips_rsastest.c
780fips_rsavtest.o: ../fips/fips_utl.h ../include/openssl/asn1.h
781fips_rsavtest.o: ../include/openssl/bio.h ../include/openssl/bn.h
782fips_rsavtest.o: ../include/openssl/buffer.h ../include/openssl/conf.h
783fips_rsavtest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
784fips_rsavtest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
785fips_rsavtest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
786fips_rsavtest.o: ../include/openssl/evp.h ../include/openssl/fips.h
787fips_rsavtest.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
788fips_rsavtest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
789fips_rsavtest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
790fips_rsavtest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
791fips_rsavtest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
792fips_rsavtest.o: ../include/openssl/sha.h ../include/openssl/stack.h
793fips_rsavtest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
794fips_rsavtest.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h
795fips_rsavtest.o: fips_rsavtest.c
796fips_shatest.o: ../fips/fips_utl.h ../include/openssl/asn1.h
797fips_shatest.o: ../include/openssl/bio.h ../include/openssl/bn.h
798fips_shatest.o: ../include/openssl/buffer.h ../include/openssl/conf.h
799fips_shatest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
800fips_shatest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
801fips_shatest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
802fips_shatest.o: ../include/openssl/evp.h ../include/openssl/fips.h
803fips_shatest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
804fips_shatest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
805fips_shatest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
806fips_shatest.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
807fips_shatest.o: ../include/openssl/sha.h ../include/openssl/stack.h
808fips_shatest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
809fips_shatest.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h
810fips_shatest.o: fips_shatest.c
811fips_test_suite.o: ../fips/fips_utl.h ../include/openssl/aes.h
812fips_test_suite.o: ../include/openssl/asn1.h ../include/openssl/bio.h
813fips_test_suite.o: ../include/openssl/bn.h ../include/openssl/crypto.h
814fips_test_suite.o: ../include/openssl/des.h ../include/openssl/des_old.h
815fips_test_suite.o: ../include/openssl/dh.h ../include/openssl/dsa.h
816fips_test_suite.o: ../include/openssl/e_os2.h ../include/openssl/err.h
817fips_test_suite.o: ../include/openssl/evp.h ../include/openssl/fips.h
818fips_test_suite.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
819fips_test_suite.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
820fips_test_suite.o: ../include/openssl/opensslconf.h
821fips_test_suite.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
822fips_test_suite.o: ../include/openssl/rand.h ../include/openssl/rsa.h
823fips_test_suite.o: ../include/openssl/safestack.h ../include/openssl/sha.h
824fips_test_suite.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
825fips_test_suite.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
826fips_test_suite.o: fips_test_suite.c
827hmactest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 584hmactest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
828hmactest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 585hmactest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
829hmactest.o: ../include/openssl/evp.h ../include/openssl/fips.h 586hmactest.o: ../include/openssl/evp.h ../include/openssl/hmac.h
830hmactest.o: ../include/openssl/hmac.h ../include/openssl/md5.h 587hmactest.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h
831hmactest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 588hmactest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
832hmactest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 589hmactest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
833hmactest.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 590hmactest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
834hmactest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h hmactest.c 591hmactest.o: ../include/openssl/symhacks.h hmactest.c
835ideatest.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/idea.h 592ideatest.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/idea.h
836ideatest.o: ../include/openssl/opensslconf.h ideatest.c 593ideatest.o: ../include/openssl/opensslconf.h ideatest.c
837igetest.o: ../include/openssl/aes.h ../include/openssl/e_os2.h 594igetest.o: ../include/openssl/aes.h ../include/openssl/e_os2.h
@@ -842,35 +599,34 @@ jpaketest.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
842jpaketest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 599jpaketest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
843jpaketest.o: ../include/openssl/safestack.h ../include/openssl/stack.h 600jpaketest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
844jpaketest.o: ../include/openssl/symhacks.h jpaketest.c 601jpaketest.o: ../include/openssl/symhacks.h jpaketest.c
845md2test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 602md2test.o: ../include/openssl/buffer.h ../include/openssl/crypto.h
846md2test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 603md2test.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
847md2test.o: ../include/openssl/evp.h ../include/openssl/fips.h
848md2test.o: ../include/openssl/md2.h ../include/openssl/obj_mac.h
849md2test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
850md2test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 604md2test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
851md2test.o: ../include/openssl/safestack.h ../include/openssl/stack.h 605md2test.o: ../include/openssl/safestack.h ../include/openssl/stack.h
852md2test.o: ../include/openssl/symhacks.h md2test.c 606md2test.o: ../include/openssl/symhacks.h md2test.c
853md4test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 607md4test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
854md4test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 608md4test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
855md4test.o: ../include/openssl/evp.h ../include/openssl/fips.h 609md4test.o: ../include/openssl/evp.h ../include/openssl/md4.h
856md4test.o: ../include/openssl/md4.h ../include/openssl/obj_mac.h 610md4test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
857md4test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 611md4test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
858md4test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 612md4test.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
859md4test.o: ../include/openssl/safestack.h ../include/openssl/stack.h 613md4test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h md4test.c
860md4test.o: ../include/openssl/symhacks.h md4test.c
861md5test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 614md5test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
862md5test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 615md5test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
863md5test.o: ../include/openssl/evp.h ../include/openssl/fips.h 616md5test.o: ../include/openssl/evp.h ../include/openssl/md5.h
864md5test.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h 617md5test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
865md5test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 618md5test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
866md5test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 619md5test.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
867md5test.o: ../include/openssl/safestack.h ../include/openssl/stack.h 620md5test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h md5test.c
868md5test.o: ../include/openssl/symhacks.h md5test.c 621mdc2test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
869mdc2test.o: ../include/openssl/buffer.h ../include/openssl/crypto.h 622mdc2test.o: ../include/openssl/crypto.h ../include/openssl/des.h
870mdc2test.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h 623mdc2test.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h
871mdc2test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 624mdc2test.o: ../include/openssl/evp.h ../include/openssl/mdc2.h
872mdc2test.o: ../include/openssl/safestack.h ../include/openssl/stack.h 625mdc2test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
873mdc2test.o: ../include/openssl/symhacks.h mdc2test.c 626mdc2test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
627mdc2test.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
628mdc2test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
629mdc2test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h mdc2test.c
874randtest.o: ../e_os.h ../include/openssl/e_os2.h 630randtest.o: ../e_os.h ../include/openssl/e_os2.h
875randtest.o: ../include/openssl/opensslconf.h ../include/openssl/ossl_typ.h 631randtest.o: ../include/openssl/opensslconf.h ../include/openssl/ossl_typ.h
876randtest.o: ../include/openssl/rand.h randtest.c 632randtest.o: ../include/openssl/rand.h randtest.c
@@ -886,12 +642,11 @@ rc5test.o: ../include/openssl/safestack.h ../include/openssl/stack.h
886rc5test.o: ../include/openssl/symhacks.h rc5test.c 642rc5test.o: ../include/openssl/symhacks.h rc5test.c
887rmdtest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 643rmdtest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
888rmdtest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 644rmdtest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
889rmdtest.o: ../include/openssl/evp.h ../include/openssl/fips.h 645rmdtest.o: ../include/openssl/evp.h ../include/openssl/obj_mac.h
890rmdtest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 646rmdtest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
891rmdtest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 647rmdtest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
892rmdtest.o: ../include/openssl/ossl_typ.h ../include/openssl/ripemd.h 648rmdtest.o: ../include/openssl/ripemd.h ../include/openssl/safestack.h
893rmdtest.o: ../include/openssl/safestack.h ../include/openssl/stack.h 649rmdtest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h rmdtest.c
894rmdtest.o: ../include/openssl/symhacks.h rmdtest.c
895rsa_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 650rsa_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
896rsa_test.o: ../include/openssl/bn.h ../include/openssl/crypto.h 651rsa_test.o: ../include/openssl/bn.h ../include/openssl/crypto.h
897rsa_test.o: ../include/openssl/e_os2.h ../include/openssl/err.h 652rsa_test.o: ../include/openssl/e_os2.h ../include/openssl/err.h
@@ -902,20 +657,18 @@ rsa_test.o: ../include/openssl/safestack.h ../include/openssl/stack.h
902rsa_test.o: ../include/openssl/symhacks.h rsa_test.c 657rsa_test.o: ../include/openssl/symhacks.h rsa_test.c
903sha1test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 658sha1test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
904sha1test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 659sha1test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
905sha1test.o: ../include/openssl/evp.h ../include/openssl/fips.h 660sha1test.o: ../include/openssl/evp.h ../include/openssl/obj_mac.h
906sha1test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 661sha1test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
907sha1test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 662sha1test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
908sha1test.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 663sha1test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
909sha1test.o: ../include/openssl/sha.h ../include/openssl/stack.h 664sha1test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h sha1test.c
910sha1test.o: ../include/openssl/symhacks.h sha1test.c
911shatest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 665shatest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
912shatest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 666shatest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
913shatest.o: ../include/openssl/evp.h ../include/openssl/fips.h 667shatest.o: ../include/openssl/evp.h ../include/openssl/obj_mac.h
914shatest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 668shatest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
915shatest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 669shatest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
916shatest.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 670shatest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
917shatest.o: ../include/openssl/sha.h ../include/openssl/stack.h 671shatest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h shatest.c
918shatest.o: ../include/openssl/symhacks.h shatest.c
919ssltest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 672ssltest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
920ssltest.o: ../include/openssl/bn.h ../include/openssl/buffer.h 673ssltest.o: ../include/openssl/bn.h ../include/openssl/buffer.h
921ssltest.o: ../include/openssl/comp.h ../include/openssl/conf.h 674ssltest.o: ../include/openssl/comp.h ../include/openssl/conf.h
@@ -924,13 +677,12 @@ ssltest.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h
924ssltest.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 677ssltest.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
925ssltest.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 678ssltest.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
926ssltest.o: ../include/openssl/engine.h ../include/openssl/err.h 679ssltest.o: ../include/openssl/engine.h ../include/openssl/err.h
927ssltest.o: ../include/openssl/evp.h ../include/openssl/fips.h 680ssltest.o: ../include/openssl/evp.h ../include/openssl/hmac.h
928ssltest.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 681ssltest.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
929ssltest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 682ssltest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
930ssltest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 683ssltest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
931ssltest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 684ssltest.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
932ssltest.o: ../include/openssl/pem.h ../include/openssl/pem2.h 685ssltest.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
933ssltest.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h
934ssltest.o: ../include/openssl/pqueue.h ../include/openssl/rand.h 686ssltest.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
935ssltest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 687ssltest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
936ssltest.o: ../include/openssl/sha.h ../include/openssl/ssl.h 688ssltest.o: ../include/openssl/sha.h ../include/openssl/ssl.h
@@ -939,3 +691,8 @@ ssltest.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
939ssltest.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 691ssltest.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
940ssltest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 692ssltest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
941ssltest.o: ../include/openssl/x509v3.h ssltest.c 693ssltest.o: ../include/openssl/x509v3.h ssltest.c
694wp_test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
695wp_test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
696wp_test.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
697wp_test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
698wp_test.o: ../include/openssl/whrlpool.h wp_test.c
diff --git a/src/lib/libssl/src/test/Uss.cnf b/src/lib/libssl/src/test/Uss.cnf
index 98b2e054b7..0c0ebb5f67 100644
--- a/src/lib/libssl/src/test/Uss.cnf
+++ b/src/lib/libssl/src/test/Uss.cnf
@@ -7,7 +7,7 @@ RANDFILE = ./.rnd
7 7
8#################################################################### 8####################################################################
9[ req ] 9[ req ]
10default_bits = 1024 10default_bits = 512
11default_keyfile = keySS.pem 11default_keyfile = keySS.pem
12distinguished_name = req_distinguished_name 12distinguished_name = req_distinguished_name
13encrypt_rsa_key = no 13encrypt_rsa_key = no
diff --git a/src/lib/libssl/src/test/maketests.com b/src/lib/libssl/src/test/maketests.com
index 14cbf06088..ca072f1d11 100644
--- a/src/lib/libssl/src/test/maketests.com
+++ b/src/lib/libssl/src/test/maketests.com
@@ -12,9 +12,9 @@ $! "test" programs for the different types of encryption for OpenSSL.
12$! It was written so it would try to determine what "C" compiler to 12$! It was written so it would try to determine what "C" compiler to
13$! use or you can specify which "C" compiler to use. 13$! use or you can specify which "C" compiler to use.
14$! 14$!
15$! The test "executeables" will be placed in a directory called 15$! The test "executables" will be placed in a directory called
16$! [.xxx.EXE.TEST] where "xxx" denotes AXP or VAX depending on your machines 16$! [.xxx.EXE.TEST] where "xxx" denotes ALPHA, IA64, or VAX, depending
17$! architecture. 17$! on your machine architecture.
18$! 18$!
19$! Specify DEBUG or NODEBUG P1 to compile with or without debugger 19$! Specify DEBUG or NODEBUG P1 to compile with or without debugger
20$! information. 20$! information.
@@ -44,24 +44,19 @@ $ TCPIP_LIB = ""
44$! 44$!
45$! Check Which Architecture We Are Using. 45$! Check Which Architecture We Are Using.
46$! 46$!
47$ IF (F$GETSYI("CPU").GE.128) 47$ if (f$getsyi( "HW_MODEL") .lt. 1024)
48$ THEN 48$ then
49$! 49$ arch = "VAX"
50$! The Architecture Is AXP. 50$ else
51$! 51$ arch = ""
52$ ARCH := AXP 52$ arch = arch+ f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
53$! 53$ if (arch .eqs. "") then arch = "UNK"
54$! Else... 54$ endif
55$!
56$ ELSE
57$!
58$! The Architecture Is VAX.
59$!
60$ ARCH := VAX
61$! 55$!
62$! End The Architecture Check. 56$! Define The OBJ and EXE Directories (EXE before CHECK_OPTIONS).
63$! 57$!
64$ ENDIF 58$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.TEST]
59$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.TEST]
65$! 60$!
66$! Check To Make Sure We Have Valid Command Line Parameters. 61$! Check To Make Sure We Have Valid Command Line Parameters.
67$! 62$!
@@ -73,7 +68,7 @@ $ GOSUB INITIALISE
73$! 68$!
74$! Tell The User What Kind of Machine We Run On. 69$! Tell The User What Kind of Machine We Run On.
75$! 70$!
76$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine." 71$ WRITE SYS$OUTPUT "Compiling On ''ARCH'."
77$! 72$!
78$! Define The CRYPTO-LIB We Are To Use. 73$! Define The CRYPTO-LIB We Are To Use.
79$! 74$!
@@ -83,39 +78,12 @@ $! Define The SSL We Are To Use.
83$! 78$!
84$ SSL_LIB := SYS$DISK:[-.'ARCH'.EXE.SSL]LIBSSL.OLB 79$ SSL_LIB := SYS$DISK:[-.'ARCH'.EXE.SSL]LIBSSL.OLB
85$! 80$!
86$! Define The OBJ Directory. 81$! Create the OBJ and EXE Directories, if needed.
87$!
88$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.TEST]
89$!
90$! Check To See If The Architecture Specific OBJ Directory Exists.
91$!
92$ IF (F$PARSE(OBJ_DIR).EQS."")
93$ THEN
94$!
95$! The EXE Directory Dosen't Exist, So Create It.
96$!
97$ CREATE/DIRECTORY 'OBJ_DIR'
98$!
99$! End The Architecture Specific OBJ Directory Check.
100$!
101$ ENDIF
102$! 82$!
103$! Define The EXE Directory. 83$ IF (F$PARSE(OBJ_DIR).EQS."") THEN -
104$! 84 CREATE /DIRECTORY 'OBJ_DIR'
105$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.TEST] 85$ IF (F$PARSE(EXE_DIR).EQS."") THEN -
106$! 86 CREATE /DIRECTORY 'EXE_DIR'
107$! Check To See If The Architecture Specific EXE Directory Exists.
108$!
109$ IF (F$PARSE(EXE_DIR).EQS."")
110$ THEN
111$!
112$! The EXE Directory Dosen't Exist, So Create It.
113$!
114$ CREATE/DIRECTORY 'EXE_DIR'
115$!
116$! End The Architecture Specific EXE Directory Check.
117$!
118$ ENDIF
119$! 87$!
120$! Check To See If We Have The Proper Libraries. 88$! Check To See If We Have The Proper Libraries.
121$! 89$!
@@ -126,20 +94,59 @@ $!
126$ GOSUB CHECK_OPT_FILE 94$ GOSUB CHECK_OPT_FILE
127$! 95$!
128$! Define The TEST Files. 96$! Define The TEST Files.
97$! NOTE: Some might think this list ugly. However, it's made this way to
98$! reflect the EXE variable in Makefile as closely as possible,
99$! thereby making it fairly easy to verify that the lists are the same.
129$! 100$!
130$ TEST_FILES = "BNTEST,ECTEST,ECDSATEST,ECDHTEST,IDEATEST,"+ - 101$ TEST_FILES = "BNTEST,ECTEST,ECDSATEST,ECDHTEST,IDEATEST,"+ -
131 "MD2TEST,MD4TEST,MD5TEST,HMACTEST,"+ - 102 "MD2TEST,MD4TEST,MD5TEST,HMACTEST,WP_TEST,"+ -
132 "RC2TEST,RC4TEST,RC5TEST,"+ - 103 "RC2TEST,RC4TEST,RC5TEST,"+ -
133 "DESTEST,SHATEST,SHA1TEST,SHA256T,SHA512T,"+ - 104 "DESTEST,SHATEST,SHA1TEST,SHA256T,SHA512T,"+ -
134 "MDC2TEST,RMDTEST,"+ - 105 "MDC2TEST,RMDTEST,"+ -
135 "RANDTEST,DHTEST,ENGINETEST,"+ - 106 "RANDTEST,DHTEST,ENGINETEST,"+ -
136 "BFTEST,CASTTEST,SSLTEST,EXPTEST,DSATEST,RSA_TEST,"+ - 107 "BFTEST,CASTTEST,SSLTEST,EXPTEST,DSATEST,RSA_TEST,"+ -
137 "EVP_TEST" 108 "EVP_TEST,JPAKETEST"
109$! Should we add MTTEST,PQ_TEST,LH_TEST,DIVTEST,TABTEST as well?
110$!
111$! Additional directory information.
112$ T_D_BNTEST := [-.crypto.bn]
113$ T_D_ECTEST := [-.crypto.ec]
114$ T_D_ECDSATEST := [-.crypto.ecdsa]
115$ T_D_ECDHTEST := [-.crypto.ecdh]
116$ T_D_IDEATEST := [-.crypto.idea]
117$ T_D_MD2TEST := [-.crypto.md2]
118$ T_D_MD4TEST := [-.crypto.md4]
119$ T_D_MD5TEST := [-.crypto.md5]
120$ T_D_HMACTEST := [-.crypto.hmac]
121$ T_D_WP_TEST := [-.crypto.whrlpool]
122$ T_D_RC2TEST := [-.crypto.rc2]
123$ T_D_RC4TEST := [-.crypto.rc4]
124$ T_D_RC5TEST := [-.crypto.rc5]
125$ T_D_DESTEST := [-.crypto.des]
126$ T_D_SHATEST := [-.crypto.sha]
127$ T_D_SHA1TEST := [-.crypto.sha]
128$ T_D_SHA256T := [-.crypto.sha]
129$ T_D_SHA512T := [-.crypto.sha]
130$ T_D_MDC2TEST := [-.crypto.mdc2]
131$ T_D_RMDTEST := [-.crypto.ripemd]
132$ T_D_RANDTEST := [-.crypto.rand]
133$ T_D_DHTEST := [-.crypto.dh]
134$ T_D_ENGINETEST := [-.crypto.engine]
135$ T_D_BFTEST := [-.crypto.bf]
136$ T_D_CASTTEST := [-.crypto.cast]
137$ T_D_SSLTEST := [-.ssl]
138$ T_D_EXPTEST := [-.crypto.bn]
139$ T_D_DSATEST := [-.crypto.dsa]
140$ T_D_RSA_TEST := [-.crypto.rsa]
141$ T_D_EVP_TEST := [-.crypto.evp]
142$ T_D_JPAKETEST := [-.crypto.jpake]
143$ T_D_IGETEST := [-.test]
144$!
138$ TCPIP_PROGRAMS = ",," 145$ TCPIP_PROGRAMS = ",,"
139$ IF COMPILER .EQS. "VAXC" THEN - 146$ IF COMPILER .EQS. "VAXC" THEN -
140 TCPIP_PROGRAMS = ",SSLTEST," 147 TCPIP_PROGRAMS = ",SSLTEST,"
141$! 148$!
142$! Define A File Counter And Set It To "0". 149$! Define A File Counter And Set It To "0".
143$! 150$!
144$ FILE_COUNTER = 0 151$ FILE_COUNTER = 0
145$! 152$!
@@ -161,7 +168,7 @@ $ FILE_COUNTER = FILE_COUNTER + 1
161$! 168$!
162$! Create The Source File Name. 169$! Create The Source File Name.
163$! 170$!
164$ SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME + ".C" 171$ SOURCE_FILE = "SYS$DISK:" + T_D_'FILE_NAME' + FILE_NAME + ".C"
165$! 172$!
166$! Create The Object File Name. 173$! Create The Object File Name.
167$! 174$!
@@ -195,7 +202,7 @@ $!
195$! Compile The File. 202$! Compile The File.
196$! 203$!
197$ ON ERROR THEN GOTO NEXT_FILE 204$ ON ERROR THEN GOTO NEXT_FILE
198$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE' 205$ CC /OBJECT='OBJECT_FILE' 'SOURCE_FILE'
199$ ON WARNING THEN GOTO NEXT_FILE 206$ ON WARNING THEN GOTO NEXT_FILE
200$! 207$!
201$! Check If What We Are About To Compile Works Without A TCP/IP Library. 208$! Check If What We Are About To Compile Works Without A TCP/IP Library.
@@ -205,7 +212,8 @@ $ THEN
205$! 212$!
206$! Inform The User That A TCP/IP Library Is Needed To Compile This Program. 213$! Inform The User That A TCP/IP Library Is Needed To Compile This Program.
207$! 214$!
208$ WRITE SYS$OUTPUT FILE_NAME," Needs A TCP/IP Library. Can't Link. Skipping..." 215$ WRITE SYS$OUTPUT -
216 FILE_NAME," Needs A TCP/IP Library. Can't Link. Skipping..."
209$ GOTO NEXT_FILE 217$ GOTO NEXT_FILE
210$! 218$!
211$! End The TCP/IP Library Check. 219$! End The TCP/IP Library Check.
@@ -220,10 +228,12 @@ $ THEN
220$! 228$!
221$! Don't Link With The RSAREF Routines And TCP/IP Library. 229$! Don't Link With The RSAREF Routines And TCP/IP Library.
222$! 230$!
223$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' - 231$ LINK /'DEBUGGER' /'TRACEBACK' /EXECTABLE = 'EXE_FILE' -
224 'OBJECT_FILE', - 232 'OBJECT_FILE', -
225 'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, - 233 'SSL_LIB' /LIBRARY, -
226 'TCPIP_LIB','OPT_FILE'/OPTION 234 'CRYPTO_LIB' /LIBRARY, -
235 'TCPIP_LIB', -
236 'OPT_FILE' /OPTIONS
227$! 237$!
228$! Else... 238$! Else...
229$! 239$!
@@ -231,10 +241,11 @@ $ ELSE
231$! 241$!
232$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library. 242$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
233$! 243$!
234$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' - 244$ LINK /'DEBUGGER' /'TRACEBACK' /EXECUTABLE = 'EXE_FILE' -
235 'OBJECT_FILE', - 245 'OBJECT_FILE', -
236 'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, - 246 'SSL_LIB' /LIBRARY, -
237 'OPT_FILE'/OPTION 247 'CRYPTO_LIB' /LIBRARY, -
248 'OPT_FILE' /OPTIONS
238$! 249$!
239$! End The TCP/IP Library Check. 250$! End The TCP/IP Library Check.
240$! 251$!
@@ -273,10 +284,10 @@ $!
273$ CREATE 'OPT_FILE' 284$ CREATE 'OPT_FILE'
274$DECK 285$DECK
275! 286!
276! Default System Options File To Link Agianst 287! Default System Options File To Link Against
277! The Sharable VAX C Runtime Library. 288! The Sharable VAX C Runtime Library.
278! 289!
279SYS$SHARE:VAXCRTL.EXE/SHARE 290SYS$SHARE:VAXCRTL.EXE /SHAREABLE
280$EOD 291$EOD
281$! 292$!
282$! End The Option File Check. 293$! End The Option File Check.
@@ -305,8 +316,8 @@ $DECK
305! Default System Options File To Link Agianst 316! Default System Options File To Link Agianst
306! The Sharable C Runtime Library. 317! The Sharable C Runtime Library.
307! 318!
308GNU_CC:[000000]GCCLIB/LIBRARY 319GNU_CC:[000000]GCCLIB.OLB /LIBRARY
309SYS$SHARE:VAXCRTL/SHARE 320SYS$SHARE:VAXCRTL.EXE /SHAREABLE
310$EOD 321$EOD
311$! 322$!
312$! End The Option File Check. 323$! End The Option File Check.
@@ -327,7 +338,7 @@ $!
327$ IF (F$SEARCH(OPT_FILE).EQS."") 338$ IF (F$SEARCH(OPT_FILE).EQS."")
328$ THEN 339$ THEN
329$! 340$!
330$! Figure Out If We Need An AXP Or A VAX Linker Option File. 341$! Figure Out If We Need A non-VAX Or A VAX Linker Option File.
331$! 342$!
332$ IF (ARCH.EQS."VAX") 343$ IF (ARCH.EQS."VAX")
333$ THEN 344$ THEN
@@ -340,26 +351,26 @@ $DECK
340! Default System Options File To Link Agianst 351! Default System Options File To Link Agianst
341! The Sharable DEC C Runtime Library. 352! The Sharable DEC C Runtime Library.
342! 353!
343SYS$SHARE:DECC$SHR.EXE/SHARE 354SYS$SHARE:DECC$SHR.EXE /SHAREABLE
344$EOD 355$EOD
345$! 356$!
346$! Else... 357$! Else...
347$! 358$!
348$ ELSE 359$ ELSE
349$! 360$!
350$! Create The AXP Linker Option File. 361$! Create The non-VAX Linker Option File.
351$! 362$!
352$ CREATE 'OPT_FILE' 363$ CREATE 'OPT_FILE'
353$DECK 364$DECK
354! 365!
355! Default System Options File For AXP To Link Agianst 366! Default System Options File For non-VAX To Link Agianst
356! The Sharable C Runtime Library. 367! The Sharable C Runtime Library.
357! 368!
358SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE 369SYS$SHARE:CMA$OPEN_LIB_SHR.EXE /SHAREABLE
359SYS$SHARE:CMA$OPEN_RTL/SHARE 370SYS$SHARE:CMA$OPEN_RTL.EXE /SHAREABLE
360$EOD 371$EOD
361$! 372$!
362$! End The VAX/AXP DEC C Option File Check. 373$! End The DEC C Option File Check.
363$! 374$!
364$ ENDIF 375$ ENDIF
365$! 376$!
@@ -511,7 +522,7 @@ $ ELSE
511$! 522$!
512$! Check To See If We Have VAXC Or DECC. 523$! Check To See If We Have VAXC Or DECC.
513$! 524$!
514$ IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."") 525$ IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
515$ THEN 526$ THEN
516$! 527$!
517$! Looks Like DECC, Set To Use DECC. 528$! Looks Like DECC, Set To Use DECC.
@@ -614,14 +625,14 @@ $! Use DECC...
614$! 625$!
615$ CC = "CC" 626$ CC = "CC"
616$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" - 627$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
617 THEN CC = "CC/DECC" 628 THEN CC = "CC /DECC"
618$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + - 629$ CC = CC + "/''CC_OPTIMIZE' /''DEBUGGER' /STANDARD=ANSI89" + -
619 "/NOLIST/PREFIX=ALL" + - 630 "/NOLIST /PREFIX=ALL" + -
620 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS 631 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
621$! 632$!
622$! Define The Linker Options File Name. 633$! Define The Linker Options File Name.
623$! 634$!
624$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT" 635$ OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
625$! 636$!
626$! End DECC Check. 637$! End DECC Check.
627$! 638$!
@@ -643,23 +654,23 @@ $!
643$! Compile Using VAXC. 654$! Compile Using VAXC.
644$! 655$!
645$ CC = "CC" 656$ CC = "CC"
646$ IF ARCH.EQS."AXP" 657$ IF ARCH.NES."VAX"
647$ THEN 658$ THEN
648$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!" 659$ WRITE SYS$OUTPUT "There is no VAX C on ''ARCH'!"
649$ EXIT 660$ EXIT
650$ ENDIF 661$ ENDIF
651$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC" 662$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC /VAXC"
652$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + - 663$ CC = CC + "/''CC_OPTIMIZE' /''DEBUGGER' /NOLIST" + -
653 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS 664 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
654$ CCDEFS = CCDEFS + ",""VAXC""" 665$ CCDEFS = CCDEFS + ",""VAXC"""
655$! 666$!
656$! Define <sys> As SYS$COMMON:[SYSLIB] 667$! Define <sys> As SYS$COMMON:[SYSLIB]
657$! 668$!
658$ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB] 669$ DEFINE /NOLOG SYS SYS$COMMON:[SYSLIB]
659$! 670$!
660$! Define The Linker Options File Name. 671$! Define The Linker Options File Name.
661$! 672$!
662$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT" 673$ OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
663$! 674$!
664$! End VAXC Check 675$! End VAXC Check
665$! 676$!
@@ -680,12 +691,12 @@ $ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
680$! 691$!
681$! Use GNU C... 692$! Use GNU C...
682$! 693$!
683$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + - 694$ CC = "GCC /NOCASE_HACK /''GCC_OPTIMIZE' /''DEBUGGER' /NOLIST" + -
684 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS 695 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
685$! 696$!
686$! Define The Linker Options File Name. 697$! Define The Linker Options File Name.
687$! 698$!
688$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT" 699$ OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
689$! 700$!
690$! End The GNU C Check. 701$! End The GNU C Check.
691$! 702$!
@@ -715,7 +726,7 @@ $ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
715$! 726$!
716$! Show user the result 727$! Show user the result
717$! 728$!
718$ WRITE/SYMBOL SYS$OUTPUT "Main Compiling Command: ",CC 729$ WRITE /SYMBOL SYS$OUTPUT "Main Compiling Command: ", CC
719$! 730$!
720$! Else The User Entered An Invalid Arguement. 731$! Else The User Entered An Invalid Arguement.
721$! 732$!
@@ -749,7 +760,7 @@ $ THEN
749$! 760$!
750$! Set the library to use SOCKETSHR 761$! Set the library to use SOCKETSHR
751$! 762$!
752$ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT/OPT" 763$ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT /OPTIONS"
753$! 764$!
754$! Done with SOCKETSHR 765$! Done with SOCKETSHR
755$! 766$!
@@ -760,7 +771,7 @@ $!
760$ IF P3.EQS."MULTINET" 771$ IF P3.EQS."MULTINET"
761$ THEN 772$ THEN
762$! 773$!
763$! Set the library to use UXC emulation. 774$! Set the library to use UCX emulation.
764$! 775$!
765$ P3 = "UCX" 776$ P3 = "UCX"
766$! 777$!
@@ -775,13 +786,13 @@ $ THEN
775$! 786$!
776$! Set the library to use UCX. 787$! Set the library to use UCX.
777$! 788$!
778$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT/OPT" 789$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT /OPTIONS"
779$ IF F$TRNLNM("UCX$IPC_SHR") .NES. "" 790$ IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
780$ THEN 791$ THEN
781$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT" 792$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT /OPTIONS"
782$ ELSE 793$ ELSE
783$ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN - 794$ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
784 TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT/OPT" 795 TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT /OPTIONS"
785$ ENDIF 796$ ENDIF
786$! 797$!
787$! Done with UCX 798$! Done with UCX
@@ -795,7 +806,7 @@ $ THEN
795$! 806$!
796$! Set the library to use TCPIP (post UCX). 807$! Set the library to use TCPIP (post UCX).
797$! 808$!
798$ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT/OPT" 809$ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT /OPTIONS"
799$! 810$!
800$! Done with TCPIP 811$! Done with TCPIP
801$! 812$!
@@ -893,7 +904,7 @@ $ __INCLUDE = __TOP + "INCLUDE.OPENSSL]"
893$! 904$!
894$! Set up the logical name OPENSSL to point at the include directory 905$! Set up the logical name OPENSSL to point at the include directory
895$! 906$!
896$ DEFINE OPENSSL/NOLOG '__INCLUDE' 907$ DEFINE OPENSSL /NOLOG '__INCLUDE'
897$! 908$!
898$! Done 909$! Done
899$! 910$!
@@ -907,7 +918,7 @@ $ IF __SAVE_OPENSSL .EQS. ""
907$ THEN 918$ THEN
908$ DEASSIGN OPENSSL 919$ DEASSIGN OPENSSL
909$ ELSE 920$ ELSE
910$ DEFINE/NOLOG OPENSSL '__SAVE_OPENSSL' 921$ DEFINE /NOLOG OPENSSL '__SAVE_OPENSSL'
911$ ENDIF 922$ ENDIF
912$! 923$!
913$! Done 924$! Done
diff --git a/src/lib/libssl/src/test/tcrl.com b/src/lib/libssl/src/test/tcrl.com
index 86bf9735aa..1f606eb850 100644
--- a/src/lib/libssl/src/test/tcrl.com
+++ b/src/lib/libssl/src/test/tcrl.com
@@ -1,7 +1,9 @@
1$! TCRL.COM -- Tests crl keys 1$! TCRL.COM -- Tests crl keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl crl 9$ cmd := mcr 'exe_dir'openssl crl
diff --git a/src/lib/libssl/src/test/testca.com b/src/lib/libssl/src/test/testca.com
index c670f2bf5f..ec7e56dad6 100644
--- a/src/lib/libssl/src/test/testca.com
+++ b/src/lib/libssl/src/test/testca.com
@@ -1,8 +1,9 @@
1$! TESTCA.COM 1$! TESTCA.COM
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
6$ 7$
7$ openssl := mcr 'exe_dir'openssl 8$ openssl := mcr 'exe_dir'openssl
8$ 9$
@@ -11,7 +12,7 @@ $
11$ set noon 12$ set noon
12$ if f$search("demoCA.dir") .nes. "" 13$ if f$search("demoCA.dir") .nes. ""
13$ then 14$ then
14$ call deltree [.demoCA]*.* 15$ @[-.util]deltree [.demoCA]*.*
15$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) demoCA.dir;* 16$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) demoCA.dir;*
16$ delete demoCA.dir;* 17$ delete demoCA.dir;*
17$ endif 18$ endif
@@ -38,7 +39,7 @@ $ @[-.apps]CA.com -verify newcert.pem
38$ if $severity .ne. 1 then exit 3 39$ if $severity .ne. 1 then exit 3
39$ 40$
40$ set noon 41$ set noon
41$ call deltree [.demoCA]*.* 42$ @[-.util]deltree [.demoCA]*.*
42$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) demoCA.dir;* 43$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) demoCA.dir;*
43$ delete demoCA.dir;* 44$ delete demoCA.dir;*
44$ if f$search("newcert.pem") .nes. "" then delete newcert.pem;* 45$ if f$search("newcert.pem") .nes. "" then delete newcert.pem;*
@@ -47,32 +48,3 @@ $ set on
47$! #usage: CA -newcert|-newreq|-newca|-sign|-verify 48$! #usage: CA -newcert|-newreq|-newca|-sign|-verify
48$ 49$
49$ exit 50$ exit
50$
51$ deltree: subroutine ! P1 is a name of a directory
52$ on control_y then goto dt_STOP
53$ on warning then goto dt_exit
54$ _dt_def = f$trnlnm("SYS$DISK")+f$directory()
55$ if f$parse(p1) .eqs. "" then exit
56$ set default 'f$parse(p1,,,"DEVICE")''f$parse(p1,,,"DIRECTORY")'
57$ p1 = f$parse(p1,,,"NAME") + f$parse(p1,,,"TYPE")
58$ _fp = f$parse(".DIR",p1)
59$ dt_loop:
60$ _f = f$search(_fp)
61$ if _f .eqs. "" then goto dt_loopend
62$ call deltree [.'f$parse(_f,,,"NAME")']*.*
63$ goto dt_loop
64$ dt_loopend:
65$ _fp = f$parse(p1,".;*")
66$ if f$search(_fp) .eqs. "" then goto dt_exit
67$ set noon
68$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) '_fp'
69$ set on
70$ delete/nolog '_fp'
71$ dt_exit:
72$ set default '_dt_def'
73$ exit
74$ dt_STOP:
75$ set default '_dt_def'
76$ stop/id=""
77$ exit
78$ endsubroutine
diff --git a/src/lib/libssl/src/test/testenc.com b/src/lib/libssl/src/test/testenc.com
index 5e6f521f9d..621d9a2126 100644
--- a/src/lib/libssl/src/test/testenc.com
+++ b/src/lib/libssl/src/test/testenc.com
@@ -1,8 +1,9 @@
1$! TESTENC.COM -- Test encoding and decoding 1$! TESTENC.COM -- Test encoding and decoding
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
6$ 7$
7$ testsrc := makefile. 8$ testsrc := makefile.
8$ test := p.txt 9$ test := p.txt
diff --git a/src/lib/libssl/src/test/testgen.com b/src/lib/libssl/src/test/testgen.com
index 5d28ebec72..a4bc574bec 100644
--- a/src/lib/libssl/src/test/testgen.com
+++ b/src/lib/libssl/src/test/testgen.com
@@ -1,7 +1,9 @@
1$! TETSGEN.COM 1$! TETSGEN.COM
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ T := testcert 9$ T := testcert
diff --git a/src/lib/libssl/src/test/tests.com b/src/lib/libssl/src/test/tests.com
index 88a33d0531..d151cd3955 100644
--- a/src/lib/libssl/src/test/tests.com
+++ b/src/lib/libssl/src/test/tests.com
@@ -6,11 +6,17 @@ $ __proc = f$element(0,";",f$environment("procedure"))
6$ __here = f$parse(f$parse("A.;",__proc) - "A.;","[]A.;") - "A.;" 6$ __here = f$parse(f$parse("A.;",__proc) - "A.;","[]A.;") - "A.;"
7$ __save_default = f$environment("default") 7$ __save_default = f$environment("default")
8$ __arch := VAX 8$ __arch := VAX
9$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 9$ if f$getsyi("cpu") .ge. 128 then -
10 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
11$ if __arch .eqs. "" then __arch := UNK
10$ texe_dir := sys$disk:[-.'__arch'.exe.test] 12$ texe_dir := sys$disk:[-.'__arch'.exe.test]
11$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 13$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
12$ 14$
15$ sslroot = f$parse("sys$disk:[-.apps];",,,,"syntax_only") - "].;"+ ".]"
16$ define /translation_attributes = concealed sslroot 'sslroot'
17$
13$ set default '__here' 18$ set default '__here'
19$
14$ on control_y then goto exit 20$ on control_y then goto exit
15$ on error then goto exit 21$ on error then goto exit
16$ 22$
@@ -18,14 +24,18 @@ $ if p1 .nes. ""
18$ then 24$ then
19$ tests = p1 25$ tests = p1
20$ else 26$ else
27$! NOTE: This list reflects the list of dependencies following the
28$! "alltests" target in Makefile. This should make it easy to see
29$! if there's a difference that needs to be taken care of.
21$ tests := - 30$ tests := -
22 test_des,test_idea,test_sha,test_md4,test_md5,test_hmac,- 31 test_des,test_idea,test_sha,test_md4,test_md5,test_hmac,-
23 test_md2,test_mdc2,- 32 test_md2,test_mdc2,test_wp,-
24 test_rmd,test_rc2,test_rc4,test_rc5,test_bf,test_cast,test_rd,- 33 test_rmd,test_rc2,test_rc4,test_rc5,test_bf,test_cast,test_aes,-
25 test_rand,test_bn,test_ec,test_ecdsa,test_ecdh,- 34 test_rand,test_bn,test_ec,test_ecdsa,test_ecdh,-
26 test_enc,test_x509,test_rsa,test_crl,test_sid,- 35 test_enc,test_x509,test_rsa,test_crl,test_sid,-
27 test_gen,test_req,test_pkcs7,test_verify,test_dh,test_dsa,- 36 test_gen,test_req,test_pkcs7,test_verify,test_dh,test_dsa,-
28 test_ss,test_ca,test_engine,test_evp,test_ssl,test_ige,test_jpake 37 test_ss,test_ca,test_engine,test_evp,test_ssl,test_tsa,test_ige,-
38 test_jpake,test_cms
29$ endif 39$ endif
30$ tests = f$edit(tests,"COLLAPSE") 40$ tests = f$edit(tests,"COLLAPSE")
31$ 41$
@@ -43,6 +53,7 @@ $ MD2TEST := md2test
43$ MD4TEST := md4test 53$ MD4TEST := md4test
44$ MD5TEST := md5test 54$ MD5TEST := md5test
45$ HMACTEST := hmactest 55$ HMACTEST := hmactest
56$ WPTEST := wp_test
46$ RC2TEST := rc2test 57$ RC2TEST := rc2test
47$ RC4TEST := rc4test 58$ RC4TEST := rc4test
48$ RC5TEST := rc5test 59$ RC5TEST := rc5test
@@ -93,6 +104,9 @@ $ return
93$ test_hmac: 104$ test_hmac:
94$ mcr 'texe_dir''hmactest' 105$ mcr 'texe_dir''hmactest'
95$ return 106$ return
107$ test_wp:
108$ mcr 'texe_dir''wptest'
109$ return
96$ test_md2: 110$ test_md2:
97$ mcr 'texe_dir''md2test' 111$ mcr 'texe_dir''md2test'
98$ return 112$ return
@@ -248,9 +262,22 @@ $ write sys$output "Generate and certify a test certificate via the 'ca' pro
248$ @testca.com 262$ @testca.com
249$ endif 263$ endif
250$ return 264$ return
251$ test_rd: 265$ test_aes:
252$ write sys$output "test Rijndael" 266$! write sys$output "test AES"
253$ !mcr 'texe_dir''rdtest' 267$! !mcr 'texe_dir''aestest'
268$ return
269$ test_tsa:
270$ set noon
271$ define/user sys$output nla0:
272$ mcr 'exe_dir'openssl no-rsa
273$ save_severity=$SEVERITY
274$ set on
275$ if save_severity
276$ then
277$ write sys$output "skipping testtsa.com test -- requires RSA"
278$ else
279$ @testtsa.com
280$ endif
254$ return 281$ return
255$ test_ige: 282$ test_ige:
256$ write sys$output "Test IGE mode" 283$ write sys$output "Test IGE mode"
@@ -260,8 +287,13 @@ $ test_jpake:
260$ write sys$output "Test JPAKE" 287$ write sys$output "Test JPAKE"
261$ mcr 'texe_dir''jpaketest' 288$ mcr 'texe_dir''jpaketest'
262$ return 289$ return
290$ test_cms:
291$ write sys$output "CMS consistency test"
292$ perl CMS-TEST.PL
293$ return
263$ 294$
264$ 295$
265$ exit: 296$ exit:
266$ set default '__save_default' 297$ set default '__save_default'
298$ deassign sslroot
267$ exit 299$ exit
diff --git a/src/lib/libssl/src/test/testss.com b/src/lib/libssl/src/test/testss.com
index 685ae5043d..6598106b09 100644
--- a/src/lib/libssl/src/test/testss.com
+++ b/src/lib/libssl/src/test/testss.com
@@ -1,7 +1,9 @@
1$! TESTSS.COM 1$! TESTSS.COM
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ digest="-md5" 9$ digest="-md5"
diff --git a/src/lib/libssl/src/test/testssl b/src/lib/libssl/src/test/testssl
index 8ac90ae5ee..f9d7c5d65f 100644
--- a/src/lib/libssl/src/test/testssl
+++ b/src/lib/libssl/src/test/testssl
@@ -142,4 +142,10 @@ else
142 fi 142 fi
143fi 143fi
144 144
145echo test tls1 with PSK
146$ssltest -tls1 -cipher PSK -psk abc123 $extra || exit 1
147
148echo test tls1 with PSK via BIO pair
149$ssltest -bio_pair -tls1 -cipher PSK -psk abc123 $extra || exit 1
150
145exit 0 151exit 0
diff --git a/src/lib/libssl/src/test/testssl.com b/src/lib/libssl/src/test/testssl.com
index 26308f7715..9c83afba04 100644
--- a/src/lib/libssl/src/test/testssl.com
+++ b/src/lib/libssl/src/test/testssl.com
@@ -1,7 +1,9 @@
1$! TESTSSL.COM 1$! TESTSSL.COM
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ texe_dir := sys$disk:[-.'__arch'.exe.test] 7$ texe_dir := sys$disk:[-.'__arch'.exe.test]
6$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 8$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
7$ 9$
diff --git a/src/lib/libssl/src/test/testtsa.com b/src/lib/libssl/src/test/testtsa.com
new file mode 100644
index 0000000000..e3c586f14a
--- /dev/null
+++ b/src/lib/libssl/src/test/testtsa.com
@@ -0,0 +1,248 @@
1$!
2$! A few very basic tests for the 'ts' time stamping authority command.
3$!
4$
5$ __arch := VAX
6$ if f$getsyi("cpu") .ge. 128 then -
7 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
8$ if __arch .eqs. "" then __arch := UNK
9$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
10$
11$ openssl := mcr 'f$parse(exe_dir+"openssl.exe")'
12$ OPENSSL_CONF := [-]CAtsa.cnf
13$ ! Because that's what ../apps/CA.sh really looks at
14$ SSLEAY_CONFIG = "-config " + OPENSSL_CONF
15$
16$ error:
17$ subroutine
18$ write sys$error "TSA test failed!"
19$ exit 3
20$ endsubroutine
21$
22$ setup_dir:
23$ subroutine
24$
25$ if f$search("tsa.dir") .nes ""
26$ then
27$ @[-.util]deltree [.tsa]*.*
28$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) tsa.dir;*
29$ delete tsa.dir;*
30$ endif
31$
32$ create/dir [.tsa]
33$ set default [.tsa]
34$ endsubroutine
35$
36$ clean_up_dir:
37$ subroutine
38$
39$ set default [-]
40$ @[-.util]deltree [.tsa]*.*
41$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) tsa.dir;*
42$ delete tsa.dir;*
43$ endsubroutine
44$
45$ create_ca:
46$ subroutine
47$
48$ write sys$output "Creating a new CA for the TSA tests..."
49$ TSDNSECT = "ts_ca_dn"
50$ openssl req -new -x509 -nodes -
51 -out tsaca.pem -keyout tsacakey.pem
52$ if $severity .ne. 1 then call error
53$ endsubroutine
54$
55$ create_tsa_cert:
56$ subroutine
57$
58$ INDEX=p1
59$ EXT=p2
60$ TSDNSECT = "ts_cert_dn"
61$
62$ openssl req -new -
63 -out tsa_req'INDEX'.pem -keyout tsa_key'INDEX'.pem
64$ if $severity .ne. 1 then call error
65$
66$ write sys$output "Using extension ''EXT'"
67$ openssl x509 -req -
68 -in tsa_req'INDEX'.pem -out tsa_cert'INDEX'.pem -
69 "-CA" tsaca.pem "-CAkey" tsacakey.pem "-CAcreateserial" -
70 -extfile 'OPENSSL_CONF' -extensions "''EXT'"
71$ if $severity .ne. 1 then call error
72$ endsubroutine
73$
74$ print_request:
75$ subroutine
76$
77$ openssl ts -query -in 'p1' -text
78$ endsubroutine
79$
80$ create_time_stamp_request1: subroutine
81$
82$ openssl ts -query -data [-]testtsa.com -policy tsa_policy1 -
83 -cert -out req1.tsq
84$ if $severity .ne. 1 then call error
85$ endsubroutine
86$
87$ create_time_stamp_request2: subroutine
88$
89$ openssl ts -query -data [-]testtsa.com -policy tsa_policy2 -
90 -no_nonce -out req2.tsq
91$ if $severity .ne. 1 then call error
92$ endsubroutine
93$
94$ create_time_stamp_request3: subroutine
95$
96$ openssl ts -query -data [-]CAtsa.cnf -no_nonce -out req3.tsq
97$ if $severity .ne. 1 then call error
98$ endsubroutine
99$
100$ print_response:
101$ subroutine
102$
103$ openssl ts -reply -in 'p1' -text
104$ if $severity .ne. 1 then call error
105$ endsubroutine
106$
107$ create_time_stamp_response:
108$ subroutine
109$
110$ openssl ts -reply -section 'p3' -queryfile 'p1' -out 'p2'
111$ if $severity .ne. 1 then call error
112$ endsubroutine
113$
114$ time_stamp_response_token_test:
115$ subroutine
116$
117$ RESPONSE2:='p2'.copy_tsr
118$ TOKEN_DER:='p2'.token_der
119$ openssl ts -reply -in 'p2' -out 'TOKEN_DER' -token_out
120$ if $severity .ne. 1 then call error
121$ openssl ts -reply -in 'TOKEN_DER' -token_in -out 'RESPONSE2'
122$ if $severity .ne. 1 then call error
123$ backup/compare 'RESPONSE2' 'p2'
124$ if $severity .ne. 1 then call error
125$ openssl ts -reply -in 'p2' -text -token_out
126$ if $severity .ne. 1 then call error
127$ openssl ts -reply -in 'TOKEN_DER' -token_in -text -token_out
128$ if $severity .ne. 1 then call error
129$ openssl ts -reply -queryfile 'p1' -text -token_out
130$ if $severity .ne. 1 then call error
131$ endsubroutine
132$
133$ verify_time_stamp_response:
134$ subroutine
135$
136$ openssl ts -verify -queryfile 'p1' -in 'p2' -
137 "-CAfile" tsaca.pem -untrusted tsa_cert1.pem
138$ if $severity .ne. 1 then call error
139$ openssl ts -verify -data 'p3' -in 'p2' -
140 "-CAfile" tsaca.pem -untrusted tsa_cert1.pem
141$ if $severity .ne. 1 then call error
142$ endsubroutine
143$
144$ verify_time_stamp_token:
145$ subroutine
146$
147$ ! create the token from the response first
148$ openssl ts -reply -in 'p2' -out 'p2'.token -token_out
149$ if $severity .ne. 1 then call error
150$ openssl ts -verify -queryfile 'p1' -in 'p2'.token -token_in -
151 "-CAfile" tsaca.pem -untrusted tsa_cert1.pem
152$ if $severity .ne. 1 then call error
153$ openssl ts -verify -data 'p3' -in 'p2'.token -token_in -
154 "-CAfile" tsaca.pem -untrusted tsa_cert1.pem
155$ if $severity .ne. 1 then call error
156$ endsubroutine
157$
158$ verify_time_stamp_response_fail:
159$ subroutine
160$
161$ openssl ts -verify -queryfile 'p1' -in 'p2' -
162 "-CAfile" tsaca.pem -untrusted tsa_cert1.pem
163$ ! Checks if the verification failed, as it should have.
164$ if $severity .eq. 1 then call error
165$ write sys$output "Ok"
166$ endsubroutine
167$
168$ ! Main body ----------------------------------------------------------
169$
170$ write sys$output "Setting up TSA test directory..."
171$ call setup_dir
172$
173$ write sys$output "Creating CA for TSA tests..."
174$ call create_ca
175$
176$ write sys$output "Creating tsa_cert1.pem TSA server cert..."
177$ call create_tsa_cert 1 "tsa_cert"
178$
179$ write sys$output "Creating tsa_cert2.pem non-TSA server cert..."
180$ call create_tsa_cert 2 "non_tsa_cert"
181$
182$ write sys$output "Creating req1.req time stamp request for file testtsa..."
183$ call create_time_stamp_request1
184$
185$ write sys$output "Printing req1.req..."
186$ call print_request req1.tsq
187$
188$ write sys$output "Generating valid response for req1.req..."
189$ call create_time_stamp_response req1.tsq resp1.tsr tsa_config1
190$
191$ write sys$output "Printing response..."
192$ call print_response resp1.tsr
193$
194$ write sys$output "Verifying valid response..."
195$ call verify_time_stamp_response req1.tsq resp1.tsr [-]testtsa.com
196$
197$ write sys$output "Verifying valid token..."
198$ call verify_time_stamp_token req1.tsq resp1.tsr [-]testtsa.com
199$
200$ ! The tests below are commented out, because invalid signer certificates
201$ ! can no longer be specified in the config file.
202$
203$ ! write sys$output "Generating _invalid_ response for req1.req..."
204$ ! call create_time_stamp_response req1.tsq resp1_bad.tsr tsa_config2
205$
206$ ! write sys$output "Printing response..."
207$ ! call print_response resp1_bad.tsr
208$
209$ ! write sys$output "Verifying invalid response, it should fail..."
210$ ! call verify_time_stamp_response_fail req1.tsq resp1_bad.tsr
211$
212$ write sys$output "Creating req2.req time stamp request for file testtsa..."
213$ call create_time_stamp_request2
214$
215$ write sys$output "Printing req2.req..."
216$ call print_request req2.tsq
217$
218$ write sys$output "Generating valid response for req2.req..."
219$ call create_time_stamp_response req2.tsq resp2.tsr tsa_config1
220$
221$ write sys$output "Checking '-token_in' and '-token_out' options with '-reply'..."
222$ call time_stamp_response_token_test req2.tsq resp2.tsr
223$
224$ write sys$output "Printing response..."
225$ call print_response resp2.tsr
226$
227$ write sys$output "Verifying valid response..."
228$ call verify_time_stamp_response req2.tsq resp2.tsr [-]testtsa.com
229$
230$ write sys$output "Verifying response against wrong request, it should fail..."
231$ call verify_time_stamp_response_fail req1.tsq resp2.tsr
232$
233$ write sys$output "Verifying response against wrong request, it should fail..."
234$ call verify_time_stamp_response_fail req2.tsq resp1.tsr
235$
236$ write sys$output "Creating req3.req time stamp request for file CAtsa.cnf..."
237$ call create_time_stamp_request3
238$
239$ write sys$output "Printing req3.req..."
240$ call print_request req3.tsq
241$
242$ write sys$output "Verifying response against wrong request, it should fail..."
243$ call verify_time_stamp_response_fail req3.tsq resp1.tsr
244$
245$ write sys$output "Cleaning up..."
246$ call clean_up_dir
247$
248$ exit
diff --git a/src/lib/libssl/src/test/times b/src/lib/libssl/src/test/times
index 738d569b8f..6b66eb342e 100644
--- a/src/lib/libssl/src/test/times
+++ b/src/lib/libssl/src/test/times
@@ -1,7 +1,7 @@
1 1
2More number for the questions about SSL overheads.... 2More number for the questions about SSL overheads....
3 3
4The following numbers were generated on a pentium pro 200, running linux. 4The following numbers were generated on a Pentium pro 200, running Linux.
5They give an indication of the SSL protocol and encryption overheads. 5They give an indication of the SSL protocol and encryption overheads.
6 6
7The program that generated them is an unreleased version of ssl/ssltest.c 7The program that generated them is an unreleased version of ssl/ssltest.c
@@ -11,7 +11,7 @@ interface.
11 11
12How do I read this? The protocol and cipher are reasonable obvious. 12How do I read this? The protocol and cipher are reasonable obvious.
13The next number is the number of connections being made. The next is the 13The next number is the number of connections being made. The next is the
14number of bytes exchanged bewteen the client and server side of the protocol. 14number of bytes exchanged between the client and server side of the protocol.
15This is the number of bytes that the client sends to the server, and then 15This is the number of bytes that the client sends to the server, and then
16the server sends back. Because this is all happening in one process, 16the server sends back. Because this is all happening in one process,
17the data is being encrypted, decrypted, encrypted and then decrypted again. 17the data is being encrypted, decrypted, encrypted and then decrypted again.
@@ -55,10 +55,10 @@ SSLv3 DES-CBC3-SHA 1000 x 102400 336.61s 323.82s
55 55
56What does this all mean? Well for a server, with no session-id reuse, with 56What does this all mean? Well for a server, with no session-id reuse, with
57a transfer size of 10240 bytes, using RC4-MD5 and a 512bit server key, 57a transfer size of 10240 bytes, using RC4-MD5 and a 512bit server key,
58a pentium pro 200 running linux can handle the SSLv3 protocol overheads of 58a Pentium pro 200 running Linux can handle the SSLv3 protocol overheads of
59about 49 connections a second. Reality will be quite different :-). 59about 49 connections a second. Reality will be quite different :-).
60 60
61Remeber the first number is 1000 full ssl handshakes, the second is 61Remember the first number is 1000 full ssl handshakes, the second is
621 full and 999 with session-id reuse. The RSA overheads for each exchange 621 full and 999 with session-id reuse. The RSA overheads for each exchange
63would be one public and one private operation, but the protocol/MAC/cipher 63would be one public and one private operation, but the protocol/MAC/cipher
64cost would be quite similar in both the client and server. 64cost would be quite similar in both the client and server.
@@ -72,21 +72,21 @@ eric (adding numbers to speculation)
72 killer in SSL. Often delays in the TCP protocol will make session-id 72 killer in SSL. Often delays in the TCP protocol will make session-id
73 reuse look slower that new sessions, but this would not be the case on 73 reuse look slower that new sessions, but this would not be the case on
74 a loaded server. 74 a loaded server.
75- The TCP round trip latencies, while slowing indervidual connections, 75- The TCP round trip latencies, while slowing individual connections,
76 would have minimal impact on throughput. 76 would have minimal impact on throughput.
77- Instead of sending one 102400 byte buffer, one 8k buffer is sent until 77- Instead of sending one 102400 byte buffer, one 8k buffer is sent until
78- the required number of bytes are processed. 78- the required number of bytes are processed.
79- The SSLv3 connections were actually SSLv2 compatable SSLv3 headers. 79- The SSLv3 connections were actually SSLv2 compatible SSLv3 headers.
80- A 512bit server key was being used except where noted. 80- A 512bit server key was being used except where noted.
81- No server key verification was being performed on the client side of the 81- No server key verification was being performed on the client side of the
82 protocol. This would slow things down very little. 82 protocol. This would slow things down very little.
83- The library being used is SSLeay 0.8.x. 83- The library being used is SSLeay 0.8.x.
84- The normal mesauring system was commands of the form 84- The normal measuring system was commands of the form
85 time ./ssltest -num 1000 -bytes 102400 -cipher DES-CBC-SHA -reuse 85 time ./ssltest -num 1000 -bytes 102400 -cipher DES-CBC-SHA -reuse
86 This modified version of ssltest should be in the next public release of 86 This modified version of ssltest should be in the next public release of
87 SSLeay. 87 SSLeay.
88 88
89The general cipher performace number for this platform are 89The general cipher performance number for this platform are
90 90
91SSLeay 0.8.2a 04-Sep-1997 91SSLeay 0.8.2a 04-Sep-1997
92built on Fri Sep 5 17:37:05 EST 1997 92built on Fri Sep 5 17:37:05 EST 1997
diff --git a/src/lib/libssl/src/test/tpkcs7.com b/src/lib/libssl/src/test/tpkcs7.com
index 047834fba4..e107cc141a 100644
--- a/src/lib/libssl/src/test/tpkcs7.com
+++ b/src/lib/libssl/src/test/tpkcs7.com
@@ -1,7 +1,9 @@
1$! TPKCS7.COM -- Tests pkcs7 keys 1$! TPKCS7.COM -- Tests pkcs7 keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl pkcs7 9$ cmd := mcr 'exe_dir'openssl pkcs7
diff --git a/src/lib/libssl/src/test/tpkcs7d.com b/src/lib/libssl/src/test/tpkcs7d.com
index 193bb72137..5ff653ccee 100644
--- a/src/lib/libssl/src/test/tpkcs7d.com
+++ b/src/lib/libssl/src/test/tpkcs7d.com
@@ -1,7 +1,9 @@
1$! TPKCS7.COM -- Tests pkcs7 keys 1$! TPKCS7.COM -- Tests pkcs7 keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl pkcs7 9$ cmd := mcr 'exe_dir'openssl pkcs7
diff --git a/src/lib/libssl/src/test/treq.com b/src/lib/libssl/src/test/treq.com
index 5524e485ba..d2594be6a7 100644
--- a/src/lib/libssl/src/test/treq.com
+++ b/src/lib/libssl/src/test/treq.com
@@ -1,7 +1,9 @@
1$! TREQ.COM -- Tests req keys 1$! TREQ.COM -- Tests req keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl req -config [-.apps]openssl-vms.cnf 9$ cmd := mcr 'exe_dir'openssl req -config [-.apps]openssl-vms.cnf
diff --git a/src/lib/libssl/src/test/trsa.com b/src/lib/libssl/src/test/trsa.com
index 6dbe59ef64..d3a8a605b7 100644
--- a/src/lib/libssl/src/test/trsa.com
+++ b/src/lib/libssl/src/test/trsa.com
@@ -1,7 +1,9 @@
1$! TRSA.COM -- Tests rsa keys 1$! TRSA.COM -- Tests rsa keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ set noon 9$ set noon
diff --git a/src/lib/libssl/src/test/tsid.com b/src/lib/libssl/src/test/tsid.com
index abd1d4d737..267ace1135 100644
--- a/src/lib/libssl/src/test/tsid.com
+++ b/src/lib/libssl/src/test/tsid.com
@@ -1,7 +1,9 @@
1$! TSID.COM -- Tests sid keys 1$! TSID.COM -- Tests sid keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl sess_id 9$ cmd := mcr 'exe_dir'openssl sess_id
diff --git a/src/lib/libssl/src/test/tverify.com b/src/lib/libssl/src/test/tverify.com
index 021d701d79..01431f4aac 100644
--- a/src/lib/libssl/src/test/tverify.com
+++ b/src/lib/libssl/src/test/tverify.com
@@ -1,29 +1,63 @@
1$! TVERIFY.COM 1$! TVERIFY.COM
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
7$!
8$ line_max = 255 ! Could be longer on modern non-VAX.
9$ temp_file_name = "certs_"+ f$getjpi( "", "PID")+ ".tmp"
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 10$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 11$ cmd = "mcr ''exe_dir'openssl verify ""-CAfile"" ''temp_file_name'"
7$ copy/concatenate [-.certs]*.pem certs.tmp 12$ cmd_len = f$length( cmd)
8$ 13$ pems = "[-.certs...]*.pem"
14$!
15$! Concatenate all the certificate files.
16$!
17$ copy /concatenate 'pems' 'temp_file_name'
18$!
19$! Loop through all the certificate files.
20$!
21$ args = ""
9$ old_f := 22$ old_f :=
10$ loop_certs: 23$ loop_file:
11$ verify := NO 24$ f = f$search( pems)
12$ more := YES 25$ if ((f .nes. "") .and. (f .nes. old_f))
13$ certs := 26$ then
14$ loop_certs2: 27$ old_f = f
15$ f = f$search("[-.certs]*.pem") 28$!
16$ if f .nes. "" .and. f .nes. old_f 29$! If this file name would over-extend the command line, then
30$! run the command now.
31$!
32$ if (cmd_len+ f$length( args)+ 1+ f$length( f) .gt. line_max)
33$ then
34$ if (args .eqs. "") then goto disaster
35$ 'cmd''args'
36$ args = ""
37$ endif
38$! Add the next file to the argument list.
39$ args = args+ " "+ f
40$ else
41$! No more files in the list
42$ goto loop_file_end
43$ endif
44$ goto loop_file
45$ loop_file_end:
46$!
47$! Run the command for any left-over arguments.
48$!
49$ if (args .nes. "")
17$ then 50$ then
18$ certs = certs + " [-.certs]" + f$parse(f,,,"NAME") + ".pem" 51$ 'cmd''args'
19$ verify := YES
20$ if f$length(certs) .lt. 180 then goto loop_certs2
21$ else
22$ more := NO
23$ endif 52$ endif
24$ certs = certs - " " 53$!
25$ 54$! Delete the temporary file.
26$ if verify then mcr 'exe_dir'openssl verify "-CAfile" certs.tmp 'certs' 55$!
27$ if more then goto loop_certs 56$ if (f$search( "''temp_file_name';*") .nes. "") then -
28$ 57 delete 'temp_file_name';*
29$ delete certs.tmp;* 58$!
59$ exit
60$!
61$ disaster:
62$ write sys$output " Command line too long. Doomed."
63$!
diff --git a/src/lib/libssl/src/test/tx509.com b/src/lib/libssl/src/test/tx509.com
index 7b2592f773..399eb01490 100644
--- a/src/lib/libssl/src/test/tx509.com
+++ b/src/lib/libssl/src/test/tx509.com
@@ -1,7 +1,9 @@
1$! TX509.COM -- Tests x509 certificates 1$! TX509.COM -- Tests x509 certificates
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl x509 9$ cmd := mcr 'exe_dir'openssl x509
diff --git a/src/lib/libssl/src/times/x86/des3s.cpp b/src/lib/libssl/src/times/x86/des3s.cpp
index 02d527c057..cd2b1126f1 100644
--- a/src/lib/libssl/src/times/x86/des3s.cpp
+++ b/src/lib/libssl/src/times/x86/des3s.cpp
@@ -60,7 +60,7 @@ void main(int argc,char *argv[])
60 des_encrypt3(&data[0],key1,key2,key3); 60 des_encrypt3(&data[0],key1,key2,key3);
61 } 61 }
62 62
63 printf("des %d %d (%d)\n", 63 printf("des3 %d %d (%d)\n",
64 e1-s1,e2-s2,((e2-s2)-(e1-s1))); 64 e1-s1,e2-s2,((e2-s2)-(e1-s1)));
65 } 65 }
66 } 66 }
diff --git a/src/lib/libssl/src/tools/Makefile b/src/lib/libssl/src/tools/Makefile
index 4ca835c4af..bb6fb71f3e 100644
--- a/src/lib/libssl/src/tools/Makefile
+++ b/src/lib/libssl/src/tools/Makefile
@@ -49,6 +49,7 @@ depend:
49dclean: 49dclean:
50 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new 50 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
51 mv -f Makefile.new $(MAKEFILE) 51 mv -f Makefile.new $(MAKEFILE)
52 rm -f c_rehash
52 53
53clean: 54clean:
54 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff 55 rm -f *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff
diff --git a/src/lib/libssl/src/tools/c_rehash b/src/lib/libssl/src/tools/c_rehash
index e614fb5466..6a20011a4c 100644
--- a/src/lib/libssl/src/tools/c_rehash
+++ b/src/lib/libssl/src/tools/c_rehash
@@ -7,6 +7,7 @@
7my $openssl; 7my $openssl;
8 8
9my $dir = "/usr/local/ssl"; 9my $dir = "/usr/local/ssl";
10my $prefix = "/usr/local/ssl";
10 11
11if(defined $ENV{OPENSSL}) { 12if(defined $ENV{OPENSSL}) {
12 $openssl = $ENV{OPENSSL}; 13 $openssl = $ENV{OPENSSL};
@@ -15,13 +16,23 @@ if(defined $ENV{OPENSSL}) {
15 $ENV{OPENSSL} = $openssl; 16 $ENV{OPENSSL} = $openssl;
16} 17}
17 18
18$ENV{PATH} .= ":$dir/bin"; 19my $pwd;
20eval "require Cwd";
21if (defined(&Cwd::getcwd)) {
22 $pwd=Cwd::getcwd();
23} else {
24 $pwd=`pwd`; chomp($pwd);
25}
26my $path_delim = ($pwd =~ /^[a-z]\:/i) ? ';' : ':'; # DOS/Win32 or Unix delimiter?
27
28$ENV{PATH} = "$prefix/bin" . ($ENV{PATH} ? $path_delim . $ENV{PATH} : ""); # prefix our path
19 29
20if(! -x $openssl) { 30if(! -x $openssl) {
21 my $found = 0; 31 my $found = 0;
22 foreach (split /:/, $ENV{PATH}) { 32 foreach (split /$path_delim/, $ENV{PATH}) {
23 if(-x "$_/$openssl") { 33 if(-x "$_/$openssl") {
24 $found = 1; 34 $found = 1;
35 $openssl = "$_/$openssl";
25 last; 36 last;
26 } 37 }
27 } 38 }
@@ -34,11 +45,16 @@ if(! -x $openssl) {
34if(@ARGV) { 45if(@ARGV) {
35 @dirlist = @ARGV; 46 @dirlist = @ARGV;
36} elsif($ENV{SSL_CERT_DIR}) { 47} elsif($ENV{SSL_CERT_DIR}) {
37 @dirlist = split /:/, $ENV{SSL_CERT_DIR}; 48 @dirlist = split /$path_delim/, $ENV{SSL_CERT_DIR};
38} else { 49} else {
39 $dirlist[0] = "$dir/certs"; 50 $dirlist[0] = "$dir/certs";
40} 51}
41 52
53if (-d $dirlist[0]) {
54 chdir $dirlist[0];
55 $openssl="$pwd/$openssl" if (!-x $openssl);
56 chdir $pwd;
57}
42 58
43foreach (@dirlist) { 59foreach (@dirlist) {
44 if(-d $_ and -w $_) { 60 if(-d $_ and -w $_) {
@@ -101,7 +117,7 @@ sub check_file {
101sub link_hash_cert { 117sub link_hash_cert {
102 my $fname = $_[0]; 118 my $fname = $_[0];
103 $fname =~ s/'/'\\''/g; 119 $fname =~ s/'/'\\''/g;
104 my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in '$fname'`; 120 my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in "$fname"`;
105 chomp $hash; 121 chomp $hash;
106 chomp $fprint; 122 chomp $fprint;
107 $fprint =~ s/^.*=//; 123 $fprint =~ s/^.*=//;
@@ -122,7 +138,11 @@ sub link_hash_cert {
122 if ($symlink_exists) { 138 if ($symlink_exists) {
123 symlink $fname, $hash; 139 symlink $fname, $hash;
124 } else { 140 } else {
125 system ("cp", $fname, $hash); 141 open IN,"<$fname" or die "can't open $fname for read";
142 open OUT,">$hash" or die "can't open $hash for write";
143 print OUT <IN>; # does the job for small text files
144 close OUT;
145 close IN;
126 } 146 }
127 $hashlist{$hash} = $fprint; 147 $hashlist{$hash} = $fprint;
128} 148}
diff --git a/src/lib/libssl/src/tools/c_rehash.in b/src/lib/libssl/src/tools/c_rehash.in
index 4497cbd9f1..bfc4a69ed4 100644
--- a/src/lib/libssl/src/tools/c_rehash.in
+++ b/src/lib/libssl/src/tools/c_rehash.in
@@ -7,6 +7,7 @@
7my $openssl; 7my $openssl;
8 8
9my $dir; 9my $dir;
10my $prefix;
10 11
11if(defined $ENV{OPENSSL}) { 12if(defined $ENV{OPENSSL}) {
12 $openssl = $ENV{OPENSSL}; 13 $openssl = $ENV{OPENSSL};
@@ -15,13 +16,23 @@ if(defined $ENV{OPENSSL}) {
15 $ENV{OPENSSL} = $openssl; 16 $ENV{OPENSSL} = $openssl;
16} 17}
17 18
18$ENV{PATH} .= ":$dir/bin"; 19my $pwd;
20eval "require Cwd";
21if (defined(&Cwd::getcwd)) {
22 $pwd=Cwd::getcwd();
23} else {
24 $pwd=`pwd`; chomp($pwd);
25}
26my $path_delim = ($pwd =~ /^[a-z]\:/i) ? ';' : ':'; # DOS/Win32 or Unix delimiter?
27
28$ENV{PATH} = "$prefix/bin" . ($ENV{PATH} ? $path_delim . $ENV{PATH} : ""); # prefix our path
19 29
20if(! -x $openssl) { 30if(! -x $openssl) {
21 my $found = 0; 31 my $found = 0;
22 foreach (split /:/, $ENV{PATH}) { 32 foreach (split /$path_delim/, $ENV{PATH}) {
23 if(-x "$_/$openssl") { 33 if(-x "$_/$openssl") {
24 $found = 1; 34 $found = 1;
35 $openssl = "$_/$openssl";
25 last; 36 last;
26 } 37 }
27 } 38 }
@@ -34,11 +45,16 @@ if(! -x $openssl) {
34if(@ARGV) { 45if(@ARGV) {
35 @dirlist = @ARGV; 46 @dirlist = @ARGV;
36} elsif($ENV{SSL_CERT_DIR}) { 47} elsif($ENV{SSL_CERT_DIR}) {
37 @dirlist = split /:/, $ENV{SSL_CERT_DIR}; 48 @dirlist = split /$path_delim/, $ENV{SSL_CERT_DIR};
38} else { 49} else {
39 $dirlist[0] = "$dir/certs"; 50 $dirlist[0] = "$dir/certs";
40} 51}
41 52
53if (-d $dirlist[0]) {
54 chdir $dirlist[0];
55 $openssl="$pwd/$openssl" if (!-x $openssl);
56 chdir $pwd;
57}
42 58
43foreach (@dirlist) { 59foreach (@dirlist) {
44 if(-d $_ and -w $_) { 60 if(-d $_ and -w $_) {
@@ -101,7 +117,7 @@ sub check_file {
101sub link_hash_cert { 117sub link_hash_cert {
102 my $fname = $_[0]; 118 my $fname = $_[0];
103 $fname =~ s/'/'\\''/g; 119 $fname =~ s/'/'\\''/g;
104 my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in '$fname'`; 120 my ($hash, $fprint) = `"$openssl" x509 -hash -fingerprint -noout -in "$fname"`;
105 chomp $hash; 121 chomp $hash;
106 chomp $fprint; 122 chomp $fprint;
107 $fprint =~ s/^.*=//; 123 $fprint =~ s/^.*=//;
@@ -122,7 +138,11 @@ sub link_hash_cert {
122 if ($symlink_exists) { 138 if ($symlink_exists) {
123 symlink $fname, $hash; 139 symlink $fname, $hash;
124 } else { 140 } else {
125 system ("cp", $fname, $hash); 141 open IN,"<$fname" or die "can't open $fname for read";
142 open OUT,">$hash" or die "can't open $hash for write";
143 print OUT <IN>; # does the job for small text files
144 close OUT;
145 close IN;
126 } 146 }
127 $hashlist{$hash} = $fprint; 147 $hashlist{$hash} = $fprint;
128} 148}
diff --git a/src/lib/libssl/src/util/ck_errf.pl b/src/lib/libssl/src/util/ck_errf.pl
index 344b422c34..f13af5c50b 100644
--- a/src/lib/libssl/src/util/ck_errf.pl
+++ b/src/lib/libssl/src/util/ck_errf.pl
@@ -7,8 +7,16 @@
7# perl util/ck_errf.pl */*.c */*/*.c 7# perl util/ck_errf.pl */*.c */*/*.c
8# 8#
9 9
10my $err_strict = 0;
11my $bad = 0;
12
10foreach $file (@ARGV) 13foreach $file (@ARGV)
11 { 14 {
15 if ($file eq "-strict")
16 {
17 $err_strict = 1;
18 next;
19 }
12 open(IN,"<$file") || die "unable to open $file\n"; 20 open(IN,"<$file") || die "unable to open $file\n";
13 $func=""; 21 $func="";
14 while (<IN>) 22 while (<IN>)
@@ -20,13 +28,13 @@ foreach $file (@ARGV)
20 $func = $1; 28 $func = $1;
21 $func =~ tr/A-Z/a-z/; 29 $func =~ tr/A-Z/a-z/;
22 } 30 }
23 if (/([A-Z0-9]+)err\(([^,]+)/) 31 if (/([A-Z0-9]+)err\(([^,]+)/ && ! /ckerr_ignore/)
24 { 32 {
25 $errlib=$1; 33 $errlib=$1;
26 $n=$2; 34 $n=$2;
27 35
28 if ($func eq "") 36 if ($func eq "")
29 { print "$file:$.:???:$n\n"; next; } 37 { print "$file:$.:???:$n\n"; $bad = 1; next; }
30 38
31 if ($n !~ /([^_]+)_F_(.+)$/) 39 if ($n !~ /([^_]+)_F_(.+)$/)
32 { 40 {
@@ -37,14 +45,20 @@ foreach $file (@ARGV)
37 $n=$2; 45 $n=$2;
38 46
39 if ($lib ne $errlib) 47 if ($lib ne $errlib)
40 { print "$file:$.:$func:$n [${errlib}err]\n"; next; } 48 { print "$file:$.:$func:$n [${errlib}err]\n"; $bad = 1; next; }
41 49
42 $n =~ tr/A-Z/a-z/; 50 $n =~ tr/A-Z/a-z/;
43 if (($n ne $func) && ($errlib ne "SYS")) 51 if (($n ne $func) && ($errlib ne "SYS"))
44 { print "$file:$.:$func:$n\n"; next; } 52 { print "$file:$.:$func:$n\n"; $bad = 1; next; }
45 # print "$func:$1\n"; 53 # print "$func:$1\n";
46 } 54 }
47 } 55 }
48 close(IN); 56 close(IN);
49 } 57 }
50 58
59if ($bad && $err_strict)
60 {
61 print STDERR "FATAL: error discrepancy\n";
62 exit 1;
63 }
64
diff --git a/src/lib/libssl/src/util/clean-depend.pl b/src/lib/libssl/src/util/clean-depend.pl
index 2b2bdb4048..d3525b0ed0 100644
--- a/src/lib/libssl/src/util/clean-depend.pl
+++ b/src/lib/libssl/src/util/clean-depend.pl
@@ -42,6 +42,7 @@ foreach $file (sort keys %files) {
42 my @deps = map { $_ =~ s/^\.\///; $_ } @{$files{$file}}; 42 my @deps = map { $_ =~ s/^\.\///; $_ } @{$files{$file}};
43 43
44 foreach $dep (sort @deps) { 44 foreach $dep (sort @deps) {
45 $dep=~s/^\.\///;
45 next if $prevdep eq $dep; # to exterminate duplicates... 46 next if $prevdep eq $dep; # to exterminate duplicates...
46 $prevdep = $dep; 47 $prevdep = $dep;
47 $len=0 if $len+length($dep)+1 >= 80; 48 $len=0 if $len+length($dep)+1 >= 80;
diff --git a/src/lib/libssl/src/util/cygwin.sh b/src/lib/libssl/src/util/cygwin.sh
index 89d1dda95b..a4f2e740b4 100644
--- a/src/lib/libssl/src/util/cygwin.sh
+++ b/src/lib/libssl/src/util/cygwin.sh
@@ -7,7 +7,7 @@
7# Uncomment when debugging 7# Uncomment when debugging
8#set -x 8#set -x
9 9
10CONFIG_OPTIONS="--prefix=/usr shared no-idea no-rc5 no-mdc2" 10CONFIG_OPTIONS="--prefix=/usr shared zlib no-idea no-rc5"
11INSTALL_PREFIX=/tmp/install 11INSTALL_PREFIX=/tmp/install
12 12
13VERSION= 13VERSION=
@@ -66,7 +66,7 @@ function create_cygwin_readme()
66 66
67 ./config ${CONFIG_OPTIONS} 67 ./config ${CONFIG_OPTIONS}
68 68
69 The IDEA, RC5 and MDC2 algorithms are disabled due to patent and/or 69 The IDEA and RC5 algorithms are disabled due to patent and/or
70 licensing issues. 70 licensing issues.
71 EOF 71 EOF
72} 72}
diff --git a/src/lib/libssl/src/util/deltree.com b/src/lib/libssl/src/util/deltree.com
new file mode 100644
index 0000000000..9f36b1a5e9
--- /dev/null
+++ b/src/lib/libssl/src/util/deltree.com
@@ -0,0 +1,34 @@
1$! DELTREE.COM
2$
3$ call deltree 'p1'
4$ exit $status
5$
6$ deltree: subroutine ! P1 is a name of a directory
7$ on control_y then goto dt_STOP
8$ on warning then goto dt_exit
9$ _dt_def = f$trnlnm("SYS$DISK")+f$directory()
10$ if f$parse(p1) .eqs. "" then exit
11$ set default 'f$parse(p1,,,"DEVICE")''f$parse(p1,,,"DIRECTORY")'
12$ p1 = f$parse(p1,,,"NAME") + f$parse(p1,,,"TYPE")
13$ _fp = f$parse(".DIR",p1)
14$ dt_loop:
15$ _f = f$search(_fp)
16$ if _f .eqs. "" then goto dt_loopend
17$ call deltree [.'f$parse(_f,,,"NAME")']*.*
18$ goto dt_loop
19$ dt_loopend:
20$ _fp = f$parse(p1,".;*")
21$ if f$search(_fp) .eqs. "" then goto dt_exit
22$ set noon
23$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) '_fp'
24$ set on
25$ delete/nolog '_fp'
26$ dt_exit:
27$ set default '_dt_def'
28$ goto dt_end
29$ dt_STOP:
30$ set default '_dt_def'
31$ stop/id=""
32$ exit
33$ dt_end:
34$ endsubroutine
diff --git a/src/lib/libssl/src/util/domd b/src/lib/libssl/src/util/domd
index 560ebeaf82..bab48cb7a2 100644
--- a/src/lib/libssl/src/util/domd
+++ b/src/lib/libssl/src/util/domd
@@ -14,7 +14,7 @@ if [ "$MAKEDEPEND" = "" ]; then MAKEDEPEND=makedepend; fi
14cp Makefile Makefile.save 14cp Makefile Makefile.save
15# fake the presence of Kerberos 15# fake the presence of Kerberos
16touch $TOP/krb5.h 16touch $TOP/krb5.h
17if [ "$MAKEDEPEND" = "gcc" ]; then 17if expr "$MAKEDEPEND" : '.*gcc$' > /dev/null; then
18 args="" 18 args=""
19 while [ $# -gt 0 ]; do 19 while [ $# -gt 0 ]; do
20 if [ "$1" != "--" ]; then args="$args $1"; fi 20 if [ "$1" != "--" ]; then args="$args $1"; fi
@@ -22,13 +22,17 @@ if [ "$MAKEDEPEND" = "gcc" ]; then
22 done 22 done
23 sed -e '/^# DO NOT DELETE.*/,$d' < Makefile > Makefile.tmp 23 sed -e '/^# DO NOT DELETE.*/,$d' < Makefile > Makefile.tmp
24 echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' >> Makefile.tmp 24 echo '# DO NOT DELETE THIS LINE -- make depend depends on it.' >> Makefile.tmp
25 ${CC:-gcc} -D OPENSSL_DOING_MAKEDEPEND -M $args >> Makefile.tmp 25 ${MAKEDEPEND} -Werror -D OPENSSL_DOING_MAKEDEPEND -M $args >> Makefile.tmp || exit 1
26 ${PERL} $TOP/util/clean-depend.pl < Makefile.tmp > Makefile.new 26 ${PERL} $TOP/util/clean-depend.pl < Makefile.tmp > Makefile.new
27 RC=$?
27 rm -f Makefile.tmp 28 rm -f Makefile.tmp
28else 29else
29 ${MAKEDEPEND} -D OPENSSL_DOING_MAKEDEPEND $@ 30 ${MAKEDEPEND} -D OPENSSL_DOING_MAKEDEPEND $@ && \
30 ${PERL} $TOP/util/clean-depend.pl < Makefile > Makefile.new 31 ${PERL} $TOP/util/clean-depend.pl < Makefile > Makefile.new
32 RC=$?
31fi 33fi
32mv Makefile.new Makefile 34mv Makefile.new Makefile
33# unfake the presence of Kerberos 35# unfake the presence of Kerberos
34rm $TOP/krb5.h 36rm $TOP/krb5.h
37
38exit $RC
diff --git a/src/lib/libssl/src/util/libeay.num b/src/lib/libssl/src/util/libeay.num
index 74eb337227..6f3067ae2b 100644
--- a/src/lib/libssl/src/util/libeay.num
+++ b/src/lib/libssl/src/util/libeay.num
@@ -1,9 +1,9 @@
1SSLeay 1 EXIST::FUNCTION: 1SSLeay 1 EXIST::FUNCTION:
2SSLeay_version 2 EXIST::FUNCTION: 2SSLeay_version 2 EXIST::FUNCTION:
3ASN1_BIT_STRING_asn1_meth 3 EXIST::FUNCTION: 3ASN1_BIT_STRING_asn1_meth 3 NOEXIST::FUNCTION:
4ASN1_HEADER_free 4 EXIST::FUNCTION: 4ASN1_HEADER_free 4 NOEXIST::FUNCTION:
5ASN1_HEADER_new 5 EXIST::FUNCTION: 5ASN1_HEADER_new 5 NOEXIST::FUNCTION:
6ASN1_IA5STRING_asn1_meth 6 EXIST::FUNCTION: 6ASN1_IA5STRING_asn1_meth 6 NOEXIST::FUNCTION:
7ASN1_INTEGER_get 7 EXIST::FUNCTION: 7ASN1_INTEGER_get 7 EXIST::FUNCTION:
8ASN1_INTEGER_set 8 EXIST::FUNCTION: 8ASN1_INTEGER_set 8 EXIST::FUNCTION:
9ASN1_INTEGER_to_BN 9 EXIST::FUNCTION: 9ASN1_INTEGER_to_BN 9 EXIST::FUNCTION:
@@ -75,8 +75,8 @@ BIO_new 78 EXIST::FUNCTION:
75BIO_new_accept 79 EXIST::FUNCTION: 75BIO_new_accept 79 EXIST::FUNCTION:
76BIO_new_connect 80 EXIST::FUNCTION: 76BIO_new_connect 80 EXIST::FUNCTION:
77BIO_new_fd 81 EXIST::FUNCTION: 77BIO_new_fd 81 EXIST::FUNCTION:
78BIO_new_file 82 EXIST:!WIN16:FUNCTION:FP_API 78BIO_new_file 82 EXIST::FUNCTION:FP_API
79BIO_new_fp 83 EXIST:!WIN16:FUNCTION:FP_API 79BIO_new_fp 83 EXIST::FUNCTION:FP_API
80BIO_new_socket 84 EXIST::FUNCTION: 80BIO_new_socket 84 EXIST::FUNCTION:
81BIO_pop 85 EXIST::FUNCTION: 81BIO_pop 85 EXIST::FUNCTION:
82BIO_printf 86 EXIST::FUNCTION: 82BIO_printf 86 EXIST::FUNCTION:
@@ -86,7 +86,7 @@ BIO_read 89 EXIST::FUNCTION:
86BIO_s_accept 90 EXIST::FUNCTION: 86BIO_s_accept 90 EXIST::FUNCTION:
87BIO_s_connect 91 EXIST::FUNCTION: 87BIO_s_connect 91 EXIST::FUNCTION:
88BIO_s_fd 92 EXIST::FUNCTION: 88BIO_s_fd 92 EXIST::FUNCTION:
89BIO_s_file 93 EXIST:!WIN16:FUNCTION:FP_API 89BIO_s_file 93 EXIST::FUNCTION:FP_API
90BIO_s_mem 95 EXIST::FUNCTION: 90BIO_s_mem 95 EXIST::FUNCTION:
91BIO_s_null 96 EXIST::FUNCTION: 91BIO_s_null 96 EXIST::FUNCTION:
92BIO_s_proxy_client 97 NOEXIST::FUNCTION: 92BIO_s_proxy_client 97 NOEXIST::FUNCTION:
@@ -172,7 +172,7 @@ CRYPTO_dbg_realloc 179 EXIST::FUNCTION:
172CRYPTO_dbg_remalloc 180 NOEXIST::FUNCTION: 172CRYPTO_dbg_remalloc 180 NOEXIST::FUNCTION:
173CRYPTO_free 181 EXIST::FUNCTION: 173CRYPTO_free 181 EXIST::FUNCTION:
174CRYPTO_get_add_lock_callback 182 EXIST::FUNCTION: 174CRYPTO_get_add_lock_callback 182 EXIST::FUNCTION:
175CRYPTO_get_id_callback 183 EXIST::FUNCTION: 175CRYPTO_get_id_callback 183 EXIST::FUNCTION:DEPRECATED
176CRYPTO_get_lock_name 184 EXIST::FUNCTION: 176CRYPTO_get_lock_name 184 EXIST::FUNCTION:
177CRYPTO_get_locking_callback 185 EXIST::FUNCTION: 177CRYPTO_get_locking_callback 185 EXIST::FUNCTION:
178CRYPTO_get_mem_functions 186 EXIST::FUNCTION: 178CRYPTO_get_mem_functions 186 EXIST::FUNCTION:
@@ -185,10 +185,10 @@ CRYPTO_mem_leaks_fp 192 EXIST::FUNCTION:FP_API
185CRYPTO_realloc 193 EXIST::FUNCTION: 185CRYPTO_realloc 193 EXIST::FUNCTION:
186CRYPTO_remalloc 194 EXIST::FUNCTION: 186CRYPTO_remalloc 194 EXIST::FUNCTION:
187CRYPTO_set_add_lock_callback 195 EXIST::FUNCTION: 187CRYPTO_set_add_lock_callback 195 EXIST::FUNCTION:
188CRYPTO_set_id_callback 196 EXIST::FUNCTION: 188CRYPTO_set_id_callback 196 EXIST::FUNCTION:DEPRECATED
189CRYPTO_set_locking_callback 197 EXIST::FUNCTION: 189CRYPTO_set_locking_callback 197 EXIST::FUNCTION:
190CRYPTO_set_mem_functions 198 EXIST::FUNCTION: 190CRYPTO_set_mem_functions 198 EXIST::FUNCTION:
191CRYPTO_thread_id 199 EXIST::FUNCTION: 191CRYPTO_thread_id 199 EXIST::FUNCTION:DEPRECATED
192DH_check 200 EXIST::FUNCTION:DH 192DH_check 200 EXIST::FUNCTION:DH
193DH_compute_key 201 EXIST::FUNCTION:DH 193DH_compute_key 201 EXIST::FUNCTION:DH
194DH_free 202 EXIST::FUNCTION:DH 194DH_free 202 EXIST::FUNCTION:DH
@@ -243,7 +243,7 @@ ERR_print_errors 250 EXIST::FUNCTION:BIO
243ERR_print_errors_fp 251 EXIST::FUNCTION:FP_API 243ERR_print_errors_fp 251 EXIST::FUNCTION:FP_API
244ERR_put_error 252 EXIST::FUNCTION: 244ERR_put_error 252 EXIST::FUNCTION:
245ERR_reason_error_string 253 EXIST::FUNCTION: 245ERR_reason_error_string 253 EXIST::FUNCTION:
246ERR_remove_state 254 EXIST::FUNCTION: 246ERR_remove_state 254 EXIST::FUNCTION:DEPRECATED
247EVP_BytesToKey 255 EXIST::FUNCTION: 247EVP_BytesToKey 255 EXIST::FUNCTION:
248EVP_CIPHER_CTX_cleanup 256 EXIST::FUNCTION: 248EVP_CIPHER_CTX_cleanup 256 EXIST::FUNCTION:
249EVP_CipherFinal 257 EXIST::FUNCTION: 249EVP_CipherFinal 257 EXIST::FUNCTION:
@@ -343,7 +343,7 @@ NETSCAPE_SPKI_new 350 EXIST::FUNCTION:
343NETSCAPE_SPKI_sign 351 EXIST::FUNCTION:EVP 343NETSCAPE_SPKI_sign 351 EXIST::FUNCTION:EVP
344NETSCAPE_SPKI_verify 352 EXIST::FUNCTION:EVP 344NETSCAPE_SPKI_verify 352 EXIST::FUNCTION:EVP
345OBJ_add_object 353 EXIST::FUNCTION: 345OBJ_add_object 353 EXIST::FUNCTION:
346OBJ_bsearch 354 EXIST::FUNCTION: 346OBJ_bsearch 354 NOEXIST::FUNCTION:
347OBJ_cleanup 355 EXIST::FUNCTION: 347OBJ_cleanup 355 EXIST::FUNCTION:
348OBJ_cmp 356 EXIST::FUNCTION: 348OBJ_cmp 356 EXIST::FUNCTION:
349OBJ_create 357 EXIST::FUNCTION: 349OBJ_create 357 EXIST::FUNCTION:
@@ -356,9 +356,9 @@ OBJ_nid2sn 363 EXIST::FUNCTION:
356OBJ_obj2nid 364 EXIST::FUNCTION: 356OBJ_obj2nid 364 EXIST::FUNCTION:
357OBJ_sn2nid 365 EXIST::FUNCTION: 357OBJ_sn2nid 365 EXIST::FUNCTION:
358OBJ_txt2nid 366 EXIST::FUNCTION: 358OBJ_txt2nid 366 EXIST::FUNCTION:
359PEM_ASN1_read 367 EXIST:!WIN16:FUNCTION: 359PEM_ASN1_read 367 EXIST::FUNCTION:
360PEM_ASN1_read_bio 368 EXIST::FUNCTION:BIO 360PEM_ASN1_read_bio 368 EXIST::FUNCTION:BIO
361PEM_ASN1_write 369 EXIST:!WIN16:FUNCTION: 361PEM_ASN1_write 369 EXIST::FUNCTION:
362PEM_ASN1_write_bio 370 EXIST::FUNCTION:BIO 362PEM_ASN1_write_bio 370 EXIST::FUNCTION:BIO
363PEM_SealFinal 371 EXIST::FUNCTION:RSA 363PEM_SealFinal 371 EXIST::FUNCTION:RSA
364PEM_SealInit 372 EXIST::FUNCTION:RSA 364PEM_SealInit 372 EXIST::FUNCTION:RSA
@@ -366,14 +366,14 @@ PEM_SealUpdate 373 EXIST::FUNCTION:RSA
366PEM_SignFinal 374 EXIST::FUNCTION: 366PEM_SignFinal 374 EXIST::FUNCTION:
367PEM_SignInit 375 EXIST::FUNCTION: 367PEM_SignInit 375 EXIST::FUNCTION:
368PEM_SignUpdate 376 EXIST::FUNCTION: 368PEM_SignUpdate 376 EXIST::FUNCTION:
369PEM_X509_INFO_read 377 EXIST:!WIN16:FUNCTION: 369PEM_X509_INFO_read 377 EXIST::FUNCTION:
370PEM_X509_INFO_read_bio 378 EXIST::FUNCTION:BIO 370PEM_X509_INFO_read_bio 378 EXIST::FUNCTION:BIO
371PEM_X509_INFO_write_bio 379 EXIST::FUNCTION:BIO 371PEM_X509_INFO_write_bio 379 EXIST::FUNCTION:BIO
372PEM_dek_info 380 EXIST::FUNCTION: 372PEM_dek_info 380 EXIST::FUNCTION:
373PEM_do_header 381 EXIST::FUNCTION: 373PEM_do_header 381 EXIST::FUNCTION:
374PEM_get_EVP_CIPHER_INFO 382 EXIST::FUNCTION: 374PEM_get_EVP_CIPHER_INFO 382 EXIST::FUNCTION:
375PEM_proc_type 383 EXIST::FUNCTION: 375PEM_proc_type 383 EXIST::FUNCTION:
376PEM_read 384 EXIST:!WIN16:FUNCTION: 376PEM_read 384 EXIST::FUNCTION:
377PEM_read_DHparams 385 EXIST:!WIN16:FUNCTION:DH 377PEM_read_DHparams 385 EXIST:!WIN16:FUNCTION:DH
378PEM_read_DSAPrivateKey 386 EXIST:!WIN16:FUNCTION:DSA 378PEM_read_DSAPrivateKey 386 EXIST:!WIN16:FUNCTION:DSA
379PEM_read_DSAparams 387 EXIST:!WIN16:FUNCTION:DSA 379PEM_read_DSAparams 387 EXIST:!WIN16:FUNCTION:DSA
@@ -393,7 +393,7 @@ PEM_read_bio_RSAPrivateKey 400 EXIST::FUNCTION:RSA
393PEM_read_bio_X509 401 EXIST::FUNCTION: 393PEM_read_bio_X509 401 EXIST::FUNCTION:
394PEM_read_bio_X509_CRL 402 EXIST::FUNCTION: 394PEM_read_bio_X509_CRL 402 EXIST::FUNCTION:
395PEM_read_bio_X509_REQ 403 EXIST::FUNCTION: 395PEM_read_bio_X509_REQ 403 EXIST::FUNCTION:
396PEM_write 404 EXIST:!WIN16:FUNCTION: 396PEM_write 404 EXIST::FUNCTION:
397PEM_write_DHparams 405 EXIST:!WIN16:FUNCTION:DH 397PEM_write_DHparams 405 EXIST:!WIN16:FUNCTION:DH
398PEM_write_DSAPrivateKey 406 EXIST:!WIN16:FUNCTION:DSA 398PEM_write_DSAPrivateKey 406 EXIST:!WIN16:FUNCTION:DSA
399PEM_write_DSAparams 407 EXIST:!WIN16:FUNCTION:DSA 399PEM_write_DSAparams 407 EXIST:!WIN16:FUNCTION:DSA
@@ -469,7 +469,7 @@ RC2_set_key 476 EXIST::FUNCTION:RC2
469RC4 477 EXIST::FUNCTION:RC4 469RC4 477 EXIST::FUNCTION:RC4
470RC4_options 478 EXIST::FUNCTION:RC4 470RC4_options 478 EXIST::FUNCTION:RC4
471RC4_set_key 479 EXIST::FUNCTION:RC4 471RC4_set_key 479 EXIST::FUNCTION:RC4
472RSAPrivateKey_asn1_meth 480 EXIST::FUNCTION:RSA 472RSAPrivateKey_asn1_meth 480 NOEXIST::FUNCTION:
473RSAPrivateKey_dup 481 EXIST::FUNCTION:RSA 473RSAPrivateKey_dup 481 EXIST::FUNCTION:RSA
474RSAPublicKey_dup 482 EXIST::FUNCTION:RSA 474RSAPublicKey_dup 482 EXIST::FUNCTION:RSA
475RSA_PKCS1_SSLeay 483 EXIST::FUNCTION:RSA 475RSA_PKCS1_SSLeay 483 EXIST::FUNCTION:RSA
@@ -624,7 +624,7 @@ X509_STORE_set_default_paths 630 EXIST::FUNCTION:STDIO
624X509_VAL_free 631 EXIST::FUNCTION: 624X509_VAL_free 631 EXIST::FUNCTION:
625X509_VAL_new 632 EXIST::FUNCTION: 625X509_VAL_new 632 EXIST::FUNCTION:
626X509_add_ext 633 EXIST::FUNCTION: 626X509_add_ext 633 EXIST::FUNCTION:
627X509_asn1_meth 634 EXIST::FUNCTION: 627X509_asn1_meth 634 NOEXIST::FUNCTION:
628X509_certificate_type 635 EXIST::FUNCTION: 628X509_certificate_type 635 EXIST::FUNCTION:
629X509_check_private_key 636 EXIST::FUNCTION: 629X509_check_private_key 636 EXIST::FUNCTION:
630X509_cmp_current_time 637 EXIST::FUNCTION: 630X509_cmp_current_time 637 EXIST::FUNCTION:
@@ -704,7 +704,7 @@ bn_sqr_words 710 EXIST::FUNCTION:
704_ossl_old_crypt 711 EXIST:!NeXT,!PERL5:FUNCTION:DES 704_ossl_old_crypt 711 EXIST:!NeXT,!PERL5:FUNCTION:DES
705d2i_ASN1_BIT_STRING 712 EXIST::FUNCTION: 705d2i_ASN1_BIT_STRING 712 EXIST::FUNCTION:
706d2i_ASN1_BOOLEAN 713 EXIST::FUNCTION: 706d2i_ASN1_BOOLEAN 713 EXIST::FUNCTION:
707d2i_ASN1_HEADER 714 EXIST::FUNCTION: 707d2i_ASN1_HEADER 714 NOEXIST::FUNCTION:
708d2i_ASN1_IA5STRING 715 EXIST::FUNCTION: 708d2i_ASN1_IA5STRING 715 EXIST::FUNCTION:
709d2i_ASN1_INTEGER 716 EXIST::FUNCTION: 709d2i_ASN1_INTEGER 716 EXIST::FUNCTION:
710d2i_ASN1_OBJECT 717 EXIST::FUNCTION: 710d2i_ASN1_OBJECT 717 EXIST::FUNCTION:
@@ -809,7 +809,7 @@ i2a_ASN1_OBJECT 816 EXIST::FUNCTION:BIO
809i2a_ASN1_STRING 817 EXIST::FUNCTION:BIO 809i2a_ASN1_STRING 817 EXIST::FUNCTION:BIO
810i2d_ASN1_BIT_STRING 818 EXIST::FUNCTION: 810i2d_ASN1_BIT_STRING 818 EXIST::FUNCTION:
811i2d_ASN1_BOOLEAN 819 EXIST::FUNCTION: 811i2d_ASN1_BOOLEAN 819 EXIST::FUNCTION:
812i2d_ASN1_HEADER 820 EXIST::FUNCTION: 812i2d_ASN1_HEADER 820 NOEXIST::FUNCTION:
813i2d_ASN1_IA5STRING 821 EXIST::FUNCTION: 813i2d_ASN1_IA5STRING 821 EXIST::FUNCTION:
814i2d_ASN1_INTEGER 822 EXIST::FUNCTION: 814i2d_ASN1_INTEGER 822 EXIST::FUNCTION:
815i2d_ASN1_OBJECT 823 EXIST::FUNCTION: 815i2d_ASN1_OBJECT 823 EXIST::FUNCTION:
@@ -950,9 +950,9 @@ ERR_get_next_error_library 966 EXIST::FUNCTION:
950EVP_PKEY_cmp_parameters 967 EXIST::FUNCTION: 950EVP_PKEY_cmp_parameters 967 EXIST::FUNCTION:
951HMAC_cleanup 968 NOEXIST::FUNCTION: 951HMAC_cleanup 968 NOEXIST::FUNCTION:
952BIO_ptr_ctrl 969 EXIST::FUNCTION: 952BIO_ptr_ctrl 969 EXIST::FUNCTION:
953BIO_new_file_internal 970 EXIST:WIN16:FUNCTION:FP_API 953BIO_new_file_internal 970 NOEXIST::FUNCTION:
954BIO_new_fp_internal 971 EXIST:WIN16:FUNCTION:FP_API 954BIO_new_fp_internal 971 NOEXIST::FUNCTION:
955BIO_s_file_internal 972 EXIST:WIN16:FUNCTION:FP_API 955BIO_s_file_internal 972 NOEXIST::FUNCTION:
956BN_BLINDING_convert 973 EXIST::FUNCTION: 956BN_BLINDING_convert 973 EXIST::FUNCTION:
957BN_BLINDING_invert 974 EXIST::FUNCTION: 957BN_BLINDING_invert 974 EXIST::FUNCTION:
958BN_BLINDING_update 975 EXIST::FUNCTION: 958BN_BLINDING_update 975 EXIST::FUNCTION:
@@ -984,8 +984,8 @@ BIO_ghbn_ctrl 1003 NOEXIST::FUNCTION:
984CRYPTO_free_ex_data 1004 EXIST::FUNCTION: 984CRYPTO_free_ex_data 1004 EXIST::FUNCTION:
985CRYPTO_get_ex_data 1005 EXIST::FUNCTION: 985CRYPTO_get_ex_data 1005 EXIST::FUNCTION:
986CRYPTO_set_ex_data 1007 EXIST::FUNCTION: 986CRYPTO_set_ex_data 1007 EXIST::FUNCTION:
987ERR_load_CRYPTO_strings 1009 EXIST:!OS2,!VMS,!WIN16:FUNCTION: 987ERR_load_CRYPTO_strings 1009 EXIST:!OS2,!VMS:FUNCTION:
988ERR_load_CRYPTOlib_strings 1009 EXIST:OS2,VMS,WIN16:FUNCTION: 988ERR_load_CRYPTOlib_strings 1009 EXIST:OS2,VMS:FUNCTION:
989EVP_PKEY_bits 1010 EXIST::FUNCTION: 989EVP_PKEY_bits 1010 EXIST::FUNCTION:
990MD5_Transform 1011 EXIST::FUNCTION:MD5 990MD5_Transform 1011 EXIST::FUNCTION:MD5
991SHA1_Transform 1012 EXIST::FUNCTION:SHA,SHA1 991SHA1_Transform 1012 EXIST::FUNCTION:SHA,SHA1
@@ -1117,11 +1117,11 @@ COMP_compress_block 1144 EXIST::FUNCTION:
1117COMP_expand_block 1145 EXIST::FUNCTION: 1117COMP_expand_block 1145 EXIST::FUNCTION:
1118COMP_rle 1146 EXIST::FUNCTION: 1118COMP_rle 1146 EXIST::FUNCTION:
1119COMP_zlib 1147 EXIST::FUNCTION: 1119COMP_zlib 1147 EXIST::FUNCTION:
1120ms_time_diff 1148 EXIST::FUNCTION: 1120ms_time_diff 1148 NOEXIST::FUNCTION:
1121ms_time_new 1149 EXIST::FUNCTION: 1121ms_time_new 1149 NOEXIST::FUNCTION:
1122ms_time_free 1150 EXIST::FUNCTION: 1122ms_time_free 1150 NOEXIST::FUNCTION:
1123ms_time_cmp 1151 EXIST::FUNCTION: 1123ms_time_cmp 1151 NOEXIST::FUNCTION:
1124ms_time_get 1152 EXIST::FUNCTION: 1124ms_time_get 1152 NOEXIST::FUNCTION:
1125PKCS7_set_attributes 1153 EXIST::FUNCTION: 1125PKCS7_set_attributes 1153 EXIST::FUNCTION:
1126PKCS7_set_signed_attributes 1154 EXIST::FUNCTION: 1126PKCS7_set_signed_attributes 1154 EXIST::FUNCTION:
1127X509_ATTRIBUTE_create 1155 EXIST::FUNCTION: 1127X509_ATTRIBUTE_create 1155 EXIST::FUNCTION:
@@ -1255,8 +1255,8 @@ PKCS12_gen_mac 1278 EXIST::FUNCTION:
1255PKCS12_verify_mac 1279 EXIST::FUNCTION: 1255PKCS12_verify_mac 1279 EXIST::FUNCTION:
1256PKCS12_set_mac 1280 EXIST::FUNCTION: 1256PKCS12_set_mac 1280 EXIST::FUNCTION:
1257PKCS12_setup_mac 1281 EXIST::FUNCTION: 1257PKCS12_setup_mac 1281 EXIST::FUNCTION:
1258asc2uni 1282 EXIST::FUNCTION: 1258OPENSSL_asc2uni 1282 EXIST::FUNCTION:
1259uni2asc 1283 EXIST::FUNCTION: 1259OPENSSL_uni2asc 1283 EXIST::FUNCTION:
1260i2d_PKCS12_BAGS 1284 EXIST::FUNCTION: 1260i2d_PKCS12_BAGS 1284 EXIST::FUNCTION:
1261PKCS12_BAGS_new 1285 EXIST::FUNCTION: 1261PKCS12_BAGS_new 1285 EXIST::FUNCTION:
1262d2i_PKCS12_BAGS 1286 EXIST::FUNCTION: 1262d2i_PKCS12_BAGS 1286 EXIST::FUNCTION:
@@ -2081,7 +2081,7 @@ NETSCAPE_SPKAC_it 2641 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIA
2081NETSCAPE_SPKAC_it 2641 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2081NETSCAPE_SPKAC_it 2641 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2082X509_REVOKED_it 2642 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2082X509_REVOKED_it 2642 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2083X509_REVOKED_it 2642 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2083X509_REVOKED_it 2642 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2084ASN1_STRING_encode 2643 EXIST::FUNCTION: 2084ASN1_STRING_encode 2643 NOEXIST::FUNCTION:
2085EVP_aes_128_ecb 2644 EXIST::FUNCTION:AES 2085EVP_aes_128_ecb 2644 EXIST::FUNCTION:AES
2086KRB5_AUTHENT_free 2645 EXIST::FUNCTION: 2086KRB5_AUTHENT_free 2645 EXIST::FUNCTION:
2087OCSP_BASICRESP_get_ext_by_critical 2646 EXIST:!VMS:FUNCTION: 2087OCSP_BASICRESP_get_ext_by_critical 2646 EXIST:!VMS:FUNCTION:
@@ -2732,8 +2732,8 @@ EC_POINT_point2oct 3178 EXIST::FUNCTION:EC
2732KRB5_APREQ_free 3179 EXIST::FUNCTION: 2732KRB5_APREQ_free 3179 EXIST::FUNCTION:
2733ASN1_OBJECT_it 3180 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2733ASN1_OBJECT_it 3180 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2734ASN1_OBJECT_it 3180 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2734ASN1_OBJECT_it 3180 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2735OCSP_crlID_new 3181 EXIST:!OS2,!VMS,!WIN16:FUNCTION: 2735OCSP_crlID_new 3181 EXIST:!OS2,!VMS:FUNCTION:
2736OCSP_crlID2_new 3181 EXIST:OS2,VMS,WIN16:FUNCTION: 2736OCSP_crlID2_new 3181 EXIST:OS2,VMS:FUNCTION:
2737CONF_modules_load_file 3182 EXIST::FUNCTION: 2737CONF_modules_load_file 3182 EXIST::FUNCTION:
2738CONF_imodule_set_usr_data 3183 EXIST::FUNCTION: 2738CONF_imodule_set_usr_data 3183 EXIST::FUNCTION:
2739ENGINE_set_default_string 3184 EXIST::FUNCTION:ENGINE 2739ENGINE_set_default_string 3184 EXIST::FUNCTION:ENGINE
@@ -2804,57 +2804,57 @@ OPENSSL_cleanse 3245 EXIST::FUNCTION:
2804ENGINE_setup_bsd_cryptodev 3246 EXIST:__FreeBSD__:FUNCTION:ENGINE 2804ENGINE_setup_bsd_cryptodev 3246 EXIST:__FreeBSD__:FUNCTION:ENGINE
2805ERR_release_err_state_table 3247 EXIST::FUNCTION:LHASH 2805ERR_release_err_state_table 3247 EXIST::FUNCTION:LHASH
2806EVP_aes_128_cfb8 3248 EXIST::FUNCTION:AES 2806EVP_aes_128_cfb8 3248 EXIST::FUNCTION:AES
2807FIPS_corrupt_rsa 3249 EXIST:OPENSSL_FIPS:FUNCTION: 2807FIPS_corrupt_rsa 3249 NOEXIST::FUNCTION:
2808FIPS_selftest_des 3250 EXIST:OPENSSL_FIPS:FUNCTION: 2808FIPS_selftest_des 3250 NOEXIST::FUNCTION:
2809EVP_aes_128_cfb1 3251 EXIST::FUNCTION:AES 2809EVP_aes_128_cfb1 3251 EXIST::FUNCTION:AES
2810EVP_aes_192_cfb8 3252 EXIST::FUNCTION:AES 2810EVP_aes_192_cfb8 3252 EXIST::FUNCTION:AES
2811FIPS_mode_set 3253 EXIST:OPENSSL_FIPS:FUNCTION: 2811FIPS_mode_set 3253 NOEXIST::FUNCTION:
2812FIPS_selftest_dsa 3254 EXIST:OPENSSL_FIPS:FUNCTION: 2812FIPS_selftest_dsa 3254 NOEXIST::FUNCTION:
2813EVP_aes_256_cfb8 3255 EXIST::FUNCTION:AES 2813EVP_aes_256_cfb8 3255 EXIST::FUNCTION:AES
2814FIPS_allow_md5 3256 NOEXIST::FUNCTION: 2814FIPS_allow_md5 3256 NOEXIST::FUNCTION:
2815DES_ede3_cfb_encrypt 3257 EXIST::FUNCTION:DES 2815DES_ede3_cfb_encrypt 3257 EXIST::FUNCTION:DES
2816EVP_des_ede3_cfb8 3258 EXIST::FUNCTION:DES 2816EVP_des_ede3_cfb8 3258 EXIST::FUNCTION:DES
2817FIPS_rand_seeded 3259 NOEXIST::FUNCTION: 2817FIPS_rand_seeded 3259 NOEXIST::FUNCTION:
2818AES_cfbr_encrypt_block 3260 EXIST::FUNCTION:AES 2818AES_cfbr_encrypt_block 3260 NOEXIST::FUNCTION:
2819AES_cfb8_encrypt 3261 EXIST::FUNCTION:AES 2819AES_cfb8_encrypt 3261 EXIST::FUNCTION:AES
2820FIPS_rand_seed 3262 EXIST:OPENSSL_FIPS:FUNCTION: 2820FIPS_rand_seed 3262 NOEXIST::FUNCTION:
2821FIPS_corrupt_des 3263 EXIST:OPENSSL_FIPS:FUNCTION: 2821FIPS_corrupt_des 3263 NOEXIST::FUNCTION:
2822EVP_aes_192_cfb1 3264 EXIST::FUNCTION:AES 2822EVP_aes_192_cfb1 3264 EXIST::FUNCTION:AES
2823FIPS_selftest_aes 3265 EXIST:OPENSSL_FIPS:FUNCTION: 2823FIPS_selftest_aes 3265 NOEXIST::FUNCTION:
2824FIPS_set_prng_key 3266 NOEXIST::FUNCTION: 2824FIPS_set_prng_key 3266 NOEXIST::FUNCTION:
2825EVP_des_cfb8 3267 EXIST::FUNCTION:DES 2825EVP_des_cfb8 3267 EXIST::FUNCTION:DES
2826FIPS_corrupt_dsa 3268 EXIST:OPENSSL_FIPS:FUNCTION: 2826FIPS_corrupt_dsa 3268 NOEXIST::FUNCTION:
2827FIPS_test_mode 3269 NOEXIST::FUNCTION: 2827FIPS_test_mode 3269 NOEXIST::FUNCTION:
2828FIPS_rand_method 3270 EXIST:OPENSSL_FIPS:FUNCTION: 2828FIPS_rand_method 3270 NOEXIST::FUNCTION:
2829EVP_aes_256_cfb1 3271 EXIST::FUNCTION:AES 2829EVP_aes_256_cfb1 3271 EXIST::FUNCTION:AES
2830ERR_load_FIPS_strings 3272 EXIST:OPENSSL_FIPS:FUNCTION: 2830ERR_load_FIPS_strings 3272 NOEXIST::FUNCTION:
2831FIPS_corrupt_aes 3273 EXIST:OPENSSL_FIPS:FUNCTION: 2831FIPS_corrupt_aes 3273 NOEXIST::FUNCTION:
2832FIPS_selftest_sha1 3274 EXIST:OPENSSL_FIPS:FUNCTION: 2832FIPS_selftest_sha1 3274 NOEXIST::FUNCTION:
2833FIPS_selftest_rsa 3275 EXIST:OPENSSL_FIPS:FUNCTION: 2833FIPS_selftest_rsa 3275 NOEXIST::FUNCTION:
2834FIPS_corrupt_sha1 3276 EXIST:OPENSSL_FIPS:FUNCTION: 2834FIPS_corrupt_sha1 3276 NOEXIST::FUNCTION:
2835EVP_des_cfb1 3277 EXIST::FUNCTION:DES 2835EVP_des_cfb1 3277 EXIST::FUNCTION:DES
2836FIPS_dsa_check 3278 NOEXIST::FUNCTION: 2836FIPS_dsa_check 3278 NOEXIST::FUNCTION:
2837AES_cfb1_encrypt 3279 EXIST::FUNCTION:AES 2837AES_cfb1_encrypt 3279 EXIST::FUNCTION:AES
2838EVP_des_ede3_cfb1 3280 EXIST::FUNCTION:DES 2838EVP_des_ede3_cfb1 3280 EXIST::FUNCTION:DES
2839FIPS_rand_check 3281 EXIST:OPENSSL_FIPS:FUNCTION: 2839FIPS_rand_check 3281 NOEXIST::FUNCTION:
2840FIPS_md5_allowed 3282 NOEXIST::FUNCTION: 2840FIPS_md5_allowed 3282 NOEXIST::FUNCTION:
2841FIPS_mode 3283 EXIST:OPENSSL_FIPS:FUNCTION: 2841FIPS_mode 3283 NOEXIST::FUNCTION:
2842FIPS_selftest_failed 3284 EXIST:OPENSSL_FIPS:FUNCTION: 2842FIPS_selftest_failed 3284 NOEXIST::FUNCTION:
2843sk_is_sorted 3285 EXIST::FUNCTION: 2843sk_is_sorted 3285 EXIST::FUNCTION:
2844X509_check_ca 3286 EXIST::FUNCTION: 2844X509_check_ca 3286 EXIST::FUNCTION:
2845private_idea_set_encrypt_key 3287 EXIST:OPENSSL_FIPS:FUNCTION:IDEA 2845private_idea_set_encrypt_key 3287 NOEXIST::FUNCTION:
2846HMAC_CTX_set_flags 3288 EXIST::FUNCTION:HMAC 2846HMAC_CTX_set_flags 3288 EXIST::FUNCTION:HMAC
2847private_SHA_Init 3289 EXIST:OPENSSL_FIPS:FUNCTION:SHA,SHA0 2847private_SHA_Init 3289 NOEXIST::FUNCTION:
2848private_CAST_set_key 3290 EXIST:OPENSSL_FIPS:FUNCTION:CAST 2848private_CAST_set_key 3290 NOEXIST::FUNCTION:
2849private_RIPEMD160_Init 3291 EXIST:OPENSSL_FIPS:FUNCTION:RIPEMD 2849private_RIPEMD160_Init 3291 NOEXIST::FUNCTION:
2850private_RC5_32_set_key 3292 EXIST:OPENSSL_FIPS:FUNCTION:RC5 2850private_RC5_32_set_key 3292 NOEXIST::FUNCTION:
2851private_MD5_Init 3293 EXIST:OPENSSL_FIPS:FUNCTION:MD5 2851private_MD5_Init 3293 NOEXIST::FUNCTION:
2852private_RC4_set_key 3294 EXIST:OPENSSL_FIPS:FUNCTION:RC4 2852private_RC4_set_key 3294 NOEXIST::FUNCTION:
2853private_MDC2_Init 3295 EXIST:OPENSSL_FIPS:FUNCTION:MDC2 2853private_MDC2_Init 3295 NOEXIST::FUNCTION:
2854private_RC2_set_key 3296 EXIST:OPENSSL_FIPS:FUNCTION:RC2 2854private_RC2_set_key 3296 NOEXIST::FUNCTION:
2855private_MD4_Init 3297 EXIST:OPENSSL_FIPS:FUNCTION:MD4 2855private_MD4_Init 3297 NOEXIST::FUNCTION:
2856private_BF_set_key 3298 EXIST:OPENSSL_FIPS:FUNCTION:BF 2856private_BF_set_key 3298 NOEXIST::FUNCTION:
2857private_MD2_Init 3299 EXIST:OPENSSL_FIPS:FUNCTION:MD2 2857private_MD2_Init 3299 NOEXIST::FUNCTION:
2858d2i_PROXY_CERT_INFO_EXTENSION 3300 EXIST::FUNCTION: 2858d2i_PROXY_CERT_INFO_EXTENSION 3300 EXIST::FUNCTION:
2859PROXY_POLICY_it 3301 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2859PROXY_POLICY_it 3301 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2860PROXY_POLICY_it 3301 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2860PROXY_POLICY_it 3301 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
@@ -2868,13 +2868,13 @@ PROXY_CERT_INFO_EXTENSION_it 3307 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTI
2868PROXY_POLICY_free 3308 EXIST::FUNCTION: 2868PROXY_POLICY_free 3308 EXIST::FUNCTION:
2869PROXY_POLICY_new 3309 EXIST::FUNCTION: 2869PROXY_POLICY_new 3309 EXIST::FUNCTION:
2870BN_MONT_CTX_set_locked 3310 EXIST::FUNCTION: 2870BN_MONT_CTX_set_locked 3310 EXIST::FUNCTION:
2871FIPS_selftest_rng 3311 EXIST:OPENSSL_FIPS:FUNCTION: 2871FIPS_selftest_rng 3311 NOEXIST::FUNCTION:
2872EVP_sha384 3312 EXIST::FUNCTION:SHA,SHA512 2872EVP_sha384 3312 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
2873EVP_sha512 3313 EXIST::FUNCTION:SHA,SHA512 2873EVP_sha512 3313 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
2874EVP_sha224 3314 EXIST::FUNCTION:SHA,SHA256 2874EVP_sha224 3314 EXIST::FUNCTION:SHA,SHA256
2875EVP_sha256 3315 EXIST::FUNCTION:SHA,SHA256 2875EVP_sha256 3315 EXIST::FUNCTION:SHA,SHA256
2876FIPS_selftest_hmac 3316 EXIST:OPENSSL_FIPS:FUNCTION: 2876FIPS_selftest_hmac 3316 NOEXIST::FUNCTION:
2877FIPS_corrupt_rng 3317 EXIST:OPENSSL_FIPS:FUNCTION: 2877FIPS_corrupt_rng 3317 NOEXIST::FUNCTION:
2878BN_mod_exp_mont_consttime 3318 EXIST::FUNCTION: 2878BN_mod_exp_mont_consttime 3318 EXIST::FUNCTION:
2879RSA_X931_hash_id 3319 EXIST::FUNCTION:RSA 2879RSA_X931_hash_id 3319 EXIST::FUNCTION:RSA
2880RSA_padding_check_X931 3320 EXIST::FUNCTION:RSA 2880RSA_padding_check_X931 3320 EXIST::FUNCTION:RSA
@@ -2882,7 +2882,7 @@ RSA_verify_PKCS1_PSS 3321 EXIST::FUNCTION:RSA
2882RSA_padding_add_X931 3322 EXIST::FUNCTION:RSA 2882RSA_padding_add_X931 3322 EXIST::FUNCTION:RSA
2883RSA_padding_add_PKCS1_PSS 3323 EXIST::FUNCTION:RSA 2883RSA_padding_add_PKCS1_PSS 3323 EXIST::FUNCTION:RSA
2884PKCS1_MGF1 3324 EXIST::FUNCTION:RSA 2884PKCS1_MGF1 3324 EXIST::FUNCTION:RSA
2885BN_X931_generate_Xpq 3325 EXIST::FUNCTION: 2885BN_X931_generate_Xpq 3325 NOEXIST::FUNCTION:
2886RSA_X931_generate_key 3326 NOEXIST::FUNCTION: 2886RSA_X931_generate_key 3326 NOEXIST::FUNCTION:
2887BN_X931_derive_prime 3327 NOEXIST::FUNCTION: 2887BN_X931_derive_prime 3327 NOEXIST::FUNCTION:
2888BN_X931_generate_prime 3328 NOEXIST::FUNCTION: 2888BN_X931_generate_prime 3328 NOEXIST::FUNCTION:
@@ -2893,43 +2893,43 @@ ERR_set_mark 3332 EXIST::FUNCTION:
2893X509_STORE_CTX_set0_crls 3333 EXIST::FUNCTION: 2893X509_STORE_CTX_set0_crls 3333 EXIST::FUNCTION:
2894ENGINE_set_STORE 3334 EXIST::FUNCTION:ENGINE 2894ENGINE_set_STORE 3334 EXIST::FUNCTION:ENGINE
2895ENGINE_register_ECDSA 3335 EXIST::FUNCTION:ENGINE 2895ENGINE_register_ECDSA 3335 EXIST::FUNCTION:ENGINE
2896STORE_method_set_list_start_function 3336 EXIST:!VMS:FUNCTION: 2896STORE_meth_set_list_start_fn 3336 NOEXIST::FUNCTION:
2897STORE_meth_set_list_start_fn 3336 EXIST:VMS:FUNCTION: 2897STORE_method_set_list_start_function 3336 NOEXIST::FUNCTION:
2898BN_BLINDING_invert_ex 3337 EXIST::FUNCTION: 2898BN_BLINDING_invert_ex 3337 EXIST::FUNCTION:
2899NAME_CONSTRAINTS_free 3338 EXIST::FUNCTION: 2899NAME_CONSTRAINTS_free 3338 EXIST::FUNCTION:
2900STORE_ATTR_INFO_set_number 3339 EXIST::FUNCTION: 2900STORE_ATTR_INFO_set_number 3339 NOEXIST::FUNCTION:
2901BN_BLINDING_get_thread_id 3340 EXIST::FUNCTION: 2901BN_BLINDING_get_thread_id 3340 EXIST::FUNCTION:DEPRECATED
2902X509_STORE_CTX_set0_param 3341 EXIST::FUNCTION: 2902X509_STORE_CTX_set0_param 3341 EXIST::FUNCTION:
2903POLICY_MAPPING_it 3342 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2903POLICY_MAPPING_it 3342 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2904POLICY_MAPPING_it 3342 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2904POLICY_MAPPING_it 3342 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2905STORE_parse_attrs_start 3343 EXIST::FUNCTION: 2905STORE_parse_attrs_start 3343 NOEXIST::FUNCTION:
2906POLICY_CONSTRAINTS_free 3344 EXIST::FUNCTION: 2906POLICY_CONSTRAINTS_free 3344 EXIST::FUNCTION:
2907EVP_PKEY_add1_attr_by_NID 3345 EXIST::FUNCTION: 2907EVP_PKEY_add1_attr_by_NID 3345 EXIST::FUNCTION:
2908BN_nist_mod_192 3346 EXIST::FUNCTION: 2908BN_nist_mod_192 3346 EXIST::FUNCTION:
2909EC_GROUP_get_trinomial_basis 3347 EXIST::FUNCTION:EC 2909EC_GROUP_get_trinomial_basis 3347 EXIST::FUNCTION:EC
2910STORE_set_method 3348 EXIST::FUNCTION: 2910STORE_set_method 3348 NOEXIST::FUNCTION:
2911GENERAL_SUBTREE_free 3349 EXIST::FUNCTION: 2911GENERAL_SUBTREE_free 3349 EXIST::FUNCTION:
2912NAME_CONSTRAINTS_it 3350 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2912NAME_CONSTRAINTS_it 3350 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2913NAME_CONSTRAINTS_it 3350 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2913NAME_CONSTRAINTS_it 3350 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2914ECDH_get_default_method 3351 EXIST::FUNCTION:ECDH 2914ECDH_get_default_method 3351 EXIST::FUNCTION:ECDH
2915PKCS12_add_safe 3352 EXIST::FUNCTION: 2915PKCS12_add_safe 3352 EXIST::FUNCTION:
2916EC_KEY_new_by_curve_name 3353 EXIST::FUNCTION:EC 2916EC_KEY_new_by_curve_name 3353 EXIST::FUNCTION:EC
2917STORE_method_get_update_store_function 3354 EXIST:!VMS:FUNCTION: 2917STORE_meth_get_update_store_fn 3354 NOEXIST::FUNCTION:
2918STORE_meth_get_update_store_fn 3354 EXIST:VMS:FUNCTION: 2918STORE_method_get_update_store_function 3354 NOEXIST::FUNCTION:
2919ENGINE_register_ECDH 3355 EXIST::FUNCTION:ENGINE 2919ENGINE_register_ECDH 3355 EXIST::FUNCTION:ENGINE
2920SHA512_Update 3356 EXIST::FUNCTION:SHA,SHA512 2920SHA512_Update 3356 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
2921i2d_ECPrivateKey 3357 EXIST::FUNCTION:EC 2921i2d_ECPrivateKey 3357 EXIST::FUNCTION:EC
2922BN_get0_nist_prime_192 3358 EXIST::FUNCTION: 2922BN_get0_nist_prime_192 3358 EXIST::FUNCTION:
2923STORE_modify_certificate 3359 EXIST::FUNCTION: 2923STORE_modify_certificate 3359 NOEXIST::FUNCTION:
2924EC_POINT_set_affine_coordinates_GF2m 3360 EXIST:!VMS:FUNCTION:EC 2924EC_POINT_set_affine_coordinates_GF2m 3360 EXIST:!VMS:FUNCTION:EC
2925EC_POINT_set_affine_coords_GF2m 3360 EXIST:VMS:FUNCTION:EC 2925EC_POINT_set_affine_coords_GF2m 3360 EXIST:VMS:FUNCTION:EC
2926BN_GF2m_mod_exp_arr 3361 EXIST::FUNCTION: 2926BN_GF2m_mod_exp_arr 3361 EXIST::FUNCTION:
2927STORE_ATTR_INFO_modify_number 3362 EXIST::FUNCTION: 2927STORE_ATTR_INFO_modify_number 3362 NOEXIST::FUNCTION:
2928X509_keyid_get0 3363 EXIST::FUNCTION: 2928X509_keyid_get0 3363 EXIST::FUNCTION:
2929ENGINE_load_gmp 3364 EXIST::FUNCTION:ENGINE,GMP,STATIC_ENGINE 2929ENGINE_load_gmp 3364 EXIST::FUNCTION:ENGINE,GMP,STATIC_ENGINE
2930pitem_new 3365 EXIST::FUNCTION: 2930pitem_new 3365 EXIST::FUNCTION:
2931BN_GF2m_mod_mul_arr 3366 EXIST::FUNCTION: 2931BN_GF2m_mod_mul_arr 3366 EXIST::FUNCTION:
2932STORE_list_public_key_endp 3367 EXIST::FUNCTION: 2932STORE_list_public_key_endp 3367 NOEXIST::FUNCTION:
2933o2i_ECPublicKey 3368 EXIST::FUNCTION:EC 2933o2i_ECPublicKey 3368 EXIST::FUNCTION:EC
2934EC_KEY_copy 3369 EXIST::FUNCTION:EC 2934EC_KEY_copy 3369 EXIST::FUNCTION:EC
2935BIO_dump_fp 3370 EXIST::FUNCTION:FP_API 2935BIO_dump_fp 3370 EXIST::FUNCTION:FP_API
@@ -2938,25 +2938,25 @@ EC_GROUP_check_discriminant 3372 EXIST::FUNCTION:EC
2938i2o_ECPublicKey 3373 EXIST::FUNCTION:EC 2938i2o_ECPublicKey 3373 EXIST::FUNCTION:EC
2939EC_KEY_precompute_mult 3374 EXIST::FUNCTION:EC 2939EC_KEY_precompute_mult 3374 EXIST::FUNCTION:EC
2940a2i_IPADDRESS 3375 EXIST::FUNCTION: 2940a2i_IPADDRESS 3375 EXIST::FUNCTION:
2941STORE_method_set_initialise_function 3376 EXIST:!VMS:FUNCTION: 2941STORE_meth_set_initialise_fn 3376 NOEXIST::FUNCTION:
2942STORE_meth_set_initialise_fn 3376 EXIST:VMS:FUNCTION: 2942STORE_method_set_initialise_function 3376 NOEXIST::FUNCTION:
2943X509_STORE_CTX_set_depth 3377 EXIST::FUNCTION: 2943X509_STORE_CTX_set_depth 3377 EXIST::FUNCTION:
2944X509_VERIFY_PARAM_inherit 3378 EXIST::FUNCTION: 2944X509_VERIFY_PARAM_inherit 3378 EXIST::FUNCTION:
2945EC_POINT_point2bn 3379 EXIST::FUNCTION:EC 2945EC_POINT_point2bn 3379 EXIST::FUNCTION:EC
2946STORE_ATTR_INFO_set_dn 3380 EXIST::FUNCTION: 2946STORE_ATTR_INFO_set_dn 3380 NOEXIST::FUNCTION:
2947X509_policy_tree_get0_policies 3381 EXIST::FUNCTION: 2947X509_policy_tree_get0_policies 3381 EXIST::FUNCTION:
2948EC_GROUP_new_curve_GF2m 3382 EXIST::FUNCTION:EC 2948EC_GROUP_new_curve_GF2m 3382 EXIST::FUNCTION:EC
2949STORE_destroy_method 3383 EXIST::FUNCTION: 2949STORE_destroy_method 3383 NOEXIST::FUNCTION:
2950ENGINE_unregister_STORE 3384 EXIST::FUNCTION:ENGINE 2950ENGINE_unregister_STORE 3384 EXIST::FUNCTION:ENGINE
2951EVP_PKEY_get1_EC_KEY 3385 EXIST::FUNCTION:EC 2951EVP_PKEY_get1_EC_KEY 3385 EXIST::FUNCTION:EC
2952STORE_ATTR_INFO_get0_number 3386 EXIST::FUNCTION: 2952STORE_ATTR_INFO_get0_number 3386 NOEXIST::FUNCTION:
2953ENGINE_get_default_ECDH 3387 EXIST::FUNCTION:ENGINE 2953ENGINE_get_default_ECDH 3387 EXIST::FUNCTION:ENGINE
2954EC_KEY_get_conv_form 3388 EXIST::FUNCTION:EC 2954EC_KEY_get_conv_form 3388 EXIST::FUNCTION:EC
2955ASN1_OCTET_STRING_NDEF_it 3389 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 2955ASN1_OCTET_STRING_NDEF_it 3389 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
2956ASN1_OCTET_STRING_NDEF_it 3389 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 2956ASN1_OCTET_STRING_NDEF_it 3389 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
2957STORE_delete_public_key 3390 EXIST::FUNCTION: 2957STORE_delete_public_key 3390 NOEXIST::FUNCTION:
2958STORE_get_public_key 3391 EXIST::FUNCTION: 2958STORE_get_public_key 3391 NOEXIST::FUNCTION:
2959STORE_modify_arbitrary 3392 EXIST::FUNCTION: 2959STORE_modify_arbitrary 3392 NOEXIST::FUNCTION:
2960ENGINE_get_static_state 3393 EXIST::FUNCTION:ENGINE 2960ENGINE_get_static_state 3393 EXIST::FUNCTION:ENGINE
2961pqueue_iterator 3394 EXIST::FUNCTION: 2961pqueue_iterator 3394 EXIST::FUNCTION:
2962ECDSA_SIG_new 3395 EXIST::FUNCTION:ECDSA 2962ECDSA_SIG_new 3395 EXIST::FUNCTION:ECDSA
@@ -2965,14 +2965,14 @@ BN_GF2m_mod_sqr 3397 EXIST::FUNCTION:
2965EC_POINT_bn2point 3398 EXIST::FUNCTION:EC 2965EC_POINT_bn2point 3398 EXIST::FUNCTION:EC
2966X509_VERIFY_PARAM_set_depth 3399 EXIST::FUNCTION: 2966X509_VERIFY_PARAM_set_depth 3399 EXIST::FUNCTION:
2967EC_KEY_set_asn1_flag 3400 EXIST::FUNCTION:EC 2967EC_KEY_set_asn1_flag 3400 EXIST::FUNCTION:EC
2968STORE_get_method 3401 EXIST::FUNCTION: 2968STORE_get_method 3401 NOEXIST::FUNCTION:
2969EC_KEY_get_key_method_data 3402 EXIST::FUNCTION:EC 2969EC_KEY_get_key_method_data 3402 EXIST::FUNCTION:EC
2970ECDSA_sign_ex 3403 EXIST::FUNCTION:ECDSA 2970ECDSA_sign_ex 3403 EXIST::FUNCTION:ECDSA
2971STORE_parse_attrs_end 3404 EXIST::FUNCTION: 2971STORE_parse_attrs_end 3404 NOEXIST::FUNCTION:
2972EC_GROUP_get_point_conversion_form 3405 EXIST:!VMS:FUNCTION:EC 2972EC_GROUP_get_point_conversion_form 3405 EXIST:!VMS:FUNCTION:EC
2973EC_GROUP_get_point_conv_form 3405 EXIST:VMS:FUNCTION:EC 2973EC_GROUP_get_point_conv_form 3405 EXIST:VMS:FUNCTION:EC
2974STORE_method_set_store_function 3406 EXIST::FUNCTION: 2974STORE_method_set_store_function 3406 NOEXIST::FUNCTION:
2975STORE_ATTR_INFO_in 3407 EXIST::FUNCTION: 2975STORE_ATTR_INFO_in 3407 NOEXIST::FUNCTION:
2976PEM_read_bio_ECPKParameters 3408 EXIST::FUNCTION:EC 2976PEM_read_bio_ECPKParameters 3408 EXIST::FUNCTION:EC
2977EC_GROUP_get_pentanomial_basis 3409 EXIST::FUNCTION:EC 2977EC_GROUP_get_pentanomial_basis 3409 EXIST::FUNCTION:EC
2978EVP_PKEY_add1_attr_by_txt 3410 EXIST::FUNCTION: 2978EVP_PKEY_add1_attr_by_txt 3410 EXIST::FUNCTION:
@@ -2980,7 +2980,7 @@ BN_BLINDING_set_flags 3411 EXIST::FUNCTION:
2980X509_VERIFY_PARAM_set1_policies 3412 EXIST::FUNCTION: 2980X509_VERIFY_PARAM_set1_policies 3412 EXIST::FUNCTION:
2981X509_VERIFY_PARAM_set1_name 3413 EXIST::FUNCTION: 2981X509_VERIFY_PARAM_set1_name 3413 EXIST::FUNCTION:
2982X509_VERIFY_PARAM_set_purpose 3414 EXIST::FUNCTION: 2982X509_VERIFY_PARAM_set_purpose 3414 EXIST::FUNCTION:
2983STORE_get_number 3415 EXIST::FUNCTION: 2983STORE_get_number 3415 NOEXIST::FUNCTION:
2984ECDSA_sign_setup 3416 EXIST::FUNCTION:ECDSA 2984ECDSA_sign_setup 3416 EXIST::FUNCTION:ECDSA
2985BN_GF2m_mod_solve_quad_arr 3417 EXIST::FUNCTION: 2985BN_GF2m_mod_solve_quad_arr 3417 EXIST::FUNCTION:
2986EC_KEY_up_ref 3418 EXIST::FUNCTION:EC 2986EC_KEY_up_ref 3418 EXIST::FUNCTION:EC
@@ -2988,14 +2988,14 @@ POLICY_MAPPING_free 3419 EXIST::FUNCTION:
2988BN_GF2m_mod_div 3420 EXIST::FUNCTION: 2988BN_GF2m_mod_div 3420 EXIST::FUNCTION:
2989X509_VERIFY_PARAM_set_flags 3421 EXIST::FUNCTION: 2989X509_VERIFY_PARAM_set_flags 3421 EXIST::FUNCTION:
2990EC_KEY_free 3422 EXIST::FUNCTION:EC 2990EC_KEY_free 3422 EXIST::FUNCTION:EC
2991STORE_method_set_list_next_function 3423 EXIST:!VMS:FUNCTION: 2991STORE_meth_set_list_next_fn 3423 NOEXIST::FUNCTION:
2992STORE_meth_set_list_next_fn 3423 EXIST:VMS:FUNCTION: 2992STORE_method_set_list_next_function 3423 NOEXIST::FUNCTION:
2993PEM_write_bio_ECPrivateKey 3424 EXIST::FUNCTION:EC 2993PEM_write_bio_ECPrivateKey 3424 EXIST::FUNCTION:EC
2994d2i_EC_PUBKEY 3425 EXIST::FUNCTION:EC 2994d2i_EC_PUBKEY 3425 EXIST::FUNCTION:EC
2995STORE_method_get_generate_function 3426 EXIST:!VMS:FUNCTION: 2995STORE_meth_get_generate_fn 3426 NOEXIST::FUNCTION:
2996STORE_meth_get_generate_fn 3426 EXIST:VMS:FUNCTION: 2996STORE_method_get_generate_function 3426 NOEXIST::FUNCTION:
2997STORE_method_set_list_end_function 3427 EXIST:!VMS:FUNCTION: 2997STORE_meth_set_list_end_fn 3427 NOEXIST::FUNCTION:
2998STORE_meth_set_list_end_fn 3427 EXIST:VMS:FUNCTION: 2998STORE_method_set_list_end_function 3427 NOEXIST::FUNCTION:
2999pqueue_print 3428 EXIST::FUNCTION: 2999pqueue_print 3428 EXIST::FUNCTION:
3000EC_GROUP_have_precompute_mult 3429 EXIST::FUNCTION:EC 3000EC_GROUP_have_precompute_mult 3429 EXIST::FUNCTION:EC
3001EC_KEY_print_fp 3430 EXIST::FUNCTION:EC,FP_API 3001EC_KEY_print_fp 3430 EXIST::FUNCTION:EC,FP_API
@@ -3003,8 +3003,8 @@ BN_GF2m_mod_arr 3431 EXIST::FUNCTION:
3003PEM_write_bio_X509_CERT_PAIR 3432 EXIST::FUNCTION: 3003PEM_write_bio_X509_CERT_PAIR 3432 EXIST::FUNCTION:
3004EVP_PKEY_cmp 3433 EXIST::FUNCTION: 3004EVP_PKEY_cmp 3433 EXIST::FUNCTION:
3005X509_policy_level_node_count 3434 EXIST::FUNCTION: 3005X509_policy_level_node_count 3434 EXIST::FUNCTION:
3006STORE_new_engine 3435 EXIST::FUNCTION: 3006STORE_new_engine 3435 NOEXIST::FUNCTION:
3007STORE_list_public_key_start 3436 EXIST::FUNCTION: 3007STORE_list_public_key_start 3436 NOEXIST::FUNCTION:
3008X509_VERIFY_PARAM_new 3437 EXIST::FUNCTION: 3008X509_VERIFY_PARAM_new 3437 EXIST::FUNCTION:
3009ECDH_get_ex_data 3438 EXIST::FUNCTION:ECDH 3009ECDH_get_ex_data 3438 EXIST::FUNCTION:ECDH
3010EVP_PKEY_get_attr 3439 EXIST::FUNCTION: 3010EVP_PKEY_get_attr 3439 EXIST::FUNCTION:
@@ -3014,11 +3014,11 @@ ECDH_OpenSSL 3442 EXIST::FUNCTION:ECDH
3014EC_KEY_set_conv_form 3443 EXIST::FUNCTION:EC 3014EC_KEY_set_conv_form 3443 EXIST::FUNCTION:EC
3015EC_POINT_dup 3444 EXIST::FUNCTION:EC 3015EC_POINT_dup 3444 EXIST::FUNCTION:EC
3016GENERAL_SUBTREE_new 3445 EXIST::FUNCTION: 3016GENERAL_SUBTREE_new 3445 EXIST::FUNCTION:
3017STORE_list_crl_endp 3446 EXIST::FUNCTION: 3017STORE_list_crl_endp 3446 NOEXIST::FUNCTION:
3018EC_get_builtin_curves 3447 EXIST::FUNCTION:EC 3018EC_get_builtin_curves 3447 EXIST::FUNCTION:EC
3019X509_policy_node_get0_qualifiers 3448 EXIST:!VMS:FUNCTION: 3019X509_policy_node_get0_qualifiers 3448 EXIST:!VMS:FUNCTION:
3020X509_pcy_node_get0_qualifiers 3448 EXIST:VMS:FUNCTION: 3020X509_pcy_node_get0_qualifiers 3448 EXIST:VMS:FUNCTION:
3021STORE_list_crl_end 3449 EXIST::FUNCTION: 3021STORE_list_crl_end 3449 NOEXIST::FUNCTION:
3022EVP_PKEY_set1_EC_KEY 3450 EXIST::FUNCTION:EC 3022EVP_PKEY_set1_EC_KEY 3450 EXIST::FUNCTION:EC
3023BN_GF2m_mod_sqrt_arr 3451 EXIST::FUNCTION: 3023BN_GF2m_mod_sqrt_arr 3451 EXIST::FUNCTION:
3024i2d_ECPrivateKey_bio 3452 EXIST::FUNCTION:BIO,EC 3024i2d_ECPrivateKey_bio 3452 EXIST::FUNCTION:BIO,EC
@@ -3026,60 +3026,60 @@ ECPKParameters_print_fp 3453 EXIST::FUNCTION:EC,FP_API
3026pqueue_find 3454 EXIST::FUNCTION: 3026pqueue_find 3454 EXIST::FUNCTION:
3027ECDSA_SIG_free 3455 EXIST::FUNCTION:ECDSA 3027ECDSA_SIG_free 3455 EXIST::FUNCTION:ECDSA
3028PEM_write_bio_ECPKParameters 3456 EXIST::FUNCTION:EC 3028PEM_write_bio_ECPKParameters 3456 EXIST::FUNCTION:EC
3029STORE_method_set_ctrl_function 3457 EXIST::FUNCTION: 3029STORE_method_set_ctrl_function 3457 NOEXIST::FUNCTION:
3030STORE_list_public_key_end 3458 EXIST::FUNCTION: 3030STORE_list_public_key_end 3458 NOEXIST::FUNCTION:
3031EC_KEY_set_private_key 3459 EXIST::FUNCTION:EC 3031EC_KEY_set_private_key 3459 EXIST::FUNCTION:EC
3032pqueue_peek 3460 EXIST::FUNCTION: 3032pqueue_peek 3460 EXIST::FUNCTION:
3033STORE_get_arbitrary 3461 EXIST::FUNCTION: 3033STORE_get_arbitrary 3461 NOEXIST::FUNCTION:
3034STORE_store_crl 3462 EXIST::FUNCTION: 3034STORE_store_crl 3462 NOEXIST::FUNCTION:
3035X509_policy_node_get0_policy 3463 EXIST::FUNCTION: 3035X509_policy_node_get0_policy 3463 EXIST::FUNCTION:
3036PKCS12_add_safes 3464 EXIST::FUNCTION: 3036PKCS12_add_safes 3464 EXIST::FUNCTION:
3037BN_BLINDING_convert_ex 3465 EXIST::FUNCTION: 3037BN_BLINDING_convert_ex 3465 EXIST::FUNCTION:
3038X509_policy_tree_free 3466 EXIST::FUNCTION: 3038X509_policy_tree_free 3466 EXIST::FUNCTION:
3039OPENSSL_ia32cap_loc 3467 EXIST::FUNCTION: 3039OPENSSL_ia32cap_loc 3467 EXIST::FUNCTION:
3040BN_GF2m_poly2arr 3468 EXIST::FUNCTION: 3040BN_GF2m_poly2arr 3468 EXIST::FUNCTION:
3041STORE_ctrl 3469 EXIST::FUNCTION: 3041STORE_ctrl 3469 NOEXIST::FUNCTION:
3042STORE_ATTR_INFO_compare 3470 EXIST::FUNCTION: 3042STORE_ATTR_INFO_compare 3470 NOEXIST::FUNCTION:
3043BN_get0_nist_prime_224 3471 EXIST::FUNCTION: 3043BN_get0_nist_prime_224 3471 EXIST::FUNCTION:
3044i2d_ECParameters 3472 EXIST::FUNCTION:EC 3044i2d_ECParameters 3472 EXIST::FUNCTION:EC
3045i2d_ECPKParameters 3473 EXIST::FUNCTION:EC 3045i2d_ECPKParameters 3473 EXIST::FUNCTION:EC
3046BN_GENCB_call 3474 EXIST::FUNCTION: 3046BN_GENCB_call 3474 EXIST::FUNCTION:
3047d2i_ECPKParameters 3475 EXIST::FUNCTION:EC 3047d2i_ECPKParameters 3475 EXIST::FUNCTION:EC
3048STORE_method_set_generate_function 3476 EXIST:!VMS:FUNCTION: 3048STORE_meth_set_generate_fn 3476 NOEXIST::FUNCTION:
3049STORE_meth_set_generate_fn 3476 EXIST:VMS:FUNCTION: 3049STORE_method_set_generate_function 3476 NOEXIST::FUNCTION:
3050ENGINE_set_ECDH 3477 EXIST::FUNCTION:ENGINE 3050ENGINE_set_ECDH 3477 EXIST::FUNCTION:ENGINE
3051NAME_CONSTRAINTS_new 3478 EXIST::FUNCTION: 3051NAME_CONSTRAINTS_new 3478 EXIST::FUNCTION:
3052SHA256_Init 3479 EXIST::FUNCTION:SHA,SHA256 3052SHA256_Init 3479 EXIST::FUNCTION:SHA,SHA256
3053EC_KEY_get0_public_key 3480 EXIST::FUNCTION:EC 3053EC_KEY_get0_public_key 3480 EXIST::FUNCTION:EC
3054PEM_write_bio_EC_PUBKEY 3481 EXIST::FUNCTION:EC 3054PEM_write_bio_EC_PUBKEY 3481 EXIST::FUNCTION:EC
3055STORE_ATTR_INFO_set_cstr 3482 EXIST::FUNCTION: 3055STORE_ATTR_INFO_set_cstr 3482 NOEXIST::FUNCTION:
3056STORE_list_crl_next 3483 EXIST::FUNCTION: 3056STORE_list_crl_next 3483 NOEXIST::FUNCTION:
3057STORE_ATTR_INFO_in_range 3484 EXIST::FUNCTION: 3057STORE_ATTR_INFO_in_range 3484 NOEXIST::FUNCTION:
3058ECParameters_print 3485 EXIST::FUNCTION:BIO,EC 3058ECParameters_print 3485 EXIST::FUNCTION:BIO,EC
3059STORE_method_set_delete_function 3486 EXIST:!VMS:FUNCTION: 3059STORE_meth_set_delete_fn 3486 NOEXIST::FUNCTION:
3060STORE_meth_set_delete_fn 3486 EXIST:VMS:FUNCTION: 3060STORE_method_set_delete_function 3486 NOEXIST::FUNCTION:
3061STORE_list_certificate_next 3487 EXIST::FUNCTION: 3061STORE_list_certificate_next 3487 NOEXIST::FUNCTION:
3062ASN1_generate_nconf 3488 EXIST::FUNCTION: 3062ASN1_generate_nconf 3488 EXIST::FUNCTION:
3063BUF_memdup 3489 EXIST::FUNCTION: 3063BUF_memdup 3489 EXIST::FUNCTION:
3064BN_GF2m_mod_mul 3490 EXIST::FUNCTION: 3064BN_GF2m_mod_mul 3490 EXIST::FUNCTION:
3065STORE_method_get_list_next_function 3491 EXIST:!VMS:FUNCTION: 3065STORE_meth_get_list_next_fn 3491 NOEXIST::FUNCTION:
3066STORE_meth_get_list_next_fn 3491 EXIST:VMS:FUNCTION: 3066STORE_method_get_list_next_function 3491 NOEXIST::FUNCTION:
3067STORE_ATTR_INFO_get0_dn 3492 EXIST::FUNCTION: 3067STORE_ATTR_INFO_get0_dn 3492 NOEXIST::FUNCTION:
3068STORE_list_private_key_next 3493 EXIST::FUNCTION: 3068STORE_list_private_key_next 3493 NOEXIST::FUNCTION:
3069EC_GROUP_set_seed 3494 EXIST::FUNCTION:EC 3069EC_GROUP_set_seed 3494 EXIST::FUNCTION:EC
3070X509_VERIFY_PARAM_set_trust 3495 EXIST::FUNCTION: 3070X509_VERIFY_PARAM_set_trust 3495 EXIST::FUNCTION:
3071STORE_ATTR_INFO_free 3496 EXIST::FUNCTION: 3071STORE_ATTR_INFO_free 3496 NOEXIST::FUNCTION:
3072STORE_get_private_key 3497 EXIST::FUNCTION: 3072STORE_get_private_key 3497 NOEXIST::FUNCTION:
3073EVP_PKEY_get_attr_count 3498 EXIST::FUNCTION: 3073EVP_PKEY_get_attr_count 3498 EXIST::FUNCTION:
3074STORE_ATTR_INFO_new 3499 EXIST::FUNCTION: 3074STORE_ATTR_INFO_new 3499 NOEXIST::FUNCTION:
3075EC_GROUP_get_curve_GF2m 3500 EXIST::FUNCTION:EC 3075EC_GROUP_get_curve_GF2m 3500 EXIST::FUNCTION:EC
3076STORE_method_set_revoke_function 3501 EXIST:!VMS:FUNCTION: 3076STORE_meth_set_revoke_fn 3501 NOEXIST::FUNCTION:
3077STORE_meth_set_revoke_fn 3501 EXIST:VMS:FUNCTION: 3077STORE_method_set_revoke_function 3501 NOEXIST::FUNCTION:
3078STORE_store_number 3502 EXIST::FUNCTION: 3078STORE_store_number 3502 NOEXIST::FUNCTION:
3079BN_is_prime_ex 3503 EXIST::FUNCTION: 3079BN_is_prime_ex 3503 EXIST::FUNCTION:
3080STORE_revoke_public_key 3504 EXIST::FUNCTION: 3080STORE_revoke_public_key 3504 NOEXIST::FUNCTION:
3081X509_STORE_CTX_get0_param 3505 EXIST::FUNCTION: 3081X509_STORE_CTX_get0_param 3505 EXIST::FUNCTION:
3082STORE_delete_arbitrary 3506 EXIST::FUNCTION: 3082STORE_delete_arbitrary 3506 NOEXIST::FUNCTION:
3083PEM_read_X509_CERT_PAIR 3507 EXIST:!WIN16:FUNCTION: 3083PEM_read_X509_CERT_PAIR 3507 EXIST:!WIN16:FUNCTION:
3084X509_STORE_set_depth 3508 EXIST::FUNCTION: 3084X509_STORE_set_depth 3508 EXIST::FUNCTION:
3085ECDSA_get_ex_data 3509 EXIST::FUNCTION:ECDSA 3085ECDSA_get_ex_data 3509 EXIST::FUNCTION:ECDSA
@@ -3087,40 +3087,40 @@ SHA224 3510 EXIST::FUNCTION:SHA,SHA256
3087BIO_dump_indent_fp 3511 EXIST::FUNCTION:FP_API 3087BIO_dump_indent_fp 3511 EXIST::FUNCTION:FP_API
3088EC_KEY_set_group 3512 EXIST::FUNCTION:EC 3088EC_KEY_set_group 3512 EXIST::FUNCTION:EC
3089BUF_strndup 3513 EXIST::FUNCTION: 3089BUF_strndup 3513 EXIST::FUNCTION:
3090STORE_list_certificate_start 3514 EXIST::FUNCTION: 3090STORE_list_certificate_start 3514 NOEXIST::FUNCTION:
3091BN_GF2m_mod 3515 EXIST::FUNCTION: 3091BN_GF2m_mod 3515 EXIST::FUNCTION:
3092X509_REQ_check_private_key 3516 EXIST::FUNCTION: 3092X509_REQ_check_private_key 3516 EXIST::FUNCTION:
3093EC_GROUP_get_seed_len 3517 EXIST::FUNCTION:EC 3093EC_GROUP_get_seed_len 3517 EXIST::FUNCTION:EC
3094ERR_load_STORE_strings 3518 EXIST::FUNCTION: 3094ERR_load_STORE_strings 3518 NOEXIST::FUNCTION:
3095PEM_read_bio_EC_PUBKEY 3519 EXIST::FUNCTION:EC 3095PEM_read_bio_EC_PUBKEY 3519 EXIST::FUNCTION:EC
3096STORE_list_private_key_end 3520 EXIST::FUNCTION: 3096STORE_list_private_key_end 3520 NOEXIST::FUNCTION:
3097i2d_EC_PUBKEY 3521 EXIST::FUNCTION:EC 3097i2d_EC_PUBKEY 3521 EXIST::FUNCTION:EC
3098ECDSA_get_default_method 3522 EXIST::FUNCTION:ECDSA 3098ECDSA_get_default_method 3522 EXIST::FUNCTION:ECDSA
3099ASN1_put_eoc 3523 EXIST::FUNCTION: 3099ASN1_put_eoc 3523 EXIST::FUNCTION:
3100X509_STORE_CTX_get_explicit_policy 3524 EXIST:!VMS:FUNCTION: 3100X509_STORE_CTX_get_explicit_policy 3524 EXIST:!VMS:FUNCTION:
3101X509_STORE_CTX_get_expl_policy 3524 EXIST:VMS:FUNCTION: 3101X509_STORE_CTX_get_expl_policy 3524 EXIST:VMS:FUNCTION:
3102X509_VERIFY_PARAM_table_cleanup 3525 EXIST::FUNCTION: 3102X509_VERIFY_PARAM_table_cleanup 3525 EXIST::FUNCTION:
3103STORE_modify_private_key 3526 EXIST::FUNCTION: 3103STORE_modify_private_key 3526 NOEXIST::FUNCTION:
3104X509_VERIFY_PARAM_free 3527 EXIST::FUNCTION: 3104X509_VERIFY_PARAM_free 3527 EXIST::FUNCTION:
3105EC_METHOD_get_field_type 3528 EXIST::FUNCTION:EC 3105EC_METHOD_get_field_type 3528 EXIST::FUNCTION:EC
3106EC_GFp_nist_method 3529 EXIST::FUNCTION:EC 3106EC_GFp_nist_method 3529 EXIST::FUNCTION:EC
3107STORE_method_set_modify_function 3530 EXIST:!VMS:FUNCTION: 3107STORE_meth_set_modify_fn 3530 NOEXIST::FUNCTION:
3108STORE_meth_set_modify_fn 3530 EXIST:VMS:FUNCTION: 3108STORE_method_set_modify_function 3530 NOEXIST::FUNCTION:
3109STORE_parse_attrs_next 3531 EXIST::FUNCTION: 3109STORE_parse_attrs_next 3531 NOEXIST::FUNCTION:
3110ENGINE_load_padlock 3532 EXIST::FUNCTION:ENGINE 3110ENGINE_load_padlock 3532 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
3111EC_GROUP_set_curve_name 3533 EXIST::FUNCTION:EC 3111EC_GROUP_set_curve_name 3533 EXIST::FUNCTION:EC
3112X509_CERT_PAIR_it 3534 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 3112X509_CERT_PAIR_it 3534 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3113X509_CERT_PAIR_it 3534 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 3113X509_CERT_PAIR_it 3534 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3114STORE_method_get_revoke_function 3535 EXIST:!VMS:FUNCTION: 3114STORE_meth_get_revoke_fn 3535 NOEXIST::FUNCTION:
3115STORE_meth_get_revoke_fn 3535 EXIST:VMS:FUNCTION: 3115STORE_method_get_revoke_function 3535 NOEXIST::FUNCTION:
3116STORE_method_set_get_function 3536 EXIST::FUNCTION: 3116STORE_method_set_get_function 3536 NOEXIST::FUNCTION:
3117STORE_modify_number 3537 EXIST::FUNCTION: 3117STORE_modify_number 3537 NOEXIST::FUNCTION:
3118STORE_method_get_store_function 3538 EXIST::FUNCTION: 3118STORE_method_get_store_function 3538 NOEXIST::FUNCTION:
3119STORE_store_private_key 3539 EXIST::FUNCTION: 3119STORE_store_private_key 3539 NOEXIST::FUNCTION:
3120BN_GF2m_mod_sqr_arr 3540 EXIST::FUNCTION: 3120BN_GF2m_mod_sqr_arr 3540 EXIST::FUNCTION:
3121RSA_setup_blinding 3541 EXIST::FUNCTION:RSA 3121RSA_setup_blinding 3541 EXIST::FUNCTION:RSA
3122BIO_s_datagram 3542 EXIST::FUNCTION:DGRAM 3122BIO_s_datagram 3542 EXIST::FUNCTION:DGRAM
3123STORE_Memory 3543 EXIST::FUNCTION: 3123STORE_Memory 3543 NOEXIST::FUNCTION:
3124sk_find_ex 3544 EXIST::FUNCTION: 3124sk_find_ex 3544 EXIST::FUNCTION:
3125EC_GROUP_set_curve_GF2m 3545 EXIST::FUNCTION:EC 3125EC_GROUP_set_curve_GF2m 3545 EXIST::FUNCTION:EC
3126ENGINE_set_default_ECDSA 3546 EXIST::FUNCTION:ENGINE 3126ENGINE_set_default_ECDSA 3546 EXIST::FUNCTION:ENGINE
@@ -3128,69 +3128,69 @@ POLICY_CONSTRAINTS_new 3547 EXIST::FUNCTION:
3128BN_GF2m_mod_sqrt 3548 EXIST::FUNCTION: 3128BN_GF2m_mod_sqrt 3548 EXIST::FUNCTION:
3129ECDH_set_default_method 3549 EXIST::FUNCTION:ECDH 3129ECDH_set_default_method 3549 EXIST::FUNCTION:ECDH
3130EC_KEY_generate_key 3550 EXIST::FUNCTION:EC 3130EC_KEY_generate_key 3550 EXIST::FUNCTION:EC
3131SHA384_Update 3551 EXIST::FUNCTION:SHA,SHA512 3131SHA384_Update 3551 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3132BN_GF2m_arr2poly 3552 EXIST::FUNCTION: 3132BN_GF2m_arr2poly 3552 EXIST::FUNCTION:
3133STORE_method_get_get_function 3553 EXIST::FUNCTION: 3133STORE_method_get_get_function 3553 NOEXIST::FUNCTION:
3134STORE_method_set_cleanup_function 3554 EXIST:!VMS:FUNCTION: 3134STORE_meth_set_cleanup_fn 3554 NOEXIST::FUNCTION:
3135STORE_meth_set_cleanup_fn 3554 EXIST:VMS:FUNCTION: 3135STORE_method_set_cleanup_function 3554 NOEXIST::FUNCTION:
3136EC_GROUP_check 3555 EXIST::FUNCTION:EC 3136EC_GROUP_check 3555 EXIST::FUNCTION:EC
3137d2i_ECPrivateKey_bio 3556 EXIST::FUNCTION:BIO,EC 3137d2i_ECPrivateKey_bio 3556 EXIST::FUNCTION:BIO,EC
3138EC_KEY_insert_key_method_data 3557 EXIST::FUNCTION:EC 3138EC_KEY_insert_key_method_data 3557 EXIST::FUNCTION:EC
3139STORE_method_get_lock_store_function 3558 EXIST:!VMS:FUNCTION: 3139STORE_meth_get_lock_store_fn 3558 NOEXIST::FUNCTION:
3140STORE_meth_get_lock_store_fn 3558 EXIST:VMS:FUNCTION: 3140STORE_method_get_lock_store_function 3558 NOEXIST::FUNCTION:
3141X509_VERIFY_PARAM_get_depth 3559 EXIST::FUNCTION: 3141X509_VERIFY_PARAM_get_depth 3559 EXIST::FUNCTION:
3142SHA224_Final 3560 EXIST::FUNCTION:SHA,SHA256 3142SHA224_Final 3560 EXIST::FUNCTION:SHA,SHA256
3143STORE_method_set_update_store_function 3561 EXIST:!VMS:FUNCTION: 3143STORE_meth_set_update_store_fn 3561 NOEXIST::FUNCTION:
3144STORE_meth_set_update_store_fn 3561 EXIST:VMS:FUNCTION: 3144STORE_method_set_update_store_function 3561 NOEXIST::FUNCTION:
3145SHA224_Update 3562 EXIST::FUNCTION:SHA,SHA256 3145SHA224_Update 3562 EXIST::FUNCTION:SHA,SHA256
3146d2i_ECPrivateKey 3563 EXIST::FUNCTION:EC 3146d2i_ECPrivateKey 3563 EXIST::FUNCTION:EC
3147ASN1_item_ndef_i2d 3564 EXIST::FUNCTION: 3147ASN1_item_ndef_i2d 3564 EXIST::FUNCTION:
3148STORE_delete_private_key 3565 EXIST::FUNCTION: 3148STORE_delete_private_key 3565 NOEXIST::FUNCTION:
3149ERR_pop_to_mark 3566 EXIST::FUNCTION: 3149ERR_pop_to_mark 3566 EXIST::FUNCTION:
3150ENGINE_register_all_STORE 3567 EXIST::FUNCTION:ENGINE 3150ENGINE_register_all_STORE 3567 EXIST::FUNCTION:ENGINE
3151X509_policy_level_get0_node 3568 EXIST::FUNCTION: 3151X509_policy_level_get0_node 3568 EXIST::FUNCTION:
3152i2d_PKCS7_NDEF 3569 EXIST::FUNCTION: 3152i2d_PKCS7_NDEF 3569 EXIST::FUNCTION:
3153EC_GROUP_get_degree 3570 EXIST::FUNCTION:EC 3153EC_GROUP_get_degree 3570 EXIST::FUNCTION:EC
3154ASN1_generate_v3 3571 EXIST::FUNCTION: 3154ASN1_generate_v3 3571 EXIST::FUNCTION:
3155STORE_ATTR_INFO_modify_cstr 3572 EXIST::FUNCTION: 3155STORE_ATTR_INFO_modify_cstr 3572 NOEXIST::FUNCTION:
3156X509_policy_tree_level_count 3573 EXIST::FUNCTION: 3156X509_policy_tree_level_count 3573 EXIST::FUNCTION:
3157BN_GF2m_add 3574 EXIST::FUNCTION: 3157BN_GF2m_add 3574 EXIST::FUNCTION:
3158EC_KEY_get0_group 3575 EXIST::FUNCTION:EC 3158EC_KEY_get0_group 3575 EXIST::FUNCTION:EC
3159STORE_generate_crl 3576 EXIST::FUNCTION: 3159STORE_generate_crl 3576 NOEXIST::FUNCTION:
3160STORE_store_public_key 3577 EXIST::FUNCTION: 3160STORE_store_public_key 3577 NOEXIST::FUNCTION:
3161X509_CERT_PAIR_free 3578 EXIST::FUNCTION: 3161X509_CERT_PAIR_free 3578 EXIST::FUNCTION:
3162STORE_revoke_private_key 3579 EXIST::FUNCTION: 3162STORE_revoke_private_key 3579 NOEXIST::FUNCTION:
3163BN_nist_mod_224 3580 EXIST::FUNCTION: 3163BN_nist_mod_224 3580 EXIST::FUNCTION:
3164SHA512_Final 3581 EXIST::FUNCTION:SHA,SHA512 3164SHA512_Final 3581 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3165STORE_ATTR_INFO_modify_dn 3582 EXIST::FUNCTION: 3165STORE_ATTR_INFO_modify_dn 3582 NOEXIST::FUNCTION:
3166STORE_method_get_initialise_function 3583 EXIST:!VMS:FUNCTION: 3166STORE_meth_get_initialise_fn 3583 NOEXIST::FUNCTION:
3167STORE_meth_get_initialise_fn 3583 EXIST:VMS:FUNCTION: 3167STORE_method_get_initialise_function 3583 NOEXIST::FUNCTION:
3168STORE_delete_number 3584 EXIST::FUNCTION: 3168STORE_delete_number 3584 NOEXIST::FUNCTION:
3169i2d_EC_PUBKEY_bio 3585 EXIST::FUNCTION:BIO,EC 3169i2d_EC_PUBKEY_bio 3585 EXIST::FUNCTION:BIO,EC
3170BIO_dgram_non_fatal_error 3586 EXIST::FUNCTION: 3170BIO_dgram_non_fatal_error 3586 EXIST::FUNCTION:
3171EC_GROUP_get_asn1_flag 3587 EXIST::FUNCTION:EC 3171EC_GROUP_get_asn1_flag 3587 EXIST::FUNCTION:EC
3172STORE_ATTR_INFO_in_ex 3588 EXIST::FUNCTION: 3172STORE_ATTR_INFO_in_ex 3588 NOEXIST::FUNCTION:
3173STORE_list_crl_start 3589 EXIST::FUNCTION: 3173STORE_list_crl_start 3589 NOEXIST::FUNCTION:
3174ECDH_get_ex_new_index 3590 EXIST::FUNCTION:ECDH 3174ECDH_get_ex_new_index 3590 EXIST::FUNCTION:ECDH
3175STORE_method_get_modify_function 3591 EXIST:!VMS:FUNCTION: 3175STORE_meth_get_modify_fn 3591 NOEXIST::FUNCTION:
3176STORE_meth_get_modify_fn 3591 EXIST:VMS:FUNCTION: 3176STORE_method_get_modify_function 3591 NOEXIST::FUNCTION:
3177v2i_ASN1_BIT_STRING 3592 EXIST::FUNCTION: 3177v2i_ASN1_BIT_STRING 3592 EXIST::FUNCTION:
3178STORE_store_certificate 3593 EXIST::FUNCTION: 3178STORE_store_certificate 3593 NOEXIST::FUNCTION:
3179OBJ_bsearch_ex 3594 EXIST::FUNCTION: 3179OBJ_bsearch_ex 3594 NOEXIST::FUNCTION:
3180X509_STORE_CTX_set_default 3595 EXIST::FUNCTION: 3180X509_STORE_CTX_set_default 3595 EXIST::FUNCTION:
3181STORE_ATTR_INFO_set_sha1str 3596 EXIST::FUNCTION: 3181STORE_ATTR_INFO_set_sha1str 3596 NOEXIST::FUNCTION:
3182BN_GF2m_mod_inv 3597 EXIST::FUNCTION: 3182BN_GF2m_mod_inv 3597 EXIST::FUNCTION:
3183BN_GF2m_mod_exp 3598 EXIST::FUNCTION: 3183BN_GF2m_mod_exp 3598 EXIST::FUNCTION:
3184STORE_modify_public_key 3599 EXIST::FUNCTION: 3184STORE_modify_public_key 3599 NOEXIST::FUNCTION:
3185STORE_method_get_list_start_function 3600 EXIST:!VMS:FUNCTION: 3185STORE_meth_get_list_start_fn 3600 NOEXIST::FUNCTION:
3186STORE_meth_get_list_start_fn 3600 EXIST:VMS:FUNCTION: 3186STORE_method_get_list_start_function 3600 NOEXIST::FUNCTION:
3187EC_GROUP_get0_seed 3601 EXIST::FUNCTION:EC 3187EC_GROUP_get0_seed 3601 EXIST::FUNCTION:EC
3188STORE_store_arbitrary 3602 EXIST::FUNCTION: 3188STORE_store_arbitrary 3602 NOEXIST::FUNCTION:
3189STORE_method_set_unlock_store_function 3603 EXIST:!VMS:FUNCTION: 3189STORE_meth_set_unlock_store_fn 3603 NOEXIST::FUNCTION:
3190STORE_meth_set_unlock_store_fn 3603 EXIST:VMS:FUNCTION: 3190STORE_method_set_unlock_store_function 3603 NOEXIST::FUNCTION:
3191BN_GF2m_mod_div_arr 3604 EXIST::FUNCTION: 3191BN_GF2m_mod_div_arr 3604 EXIST::FUNCTION:
3192ENGINE_set_ECDSA 3605 EXIST::FUNCTION:ENGINE 3192ENGINE_set_ECDSA 3605 EXIST::FUNCTION:ENGINE
3193STORE_create_method 3606 EXIST::FUNCTION: 3193STORE_create_method 3606 NOEXIST::FUNCTION:
3194ECPKParameters_print 3607 EXIST::FUNCTION:BIO,EC 3194ECPKParameters_print 3607 EXIST::FUNCTION:BIO,EC
3195EC_KEY_get0_private_key 3608 EXIST::FUNCTION:EC 3195EC_KEY_get0_private_key 3608 EXIST::FUNCTION:EC
3196PEM_write_EC_PUBKEY 3609 EXIST:!WIN16:FUNCTION:EC 3196PEM_write_EC_PUBKEY 3609 EXIST:!WIN16:FUNCTION:EC
@@ -3198,7 +3198,7 @@ X509_VERIFY_PARAM_set1 3610 EXIST::FUNCTION:
3198ECDH_set_method 3611 EXIST::FUNCTION:ECDH 3198ECDH_set_method 3611 EXIST::FUNCTION:ECDH
3199v2i_GENERAL_NAME_ex 3612 EXIST::FUNCTION: 3199v2i_GENERAL_NAME_ex 3612 EXIST::FUNCTION:
3200ECDH_set_ex_data 3613 EXIST::FUNCTION:ECDH 3200ECDH_set_ex_data 3613 EXIST::FUNCTION:ECDH
3201STORE_generate_key 3614 EXIST::FUNCTION: 3201STORE_generate_key 3614 NOEXIST::FUNCTION:
3202BN_nist_mod_521 3615 EXIST::FUNCTION: 3202BN_nist_mod_521 3615 EXIST::FUNCTION:
3203X509_policy_tree_get0_level 3616 EXIST::FUNCTION: 3203X509_policy_tree_get0_level 3616 EXIST::FUNCTION:
3204EC_GROUP_set_point_conversion_form 3617 EXIST:!VMS:FUNCTION:EC 3204EC_GROUP_set_point_conversion_form 3617 EXIST:!VMS:FUNCTION:EC
@@ -3206,7 +3206,7 @@ EC_GROUP_set_point_conv_form 3617 EXIST:VMS:FUNCTION:EC
3206PEM_read_EC_PUBKEY 3618 EXIST:!WIN16:FUNCTION:EC 3206PEM_read_EC_PUBKEY 3618 EXIST:!WIN16:FUNCTION:EC
3207i2d_ECDSA_SIG 3619 EXIST::FUNCTION:ECDSA 3207i2d_ECDSA_SIG 3619 EXIST::FUNCTION:ECDSA
3208ECDSA_OpenSSL 3620 EXIST::FUNCTION:ECDSA 3208ECDSA_OpenSSL 3620 EXIST::FUNCTION:ECDSA
3209STORE_delete_crl 3621 EXIST::FUNCTION: 3209STORE_delete_crl 3621 NOEXIST::FUNCTION:
3210EC_KEY_get_enc_flags 3622 EXIST::FUNCTION:EC 3210EC_KEY_get_enc_flags 3622 EXIST::FUNCTION:EC
3211ASN1_const_check_infinite_end 3623 EXIST::FUNCTION: 3211ASN1_const_check_infinite_end 3623 EXIST::FUNCTION:
3212EVP_PKEY_delete_attr 3624 EXIST::FUNCTION: 3212EVP_PKEY_delete_attr 3624 EXIST::FUNCTION:
@@ -3214,31 +3214,31 @@ ECDSA_set_default_method 3625 EXIST::FUNCTION:ECDSA
3214EC_POINT_set_compressed_coordinates_GF2m 3626 EXIST:!VMS:FUNCTION:EC 3214EC_POINT_set_compressed_coordinates_GF2m 3626 EXIST:!VMS:FUNCTION:EC
3215EC_POINT_set_compr_coords_GF2m 3626 EXIST:VMS:FUNCTION:EC 3215EC_POINT_set_compr_coords_GF2m 3626 EXIST:VMS:FUNCTION:EC
3216EC_GROUP_cmp 3627 EXIST::FUNCTION:EC 3216EC_GROUP_cmp 3627 EXIST::FUNCTION:EC
3217STORE_revoke_certificate 3628 EXIST::FUNCTION: 3217STORE_revoke_certificate 3628 NOEXIST::FUNCTION:
3218BN_get0_nist_prime_256 3629 EXIST::FUNCTION: 3218BN_get0_nist_prime_256 3629 EXIST::FUNCTION:
3219STORE_method_get_delete_function 3630 EXIST:!VMS:FUNCTION: 3219STORE_meth_get_delete_fn 3630 NOEXIST::FUNCTION:
3220STORE_meth_get_delete_fn 3630 EXIST:VMS:FUNCTION: 3220STORE_method_get_delete_function 3630 NOEXIST::FUNCTION:
3221SHA224_Init 3631 EXIST::FUNCTION:SHA,SHA256 3221SHA224_Init 3631 EXIST::FUNCTION:SHA,SHA256
3222PEM_read_ECPrivateKey 3632 EXIST:!WIN16:FUNCTION:EC 3222PEM_read_ECPrivateKey 3632 EXIST:!WIN16:FUNCTION:EC
3223SHA512_Init 3633 EXIST::FUNCTION:SHA,SHA512 3223SHA512_Init 3633 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3224STORE_parse_attrs_endp 3634 EXIST::FUNCTION: 3224STORE_parse_attrs_endp 3634 NOEXIST::FUNCTION:
3225BN_set_negative 3635 EXIST::FUNCTION: 3225BN_set_negative 3635 EXIST::FUNCTION:
3226ERR_load_ECDSA_strings 3636 EXIST::FUNCTION:ECDSA 3226ERR_load_ECDSA_strings 3636 EXIST::FUNCTION:ECDSA
3227EC_GROUP_get_basis_type 3637 EXIST::FUNCTION:EC 3227EC_GROUP_get_basis_type 3637 EXIST::FUNCTION:EC
3228STORE_list_public_key_next 3638 EXIST::FUNCTION: 3228STORE_list_public_key_next 3638 NOEXIST::FUNCTION:
3229i2v_ASN1_BIT_STRING 3639 EXIST::FUNCTION: 3229i2v_ASN1_BIT_STRING 3639 EXIST::FUNCTION:
3230STORE_OBJECT_free 3640 EXIST::FUNCTION: 3230STORE_OBJECT_free 3640 NOEXIST::FUNCTION:
3231BN_nist_mod_384 3641 EXIST::FUNCTION: 3231BN_nist_mod_384 3641 EXIST::FUNCTION:
3232i2d_X509_CERT_PAIR 3642 EXIST::FUNCTION: 3232i2d_X509_CERT_PAIR 3642 EXIST::FUNCTION:
3233PEM_write_ECPKParameters 3643 EXIST:!WIN16:FUNCTION:EC 3233PEM_write_ECPKParameters 3643 EXIST:!WIN16:FUNCTION:EC
3234ECDH_compute_key 3644 EXIST::FUNCTION:ECDH 3234ECDH_compute_key 3644 EXIST::FUNCTION:ECDH
3235STORE_ATTR_INFO_get0_sha1str 3645 EXIST::FUNCTION: 3235STORE_ATTR_INFO_get0_sha1str 3645 NOEXIST::FUNCTION:
3236ENGINE_register_all_ECDH 3646 EXIST::FUNCTION:ENGINE 3236ENGINE_register_all_ECDH 3646 EXIST::FUNCTION:ENGINE
3237pqueue_pop 3647 EXIST::FUNCTION: 3237pqueue_pop 3647 EXIST::FUNCTION:
3238STORE_ATTR_INFO_get0_cstr 3648 EXIST::FUNCTION: 3238STORE_ATTR_INFO_get0_cstr 3648 NOEXIST::FUNCTION:
3239POLICY_CONSTRAINTS_it 3649 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 3239POLICY_CONSTRAINTS_it 3649 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3240POLICY_CONSTRAINTS_it 3649 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 3240POLICY_CONSTRAINTS_it 3649 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3241STORE_get_ex_new_index 3650 EXIST::FUNCTION: 3241STORE_get_ex_new_index 3650 NOEXIST::FUNCTION:
3242EVP_PKEY_get_attr_by_OBJ 3651 EXIST::FUNCTION: 3242EVP_PKEY_get_attr_by_OBJ 3651 EXIST::FUNCTION:
3243X509_VERIFY_PARAM_add0_policy 3652 EXIST::FUNCTION: 3243X509_VERIFY_PARAM_add0_policy 3652 EXIST::FUNCTION:
3244BN_GF2m_mod_solve_quad 3653 EXIST::FUNCTION: 3244BN_GF2m_mod_solve_quad 3653 EXIST::FUNCTION:
@@ -3259,20 +3259,20 @@ EC_KEY_set_enc_flags 3665 EXIST::FUNCTION:EC
3259ECDSA_verify 3666 EXIST::FUNCTION:ECDSA 3259ECDSA_verify 3666 EXIST::FUNCTION:ECDSA
3260EC_POINT_point2hex 3667 EXIST::FUNCTION:EC 3260EC_POINT_point2hex 3667 EXIST::FUNCTION:EC
3261ENGINE_get_STORE 3668 EXIST::FUNCTION:ENGINE 3261ENGINE_get_STORE 3668 EXIST::FUNCTION:ENGINE
3262SHA512 3669 EXIST::FUNCTION:SHA,SHA512 3262SHA512 3669 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3263STORE_get_certificate 3670 EXIST::FUNCTION: 3263STORE_get_certificate 3670 NOEXIST::FUNCTION:
3264ECDSA_do_sign_ex 3671 EXIST::FUNCTION:ECDSA 3264ECDSA_do_sign_ex 3671 EXIST::FUNCTION:ECDSA
3265ECDSA_do_verify 3672 EXIST::FUNCTION:ECDSA 3265ECDSA_do_verify 3672 EXIST::FUNCTION:ECDSA
3266d2i_ECPrivateKey_fp 3673 EXIST::FUNCTION:EC,FP_API 3266d2i_ECPrivateKey_fp 3673 EXIST::FUNCTION:EC,FP_API
3267STORE_delete_certificate 3674 EXIST::FUNCTION: 3267STORE_delete_certificate 3674 NOEXIST::FUNCTION:
3268SHA512_Transform 3675 EXIST::FUNCTION:SHA,SHA512 3268SHA512_Transform 3675 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3269X509_STORE_set1_param 3676 EXIST::FUNCTION: 3269X509_STORE_set1_param 3676 EXIST::FUNCTION:
3270STORE_method_get_ctrl_function 3677 EXIST::FUNCTION: 3270STORE_method_get_ctrl_function 3677 NOEXIST::FUNCTION:
3271STORE_free 3678 EXIST::FUNCTION: 3271STORE_free 3678 NOEXIST::FUNCTION:
3272PEM_write_ECPrivateKey 3679 EXIST:!WIN16:FUNCTION:EC 3272PEM_write_ECPrivateKey 3679 EXIST:!WIN16:FUNCTION:EC
3273STORE_method_get_unlock_store_function 3680 EXIST:!VMS:FUNCTION: 3273STORE_meth_get_unlock_store_fn 3680 NOEXIST::FUNCTION:
3274STORE_meth_get_unlock_store_fn 3680 EXIST:VMS:FUNCTION: 3274STORE_method_get_unlock_store_function 3680 NOEXIST::FUNCTION:
3275STORE_get_ex_data 3681 EXIST::FUNCTION: 3275STORE_get_ex_data 3681 NOEXIST::FUNCTION:
3276EC_KEY_set_public_key 3682 EXIST::FUNCTION:EC 3276EC_KEY_set_public_key 3682 EXIST::FUNCTION:EC
3277PEM_read_ECPKParameters 3683 EXIST:!WIN16:FUNCTION:EC 3277PEM_read_ECPKParameters 3683 EXIST:!WIN16:FUNCTION:EC
3278X509_CERT_PAIR_new 3684 EXIST::FUNCTION: 3278X509_CERT_PAIR_new 3684 EXIST::FUNCTION:
@@ -3282,8 +3282,8 @@ DSA_generate_parameters_ex 3687 EXIST::FUNCTION:DSA
3282ECParameters_print_fp 3688 EXIST::FUNCTION:EC,FP_API 3282ECParameters_print_fp 3688 EXIST::FUNCTION:EC,FP_API
3283X509V3_NAME_from_section 3689 EXIST::FUNCTION: 3283X509V3_NAME_from_section 3689 EXIST::FUNCTION:
3284EVP_PKEY_add1_attr 3690 EXIST::FUNCTION: 3284EVP_PKEY_add1_attr 3690 EXIST::FUNCTION:
3285STORE_modify_crl 3691 EXIST::FUNCTION: 3285STORE_modify_crl 3691 NOEXIST::FUNCTION:
3286STORE_list_private_key_start 3692 EXIST::FUNCTION: 3286STORE_list_private_key_start 3692 NOEXIST::FUNCTION:
3287POLICY_MAPPINGS_it 3693 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 3287POLICY_MAPPINGS_it 3693 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3288POLICY_MAPPINGS_it 3693 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION: 3288POLICY_MAPPINGS_it 3693 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3289GENERAL_SUBTREE_it 3694 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE: 3289GENERAL_SUBTREE_it 3694 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
@@ -3292,7 +3292,7 @@ EC_GROUP_get_curve_name 3695 EXIST::FUNCTION:EC
3292PEM_write_X509_CERT_PAIR 3696 EXIST:!WIN16:FUNCTION: 3292PEM_write_X509_CERT_PAIR 3696 EXIST:!WIN16:FUNCTION:
3293BIO_dump_indent_cb 3697 EXIST::FUNCTION: 3293BIO_dump_indent_cb 3697 EXIST::FUNCTION:
3294d2i_X509_CERT_PAIR 3698 EXIST::FUNCTION: 3294d2i_X509_CERT_PAIR 3698 EXIST::FUNCTION:
3295STORE_list_private_key_endp 3699 EXIST::FUNCTION: 3295STORE_list_private_key_endp 3699 NOEXIST::FUNCTION:
3296asn1_const_Finish 3700 EXIST::FUNCTION: 3296asn1_const_Finish 3700 EXIST::FUNCTION:
3297i2d_EC_PUBKEY_fp 3701 EXIST::FUNCTION:EC,FP_API 3297i2d_EC_PUBKEY_fp 3701 EXIST::FUNCTION:EC,FP_API
3298BN_nist_mod_256 3702 EXIST::FUNCTION: 3298BN_nist_mod_256 3702 EXIST::FUNCTION:
@@ -3302,47 +3302,47 @@ BN_BLINDING_create_param 3705 EXIST::FUNCTION:
3302ECDSA_size 3706 EXIST::FUNCTION:ECDSA 3302ECDSA_size 3706 EXIST::FUNCTION:ECDSA
3303d2i_EC_PUBKEY_bio 3707 EXIST::FUNCTION:BIO,EC 3303d2i_EC_PUBKEY_bio 3707 EXIST::FUNCTION:BIO,EC
3304BN_get0_nist_prime_521 3708 EXIST::FUNCTION: 3304BN_get0_nist_prime_521 3708 EXIST::FUNCTION:
3305STORE_ATTR_INFO_modify_sha1str 3709 EXIST::FUNCTION: 3305STORE_ATTR_INFO_modify_sha1str 3709 NOEXIST::FUNCTION:
3306BN_generate_prime_ex 3710 EXIST::FUNCTION: 3306BN_generate_prime_ex 3710 EXIST::FUNCTION:
3307EC_GROUP_new_by_curve_name 3711 EXIST::FUNCTION:EC 3307EC_GROUP_new_by_curve_name 3711 EXIST::FUNCTION:EC
3308SHA256_Final 3712 EXIST::FUNCTION:SHA,SHA256 3308SHA256_Final 3712 EXIST::FUNCTION:SHA,SHA256
3309DH_generate_parameters_ex 3713 EXIST::FUNCTION:DH 3309DH_generate_parameters_ex 3713 EXIST::FUNCTION:DH
3310PEM_read_bio_ECPrivateKey 3714 EXIST::FUNCTION:EC 3310PEM_read_bio_ECPrivateKey 3714 EXIST::FUNCTION:EC
3311STORE_method_get_cleanup_function 3715 EXIST:!VMS:FUNCTION: 3311STORE_meth_get_cleanup_fn 3715 NOEXIST::FUNCTION:
3312STORE_meth_get_cleanup_fn 3715 EXIST:VMS:FUNCTION: 3312STORE_method_get_cleanup_function 3715 NOEXIST::FUNCTION:
3313ENGINE_get_ECDH 3716 EXIST::FUNCTION:ENGINE 3313ENGINE_get_ECDH 3716 EXIST::FUNCTION:ENGINE
3314d2i_ECDSA_SIG 3717 EXIST::FUNCTION:ECDSA 3314d2i_ECDSA_SIG 3717 EXIST::FUNCTION:ECDSA
3315BN_is_prime_fasttest_ex 3718 EXIST::FUNCTION: 3315BN_is_prime_fasttest_ex 3718 EXIST::FUNCTION:
3316ECDSA_sign 3719 EXIST::FUNCTION:ECDSA 3316ECDSA_sign 3719 EXIST::FUNCTION:ECDSA
3317X509_policy_check 3720 EXIST::FUNCTION: 3317X509_policy_check 3720 EXIST::FUNCTION:
3318EVP_PKEY_get_attr_by_NID 3721 EXIST::FUNCTION: 3318EVP_PKEY_get_attr_by_NID 3721 EXIST::FUNCTION:
3319STORE_set_ex_data 3722 EXIST::FUNCTION: 3319STORE_set_ex_data 3722 NOEXIST::FUNCTION:
3320ENGINE_get_ECDSA 3723 EXIST::FUNCTION:ENGINE 3320ENGINE_get_ECDSA 3723 EXIST::FUNCTION:ENGINE
3321EVP_ecdsa 3724 EXIST::FUNCTION:SHA 3321EVP_ecdsa 3724 EXIST::FUNCTION:SHA
3322BN_BLINDING_get_flags 3725 EXIST::FUNCTION: 3322BN_BLINDING_get_flags 3725 EXIST::FUNCTION:
3323PKCS12_add_cert 3726 EXIST::FUNCTION: 3323PKCS12_add_cert 3726 EXIST::FUNCTION:
3324STORE_OBJECT_new 3727 EXIST::FUNCTION: 3324STORE_OBJECT_new 3727 NOEXIST::FUNCTION:
3325ERR_load_ECDH_strings 3728 EXIST::FUNCTION:ECDH 3325ERR_load_ECDH_strings 3728 EXIST::FUNCTION:ECDH
3326EC_KEY_dup 3729 EXIST::FUNCTION:EC 3326EC_KEY_dup 3729 EXIST::FUNCTION:EC
3327EVP_CIPHER_CTX_rand_key 3730 EXIST::FUNCTION: 3327EVP_CIPHER_CTX_rand_key 3730 EXIST::FUNCTION:
3328ECDSA_set_method 3731 EXIST::FUNCTION:ECDSA 3328ECDSA_set_method 3731 EXIST::FUNCTION:ECDSA
3329a2i_IPADDRESS_NC 3732 EXIST::FUNCTION: 3329a2i_IPADDRESS_NC 3732 EXIST::FUNCTION:
3330d2i_ECParameters 3733 EXIST::FUNCTION:EC 3330d2i_ECParameters 3733 EXIST::FUNCTION:EC
3331STORE_list_certificate_end 3734 EXIST::FUNCTION: 3331STORE_list_certificate_end 3734 NOEXIST::FUNCTION:
3332STORE_get_crl 3735 EXIST::FUNCTION: 3332STORE_get_crl 3735 NOEXIST::FUNCTION:
3333X509_POLICY_NODE_print 3736 EXIST::FUNCTION: 3333X509_POLICY_NODE_print 3736 EXIST::FUNCTION:
3334SHA384_Init 3737 EXIST::FUNCTION:SHA,SHA512 3334SHA384_Init 3737 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3335EC_GF2m_simple_method 3738 EXIST::FUNCTION:EC 3335EC_GF2m_simple_method 3738 EXIST::FUNCTION:EC
3336ECDSA_set_ex_data 3739 EXIST::FUNCTION:ECDSA 3336ECDSA_set_ex_data 3739 EXIST::FUNCTION:ECDSA
3337SHA384_Final 3740 EXIST::FUNCTION:SHA,SHA512 3337SHA384_Final 3740 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3338PKCS7_set_digest 3741 EXIST::FUNCTION: 3338PKCS7_set_digest 3741 EXIST::FUNCTION:
3339EC_KEY_print 3742 EXIST::FUNCTION:BIO,EC 3339EC_KEY_print 3742 EXIST::FUNCTION:BIO,EC
3340STORE_method_set_lock_store_function 3743 EXIST:!VMS:FUNCTION: 3340STORE_meth_set_lock_store_fn 3743 NOEXIST::FUNCTION:
3341STORE_meth_set_lock_store_fn 3743 EXIST:VMS:FUNCTION: 3341STORE_method_set_lock_store_function 3743 NOEXIST::FUNCTION:
3342ECDSA_get_ex_new_index 3744 EXIST::FUNCTION:ECDSA 3342ECDSA_get_ex_new_index 3744 EXIST::FUNCTION:ECDSA
3343SHA384 3745 EXIST::FUNCTION:SHA,SHA512 3343SHA384 3745 EXIST:!VMSVAX:FUNCTION:SHA,SHA512
3344POLICY_MAPPING_new 3746 EXIST::FUNCTION: 3344POLICY_MAPPING_new 3746 EXIST::FUNCTION:
3345STORE_list_certificate_endp 3747 EXIST::FUNCTION: 3345STORE_list_certificate_endp 3747 NOEXIST::FUNCTION:
3346X509_STORE_CTX_get0_policy_tree 3748 EXIST::FUNCTION: 3346X509_STORE_CTX_get0_policy_tree 3748 EXIST::FUNCTION:
3347EC_GROUP_set_asn1_flag 3749 EXIST::FUNCTION:EC 3347EC_GROUP_set_asn1_flag 3749 EXIST::FUNCTION:EC
3348EC_KEY_check_key 3750 EXIST::FUNCTION:EC 3348EC_KEY_check_key 3750 EXIST::FUNCTION:EC
@@ -3350,13 +3350,13 @@ d2i_EC_PUBKEY_fp 3751 EXIST::FUNCTION:EC,FP_API
3350PKCS7_set0_type_other 3752 EXIST::FUNCTION: 3350PKCS7_set0_type_other 3752 EXIST::FUNCTION:
3351PEM_read_bio_X509_CERT_PAIR 3753 EXIST::FUNCTION: 3351PEM_read_bio_X509_CERT_PAIR 3753 EXIST::FUNCTION:
3352pqueue_next 3754 EXIST::FUNCTION: 3352pqueue_next 3754 EXIST::FUNCTION:
3353STORE_method_get_list_end_function 3755 EXIST:!VMS:FUNCTION: 3353STORE_meth_get_list_end_fn 3755 NOEXIST::FUNCTION:
3354STORE_meth_get_list_end_fn 3755 EXIST:VMS:FUNCTION: 3354STORE_method_get_list_end_function 3755 NOEXIST::FUNCTION:
3355EVP_PKEY_add1_attr_by_OBJ 3756 EXIST::FUNCTION: 3355EVP_PKEY_add1_attr_by_OBJ 3756 EXIST::FUNCTION:
3356X509_VERIFY_PARAM_set_time 3757 EXIST::FUNCTION: 3356X509_VERIFY_PARAM_set_time 3757 EXIST::FUNCTION:
3357pqueue_new 3758 EXIST::FUNCTION: 3357pqueue_new 3758 EXIST::FUNCTION:
3358ENGINE_set_default_ECDH 3759 EXIST::FUNCTION:ENGINE 3358ENGINE_set_default_ECDH 3759 EXIST::FUNCTION:ENGINE
3359STORE_new_method 3760 EXIST::FUNCTION: 3359STORE_new_method 3760 NOEXIST::FUNCTION:
3360PKCS12_add_key 3761 EXIST::FUNCTION: 3360PKCS12_add_key 3761 EXIST::FUNCTION:
3361DSO_merge 3762 EXIST::FUNCTION: 3361DSO_merge 3762 EXIST::FUNCTION:
3362EC_POINT_hex2point 3763 EXIST::FUNCTION:EC 3362EC_POINT_hex2point 3763 EXIST::FUNCTION:EC
@@ -3366,7 +3366,7 @@ pqueue_insert 3766 EXIST::FUNCTION:
3366pitem_free 3767 EXIST::FUNCTION: 3366pitem_free 3767 EXIST::FUNCTION:
3367BN_GF2m_mod_inv_arr 3768 EXIST::FUNCTION: 3367BN_GF2m_mod_inv_arr 3768 EXIST::FUNCTION:
3368ENGINE_unregister_ECDSA 3769 EXIST::FUNCTION:ENGINE 3368ENGINE_unregister_ECDSA 3769 EXIST::FUNCTION:ENGINE
3369BN_BLINDING_set_thread_id 3770 EXIST::FUNCTION: 3369BN_BLINDING_set_thread_id 3770 EXIST::FUNCTION:DEPRECATED
3370get_rfc3526_prime_8192 3771 EXIST::FUNCTION: 3370get_rfc3526_prime_8192 3771 EXIST::FUNCTION:
3371X509_VERIFY_PARAM_clear_flags 3772 EXIST::FUNCTION: 3371X509_VERIFY_PARAM_clear_flags 3772 EXIST::FUNCTION:
3372get_rfc2409_prime_1024 3773 EXIST::FUNCTION: 3372get_rfc2409_prime_1024 3773 EXIST::FUNCTION:
@@ -3385,7 +3385,7 @@ Camellia_cfb128_encrypt 3785 EXIST::FUNCTION:CAMELLIA
3385Camellia_cfb1_encrypt 3786 EXIST::FUNCTION:CAMELLIA 3385Camellia_cfb1_encrypt 3786 EXIST::FUNCTION:CAMELLIA
3386Camellia_cfb8_encrypt 3787 EXIST::FUNCTION:CAMELLIA 3386Camellia_cfb8_encrypt 3787 EXIST::FUNCTION:CAMELLIA
3387Camellia_ctr128_encrypt 3788 EXIST::FUNCTION:CAMELLIA 3387Camellia_ctr128_encrypt 3788 EXIST::FUNCTION:CAMELLIA
3388Camellia_cfbr_encrypt_block 3789 EXIST::FUNCTION:CAMELLIA 3388Camellia_cfbr_encrypt_block 3789 NOEXIST::FUNCTION:
3389Camellia_decrypt 3790 EXIST::FUNCTION:CAMELLIA 3389Camellia_decrypt 3790 EXIST::FUNCTION:CAMELLIA
3390Camellia_ecb_encrypt 3791 EXIST::FUNCTION:CAMELLIA 3390Camellia_ecb_encrypt 3791 EXIST::FUNCTION:CAMELLIA
3391Camellia_encrypt 3792 EXIST::FUNCTION:CAMELLIA 3391Camellia_encrypt 3792 EXIST::FUNCTION:CAMELLIA
@@ -3585,7 +3585,7 @@ CMS_data_create 3975 EXIST::FUNCTION:CMS
3585i2d_CMS_bio 3976 EXIST::FUNCTION:CMS 3585i2d_CMS_bio 3976 EXIST::FUNCTION:CMS
3586CMS_EncryptedData_set1_key 3977 EXIST::FUNCTION:CMS 3586CMS_EncryptedData_set1_key 3977 EXIST::FUNCTION:CMS
3587CMS_decrypt 3978 EXIST::FUNCTION:CMS 3587CMS_decrypt 3978 EXIST::FUNCTION:CMS
3588int_smime_write_ASN1 3979 EXIST::FUNCTION: 3588int_smime_write_ASN1 3979 NOEXIST::FUNCTION:
3589CMS_unsigned_delete_attr 3980 EXIST::FUNCTION:CMS 3589CMS_unsigned_delete_attr 3980 EXIST::FUNCTION:CMS
3590CMS_unsigned_get_attr_count 3981 EXIST::FUNCTION:CMS 3590CMS_unsigned_get_attr_count 3981 EXIST::FUNCTION:CMS
3591CMS_add_smimecap 3982 EXIST::FUNCTION:CMS 3591CMS_add_smimecap 3982 EXIST::FUNCTION:CMS
@@ -3657,53 +3657,52 @@ ENGINE_set_ld_ssl_clnt_cert_fn 4044 EXIST:VMS:FUNCTION:ENGINE
3657ENGINE_get_ssl_client_cert_function 4045 EXIST:!VMS:FUNCTION:ENGINE 3657ENGINE_get_ssl_client_cert_function 4045 EXIST:!VMS:FUNCTION:ENGINE
3658ENGINE_get_ssl_client_cert_fn 4045 EXIST:VMS:FUNCTION:ENGINE 3658ENGINE_get_ssl_client_cert_fn 4045 EXIST:VMS:FUNCTION:ENGINE
3659ENGINE_load_ssl_client_cert 4046 EXIST::FUNCTION:ENGINE 3659ENGINE_load_ssl_client_cert 4046 EXIST::FUNCTION:ENGINE
3660ENGINE_load_capi 4047 EXIST::FUNCTION:CAPIENG,ENGINE 3660ENGINE_load_capi 4047 EXIST::FUNCTION:ENGINE,STATIC_ENGINE
3661OPENSSL_isservice 4048 EXIST::FUNCTION: 3661OPENSSL_isservice 4048 EXIST::FUNCTION:
3662FIPS_dsa_sig_decode 4049 EXIST:OPENSSL_FIPS:FUNCTION:DSA 3662FIPS_dsa_sig_decode 4049 NOEXIST::FUNCTION:
3663EVP_CIPHER_CTX_clear_flags 4050 EXIST::FUNCTION: 3663EVP_CIPHER_CTX_clear_flags 4050 EXIST::FUNCTION:
3664FIPS_rand_status 4051 EXIST:OPENSSL_FIPS:FUNCTION: 3664FIPS_rand_status 4051 NOEXIST::FUNCTION:
3665FIPS_rand_set_key 4052 EXIST:OPENSSL_FIPS:FUNCTION: 3665FIPS_rand_set_key 4052 NOEXIST::FUNCTION:
3666CRYPTO_set_mem_info_functions 4053 EXIST::FUNCTION: 3666CRYPTO_set_mem_info_functions 4053 NOEXIST::FUNCTION:
3667RSA_X931_generate_key_ex 4054 EXIST::FUNCTION:RSA 3667RSA_X931_generate_key_ex 4054 NOEXIST::FUNCTION:
3668int_ERR_set_state_func 4055 EXIST:OPENSSL_FIPS:FUNCTION: 3668int_ERR_set_state_func 4055 NOEXIST::FUNCTION:
3669int_EVP_MD_set_engine_callbacks 4056 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3669int_EVP_MD_set_engine_callbacks 4056 NOEXIST::FUNCTION:
3670int_CRYPTO_set_do_dynlock_callback 4057 EXIST:!VMS:FUNCTION: 3670int_CRYPTO_set_do_dynlock_callback 4057 NOEXIST::FUNCTION:
3671int_CRYPTO_set_do_dynlock_cb 4057 EXIST:VMS:FUNCTION: 3671FIPS_rng_stick 4058 NOEXIST::FUNCTION:
3672FIPS_rng_stick 4058 EXIST:OPENSSL_FIPS:FUNCTION:
3673EVP_CIPHER_CTX_set_flags 4059 EXIST::FUNCTION: 3672EVP_CIPHER_CTX_set_flags 4059 EXIST::FUNCTION:
3674BN_X931_generate_prime_ex 4060 EXIST::FUNCTION: 3673BN_X931_generate_prime_ex 4060 NOEXIST::FUNCTION:
3675FIPS_selftest_check 4061 EXIST:OPENSSL_FIPS:FUNCTION: 3674FIPS_selftest_check 4061 NOEXIST::FUNCTION:
3676FIPS_rand_set_dt 4062 EXIST:OPENSSL_FIPS:FUNCTION: 3675FIPS_rand_set_dt 4062 NOEXIST::FUNCTION:
3677CRYPTO_dbg_pop_info 4063 EXIST::FUNCTION: 3676CRYPTO_dbg_pop_info 4063 NOEXIST::FUNCTION:
3678FIPS_dsa_free 4064 EXIST:OPENSSL_FIPS:FUNCTION:DSA 3677FIPS_dsa_free 4064 NOEXIST::FUNCTION:
3679RSA_X931_derive_ex 4065 EXIST::FUNCTION:RSA 3678RSA_X931_derive_ex 4065 NOEXIST::FUNCTION:
3680FIPS_rsa_new 4066 EXIST:OPENSSL_FIPS:FUNCTION:RSA 3679FIPS_rsa_new 4066 NOEXIST::FUNCTION:
3681FIPS_rand_bytes 4067 EXIST:OPENSSL_FIPS:FUNCTION: 3680FIPS_rand_bytes 4067 NOEXIST::FUNCTION:
3682fips_cipher_test 4068 EXIST:OPENSSL_FIPS:FUNCTION: 3681fips_cipher_test 4068 NOEXIST::FUNCTION:
3683EVP_CIPHER_CTX_test_flags 4069 EXIST::FUNCTION: 3682EVP_CIPHER_CTX_test_flags 4069 EXIST::FUNCTION:
3684CRYPTO_malloc_debug_init 4070 EXIST::FUNCTION: 3683CRYPTO_malloc_debug_init 4070 NOEXIST::FUNCTION:
3685CRYPTO_dbg_push_info 4071 EXIST::FUNCTION: 3684CRYPTO_dbg_push_info 4071 NOEXIST::FUNCTION:
3686FIPS_corrupt_rsa_keygen 4072 EXIST:OPENSSL_FIPS:FUNCTION: 3685FIPS_corrupt_rsa_keygen 4072 NOEXIST::FUNCTION:
3687FIPS_dh_new 4073 EXIST:OPENSSL_FIPS:FUNCTION:DH 3686FIPS_dh_new 4073 NOEXIST::FUNCTION:
3688FIPS_corrupt_dsa_keygen 4074 EXIST:OPENSSL_FIPS:FUNCTION: 3687FIPS_corrupt_dsa_keygen 4074 NOEXIST::FUNCTION:
3689FIPS_dh_free 4075 EXIST:OPENSSL_FIPS:FUNCTION:DH 3688FIPS_dh_free 4075 NOEXIST::FUNCTION:
3690fips_pkey_signature_test 4076 EXIST:OPENSSL_FIPS:FUNCTION: 3689fips_pkey_signature_test 4076 NOEXIST::FUNCTION:
3691EVP_add_alg_module 4077 EXIST::FUNCTION: 3690EVP_add_alg_module 4077 NOEXIST::FUNCTION:
3692int_RAND_init_engine_callbacks 4078 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3691int_RAND_init_engine_callbacks 4078 NOEXIST::FUNCTION:
3693int_EVP_CIPHER_set_engine_callbacks 4079 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3692int_EVP_CIPHER_set_engine_callbacks 4079 NOEXIST::FUNCTION:
3694int_EVP_MD_init_engine_callbacks 4080 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3693int_EVP_MD_init_engine_callbacks 4080 NOEXIST::FUNCTION:
3695FIPS_rand_test_mode 4081 EXIST:OPENSSL_FIPS:FUNCTION: 3694FIPS_rand_test_mode 4081 NOEXIST::FUNCTION:
3696FIPS_rand_reset 4082 EXIST:OPENSSL_FIPS:FUNCTION: 3695FIPS_rand_reset 4082 NOEXIST::FUNCTION:
3697FIPS_dsa_new 4083 EXIST:OPENSSL_FIPS:FUNCTION:DSA 3696FIPS_dsa_new 4083 NOEXIST::FUNCTION:
3698int_RAND_set_callbacks 4084 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3697int_RAND_set_callbacks 4084 NOEXIST::FUNCTION:
3699BN_X931_derive_prime_ex 4085 EXIST::FUNCTION: 3698BN_X931_derive_prime_ex 4085 NOEXIST::FUNCTION:
3700int_ERR_lib_init 4086 EXIST:OPENSSL_FIPS:FUNCTION: 3699int_ERR_lib_init 4086 NOEXIST::FUNCTION:
3701int_EVP_CIPHER_init_engine_callbacks 4087 EXIST:OPENSSL_FIPS:FUNCTION:ENGINE 3700int_EVP_CIPHER_init_engine_callbacks 4087 NOEXIST::FUNCTION:
3702FIPS_rsa_free 4088 EXIST:OPENSSL_FIPS:FUNCTION:RSA 3701FIPS_rsa_free 4088 NOEXIST::FUNCTION:
3703FIPS_dsa_sig_encode 4089 EXIST:OPENSSL_FIPS:FUNCTION:DSA 3702FIPS_dsa_sig_encode 4089 NOEXIST::FUNCTION:
3704CRYPTO_dbg_remove_all_info 4090 EXIST::FUNCTION: 3703CRYPTO_dbg_remove_all_info 4090 NOEXIST::FUNCTION:
3705OPENSSL_init 4091 EXIST::FUNCTION: 3704OPENSSL_init 4091 NOEXIST::FUNCTION:
3706private_Camellia_set_key 4092 EXIST:OPENSSL_FIPS:FUNCTION:CAMELLIA 3705private_Camellia_set_key 4092 NOEXIST::FUNCTION:
3707CRYPTO_strdup 4093 EXIST::FUNCTION: 3706CRYPTO_strdup 4093 EXIST::FUNCTION:
3708JPAKE_STEP3A_process 4094 EXIST::FUNCTION:JPAKE 3707JPAKE_STEP3A_process 4094 EXIST::FUNCTION:JPAKE
3709JPAKE_STEP1_release 4095 EXIST::FUNCTION:JPAKE 3708JPAKE_STEP1_release 4095 EXIST::FUNCTION:JPAKE
@@ -3725,3 +3724,457 @@ JPAKE_STEP2_release 4110 EXIST::FUNCTION:JPAKE
3725JPAKE_STEP3A_init 4111 EXIST::FUNCTION:JPAKE 3724JPAKE_STEP3A_init 4111 EXIST::FUNCTION:JPAKE
3726ERR_load_JPAKE_strings 4112 EXIST::FUNCTION:JPAKE 3725ERR_load_JPAKE_strings 4112 EXIST::FUNCTION:JPAKE
3727JPAKE_STEP2_init 4113 EXIST::FUNCTION:JPAKE 3726JPAKE_STEP2_init 4113 EXIST::FUNCTION:JPAKE
3727pqueue_size 4114 EXIST::FUNCTION:
3728i2d_TS_ACCURACY 4115 EXIST::FUNCTION:
3729i2d_TS_MSG_IMPRINT_fp 4116 EXIST::FUNCTION:
3730i2d_TS_MSG_IMPRINT 4117 EXIST::FUNCTION:
3731EVP_PKEY_print_public 4118 EXIST::FUNCTION:
3732EVP_PKEY_CTX_new 4119 EXIST::FUNCTION:
3733i2d_TS_TST_INFO 4120 EXIST::FUNCTION:
3734EVP_PKEY_asn1_find 4121 EXIST::FUNCTION:
3735DSO_METHOD_beos 4122 EXIST::FUNCTION:
3736TS_CONF_load_cert 4123 EXIST::FUNCTION:
3737TS_REQ_get_ext 4124 EXIST::FUNCTION:
3738EVP_PKEY_sign_init 4125 EXIST::FUNCTION:
3739ASN1_item_print 4126 EXIST::FUNCTION:
3740TS_TST_INFO_set_nonce 4127 EXIST::FUNCTION:
3741TS_RESP_dup 4128 EXIST::FUNCTION:
3742ENGINE_register_pkey_meths 4129 EXIST::FUNCTION:ENGINE
3743EVP_PKEY_asn1_add0 4130 EXIST::FUNCTION:
3744PKCS7_add0_attrib_signing_time 4131 EXIST::FUNCTION:
3745i2d_TS_TST_INFO_fp 4132 EXIST::FUNCTION:
3746BIO_asn1_get_prefix 4133 EXIST::FUNCTION:
3747TS_TST_INFO_set_time 4134 EXIST::FUNCTION:
3748EVP_PKEY_meth_set_decrypt 4135 EXIST::FUNCTION:
3749EVP_PKEY_set_type_str 4136 EXIST::FUNCTION:
3750EVP_PKEY_CTX_get_keygen_info 4137 EXIST::FUNCTION:
3751TS_REQ_set_policy_id 4138 EXIST::FUNCTION:
3752d2i_TS_RESP_fp 4139 EXIST::FUNCTION:
3753ENGINE_get_pkey_asn1_meth_engine 4140 EXIST:!VMS:FUNCTION:ENGINE
3754ENGINE_get_pkey_asn1_meth_eng 4140 EXIST:VMS:FUNCTION:ENGINE
3755WHIRLPOOL_Init 4141 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
3756TS_RESP_set_status_info 4142 EXIST::FUNCTION:
3757EVP_PKEY_keygen 4143 EXIST::FUNCTION:
3758EVP_DigestSignInit 4144 EXIST::FUNCTION:
3759TS_ACCURACY_set_millis 4145 EXIST::FUNCTION:
3760TS_REQ_dup 4146 EXIST::FUNCTION:
3761GENERAL_NAME_dup 4147 EXIST::FUNCTION:
3762ASN1_SEQUENCE_ANY_it 4148 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3763ASN1_SEQUENCE_ANY_it 4148 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3764WHIRLPOOL 4149 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
3765X509_STORE_get1_crls 4150 EXIST::FUNCTION:
3766ENGINE_get_pkey_asn1_meth 4151 EXIST::FUNCTION:ENGINE
3767EVP_PKEY_asn1_new 4152 EXIST::FUNCTION:
3768BIO_new_NDEF 4153 EXIST::FUNCTION:
3769ENGINE_get_pkey_meth 4154 EXIST::FUNCTION:ENGINE
3770TS_MSG_IMPRINT_set_algo 4155 EXIST::FUNCTION:
3771i2d_TS_TST_INFO_bio 4156 EXIST::FUNCTION:
3772TS_TST_INFO_set_ordering 4157 EXIST::FUNCTION:
3773TS_TST_INFO_get_ext_by_OBJ 4158 EXIST::FUNCTION:
3774CRYPTO_THREADID_set_pointer 4159 EXIST::FUNCTION:
3775TS_CONF_get_tsa_section 4160 EXIST::FUNCTION:
3776SMIME_write_ASN1 4161 EXIST::FUNCTION:
3777TS_RESP_CTX_set_signer_key 4162 EXIST::FUNCTION:
3778EVP_PKEY_encrypt_old 4163 EXIST::FUNCTION:
3779EVP_PKEY_encrypt_init 4164 EXIST::FUNCTION:
3780CRYPTO_THREADID_cpy 4165 EXIST::FUNCTION:
3781ASN1_PCTX_get_cert_flags 4166 EXIST::FUNCTION:
3782i2d_ESS_SIGNING_CERT 4167 EXIST::FUNCTION:
3783TS_CONF_load_key 4168 EXIST::FUNCTION:
3784i2d_ASN1_SEQUENCE_ANY 4169 EXIST::FUNCTION:
3785d2i_TS_MSG_IMPRINT_bio 4170 EXIST::FUNCTION:
3786EVP_PKEY_asn1_set_public 4171 EXIST::FUNCTION:
3787b2i_PublicKey_bio 4172 EXIST::FUNCTION:
3788BIO_asn1_set_prefix 4173 EXIST::FUNCTION:
3789EVP_PKEY_new_mac_key 4174 EXIST::FUNCTION:
3790BIO_new_CMS 4175 EXIST::FUNCTION:CMS
3791CRYPTO_THREADID_cmp 4176 EXIST::FUNCTION:
3792TS_REQ_ext_free 4177 EXIST::FUNCTION:
3793EVP_PKEY_asn1_set_free 4178 EXIST::FUNCTION:
3794EVP_PKEY_get0_asn1 4179 EXIST::FUNCTION:
3795d2i_NETSCAPE_X509 4180 EXIST::FUNCTION:
3796EVP_PKEY_verify_recover_init 4181 EXIST::FUNCTION:
3797EVP_PKEY_CTX_set_data 4182 EXIST::FUNCTION:
3798EVP_PKEY_keygen_init 4183 EXIST::FUNCTION:
3799TS_RESP_CTX_set_status_info 4184 EXIST::FUNCTION:
3800TS_MSG_IMPRINT_get_algo 4185 EXIST::FUNCTION:
3801TS_REQ_print_bio 4186 EXIST::FUNCTION:
3802EVP_PKEY_CTX_ctrl_str 4187 EXIST::FUNCTION:
3803EVP_PKEY_get_default_digest_nid 4188 EXIST::FUNCTION:
3804PEM_write_bio_PKCS7_stream 4189 EXIST::FUNCTION:
3805TS_MSG_IMPRINT_print_bio 4190 EXIST::FUNCTION:
3806BN_asc2bn 4191 EXIST::FUNCTION:
3807TS_REQ_get_policy_id 4192 EXIST::FUNCTION:
3808ENGINE_set_default_pkey_asn1_meths 4193 EXIST:!VMS:FUNCTION:ENGINE
3809ENGINE_set_def_pkey_asn1_meths 4193 EXIST:VMS:FUNCTION:ENGINE
3810d2i_TS_ACCURACY 4194 EXIST::FUNCTION:
3811DSO_global_lookup 4195 EXIST::FUNCTION:
3812TS_CONF_set_tsa_name 4196 EXIST::FUNCTION:
3813i2d_ASN1_SET_ANY 4197 EXIST::FUNCTION:
3814ENGINE_load_gost 4198 EXIST::FUNCTION:ENGINE,GOST,STATIC_ENGINE
3815WHIRLPOOL_BitUpdate 4199 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
3816ASN1_PCTX_get_flags 4200 EXIST::FUNCTION:
3817TS_TST_INFO_get_ext_by_NID 4201 EXIST::FUNCTION:
3818TS_RESP_new 4202 EXIST::FUNCTION:
3819ESS_CERT_ID_dup 4203 EXIST::FUNCTION:
3820TS_STATUS_INFO_dup 4204 EXIST::FUNCTION:
3821TS_REQ_delete_ext 4205 EXIST::FUNCTION:
3822EVP_DigestVerifyFinal 4206 EXIST::FUNCTION:
3823EVP_PKEY_print_params 4207 EXIST::FUNCTION:
3824i2d_CMS_bio_stream 4208 EXIST::FUNCTION:CMS
3825TS_REQ_get_msg_imprint 4209 EXIST::FUNCTION:
3826OBJ_find_sigid_by_algs 4210 EXIST::FUNCTION:
3827TS_TST_INFO_get_serial 4211 EXIST::FUNCTION:
3828TS_REQ_get_nonce 4212 EXIST::FUNCTION:
3829X509_PUBKEY_set0_param 4213 EXIST::FUNCTION:
3830EVP_PKEY_CTX_set0_keygen_info 4214 EXIST::FUNCTION:
3831DIST_POINT_set_dpname 4215 EXIST::FUNCTION:
3832i2d_ISSUING_DIST_POINT 4216 EXIST::FUNCTION:
3833ASN1_SET_ANY_it 4217 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3834ASN1_SET_ANY_it 4217 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3835EVP_PKEY_CTX_get_data 4218 EXIST::FUNCTION:
3836TS_STATUS_INFO_print_bio 4219 EXIST::FUNCTION:
3837EVP_PKEY_derive_init 4220 EXIST::FUNCTION:
3838d2i_TS_TST_INFO 4221 EXIST::FUNCTION:
3839EVP_PKEY_asn1_add_alias 4222 EXIST::FUNCTION:
3840d2i_TS_RESP_bio 4223 EXIST::FUNCTION:
3841OTHERNAME_cmp 4224 EXIST::FUNCTION:
3842GENERAL_NAME_set0_value 4225 EXIST::FUNCTION:
3843PKCS7_RECIP_INFO_get0_alg 4226 EXIST::FUNCTION:
3844TS_RESP_CTX_new 4227 EXIST::FUNCTION:
3845TS_RESP_set_tst_info 4228 EXIST::FUNCTION:
3846PKCS7_final 4229 EXIST::FUNCTION:
3847EVP_PKEY_base_id 4230 EXIST::FUNCTION:
3848TS_RESP_CTX_set_signer_cert 4231 EXIST::FUNCTION:
3849TS_REQ_set_msg_imprint 4232 EXIST::FUNCTION:
3850EVP_PKEY_CTX_ctrl 4233 EXIST::FUNCTION:
3851TS_CONF_set_digests 4234 EXIST::FUNCTION:
3852d2i_TS_MSG_IMPRINT 4235 EXIST::FUNCTION:
3853EVP_PKEY_meth_set_ctrl 4236 EXIST::FUNCTION:
3854TS_REQ_get_ext_by_NID 4237 EXIST::FUNCTION:
3855PKCS5_pbe_set0_algor 4238 EXIST::FUNCTION:
3856BN_BLINDING_thread_id 4239 EXIST::FUNCTION:
3857TS_ACCURACY_new 4240 EXIST::FUNCTION:
3858X509_CRL_METHOD_free 4241 EXIST::FUNCTION:
3859ASN1_PCTX_get_nm_flags 4242 EXIST::FUNCTION:
3860EVP_PKEY_meth_set_sign 4243 EXIST::FUNCTION:
3861CRYPTO_THREADID_current 4244 EXIST::FUNCTION:
3862EVP_PKEY_decrypt_init 4245 EXIST::FUNCTION:
3863NETSCAPE_X509_free 4246 EXIST::FUNCTION:
3864i2b_PVK_bio 4247 EXIST::FUNCTION:RC4
3865EVP_PKEY_print_private 4248 EXIST::FUNCTION:
3866GENERAL_NAME_get0_value 4249 EXIST::FUNCTION:
3867b2i_PVK_bio 4250 EXIST::FUNCTION:RC4
3868ASN1_UTCTIME_adj 4251 EXIST::FUNCTION:
3869TS_TST_INFO_new 4252 EXIST::FUNCTION:
3870EVP_MD_do_all_sorted 4253 EXIST::FUNCTION:
3871TS_CONF_set_default_engine 4254 EXIST::FUNCTION:
3872TS_ACCURACY_set_seconds 4255 EXIST::FUNCTION:
3873TS_TST_INFO_get_time 4256 EXIST::FUNCTION:
3874PKCS8_pkey_get0 4257 EXIST::FUNCTION:
3875EVP_PKEY_asn1_get0 4258 EXIST::FUNCTION:
3876OBJ_add_sigid 4259 EXIST::FUNCTION:
3877PKCS7_SIGNER_INFO_sign 4260 EXIST::FUNCTION:
3878EVP_PKEY_paramgen_init 4261 EXIST::FUNCTION:
3879EVP_PKEY_sign 4262 EXIST::FUNCTION:
3880OBJ_sigid_free 4263 EXIST::FUNCTION:
3881EVP_PKEY_meth_set_init 4264 EXIST::FUNCTION:
3882d2i_ESS_ISSUER_SERIAL 4265 EXIST::FUNCTION:
3883ISSUING_DIST_POINT_new 4266 EXIST::FUNCTION:
3884ASN1_TIME_adj 4267 EXIST::FUNCTION:
3885TS_OBJ_print_bio 4268 EXIST::FUNCTION:
3886EVP_PKEY_meth_set_verify_recover 4269 EXIST:!VMS:FUNCTION:
3887EVP_PKEY_meth_set_vrfy_recover 4269 EXIST:VMS:FUNCTION:
3888TS_RESP_get_status_info 4270 EXIST::FUNCTION:
3889CMS_stream 4271 EXIST::FUNCTION:CMS
3890EVP_PKEY_CTX_set_cb 4272 EXIST::FUNCTION:
3891PKCS7_to_TS_TST_INFO 4273 EXIST::FUNCTION:
3892ASN1_PCTX_get_oid_flags 4274 EXIST::FUNCTION:
3893TS_TST_INFO_add_ext 4275 EXIST::FUNCTION:
3894EVP_PKEY_meth_set_derive 4276 EXIST::FUNCTION:
3895i2d_TS_RESP_fp 4277 EXIST::FUNCTION:
3896i2d_TS_MSG_IMPRINT_bio 4278 EXIST::FUNCTION:
3897TS_RESP_CTX_set_accuracy 4279 EXIST::FUNCTION:
3898TS_REQ_set_nonce 4280 EXIST::FUNCTION:
3899ESS_CERT_ID_new 4281 EXIST::FUNCTION:
3900ENGINE_pkey_asn1_find_str 4282 EXIST::FUNCTION:ENGINE
3901TS_REQ_get_ext_count 4283 EXIST::FUNCTION:
3902BUF_reverse 4284 EXIST::FUNCTION:
3903TS_TST_INFO_print_bio 4285 EXIST::FUNCTION:
3904d2i_ISSUING_DIST_POINT 4286 EXIST::FUNCTION:
3905ENGINE_get_pkey_meths 4287 EXIST::FUNCTION:ENGINE
3906i2b_PrivateKey_bio 4288 EXIST::FUNCTION:
3907i2d_TS_RESP 4289 EXIST::FUNCTION:
3908b2i_PublicKey 4290 EXIST::FUNCTION:
3909TS_VERIFY_CTX_cleanup 4291 EXIST::FUNCTION:
3910TS_STATUS_INFO_free 4292 EXIST::FUNCTION:
3911TS_RESP_verify_token 4293 EXIST::FUNCTION:
3912OBJ_bsearch_ex_ 4294 EXIST::FUNCTION:
3913ASN1_bn_print 4295 EXIST::FUNCTION:BIO
3914EVP_PKEY_asn1_get_count 4296 EXIST::FUNCTION:
3915ENGINE_register_pkey_asn1_meths 4297 EXIST::FUNCTION:ENGINE
3916ASN1_PCTX_set_nm_flags 4298 EXIST::FUNCTION:
3917EVP_DigestVerifyInit 4299 EXIST::FUNCTION:
3918ENGINE_set_default_pkey_meths 4300 EXIST::FUNCTION:ENGINE
3919TS_TST_INFO_get_policy_id 4301 EXIST::FUNCTION:
3920TS_REQ_get_cert_req 4302 EXIST::FUNCTION:
3921X509_CRL_set_meth_data 4303 EXIST::FUNCTION:
3922PKCS8_pkey_set0 4304 EXIST::FUNCTION:
3923ASN1_STRING_copy 4305 EXIST::FUNCTION:
3924d2i_TS_TST_INFO_fp 4306 EXIST::FUNCTION:
3925X509_CRL_match 4307 EXIST::FUNCTION:
3926EVP_PKEY_asn1_set_private 4308 EXIST::FUNCTION:
3927TS_TST_INFO_get_ext_d2i 4309 EXIST::FUNCTION:
3928TS_RESP_CTX_add_policy 4310 EXIST::FUNCTION:
3929d2i_TS_RESP 4311 EXIST::FUNCTION:
3930TS_CONF_load_certs 4312 EXIST::FUNCTION:
3931TS_TST_INFO_get_msg_imprint 4313 EXIST::FUNCTION:
3932ERR_load_TS_strings 4314 EXIST::FUNCTION:
3933TS_TST_INFO_get_version 4315 EXIST::FUNCTION:
3934EVP_PKEY_CTX_dup 4316 EXIST::FUNCTION:
3935EVP_PKEY_meth_set_verify 4317 EXIST::FUNCTION:
3936i2b_PublicKey_bio 4318 EXIST::FUNCTION:
3937TS_CONF_set_certs 4319 EXIST::FUNCTION:
3938EVP_PKEY_asn1_get0_info 4320 EXIST::FUNCTION:
3939TS_VERIFY_CTX_free 4321 EXIST::FUNCTION:
3940TS_REQ_get_ext_by_critical 4322 EXIST::FUNCTION:
3941TS_RESP_CTX_set_serial_cb 4323 EXIST::FUNCTION:
3942X509_CRL_get_meth_data 4324 EXIST::FUNCTION:
3943TS_RESP_CTX_set_time_cb 4325 EXIST::FUNCTION:
3944TS_MSG_IMPRINT_get_msg 4326 EXIST::FUNCTION:
3945TS_TST_INFO_ext_free 4327 EXIST::FUNCTION:
3946TS_REQ_get_version 4328 EXIST::FUNCTION:
3947TS_REQ_add_ext 4329 EXIST::FUNCTION:
3948EVP_PKEY_CTX_set_app_data 4330 EXIST::FUNCTION:
3949OBJ_bsearch_ 4331 EXIST::FUNCTION:
3950EVP_PKEY_meth_set_verifyctx 4332 EXIST::FUNCTION:
3951i2d_PKCS7_bio_stream 4333 EXIST::FUNCTION:
3952CRYPTO_THREADID_set_numeric 4334 EXIST::FUNCTION:
3953PKCS7_sign_add_signer 4335 EXIST::FUNCTION:
3954d2i_TS_TST_INFO_bio 4336 EXIST::FUNCTION:
3955TS_TST_INFO_get_ordering 4337 EXIST::FUNCTION:
3956TS_RESP_print_bio 4338 EXIST::FUNCTION:
3957TS_TST_INFO_get_exts 4339 EXIST::FUNCTION:
3958HMAC_CTX_copy 4340 EXIST::FUNCTION:HMAC
3959PKCS5_pbe2_set_iv 4341 EXIST::FUNCTION:
3960ENGINE_get_pkey_asn1_meths 4342 EXIST::FUNCTION:ENGINE
3961b2i_PrivateKey 4343 EXIST::FUNCTION:
3962EVP_PKEY_CTX_get_app_data 4344 EXIST::FUNCTION:
3963TS_REQ_set_cert_req 4345 EXIST::FUNCTION:
3964CRYPTO_THREADID_set_callback 4346 EXIST::FUNCTION:
3965TS_CONF_set_serial 4347 EXIST::FUNCTION:
3966TS_TST_INFO_free 4348 EXIST::FUNCTION:
3967d2i_TS_REQ_fp 4349 EXIST::FUNCTION:
3968TS_RESP_verify_response 4350 EXIST::FUNCTION:
3969i2d_ESS_ISSUER_SERIAL 4351 EXIST::FUNCTION:
3970TS_ACCURACY_get_seconds 4352 EXIST::FUNCTION:
3971EVP_CIPHER_do_all 4353 EXIST::FUNCTION:
3972b2i_PrivateKey_bio 4354 EXIST::FUNCTION:
3973OCSP_CERTID_dup 4355 EXIST::FUNCTION:
3974X509_PUBKEY_get0_param 4356 EXIST::FUNCTION:
3975TS_MSG_IMPRINT_dup 4357 EXIST::FUNCTION:
3976PKCS7_print_ctx 4358 EXIST::FUNCTION:
3977i2d_TS_REQ_bio 4359 EXIST::FUNCTION:
3978EVP_whirlpool 4360 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
3979EVP_PKEY_asn1_set_param 4361 EXIST::FUNCTION:
3980EVP_PKEY_meth_set_encrypt 4362 EXIST::FUNCTION:
3981ASN1_PCTX_set_flags 4363 EXIST::FUNCTION:
3982i2d_ESS_CERT_ID 4364 EXIST::FUNCTION:
3983TS_VERIFY_CTX_new 4365 EXIST::FUNCTION:
3984TS_RESP_CTX_set_extension_cb 4366 EXIST::FUNCTION:
3985ENGINE_register_all_pkey_meths 4367 EXIST::FUNCTION:ENGINE
3986TS_RESP_CTX_set_status_info_cond 4368 EXIST:!VMS:FUNCTION:
3987TS_RESP_CTX_set_stat_info_cond 4368 EXIST:VMS:FUNCTION:
3988EVP_PKEY_verify 4369 EXIST::FUNCTION:
3989WHIRLPOOL_Final 4370 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
3990X509_CRL_METHOD_new 4371 EXIST::FUNCTION:
3991EVP_DigestSignFinal 4372 EXIST::FUNCTION:
3992TS_RESP_CTX_set_def_policy 4373 EXIST::FUNCTION:
3993NETSCAPE_X509_it 4374 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
3994NETSCAPE_X509_it 4374 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
3995TS_RESP_create_response 4375 EXIST::FUNCTION:
3996PKCS7_SIGNER_INFO_get0_algs 4376 EXIST::FUNCTION:
3997TS_TST_INFO_get_nonce 4377 EXIST::FUNCTION:
3998EVP_PKEY_decrypt_old 4378 EXIST::FUNCTION:
3999TS_TST_INFO_set_policy_id 4379 EXIST::FUNCTION:
4000TS_CONF_set_ess_cert_id_chain 4380 EXIST::FUNCTION:
4001EVP_PKEY_CTX_get0_pkey 4381 EXIST::FUNCTION:
4002d2i_TS_REQ 4382 EXIST::FUNCTION:
4003EVP_PKEY_asn1_find_str 4383 EXIST::FUNCTION:
4004BIO_f_asn1 4384 EXIST::FUNCTION:
4005ESS_SIGNING_CERT_new 4385 EXIST::FUNCTION:
4006EVP_PBE_find 4386 EXIST::FUNCTION:
4007X509_CRL_get0_by_cert 4387 EXIST::FUNCTION:
4008EVP_PKEY_derive 4388 EXIST::FUNCTION:
4009i2d_TS_REQ 4389 EXIST::FUNCTION:
4010TS_TST_INFO_delete_ext 4390 EXIST::FUNCTION:
4011ESS_ISSUER_SERIAL_free 4391 EXIST::FUNCTION:
4012ASN1_PCTX_set_str_flags 4392 EXIST::FUNCTION:
4013ENGINE_get_pkey_asn1_meth_str 4393 EXIST::FUNCTION:ENGINE
4014TS_CONF_set_signer_key 4394 EXIST::FUNCTION:
4015TS_ACCURACY_get_millis 4395 EXIST::FUNCTION:
4016TS_RESP_get_token 4396 EXIST::FUNCTION:
4017TS_ACCURACY_dup 4397 EXIST::FUNCTION:
4018ENGINE_register_all_pkey_asn1_meths 4398 EXIST:!VMS:FUNCTION:ENGINE
4019ENGINE_reg_all_pkey_asn1_meths 4398 EXIST:VMS:FUNCTION:ENGINE
4020X509_CRL_set_default_method 4399 EXIST::FUNCTION:
4021CRYPTO_THREADID_hash 4400 EXIST::FUNCTION:
4022CMS_ContentInfo_print_ctx 4401 EXIST::FUNCTION:CMS
4023TS_RESP_free 4402 EXIST::FUNCTION:
4024ISSUING_DIST_POINT_free 4403 EXIST::FUNCTION:
4025ESS_ISSUER_SERIAL_new 4404 EXIST::FUNCTION:
4026CMS_add1_crl 4405 EXIST::FUNCTION:CMS
4027PKCS7_add1_attrib_digest 4406 EXIST::FUNCTION:
4028TS_RESP_CTX_add_md 4407 EXIST::FUNCTION:
4029TS_TST_INFO_dup 4408 EXIST::FUNCTION:
4030ENGINE_set_pkey_asn1_meths 4409 EXIST::FUNCTION:ENGINE
4031PEM_write_bio_Parameters 4410 EXIST::FUNCTION:
4032TS_TST_INFO_get_accuracy 4411 EXIST::FUNCTION:
4033X509_CRL_get0_by_serial 4412 EXIST::FUNCTION:
4034TS_TST_INFO_set_version 4413 EXIST::FUNCTION:
4035TS_RESP_CTX_get_tst_info 4414 EXIST::FUNCTION:
4036TS_RESP_verify_signature 4415 EXIST::FUNCTION:
4037CRYPTO_THREADID_get_callback 4416 EXIST::FUNCTION:
4038TS_TST_INFO_get_tsa 4417 EXIST::FUNCTION:
4039TS_STATUS_INFO_new 4418 EXIST::FUNCTION:
4040EVP_PKEY_CTX_get_cb 4419 EXIST::FUNCTION:
4041TS_REQ_get_ext_d2i 4420 EXIST::FUNCTION:
4042GENERAL_NAME_set0_othername 4421 EXIST::FUNCTION:
4043TS_TST_INFO_get_ext_count 4422 EXIST::FUNCTION:
4044TS_RESP_CTX_get_request 4423 EXIST::FUNCTION:
4045i2d_NETSCAPE_X509 4424 EXIST::FUNCTION:
4046ENGINE_get_pkey_meth_engine 4425 EXIST::FUNCTION:ENGINE
4047EVP_PKEY_meth_set_signctx 4426 EXIST::FUNCTION:
4048EVP_PKEY_asn1_copy 4427 EXIST::FUNCTION:
4049ASN1_TYPE_cmp 4428 EXIST::FUNCTION:
4050EVP_CIPHER_do_all_sorted 4429 EXIST::FUNCTION:
4051EVP_PKEY_CTX_free 4430 EXIST::FUNCTION:
4052ISSUING_DIST_POINT_it 4431 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
4053ISSUING_DIST_POINT_it 4431 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
4054d2i_TS_MSG_IMPRINT_fp 4432 EXIST::FUNCTION:
4055X509_STORE_get1_certs 4433 EXIST::FUNCTION:
4056EVP_PKEY_CTX_get_operation 4434 EXIST::FUNCTION:
4057d2i_ESS_SIGNING_CERT 4435 EXIST::FUNCTION:
4058TS_CONF_set_ordering 4436 EXIST::FUNCTION:
4059EVP_PBE_alg_add_type 4437 EXIST::FUNCTION:
4060TS_REQ_set_version 4438 EXIST::FUNCTION:
4061EVP_PKEY_get0 4439 EXIST::FUNCTION:
4062BIO_asn1_set_suffix 4440 EXIST::FUNCTION:
4063i2d_TS_STATUS_INFO 4441 EXIST::FUNCTION:
4064EVP_MD_do_all 4442 EXIST::FUNCTION:
4065TS_TST_INFO_set_accuracy 4443 EXIST::FUNCTION:
4066PKCS7_add_attrib_content_type 4444 EXIST::FUNCTION:
4067ERR_remove_thread_state 4445 EXIST::FUNCTION:
4068EVP_PKEY_meth_add0 4446 EXIST::FUNCTION:
4069TS_TST_INFO_set_tsa 4447 EXIST::FUNCTION:
4070EVP_PKEY_meth_new 4448 EXIST::FUNCTION:
4071WHIRLPOOL_Update 4449 EXIST:!VMSVAX:FUNCTION:WHIRLPOOL
4072TS_CONF_set_accuracy 4450 EXIST::FUNCTION:
4073ASN1_PCTX_set_oid_flags 4451 EXIST::FUNCTION:
4074ESS_SIGNING_CERT_dup 4452 EXIST::FUNCTION:
4075d2i_TS_REQ_bio 4453 EXIST::FUNCTION:
4076X509_time_adj_ex 4454 EXIST::FUNCTION:
4077TS_RESP_CTX_add_flags 4455 EXIST::FUNCTION:
4078d2i_TS_STATUS_INFO 4456 EXIST::FUNCTION:
4079TS_MSG_IMPRINT_set_msg 4457 EXIST::FUNCTION:
4080BIO_asn1_get_suffix 4458 EXIST::FUNCTION:
4081TS_REQ_free 4459 EXIST::FUNCTION:
4082EVP_PKEY_meth_free 4460 EXIST::FUNCTION:
4083TS_REQ_get_exts 4461 EXIST::FUNCTION:
4084TS_RESP_CTX_set_clock_precision_digits 4462 EXIST:!VMS:FUNCTION:
4085TS_RESP_CTX_set_clk_prec_digits 4462 EXIST:VMS:FUNCTION:
4086TS_RESP_CTX_add_failure_info 4463 EXIST::FUNCTION:
4087i2d_TS_RESP_bio 4464 EXIST::FUNCTION:
4088EVP_PKEY_CTX_get0_peerkey 4465 EXIST::FUNCTION:
4089PEM_write_bio_CMS_stream 4466 EXIST::FUNCTION:CMS
4090TS_REQ_new 4467 EXIST::FUNCTION:
4091TS_MSG_IMPRINT_new 4468 EXIST::FUNCTION:
4092EVP_PKEY_meth_find 4469 EXIST::FUNCTION:
4093EVP_PKEY_id 4470 EXIST::FUNCTION:
4094TS_TST_INFO_set_serial 4471 EXIST::FUNCTION:
4095a2i_GENERAL_NAME 4472 EXIST::FUNCTION:
4096TS_CONF_set_crypto_device 4473 EXIST::FUNCTION:
4097EVP_PKEY_verify_init 4474 EXIST::FUNCTION:
4098TS_CONF_set_policies 4475 EXIST::FUNCTION:
4099ASN1_PCTX_new 4476 EXIST::FUNCTION:
4100ESS_CERT_ID_free 4477 EXIST::FUNCTION:
4101ENGINE_unregister_pkey_meths 4478 EXIST::FUNCTION:ENGINE
4102TS_MSG_IMPRINT_free 4479 EXIST::FUNCTION:
4103TS_VERIFY_CTX_init 4480 EXIST::FUNCTION:
4104PKCS7_stream 4481 EXIST::FUNCTION:
4105TS_RESP_CTX_set_certs 4482 EXIST::FUNCTION:
4106TS_CONF_set_def_policy 4483 EXIST::FUNCTION:
4107ASN1_GENERALIZEDTIME_adj 4484 EXIST::FUNCTION:
4108NETSCAPE_X509_new 4485 EXIST::FUNCTION:
4109TS_ACCURACY_free 4486 EXIST::FUNCTION:
4110TS_RESP_get_tst_info 4487 EXIST::FUNCTION:
4111EVP_PKEY_derive_set_peer 4488 EXIST::FUNCTION:
4112PEM_read_bio_Parameters 4489 EXIST::FUNCTION:
4113TS_CONF_set_clock_precision_digits 4490 EXIST:!VMS:FUNCTION:
4114TS_CONF_set_clk_prec_digits 4490 EXIST:VMS:FUNCTION:
4115ESS_ISSUER_SERIAL_dup 4491 EXIST::FUNCTION:
4116TS_ACCURACY_get_micros 4492 EXIST::FUNCTION:
4117ASN1_PCTX_get_str_flags 4493 EXIST::FUNCTION:
4118NAME_CONSTRAINTS_check 4494 EXIST::FUNCTION:
4119ASN1_BIT_STRING_check 4495 EXIST::FUNCTION:
4120X509_check_akid 4496 EXIST::FUNCTION:
4121ENGINE_unregister_pkey_asn1_meths 4497 EXIST:!VMS:FUNCTION:ENGINE
4122ENGINE_unreg_pkey_asn1_meths 4497 EXIST:VMS:FUNCTION:ENGINE
4123ASN1_PCTX_free 4498 EXIST::FUNCTION:
4124PEM_write_bio_ASN1_stream 4499 EXIST::FUNCTION:
4125i2d_ASN1_bio_stream 4500 EXIST::FUNCTION:
4126TS_X509_ALGOR_print_bio 4501 EXIST::FUNCTION:
4127EVP_PKEY_meth_set_cleanup 4502 EXIST::FUNCTION:
4128EVP_PKEY_asn1_free 4503 EXIST::FUNCTION:
4129ESS_SIGNING_CERT_free 4504 EXIST::FUNCTION:
4130TS_TST_INFO_set_msg_imprint 4505 EXIST::FUNCTION:
4131GENERAL_NAME_cmp 4506 EXIST::FUNCTION:
4132d2i_ASN1_SET_ANY 4507 EXIST::FUNCTION:
4133ENGINE_set_pkey_meths 4508 EXIST::FUNCTION:ENGINE
4134i2d_TS_REQ_fp 4509 EXIST::FUNCTION:
4135d2i_ASN1_SEQUENCE_ANY 4510 EXIST::FUNCTION:
4136GENERAL_NAME_get0_otherName 4511 EXIST::FUNCTION:
4137d2i_ESS_CERT_ID 4512 EXIST::FUNCTION:
4138OBJ_find_sigid_algs 4513 EXIST::FUNCTION:
4139EVP_PKEY_meth_set_keygen 4514 EXIST::FUNCTION:
4140PKCS5_PBKDF2_HMAC 4515 EXIST::FUNCTION:
4141EVP_PKEY_paramgen 4516 EXIST::FUNCTION:
4142EVP_PKEY_meth_set_paramgen 4517 EXIST::FUNCTION:
4143BIO_new_PKCS7 4518 EXIST::FUNCTION:
4144EVP_PKEY_verify_recover 4519 EXIST::FUNCTION:
4145TS_ext_print_bio 4520 EXIST::FUNCTION:
4146TS_ASN1_INTEGER_print_bio 4521 EXIST::FUNCTION:
4147check_defer 4522 EXIST::FUNCTION:
4148DSO_pathbyaddr 4523 EXIST::FUNCTION:
4149EVP_PKEY_set_type 4524 EXIST::FUNCTION:
4150TS_ACCURACY_set_micros 4525 EXIST::FUNCTION:
4151TS_REQ_to_TS_VERIFY_CTX 4526 EXIST::FUNCTION:
4152EVP_PKEY_meth_set_copy 4527 EXIST::FUNCTION:
4153ASN1_PCTX_set_cert_flags 4528 EXIST::FUNCTION:
4154TS_TST_INFO_get_ext 4529 EXIST::FUNCTION:
4155EVP_PKEY_asn1_set_ctrl 4530 EXIST::FUNCTION:
4156TS_TST_INFO_get_ext_by_critical 4531 EXIST::FUNCTION:
4157EVP_PKEY_CTX_new_id 4532 EXIST::FUNCTION:
4158TS_REQ_get_ext_by_OBJ 4533 EXIST::FUNCTION:
4159TS_CONF_set_signer_cert 4534 EXIST::FUNCTION:
4160X509_NAME_hash_old 4535 EXIST::FUNCTION:
4161ASN1_TIME_set_string 4536 EXIST::FUNCTION:
4162EVP_MD_flags 4537 EXIST::FUNCTION:
4163TS_RESP_CTX_free 4538 EXIST::FUNCTION:
4164DSAparams_dup 4539 EXIST::FUNCTION:DSA
4165DHparams_dup 4540 EXIST::FUNCTION:DH
4166OCSP_REQ_CTX_add1_header 4541 EXIST::FUNCTION:
4167OCSP_REQ_CTX_set1_req 4542 EXIST::FUNCTION:
4168X509_STORE_set_verify_cb 4543 EXIST::FUNCTION:
4169X509_STORE_CTX_get0_current_crl 4544 EXIST::FUNCTION:
4170X509_STORE_CTX_get0_parent_ctx 4545 EXIST::FUNCTION:
4171X509_STORE_CTX_get0_current_issuer 4546 EXIST:!VMS:FUNCTION:
4172X509_STORE_CTX_get0_cur_issuer 4546 EXIST:VMS:FUNCTION:
4173X509_issuer_name_hash_old 4547 EXIST::FUNCTION:MD5
4174X509_subject_name_hash_old 4548 EXIST::FUNCTION:MD5
4175EVP_CIPHER_CTX_copy 4549 EXIST::FUNCTION:
4176UI_method_get_prompt_constructor 4550 EXIST:!VMS:FUNCTION:
4177UI_method_get_prompt_constructr 4550 EXIST:VMS:FUNCTION:
4178UI_method_set_prompt_constructor 4551 EXIST:!VMS:FUNCTION:
4179UI_method_set_prompt_constructr 4551 EXIST:VMS:FUNCTION:
4180EVP_read_pw_string_min 4552 EXIST::FUNCTION:
diff --git a/src/lib/libssl/src/util/mk1mf.pl b/src/lib/libssl/src/util/mk1mf.pl
index f2b92b2b25..280e9de1ad 100644
--- a/src/lib/libssl/src/util/mk1mf.pl
+++ b/src/lib/libssl/src/util/mk1mf.pl
@@ -6,36 +6,56 @@
6# 6#
7 7
8$INSTALLTOP="/usr/local/ssl"; 8$INSTALLTOP="/usr/local/ssl";
9$OPENSSLDIR="/usr/local/ssl";
9$OPTIONS=""; 10$OPTIONS="";
10$ssl_version=""; 11$ssl_version="";
11$banner="\t\@echo Building OpenSSL"; 12$banner="\t\@echo Building OpenSSL";
12 13
13my $no_static_engine = 0; 14my $no_static_engine = 1;
14my $engines = ""; 15my $engines = "";
15local $zlib_opt = 0; # 0 = no zlib, 1 = static, 2 = dynamic 16local $zlib_opt = 0; # 0 = no zlib, 1 = static, 2 = dynamic
16local $zlib_lib = ""; 17local $zlib_lib = "";
18local $perl_asm = 0; # 1 to autobuild asm files from perl scripts
19
20# Options to import from top level Makefile
21
22my %mf_import = (
23 VERSION => \$ssl_version,
24 OPTIONS => \$OPTIONS,
25 INSTALLTOP => \$INSTALLTOP,
26 OPENSSLDIR => \$OPENSSLDIR,
27 PLATFORM => \$mf_platform,
28 CFLAG => \$mf_cflag,
29 DEPFLAG => \$mf_depflag,
30 CPUID_OBJ => \$mf_cpuid_asm,
31 BN_ASM => \$mf_bn_asm,
32 DES_ENC => \$mf_des_asm,
33 AES_ENC => \$mf_aes_asm,
34 BF_ENC => \$mf_bf_asm,
35 CAST_ENC => \$mf_cast_asm,
36 RC4_ENC => \$mf_rc4_asm,
37 RC5_ENC => \$mf_rc5_asm,
38 MD5_ASM_OBJ => \$mf_md5_asm,
39 SHA1_ASM_OBJ => \$mf_sha_asm,
40 RMD160_ASM_OBJ => \$mf_rmd_asm,
41 WP_ASM_OBJ => \$mf_wp_asm,
42 CMLL_ENC => \$mf_cm_asm
43);
17 44
18local $fips_canister_path = "";
19my $fips_premain_dso_exe_path = "";
20my $fips_premain_c_path = "";
21my $fips_sha1_exe_path = "";
22
23local $fipscanisterbuild = 0;
24local $fipsdso = 0;
25
26my $fipslibdir = "";
27my $baseaddr = "";
28
29my $ex_l_libs = "";
30 45
31open(IN,"<Makefile") || die "unable to open Makefile!\n"; 46open(IN,"<Makefile") || die "unable to open Makefile!\n";
32while(<IN>) { 47while(<IN>) {
33 $ssl_version=$1 if (/^VERSION=(.*)$/); 48 my ($mf_opt, $mf_ref);
34 $OPTIONS=$1 if (/^OPTIONS=(.*)$/); 49 while (($mf_opt, $mf_ref) = each %mf_import) {
35 $INSTALLTOP=$1 if (/^INSTALLTOP=(.*$)/); 50 if (/^$mf_opt\s*=\s*(.*)$/) {
51 $$mf_ref = $1;
52 }
53 }
36} 54}
37close(IN); 55close(IN);
38 56
57$debug = 1 if $mf_platform =~ /^debug-/;
58
39die "Makefile is not the toplevel Makefile!\n" if $ssl_version eq ""; 59die "Makefile is not the toplevel Makefile!\n" if $ssl_version eq "";
40 60
41$infile="MINFO"; 61$infile="MINFO";
@@ -58,6 +78,7 @@ $infile="MINFO";
58 "netware-libc", "CodeWarrior for NetWare - LibC - with WinSock Sockets", 78 "netware-libc", "CodeWarrior for NetWare - LibC - with WinSock Sockets",
59 "netware-libc-bsdsock", "CodeWarrior for NetWare - LibC - with BSD Sockets", 79 "netware-libc-bsdsock", "CodeWarrior for NetWare - LibC - with BSD Sockets",
60 "default","cc under unix", 80 "default","cc under unix",
81 "auto", "auto detect from top level Makefile"
61 ); 82 );
62 83
63$platform=""; 84$platform="";
@@ -144,6 +165,12 @@ $bin_dir=(defined($VARS{'BIN'}))?$VARS{'BIN'}:'';
144$NT=0; 165$NT=0;
145 166
146push(@INC,"util/pl","pl"); 167push(@INC,"util/pl","pl");
168
169if ($platform eq "auto") {
170 $platform = $mf_platform;
171 print STDERR "Imported platform $mf_platform\n";
172}
173
147if (($platform =~ /VC-(.+)/)) 174if (($platform =~ /VC-(.+)/))
148 { 175 {
149 $FLAVOR=$1; 176 $FLAVOR=$1;
@@ -228,13 +255,12 @@ $cflags.=" -DOPENSSL_NO_DES" if $no_des;
228$cflags.=" -DOPENSSL_NO_RSA" if $no_rsa; 255$cflags.=" -DOPENSSL_NO_RSA" if $no_rsa;
229$cflags.=" -DOPENSSL_NO_DSA" if $no_dsa; 256$cflags.=" -DOPENSSL_NO_DSA" if $no_dsa;
230$cflags.=" -DOPENSSL_NO_DH" if $no_dh; 257$cflags.=" -DOPENSSL_NO_DH" if $no_dh;
258$cflags.=" -DOPENSSL_NO_WHIRLPOOL" if $no_whirlpool;
231$cflags.=" -DOPENSSL_NO_SOCK" if $no_sock; 259$cflags.=" -DOPENSSL_NO_SOCK" if $no_sock;
232$cflags.=" -DOPENSSL_NO_SSL2" if $no_ssl2; 260$cflags.=" -DOPENSSL_NO_SSL2" if $no_ssl2;
233$cflags.=" -DOPENSSL_NO_SSL3" if $no_ssl3; 261$cflags.=" -DOPENSSL_NO_SSL3" if $no_ssl3;
234$cflags.=" -DOPENSSL_NO_TLSEXT" if $no_tlsext; 262$cflags.=" -DOPENSSL_NO_TLSEXT" if $no_tlsext;
235$cflags.=" -DOPENSSL_NO_CMS" if $no_cms; 263$cflags.=" -DOPENSSL_NO_CMS" if $no_cms;
236$cflags.=" -DOPENSSL_NO_JPAKE" if $no_jpake;
237$cflags.=" -DOPENSSL_NO_CAPIENG" if $no_capieng;
238$cflags.=" -DOPENSSL_NO_ERR" if $no_err; 264$cflags.=" -DOPENSSL_NO_ERR" if $no_err;
239$cflags.=" -DOPENSSL_NO_KRB5" if $no_krb5; 265$cflags.=" -DOPENSSL_NO_KRB5" if $no_krb5;
240$cflags.=" -DOPENSSL_NO_EC" if $no_ec; 266$cflags.=" -DOPENSSL_NO_EC" if $no_ec;
@@ -242,7 +268,7 @@ $cflags.=" -DOPENSSL_NO_ECDSA" if $no_ecdsa;
242$cflags.=" -DOPENSSL_NO_ECDH" if $no_ecdh; 268$cflags.=" -DOPENSSL_NO_ECDH" if $no_ecdh;
243$cflags.=" -DOPENSSL_NO_ENGINE" if $no_engine; 269$cflags.=" -DOPENSSL_NO_ENGINE" if $no_engine;
244$cflags.=" -DOPENSSL_NO_HW" if $no_hw; 270$cflags.=" -DOPENSSL_NO_HW" if $no_hw;
245$cflags.=" -DOPENSSL_FIPS" if $fips; 271$cflags.=" -DOPENSSL_NO_JPAKE" if $no_jpake;
246$cflags.= " -DZLIB" if $zlib_opt; 272$cflags.= " -DZLIB" if $zlib_opt;
247$cflags.= " -DZLIB_SHARED" if $zlib_opt == 2; 273$cflags.= " -DZLIB_SHARED" if $zlib_opt == 2;
248 274
@@ -264,9 +290,9 @@ else
264 290
265$ex_libs="$l_flags$ex_libs" if ($l_flags ne ""); 291$ex_libs="$l_flags$ex_libs" if ($l_flags ne "");
266 292
293
267%shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL", 294%shlib_ex_cflags=("SSL" => " -DOPENSSL_BUILD_SHLIBSSL",
268 "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO", 295 "CRYPTO" => " -DOPENSSL_BUILD_SHLIBCRYPTO");
269 "FIPS" => " -DOPENSSL_BUILD_SHLIBCRYPTO");
270 296
271if ($msdos) 297if ($msdos)
272 { 298 {
@@ -280,6 +306,7 @@ if ($msdos)
280$link="$bin_dir$link" if ($link !~ /^\$/); 306$link="$bin_dir$link" if ($link !~ /^\$/);
281 307
282$INSTALLTOP =~ s|/|$o|g; 308$INSTALLTOP =~ s|/|$o|g;
309$OPENSSLDIR =~ s|/|$o|g;
283 310
284############################################# 311#############################################
285# We parse in input file and 'store' info for later printing. 312# We parse in input file and 'store' info for later printing.
@@ -294,21 +321,11 @@ for (;;)
294 { 321 {
295 if ($lib ne "") 322 if ($lib ne "")
296 { 323 {
297 if ($fips && $dir =~ /^fips/) 324 $uc=$lib;
298 { 325 $uc =~ s/^lib(.*)\.a/$1/;
299 $uc = "FIPS"; 326 $uc =~ tr/a-z/A-Z/;
300 } 327 $lib_nam{$uc}=$uc;
301 else 328 $lib_obj{$uc}.=$libobj." ";
302 {
303 $uc=$lib;
304 $uc =~ s/^lib(.*)\.a/$1/;
305 $uc =~ tr/a-z/A-Z/;
306 }
307 if (($uc ne "FIPS") || $fipscanisterbuild)
308 {
309 $lib_nam{$uc}=$uc;
310 $lib_obj{$uc}.=$libobj." ";
311 }
312 } 329 }
313 last if ($val eq "FINISHED"); 330 last if ($val eq "FINISHED");
314 $lib=""; 331 $lib="";
@@ -351,130 +368,11 @@ for (;;)
351 if ($key eq "LIBNAMES" && $dir eq "engines" && $no_static_engine) 368 if ($key eq "LIBNAMES" && $dir eq "engines" && $no_static_engine)
352 { $engines.=$val } 369 { $engines.=$val }
353 370
354 if ($key eq "FIPS_EX_OBJ")
355 {
356 $fips_ex_obj=&var_add("crypto",$val,0);
357 }
358
359 if ($key eq "FIPSLIBDIR")
360 {
361 $fipslibdir=$val;
362 $fipslibdir =~ s/\/$//;
363 $fipslibdir =~ s/\//$o/g;
364 }
365
366 if ($key eq "BASEADDR")
367 { $baseaddr=$val;}
368
369 if (!($_=<IN>)) 371 if (!($_=<IN>))
370 { $_="RELATIVE_DIRECTORY=FINISHED\n"; } 372 { $_="RELATIVE_DIRECTORY=FINISHED\n"; }
371 } 373 }
372close(IN); 374close(IN);
373 375
374if ($fips)
375 {
376
377 foreach (split " ", $fips_ex_obj)
378 {
379 $fips_exclude_obj{$1} = 1 if (/\/([^\/]*)$/);
380 }
381
382 $fips_exclude_obj{"cpu_win32"} = 1;
383 $fips_exclude_obj{"bn_asm"} = 1;
384 $fips_exclude_obj{"des_enc"} = 1;
385 $fips_exclude_obj{"fcrypt_b"} = 1;
386 $fips_exclude_obj{"aes_core"} = 1;
387 $fips_exclude_obj{"aes_cbc"} = 1;
388
389 my @ltmp = split " ", $lib_obj{"CRYPTO"};
390
391
392 $lib_obj{"CRYPTO"} = "";
393
394 foreach(@ltmp)
395 {
396 if (/\/([^\/]*)$/ && exists $fips_exclude_obj{$1})
397 {
398 if ($fipscanisterbuild)
399 {
400 $lib_obj{"FIPS"} .= "$_ ";
401 }
402 }
403 else
404 {
405 $lib_obj{"CRYPTO"} .= "$_ ";
406 }
407 }
408
409 }
410
411if ($fipscanisterbuild)
412 {
413 $fips_canister_path = "\$(LIB_D)${o}fipscanister.lib" if $fips_canister_path eq "";
414 $fips_premain_c_path = "\$(LIB_D)${o}fips_premain.c";
415 }
416else
417 {
418 if ($fips_canister_path eq "")
419 {
420 $fips_canister_path = "\$(FIPSLIB_D)${o}fipscanister.lib";
421 }
422
423 if ($fips_premain_c_path eq "")
424 {
425 $fips_premain_c_path = "\$(FIPSLIB_D)${o}fips_premain.c";
426 }
427 }
428
429if ($fips)
430 {
431 if ($fips_sha1_exe_path eq "")
432 {
433 $fips_sha1_exe_path =
434 "\$(BIN_D)${o}fips_standalone_sha1$exep";
435 }
436 }
437 else
438 {
439 $fips_sha1_exe_path = "";
440 }
441
442if ($fips_premain_dso_exe_path eq "")
443 {
444 $fips_premain_dso_exe_path = "\$(BIN_D)${o}fips_premain_dso$exep";
445 }
446
447# $ex_build_targets .= "\$(BIN_D)${o}\$(E_PREMAIN_DSO)$exep" if ($fips);
448
449#$ex_l_libs .= " \$(L_FIPS)" if $fipsdso;
450
451if ($fips)
452 {
453 if (!$shlib)
454 {
455 $ex_build_targets .= " \$(LIB_D)$o$crypto_compat \$(PREMAIN_DSO_EXE)";
456 $ex_l_libs .= " \$(O_FIPSCANISTER)";
457 $ex_libs_dep .= " \$(O_FIPSCANISTER)" if $fipscanisterbuild;
458 }
459 if ($fipscanisterbuild)
460 {
461 $fipslibdir = "\$(LIB_D)";
462 }
463 else
464 {
465 if ($fipslibdir eq "")
466 {
467 open (IN, "util/fipslib_path.txt") || fipslib_error();
468 $fipslibdir = <IN>;
469 chomp $fipslibdir;
470 close IN;
471 }
472 fips_check_files($fipslibdir,
473 "fipscanister.lib", "fipscanister.lib.sha1",
474 "fips_premain.c", "fips_premain.c.sha1");
475 }
476 }
477
478if ($shlib) 376if ($shlib)
479 { 377 {
480 $extra_install= <<"EOF"; 378 $extra_install= <<"EOF";
@@ -520,6 +418,7 @@ $defs .= $preamble if defined $preamble;
520 418
521$defs.= <<"EOF"; 419$defs.= <<"EOF";
522INSTALLTOP=$INSTALLTOP 420INSTALLTOP=$INSTALLTOP
421OPENSSLDIR=$OPENSSLDIR
523 422
524# Set your compiler options 423# Set your compiler options
525PLATFORM=$platform 424PLATFORM=$platform
@@ -540,32 +439,6 @@ SRC_D=$src_dir
540LINK=$link 439LINK=$link
541LFLAGS=$lflags 440LFLAGS=$lflags
542RSC=$rsc 441RSC=$rsc
543FIPSLINK=\$(PERL) util${o}fipslink.pl
544
545AES_ASM_OBJ=$aes_asm_obj
546AES_ASM_SRC=$aes_asm_src
547BN_ASM_OBJ=$bn_asm_obj
548BN_ASM_SRC=$bn_asm_src
549BNCO_ASM_OBJ=$bnco_asm_obj
550BNCO_ASM_SRC=$bnco_asm_src
551DES_ENC_OBJ=$des_enc_obj
552DES_ENC_SRC=$des_enc_src
553BF_ENC_OBJ=$bf_enc_obj
554BF_ENC_SRC=$bf_enc_src
555CAST_ENC_OBJ=$cast_enc_obj
556CAST_ENC_SRC=$cast_enc_src
557RC4_ENC_OBJ=$rc4_enc_obj
558RC4_ENC_SRC=$rc4_enc_src
559RC5_ENC_OBJ=$rc5_enc_obj
560RC5_ENC_SRC=$rc5_enc_src
561MD5_ASM_OBJ=$md5_asm_obj
562MD5_ASM_SRC=$md5_asm_src
563SHA1_ASM_OBJ=$sha1_asm_obj
564SHA1_ASM_SRC=$sha1_asm_src
565RMD160_ASM_OBJ=$rmd160_asm_obj
566RMD160_ASM_SRC=$rmd160_asm_src
567CPUID_ASM_OBJ=$cpuid_asm_obj
568CPUID_ASM_SRC=$cpuid_asm_src
569 442
570# The output directory for everything intersting 443# The output directory for everything intersting
571OUT_D=$out_dir 444OUT_D=$out_dir
@@ -584,17 +457,6 @@ MKLIB=$bin_dir$mklib
584MLFLAGS=$mlflags 457MLFLAGS=$mlflags
585ASM=$bin_dir$asm 458ASM=$bin_dir$asm
586 459
587# FIPS validated module and support file locations
588
589E_PREMAIN_DSO=fips_premain_dso
590
591FIPSLIB_D=$fipslibdir
592BASEADDR=$baseaddr
593FIPS_PREMAIN_SRC=$fips_premain_c_path
594O_FIPSCANISTER=$fips_canister_path
595FIPS_SHA1_EXE=$fips_sha1_exe_path
596PREMAIN_DSO_EXE=$fips_premain_dso_exe_path
597
598###################################################### 460######################################################
599# You should not need to touch anything below this point 461# You should not need to touch anything below this point
600###################################################### 462######################################################
@@ -602,7 +464,6 @@ PREMAIN_DSO_EXE=$fips_premain_dso_exe_path
602E_EXE=openssl 464E_EXE=openssl
603SSL=$ssl 465SSL=$ssl
604CRYPTO=$crypto 466CRYPTO=$crypto
605LIBFIPS=libosslfips
606 467
607# BIN_D - Binary output directory 468# BIN_D - Binary output directory
608# TEST_D - Binary test file output directory 469# TEST_D - Binary test file output directory
@@ -623,14 +484,12 @@ INCL_D=\$(TMP_D)
623 484
624O_SSL= \$(LIB_D)$o$plib\$(SSL)$shlibp 485O_SSL= \$(LIB_D)$o$plib\$(SSL)$shlibp
625O_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$shlibp 486O_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$shlibp
626O_FIPS= \$(LIB_D)$o$plib\$(LIBFIPS)$shlibp
627SO_SSL= $plib\$(SSL)$so_shlibp 487SO_SSL= $plib\$(SSL)$so_shlibp
628SO_CRYPTO= $plib\$(CRYPTO)$so_shlibp 488SO_CRYPTO= $plib\$(CRYPTO)$so_shlibp
629L_SSL= \$(LIB_D)$o$plib\$(SSL)$libp 489L_SSL= \$(LIB_D)$o$plib\$(SSL)$libp
630L_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$libp 490L_CRYPTO= \$(LIB_D)$o$plib\$(CRYPTO)$libp
631L_FIPS= \$(LIB_D)$o$plib\$(LIBFIPS)$libp
632 491
633L_LIBS= \$(L_SSL) \$(L_CRYPTO) $ex_l_libs 492L_LIBS= \$(L_SSL) \$(L_CRYPTO)
634 493
635###################################################### 494######################################################
636# Don't touch anything below this point 495# Don't touch anything below this point
@@ -640,13 +499,13 @@ INC=-I\$(INC_D) -I\$(INCL_D)
640APP_CFLAGS=\$(INC) \$(CFLAG) \$(APP_CFLAG) 499APP_CFLAGS=\$(INC) \$(CFLAG) \$(APP_CFLAG)
641LIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) 500LIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG)
642SHLIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) \$(SHLIB_CFLAG) 501SHLIB_CFLAGS=\$(INC) \$(CFLAG) \$(LIB_CFLAG) \$(SHLIB_CFLAG)
643LIBS_DEP=\$(O_CRYPTO) \$(O_SSL) $ex_libs_dep 502LIBS_DEP=\$(O_CRYPTO) \$(O_SSL)
644 503
645############################################# 504#############################################
646EOF 505EOF
647 506
648$rules=<<"EOF"; 507$rules=<<"EOF";
649all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) headers \$(FIPS_SHA1_EXE) lib exe $ex_build_targets 508all: banner \$(TMP_D) \$(BIN_D) \$(TEST_D) \$(LIB_D) \$(INCO_D) headers lib exe
650 509
651banner: 510banner:
652$banner 511$banner
@@ -683,8 +542,9 @@ install: all
683 \$(MKDIR) \"\$(INSTALLTOP)${o}include${o}openssl\" 542 \$(MKDIR) \"\$(INSTALLTOP)${o}include${o}openssl\"
684 \$(MKDIR) \"\$(INSTALLTOP)${o}lib\" 543 \$(MKDIR) \"\$(INSTALLTOP)${o}lib\"
685 \$(CP) \"\$(INCO_D)${o}*.\[ch\]\" \"\$(INSTALLTOP)${o}include${o}openssl\" 544 \$(CP) \"\$(INCO_D)${o}*.\[ch\]\" \"\$(INSTALLTOP)${o}include${o}openssl\"
686 \$(CP) \"\$(BIN_D)$o\$(E_EXE)$exep\" \"\$(INSTALLTOP)${o}bin\" 545 \$(CP) \"\$(BIN_D)$o\$(E_EXE)$exep \$(INSTALLTOP)${o}bin\"
687 \$(CP) \"apps${o}openssl.cnf\" \"\$(INSTALLTOP)\" 546 \$(MKDIR) \"\$(OPENSSLDIR)\"
547 \$(CP) apps${o}openssl.cnf \"\$(OPENSSLDIR)\"
688$extra_install 548$extra_install
689 549
690 550
@@ -761,26 +621,6 @@ $rules.=&do_compile_rule("\$(OBJ_D)",$test,"\$(APP_CFLAGS)");
761$defs.=&do_defs("E_OBJ",$e_exe,"\$(OBJ_D)",$obj); 621$defs.=&do_defs("E_OBJ",$e_exe,"\$(OBJ_D)",$obj);
762$rules.=&do_compile_rule("\$(OBJ_D)",$e_exe,'-DMONOLITH $(APP_CFLAGS)'); 622$rules.=&do_compile_rule("\$(OBJ_D)",$e_exe,'-DMONOLITH $(APP_CFLAGS)');
763 623
764# Special case rules for fips_start and fips_end fips_premain_dso
765
766if ($fips)
767 {
768 if ($fipscanisterbuild)
769 {
770 $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_start$obj",
771 "fips${o}fips_canister.c",
772 "-DFIPS_START \$(SHLIB_CFLAGS)");
773 $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_end$obj",
774 "fips${o}fips_canister.c", "\$(SHLIB_CFLAGS)");
775 }
776 $rules.=&cc_compile_target("\$(OBJ_D)${o}fips_standalone_sha1$obj",
777 "fips${o}sha${o}fips_standalone_sha1.c",
778 "\$(SHLIB_CFLAGS)");
779 $rules.=&cc_compile_target("\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj",
780 "fips${o}fips_premain.c",
781 "-DFINGERPRINT_PREMAIN_DSO_LOAD \$(SHLIB_CFLAGS)");
782 }
783
784foreach (values %lib_nam) 624foreach (values %lib_nam)
785 { 625 {
786 $lib_obj=$lib_obj{$_}; 626 $lib_obj=$lib_obj{$_};
@@ -792,78 +632,14 @@ foreach (values %lib_nam)
792 next; 632 next;
793 } 633 }
794 634
795 if ((!$fips && ($_ eq "CRYPTO")) || ($fips && ($_ eq "FIPS")))
796 {
797 if ($cpuid_asm_obj ne "")
798 {
799 $lib_obj =~ s/(\S*\/cryptlib\S*)/$1 \$(CPUID_ASM_OBJ)/;
800 $rules.=&do_asm_rule($cpuid_asm_obj,$cpuid_asm_src);
801 }
802 if ($aes_asm_obj ne "")
803 {
804 $lib_obj =~ s/\s(\S*\/aes_core\S*)/ \$(AES_ASM_OBJ)/;
805 $lib_obj =~ s/\s\S*\/aes_cbc\S*//;
806 $rules.=&do_asm_rule($aes_asm_obj,$aes_asm_src);
807 }
808 if ($sha1_asm_obj ne "")
809 {
810 $lib_obj =~ s/\s(\S*\/sha1dgst\S*)/ $1 \$(SHA1_ASM_OBJ)/;
811 $rules.=&do_asm_rule($sha1_asm_obj,$sha1_asm_src);
812 }
813 if ($bn_asm_obj ne "")
814 {
815 $lib_obj =~ s/\s\S*\/bn_asm\S*/ \$(BN_ASM_OBJ)/;
816 $rules.=&do_asm_rule($bn_asm_obj,$bn_asm_src);
817 }
818 if ($bnco_asm_obj ne "")
819 {
820 $lib_obj .= "\$(BNCO_ASM_OBJ)";
821 $rules.=&do_asm_rule($bnco_asm_obj,$bnco_asm_src);
822 }
823 if ($des_enc_obj ne "")
824 {
825 $lib_obj =~ s/\s\S*des_enc\S*/ \$(DES_ENC_OBJ)/;
826 $lib_obj =~ s/\s\S*\/fcrypt_b\S*\s*/ /;
827 $rules.=&do_asm_rule($des_enc_obj,$des_enc_src);
828 }
829 }
830 if (($bf_enc_obj ne "") && ($_ eq "CRYPTO"))
831 {
832 $lib_obj =~ s/\s\S*\/bf_enc\S*/ \$(BF_ENC_OBJ)/;
833 $rules.=&do_asm_rule($bf_enc_obj,$bf_enc_src);
834 }
835 if (($cast_enc_obj ne "") && ($_ eq "CRYPTO"))
836 {
837 $lib_obj =~ s/(\s\S*\/c_enc\S*)/ \$(CAST_ENC_OBJ)/;
838 $rules.=&do_asm_rule($cast_enc_obj,$cast_enc_src);
839 }
840 if (($rc4_enc_obj ne "") && ($_ eq "CRYPTO"))
841 {
842 $lib_obj =~ s/\s\S*\/rc4_enc\S*/ \$(RC4_ENC_OBJ)/;
843 $rules.=&do_asm_rule($rc4_enc_obj,$rc4_enc_src);
844 }
845 if (($rc5_enc_obj ne "") && ($_ eq "CRYPTO"))
846 {
847 $lib_obj =~ s/\s\S*\/rc5_enc\S*/ \$(RC5_ENC_OBJ)/;
848 $rules.=&do_asm_rule($rc5_enc_obj,$rc5_enc_src);
849 }
850 if (($md5_asm_obj ne "") && ($_ eq "CRYPTO"))
851 {
852 $lib_obj =~ s/\s(\S*\/md5_dgst\S*)/ $1 \$(MD5_ASM_OBJ)/;
853 $rules.=&do_asm_rule($md5_asm_obj,$md5_asm_src);
854 }
855 if (($rmd160_asm_obj ne "") && ($_ eq "CRYPTO"))
856 {
857 $lib_obj =~ s/\s(\S*\/rmd_dgst\S*)/ $1 \$(RMD160_ASM_OBJ)/;
858 $rules.=&do_asm_rule($rmd160_asm_obj,$rmd160_asm_src);
859 }
860 $defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj); 635 $defs.=&do_defs(${_}."OBJ",$lib_obj,"\$(OBJ_D)",$obj);
861 $lib=($slib)?" \$(SHLIB_CFLAGS)".$shlib_ex_cflags{$_}:" \$(LIB_CFLAGS)"; 636 $lib=($slib)?" \$(SHLIB_CFLAGS)".$shlib_ex_cflags{$_}:" \$(LIB_CFLAGS)";
862 $rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib); 637 $rules.=&do_compile_rule("\$(OBJ_D)",$lib_obj{$_},$lib);
863 } 638 }
864 639
865# hack to add version info on MSVC 640# hack to add version info on MSVC
866if (($platform eq "VC-WIN32") || ($platform eq "VC-NT")) { 641if (($platform eq "VC-WIN32") || ($platform eq "VC-WIN64A")
642 || ($platform eq "VC-WIN64I") || ($platform eq "VC-NT")) {
867 $rules.= <<"EOF"; 643 $rules.= <<"EOF";
868\$(OBJ_D)\\\$(CRYPTO).res: ms\\version32.rc 644\$(OBJ_D)\\\$(CRYPTO).res: ms\\version32.rc
869 \$(RSC) /fo"\$(OBJ_D)\\\$(CRYPTO).res" /d CRYPTO ms\\version32.rc 645 \$(RSC) /fo"\$(OBJ_D)\\\$(CRYPTO).res" /d CRYPTO ms\\version32.rc
@@ -871,43 +647,15 @@ if (($platform eq "VC-WIN32") || ($platform eq "VC-NT")) {
871\$(OBJ_D)\\\$(SSL).res: ms\\version32.rc 647\$(OBJ_D)\\\$(SSL).res: ms\\version32.rc
872 \$(RSC) /fo"\$(OBJ_D)\\\$(SSL).res" /d SSL ms\\version32.rc 648 \$(RSC) /fo"\$(OBJ_D)\\\$(SSL).res" /d SSL ms\\version32.rc
873 649
874\$(OBJ_D)\\\$(LIBFIPS).res: ms\\version32.rc
875 \$(RSC) /fo"\$(OBJ_D)\\\$(LIBFIPS).res" /d FIPS ms\\version32.rc
876
877EOF 650EOF
878} 651}
879 652
880$defs.=&do_defs("T_EXE",$test,"\$(TEST_D)",$exep); 653$defs.=&do_defs("T_EXE",$test,"\$(TEST_D)",$exep);
881foreach (split(/\s+/,$test)) 654foreach (split(/\s+/,$test))
882 { 655 {
883 my $t_libs;
884 $t=&bname($_); 656 $t=&bname($_);
885 my $ltype;
886 # Check to see if test program is FIPS
887 if ($fips && /fips/)
888 {
889 # If fipsdso link to libosslfips.dll
890 # otherwise perform static link to
891 # $(O_FIPSCANISTER)
892 if ($fipsdso)
893 {
894 $t_libs = "\$(L_FIPS)";
895 $ltype = 0;
896 }
897 else
898 {
899 $t_libs = "\$(O_FIPSCANISTER)";
900 $ltype = 2;
901 }
902 }
903 else
904 {
905 $t_libs = "\$(L_LIBS)";
906 $ltype = 0;
907 }
908
909 $tt="\$(OBJ_D)${o}$t${obj}"; 657 $tt="\$(OBJ_D)${o}$t${obj}";
910 $rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","$t_libs \$(EX_LIBS)", $ltype); 658 $rules.=&do_link_rule("\$(TEST_D)$o$t$exep",$tt,"\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)");
911 } 659 }
912 660
913$defs.=&do_defs("E_SHLIB",$engines,"\$(ENG_D)",$shlibp); 661$defs.=&do_defs("E_SHLIB",$engines,"\$(ENG_D)",$shlibp);
@@ -921,69 +669,9 @@ foreach (split(/\s+/,$engines))
921 669
922 670
923$rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)"); 671$rules.= &do_lib_rule("\$(SSLOBJ)","\$(O_SSL)",$ssl,$shlib,"\$(SO_SSL)");
672$rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)");
924 673
925if ($fips) 674$rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)");
926 {
927 if ($shlib)
928 {
929 if ($fipsdso)
930 {
931 $rules.= &do_lib_rule("\$(CRYPTOOBJ)",
932 "\$(O_CRYPTO)", "$crypto",
933 $shlib, "", "");
934 $rules.= &do_lib_rule(
935 "\$(O_FIPSCANISTER)",
936 "\$(O_FIPS)", "\$(LIBFIPS)",
937 $shlib, "\$(SO_CRYPTO)", "\$(BASEADDR)");
938 $rules.= &do_sdef_rule();
939 }
940 else
941 {
942 $rules.= &do_lib_rule(
943 "\$(CRYPTOOBJ) \$(O_FIPSCANISTER)",
944 "\$(O_CRYPTO)", "$crypto",
945 $shlib, "\$(SO_CRYPTO)", "\$(BASEADDR)");
946 }
947 }
948 else
949 {
950 $rules.= &do_lib_rule("\$(CRYPTOOBJ)",
951 "\$(O_CRYPTO)",$crypto,$shlib,"\$(SO_CRYPTO)", "");
952 $rules.= &do_lib_rule("\$(CRYPTOOBJ) \$(FIPSOBJ)",
953 "\$(LIB_D)$o$crypto_compat",$crypto,$shlib,"\$(SO_CRYPTO)", "");
954 }
955 }
956 else
957 {
958 $rules.= &do_lib_rule("\$(CRYPTOOBJ)","\$(O_CRYPTO)",$crypto,$shlib,
959 "\$(SO_CRYPTO)");
960 }
961
962if ($fips)
963 {
964 if ($fipscanisterbuild)
965 {
966 $rules.= &do_rlink_rule("\$(O_FIPSCANISTER)",
967 "\$(OBJ_D)${o}fips_start$obj",
968 "\$(FIPSOBJ)",
969 "\$(OBJ_D)${o}fips_end$obj",
970 "\$(FIPS_SHA1_EXE)", "");
971 $rules.=&do_link_rule("\$(FIPS_SHA1_EXE)",
972 "\$(OBJ_D)${o}fips_standalone_sha1$obj \$(OBJ_D)${o}sha1dgst$obj \$(SHA1_ASM_OBJ)",
973 "","\$(EX_LIBS)", 1);
974 }
975 else
976 {
977 $rules.=&do_link_rule("\$(FIPS_SHA1_EXE)",
978 "\$(OBJ_D)${o}fips_standalone_sha1$obj \$(O_FIPSCANISTER)",
979 "","", 1);
980
981 }
982 $rules.=&do_link_rule("\$(PREMAIN_DSO_EXE)","\$(OBJ_D)${o}\$(E_PREMAIN_DSO)$obj \$(CRYPTOOBJ) \$(O_FIPSCANISTER)","","\$(EX_LIBS)", 1);
983
984 }
985
986$rules.=&do_link_rule("\$(BIN_D)$o\$(E_EXE)$exep","\$(E_OBJ)","\$(LIBS_DEP)","\$(L_LIBS) \$(EX_LIBS)", ($fips && !$shlib) ? 2 : 0);
987 675
988print $defs; 676print $defs;
989 677
@@ -1022,7 +710,6 @@ sub var_add
1022 return("") if $no_ec && $dir =~ /\/ec/; 710 return("") if $no_ec && $dir =~ /\/ec/;
1023 return("") if $no_cms && $dir =~ /\/cms/; 711 return("") if $no_cms && $dir =~ /\/cms/;
1024 return("") if $no_jpake && $dir =~ /\/jpake/; 712 return("") if $no_jpake && $dir =~ /\/jpake/;
1025 return("") if !$fips && $dir =~ /^fips/;
1026 if ($no_des && $dir =~ /\/des/) 713 if ($no_des && $dir =~ /\/des/)
1027 { 714 {
1028 if ($val =~ /read_pwd/) 715 if ($val =~ /read_pwd/)
@@ -1034,6 +721,7 @@ sub var_add
1034 return("") if $no_sock && $dir =~ /\/proxy/; 721 return("") if $no_sock && $dir =~ /\/proxy/;
1035 return("") if $no_bf && $dir =~ /\/bf/; 722 return("") if $no_bf && $dir =~ /\/bf/;
1036 return("") if $no_cast && $dir =~ /\/cast/; 723 return("") if $no_cast && $dir =~ /\/cast/;
724 return("") if $no_whirlpool && $dir =~ /\/whrlpool/;
1037 725
1038 $val =~ s/^\s*(.*)\s*$/$1/; 726 $val =~ s/^\s*(.*)\s*$/$1/;
1039 @a=split(/\s+/,$val); 727 @a=split(/\s+/,$val);
@@ -1051,8 +739,8 @@ sub var_add
1051 @a=grep(!/^e_camellia$/,@a) if $no_camellia; 739 @a=grep(!/^e_camellia$/,@a) if $no_camellia;
1052 @a=grep(!/^e_seed$/,@a) if $no_seed; 740 @a=grep(!/^e_seed$/,@a) if $no_seed;
1053 741
1054 @a=grep(!/(^s2_)|(^s23_)/,@a) if $no_ssl2; 742 #@a=grep(!/(^s2_)|(^s23_)/,@a) if $no_ssl2;
1055 @a=grep(!/(^s3_)|(^s23_)/,@a) if $no_ssl3; 743 #@a=grep(!/(^s3_)|(^s23_)/,@a) if $no_ssl3;
1056 744
1057 @a=grep(!/(_sock$)|(_acpt$)|(_conn$)|(^pxy_)/,@a) if $no_sock; 745 @a=grep(!/(_sock$)|(_acpt$)|(_conn$)|(^pxy_)/,@a) if $no_sock;
1058 746
@@ -1126,6 +814,7 @@ sub do_defs
1126 else { $pf=$postfix; } 814 else { $pf=$postfix; }
1127 if ($_ =~ /BN_ASM/) { $t="$_ "; } 815 if ($_ =~ /BN_ASM/) { $t="$_ "; }
1128 elsif ($_ =~ /BNCO_ASM/){ $t="$_ "; } 816 elsif ($_ =~ /BNCO_ASM/){ $t="$_ "; }
817 elsif ($_ =~ /AES_ASM/){ $t="$_ "; }
1129 elsif ($_ =~ /DES_ENC/) { $t="$_ "; } 818 elsif ($_ =~ /DES_ENC/) { $t="$_ "; }
1130 elsif ($_ =~ /BF_ENC/) { $t="$_ "; } 819 elsif ($_ =~ /BF_ENC/) { $t="$_ "; }
1131 elsif ($_ =~ /CAST_ENC/){ $t="$_ "; } 820 elsif ($_ =~ /CAST_ENC/){ $t="$_ "; }
@@ -1133,8 +822,8 @@ sub do_defs
1133 elsif ($_ =~ /RC5_ENC/) { $t="$_ "; } 822 elsif ($_ =~ /RC5_ENC/) { $t="$_ "; }
1134 elsif ($_ =~ /MD5_ASM/) { $t="$_ "; } 823 elsif ($_ =~ /MD5_ASM/) { $t="$_ "; }
1135 elsif ($_ =~ /SHA1_ASM/){ $t="$_ "; } 824 elsif ($_ =~ /SHA1_ASM/){ $t="$_ "; }
1136 elsif ($_ =~ /AES_ASM/){ $t="$_ "; }
1137 elsif ($_ =~ /RMD160_ASM/){ $t="$_ "; } 825 elsif ($_ =~ /RMD160_ASM/){ $t="$_ "; }
826 elsif ($_ =~ /WHIRLPOOL_ASM/){ $t="$_ "; }
1138 elsif ($_ =~ /CPUID_ASM/){ $t="$_ "; } 827 elsif ($_ =~ /CPUID_ASM/){ $t="$_ "; }
1139 else { $t="$location${o}$_$pf "; } 828 else { $t="$location${o}$_$pf "; }
1140 829
@@ -1142,7 +831,7 @@ sub do_defs
1142 $ret.=$t; 831 $ret.=$t;
1143 } 832 }
1144 # hack to add version info on MSVC 833 # hack to add version info on MSVC
1145 if ($shlib && (($platform eq "VC-WIN32") || ($platform eq "VC-NT"))) 834 if ($shlib && (($platform eq "VC-WIN32") || ($platfrom eq "VC-WIN64I") || ($platform eq "VC-WIN64A") || ($platform eq "VC-NT")))
1146 { 835 {
1147 if ($var eq "CRYPTOOBJ") 836 if ($var eq "CRYPTOOBJ")
1148 { $ret.="\$(OBJ_D)\\\$(CRYPTO).res "; } 837 { $ret.="\$(OBJ_D)\\\$(CRYPTO).res "; }
@@ -1162,6 +851,13 @@ sub bname
1162 return($ret); 851 return($ret);
1163 } 852 }
1164 853
854# return the leading path
855sub dname
856 {
857 my $ret=shift;
858 $ret =~ s/(^.*)[\\\/][^\\\/]+$/$1/;
859 return($ret);
860 }
1165 861
1166############################################################## 862##############################################################
1167# do a rule for each file that says 'compile' to new direcory 863# do a rule for each file that says 'compile' to new direcory
@@ -1169,19 +865,61 @@ sub bname
1169sub do_compile_rule 865sub do_compile_rule
1170 { 866 {
1171 local($to,$files,$ex)=@_; 867 local($to,$files,$ex)=@_;
1172 local($ret,$_,$n); 868 local($ret,$_,$n,$d,$s);
1173 869
1174 $files =~ s/\//$o/g if $o ne '/'; 870 $files =~ s/\//$o/g if $o ne '/';
1175 foreach (split(/\s+/,$files)) 871 foreach (split(/\s+/,$files))
1176 { 872 {
1177 $n=&bname($_); 873 $n=&bname($_);
1178 $ret.=&cc_compile_target("$to${o}$n$obj","${_}.c",$ex) 874 $d=&dname($_);
875 if (-f "${_}.c")
876 {
877 $ret.=&cc_compile_target("$to${o}$n$obj","${_}.c",$ex)
878 }
879 elsif (-f ($s="${d}${o}asm${o}${n}.pl") or
880 ($s=~s/sha256/sha512/ and -f $s) or
881 -f ($s="${d}${o}${n}.pl"))
882 {
883 $ret.=&perlasm_compile_target("$to${o}$n$obj",$s,$n);
884 }
885 elsif (-f ($s="${d}${o}asm${o}${n}.S") or
886 -f ($s="${d}${o}${n}.S"))
887 {
888 $ret.=&Sasm_compile_target("$to${o}$n$obj",$s,$n);
889 }
890 else { die "no rule for $_"; }
1179 } 891 }
1180 return($ret); 892 return($ret);
1181 } 893 }
1182 894
1183############################################################## 895##############################################################
1184# do a rule for each file that says 'compile' to new direcory 896# do a rule for each file that says 'compile' to new direcory
897sub perlasm_compile_target
898 {
899 my($target,$source,$bname)=@_;
900 my($ret);
901
902 $bname =~ s/(.*)\.[^\.]$/$1/;
903 $ret ="\$(TMP_D)$o$bname.asm: $source\n";
904 $ret.="\t\$(PERL) $source $asmtype \$(CFLAG) >\$\@\n\n";
905 $ret.="$target: \$(TMP_D)$o$bname.asm\n";
906 $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm\n\n";
907 return($ret);
908 }
909
910sub Sasm_compile_target
911 {
912 my($target,$source,$bname)=@_;
913 my($ret);
914
915 $bname =~ s/(.*)\.[^\.]$/$1/;
916 $ret ="\$(TMP_D)$o$bname.asm: $source\n";
917 $ret.="\t\$(CC) -E \$(CFLAG) $source >\$\@\n\n";
918 $ret.="$target: \$(TMP_D)$o$bname.asm\n";
919 $ret.="\t\$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm\n\n";
920 return($ret);
921 }
922
1185sub cc_compile_target 923sub cc_compile_target
1186 { 924 {
1187 local($target,$source,$ex_flags)=@_; 925 local($target,$source,$ex_flags)=@_;
@@ -1204,13 +942,25 @@ sub do_asm_rule
1204 $target =~ s/\//$o/g if $o ne "/"; 942 $target =~ s/\//$o/g if $o ne "/";
1205 $src =~ s/\//$o/g if $o ne "/"; 943 $src =~ s/\//$o/g if $o ne "/";
1206 944
1207 @s=split(/\s+/,$src);
1208 @t=split(/\s+/,$target); 945 @t=split(/\s+/,$target);
946 @s=split(/\s+/,$src);
947
1209 948
1210 for ($i=0; $i<=$#s; $i++) 949 for ($i=0; $i<=$#s; $i++)
1211 { 950 {
1212 $ret.="$t[$i]: $s[$i]\n"; 951 my $objfile = $t[$i];
1213 $ret.="\t\$(ASM) $afile$t[$i] \$(SRC_D)$o$s[$i]\n\n"; 952 my $srcfile = $s[$i];
953
954 if ($perl_asm == 1)
955 {
956 my $plasm = $objfile;
957 $plasm =~ s/${obj}/.pl/;
958 $ret.="$srcfile: $plasm\n";
959 $ret.="\t\$(PERL) $plasm $asmtype \$(CFLAG) >$srcfile\n\n";
960 }
961
962 $ret.="$objfile: $srcfile\n";
963 $ret.="\t\$(ASM) $afile$objfile \$(SRC_D)$o$srcfile\n\n";
1214 } 964 }
1215 return($ret); 965 return($ret);
1216 } 966 }
@@ -1274,6 +1024,7 @@ sub read_options
1274 "no-sha1" => \$no_sha1, 1024 "no-sha1" => \$no_sha1,
1275 "no-ripemd" => \$no_ripemd, 1025 "no-ripemd" => \$no_ripemd,
1276 "no-mdc2" => \$no_mdc2, 1026 "no-mdc2" => \$no_mdc2,
1027 "no-whirlpool" => \$no_whirlpool,
1277 "no-patents" => 1028 "no-patents" =>
1278 [\$no_rc2, \$no_rc4, \$no_rc5, \$no_idea, \$no_rsa], 1029 [\$no_rc2, \$no_rc4, \$no_rc5, \$no_idea, \$no_rsa],
1279 "no-rsa" => \$no_rsa, 1030 "no-rsa" => \$no_rsa,
@@ -1282,7 +1033,6 @@ sub read_options
1282 "no-hmac" => \$no_hmac, 1033 "no-hmac" => \$no_hmac,
1283 "no-asm" => \$no_asm, 1034 "no-asm" => \$no_asm,
1284 "nasm" => \$nasm, 1035 "nasm" => \$nasm,
1285 "ml64" => \$ml64,
1286 "nw-nasm" => \$nw_nasm, 1036 "nw-nasm" => \$nw_nasm,
1287 "nw-mwasm" => \$nw_mwasm, 1037 "nw-mwasm" => \$nw_mwasm,
1288 "gaswin" => \$gaswin, 1038 "gaswin" => \$gaswin,
@@ -1291,7 +1041,6 @@ sub read_options
1291 "no-tlsext" => \$no_tlsext, 1041 "no-tlsext" => \$no_tlsext,
1292 "no-cms" => \$no_cms, 1042 "no-cms" => \$no_cms,
1293 "no-jpake" => \$no_jpake, 1043 "no-jpake" => \$no_jpake,
1294 "no-capieng" => \$no_capieng,
1295 "no-err" => \$no_err, 1044 "no-err" => \$no_err,
1296 "no-sock" => \$no_sock, 1045 "no-sock" => \$no_sock,
1297 "no-krb5" => \$no_krb5, 1046 "no-krb5" => \$no_krb5,
@@ -1316,11 +1065,9 @@ sub read_options
1316 "no-rfc3779" => 0, 1065 "no-rfc3779" => 0,
1317 "no-montasm" => 0, 1066 "no-montasm" => 0,
1318 "no-shared" => 0, 1067 "no-shared" => 0,
1068 "no-store" => 0,
1319 "no-zlib" => 0, 1069 "no-zlib" => 0,
1320 "no-zlib-dynamic" => 0, 1070 "no-zlib-dynamic" => 0,
1321 "fips" => \$fips,
1322 "fipscanisterbuild" => [\$fips, \$fipscanisterbuild],
1323 "fipsdso" => [\$fips, \$fipscanisterbuild, \$fipsdso],
1324 ); 1071 );
1325 1072
1326 if (exists $valid_options{$_}) 1073 if (exists $valid_options{$_})
@@ -1397,31 +1144,3 @@ sub read_options
1397 else { return(0); } 1144 else { return(0); }
1398 return(1); 1145 return(1);
1399 } 1146 }
1400
1401sub fipslib_error
1402 {
1403 print STDERR "***FIPS module directory sanity check failed***\n";
1404 print STDERR "FIPS module build failed, or was deleted\n";
1405 print STDERR "Please rebuild FIPS module.\n";
1406 exit 1;
1407 }
1408
1409sub fips_check_files
1410 {
1411 my $dir = shift @_;
1412 my $ret = 1;
1413 if (!-d $dir)
1414 {
1415 print STDERR "FIPS module directory $dir does not exist\n";
1416 fipslib_error();
1417 }
1418 foreach (@_)
1419 {
1420 if (!-f "$dir${o}$_")
1421 {
1422 print STDERR "FIPS module file $_ does not exist!\n";
1423 $ret = 0;
1424 }
1425 }
1426 fipslib_error() if ($ret == 0);
1427 }
diff --git a/src/lib/libssl/src/util/mkdef.pl b/src/lib/libssl/src/util/mkdef.pl
index 5ae9ebb619..a4a17e3ae9 100644
--- a/src/lib/libssl/src/util/mkdef.pl
+++ b/src/lib/libssl/src/util/mkdef.pl
@@ -69,7 +69,7 @@ my $do_ctestall = 0;
69my $do_checkexist = 0; 69my $do_checkexist = 0;
70 70
71my $VMSVAX=0; 71my $VMSVAX=0;
72my $VMSAlpha=0; 72my $VMSNonVAX=0;
73my $VMS=0; 73my $VMS=0;
74my $W32=0; 74my $W32=0;
75my $W16=0; 75my $W16=0;
@@ -79,12 +79,13 @@ my $OS2=0;
79my $safe_stack_def = 0; 79my $safe_stack_def = 0;
80 80
81my @known_platforms = ( "__FreeBSD__", "PERL5", "NeXT", 81my @known_platforms = ( "__FreeBSD__", "PERL5", "NeXT",
82 "EXPORT_VAR_AS_FUNCTION", "ZLIB", "OPENSSL_FIPS"); 82 "EXPORT_VAR_AS_FUNCTION", "ZLIB" );
83my @known_ossl_platforms = ( "VMS", "WIN16", "WIN32", "WINNT", "OS2" ); 83my @known_ossl_platforms = ( "VMS", "WIN16", "WIN32", "WINNT", "OS2" );
84my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF", 84my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",
85 "CAST", "MD2", "MD4", "MD5", "SHA", "SHA0", "SHA1", 85 "CAST", "MD2", "MD4", "MD5", "SHA", "SHA0", "SHA1",
86 "SHA256", "SHA512", "RIPEMD", 86 "SHA256", "SHA512", "RIPEMD",
87 "MDC2", "RSA", "DSA", "DH", "EC", "ECDH", "ECDSA", "HMAC", "AES", "CAMELLIA", "SEED", 87 "MDC2", "WHIRLPOOL", "RSA", "DSA", "DH", "EC", "ECDH", "ECDSA",
88 "HMAC", "AES", "CAMELLIA", "SEED", "GOST",
88 # Envelope "algorithms" 89 # Envelope "algorithms"
89 "EVP", "X509", "ASN1_TYPEDEFS", 90 "EVP", "X509", "ASN1_TYPEDEFS",
90 # Helper "algorithms" 91 # Helper "algorithms"
@@ -94,14 +95,16 @@ my @known_algorithms = ( "RC2", "RC4", "RC5", "IDEA", "DES", "BF",
94 "FP_API", "STDIO", "SOCK", "KRB5", "DGRAM", 95 "FP_API", "STDIO", "SOCK", "KRB5", "DGRAM",
95 # Engines 96 # Engines
96 "STATIC_ENGINE", "ENGINE", "HW", "GMP", 97 "STATIC_ENGINE", "ENGINE", "HW", "GMP",
97 # RFC3779 support 98 # RFC3779
98 "RFC3779", 99 "RFC3779",
99 # TLS extension support 100 # TLS
100 "TLSEXT", 101 "TLSEXT", "PSK",
101 # CMS 102 # CMS
102 "CMS", 103 "CMS",
103 # CryptoAPI Engine 104 # CryptoAPI Engine
104 "CAPIENG", 105 "CAPIENG",
106 # SSL v2
107 "SSL2",
105 # JPAKE 108 # JPAKE
106 "JPAKE", 109 "JPAKE",
107 # Deprecated functions 110 # Deprecated functions
@@ -118,14 +121,15 @@ close(IN);
118# defined with ifndef(NO_XXX) are not included in the .def file, and everything 121# defined with ifndef(NO_XXX) are not included in the .def file, and everything
119# in directory xxx is ignored. 122# in directory xxx is ignored.
120my $no_rc2; my $no_rc4; my $no_rc5; my $no_idea; my $no_des; my $no_bf; 123my $no_rc2; my $no_rc4; my $no_rc5; my $no_idea; my $no_des; my $no_bf;
121my $no_cast; 124my $no_cast; my $no_whirlpool; my $no_camellia; my $no_seed;
122my $no_md2; my $no_md4; my $no_md5; my $no_sha; my $no_ripemd; my $no_mdc2; 125my $no_md2; my $no_md4; my $no_md5; my $no_sha; my $no_ripemd; my $no_mdc2;
123my $no_rsa; my $no_dsa; my $no_dh; my $no_hmac=0; my $no_aes; my $no_krb5; 126my $no_rsa; my $no_dsa; my $no_dh; my $no_hmac=0; my $no_aes; my $no_krb5;
124my $no_ec; my $no_ecdsa; my $no_ecdh; my $no_engine; my $no_hw; my $no_camellia; 127my $no_ec; my $no_ecdsa; my $no_ecdh; my $no_engine; my $no_hw;
125my $no_seed; 128my $no_fp_api; my $no_static_engine=1; my $no_gmp; my $no_deprecated;
126my $no_fp_api; my $no_static_engine; my $no_gmp; my $no_deprecated; 129my $no_rfc3779; my $no_psk; my $no_tlsext; my $no_cms; my $no_capieng;
127my $no_rfc3779; my $no_tlsext; my $no_cms; my $no_capieng; my $no_jpake; 130my $no_jpake; my $no_ssl2;
128my $fips; 131
132my $zlib;
129 133
130 134
131foreach (@ARGV, split(/ /, $options)) 135foreach (@ARGV, split(/ /, $options))
@@ -141,17 +145,15 @@ foreach (@ARGV, split(/ /, $options))
141 $VMS=1; 145 $VMS=1;
142 $VMSVAX=1; 146 $VMSVAX=1;
143 } 147 }
144 if ($_ eq "VMS-Alpha") { 148 if ($_ eq "VMS-NonVAX") {
145 $VMS=1; 149 $VMS=1;
146 $VMSAlpha=1; 150 $VMSNonVAX=1;
147 } 151 }
148 $VMS=1 if $_ eq "VMS"; 152 $VMS=1 if $_ eq "VMS";
149 $OS2=1 if $_ eq "OS2"; 153 $OS2=1 if $_ eq "OS2";
150 $fips=1 if /^fips/; 154 if ($_ eq "zlib" || $_ eq "enable-zlib" || $_ eq "zlib-dynamic"
151 155 || $_ eq "enable-zlib-dynamic") {
152 if ($_ eq "zlib" || $_ eq "zlib-dynamic" 156 $zlib = 1;
153 || $_ eq "enable-zlib-dynamic") {
154 $zlib = 1;
155 } 157 }
156 158
157 $do_ssl=1 if $_ eq "ssleay"; 159 $do_ssl=1 if $_ eq "ssleay";
@@ -180,6 +182,7 @@ foreach (@ARGV, split(/ /, $options))
180 elsif (/^no-des$/) { $no_des=1; $no_mdc2=1; } 182 elsif (/^no-des$/) { $no_des=1; $no_mdc2=1; }
181 elsif (/^no-bf$/) { $no_bf=1; } 183 elsif (/^no-bf$/) { $no_bf=1; }
182 elsif (/^no-cast$/) { $no_cast=1; } 184 elsif (/^no-cast$/) { $no_cast=1; }
185 elsif (/^no-whirlpool$/) { $no_whirlpool=1; }
183 elsif (/^no-md2$/) { $no_md2=1; } 186 elsif (/^no-md2$/) { $no_md2=1; }
184 elsif (/^no-md4$/) { $no_md4=1; } 187 elsif (/^no-md4$/) { $no_md4=1; }
185 elsif (/^no-md5$/) { $no_md5=1; } 188 elsif (/^no-md5$/) { $no_md5=1; }
@@ -212,6 +215,7 @@ foreach (@ARGV, split(/ /, $options))
212 elsif (/^no-rfc3779$/) { $no_rfc3779=1; } 215 elsif (/^no-rfc3779$/) { $no_rfc3779=1; }
213 elsif (/^no-tlsext$/) { $no_tlsext=1; } 216 elsif (/^no-tlsext$/) { $no_tlsext=1; }
214 elsif (/^no-cms$/) { $no_cms=1; } 217 elsif (/^no-cms$/) { $no_cms=1; }
218 elsif (/^no-ssl2$/) { $no_ssl2=1; }
215 elsif (/^no-capieng$/) { $no_capieng=1; } 219 elsif (/^no-capieng$/) { $no_capieng=1; }
216 elsif (/^no-jpake$/) { $no_jpake=1; } 220 elsif (/^no-jpake$/) { $no_jpake=1; }
217 } 221 }
@@ -260,6 +264,7 @@ $crypto.=" crypto/rc5/rc5.h" ; # unless $no_rc5;
260$crypto.=" crypto/rc2/rc2.h" ; # unless $no_rc2; 264$crypto.=" crypto/rc2/rc2.h" ; # unless $no_rc2;
261$crypto.=" crypto/bf/blowfish.h" ; # unless $no_bf; 265$crypto.=" crypto/bf/blowfish.h" ; # unless $no_bf;
262$crypto.=" crypto/cast/cast.h" ; # unless $no_cast; 266$crypto.=" crypto/cast/cast.h" ; # unless $no_cast;
267$crypto.=" crypto/whrlpool/whrlpool.h" ;
263$crypto.=" crypto/md2/md2.h" ; # unless $no_md2; 268$crypto.=" crypto/md2/md2.h" ; # unless $no_md2;
264$crypto.=" crypto/md4/md4.h" ; # unless $no_md4; 269$crypto.=" crypto/md4/md4.h" ; # unless $no_md4;
265$crypto.=" crypto/md5/md5.h" ; # unless $no_md5; 270$crypto.=" crypto/md5/md5.h" ; # unless $no_md5;
@@ -301,17 +306,16 @@ $crypto.=" crypto/pkcs12/pkcs12.h";
301$crypto.=" crypto/x509/x509.h"; 306$crypto.=" crypto/x509/x509.h";
302$crypto.=" crypto/x509/x509_vfy.h"; 307$crypto.=" crypto/x509/x509_vfy.h";
303$crypto.=" crypto/x509v3/x509v3.h"; 308$crypto.=" crypto/x509v3/x509v3.h";
309$crypto.=" crypto/ts/ts.h";
304$crypto.=" crypto/rand/rand.h"; 310$crypto.=" crypto/rand/rand.h";
305$crypto.=" crypto/comp/comp.h" ; # unless $no_comp; 311$crypto.=" crypto/comp/comp.h" ; # unless $no_comp;
306$crypto.=" crypto/ocsp/ocsp.h"; 312$crypto.=" crypto/ocsp/ocsp.h";
307$crypto.=" crypto/ui/ui.h crypto/ui/ui_compat.h"; 313$crypto.=" crypto/ui/ui.h crypto/ui/ui_compat.h";
308$crypto.=" crypto/krb5/krb5_asn.h"; 314$crypto.=" crypto/krb5/krb5_asn.h";
309$crypto.=" crypto/tmdiff.h"; 315#$crypto.=" crypto/store/store.h";
310$crypto.=" crypto/store/store.h";
311$crypto.=" crypto/pqueue/pqueue.h"; 316$crypto.=" crypto/pqueue/pqueue.h";
312$crypto.=" crypto/cms/cms.h"; 317$crypto.=" crypto/cms/cms.h";
313$crypto.=" crypto/jpake/jpake.h"; 318$crypto.=" crypto/jpake/jpake.h";
314$crypto.=" fips/fips.h fips/rand/fips_rand.h";
315 319
316my $symhacks="crypto/symhacks.h"; 320my $symhacks="crypto/symhacks.h";
317 321
@@ -885,6 +889,7 @@ sub do_defs
885 s/\{\}/\(\)/gs; 889 s/\{\}/\(\)/gs;
886 890
887 s/STACK_OF\(\)/void/gs; 891 s/STACK_OF\(\)/void/gs;
892 s/LHASH_OF\(\)/void/gs;
888 893
889 print STDERR "DEBUG: \$_ = \"$_\"\n" if $debug; 894 print STDERR "DEBUG: \$_ = \"$_\"\n" if $debug;
890 if (/^\#INFO:([^:]*):(.*)$/) { 895 if (/^\#INFO:([^:]*):(.*)$/) {
@@ -961,6 +966,25 @@ sub do_defs
961 $platform{"PEM_write_NS_CERT_SEQ"} = "VMS"; 966 $platform{"PEM_write_NS_CERT_SEQ"} = "VMS";
962 $platform{"PEM_read_P8_PRIV_KEY_INFO"} = "VMS"; 967 $platform{"PEM_read_P8_PRIV_KEY_INFO"} = "VMS";
963 $platform{"PEM_write_P8_PRIV_KEY_INFO"} = "VMS"; 968 $platform{"PEM_write_P8_PRIV_KEY_INFO"} = "VMS";
969 $platform{"EVP_sha384"} = "!VMSVAX";
970 $platform{"EVP_sha512"} = "!VMSVAX";
971 $platform{"SHA384_Init"} = "!VMSVAX";
972 $platform{"SHA384_Transform"} = "!VMSVAX";
973 $platform{"SHA384_Update"} = "!VMSVAX";
974 $platform{"SHA384_Final"} = "!VMSVAX";
975 $platform{"SHA384"} = "!VMSVAX";
976 $platform{"SHA512_Init"} = "!VMSVAX";
977 $platform{"SHA512_Transform"} = "!VMSVAX";
978 $platform{"SHA512_Update"} = "!VMSVAX";
979 $platform{"SHA512_Final"} = "!VMSVAX";
980 $platform{"SHA512"} = "!VMSVAX";
981 $platform{"WHIRLPOOL_Init"} = "!VMSVAX";
982 $platform{"WHIRLPOOL"} = "!VMSVAX";
983 $platform{"WHIRLPOOL_BitUpdate"} = "!VMSVAX";
984 $platform{"EVP_whirlpool"} = "!VMSVAX";
985 $platform{"WHIRLPOOL_Final"} = "!VMSVAX";
986 $platform{"WHIRLPOOL_Update"} = "!VMSVAX";
987
964 988
965 # Info we know about 989 # Info we know about
966 990
@@ -1085,6 +1109,8 @@ sub is_valid
1085 1109
1086 if ($platforms) { 1110 if ($platforms) {
1087 # platforms 1111 # platforms
1112 if ($keyword eq "VMSVAX" && $VMSVAX) { return 1; }
1113 if ($keyword eq "VMSNonVAX" && $VMSNonVAX) { return 1; }
1088 if ($keyword eq "VMS" && $VMS) { return 1; } 1114 if ($keyword eq "VMS" && $VMS) { return 1; }
1089 if ($keyword eq "WIN32" && $W32) { return 1; } 1115 if ($keyword eq "WIN32" && $W32) { return 1; }
1090 if ($keyword eq "WIN16" && $W16) { return 1; } 1116 if ($keyword eq "WIN16" && $W16) { return 1; }
@@ -1097,9 +1123,6 @@ sub is_valid
1097 if ($keyword eq "EXPORT_VAR_AS_FUNCTION" && ($VMSVAX || $W32 || $W16)) { 1123 if ($keyword eq "EXPORT_VAR_AS_FUNCTION" && ($VMSVAX || $W32 || $W16)) {
1098 return 1; 1124 return 1;
1099 } 1125 }
1100 if ($keyword eq "OPENSSL_FIPS" && $fips) {
1101 return 1;
1102 }
1103 if ($keyword eq "ZLIB" && $zlib) { return 1; } 1126 if ($keyword eq "ZLIB" && $zlib) { return 1; }
1104 return 0; 1127 return 0;
1105 } else { 1128 } else {
@@ -1117,6 +1140,7 @@ sub is_valid
1117 if ($keyword eq "SHA" && $no_sha) { return 0; } 1140 if ($keyword eq "SHA" && $no_sha) { return 0; }
1118 if ($keyword eq "RIPEMD" && $no_ripemd) { return 0; } 1141 if ($keyword eq "RIPEMD" && $no_ripemd) { return 0; }
1119 if ($keyword eq "MDC2" && $no_mdc2) { return 0; } 1142 if ($keyword eq "MDC2" && $no_mdc2) { return 0; }
1143 if ($keyword eq "WHIRLPOOL" && $no_whirlpool) { return 0; }
1120 if ($keyword eq "RSA" && $no_rsa) { return 0; } 1144 if ($keyword eq "RSA" && $no_rsa) { return 0; }
1121 if ($keyword eq "DSA" && $no_dsa) { return 0; } 1145 if ($keyword eq "DSA" && $no_dsa) { return 0; }
1122 if ($keyword eq "DH" && $no_dh) { return 0; } 1146 if ($keyword eq "DH" && $no_dh) { return 0; }
@@ -1143,7 +1167,9 @@ sub is_valid
1143 if ($keyword eq "GMP" && $no_gmp) { return 0; } 1167 if ($keyword eq "GMP" && $no_gmp) { return 0; }
1144 if ($keyword eq "RFC3779" && $no_rfc3779) { return 0; } 1168 if ($keyword eq "RFC3779" && $no_rfc3779) { return 0; }
1145 if ($keyword eq "TLSEXT" && $no_tlsext) { return 0; } 1169 if ($keyword eq "TLSEXT" && $no_tlsext) { return 0; }
1170 if ($keyword eq "PSK" && $no_psk) { return 0; }
1146 if ($keyword eq "CMS" && $no_cms) { return 0; } 1171 if ($keyword eq "CMS" && $no_cms) { return 0; }
1172 if ($keyword eq "SSL2" && $no_ssl2) { return 0; }
1147 if ($keyword eq "CAPIENG" && $no_capieng) { return 0; } 1173 if ($keyword eq "CAPIENG" && $no_capieng) { return 0; }
1148 if ($keyword eq "JPAKE" && $no_jpake) { return 0; } 1174 if ($keyword eq "JPAKE" && $no_jpake) { return 0; }
1149 if ($keyword eq "DEPRECATED" && $no_deprecated) { return 0; } 1175 if ($keyword eq "DEPRECATED" && $no_deprecated) { return 0; }
diff --git a/src/lib/libssl/src/util/mkerr.pl b/src/lib/libssl/src/util/mkerr.pl
index 554bebb159..15b774f277 100644
--- a/src/lib/libssl/src/util/mkerr.pl
+++ b/src/lib/libssl/src/util/mkerr.pl
@@ -1,6 +1,7 @@
1#!/usr/local/bin/perl -w 1#!/usr/local/bin/perl -w
2 2
3my $config = "crypto/err/openssl.ec"; 3my $config = "crypto/err/openssl.ec";
4my $hprefix = "openssl/";
4my $debug = 0; 5my $debug = 0;
5my $rebuild = 0; 6my $rebuild = 0;
6my $static = 1; 7my $static = 1;
@@ -12,11 +13,16 @@ my $staticloader = "";
12my $pack_errcode; 13my $pack_errcode;
13my $load_errcode; 14my $load_errcode;
14 15
16my $errcount;
17
15while (@ARGV) { 18while (@ARGV) {
16 my $arg = $ARGV[0]; 19 my $arg = $ARGV[0];
17 if($arg eq "-conf") { 20 if($arg eq "-conf") {
18 shift @ARGV; 21 shift @ARGV;
19 $config = shift @ARGV; 22 $config = shift @ARGV;
23 } elsif($arg eq "-hprefix") {
24 shift @ARGV;
25 $hprefix = shift @ARGV;
20 } elsif($arg eq "-debug") { 26 } elsif($arg eq "-debug") {
21 $debug = 1; 27 $debug = 1;
22 shift @ARGV; 28 shift @ARGV;
@@ -38,14 +44,78 @@ while (@ARGV) {
38 } elsif($arg eq "-write") { 44 } elsif($arg eq "-write") {
39 $dowrite = 1; 45 $dowrite = 1;
40 shift @ARGV; 46 shift @ARGV;
47 } elsif($arg eq "-help" || $arg eq "-h" || $arg eq "-?" || $arg eq "--help") {
48 print STDERR <<"EOF";
49mkerr.pl [options] ...
50
51Options:
52
53 -conf F Use the config file F instead of the default one:
54 crypto/err/openssl.ec
55
56 -hprefix P Prepend the filenames in generated #include <header>
57 statements with prefix P. Default: 'openssl/' (without
58 the quotes, naturally)
59
60 -debug Turn on debugging verbose output on stderr.
61
62 -rebuild Rebuild all header and C source files, irrespective of the
63 fact if any error or function codes have been added/removed.
64 Default: only update files for libraries which saw change
65 (of course, this requires '-write' as well, or no
66 files will be touched!)
67
68 -recurse scan a preconfigured set of directories / files for error and
69 function codes:
70 (<crypto/*.c>, <crypto/*/*.c>, <ssl/*.c>, <apps/*.c>)
71 When this option is NOT specified, the filelist is taken from
72 the commandline instead. Here, wildcards may be embedded. (Be
73 sure to escape those to prevent the shell from expanding them
74 for you when you wish mkerr.pl to do so instead.)
75 Default: take file list to scan from the command line.
76
77 -reindex Discard the numeric values previously assigned to the error
78 and function codes as extracted from the scanned header files;
79 instead renumber all of them starting from 100. (Note that
80 the numbers assigned through 'R' records in the config file
81 remain intact.)
82 Default: keep previously assigned numbers. (You are warned
83 when collisions are detected.)
84
85 -nostatic Generates a different source code, where these additional
86 functions are generated for each library specified in the
87 config file:
88 void ERR_load_<LIB>_strings(void);
89 void ERR_unload_<LIB>_strings(void);
90 void ERR_<LIB>_error(int f, int r, char *fn, int ln);
91 #define <LIB>err(f,r) ERR_<LIB>_error(f,r,__FILE__,__LINE__)
92 while the code facilitates the use of these in an environment
93 where the error support routines are dynamically loaded at
94 runtime.
95 Default: 'static' code generation.
96
97 -staticloader Prefix generated functions with the 'static' scope modifier.
98 Default: don't write any scope modifier prefix.
99
100 -write Actually (over)write the generated code to the header and C
101 source files as assigned to each library through the config
102 file.
103 Default: don't write.
104
105 -help / -h / -? / --help Show this help text.
106
107 ... Additional arguments are added to the file list to scan,
108 assuming '-recurse' was NOT specified on the command line.
109
110EOF
111 exit 1;
41 } else { 112 } else {
42 last; 113 last;
43 } 114 }
44} 115}
45 116
46if($recurse) { 117if($recurse) {
47 @source = ( <crypto/*.c>, <crypto/*/*.c>, <ssl/*.c>, 118 @source = (<crypto/*.c>, <crypto/*/*.c>, <ssl/*.c>);
48 <fips/*.c>, <fips/*/*.c>);
49} else { 119} else {
50 @source = @ARGV; 120 @source = @ARGV;
51} 121}
@@ -64,8 +134,8 @@ while(<IN>)
64 $cskip{$3} = $1; 134 $cskip{$3} = $1;
65 if($3 ne "NONE") { 135 if($3 ne "NONE") {
66 $csrc{$1} = $3; 136 $csrc{$1} = $3;
67 $fmax{$1} = 99; 137 $fmax{$1} = 100;
68 $rmax{$1} = 99; 138 $rmax{$1} = 100;
69 $fassigned{$1} = ":"; 139 $fassigned{$1} = ":";
70 $rassigned{$1} = ":"; 140 $rassigned{$1} = ":";
71 $fnew{$1} = 0; 141 $fnew{$1} = 0;
@@ -191,7 +261,8 @@ while (($hdr, $lib) = each %libinc)
191 if($1 eq "R") { 261 if($1 eq "R") {
192 $rcodes{$name} = $code; 262 $rcodes{$name} = $code;
193 if ($rassigned{$lib} =~ /:$code:/) { 263 if ($rassigned{$lib} =~ /:$code:/) {
194 print STDERR "!! ERROR: $lib reason code $code assigned twice\n"; 264 print STDERR "!! ERROR: $lib reason code $code assigned twice (collision at $name)\n";
265 ++$errcount;
195 } 266 }
196 $rassigned{$lib} .= "$code:"; 267 $rassigned{$lib} .= "$code:";
197 if(!(exists $rextra{$name}) && 268 if(!(exists $rextra{$name}) &&
@@ -200,7 +271,8 @@ while (($hdr, $lib) = each %libinc)
200 } 271 }
201 } else { 272 } else {
202 if ($fassigned{$lib} =~ /:$code:/) { 273 if ($fassigned{$lib} =~ /:$code:/) {
203 print STDERR "!! ERROR: $lib function code $code assigned twice\n"; 274 print STDERR "!! ERROR: $lib function code $code assigned twice (collision at $name)\n";
275 ++$errcount;
204 } 276 }
205 $fassigned{$lib} .= "$code:"; 277 $fassigned{$lib} .= "$code:";
206 if($code > $fmax{$lib}) { 278 if($code > $fmax{$lib}) {
@@ -231,6 +303,7 @@ while (($hdr, $lib) = each %libinc)
231 if ($rmax{$lib} >= 1000) { 303 if ($rmax{$lib} >= 1000) {
232 print STDERR "!! ERROR: SSL error codes 1000+ are reserved for alerts.\n"; 304 print STDERR "!! ERROR: SSL error codes 1000+ are reserved for alerts.\n";
233 print STDERR "!! Any new alerts must be added to $config.\n"; 305 print STDERR "!! Any new alerts must be added to $config.\n";
306 ++$errcount;
234 print STDERR "\n"; 307 print STDERR "\n";
235 } 308 }
236 } 309 }
@@ -255,6 +328,9 @@ foreach $file (@source) {
255 print STDERR "File loaded: ".$file."\r" if $debug; 328 print STDERR "File loaded: ".$file."\r" if $debug;
256 open(IN, "<$file") || die "Can't open source file $file\n"; 329 open(IN, "<$file") || die "Can't open source file $file\n";
257 while(<IN>) { 330 while(<IN>) {
331 # skip obsoleted source files entirely!
332 last if(/^#error\s+obsolete/);
333
258 if(/(([A-Z0-9]+)_F_([A-Z0-9_]+))/) { 334 if(/(([A-Z0-9]+)_F_([A-Z0-9_]+))/) {
259 next unless exists $csrc{$2}; 335 next unless exists $csrc{$2};
260 next if($1 eq "BIO_F_BUFFER_CTX"); 336 next if($1 eq "BIO_F_BUFFER_CTX");
@@ -264,6 +340,7 @@ foreach $file (@source) {
264 $fnew{$2}++; 340 $fnew{$2}++;
265 } 341 }
266 $notrans{$1} = 1 unless exists $ftrans{$3}; 342 $notrans{$1} = 1 unless exists $ftrans{$3};
343 print STDERR "Function: $1\t= $fcodes{$1} (lib: $2, name: $3)\n" if $debug;
267 } 344 }
268 if(/(([A-Z0-9]+)_R_[A-Z0-9_]+)/) { 345 if(/(([A-Z0-9]+)_R_[A-Z0-9_]+)/) {
269 next unless exists $csrc{$2}; 346 next unless exists $csrc{$2};
@@ -272,6 +349,7 @@ foreach $file (@source) {
272 $rcodes{$1} = "X"; 349 $rcodes{$1} = "X";
273 $rnew{$2}++; 350 $rnew{$2}++;
274 } 351 }
352 print STDERR "Reason: $1\t= $rcodes{$1} (lib: $2)\n" if $debug;
275 } 353 }
276 } 354 }
277 close IN; 355 close IN;
@@ -313,7 +391,7 @@ foreach $lib (keys %csrc)
313 } else { 391 } else {
314 push @out, 392 push @out,
315"/* ====================================================================\n", 393"/* ====================================================================\n",
316" * Copyright (c) 2001-2008 The OpenSSL Project. All rights reserved.\n", 394" * Copyright (c) 2001-2010 The OpenSSL Project. All rights reserved.\n",
317" *\n", 395" *\n",
318" * Redistribution and use in source and binary forms, with or without\n", 396" * Redistribution and use in source and binary forms, with or without\n",
319" * modification, are permitted provided that the following conditions\n", 397" * modification, are permitted provided that the following conditions\n",
@@ -369,6 +447,10 @@ foreach $lib (keys %csrc)
369"#ifndef HEADER_${lib}_ERR_H\n", 447"#ifndef HEADER_${lib}_ERR_H\n",
370"#define HEADER_${lib}_ERR_H\n", 448"#define HEADER_${lib}_ERR_H\n",
371"\n", 449"\n",
450"#ifdef __cplusplus\n",
451"extern \"C\" {\n",
452"#endif\n",
453"\n",
372"/* BEGIN ERROR CODES */\n"; 454"/* BEGIN ERROR CODES */\n";
373 } 455 }
374 open (OUT, ">$hfile") || die "Can't Open File $hfile for writing\n"; 456 open (OUT, ">$hfile") || die "Can't Open File $hfile for writing\n";
@@ -455,14 +537,21 @@ EOF
455 if (/\b(${lib}_R_\w*)\b.*\"(.*)\"/) { 537 if (/\b(${lib}_R_\w*)\b.*\"(.*)\"/) {
456 $err_reason_strings{$1} = $2; 538 $err_reason_strings{$1} = $2;
457 } 539 }
540 if (/\b${lib}_F_(\w*)\b.*\"(.*)\"/) {
541 if (!exists $ftrans{$1} && ($1 ne $2)) {
542 print STDERR "WARNING: Mismatched function string $2\n";
543 $ftrans{$1} = $2;
544 }
545 }
458 } 546 }
459 close(IN); 547 close(IN);
460 } 548 }
461 549
550
462 my $hincf; 551 my $hincf;
463 if($static) { 552 if($static) {
464 $hfile =~ /([^\/]+)$/; 553 $hfile =~ /([^\/]+)$/;
465 $hincf = "<openssl/$1>"; 554 $hincf = "<${hprefix}$1>";
466 } else { 555 } else {
467 $hincf = "\"$hfile\""; 556 $hincf = "\"$hfile\"";
468 } 557 }
@@ -487,7 +576,7 @@ EOF
487 print OUT <<"EOF"; 576 print OUT <<"EOF";
488/* $cfile */ 577/* $cfile */
489/* ==================================================================== 578/* ====================================================================
490 * Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved. 579 * Copyright (c) 1999-2010 The OpenSSL Project. All rights reserved.
491 * 580 *
492 * Redistribution and use in source and binary forms, with or without 581 * Redistribution and use in source and binary forms, with or without
493 * modification, are permitted provided that the following conditions 582 * modification, are permitted provided that the following conditions
@@ -713,3 +802,9 @@ if($debug && defined(@runref) ) {
713 print STDERR "$_\n"; 802 print STDERR "$_\n";
714 } 803 }
715} 804}
805
806if($errcount) {
807 print STDERR "There were errors, failing...\n\n";
808 exit $errcount;
809}
810
diff --git a/src/lib/libssl/src/util/mkfiles.pl b/src/lib/libssl/src/util/mkfiles.pl
index 67fb8694c8..6d15831450 100644
--- a/src/lib/libssl/src/util/mkfiles.pl
+++ b/src/lib/libssl/src/util/mkfiles.pl
@@ -26,6 +26,7 @@ my @dirs = (
26"crypto/aes", 26"crypto/aes",
27"crypto/camellia", 27"crypto/camellia",
28"crypto/seed", 28"crypto/seed",
29"crypto/modes",
29"crypto/bn", 30"crypto/bn",
30"crypto/rsa", 31"crypto/rsa",
31"crypto/dsa", 32"crypto/dsa",
@@ -46,6 +47,7 @@ my @dirs = (
46"crypto/pem", 47"crypto/pem",
47"crypto/x509", 48"crypto/x509",
48"crypto/x509v3", 49"crypto/x509v3",
50"crypto/cms",
49"crypto/conf", 51"crypto/conf",
50"crypto/jpake", 52"crypto/jpake",
51"crypto/txt_db", 53"crypto/txt_db",
@@ -56,25 +58,20 @@ my @dirs = (
56"crypto/ocsp", 58"crypto/ocsp",
57"crypto/ui", 59"crypto/ui",
58"crypto/krb5", 60"crypto/krb5",
59"crypto/store", 61#"crypto/store",
60"crypto/pqueue", 62"crypto/pqueue",
61"crypto/cms", 63"crypto/whrlpool",
62"fips", 64"crypto/ts",
63"fips/aes",
64"fips/des",
65"fips/dsa",
66"fips/dh",
67"fips/hmac",
68"fips/rand",
69"fips/rsa",
70"fips/sha",
71"ssl", 65"ssl",
72"apps", 66"apps",
73"engines", 67"engines",
68"engines/ccgost",
74"test", 69"test",
75"tools" 70"tools"
76); 71);
77 72
73%top;
74
78foreach (@dirs) { 75foreach (@dirs) {
79 &files_dir ($_, "Makefile"); 76 &files_dir ($_, "Makefile");
80} 77}
@@ -118,8 +115,8 @@ while (<IN>)
118 $o =~ s/\s+$//; 115 $o =~ s/\s+$//;
119 $o =~ s/\s+/ /g; 116 $o =~ s/\s+/ /g;
120 117
121 $o =~ s/\$[({]([^)}]+)[)}]/$sym{$1}/g; 118 $o =~ s/\$[({]([^)}]+)[)}]/$top{$1} or $sym{$1}/ge;
122 $sym{$s}=$o; 119 $sym{$s}=($top{$s} or $o);
123 } 120 }
124 } 121 }
125 122
@@ -129,6 +126,15 @@ foreach (sort keys %sym)
129 { 126 {
130 print "$_=$sym{$_}\n"; 127 print "$_=$sym{$_}\n";
131 } 128 }
129if ($dir eq "." && defined($sym{"BUILDENV"}))
130 {
131 foreach (split(' ',$sym{"BUILDENV"}))
132 {
133 /^(.+)=/;
134 $top{$1}=$sym{$1};
135 }
136 }
137
132print "RELATIVE_DIRECTORY=\n"; 138print "RELATIVE_DIRECTORY=\n";
133 139
134close (IN); 140close (IN);
diff --git a/src/lib/libssl/src/util/mklink.pl b/src/lib/libssl/src/util/mklink.pl
index eacc327882..61db12c68f 100644
--- a/src/lib/libssl/src/util/mklink.pl
+++ b/src/lib/libssl/src/util/mklink.pl
@@ -15,21 +15,13 @@
15# Apart from this, this script should be able to handle even the most 15# Apart from this, this script should be able to handle even the most
16# pathological cases. 16# pathological cases.
17 17
18my $pwd; 18use Cwd;
19eval 'use Cwd;';
20if ($@)
21 {
22 $pwd = `pwd`;
23 }
24else
25 {
26 $pwd = getcwd();
27 }
28 19
29my $from = shift; 20my $from = shift;
30my @files = @ARGV; 21my @files = @ARGV;
31 22
32my @from_path = split(/[\\\/]/, $from); 23my @from_path = split(/[\\\/]/, $from);
24my $pwd = getcwd();
33chomp($pwd); 25chomp($pwd);
34my @pwd_path = split(/[\\\/]/, $pwd); 26my @pwd_path = split(/[\\\/]/, $pwd);
35 27
@@ -59,6 +51,7 @@ my $to = join('/', @to_path);
59 51
60my $file; 52my $file;
61$symlink_exists=eval {symlink("",""); 1}; 53$symlink_exists=eval {symlink("",""); 1};
54if ($^O eq "msys") { $symlink_exists=0 };
62foreach $file (@files) { 55foreach $file (@files) {
63 my $err = ""; 56 my $err = "";
64 if ($symlink_exists) { 57 if ($symlink_exists) {
diff --git a/src/lib/libssl/src/util/mkstack.pl b/src/lib/libssl/src/util/mkstack.pl
index 2a968f395f..6a43757c95 100644
--- a/src/lib/libssl/src/util/mkstack.pl
+++ b/src/lib/libssl/src/util/mkstack.pl
@@ -21,7 +21,7 @@ while (@ARGV) {
21} 21}
22 22
23 23
24@source = (<crypto/*.[ch]>, <crypto/*/*.[ch]>, <ssl/*.[ch]>); 24@source = (<crypto/*.[ch]>, <crypto/*/*.[ch]>, <ssl/*.[ch]>, <apps/*.[ch]>);
25foreach $file (@source) { 25foreach $file (@source) {
26 next if -l $file; 26 next if -l $file;
27 27
@@ -31,11 +31,19 @@ foreach $file (@source) {
31 while(<IN>) { 31 while(<IN>) {
32 if (/^DECLARE_STACK_OF\(([^)]+)\)/) { 32 if (/^DECLARE_STACK_OF\(([^)]+)\)/) {
33 push @stacklst, $1; 33 push @stacklst, $1;
34 } if (/^DECLARE_ASN1_SET_OF\(([^)]+)\)/) { 34 }
35 if (/^DECLARE_SPECIAL_STACK_OF\(([^,\s]+)\s*,\s*([^>\s]+)\)/) {
36 push @sstacklst, [$1, $2];
37 }
38 if (/^DECLARE_ASN1_SET_OF\(([^)]+)\)/) {
35 push @asn1setlst, $1; 39 push @asn1setlst, $1;
36 } if (/^DECLARE_PKCS12_STACK_OF\(([^)]+)\)/) { 40 }
41 if (/^DECLARE_PKCS12_STACK_OF\(([^)]+)\)/) {
37 push @p12stklst, $1; 42 push @p12stklst, $1;
38 } 43 }
44 if (/^DECLARE_LHASH_OF\(([^)]+)\)/) {
45 push @lhashlst, $1;
46 }
39 } 47 }
40 close(IN); 48 close(IN);
41} 49}
@@ -65,7 +73,7 @@ while(<IN>) {
65 foreach $type_thing (sort @stacklst) { 73 foreach $type_thing (sort @stacklst) {
66 $new_stackfile .= <<EOF; 74 $new_stackfile .= <<EOF;
67 75
68#define sk_${type_thing}_new(st) SKM_sk_new($type_thing, (st)) 76#define sk_${type_thing}_new(cmp) SKM_sk_new($type_thing, (cmp))
69#define sk_${type_thing}_new_null() SKM_sk_new_null($type_thing) 77#define sk_${type_thing}_new_null() SKM_sk_new_null($type_thing)
70#define sk_${type_thing}_free(st) SKM_sk_free($type_thing, (st)) 78#define sk_${type_thing}_free(st) SKM_sk_free($type_thing, (st))
71#define sk_${type_thing}_num(st) SKM_sk_num($type_thing, (st)) 79#define sk_${type_thing}_num(st) SKM_sk_num($type_thing, (st))
@@ -88,6 +96,39 @@ while(<IN>) {
88#define sk_${type_thing}_is_sorted(st) SKM_sk_is_sorted($type_thing, (st)) 96#define sk_${type_thing}_is_sorted(st) SKM_sk_is_sorted($type_thing, (st))
89EOF 97EOF
90 } 98 }
99
100 foreach $type_thing (sort @sstacklst) {
101 my $t1 = $type_thing->[0];
102 my $t2 = $type_thing->[1];
103 $new_stackfile .= <<EOF;
104
105#define sk_${t1}_new(cmp) ((STACK_OF($t1) *)sk_new(CHECKED_SK_CMP_FUNC($t2, cmp)))
106#define sk_${t1}_new_null() ((STACK_OF($t1) *)sk_new_null())
107#define sk_${t1}_push(st, val) sk_push(CHECKED_PTR_OF(STACK_OF($t1), st), CHECKED_PTR_OF($t2, val))
108#define sk_${t1}_find(st, val) sk_find(CHECKED_PTR_OF(STACK_OF($t1), st), CHECKED_PTR_OF($t2, val))
109#define sk_${t1}_value(st, i) (($t1)sk_value(CHECKED_PTR_OF(STACK_OF($t1), st), i))
110#define sk_${t1}_num(st) SKM_sk_num($t1, st)
111#define sk_${t1}_pop_free(st, free_func) sk_pop_free(CHECKED_PTR_OF(STACK_OF($t1), st), CHECKED_SK_FREE_FUNC2($t1, free_func))
112#define sk_${t1}_insert(st, val, i) sk_insert(CHECKED_PTR_OF(STACK_OF($t1), st), CHECKED_PTR_OF($t2, val), i)
113#define sk_${t1}_free(st) SKM_sk_free(${t1}, st)
114#define sk_${t1}_set(st, i, val) sk_set((_STACK *)CHECKED_PTR_OF(STACK_OF($t1), st), i, CHECKED_PTR_OF($t2, val))
115#define sk_${t1}_zero(st) SKM_sk_zero($t1, (st))
116#define sk_${t1}_unshift(st, val) sk_unshift((_STACK *)CHECKED_PTR_OF(STACK_OF($t1), st), CHECKED_PTR_OF($t2, val))
117#define sk_${t1}_find_ex(st, val) sk_find_ex((_STACK *)CHECKED_CONST_PTR_OF(STACK_OF($t1), st), CHECKED_CONST_PTR_OF($t2, val))
118#define sk_${t1}_delete(st, i) SKM_sk_delete($t1, (st), (i))
119#define sk_${t1}_delete_ptr(st, ptr) ($t1 *)sk_delete_ptr((_STACK *)CHECKED_PTR_OF(STACK_OF($t1), st), CHECKED_PTR_OF($t2, ptr))
120#define sk_${t1}_set_cmp_func(st, cmp) \\
121 ((int (*)(const $t2 * const *,const $t2 * const *)) \\
122 sk_set_cmp_func((_STACK *)CHECKED_PTR_OF(STACK_OF($t1), st), CHECKED_SK_CMP_FUNC($t2, cmp)))
123#define sk_${t1}_dup(st) SKM_sk_dup($t1, st)
124#define sk_${t1}_shift(st) SKM_sk_shift($t1, (st))
125#define sk_${t1}_pop(st) ($t2 *)sk_pop((_STACK *)CHECKED_PTR_OF(STACK_OF($t1), st))
126#define sk_${t1}_sort(st) SKM_sk_sort($t1, (st))
127#define sk_${t1}_is_sorted(st) SKM_sk_is_sorted($t1, (st))
128
129EOF
130 }
131
91 foreach $type_thing (sort @asn1setlst) { 132 foreach $type_thing (sort @asn1setlst) {
92 $new_stackfile .= <<EOF; 133 $new_stackfile .= <<EOF;
93 134
@@ -108,6 +149,31 @@ EOF
108 SKM_PKCS12_decrypt_d2i($type_thing, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq)) 149 SKM_PKCS12_decrypt_d2i($type_thing, (algor), (d2i_func), (free_func), (pass), (passlen), (oct), (seq))
109EOF 150EOF
110 } 151 }
152
153 foreach $type_thing (sort @lhashlst) {
154 my $lc_tt = lc $type_thing;
155 $new_stackfile .= <<EOF;
156
157#define lh_${type_thing}_new() LHM_lh_new(${type_thing},${lc_tt})
158#define lh_${type_thing}_insert(lh,inst) LHM_lh_insert(${type_thing},lh,inst)
159#define lh_${type_thing}_retrieve(lh,inst) LHM_lh_retrieve(${type_thing},lh,inst)
160#define lh_${type_thing}_delete(lh,inst) LHM_lh_delete(${type_thing},lh,inst)
161#define lh_${type_thing}_doall(lh,fn) LHM_lh_doall(${type_thing},lh,fn)
162#define lh_${type_thing}_doall_arg(lh,fn,arg_type,arg) \\
163 LHM_lh_doall_arg(${type_thing},lh,fn,arg_type,arg)
164#define lh_${type_thing}_error(lh) LHM_lh_error(${type_thing},lh)
165#define lh_${type_thing}_num_items(lh) LHM_lh_num_items(${type_thing},lh)
166#define lh_${type_thing}_down_load(lh) LHM_lh_down_load(${type_thing},lh)
167#define lh_${type_thing}_node_stats_bio(lh,out) \\
168 LHM_lh_node_stats_bio(${type_thing},lh,out)
169#define lh_${type_thing}_node_usage_stats_bio(lh,out) \\
170 LHM_lh_node_usage_stats_bio(${type_thing},lh,out)
171#define lh_${type_thing}_stats_bio(lh,out) \\
172 LHM_lh_stats_bio(${type_thing},lh,out)
173#define lh_${type_thing}_free(lh) LHM_lh_free(${type_thing},lh)
174EOF
175 }
176
111 $new_stackfile .= "/* End of util/mkstack.pl block, you may now edit :-) */\n"; 177 $new_stackfile .= "/* End of util/mkstack.pl block, you may now edit :-) */\n";
112 $inside_block = 2; 178 $inside_block = 2;
113} 179}
diff --git a/src/lib/libssl/src/util/pl/BC-32.pl b/src/lib/libssl/src/util/pl/BC-32.pl
index 99b8c058d2..1f1e13fb40 100644
--- a/src/lib/libssl/src/util/pl/BC-32.pl
+++ b/src/lib/libssl/src/util/pl/BC-32.pl
@@ -117,7 +117,7 @@ ___
117 else 117 else
118 { 118 {
119 local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':''; 119 local($ex)=($target =~ /O_SSL/)?' $(L_CRYPTO)':'';
120 $ex.=' wsock32.lib gdi32.lib'; 120 $ex.=' ws2_32.lib gdi32.lib';
121 $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n"; 121 $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target /def:ms/${Name}.def @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
122 } 122 }
123 $ret.="\n"; 123 $ret.="\n";
diff --git a/src/lib/libssl/src/util/pl/Mingw32.pl b/src/lib/libssl/src/util/pl/Mingw32.pl
index 8f0483fb93..fe3fb27a78 100644
--- a/src/lib/libssl/src/util/pl/Mingw32.pl
+++ b/src/lib/libssl/src/util/pl/Mingw32.pl
@@ -19,7 +19,7 @@ $cc='gcc';
19if ($debug) 19if ($debug)
20 { $cflags="-DL_ENDIAN -DDSO_WIN32 -g2 -ggdb"; } 20 { $cflags="-DL_ENDIAN -DDSO_WIN32 -g2 -ggdb"; }
21else 21else
22 { $cflags="-DL_ENDIAN -DDSO_WIN32 -fomit-frame-pointer -O3 -march=i486 -Wall"; } 22 { $cflags="-DL_ENDIAN -DDSO_WIN32 -fomit-frame-pointer -O3 -mcpu=i486 -Wall"; }
23 23
24if ($gaswin and !$no_asm) 24if ($gaswin and !$no_asm)
25 { 25 {
@@ -43,8 +43,6 @@ if ($gaswin and !$no_asm)
43 $rmd160_asm_src='crypto/ripemd/asm/rm-win32.s'; 43 $rmd160_asm_src='crypto/ripemd/asm/rm-win32.s';
44 $sha1_asm_obj='$(OBJ_D)\s1-win32.o'; 44 $sha1_asm_obj='$(OBJ_D)\s1-win32.o';
45 $sha1_asm_src='crypto/sha/asm/s1-win32.s'; 45 $sha1_asm_src='crypto/sha/asm/s1-win32.s';
46 $cpuid_asm_obj='$(OBJ_D)\cpu-win32.o';
47 $cpuid_asm_src='crypto/cpu-win32.s';
48 $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART_WORDS"; 46 $cflags.=" -DBN_ASM -DMD5_ASM -DSHA1_ASM -DOPENSSL_BN_ASM_PART_WORDS";
49 } 47 }
50 48
@@ -57,7 +55,7 @@ $link='${CC}';
57$lflags='${CFLAGS}'; 55$lflags='${CFLAGS}';
58$efile='-o '; 56$efile='-o ';
59$exep=''; 57$exep='';
60$ex_libs="-lwsock32 -lgdi32"; 58$ex_libs="-lws2_32 -lgdi32";
61 59
62# static library stuff 60# static library stuff
63$mklib='ar r'; 61$mklib='ar r';
diff --git a/src/lib/libssl/src/util/pl/VC-32.pl b/src/lib/libssl/src/util/pl/VC-32.pl
index 85121c8ed1..c3e29fda96 100644
--- a/src/lib/libssl/src/util/pl/VC-32.pl
+++ b/src/lib/libssl/src/util/pl/VC-32.pl
@@ -4,21 +4,7 @@
4# 4#
5 5
6$ssl= "ssleay32"; 6$ssl= "ssleay32";
7 7$crypto="libeay32";
8if ($fips && !$shlib)
9 {
10 $crypto="libeayfips32";
11 $crypto_compat = "libeaycompat32.lib";
12 }
13else
14 {
15 $crypto="libeay32";
16 }
17
18if ($fipscanisterbuild)
19 {
20 $fips_canister_path = "\$(LIB_D)\\fipscanister.lib";
21 }
22 8
23$o='\\'; 9$o='\\';
24$cp='$(PERL) util/copy.pl'; 10$cp='$(PERL) util/copy.pl';
@@ -27,6 +13,10 @@ $rm='del /Q';
27 13
28$zlib_lib="zlib1.lib"; 14$zlib_lib="zlib1.lib";
29 15
16# Santize -L options for ms link
17$l_flags =~ s/-L("\[^"]+")/\/libpath:$1/g;
18$l_flags =~ s/-L(\S+)/\/libpath:$1/g;
19
30# C compiler stuff 20# C compiler stuff
31$cc='cl'; 21$cc='cl';
32if ($FLAVOR =~ /WIN64/) 22if ($FLAVOR =~ /WIN64/)
@@ -42,14 +32,28 @@ if ($FLAVOR =~ /WIN64/)
42 # per 0.9.8 release remaining warnings were explicitly examined and 32 # per 0.9.8 release remaining warnings were explicitly examined and
43 # considered safe to ignore. 33 # considered safe to ignore.
44 # 34 #
45 $base_cflags=' /W3 /Gs0 /GF /Gy /nologo -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DOPENSSL_SYSNAME_WIN32 -DOPENSSL_SYSNAME_WINNT -DUNICODE -D_UNICODE'; 35 $base_cflags= " $mf_cflag";
46 $base_cflags.=' -D_CRT_SECURE_NO_DEPRECATE'; # shut up VC8
47 $base_cflags.=' -D_CRT_NONSTDC_NO_DEPRECATE'; # shut up VC8
48 my $f = $shlib?' /MD':' /MT'; 36 my $f = $shlib?' /MD':' /MT';
49 $lib_cflag='/Zl' if (!$shlib); # remove /DEFAULTLIBs from static lib 37 $lib_cflag='/Zl' if (!$shlib); # remove /DEFAULTLIBs from static lib
50 $opt_cflags=$f.' /Ox'; 38 $opt_cflags=$f.' /Ox';
51 $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG'; 39 $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG';
52 $lflags="/nologo /subsystem:console /opt:ref"; 40 $lflags="/nologo /subsystem:console /opt:ref";
41
42 *::perlasm_compile_target = sub {
43 my ($target,$source,$bname)=@_;
44 my $ret;
45
46 $bname =~ s/(.*)\.[^\.]$/$1/;
47 $ret=<<___;
48\$(TMP_D)$o$bname.asm: $source
49 set ASM=\$(ASM)
50 \$(PERL) $source \$\@
51
52$target: \$(TMP_D)$o$bname.asm
53 \$(ASM) $afile\$\@ \$(TMP_D)$o$bname.asm
54
55___
56 }
53 } 57 }
54elsif ($FLAVOR =~ /CE/) 58elsif ($FLAVOR =~ /CE/)
55 { 59 {
@@ -99,18 +103,18 @@ elsif ($FLAVOR =~ /CE/)
99 } 103 }
100 104
101 $cc='$(CC)'; 105 $cc='$(CC)';
102 $base_cflags=' /W3 /WX /GF /Gy /nologo -DUNICODE -D_UNICODE -DOPENSSL_SYSNAME_WINCE -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DNO_CHMOD -I$(WCECOMPAT)/include -DOPENSSL_SMALL_FOOTPRINT'; 106 $base_cflags=' /W3 /WX /GF /Gy /nologo -DUNICODE -D_UNICODE -DOPENSSL_SYSNAME_WINCE -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DNO_CHMOD -DOPENSSL_SMALL_FOOTPRINT';
103 $base_cflags.=" $wcecdefs"; 107 $base_cflags.=" $wcecdefs";
108 $base_cflags.=' -I$(WCECOMPAT)/include' if (defined($ENV{'WCECOMPAT'}));
109 $base_cflags.=' -I$(PORTSDK_LIBPATH)/../../include' if (defined($ENV{'PORTSDK_LIBPATH'}));
104 $opt_cflags=' /MC /O1i'; # optimize for space, but with intrinsics... 110 $opt_cflags=' /MC /O1i'; # optimize for space, but with intrinsics...
105 $dbg_clfags=' /MC /Od -DDEBUG -D_DEBUG'; 111 $dbg_clfags=' /MC /Od -DDEBUG -D_DEBUG';
106 $lflags="/nologo /opt:ref $wcelflag"; 112 $lflags="/nologo /opt:ref $wcelflag";
107 } 113 }
108else # Win32 114else # Win32
109 { 115 {
110 $base_cflags=' /W3 /WX /Gs0 /GF /Gy /nologo -DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32'; 116 $base_cflags= " $mf_cflag";
111 $base_cflags.=' -D_CRT_SECURE_NO_DEPRECATE'; # shut up VC8 117 my $f = $shlib?' /MD':' /MT';
112 $base_cflags.=' -D_CRT_NONSTDC_NO_DEPRECATE'; # shut up VC8
113 my $f = $shlib || $fips ?' /MD':' /MT';
114 $lib_cflag='/Zl' if (!$shlib); # remove /DEFAULTLIBs from static lib 118 $lib_cflag='/Zl' if (!$shlib); # remove /DEFAULTLIBs from static lib
115 $opt_cflags=$f.' /Ox /O2 /Ob2'; 119 $opt_cflags=$f.' /Ox /O2 /Ob2';
116 $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG'; 120 $dbg_cflags=$f.'d /Od -DDEBUG -D_DEBUG';
@@ -118,22 +122,28 @@ else # Win32
118 } 122 }
119$mlflags=''; 123$mlflags='';
120 124
121$out_def="out32"; $out_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/); 125$out_def ="out32"; $out_def.="dll" if ($shlib);
122$tmp_def="tmp32"; $tmp_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/); 126 $out_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/);
127$tmp_def ="tmp32"; $tmp_def.="dll" if ($shlib);
128 $tmp_def.='_$(TARGETCPU)' if ($FLAVOR =~ /CE/);
123$inc_def="inc32"; 129$inc_def="inc32";
124 130
125if ($debug) 131if ($debug)
126 { 132 {
127 $cflags=$dbg_cflags.$base_cflags; 133 $cflags=$dbg_cflags.$base_cflags;
128 $lflags.=" /debug";
129 $mlflags.=' /debug';
130 } 134 }
131else 135else
132 { 136 {
133 $cflags=$opt_cflags.$base_cflags; 137 $cflags=$opt_cflags.$base_cflags;
134 } 138 }
135 139
140# generate symbols.pdb unconditionally
141$app_cflag.=" /Zi /Fd$tmp_def/app";
142$lib_cflag.=" /Zi /Fd$tmp_def/lib";
143$lflags.=" /debug";
144
136$obj='.obj'; 145$obj='.obj';
146$asm_suffix='.asm';
137$ofile="/Fo"; 147$ofile="/Fo";
138 148
139# EXE linking stuff 149# EXE linking stuff
@@ -143,26 +153,23 @@ $efile="/out:";
143$exep='.exe'; 153$exep='.exe';
144if ($no_sock) { $ex_libs=''; } 154if ($no_sock) { $ex_libs=''; }
145elsif ($FLAVOR =~ /CE/) { $ex_libs='winsock.lib'; } 155elsif ($FLAVOR =~ /CE/) { $ex_libs='winsock.lib'; }
146else { $ex_libs='wsock32.lib'; } 156else { $ex_libs='ws2_32.lib'; }
147 157
148if ($FLAVOR =~ /CE/) 158if ($FLAVOR =~ /CE/)
149 { 159 {
150 $ex_libs.=' $(WCECOMPAT)/lib/wcecompatex.lib'; 160 $ex_libs.=' $(WCECOMPAT)/lib/wcecompatex.lib' if (defined($ENV{'WCECOMPAT'}));
161 $ex_libs.=' $(PORTSDK_LIBPATH)/portlib.lib' if (defined($ENV{'PORTSDK_LIBPATH'}));
151 $ex_libs.=' /nodefaultlib:oldnames.lib coredll.lib corelibc.lib' if ($ENV{'TARGETCPU'} eq "X86"); 162 $ex_libs.=' /nodefaultlib:oldnames.lib coredll.lib corelibc.lib' if ($ENV{'TARGETCPU'} eq "X86");
152 } 163 }
153else 164else
154 { 165 {
155 $ex_libs.=' gdi32.lib crypt32.lib advapi32.lib user32.lib'; 166 $ex_libs.=' gdi32.lib advapi32.lib crypt32.lib user32.lib';
156 $ex_libs.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/); 167 $ex_libs.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/ and `cl 2>&1` =~ /14\.00\.4[0-9]{4}\./);
168 # WIN32 UNICODE build gets linked with unicows.lib for
169 # backward compatibility with Win9x.
170 $ex_libs="unicows.lib $ex_libs" if ($FLAVOR =~ /WIN32/ and $cflags =~ /\-DUNICODE/);
157 } 171 }
158 172
159# As native NT API is pure UNICODE, our WIN-NT build defaults to UNICODE,
160# but gets linked with unicows.lib to ensure backward compatibility.
161if ($FLAVOR =~ /NT/)
162 {
163 $cflags.=" -DOPENSSL_SYSNAME_WINNT -DUNICODE -D_UNICODE";
164 $ex_libs="unicows.lib $ex_libs";
165 }
166# static library stuff 173# static library stuff
167$mklib='lib /nologo'; 174$mklib='lib /nologo';
168$ranlib=''; 175$ranlib='';
@@ -173,23 +180,30 @@ $lfile='/out:';
173 180
174$shlib_ex_obj=""; 181$shlib_ex_obj="";
175$app_ex_obj="setargv.obj" if ($FLAVOR !~ /CE/); 182$app_ex_obj="setargv.obj" if ($FLAVOR !~ /CE/);
176if ($nasm) { 183if ($FLAVOR =~ /WIN64A/) {
184 if (`nasm -v 2>NUL` =~ /NASM version ([0-9]+\.[0-9]+)/ && $1 >= 2.0) {
185 $asm='nasm -f win64 -DNEAR -Ox -g';
186 $afile='-o ';
187 } else {
188 $asm='ml64 /c /Cp /Cx /Zi';
189 $afile='/Fo';
190 }
191} elsif ($FLAVOR =~ /WIN64I/) {
192 $asm='ias -d debug';
193 $afile="-o ";
194} elsif ($nasm) {
177 my $ver=`nasm -v 2>NUL`; 195 my $ver=`nasm -v 2>NUL`;
178 my $vew=`nasmw -v 2>NUL`; 196 my $vew=`nasmw -v 2>NUL`;
179 # pick newest version 197 # pick newest version
180 $asm=($ver gt $vew?"nasm":"nasmw")." -f win32"; 198 $asm=($ver gt $vew?"nasm":"nasmw")." -f win32";
199 $asmtype="win32n";
181 $afile='-o '; 200 $afile='-o ';
182} elsif ($ml64) {
183 $asm='ml64 /c /Cp /Cx';
184 $asm.=' /Zi' if $debug;
185 $afile='/Fo';
186} else { 201} else {
187 $asm='ml /nologo /Cp /coff /c /Cx'; 202 $asm='ml /nologo /Cp /coff /c /Cx /Zi';
188 $asm.=" /Zi" if $debug;
189 $afile='/Fo'; 203 $afile='/Fo';
204 $asmtype="win32";
190} 205}
191 206
192$aes_asm_obj='';
193$bn_asm_obj=''; 207$bn_asm_obj='';
194$bn_asm_src=''; 208$bn_asm_src='';
195$des_enc_obj=''; 209$des_enc_obj='';
@@ -198,56 +212,26 @@ $bf_enc_obj='';
198$bf_enc_src=''; 212$bf_enc_src='';
199 213
200if (!$no_asm) 214if (!$no_asm)
201 {
202 if ($FLAVOR =~ "WIN32")
203 {
204 $aes_asm_obj='crypto\aes\asm\a_win32.obj';
205 $aes_asm_src='crypto\aes\asm\a_win32.asm';
206 $bn_asm_obj='crypto\bn\asm\bn_win32.obj crypto\bn\asm\mt_win32.obj';
207 $bn_asm_src='crypto\bn\asm\bn_win32.asm crypto\bn\asm\mt_win32.asm';
208 $bnco_asm_obj='crypto\bn\asm\co_win32.obj';
209 $bnco_asm_src='crypto\bn\asm\co_win32.asm';
210 $des_enc_obj='crypto\des\asm\d_win32.obj crypto\des\asm\y_win32.obj';
211 $des_enc_src='crypto\des\asm\d_win32.asm crypto\des\asm\y_win32.asm';
212 $bf_enc_obj='crypto\bf\asm\b_win32.obj';
213 $bf_enc_src='crypto\bf\asm\b_win32.asm';
214 $cast_enc_obj='crypto\cast\asm\c_win32.obj';
215 $cast_enc_src='crypto\cast\asm\c_win32.asm';
216 $rc4_enc_obj='crypto\rc4\asm\r4_win32.obj';
217 $rc4_enc_src='crypto\rc4\asm\r4_win32.asm';
218 $rc5_enc_obj='crypto\rc5\asm\r5_win32.obj';
219 $rc5_enc_src='crypto\rc5\asm\r5_win32.asm';
220 $md5_asm_obj='crypto\md5\asm\m5_win32.obj';
221 $md5_asm_src='crypto\md5\asm\m5_win32.asm';
222 $sha1_asm_obj='crypto\sha\asm\s1_win32.obj crypto\sha\asm\sha512-sse2.obj';
223 $sha1_asm_src='crypto\sha\asm\s1_win32.asm crypto\sha\asm\sha512-sse2.asm';
224 $rmd160_asm_obj='crypto\ripemd\asm\rm_win32.obj';
225 $rmd160_asm_src='crypto\ripemd\asm\rm_win32.asm';
226 $cpuid_asm_obj='crypto\cpu_win32.obj';
227 $cpuid_asm_src='crypto\cpu_win32.asm';
228 $cflags.=" -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DAES_ASM -DBN_ASM -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_BN_ASM_MONT -DMD5_ASM -DSHA1_ASM -DRMD160_ASM";
229 }
230 elsif ($FLAVOR =~ "WIN64A")
231 { 215 {
232 $aes_asm_obj='$(OBJ_D)\aes-x86_64.obj'; 216 win32_import_asm($mf_bn_asm, "bn", \$bn_asm_obj, \$bn_asm_src);
233 $aes_asm_src='crypto\aes\asm\aes-x86_64.asm'; 217 win32_import_asm($mf_aes_asm, "aes", \$aes_asm_obj, \$aes_asm_src);
234 $bn_asm_obj='$(OBJ_D)\x86_64-mont.obj $(OBJ_D)\bn_asm.obj'; 218 win32_import_asm($mf_des_asm, "des", \$des_enc_obj, \$des_enc_src);
235 $bn_asm_src='crypto\bn\asm\x86_64-mont.asm'; 219 win32_import_asm($mf_bf_asm, "bf", \$bf_enc_obj, \$bf_enc_src);
236 $sha1_asm_obj='$(OBJ_D)\sha1-x86_64.obj $(OBJ_D)\sha256-x86_64.obj $(OBJ_D)\sha512-x86_64.obj'; 220 win32_import_asm($mf_cast_asm, "cast", \$cast_enc_obj, \$cast_enc_src);
237 $sha1_asm_src='crypto\sha\asm\sha1-x86_64.asm crypto\sha\asm\sha256-x86_64.asm crypto\sha\asm\sha512-x86_64.asm'; 221 win32_import_asm($mf_rc4_asm, "rc4", \$rc4_enc_obj, \$rc4_enc_src);
238 $cpuid_asm_obj='$(OBJ_D)\cpuid-x86_64.obj'; 222 win32_import_asm($mf_rc5_asm, "rc5", \$rc5_enc_obj, \$rc5_enc_src);
239 $cpuid_asm_src='crypto\cpuid-x86_64.asm'; 223 win32_import_asm($mf_md5_asm, "md5", \$md5_asm_obj, \$md5_asm_src);
240 $cflags.=" -DOPENSSL_CPUID_OBJ -DAES_ASM -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM"; 224 win32_import_asm($mf_sha_asm, "sha", \$sha1_asm_obj, \$sha1_asm_src);
225 win32_import_asm($mf_rmd_asm, "ripemd", \$rmd160_asm_obj, \$rmd160_asm_src);
226 win32_import_asm($mf_wp_asm, "whrlpool", \$whirlpool_asm_obj, \$whirlpool_asm_src);
227 win32_import_asm($mf_cpuid_asm, "", \$cpuid_asm_obj, \$cpuid_asm_src);
228 $perl_asm = 1;
241 } 229 }
242 }
243 230
244if ($shlib && $FLAVOR !~ /CE/) 231if ($shlib && $FLAVOR !~ /CE/)
245 { 232 {
246 $mlflags.=" $lflags /dll"; 233 $mlflags.=" $lflags /dll";
247# $cflags =~ s| /MD| /MT|; 234 $lib_cflag.=" -D_WINDLL";
248 $lib_cflag=" -D_WINDLL";
249 $out_def="out32dll";
250 $tmp_def="tmp32dll";
251 # 235 #
252 # Engage Applink... 236 # Engage Applink...
253 # 237 #
@@ -267,8 +251,8 @@ $(INCO_D)\applink.c: ms\applink.c
267EXHEADER= $(EXHEADER) $(INCO_D)\applink.c 251EXHEADER= $(EXHEADER) $(INCO_D)\applink.c
268 252
269LIBS_DEP=$(LIBS_DEP) $(OBJ_D)\applink.obj 253LIBS_DEP=$(LIBS_DEP) $(OBJ_D)\applink.obj
254CRYPTOOBJ=$(OBJ_D)\uplink.obj $(CRYPTOOBJ)
270___ 255___
271$banner .= "CRYPTOOBJ=\$(OBJ_D)\\uplink.obj \$(CRYPTOOBJ)\n";
272 $banner.=<<'___' if ($FLAVOR =~ /WIN64/); 256 $banner.=<<'___' if ($FLAVOR =~ /WIN64/);
273CRYPTOOBJ=ms\uptable.obj $(CRYPTOOBJ) 257CRYPTOOBJ=ms\uptable.obj $(CRYPTOOBJ)
274___ 258___
@@ -276,120 +260,35 @@ ___
276elsif ($shlib && $FLAVOR =~ /CE/) 260elsif ($shlib && $FLAVOR =~ /CE/)
277 { 261 {
278 $mlflags.=" $lflags /dll"; 262 $mlflags.=" $lflags /dll";
279 $lib_cflag=" -D_WINDLL -D_DLL"; 263 $lflags.=' /entry:mainCRTstartup' if(defined($ENV{'PORTSDK_LIBPATH'}));
280 $out_def='out32dll_$(TARGETCPU)'; 264 $lib_cflag.=" -D_WINDLL -D_DLL";
281 $tmp_def='tmp32dll_$(TARGETCPU)';
282 } 265 }
283 266
284$cflags.=" /Fd$out_def";
285
286sub do_lib_rule 267sub do_lib_rule
287 { 268 {
288 my($objs,$target,$name,$shlib,$ign,$base_addr) = @_; 269 local($objs,$target,$name,$shlib)=@_;
289 local($ret); 270 local($ret);
290 271
291 $taget =~ s/\//$o/g if $o ne '/'; 272 $taget =~ s/\//$o/g if $o ne '/';
292 my $base_arg; 273 if ($name ne "")
293 if ($base_addr ne "")
294 {
295 $base_arg= " /base:$base_addr";
296 }
297 else
298 {
299 $base_arg = "";
300 }
301 if ($target =~ /O_CRYPTO/ && $fipsdso)
302 {
303 $name = "/def:ms/libeayfips.def";
304 }
305 elsif ($name ne "")
306 { 274 {
307 $name =~ tr/a-z/A-Z/; 275 $name =~ tr/a-z/A-Z/;
308 $name = "/def:ms/${name}.def"; 276 $name = "/def:ms/${name}.def";
309 } 277 }
310 278
311# $target="\$(LIB_D)$o$target"; 279# $target="\$(LIB_D)$o$target";
312# $ret.="$target: $objs\n"; 280 $ret.="$target: $objs\n";
313 if (!$shlib) 281 if (!$shlib)
314 { 282 {
315# $ret.="\t\$(RM) \$(O_$Name)\n"; 283# $ret.="\t\$(RM) \$(O_$Name)\n";
316 $ex =' '; 284 $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs\n<<\n";
317 $ret.="$target: $objs\n";
318 $ret.="\t\$(MKLIB) $lfile$target @<<\n $objs $ex\n<<\n";
319 } 285 }
320 else 286 else
321 { 287 {
322 my $ex = ""; 288 local($ex)=($target =~ /O_CRYPTO/)?'':' $(L_CRYPTO)';
323 if ($target =~ /O_SSL/)
324 {
325 $ex .= " \$(L_CRYPTO)";
326 #$ex .= " \$(L_FIPS)" if $fipsdso;
327 }
328 my $fipstarget;
329 if ($fipsdso)
330 {
331 $fipstarget = "O_FIPS";
332 }
333 else
334 {
335 $fipstarget = "O_CRYPTO";
336 }
337
338
339 if ($name eq "")
340 {
341 $ex.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/);
342 if ($target =~ /capi/)
343 {
344 $ex.=' crypt32.lib advapi32.lib';
345 }
346 }
347 elsif ($FLAVOR =~ /CE/)
348 {
349 $ex.=' winsock.lib $(WCECOMPAT)/lib/wcecompatex.lib';
350 }
351 else
352 {
353 $ex.=' unicows.lib' if ($FLAVOR =~ /NT/);
354 $ex.=' wsock32.lib gdi32.lib advapi32.lib user32.lib';
355 $ex.=' crypt32.lib';
356 $ex.=' bufferoverflowu.lib' if ($FLAVOR =~ /WIN64/);
357 }
358 $ex.=" $zlib_lib" if $zlib_opt == 1 && $target =~ /O_CRYPTO/; 289 $ex.=" $zlib_lib" if $zlib_opt == 1 && $target =~ /O_CRYPTO/;
359 290 $ret.="\t\$(LINK) \$(MLFLAGS) $efile$target $name @<<\n \$(SHLIB_EX_OBJ) $objs $ex \$(EX_LIBS)\n<<\n";
360 if ($fips && $target =~ /$fipstarget/) 291 $ret.="\tIF EXIST \$@.manifest mt -nologo -manifest \$@.manifest -outputresource:\$@;2\n\n";
361 {
362 $ex.= $mwex unless $fipscanisterbuild;
363 $ret.="$target: $objs \$(PREMAIN_DSO_EXE)";
364 if ($fipsdso)
365 {
366 $ex.=" \$(OBJ_D)\\\$(LIBFIPS).res";
367 $ret.=" \$(OBJ_D)\\\$(LIBFIPS).res";
368 $ret.=" ms/\$(LIBFIPS).def";
369 }
370 $ret.="\n\tSET FIPS_LINK=\$(LINK)\n";
371 $ret.="\tSET FIPS_CC=\$(CC)\n";
372 $ret.="\tSET FIPS_CC_ARGS=/Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\n";
373 $ret.="\tSET PREMAIN_DSO_EXE=\$(PREMAIN_DSO_EXE)\n";
374 $ret.="\tSET FIPS_SHA1_EXE=\$(FIPS_SHA1_EXE)\n";
375 $ret.="\tSET FIPS_TARGET=$target\n";
376 $ret.="\tSET FIPSLIB_D=\$(FIPSLIB_D)\n";
377 $ret.="\t\$(FIPSLINK) \$(MLFLAGS) /map $base_arg $efile$target ";
378 $ret.="$name @<<\n \$(SHLIB_EX_OBJ) $objs ";
379 $ret.="\$(OBJ_D)${o}fips_premain.obj $ex\n<<\n";
380 }
381 else
382 {
383 $ret.="$target: $objs";
384 if ($target =~ /O_CRYPTO/ && $fipsdso)
385 {
386 $ret .= " \$(O_FIPS)";
387 $ex .= " \$(L_FIPS)";
388 }
389 $ret.="\n\t\$(LINK) \$(MLFLAGS) $efile$target $name @<<\n \$(SHLIB_EX_OBJ) $objs $ex\n<<\n";
390 }
391
392 $ret.="\tIF EXIST \$@.manifest mt -nologo -manifest \$@.manifest -outputresource:\$@;2\n\n";
393 } 292 }
394 $ret.="\n"; 293 $ret.="\n";
395 return($ret); 294 return($ret);
@@ -397,64 +296,43 @@ sub do_lib_rule
397 296
398sub do_link_rule 297sub do_link_rule
399 { 298 {
400 my($target,$files,$dep_libs,$libs,$standalone)=@_; 299 local($target,$files,$dep_libs,$libs)=@_;
401 local($ret,$_); 300 local($ret,$_);
301
402 $file =~ s/\//$o/g if $o ne '/'; 302 $file =~ s/\//$o/g if $o ne '/';
403 $n=&bname($targer); 303 $n=&bname($targer);
404 $ret.="$target: $files $dep_libs\n"; 304 $ret.="$target: $files $dep_libs\n";
405 if ($standalone == 1) 305 $ret.="\t\$(LINK) \$(LFLAGS) $efile$target @<<\n";
406 { 306 $ret.=" \$(APP_EX_OBJ) $files $libs\n<<\n";
407 $ret.=" \$(LINK) \$(LFLAGS) $efile$target @<<\n\t"; 307 $ret.="\tIF EXIST \$@.manifest mt -nologo -manifest \$@.manifest -outputresource:\$@;1\n\n";
408 $ret.= "\$(EX_LIBS) " if ($files =~ /O_FIPSCANISTER/ && !$fipscanisterbuild); 308 return($ret);
409 $ret.="$files $libs\n<<\n"; 309 }
410 } 310
411 elsif ($standalone == 2) 311sub win32_import_asm
312 {
313 my ($mf_var, $asm_name, $oref, $sref) = @_;
314 my $asm_dir;
315 if ($asm_name eq "")
412 { 316 {
413 $ret.="\tSET FIPS_LINK=\$(LINK)\n"; 317 $asm_dir = "crypto\\";
414 $ret.="\tSET FIPS_CC=\$(CC)\n";
415 $ret.="\tSET FIPS_CC_ARGS=/Fo\$(OBJ_D)${o}fips_premain.obj \$(SHLIB_CFLAGS) -c\n";
416 $ret.="\tSET PREMAIN_DSO_EXE=\n";
417 $ret.="\tSET FIPS_TARGET=$target\n";
418 $ret.="\tSET FIPS_SHA1_EXE=\$(FIPS_SHA1_EXE)\n";
419 $ret.="\tSET FIPSLIB_D=\$(FIPSLIB_D)\n";
420 $ret.="\t\$(FIPSLINK) \$(LFLAGS) /map $efile$target @<<\n";
421 $ret.="\t\$(APP_EX_OBJ) $files \$(OBJ_D)${o}fips_premain.obj $libs\n<<\n";
422 } 318 }
423 else 319 else
424 { 320 {
425 $ret.="\t\$(LINK) \$(LFLAGS) $efile$target @<<\n"; 321 $asm_dir = "crypto\\$asm_name\\asm\\";
426 $ret.="\t\$(APP_EX_OBJ) $files $libs\n<<\n";
427 } 322 }
428 $ret.="\tIF EXIST \$@.manifest mt -nologo -manifest \$@.manifest -outputresource:\$@;1\n\n";
429 return($ret);
430 }
431 323
432sub do_rlink_rule 324 $$oref = "";
433 { 325 $mf_var =~ s/\.o$/.obj/g;
434 local($target,$rl_start, $rl_mid, $rl_end,$dep_libs,$libs)=@_;
435 local($ret,$_);
436 my $files = "$rl_start $rl_mid $rl_end";
437 326
438 $file =~ s/\//$o/g if $o ne '/'; 327 foreach (split(/ /, $mf_var))
439 $n=&bname($targer); 328 {
440 $ret.="$target: $files $dep_libs \$(FIPS_SHA1_EXE)\n"; 329 $$oref .= $asm_dir . $_ . " ";
441 $ret.="\t\$(PERL) ms\\segrenam.pl \$\$a $rl_start\n"; 330 }
442 $ret.="\t\$(PERL) ms\\segrenam.pl \$\$b $rl_mid\n"; 331 $$oref =~ s/ $//;
443 $ret.="\t\$(PERL) ms\\segrenam.pl \$\$c $rl_end\n"; 332 $$sref = $$oref;
444 $ret.="\t\$(MKLIB) $lfile$target @<<\n\t$files\n<<\n"; 333 $$sref =~ s/\.obj/.asm/g;
445 $ret.="\t\$(FIPS_SHA1_EXE) $target > ${target}.sha1\n";
446 $ret.="\t\$(PERL) util${o}copy.pl -stripcr fips${o}fips_premain.c \$(LIB_D)${o}fips_premain.c\n";
447 $ret.="\t\$(CP) fips${o}fips_premain.c.sha1 \$(LIB_D)${o}fips_premain.c.sha1\n";
448 $ret.="\n";
449 return($ret);
450 }
451 334
452sub do_sdef_rule
453 {
454 my $ret = "ms/\$(LIBFIPS).def: \$(O_FIPSCANISTER)\n";
455 $ret.="\t\$(PERL) util/mksdef.pl \$(MLFLAGS) /out:dummy.dll /def:ms/libeay32.def @<<\n \$(O_FIPSCANISTER)\n<<\n";
456 $ret.="\n";
457 return $ret;
458 } 335 }
459 336
337
4601; 3381;
diff --git a/src/lib/libssl/src/util/pod2man.pl b/src/lib/libssl/src/util/pod2man.pl
index 546d1ec186..025d914f2e 100644
--- a/src/lib/libssl/src/util/pod2man.pl
+++ b/src/lib/libssl/src/util/pod2man.pl
@@ -425,7 +425,7 @@ if ($name ne 'something') {
425 } 425 }
426 next if /^=cut\b/; # DB_File and Net::Ping have =cut before NAME 426 next if /^=cut\b/; # DB_File and Net::Ping have =cut before NAME
427 next if /^=pod\b/; # It is OK to have =pod before NAME 427 next if /^=pod\b/; # It is OK to have =pod before NAME
428 next if /^=for\s+comment\b/; # It is OK to have =for comment before NAME 428 next if /^=(for|begin|end)\s+comment\b/; # It is OK to have =for =begin or =end comment before NAME
429 die "$0: Invalid man page - 1st pod line is not NAME in $ARGV[0]\n" unless $lax; 429 die "$0: Invalid man page - 1st pod line is not NAME in $ARGV[0]\n" unless $lax;
430 } 430 }
431 die "$0: Invalid man page - no documentation in $ARGV[0]\n" unless $lax; 431 die "$0: Invalid man page - no documentation in $ARGV[0]\n" unless $lax;
diff --git a/src/lib/libssl/src/util/point.sh b/src/lib/libssl/src/util/point.sh
index 4790e08f8a..da39899cb1 100644
--- a/src/lib/libssl/src/util/point.sh
+++ b/src/lib/libssl/src/util/point.sh
@@ -1,7 +1,7 @@
1#!/bin/sh 1#!/bin/sh
2 2
3rm -f "$2" 3rm -f "$2"
4if test "$OSTYPE" = msdosdjgpp; then 4if test "$OSTYPE" = msdosdjgpp || test "x$PLATFORM" = xmingw ; then
5 cp "$1" "$2" 5 cp "$1" "$2"
6else 6else
7 ln -s "$1" "$2" 7 ln -s "$1" "$2"
diff --git a/src/lib/libssl/src/util/selftest.pl b/src/lib/libssl/src/util/selftest.pl
index 4778c5ab01..7b32e9f4ff 100644
--- a/src/lib/libssl/src/util/selftest.pl
+++ b/src/lib/libssl/src/util/selftest.pl
@@ -78,7 +78,7 @@ print OUT "\n";
78 78
79print "Checking compiler...\n"; 79print "Checking compiler...\n";
80if (open(TEST,">cctest.c")) { 80if (open(TEST,">cctest.c")) {
81 print TEST "#include <stdio.h>\n#include <errno.h>\nmain(){printf(\"Hello world\\n\");}\n"; 81 print TEST "#include <stdio.h>\n#include <stdlib.h>\n#include <errno.h>\nmain(){printf(\"Hello world\\n\");}\n";
82 close(TEST); 82 close(TEST);
83 system("$cc -o cctest cctest.c"); 83 system("$cc -o cctest cctest.c");
84 if (`./cctest` !~ /Hello world/) { 84 if (`./cctest` !~ /Hello world/) {
@@ -96,7 +96,7 @@ if (open(TEST,">cctest.c")) {
96 print OUT "Can't create cctest.c\n"; 96 print OUT "Can't create cctest.c\n";
97} 97}
98if (open(TEST,">cctest.c")) { 98if (open(TEST,">cctest.c")) {
99 print TEST "#include <openssl/opensslv.h>\nmain(){printf(OPENSSL_VERSION_TEXT);}\n"; 99 print TEST "#include <stdio.h>\n#include <stdlib.h>\n#include <openssl/opensslv.h>\nmain(){printf(OPENSSL_VERSION_TEXT);}\n";
100 close(TEST); 100 close(TEST);
101 system("$cc -o cctest -Iinclude cctest.c"); 101 system("$cc -o cctest -Iinclude cctest.c");
102 $cctest = `./cctest`; 102 $cctest = `./cctest`;
diff --git a/src/lib/libssl/src/util/shlib_wrap.sh b/src/lib/libssl/src/util/shlib_wrap.sh
index a2f62d696f..9416d593d2 100755
--- a/src/lib/libssl/src/util/shlib_wrap.sh
+++ b/src/lib/libssl/src/util/shlib_wrap.sh
@@ -80,7 +80,7 @@ if [ -f "$LIBCRYPTOSO" -a -z "$preload_var" ]; then
80 # it into a script makes it possible to do so on multi-ABI 80 # it into a script makes it possible to do so on multi-ABI
81 # platforms. 81 # platforms.
82 case "$SYSNAME" in 82 case "$SYSNAME" in
83 *BSD) LD_PRELOAD="$LIBCRYPTOSO:$LIBSSLSO" ;; # *BSD 83 *BSD|QNX) LD_PRELOAD="$LIBCRYPTOSO:$LIBSSLSO" ;; # *BSD, QNX
84 *) LD_PRELOAD="$LIBCRYPTOSO $LIBSSLSO" ;; # SunOS, Linux, ELF HP-UX 84 *) LD_PRELOAD="$LIBCRYPTOSO $LIBSSLSO" ;; # SunOS, Linux, ELF HP-UX
85 esac 85 esac
86 _RLD_LIST="$LIBCRYPTOSO:$LIBSSLSO:DEFAULT" # Tru64, o32 IRIX 86 _RLD_LIST="$LIBCRYPTOSO:$LIBSSLSO:DEFAULT" # Tru64, o32 IRIX
@@ -88,4 +88,6 @@ if [ -f "$LIBCRYPTOSO" -a -z "$preload_var" ]; then
88 export LD_PRELOAD _RLD_LIST DYLD_INSERT_LIBRARIES 88 export LD_PRELOAD _RLD_LIST DYLD_INSERT_LIBRARIES
89fi 89fi
90 90
91exec "$@" 91cmd="$1${EXE_EXT}"
92shift
93exec "$cmd" "$@"
diff --git a/src/lib/libssl/src/util/ssleay.num b/src/lib/libssl/src/util/ssleay.num
index 2055cc1597..15a58e7b13 100644
--- a/src/lib/libssl/src/util/ssleay.num
+++ b/src/lib/libssl/src/util/ssleay.num
@@ -98,9 +98,9 @@ SSLeay_add_ssl_algorithms 109 NOEXIST::FUNCTION:
98SSLv23_client_method 110 EXIST::FUNCTION:RSA 98SSLv23_client_method 110 EXIST::FUNCTION:RSA
99SSLv23_method 111 EXIST::FUNCTION:RSA 99SSLv23_method 111 EXIST::FUNCTION:RSA
100SSLv23_server_method 112 EXIST::FUNCTION:RSA 100SSLv23_server_method 112 EXIST::FUNCTION:RSA
101SSLv2_client_method 113 EXIST::FUNCTION:RSA 101SSLv2_client_method 113 EXIST::FUNCTION:RSA,SSL2
102SSLv2_method 114 EXIST::FUNCTION:RSA 102SSLv2_method 114 EXIST::FUNCTION:RSA,SSL2
103SSLv2_server_method 115 EXIST::FUNCTION:RSA 103SSLv2_server_method 115 EXIST::FUNCTION:RSA,SSL2
104SSLv3_client_method 116 EXIST::FUNCTION: 104SSLv3_client_method 116 EXIST::FUNCTION:
105SSLv3_method 117 EXIST::FUNCTION: 105SSLv3_method 117 EXIST::FUNCTION:
106SSLv3_server_method 118 EXIST::FUNCTION: 106SSLv3_server_method 118 EXIST::FUNCTION:
@@ -117,8 +117,8 @@ SSL_CIPHER_get_bits 128 EXIST::FUNCTION:
117SSL_CIPHER_get_version 129 EXIST::FUNCTION: 117SSL_CIPHER_get_version 129 EXIST::FUNCTION:
118SSL_CIPHER_get_name 130 EXIST::FUNCTION: 118SSL_CIPHER_get_name 130 EXIST::FUNCTION:
119BIO_ssl_shutdown 131 EXIST::FUNCTION:BIO 119BIO_ssl_shutdown 131 EXIST::FUNCTION:BIO
120SSL_SESSION_cmp 132 EXIST::FUNCTION: 120SSL_SESSION_cmp 132 NOEXIST::FUNCTION:
121SSL_SESSION_hash 133 EXIST::FUNCTION: 121SSL_SESSION_hash 133 NOEXIST::FUNCTION:
122SSL_SESSION_get_time 134 EXIST::FUNCTION: 122SSL_SESSION_get_time 134 EXIST::FUNCTION:
123SSL_SESSION_set_time 135 EXIST::FUNCTION: 123SSL_SESSION_set_time 135 EXIST::FUNCTION:
124SSL_SESSION_get_timeout 136 EXIST::FUNCTION: 124SSL_SESSION_get_timeout 136 EXIST::FUNCTION:
@@ -242,3 +242,20 @@ SSL_set_SSL_CTX 290 EXIST::FUNCTION:
242SSL_get_servername 291 EXIST::FUNCTION:TLSEXT 242SSL_get_servername 291 EXIST::FUNCTION:TLSEXT
243SSL_get_servername_type 292 EXIST::FUNCTION:TLSEXT 243SSL_get_servername_type 292 EXIST::FUNCTION:TLSEXT
244SSL_CTX_set_client_cert_engine 293 EXIST::FUNCTION:ENGINE 244SSL_CTX_set_client_cert_engine 293 EXIST::FUNCTION:ENGINE
245SSL_CTX_use_psk_identity_hint 294 EXIST::FUNCTION:PSK
246SSL_CTX_set_psk_client_callback 295 EXIST::FUNCTION:PSK
247PEM_write_bio_SSL_SESSION 296 EXIST::FUNCTION:
248SSL_get_psk_identity_hint 297 EXIST::FUNCTION:PSK
249SSL_set_psk_server_callback 298 EXIST::FUNCTION:PSK
250SSL_use_psk_identity_hint 299 EXIST::FUNCTION:PSK
251SSL_set_psk_client_callback 300 EXIST::FUNCTION:PSK
252PEM_read_SSL_SESSION 301 EXIST:!WIN16:FUNCTION:
253PEM_read_bio_SSL_SESSION 302 EXIST::FUNCTION:
254SSL_CTX_set_psk_server_callback 303 EXIST::FUNCTION:PSK
255SSL_get_psk_identity 304 EXIST::FUNCTION:PSK
256PEM_write_SSL_SESSION 305 EXIST:!WIN16:FUNCTION:
257SSL_set_session_ticket_ext 306 EXIST::FUNCTION:
258SSL_set_session_secret_cb 307 EXIST::FUNCTION:
259SSL_set_session_ticket_ext_cb 308 EXIST::FUNCTION:
260SSL_set1_param 309 EXIST::FUNCTION:
261SSL_CTX_set1_param 310 EXIST::FUNCTION:
diff --git a/src/lib/libssl/test/Makefile b/src/lib/libssl/test/Makefile
index 228ee368cd..3912f82427 100644
--- a/src/lib/libssl/test/Makefile
+++ b/src/lib/libssl/test/Makefile
@@ -5,7 +5,7 @@
5DIR= test 5DIR= test
6TOP= .. 6TOP= ..
7CC= cc 7CC= cc
8INCLUDES= -I$(TOP) -I../include $(KRB5_INCLUDES) -I$(TOP)/fips 8INCLUDES= -I$(TOP) -I../include $(KRB5_INCLUDES)
9CFLAG= -g 9CFLAG= -g
10MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG) 10MAKEDEPEND= $(TOP)/util/domd $(TOP) -MD $(MAKEDEPPROG)
11PERL= perl 11PERL= perl
@@ -27,7 +27,6 @@ DLIBCRYPTO= ../libcrypto.a
27DLIBSSL= ../libssl.a 27DLIBSSL= ../libssl.a
28LIBCRYPTO= -L.. -lcrypto 28LIBCRYPTO= -L.. -lcrypto
29LIBSSL= -L.. -lssl 29LIBSSL= -L.. -lssl
30LIBFIPS= -L.. -lfips
31 30
32BNTEST= bntest 31BNTEST= bntest
33ECTEST= ectest 32ECTEST= ectest
@@ -45,6 +44,7 @@ MD2TEST= md2test
45MD4TEST= md4test 44MD4TEST= md4test
46MD5TEST= md5test 45MD5TEST= md5test
47HMACTEST= hmactest 46HMACTEST= hmactest
47WPTEST= wp_test
48RC2TEST= rc2test 48RC2TEST= rc2test
49RC4TEST= rc4test 49RC4TEST= rc4test
50RC5TEST= rc5test 50RC5TEST= rc5test
@@ -60,66 +60,40 @@ RSATEST= rsa_test
60ENGINETEST= enginetest 60ENGINETEST= enginetest
61EVPTEST= evp_test 61EVPTEST= evp_test
62IGETEST= igetest 62IGETEST= igetest
63FIPS_SHATEST= fips_shatest 63JPAKETEST= jpaketest
64FIPS_DESTEST= fips_desmovs 64ASN1TEST= asn1test
65FIPS_RANDTEST= fips_randtest
66FIPS_AESTEST= fips_aesavs
67FIPS_HMACTEST= fips_hmactest
68FIPS_RSAVTEST= fips_rsavtest
69FIPS_RSASTEST= fips_rsastest
70FIPS_RSAGTEST= fips_rsagtest
71FIPS_DSATEST= fips_dsatest
72FIPS_DSSVS= fips_dssvs
73FIPS_RNGVS= fips_rngvs
74FIPS_TEST_SUITE=fips_test_suite
75 65
76TESTS= alltests 66TESTS= alltests
77 67
78EXE= $(BNTEST)$(EXE_EXT) $(ECTEST)$(EXE_EXT) $(ECDSATEST)$(EXE_EXT) $(ECDHTEST)$(EXE_EXT) $(IDEATEST)$(EXE_EXT) \ 68EXE= $(BNTEST)$(EXE_EXT) $(ECTEST)$(EXE_EXT) $(ECDSATEST)$(EXE_EXT) $(ECDHTEST)$(EXE_EXT) $(IDEATEST)$(EXE_EXT) \
79 $(MD2TEST)$(EXE_EXT) $(MD4TEST)$(EXE_EXT) $(MD5TEST)$(EXE_EXT) $(HMACTEST)$(EXE_EXT) \ 69 $(MD2TEST)$(EXE_EXT) $(MD4TEST)$(EXE_EXT) $(MD5TEST)$(EXE_EXT) $(HMACTEST)$(EXE_EXT) $(WPTEST)$(EXE_EXT) \
80 $(RC2TEST)$(EXE_EXT) $(RC4TEST)$(EXE_EXT) $(RC5TEST)$(EXE_EXT) \ 70 $(RC2TEST)$(EXE_EXT) $(RC4TEST)$(EXE_EXT) $(RC5TEST)$(EXE_EXT) \
81 $(DESTEST)$(EXE_EXT) $(SHATEST)$(EXE_EXT) $(SHA1TEST)$(EXE_EXT) $(SHA256TEST)$(EXE_EXT) $(SHA512TEST)$(EXE_EXT) \ 71 $(DESTEST)$(EXE_EXT) $(SHATEST)$(EXE_EXT) $(SHA1TEST)$(EXE_EXT) $(SHA256TEST)$(EXE_EXT) $(SHA512TEST)$(EXE_EXT) \
82 $(MDC2TEST)$(EXE_EXT) $(RMDTEST)$(EXE_EXT) \ 72 $(MDC2TEST)$(EXE_EXT) $(RMDTEST)$(EXE_EXT) \
83 $(RANDTEST)$(EXE_EXT) $(DHTEST)$(EXE_EXT) $(ENGINETEST)$(EXE_EXT) \ 73 $(RANDTEST)$(EXE_EXT) $(DHTEST)$(EXE_EXT) $(ENGINETEST)$(EXE_EXT) \
84 $(BFTEST)$(EXE_EXT) $(CASTTEST)$(EXE_EXT) $(SSLTEST)$(EXE_EXT) $(EXPTEST)$(EXE_EXT) $(DSATEST)$(EXE_EXT) $(RSATEST)$(EXE_EXT) \ 74 $(BFTEST)$(EXE_EXT) $(CASTTEST)$(EXE_EXT) $(SSLTEST)$(EXE_EXT) $(EXPTEST)$(EXE_EXT) $(DSATEST)$(EXE_EXT) $(RSATEST)$(EXE_EXT) \
85 $(EVPTEST)$(EXE_EXT) $(IGETEST)$(EXE_EXT) \ 75 $(EVPTEST)$(EXE_EXT) $(IGETEST)$(EXE_EXT) $(JPAKETEST)$(EXE_EXT) \
86 $(FIPS_SHATEST)$(EXE_EXT) $(FIPS_DESTEST)$(EXE_EXT) \ 76 $(ASN1TEST)$(EXE_EXT)
87 $(FIPS_RANDTEST)$(EXE_EXT) $(FIPS_AESTEST)$(EXE_EXT) \
88 $(FIPS_HMACTEST)$(EXE_EXT) $(FIPS_RSAVTEST)$(EXE_EXT) \
89 $(FIPS_RSASTEST)$(EXE_EXT) $(FIPS_RSAGTEST)$(EXE_EXT) \
90 $(FIPS_DSSVS)$(EXE_EXT) $(FIPS_DSATEST)$(EXE_EXT) \
91 $(FIPS_RNGVS)$(EXE_EXT) $(FIPS_TEST_SUITE)$(EXE_EXT) jpaketest$(EXE_EXT)
92 77
93# $(METHTEST)$(EXE_EXT) 78# $(METHTEST)$(EXE_EXT)
94 79
95OBJ= $(BNTEST).o $(ECTEST).o $(ECDSATEST).o $(ECDHTEST).o $(IDEATEST).o \ 80OBJ= $(BNTEST).o $(ECTEST).o $(ECDSATEST).o $(ECDHTEST).o $(IDEATEST).o \
96 $(MD2TEST).o $(MD4TEST).o $(MD5TEST).o \ 81 $(MD2TEST).o $(MD4TEST).o $(MD5TEST).o \
97 $(HMACTEST).o \ 82 $(HMACTEST).o $(WPTEST).o \
98 $(RC2TEST).o $(RC4TEST).o $(RC5TEST).o \ 83 $(RC2TEST).o $(RC4TEST).o $(RC5TEST).o \
99 $(DESTEST).o $(SHATEST).o $(SHA1TEST).o $(SHA256TEST).o $(SHA512TEST).o \ 84 $(DESTEST).o $(SHATEST).o $(SHA1TEST).o $(SHA256TEST).o $(SHA512TEST).o \
100 $(MDC2TEST).o $(RMDTEST).o \ 85 $(MDC2TEST).o $(RMDTEST).o \
101 $(RANDTEST).o $(DHTEST).o $(ENGINETEST).o $(CASTTEST).o \ 86 $(RANDTEST).o $(DHTEST).o $(ENGINETEST).o $(CASTTEST).o \
102 $(BFTEST).o $(SSLTEST).o $(DSATEST).o $(EXPTEST).o $(RSATEST).o \ 87 $(BFTEST).o $(SSLTEST).o $(DSATEST).o $(EXPTEST).o $(RSATEST).o \
103 $(EVPTEST).o $(IGETEST).o \ 88 $(EVPTEST).o $(IGETEST).o $(JPAKETEST).o $(ASN1TEST).o
104 $(FIPS_SHATEST).o $(FIPS_DESTEST).o $(FIPS_RANDTEST).o \
105 $(FIPS_AESTEST).o $(FIPS_HMACTEST).o $(FIPS_RSAVTEST).o \
106 $(FIPS_RSASTEST).o $(FIPS_RSAGTEST).o \
107 $(FIPS_DSSVS).o $(FIPS_DSATEST).o $(FIPS_RNGVS).o $(FIPS_TEST_SUITE).o \
108 jpaketest.o
109
110SRC= $(BNTEST).c $(ECTEST).c $(ECDSATEST).c $(ECDHTEST).c $(IDEATEST).c \ 89SRC= $(BNTEST).c $(ECTEST).c $(ECDSATEST).c $(ECDHTEST).c $(IDEATEST).c \
111 $(MD2TEST).c $(MD4TEST).c $(MD5TEST).c \ 90 $(MD2TEST).c $(MD4TEST).c $(MD5TEST).c \
112 $(HMACTEST).c \ 91 $(HMACTEST).c $(WPTEST).c \
113 $(RC2TEST).c $(RC4TEST).c $(RC5TEST).c \ 92 $(RC2TEST).c $(RC4TEST).c $(RC5TEST).c \
114 $(DESTEST).c $(SHATEST).c $(SHA1TEST).c $(MDC2TEST).c $(RMDTEST).c \ 93 $(DESTEST).c $(SHATEST).c $(SHA1TEST).c $(MDC2TEST).c $(RMDTEST).c \
115 $(RANDTEST).c $(DHTEST).c $(ENGINETEST).c $(CASTTEST).c \ 94 $(RANDTEST).c $(DHTEST).c $(ENGINETEST).c $(CASTTEST).c \
116 $(BFTEST).c $(SSLTEST).c $(DSATEST).c $(EXPTEST).c $(RSATEST).c \ 95 $(BFTEST).c $(SSLTEST).c $(DSATEST).c $(EXPTEST).c $(RSATEST).c \
117 $(EVPTEST).c $(IGETEST).c \ 96 $(EVPTEST).c $(IGETEST).c $(JPAKETEST).c $(ASN1TEST).c
118 $(FIPS_SHATEST).c $(FIPS_DESTEST).c $(FIPS_RANDTEST).c \
119 $(FIPS_AESTEST).c $(FIPS_HMACTEST).c $(FIPS_RSAVTEST).c \
120 $(FIPS_RSASTEST).c $(FIPS_RSAGTEST).c \
121 $(FIPS_DSSVS).c $(FIPS_DSATEST).c $(FIPS_RNGVS).c $(FIPS_TEST_SUITE).c \
122 jpaketest.c
123 97
124EXHEADER= 98EXHEADER=
125HEADER= $(EXHEADER) 99HEADER= $(EXHEADER)
@@ -156,12 +130,13 @@ apps:
156 130
157alltests: \ 131alltests: \
158 test_des test_idea test_sha test_md4 test_md5 test_hmac \ 132 test_des test_idea test_sha test_md4 test_md5 test_hmac \
159 test_md2 test_mdc2 \ 133 test_md2 test_mdc2 test_wp \
160 test_rmd test_rc2 test_rc4 test_rc5 test_bf test_cast test_aes \ 134 test_rmd test_rc2 test_rc4 test_rc5 test_bf test_cast test_aes \
161 test_rand test_bn test_ec test_ecdsa test_ecdh \ 135 test_rand test_bn test_ec test_ecdsa test_ecdh \
162 test_enc test_x509 test_rsa test_crl test_sid \ 136 test_enc test_x509 test_rsa test_crl test_sid \
163 test_gen test_req test_pkcs7 test_verify test_dh test_dsa \ 137 test_gen test_req test_pkcs7 test_verify test_dh test_dsa \
164 test_ss test_ca test_engine test_evp test_ssl test_ige test_jpake 138 test_ss test_ca test_engine test_evp test_ssl test_tsa test_ige \
139 test_jpake test_cms
165 140
166test_evp: 141test_evp:
167 ../util/shlib_wrap.sh ./$(EVPTEST) evptests.txt 142 ../util/shlib_wrap.sh ./$(EVPTEST) evptests.txt
@@ -177,9 +152,6 @@ test_sha:
177 ../util/shlib_wrap.sh ./$(SHA1TEST) 152 ../util/shlib_wrap.sh ./$(SHA1TEST)
178 ../util/shlib_wrap.sh ./$(SHA256TEST) 153 ../util/shlib_wrap.sh ./$(SHA256TEST)
179 ../util/shlib_wrap.sh ./$(SHA512TEST) 154 ../util/shlib_wrap.sh ./$(SHA512TEST)
180 if [ -n "$(FIPSCANLIB)" ]; then \
181 ../util/shlib_wrap.sh ./$(FIPS_SHATEST) < SHAmix.r | diff -w SHAmix.x - ; \
182 fi
183 155
184test_mdc2: 156test_mdc2:
185 ../util/shlib_wrap.sh ./$(MDC2TEST) 157 ../util/shlib_wrap.sh ./$(MDC2TEST)
@@ -193,6 +165,9 @@ test_md4:
193test_hmac: 165test_hmac:
194 ../util/shlib_wrap.sh ./$(HMACTEST) 166 ../util/shlib_wrap.sh ./$(HMACTEST)
195 167
168test_wp:
169 ../util/shlib_wrap.sh ./$(WPTEST)
170
196test_md2: 171test_md2:
197 ../util/shlib_wrap.sh ./$(MD2TEST) 172 ../util/shlib_wrap.sh ./$(MD2TEST)
198 173
@@ -216,12 +191,9 @@ test_rc5:
216 191
217test_rand: 192test_rand:
218 ../util/shlib_wrap.sh ./$(RANDTEST) 193 ../util/shlib_wrap.sh ./$(RANDTEST)
219 if [ -n "$(FIPSCANLIB)" ]; then \
220 ../util/shlib_wrap.sh ./$(FIPS_RANDTEST); \
221 fi
222 194
223test_enc: 195test_enc:
224 sh ./testenc 196 @sh ./testenc
225 197
226test_x509: 198test_x509:
227 echo test normal x509v1 certificate 199 echo test normal x509v1 certificate
@@ -283,9 +255,6 @@ test_dsa:
283 @echo "Generate a set of DSA parameters" 255 @echo "Generate a set of DSA parameters"
284 ../util/shlib_wrap.sh ./$(DSATEST) 256 ../util/shlib_wrap.sh ./$(DSATEST)
285 ../util/shlib_wrap.sh ./$(DSATEST) -app2_1 257 ../util/shlib_wrap.sh ./$(DSATEST) -app2_1
286 if [ -n "$(FIPSCANLIB)" ]; then \
287 ../util/shlib_wrap.sh ./$(FIPS_DSATEST); \
288 fi
289 258
290test_gen: 259test_gen:
291 @echo "Generate and verify a certificate request" 260 @echo "Generate and verify a certificate request"
@@ -305,9 +274,6 @@ test_engine:
305test_ssl: keyU.ss certU.ss certCA.ss certP1.ss keyP1.ss certP2.ss keyP2.ss \ 274test_ssl: keyU.ss certU.ss certCA.ss certP1.ss keyP1.ss certP2.ss keyP2.ss \
306 intP1.ss intP2.ss 275 intP1.ss intP2.ss
307 @echo "test SSL protocol" 276 @echo "test SSL protocol"
308 @if [ -n "$(FIPSCANLIB)" ]; then \
309 sh ./testfipsssl keyU.ss certU.ss certCA.ss; \
310 fi
311 ../util/shlib_wrap.sh ./$(SSLTEST) -test_cipherlist 277 ../util/shlib_wrap.sh ./$(SSLTEST) -test_cipherlist
312 @sh ./testssl keyU.ss certU.ss certCA.ss 278 @sh ./testssl keyU.ss certU.ss certCA.ss
313 @sh ./testsslproxy keyP1.ss certP1.ss intP1.ss 279 @sh ./testsslproxy keyP1.ss certP1.ss intP1.ss
@@ -325,13 +291,24 @@ test_aes: #$(AESTEST)
325# @echo "test Rijndael" 291# @echo "test Rijndael"
326# ../util/shlib_wrap.sh ./$(AESTEST) 292# ../util/shlib_wrap.sh ./$(AESTEST)
327 293
294test_tsa:
295 @if ../util/shlib_wrap.sh ../apps/openssl no-rsa; then \
296 echo "skipping testtsa test -- requires RSA"; \
297 else \
298 sh ./testtsa; \
299 fi
300
328test_ige: $(IGETEST)$(EXE_EXT) 301test_ige: $(IGETEST)$(EXE_EXT)
329 @echo "Test IGE mode" 302 @echo "Test IGE mode"
330 ../util/shlib_wrap.sh ./$(IGETEST) 303 ../util/shlib_wrap.sh ./$(IGETEST)
331 304
332test_jpake: jpaketest$(EXE_EXT) 305test_jpake: $(JPAKETEST)$(EXE_EXT)
333 @echo "Test JPAKE" 306 @echo "Test JPAKE"
334 ../util/shlib_wrap.sh ./jpaketest 307 ../util/shlib_wrap.sh ./$(JPAKETEST)
308
309test_cms:
310 @echo "CMS consistency test"
311 $(PERL) cms-test.pl
335 312
336lint: 313lint:
337 lint -DLINT $(INCLUDES) $(SRC)>fluff 314 lint -DLINT $(INCLUDES) $(SRC)>fluff
@@ -346,9 +323,11 @@ depend:
346dclean: 323dclean:
347 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new 324 $(PERL) -pe 'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}' $(MAKEFILE) >Makefile.new
348 mv -f Makefile.new $(MAKEFILE) 325 mv -f Makefile.new $(MAKEFILE)
326 rm -f $(SRC) $(SHA256TEST).c $(SHA512TEST).c evptests.txt newkey.pem testkey.pem \
327 testreq.pem
349 328
350clean: 329clean:
351 rm -f .rnd tmp.bntest tmp.bctest *.o *.obj lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss *.srl log dummytest 330 rm -f .rnd tmp.bntest tmp.bctest *.o *.obj *.dll lib tags core .pure .nfs* *.old *.bak fluff $(EXE) *.ss *.srl log dummytest
352 331
353$(DLIBSSL): 332$(DLIBSSL):
354 (cd ..; $(MAKE) DIRS=ssl all) 333 (cd ..; $(MAKE) DIRS=ssl all)
@@ -360,7 +339,6 @@ BUILD_CMD=shlib_target=; if [ -n "$(SHARED_LIBS)" ]; then \
360 shlib_target="$(SHLIB_TARGET)"; \ 339 shlib_target="$(SHLIB_TARGET)"; \
361 fi; \ 340 fi; \
362 LIBRARIES="$(LIBSSL) $(LIBCRYPTO) $(LIBKRB5)"; \ 341 LIBRARIES="$(LIBSSL) $(LIBCRYPTO) $(LIBKRB5)"; \
363 [ "$(FIPSCANLIB)" = "libfips" ] && LIBRARIES="$$LIBRARIES -lfips"; \
364 $(MAKE) -f $(TOP)/Makefile.shared -e \ 342 $(MAKE) -f $(TOP)/Makefile.shared -e \
365 APPNAME=$$target$(EXE_EXT) OBJECTS="$$target.o" \ 343 APPNAME=$$target$(EXE_EXT) OBJECTS="$$target.o" \
366 LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \ 344 LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \
@@ -396,71 +374,6 @@ $(SHA256TEST)$(EXE_EXT): $(SHA256TEST).o $(DLIBCRYPTO)
396$(SHA512TEST)$(EXE_EXT): $(SHA512TEST).o $(DLIBCRYPTO) 374$(SHA512TEST)$(EXE_EXT): $(SHA512TEST).o $(DLIBCRYPTO)
397 @target=$(SHA512TEST); $(BUILD_CMD) 375 @target=$(SHA512TEST); $(BUILD_CMD)
398 376
399FIPS_BUILD_CMD=shlib_target=; if [ -n "$(SHARED_LIBS)" ]; then \
400 shlib_target="$(SHLIB_TARGET)"; \
401 fi; \
402 if [ "$(FIPSCANLIB)" = "libfips" ]; then \
403 LIBRARIES="-L$(TOP) -lfips"; \
404 elif [ -n "$(FIPSCANLIB)" ]; then \
405 FIPSLD_CC=$(CC); CC=$(TOP)/fips/fipsld; export CC FIPSLD_CC; \
406 LIBRARIES="$${FIPSLIBDIR:-$(TOP)/fips/}fipscanister.o"; \
407 else \
408 LIBRARIES="$(LIBCRYPTO)"; \
409 fi; \
410 $(MAKE) -f $(TOP)/Makefile.shared -e \
411 CC=$${CC} APPNAME=$$target$(EXE_EXT) OBJECTS="$$target.o" \
412 LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \
413 link_app.$${shlib_target}
414
415FIPS_CRYPTO_BUILD_CMD=shlib_target=; if [ -n "$(SHARED_LIBS)" ]; then \
416 shlib_target="$(SHLIB_TARGET)"; \
417 fi; \
418 LIBRARIES="$(LIBSSL) $(LIBCRYPTO) $(LIBKRB5)"; \
419 if [ -z "$(SHARED_LIBS)" -a -n "$(FIPSCANLIB)" ] ; then \
420 FIPSLD_CC=$(CC); CC=$(TOP)/fips/fipsld; export CC FIPSLD_CC; \
421 fi; \
422 [ "$(FIPSCANLIB)" = "libfips" ] && LIBRARIES="$$LIBRARIES -lfips"; \
423 $(MAKE) -f $(TOP)/Makefile.shared -e \
424 CC=$${CC} APPNAME=$$target$(EXE_EXT) OBJECTS="$$target.o" \
425 LIBDEPS="$(PEX_LIBS) $$LIBRARIES $(EX_LIBS)" \
426 link_app.$${shlib_target}
427
428$(FIPS_SHATEST)$(EXE_EXT): $(FIPS_SHATEST).o $(DLIBCRYPTO)
429 @target=$(FIPS_SHATEST); $(FIPS_BUILD_CMD)
430
431$(FIPS_AESTEST)$(EXE_EXT): $(FIPS_AESTEST).o $(DLIBCRYPTO)
432 @target=$(FIPS_AESTEST); $(FIPS_BUILD_CMD)
433
434$(FIPS_DESTEST)$(EXE_EXT): $(FIPS_DESTEST).o $(DLIBCRYPTO)
435 @target=$(FIPS_DESTEST); $(FIPS_BUILD_CMD)
436
437$(FIPS_HMACTEST)$(EXE_EXT): $(FIPS_HMACTEST).o $(DLIBCRYPTO)
438 @target=$(FIPS_HMACTEST); $(FIPS_BUILD_CMD)
439
440$(FIPS_RANDTEST)$(EXE_EXT): $(FIPS_RANDTEST).o $(DLIBCRYPTO)
441 @target=$(FIPS_RANDTEST); $(FIPS_BUILD_CMD)
442
443$(FIPS_RSAVTEST)$(EXE_EXT): $(FIPS_RSAVTEST).o $(DLIBCRYPTO)
444 @target=$(FIPS_RSAVTEST); $(FIPS_BUILD_CMD)
445
446$(FIPS_RSASTEST)$(EXE_EXT): $(FIPS_RSASTEST).o $(DLIBCRYPTO)
447 @target=$(FIPS_RSASTEST); $(FIPS_BUILD_CMD)
448
449$(FIPS_RSAGTEST)$(EXE_EXT): $(FIPS_RSAGTEST).o $(DLIBCRYPTO)
450 @target=$(FIPS_RSAGTEST); $(FIPS_BUILD_CMD)
451
452$(FIPS_DSATEST)$(EXE_EXT): $(FIPS_DSATEST).o $(DLIBCRYPTO)
453 @target=$(FIPS_DSATEST); $(FIPS_BUILD_CMD)
454
455$(FIPS_DSSVS)$(EXE_EXT): $(FIPS_DSSVS).o $(DLIBCRYPTO)
456 @target=$(FIPS_DSSVS); $(FIPS_BUILD_CMD)
457
458$(FIPS_RNGVS)$(EXE_EXT): $(FIPS_RNGVS).o $(DLIBCRYPTO)
459 @target=$(FIPS_RNGVS); $(FIPS_BUILD_CMD)
460
461$(FIPS_TEST_SUITE)$(EXE_EXT): $(FIPS_TEST_SUITE).o $(DLIBCRYPTO)
462 @target=$(FIPS_TEST_SUITE); $(FIPS_BUILD_CMD)
463
464$(RMDTEST)$(EXE_EXT): $(RMDTEST).o $(DLIBCRYPTO) 377$(RMDTEST)$(EXE_EXT): $(RMDTEST).o $(DLIBCRYPTO)
465 @target=$(RMDTEST); $(BUILD_CMD) 378 @target=$(RMDTEST); $(BUILD_CMD)
466 379
@@ -476,6 +389,9 @@ $(MD5TEST)$(EXE_EXT): $(MD5TEST).o $(DLIBCRYPTO)
476$(HMACTEST)$(EXE_EXT): $(HMACTEST).o $(DLIBCRYPTO) 389$(HMACTEST)$(EXE_EXT): $(HMACTEST).o $(DLIBCRYPTO)
477 @target=$(HMACTEST); $(BUILD_CMD) 390 @target=$(HMACTEST); $(BUILD_CMD)
478 391
392$(WPTEST)$(EXE_EXT): $(WPTEST).o $(DLIBCRYPTO)
393 @target=$(WPTEST); $(BUILD_CMD)
394
479$(RC2TEST)$(EXE_EXT): $(RC2TEST).o $(DLIBCRYPTO) 395$(RC2TEST)$(EXE_EXT): $(RC2TEST).o $(DLIBCRYPTO)
480 @target=$(RC2TEST); $(BUILD_CMD) 396 @target=$(RC2TEST); $(BUILD_CMD)
481 397
@@ -507,7 +423,7 @@ $(METHTEST)$(EXE_EXT): $(METHTEST).o $(DLIBCRYPTO)
507 @target=$(METHTEST); $(BUILD_CMD) 423 @target=$(METHTEST); $(BUILD_CMD)
508 424
509$(SSLTEST)$(EXE_EXT): $(SSLTEST).o $(DLIBSSL) $(DLIBCRYPTO) 425$(SSLTEST)$(EXE_EXT): $(SSLTEST).o $(DLIBSSL) $(DLIBCRYPTO)
510 @target=$(SSLTEST); $(FIPS_CRYPTO_BUILD_CMD) 426 @target=$(SSLTEST); $(BUILD_CMD)
511 427
512$(ENGINETEST)$(EXE_EXT): $(ENGINETEST).o $(DLIBCRYPTO) 428$(ENGINETEST)$(EXE_EXT): $(ENGINETEST).o $(DLIBCRYPTO)
513 @target=$(ENGINETEST); $(BUILD_CMD) 429 @target=$(ENGINETEST); $(BUILD_CMD)
@@ -524,8 +440,11 @@ $(ECDHTEST)$(EXE_EXT): $(ECDHTEST).o $(DLIBCRYPTO)
524$(IGETEST)$(EXE_EXT): $(IGETEST).o $(DLIBCRYPTO) 440$(IGETEST)$(EXE_EXT): $(IGETEST).o $(DLIBCRYPTO)
525 @target=$(IGETEST); $(BUILD_CMD) 441 @target=$(IGETEST); $(BUILD_CMD)
526 442
527jpaketest$(EXE_EXT): jpaketest.o $(DLIBCRYPTO) 443$(JPAKETEST)$(EXE_EXT): $(JPAKETEST).o $(DLIBCRYPTO)
528 @target=jpaketest; $(BUILD_CMD) 444 @target=$(JPAKETEST); $(BUILD_CMD)
445
446$(ASN1TEST)$(EXE_EXT): $(ASN1TEST).o $(DLIBCRYPTO)
447 @target=$(ASN1TEST); $(BUILD_CMD)
529 448
530#$(AESTEST).o: $(AESTEST).c 449#$(AESTEST).o: $(AESTEST).c
531# $(CC) -c $(CFLAGS) -DINTERMEDIATE_VALUE_KAT -DTRACE_KAT_MCT $(AESTEST).c 450# $(CC) -c $(CFLAGS) -DINTERMEDIATE_VALUE_KAT -DTRACE_KAT_MCT $(AESTEST).c
@@ -538,10 +457,22 @@ jpaketest$(EXE_EXT): jpaketest.o $(DLIBCRYPTO)
538# fi 457# fi
539 458
540dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO) 459dummytest$(EXE_EXT): dummytest.o $(DLIBCRYPTO)
541 @target=dummytest$; $(BUILD_CMD) 460 @target=dummytest; $(BUILD_CMD)
542 461
543# DO NOT DELETE THIS LINE -- make depend depends on it. 462# DO NOT DELETE THIS LINE -- make depend depends on it.
544 463
464asn1test.o: ../include/openssl/asn1.h ../include/openssl/asn1_mac.h
465asn1test.o: ../include/openssl/bio.h ../include/openssl/buffer.h
466asn1test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
467asn1test.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
468asn1test.o: ../include/openssl/ecdsa.h ../include/openssl/evp.h
469asn1test.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
470asn1test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
471asn1test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
472asn1test.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
473asn1test.o: ../include/openssl/sha.h ../include/openssl/stack.h
474asn1test.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
475asn1test.o: ../include/openssl/x509_vfy.h asn1test.c
545bftest.o: ../e_os.h ../include/openssl/blowfish.h ../include/openssl/e_os2.h 476bftest.o: ../e_os.h ../include/openssl/blowfish.h ../include/openssl/e_os2.h
546bftest.o: ../include/openssl/opensslconf.h bftest.c 477bftest.o: ../include/openssl/opensslconf.h bftest.c
547bntest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 478bntest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
@@ -550,15 +481,14 @@ bntest.o: ../include/openssl/crypto.h ../include/openssl/dh.h
550bntest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h 481bntest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
551bntest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 482bntest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
552bntest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h 483bntest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
553bntest.o: ../include/openssl/evp.h ../include/openssl/fips.h 484bntest.o: ../include/openssl/evp.h ../include/openssl/lhash.h
554bntest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 485bntest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
555bntest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 486bntest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
556bntest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 487bntest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
557bntest.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h 488bntest.o: ../include/openssl/rand.h ../include/openssl/rsa.h
558bntest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 489bntest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
559bntest.o: ../include/openssl/sha.h ../include/openssl/stack.h 490bntest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
560bntest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h 491bntest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h bntest.c
561bntest.o: ../include/openssl/x509_vfy.h bntest.c
562casttest.o: ../e_os.h ../include/openssl/cast.h ../include/openssl/e_os2.h 492casttest.o: ../e_os.h ../include/openssl/cast.h ../include/openssl/e_os2.h
563casttest.o: ../include/openssl/opensslconf.h casttest.c 493casttest.o: ../include/openssl/opensslconf.h casttest.c
564destest.o: ../include/openssl/des.h ../include/openssl/des_old.h 494destest.o: ../include/openssl/des.h ../include/openssl/des_old.h
@@ -597,54 +527,53 @@ ecdsatest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
597ecdsatest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 527ecdsatest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
598ecdsatest.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 528ecdsatest.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
599ecdsatest.o: ../include/openssl/err.h ../include/openssl/evp.h 529ecdsatest.o: ../include/openssl/err.h ../include/openssl/evp.h
600ecdsatest.o: ../include/openssl/fips.h ../include/openssl/lhash.h 530ecdsatest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
601ecdsatest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 531ecdsatest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
602ecdsatest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 532ecdsatest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
603ecdsatest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h 533ecdsatest.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
604ecdsatest.o: ../include/openssl/rand.h ../include/openssl/safestack.h 534ecdsatest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
605ecdsatest.o: ../include/openssl/sha.h ../include/openssl/stack.h 535ecdsatest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
606ecdsatest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h 536ecdsatest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
607ecdsatest.o: ../include/openssl/x509_vfy.h ecdsatest.c 537ecdsatest.o: ecdsatest.c
608ectest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 538ectest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
609ectest.o: ../include/openssl/bn.h ../include/openssl/buffer.h 539ectest.o: ../include/openssl/bn.h ../include/openssl/buffer.h
610ectest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 540ectest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
611ectest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 541ectest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
612ectest.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 542ectest.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
613ectest.o: ../include/openssl/err.h ../include/openssl/evp.h 543ectest.o: ../include/openssl/err.h ../include/openssl/evp.h
614ectest.o: ../include/openssl/fips.h ../include/openssl/lhash.h 544ectest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
615ectest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 545ectest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
616ectest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 546ectest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
617ectest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h 547ectest.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
618ectest.o: ../include/openssl/rand.h ../include/openssl/safestack.h 548ectest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
619ectest.o: ../include/openssl/sha.h ../include/openssl/stack.h 549ectest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
620ectest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h 550ectest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h ectest.c
621ectest.o: ../include/openssl/x509_vfy.h ectest.c
622enginetest.o: ../include/openssl/asn1.h ../include/openssl/bio.h 551enginetest.o: ../include/openssl/asn1.h ../include/openssl/bio.h
623enginetest.o: ../include/openssl/buffer.h ../include/openssl/crypto.h 552enginetest.o: ../include/openssl/buffer.h ../include/openssl/crypto.h
624enginetest.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 553enginetest.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
625enginetest.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 554enginetest.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
626enginetest.o: ../include/openssl/engine.h ../include/openssl/err.h 555enginetest.o: ../include/openssl/engine.h ../include/openssl/err.h
627enginetest.o: ../include/openssl/evp.h ../include/openssl/fips.h 556enginetest.o: ../include/openssl/evp.h ../include/openssl/lhash.h
628enginetest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 557enginetest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
629enginetest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 558enginetest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
630enginetest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 559enginetest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
631enginetest.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h 560enginetest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
632enginetest.o: ../include/openssl/sha.h ../include/openssl/stack.h 561enginetest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
633enginetest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h 562enginetest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
634enginetest.o: ../include/openssl/x509_vfy.h enginetest.c 563enginetest.o: enginetest.c
635evp_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 564evp_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
636evp_test.o: ../include/openssl/buffer.h ../include/openssl/conf.h 565evp_test.o: ../include/openssl/buffer.h ../include/openssl/conf.h
637evp_test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 566evp_test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
638evp_test.o: ../include/openssl/ec.h ../include/openssl/ecdh.h 567evp_test.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
639evp_test.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h 568evp_test.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
640evp_test.o: ../include/openssl/err.h ../include/openssl/evp.h 569evp_test.o: ../include/openssl/err.h ../include/openssl/evp.h
641evp_test.o: ../include/openssl/fips.h ../include/openssl/lhash.h 570evp_test.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
642evp_test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 571evp_test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
643evp_test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 572evp_test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
644evp_test.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h 573evp_test.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
645evp_test.o: ../include/openssl/safestack.h ../include/openssl/sha.h 574evp_test.o: ../include/openssl/sha.h ../include/openssl/stack.h
646evp_test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h 575evp_test.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
647evp_test.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h evp_test.c 576evp_test.o: ../include/openssl/x509_vfy.h evp_test.c
648exptest.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/bn.h 577exptest.o: ../e_os.h ../include/openssl/bio.h ../include/openssl/bn.h
649exptest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 578exptest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
650exptest.o: ../include/openssl/err.h ../include/openssl/lhash.h 579exptest.o: ../include/openssl/err.h ../include/openssl/lhash.h
@@ -652,186 +581,14 @@ exptest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
652exptest.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h 581exptest.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
653exptest.o: ../include/openssl/safestack.h ../include/openssl/stack.h 582exptest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
654exptest.o: ../include/openssl/symhacks.h exptest.c 583exptest.o: ../include/openssl/symhacks.h exptest.c
655fips_aesavs.o: ../e_os.h ../fips/fips_utl.h ../include/openssl/aes.h
656fips_aesavs.o: ../include/openssl/asn1.h ../include/openssl/bio.h
657fips_aesavs.o: ../include/openssl/bn.h ../include/openssl/crypto.h
658fips_aesavs.o: ../include/openssl/e_os2.h ../include/openssl/err.h
659fips_aesavs.o: ../include/openssl/evp.h ../include/openssl/fips.h
660fips_aesavs.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
661fips_aesavs.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
662fips_aesavs.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
663fips_aesavs.o: ../include/openssl/safestack.h ../include/openssl/stack.h
664fips_aesavs.o: ../include/openssl/symhacks.h fips_aesavs.c
665fips_desmovs.o: ../e_os.h ../fips/fips_utl.h ../include/openssl/asn1.h
666fips_desmovs.o: ../include/openssl/bio.h ../include/openssl/bn.h
667fips_desmovs.o: ../include/openssl/crypto.h ../include/openssl/des.h
668fips_desmovs.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h
669fips_desmovs.o: ../include/openssl/err.h ../include/openssl/evp.h
670fips_desmovs.o: ../include/openssl/fips.h ../include/openssl/lhash.h
671fips_desmovs.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
672fips_desmovs.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
673fips_desmovs.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
674fips_desmovs.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
675fips_desmovs.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
676fips_desmovs.o: fips_desmovs.c
677fips_dsatest.o: ../e_os.h ../fips/fips_utl.h ../include/openssl/asn1.h
678fips_dsatest.o: ../include/openssl/bio.h ../include/openssl/bn.h
679fips_dsatest.o: ../include/openssl/buffer.h ../include/openssl/crypto.h
680fips_dsatest.o: ../include/openssl/des.h ../include/openssl/des_old.h
681fips_dsatest.o: ../include/openssl/dsa.h ../include/openssl/e_os2.h
682fips_dsatest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
683fips_dsatest.o: ../include/openssl/ecdsa.h ../include/openssl/engine.h
684fips_dsatest.o: ../include/openssl/err.h ../include/openssl/evp.h
685fips_dsatest.o: ../include/openssl/fips.h ../include/openssl/fips_rand.h
686fips_dsatest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
687fips_dsatest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
688fips_dsatest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
689fips_dsatest.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
690fips_dsatest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
691fips_dsatest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
692fips_dsatest.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
693fips_dsatest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
694fips_dsatest.o: fips_dsatest.c
695fips_dssvs.o: ../fips/fips_utl.h ../include/openssl/asn1.h
696fips_dssvs.o: ../include/openssl/bio.h ../include/openssl/bn.h
697fips_dssvs.o: ../include/openssl/crypto.h ../include/openssl/dsa.h
698fips_dssvs.o: ../include/openssl/e_os2.h ../include/openssl/err.h
699fips_dssvs.o: ../include/openssl/evp.h ../include/openssl/fips.h
700fips_dssvs.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
701fips_dssvs.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
702fips_dssvs.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
703fips_dssvs.o: ../include/openssl/safestack.h ../include/openssl/stack.h
704fips_dssvs.o: ../include/openssl/symhacks.h fips_dssvs.c
705fips_hmactest.o: ../fips/fips_utl.h ../include/openssl/asn1.h
706fips_hmactest.o: ../include/openssl/bio.h ../include/openssl/bn.h
707fips_hmactest.o: ../include/openssl/buffer.h ../include/openssl/conf.h
708fips_hmactest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
709fips_hmactest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
710fips_hmactest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
711fips_hmactest.o: ../include/openssl/evp.h ../include/openssl/fips.h
712fips_hmactest.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
713fips_hmactest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
714fips_hmactest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
715fips_hmactest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
716fips_hmactest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
717fips_hmactest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
718fips_hmactest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
719fips_hmactest.o: ../include/openssl/x509v3.h fips_hmactest.c
720fips_randtest.o: ../e_os.h ../fips/fips_utl.h ../include/openssl/bio.h
721fips_randtest.o: ../include/openssl/bn.h ../include/openssl/crypto.h
722fips_randtest.o: ../include/openssl/des.h ../include/openssl/des_old.h
723fips_randtest.o: ../include/openssl/e_os2.h ../include/openssl/err.h
724fips_randtest.o: ../include/openssl/fips_rand.h ../include/openssl/lhash.h
725fips_randtest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
726fips_randtest.o: ../include/openssl/ossl_typ.h ../include/openssl/rand.h
727fips_randtest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
728fips_randtest.o: ../include/openssl/symhacks.h ../include/openssl/ui.h
729fips_randtest.o: ../include/openssl/ui_compat.h fips_randtest.c
730fips_rngvs.o: ../fips/fips_utl.h ../include/openssl/asn1.h
731fips_rngvs.o: ../include/openssl/bio.h ../include/openssl/bn.h
732fips_rngvs.o: ../include/openssl/buffer.h ../include/openssl/conf.h
733fips_rngvs.o: ../include/openssl/crypto.h ../include/openssl/des.h
734fips_rngvs.o: ../include/openssl/des_old.h ../include/openssl/dsa.h
735fips_rngvs.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
736fips_rngvs.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
737fips_rngvs.o: ../include/openssl/err.h ../include/openssl/evp.h
738fips_rngvs.o: ../include/openssl/fips.h ../include/openssl/fips_rand.h
739fips_rngvs.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
740fips_rngvs.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
741fips_rngvs.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
742fips_rngvs.o: ../include/openssl/pkcs7.h ../include/openssl/rand.h
743fips_rngvs.o: ../include/openssl/safestack.h ../include/openssl/sha.h
744fips_rngvs.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
745fips_rngvs.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
746fips_rngvs.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
747fips_rngvs.o: ../include/openssl/x509v3.h fips_rngvs.c
748fips_rsagtest.o: ../fips/fips_utl.h ../include/openssl/asn1.h
749fips_rsagtest.o: ../include/openssl/bio.h ../include/openssl/bn.h
750fips_rsagtest.o: ../include/openssl/buffer.h ../include/openssl/conf.h
751fips_rsagtest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
752fips_rsagtest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
753fips_rsagtest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
754fips_rsagtest.o: ../include/openssl/evp.h ../include/openssl/fips.h
755fips_rsagtest.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
756fips_rsagtest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
757fips_rsagtest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
758fips_rsagtest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
759fips_rsagtest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
760fips_rsagtest.o: ../include/openssl/sha.h ../include/openssl/stack.h
761fips_rsagtest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
762fips_rsagtest.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h
763fips_rsagtest.o: fips_rsagtest.c
764fips_rsastest.o: ../fips/fips_utl.h ../include/openssl/asn1.h
765fips_rsastest.o: ../include/openssl/bio.h ../include/openssl/bn.h
766fips_rsastest.o: ../include/openssl/buffer.h ../include/openssl/conf.h
767fips_rsastest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
768fips_rsastest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
769fips_rsastest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
770fips_rsastest.o: ../include/openssl/evp.h ../include/openssl/fips.h
771fips_rsastest.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
772fips_rsastest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
773fips_rsastest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
774fips_rsastest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
775fips_rsastest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
776fips_rsastest.o: ../include/openssl/sha.h ../include/openssl/stack.h
777fips_rsastest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
778fips_rsastest.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h
779fips_rsastest.o: fips_rsastest.c
780fips_rsavtest.o: ../fips/fips_utl.h ../include/openssl/asn1.h
781fips_rsavtest.o: ../include/openssl/bio.h ../include/openssl/bn.h
782fips_rsavtest.o: ../include/openssl/buffer.h ../include/openssl/conf.h
783fips_rsavtest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
784fips_rsavtest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
785fips_rsavtest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
786fips_rsavtest.o: ../include/openssl/evp.h ../include/openssl/fips.h
787fips_rsavtest.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
788fips_rsavtest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
789fips_rsavtest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
790fips_rsavtest.o: ../include/openssl/ossl_typ.h ../include/openssl/pkcs7.h
791fips_rsavtest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
792fips_rsavtest.o: ../include/openssl/sha.h ../include/openssl/stack.h
793fips_rsavtest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
794fips_rsavtest.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h
795fips_rsavtest.o: fips_rsavtest.c
796fips_shatest.o: ../fips/fips_utl.h ../include/openssl/asn1.h
797fips_shatest.o: ../include/openssl/bio.h ../include/openssl/bn.h
798fips_shatest.o: ../include/openssl/buffer.h ../include/openssl/conf.h
799fips_shatest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
800fips_shatest.o: ../include/openssl/ec.h ../include/openssl/ecdh.h
801fips_shatest.o: ../include/openssl/ecdsa.h ../include/openssl/err.h
802fips_shatest.o: ../include/openssl/evp.h ../include/openssl/fips.h
803fips_shatest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h
804fips_shatest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
805fips_shatest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
806fips_shatest.o: ../include/openssl/pkcs7.h ../include/openssl/safestack.h
807fips_shatest.o: ../include/openssl/sha.h ../include/openssl/stack.h
808fips_shatest.o: ../include/openssl/symhacks.h ../include/openssl/x509.h
809fips_shatest.o: ../include/openssl/x509_vfy.h ../include/openssl/x509v3.h
810fips_shatest.o: fips_shatest.c
811fips_test_suite.o: ../fips/fips_utl.h ../include/openssl/aes.h
812fips_test_suite.o: ../include/openssl/asn1.h ../include/openssl/bio.h
813fips_test_suite.o: ../include/openssl/bn.h ../include/openssl/crypto.h
814fips_test_suite.o: ../include/openssl/des.h ../include/openssl/des_old.h
815fips_test_suite.o: ../include/openssl/dh.h ../include/openssl/dsa.h
816fips_test_suite.o: ../include/openssl/e_os2.h ../include/openssl/err.h
817fips_test_suite.o: ../include/openssl/evp.h ../include/openssl/fips.h
818fips_test_suite.o: ../include/openssl/hmac.h ../include/openssl/lhash.h
819fips_test_suite.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
820fips_test_suite.o: ../include/openssl/opensslconf.h
821fips_test_suite.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
822fips_test_suite.o: ../include/openssl/rand.h ../include/openssl/rsa.h
823fips_test_suite.o: ../include/openssl/safestack.h ../include/openssl/sha.h
824fips_test_suite.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
825fips_test_suite.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h
826fips_test_suite.o: fips_test_suite.c
827hmactest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 584hmactest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
828hmactest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 585hmactest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
829hmactest.o: ../include/openssl/evp.h ../include/openssl/fips.h 586hmactest.o: ../include/openssl/evp.h ../include/openssl/hmac.h
830hmactest.o: ../include/openssl/hmac.h ../include/openssl/md5.h 587hmactest.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h
831hmactest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 588hmactest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
832hmactest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 589hmactest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
833hmactest.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 590hmactest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
834hmactest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h hmactest.c 591hmactest.o: ../include/openssl/symhacks.h hmactest.c
835ideatest.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/idea.h 592ideatest.o: ../e_os.h ../include/openssl/e_os2.h ../include/openssl/idea.h
836ideatest.o: ../include/openssl/opensslconf.h ideatest.c 593ideatest.o: ../include/openssl/opensslconf.h ideatest.c
837igetest.o: ../include/openssl/aes.h ../include/openssl/e_os2.h 594igetest.o: ../include/openssl/aes.h ../include/openssl/e_os2.h
@@ -842,35 +599,34 @@ jpaketest.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
842jpaketest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 599jpaketest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
843jpaketest.o: ../include/openssl/safestack.h ../include/openssl/stack.h 600jpaketest.o: ../include/openssl/safestack.h ../include/openssl/stack.h
844jpaketest.o: ../include/openssl/symhacks.h jpaketest.c 601jpaketest.o: ../include/openssl/symhacks.h jpaketest.c
845md2test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 602md2test.o: ../include/openssl/buffer.h ../include/openssl/crypto.h
846md2test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 603md2test.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h
847md2test.o: ../include/openssl/evp.h ../include/openssl/fips.h
848md2test.o: ../include/openssl/md2.h ../include/openssl/obj_mac.h
849md2test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
850md2test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 604md2test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
851md2test.o: ../include/openssl/safestack.h ../include/openssl/stack.h 605md2test.o: ../include/openssl/safestack.h ../include/openssl/stack.h
852md2test.o: ../include/openssl/symhacks.h md2test.c 606md2test.o: ../include/openssl/symhacks.h md2test.c
853md4test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 607md4test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
854md4test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 608md4test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
855md4test.o: ../include/openssl/evp.h ../include/openssl/fips.h 609md4test.o: ../include/openssl/evp.h ../include/openssl/md4.h
856md4test.o: ../include/openssl/md4.h ../include/openssl/obj_mac.h 610md4test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
857md4test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 611md4test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
858md4test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 612md4test.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
859md4test.o: ../include/openssl/safestack.h ../include/openssl/stack.h 613md4test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h md4test.c
860md4test.o: ../include/openssl/symhacks.h md4test.c
861md5test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 614md5test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
862md5test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 615md5test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
863md5test.o: ../include/openssl/evp.h ../include/openssl/fips.h 616md5test.o: ../include/openssl/evp.h ../include/openssl/md5.h
864md5test.o: ../include/openssl/md5.h ../include/openssl/obj_mac.h 617md5test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
865md5test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 618md5test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
866md5test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 619md5test.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
867md5test.o: ../include/openssl/safestack.h ../include/openssl/stack.h 620md5test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h md5test.c
868md5test.o: ../include/openssl/symhacks.h md5test.c 621mdc2test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
869mdc2test.o: ../include/openssl/buffer.h ../include/openssl/crypto.h 622mdc2test.o: ../include/openssl/crypto.h ../include/openssl/des.h
870mdc2test.o: ../include/openssl/e_os2.h ../include/openssl/opensslconf.h 623mdc2test.o: ../include/openssl/des_old.h ../include/openssl/e_os2.h
871mdc2test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 624mdc2test.o: ../include/openssl/evp.h ../include/openssl/mdc2.h
872mdc2test.o: ../include/openssl/safestack.h ../include/openssl/stack.h 625mdc2test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
873mdc2test.o: ../include/openssl/symhacks.h mdc2test.c 626mdc2test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
627mdc2test.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
628mdc2test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
629mdc2test.o: ../include/openssl/ui.h ../include/openssl/ui_compat.h mdc2test.c
874randtest.o: ../e_os.h ../include/openssl/e_os2.h 630randtest.o: ../e_os.h ../include/openssl/e_os2.h
875randtest.o: ../include/openssl/opensslconf.h ../include/openssl/ossl_typ.h 631randtest.o: ../include/openssl/opensslconf.h ../include/openssl/ossl_typ.h
876randtest.o: ../include/openssl/rand.h randtest.c 632randtest.o: ../include/openssl/rand.h randtest.c
@@ -886,12 +642,11 @@ rc5test.o: ../include/openssl/safestack.h ../include/openssl/stack.h
886rc5test.o: ../include/openssl/symhacks.h rc5test.c 642rc5test.o: ../include/openssl/symhacks.h rc5test.c
887rmdtest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 643rmdtest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
888rmdtest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 644rmdtest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
889rmdtest.o: ../include/openssl/evp.h ../include/openssl/fips.h 645rmdtest.o: ../include/openssl/evp.h ../include/openssl/obj_mac.h
890rmdtest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 646rmdtest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
891rmdtest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 647rmdtest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
892rmdtest.o: ../include/openssl/ossl_typ.h ../include/openssl/ripemd.h 648rmdtest.o: ../include/openssl/ripemd.h ../include/openssl/safestack.h
893rmdtest.o: ../include/openssl/safestack.h ../include/openssl/stack.h 649rmdtest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h rmdtest.c
894rmdtest.o: ../include/openssl/symhacks.h rmdtest.c
895rsa_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 650rsa_test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
896rsa_test.o: ../include/openssl/bn.h ../include/openssl/crypto.h 651rsa_test.o: ../include/openssl/bn.h ../include/openssl/crypto.h
897rsa_test.o: ../include/openssl/e_os2.h ../include/openssl/err.h 652rsa_test.o: ../include/openssl/e_os2.h ../include/openssl/err.h
@@ -902,20 +657,18 @@ rsa_test.o: ../include/openssl/safestack.h ../include/openssl/stack.h
902rsa_test.o: ../include/openssl/symhacks.h rsa_test.c 657rsa_test.o: ../include/openssl/symhacks.h rsa_test.c
903sha1test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 658sha1test.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
904sha1test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 659sha1test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
905sha1test.o: ../include/openssl/evp.h ../include/openssl/fips.h 660sha1test.o: ../include/openssl/evp.h ../include/openssl/obj_mac.h
906sha1test.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 661sha1test.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
907sha1test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 662sha1test.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
908sha1test.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 663sha1test.o: ../include/openssl/safestack.h ../include/openssl/sha.h
909sha1test.o: ../include/openssl/sha.h ../include/openssl/stack.h 664sha1test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h sha1test.c
910sha1test.o: ../include/openssl/symhacks.h sha1test.c
911shatest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 665shatest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
912shatest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h 666shatest.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
913shatest.o: ../include/openssl/evp.h ../include/openssl/fips.h 667shatest.o: ../include/openssl/evp.h ../include/openssl/obj_mac.h
914shatest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h 668shatest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h
915shatest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h 669shatest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h
916shatest.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h 670shatest.o: ../include/openssl/safestack.h ../include/openssl/sha.h
917shatest.o: ../include/openssl/sha.h ../include/openssl/stack.h 671shatest.o: ../include/openssl/stack.h ../include/openssl/symhacks.h shatest.c
918shatest.o: ../include/openssl/symhacks.h shatest.c
919ssltest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h 672ssltest.o: ../e_os.h ../include/openssl/asn1.h ../include/openssl/bio.h
920ssltest.o: ../include/openssl/bn.h ../include/openssl/buffer.h 673ssltest.o: ../include/openssl/bn.h ../include/openssl/buffer.h
921ssltest.o: ../include/openssl/comp.h ../include/openssl/conf.h 674ssltest.o: ../include/openssl/comp.h ../include/openssl/conf.h
@@ -924,13 +677,12 @@ ssltest.o: ../include/openssl/dsa.h ../include/openssl/dtls1.h
924ssltest.o: ../include/openssl/e_os2.h ../include/openssl/ec.h 677ssltest.o: ../include/openssl/e_os2.h ../include/openssl/ec.h
925ssltest.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h 678ssltest.o: ../include/openssl/ecdh.h ../include/openssl/ecdsa.h
926ssltest.o: ../include/openssl/engine.h ../include/openssl/err.h 679ssltest.o: ../include/openssl/engine.h ../include/openssl/err.h
927ssltest.o: ../include/openssl/evp.h ../include/openssl/fips.h 680ssltest.o: ../include/openssl/evp.h ../include/openssl/hmac.h
928ssltest.o: ../include/openssl/hmac.h ../include/openssl/kssl.h 681ssltest.o: ../include/openssl/kssl.h ../include/openssl/lhash.h
929ssltest.o: ../include/openssl/lhash.h ../include/openssl/obj_mac.h 682ssltest.o: ../include/openssl/obj_mac.h ../include/openssl/objects.h
930ssltest.o: ../include/openssl/objects.h ../include/openssl/opensslconf.h 683ssltest.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
931ssltest.o: ../include/openssl/opensslv.h ../include/openssl/ossl_typ.h 684ssltest.o: ../include/openssl/ossl_typ.h ../include/openssl/pem.h
932ssltest.o: ../include/openssl/pem.h ../include/openssl/pem2.h 685ssltest.o: ../include/openssl/pem2.h ../include/openssl/pkcs7.h
933ssltest.o: ../include/openssl/pkcs7.h ../include/openssl/pq_compat.h
934ssltest.o: ../include/openssl/pqueue.h ../include/openssl/rand.h 686ssltest.o: ../include/openssl/pqueue.h ../include/openssl/rand.h
935ssltest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h 687ssltest.o: ../include/openssl/rsa.h ../include/openssl/safestack.h
936ssltest.o: ../include/openssl/sha.h ../include/openssl/ssl.h 688ssltest.o: ../include/openssl/sha.h ../include/openssl/ssl.h
@@ -939,3 +691,8 @@ ssltest.o: ../include/openssl/ssl3.h ../include/openssl/stack.h
939ssltest.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h 691ssltest.o: ../include/openssl/symhacks.h ../include/openssl/tls1.h
940ssltest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h 692ssltest.o: ../include/openssl/x509.h ../include/openssl/x509_vfy.h
941ssltest.o: ../include/openssl/x509v3.h ssltest.c 693ssltest.o: ../include/openssl/x509v3.h ssltest.c
694wp_test.o: ../include/openssl/crypto.h ../include/openssl/e_os2.h
695wp_test.o: ../include/openssl/opensslconf.h ../include/openssl/opensslv.h
696wp_test.o: ../include/openssl/ossl_typ.h ../include/openssl/safestack.h
697wp_test.o: ../include/openssl/stack.h ../include/openssl/symhacks.h
698wp_test.o: ../include/openssl/whrlpool.h wp_test.c
diff --git a/src/lib/libssl/test/maketests.com b/src/lib/libssl/test/maketests.com
index 14cbf06088..ca072f1d11 100644
--- a/src/lib/libssl/test/maketests.com
+++ b/src/lib/libssl/test/maketests.com
@@ -12,9 +12,9 @@ $! "test" programs for the different types of encryption for OpenSSL.
12$! It was written so it would try to determine what "C" compiler to 12$! It was written so it would try to determine what "C" compiler to
13$! use or you can specify which "C" compiler to use. 13$! use or you can specify which "C" compiler to use.
14$! 14$!
15$! The test "executeables" will be placed in a directory called 15$! The test "executables" will be placed in a directory called
16$! [.xxx.EXE.TEST] where "xxx" denotes AXP or VAX depending on your machines 16$! [.xxx.EXE.TEST] where "xxx" denotes ALPHA, IA64, or VAX, depending
17$! architecture. 17$! on your machine architecture.
18$! 18$!
19$! Specify DEBUG or NODEBUG P1 to compile with or without debugger 19$! Specify DEBUG or NODEBUG P1 to compile with or without debugger
20$! information. 20$! information.
@@ -44,24 +44,19 @@ $ TCPIP_LIB = ""
44$! 44$!
45$! Check Which Architecture We Are Using. 45$! Check Which Architecture We Are Using.
46$! 46$!
47$ IF (F$GETSYI("CPU").GE.128) 47$ if (f$getsyi( "HW_MODEL") .lt. 1024)
48$ THEN 48$ then
49$! 49$ arch = "VAX"
50$! The Architecture Is AXP. 50$ else
51$! 51$ arch = ""
52$ ARCH := AXP 52$ arch = arch+ f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
53$! 53$ if (arch .eqs. "") then arch = "UNK"
54$! Else... 54$ endif
55$!
56$ ELSE
57$!
58$! The Architecture Is VAX.
59$!
60$ ARCH := VAX
61$! 55$!
62$! End The Architecture Check. 56$! Define The OBJ and EXE Directories (EXE before CHECK_OPTIONS).
63$! 57$!
64$ ENDIF 58$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.TEST]
59$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.TEST]
65$! 60$!
66$! Check To Make Sure We Have Valid Command Line Parameters. 61$! Check To Make Sure We Have Valid Command Line Parameters.
67$! 62$!
@@ -73,7 +68,7 @@ $ GOSUB INITIALISE
73$! 68$!
74$! Tell The User What Kind of Machine We Run On. 69$! Tell The User What Kind of Machine We Run On.
75$! 70$!
76$ WRITE SYS$OUTPUT "Compiling On A ",ARCH," Machine." 71$ WRITE SYS$OUTPUT "Compiling On ''ARCH'."
77$! 72$!
78$! Define The CRYPTO-LIB We Are To Use. 73$! Define The CRYPTO-LIB We Are To Use.
79$! 74$!
@@ -83,39 +78,12 @@ $! Define The SSL We Are To Use.
83$! 78$!
84$ SSL_LIB := SYS$DISK:[-.'ARCH'.EXE.SSL]LIBSSL.OLB 79$ SSL_LIB := SYS$DISK:[-.'ARCH'.EXE.SSL]LIBSSL.OLB
85$! 80$!
86$! Define The OBJ Directory. 81$! Create the OBJ and EXE Directories, if needed.
87$!
88$ OBJ_DIR := SYS$DISK:[-.'ARCH'.OBJ.TEST]
89$!
90$! Check To See If The Architecture Specific OBJ Directory Exists.
91$!
92$ IF (F$PARSE(OBJ_DIR).EQS."")
93$ THEN
94$!
95$! The EXE Directory Dosen't Exist, So Create It.
96$!
97$ CREATE/DIRECTORY 'OBJ_DIR'
98$!
99$! End The Architecture Specific OBJ Directory Check.
100$!
101$ ENDIF
102$! 82$!
103$! Define The EXE Directory. 83$ IF (F$PARSE(OBJ_DIR).EQS."") THEN -
104$! 84 CREATE /DIRECTORY 'OBJ_DIR'
105$ EXE_DIR := SYS$DISK:[-.'ARCH'.EXE.TEST] 85$ IF (F$PARSE(EXE_DIR).EQS."") THEN -
106$! 86 CREATE /DIRECTORY 'EXE_DIR'
107$! Check To See If The Architecture Specific EXE Directory Exists.
108$!
109$ IF (F$PARSE(EXE_DIR).EQS."")
110$ THEN
111$!
112$! The EXE Directory Dosen't Exist, So Create It.
113$!
114$ CREATE/DIRECTORY 'EXE_DIR'
115$!
116$! End The Architecture Specific EXE Directory Check.
117$!
118$ ENDIF
119$! 87$!
120$! Check To See If We Have The Proper Libraries. 88$! Check To See If We Have The Proper Libraries.
121$! 89$!
@@ -126,20 +94,59 @@ $!
126$ GOSUB CHECK_OPT_FILE 94$ GOSUB CHECK_OPT_FILE
127$! 95$!
128$! Define The TEST Files. 96$! Define The TEST Files.
97$! NOTE: Some might think this list ugly. However, it's made this way to
98$! reflect the EXE variable in Makefile as closely as possible,
99$! thereby making it fairly easy to verify that the lists are the same.
129$! 100$!
130$ TEST_FILES = "BNTEST,ECTEST,ECDSATEST,ECDHTEST,IDEATEST,"+ - 101$ TEST_FILES = "BNTEST,ECTEST,ECDSATEST,ECDHTEST,IDEATEST,"+ -
131 "MD2TEST,MD4TEST,MD5TEST,HMACTEST,"+ - 102 "MD2TEST,MD4TEST,MD5TEST,HMACTEST,WP_TEST,"+ -
132 "RC2TEST,RC4TEST,RC5TEST,"+ - 103 "RC2TEST,RC4TEST,RC5TEST,"+ -
133 "DESTEST,SHATEST,SHA1TEST,SHA256T,SHA512T,"+ - 104 "DESTEST,SHATEST,SHA1TEST,SHA256T,SHA512T,"+ -
134 "MDC2TEST,RMDTEST,"+ - 105 "MDC2TEST,RMDTEST,"+ -
135 "RANDTEST,DHTEST,ENGINETEST,"+ - 106 "RANDTEST,DHTEST,ENGINETEST,"+ -
136 "BFTEST,CASTTEST,SSLTEST,EXPTEST,DSATEST,RSA_TEST,"+ - 107 "BFTEST,CASTTEST,SSLTEST,EXPTEST,DSATEST,RSA_TEST,"+ -
137 "EVP_TEST" 108 "EVP_TEST,JPAKETEST"
109$! Should we add MTTEST,PQ_TEST,LH_TEST,DIVTEST,TABTEST as well?
110$!
111$! Additional directory information.
112$ T_D_BNTEST := [-.crypto.bn]
113$ T_D_ECTEST := [-.crypto.ec]
114$ T_D_ECDSATEST := [-.crypto.ecdsa]
115$ T_D_ECDHTEST := [-.crypto.ecdh]
116$ T_D_IDEATEST := [-.crypto.idea]
117$ T_D_MD2TEST := [-.crypto.md2]
118$ T_D_MD4TEST := [-.crypto.md4]
119$ T_D_MD5TEST := [-.crypto.md5]
120$ T_D_HMACTEST := [-.crypto.hmac]
121$ T_D_WP_TEST := [-.crypto.whrlpool]
122$ T_D_RC2TEST := [-.crypto.rc2]
123$ T_D_RC4TEST := [-.crypto.rc4]
124$ T_D_RC5TEST := [-.crypto.rc5]
125$ T_D_DESTEST := [-.crypto.des]
126$ T_D_SHATEST := [-.crypto.sha]
127$ T_D_SHA1TEST := [-.crypto.sha]
128$ T_D_SHA256T := [-.crypto.sha]
129$ T_D_SHA512T := [-.crypto.sha]
130$ T_D_MDC2TEST := [-.crypto.mdc2]
131$ T_D_RMDTEST := [-.crypto.ripemd]
132$ T_D_RANDTEST := [-.crypto.rand]
133$ T_D_DHTEST := [-.crypto.dh]
134$ T_D_ENGINETEST := [-.crypto.engine]
135$ T_D_BFTEST := [-.crypto.bf]
136$ T_D_CASTTEST := [-.crypto.cast]
137$ T_D_SSLTEST := [-.ssl]
138$ T_D_EXPTEST := [-.crypto.bn]
139$ T_D_DSATEST := [-.crypto.dsa]
140$ T_D_RSA_TEST := [-.crypto.rsa]
141$ T_D_EVP_TEST := [-.crypto.evp]
142$ T_D_JPAKETEST := [-.crypto.jpake]
143$ T_D_IGETEST := [-.test]
144$!
138$ TCPIP_PROGRAMS = ",," 145$ TCPIP_PROGRAMS = ",,"
139$ IF COMPILER .EQS. "VAXC" THEN - 146$ IF COMPILER .EQS. "VAXC" THEN -
140 TCPIP_PROGRAMS = ",SSLTEST," 147 TCPIP_PROGRAMS = ",SSLTEST,"
141$! 148$!
142$! Define A File Counter And Set It To "0". 149$! Define A File Counter And Set It To "0".
143$! 150$!
144$ FILE_COUNTER = 0 151$ FILE_COUNTER = 0
145$! 152$!
@@ -161,7 +168,7 @@ $ FILE_COUNTER = FILE_COUNTER + 1
161$! 168$!
162$! Create The Source File Name. 169$! Create The Source File Name.
163$! 170$!
164$ SOURCE_FILE = "SYS$DISK:[]" + FILE_NAME + ".C" 171$ SOURCE_FILE = "SYS$DISK:" + T_D_'FILE_NAME' + FILE_NAME + ".C"
165$! 172$!
166$! Create The Object File Name. 173$! Create The Object File Name.
167$! 174$!
@@ -195,7 +202,7 @@ $!
195$! Compile The File. 202$! Compile The File.
196$! 203$!
197$ ON ERROR THEN GOTO NEXT_FILE 204$ ON ERROR THEN GOTO NEXT_FILE
198$ CC/OBJECT='OBJECT_FILE' 'SOURCE_FILE' 205$ CC /OBJECT='OBJECT_FILE' 'SOURCE_FILE'
199$ ON WARNING THEN GOTO NEXT_FILE 206$ ON WARNING THEN GOTO NEXT_FILE
200$! 207$!
201$! Check If What We Are About To Compile Works Without A TCP/IP Library. 208$! Check If What We Are About To Compile Works Without A TCP/IP Library.
@@ -205,7 +212,8 @@ $ THEN
205$! 212$!
206$! Inform The User That A TCP/IP Library Is Needed To Compile This Program. 213$! Inform The User That A TCP/IP Library Is Needed To Compile This Program.
207$! 214$!
208$ WRITE SYS$OUTPUT FILE_NAME," Needs A TCP/IP Library. Can't Link. Skipping..." 215$ WRITE SYS$OUTPUT -
216 FILE_NAME," Needs A TCP/IP Library. Can't Link. Skipping..."
209$ GOTO NEXT_FILE 217$ GOTO NEXT_FILE
210$! 218$!
211$! End The TCP/IP Library Check. 219$! End The TCP/IP Library Check.
@@ -220,10 +228,12 @@ $ THEN
220$! 228$!
221$! Don't Link With The RSAREF Routines And TCP/IP Library. 229$! Don't Link With The RSAREF Routines And TCP/IP Library.
222$! 230$!
223$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' - 231$ LINK /'DEBUGGER' /'TRACEBACK' /EXECTABLE = 'EXE_FILE' -
224 'OBJECT_FILE', - 232 'OBJECT_FILE', -
225 'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, - 233 'SSL_LIB' /LIBRARY, -
226 'TCPIP_LIB','OPT_FILE'/OPTION 234 'CRYPTO_LIB' /LIBRARY, -
235 'TCPIP_LIB', -
236 'OPT_FILE' /OPTIONS
227$! 237$!
228$! Else... 238$! Else...
229$! 239$!
@@ -231,10 +241,11 @@ $ ELSE
231$! 241$!
232$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library. 242$! Don't Link With The RSAREF Routines And Link With A TCP/IP Library.
233$! 243$!
234$ LINK/'DEBUGGER'/'TRACEBACK' /EXE='EXE_FILE' - 244$ LINK /'DEBUGGER' /'TRACEBACK' /EXECUTABLE = 'EXE_FILE' -
235 'OBJECT_FILE', - 245 'OBJECT_FILE', -
236 'SSL_LIB'/LIBRARY,'CRYPTO_LIB'/LIBRARY, - 246 'SSL_LIB' /LIBRARY, -
237 'OPT_FILE'/OPTION 247 'CRYPTO_LIB' /LIBRARY, -
248 'OPT_FILE' /OPTIONS
238$! 249$!
239$! End The TCP/IP Library Check. 250$! End The TCP/IP Library Check.
240$! 251$!
@@ -273,10 +284,10 @@ $!
273$ CREATE 'OPT_FILE' 284$ CREATE 'OPT_FILE'
274$DECK 285$DECK
275! 286!
276! Default System Options File To Link Agianst 287! Default System Options File To Link Against
277! The Sharable VAX C Runtime Library. 288! The Sharable VAX C Runtime Library.
278! 289!
279SYS$SHARE:VAXCRTL.EXE/SHARE 290SYS$SHARE:VAXCRTL.EXE /SHAREABLE
280$EOD 291$EOD
281$! 292$!
282$! End The Option File Check. 293$! End The Option File Check.
@@ -305,8 +316,8 @@ $DECK
305! Default System Options File To Link Agianst 316! Default System Options File To Link Agianst
306! The Sharable C Runtime Library. 317! The Sharable C Runtime Library.
307! 318!
308GNU_CC:[000000]GCCLIB/LIBRARY 319GNU_CC:[000000]GCCLIB.OLB /LIBRARY
309SYS$SHARE:VAXCRTL/SHARE 320SYS$SHARE:VAXCRTL.EXE /SHAREABLE
310$EOD 321$EOD
311$! 322$!
312$! End The Option File Check. 323$! End The Option File Check.
@@ -327,7 +338,7 @@ $!
327$ IF (F$SEARCH(OPT_FILE).EQS."") 338$ IF (F$SEARCH(OPT_FILE).EQS."")
328$ THEN 339$ THEN
329$! 340$!
330$! Figure Out If We Need An AXP Or A VAX Linker Option File. 341$! Figure Out If We Need A non-VAX Or A VAX Linker Option File.
331$! 342$!
332$ IF (ARCH.EQS."VAX") 343$ IF (ARCH.EQS."VAX")
333$ THEN 344$ THEN
@@ -340,26 +351,26 @@ $DECK
340! Default System Options File To Link Agianst 351! Default System Options File To Link Agianst
341! The Sharable DEC C Runtime Library. 352! The Sharable DEC C Runtime Library.
342! 353!
343SYS$SHARE:DECC$SHR.EXE/SHARE 354SYS$SHARE:DECC$SHR.EXE /SHAREABLE
344$EOD 355$EOD
345$! 356$!
346$! Else... 357$! Else...
347$! 358$!
348$ ELSE 359$ ELSE
349$! 360$!
350$! Create The AXP Linker Option File. 361$! Create The non-VAX Linker Option File.
351$! 362$!
352$ CREATE 'OPT_FILE' 363$ CREATE 'OPT_FILE'
353$DECK 364$DECK
354! 365!
355! Default System Options File For AXP To Link Agianst 366! Default System Options File For non-VAX To Link Agianst
356! The Sharable C Runtime Library. 367! The Sharable C Runtime Library.
357! 368!
358SYS$SHARE:CMA$OPEN_LIB_SHR/SHARE 369SYS$SHARE:CMA$OPEN_LIB_SHR.EXE /SHAREABLE
359SYS$SHARE:CMA$OPEN_RTL/SHARE 370SYS$SHARE:CMA$OPEN_RTL.EXE /SHAREABLE
360$EOD 371$EOD
361$! 372$!
362$! End The VAX/AXP DEC C Option File Check. 373$! End The DEC C Option File Check.
363$! 374$!
364$ ENDIF 375$ ENDIF
365$! 376$!
@@ -511,7 +522,7 @@ $ ELSE
511$! 522$!
512$! Check To See If We Have VAXC Or DECC. 523$! Check To See If We Have VAXC Or DECC.
513$! 524$!
514$ IF (ARCH.EQS."AXP").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."") 525$ IF (ARCH.NES."VAX").OR.(F$TRNLNM("DECC$CC_DEFAULT").NES."")
515$ THEN 526$ THEN
516$! 527$!
517$! Looks Like DECC, Set To Use DECC. 528$! Looks Like DECC, Set To Use DECC.
@@ -614,14 +625,14 @@ $! Use DECC...
614$! 625$!
615$ CC = "CC" 626$ CC = "CC"
616$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" - 627$ IF ARCH.EQS."VAX" .AND. F$TRNLNM("DECC$CC_DEFAULT").NES."/DECC" -
617 THEN CC = "CC/DECC" 628 THEN CC = "CC /DECC"
618$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/STANDARD=ANSI89" + - 629$ CC = CC + "/''CC_OPTIMIZE' /''DEBUGGER' /STANDARD=ANSI89" + -
619 "/NOLIST/PREFIX=ALL" + - 630 "/NOLIST /PREFIX=ALL" + -
620 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS 631 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
621$! 632$!
622$! Define The Linker Options File Name. 633$! Define The Linker Options File Name.
623$! 634$!
624$ OPT_FILE = "SYS$DISK:[]VAX_DECC_OPTIONS.OPT" 635$ OPT_FILE = "''EXE_DIR'VAX_DECC_OPTIONS.OPT"
625$! 636$!
626$! End DECC Check. 637$! End DECC Check.
627$! 638$!
@@ -643,23 +654,23 @@ $!
643$! Compile Using VAXC. 654$! Compile Using VAXC.
644$! 655$!
645$ CC = "CC" 656$ CC = "CC"
646$ IF ARCH.EQS."AXP" 657$ IF ARCH.NES."VAX"
647$ THEN 658$ THEN
648$ WRITE SYS$OUTPUT "There is no VAX C on Alpha!" 659$ WRITE SYS$OUTPUT "There is no VAX C on ''ARCH'!"
649$ EXIT 660$ EXIT
650$ ENDIF 661$ ENDIF
651$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC/VAXC" 662$ IF F$TRNLNM("DECC$CC_DEFAULT").EQS."/DECC" THEN CC = "CC /VAXC"
652$ CC = CC + "/''CC_OPTIMIZE'/''DEBUGGER'/NOLIST" + - 663$ CC = CC + "/''CC_OPTIMIZE' /''DEBUGGER' /NOLIST" + -
653 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS 664 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
654$ CCDEFS = CCDEFS + ",""VAXC""" 665$ CCDEFS = CCDEFS + ",""VAXC"""
655$! 666$!
656$! Define <sys> As SYS$COMMON:[SYSLIB] 667$! Define <sys> As SYS$COMMON:[SYSLIB]
657$! 668$!
658$ DEFINE/NOLOG SYS SYS$COMMON:[SYSLIB] 669$ DEFINE /NOLOG SYS SYS$COMMON:[SYSLIB]
659$! 670$!
660$! Define The Linker Options File Name. 671$! Define The Linker Options File Name.
661$! 672$!
662$ OPT_FILE = "SYS$DISK:[]VAX_VAXC_OPTIONS.OPT" 673$ OPT_FILE = "''EXE_DIR'VAX_VAXC_OPTIONS.OPT"
663$! 674$!
664$! End VAXC Check 675$! End VAXC Check
665$! 676$!
@@ -680,12 +691,12 @@ $ WRITE SYS$OUTPUT "Using GNU 'C' Compiler."
680$! 691$!
681$! Use GNU C... 692$! Use GNU C...
682$! 693$!
683$ CC = "GCC/NOCASE_HACK/''GCC_OPTIMIZE'/''DEBUGGER'/NOLIST" + - 694$ CC = "GCC /NOCASE_HACK /''GCC_OPTIMIZE' /''DEBUGGER' /NOLIST" + -
684 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS 695 "/INCLUDE=(SYS$DISK:[-],SYS$DISK:[-.CRYPTO])" + CCEXTRAFLAGS
685$! 696$!
686$! Define The Linker Options File Name. 697$! Define The Linker Options File Name.
687$! 698$!
688$ OPT_FILE = "SYS$DISK:[]VAX_GNUC_OPTIONS.OPT" 699$ OPT_FILE = "''EXE_DIR'VAX_GNUC_OPTIONS.OPT"
689$! 700$!
690$! End The GNU C Check. 701$! End The GNU C Check.
691$! 702$!
@@ -715,7 +726,7 @@ $ CC = CC + "/DEFINE=(" + CCDEFS + ")" + CCDISABLEWARNINGS
715$! 726$!
716$! Show user the result 727$! Show user the result
717$! 728$!
718$ WRITE/SYMBOL SYS$OUTPUT "Main Compiling Command: ",CC 729$ WRITE /SYMBOL SYS$OUTPUT "Main Compiling Command: ", CC
719$! 730$!
720$! Else The User Entered An Invalid Arguement. 731$! Else The User Entered An Invalid Arguement.
721$! 732$!
@@ -749,7 +760,7 @@ $ THEN
749$! 760$!
750$! Set the library to use SOCKETSHR 761$! Set the library to use SOCKETSHR
751$! 762$!
752$ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT/OPT" 763$ TCPIP_LIB = "SYS$DISK:[-.VMS]SOCKETSHR_SHR.OPT /OPTIONS"
753$! 764$!
754$! Done with SOCKETSHR 765$! Done with SOCKETSHR
755$! 766$!
@@ -760,7 +771,7 @@ $!
760$ IF P3.EQS."MULTINET" 771$ IF P3.EQS."MULTINET"
761$ THEN 772$ THEN
762$! 773$!
763$! Set the library to use UXC emulation. 774$! Set the library to use UCX emulation.
764$! 775$!
765$ P3 = "UCX" 776$ P3 = "UCX"
766$! 777$!
@@ -775,13 +786,13 @@ $ THEN
775$! 786$!
776$! Set the library to use UCX. 787$! Set the library to use UCX.
777$! 788$!
778$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT/OPT" 789$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC.OPT /OPTIONS"
779$ IF F$TRNLNM("UCX$IPC_SHR") .NES. "" 790$ IF F$TRNLNM("UCX$IPC_SHR") .NES. ""
780$ THEN 791$ THEN
781$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT/OPT" 792$ TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_DECC_LOG.OPT /OPTIONS"
782$ ELSE 793$ ELSE
783$ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN - 794$ IF COMPILER .NES. "DECC" .AND. ARCH .EQS. "VAX" THEN -
784 TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT/OPT" 795 TCPIP_LIB = "SYS$DISK:[-.VMS]UCX_SHR_VAXC.OPT /OPTIONS"
785$ ENDIF 796$ ENDIF
786$! 797$!
787$! Done with UCX 798$! Done with UCX
@@ -795,7 +806,7 @@ $ THEN
795$! 806$!
796$! Set the library to use TCPIP (post UCX). 807$! Set the library to use TCPIP (post UCX).
797$! 808$!
798$ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT/OPT" 809$ TCPIP_LIB = "SYS$DISK:[-.VMS]TCPIP_SHR_DECC.OPT /OPTIONS"
799$! 810$!
800$! Done with TCPIP 811$! Done with TCPIP
801$! 812$!
@@ -893,7 +904,7 @@ $ __INCLUDE = __TOP + "INCLUDE.OPENSSL]"
893$! 904$!
894$! Set up the logical name OPENSSL to point at the include directory 905$! Set up the logical name OPENSSL to point at the include directory
895$! 906$!
896$ DEFINE OPENSSL/NOLOG '__INCLUDE' 907$ DEFINE OPENSSL /NOLOG '__INCLUDE'
897$! 908$!
898$! Done 909$! Done
899$! 910$!
@@ -907,7 +918,7 @@ $ IF __SAVE_OPENSSL .EQS. ""
907$ THEN 918$ THEN
908$ DEASSIGN OPENSSL 919$ DEASSIGN OPENSSL
909$ ELSE 920$ ELSE
910$ DEFINE/NOLOG OPENSSL '__SAVE_OPENSSL' 921$ DEFINE /NOLOG OPENSSL '__SAVE_OPENSSL'
911$ ENDIF 922$ ENDIF
912$! 923$!
913$! Done 924$! Done
diff --git a/src/lib/libssl/test/tcrl.com b/src/lib/libssl/test/tcrl.com
index 86bf9735aa..1f606eb850 100644
--- a/src/lib/libssl/test/tcrl.com
+++ b/src/lib/libssl/test/tcrl.com
@@ -1,7 +1,9 @@
1$! TCRL.COM -- Tests crl keys 1$! TCRL.COM -- Tests crl keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl crl 9$ cmd := mcr 'exe_dir'openssl crl
diff --git a/src/lib/libssl/test/testca.com b/src/lib/libssl/test/testca.com
index c670f2bf5f..ec7e56dad6 100644
--- a/src/lib/libssl/test/testca.com
+++ b/src/lib/libssl/test/testca.com
@@ -1,8 +1,9 @@
1$! TESTCA.COM 1$! TESTCA.COM
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
6$ 7$
7$ openssl := mcr 'exe_dir'openssl 8$ openssl := mcr 'exe_dir'openssl
8$ 9$
@@ -11,7 +12,7 @@ $
11$ set noon 12$ set noon
12$ if f$search("demoCA.dir") .nes. "" 13$ if f$search("demoCA.dir") .nes. ""
13$ then 14$ then
14$ call deltree [.demoCA]*.* 15$ @[-.util]deltree [.demoCA]*.*
15$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) demoCA.dir;* 16$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) demoCA.dir;*
16$ delete demoCA.dir;* 17$ delete demoCA.dir;*
17$ endif 18$ endif
@@ -38,7 +39,7 @@ $ @[-.apps]CA.com -verify newcert.pem
38$ if $severity .ne. 1 then exit 3 39$ if $severity .ne. 1 then exit 3
39$ 40$
40$ set noon 41$ set noon
41$ call deltree [.demoCA]*.* 42$ @[-.util]deltree [.demoCA]*.*
42$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) demoCA.dir;* 43$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) demoCA.dir;*
43$ delete demoCA.dir;* 44$ delete demoCA.dir;*
44$ if f$search("newcert.pem") .nes. "" then delete newcert.pem;* 45$ if f$search("newcert.pem") .nes. "" then delete newcert.pem;*
@@ -47,32 +48,3 @@ $ set on
47$! #usage: CA -newcert|-newreq|-newca|-sign|-verify 48$! #usage: CA -newcert|-newreq|-newca|-sign|-verify
48$ 49$
49$ exit 50$ exit
50$
51$ deltree: subroutine ! P1 is a name of a directory
52$ on control_y then goto dt_STOP
53$ on warning then goto dt_exit
54$ _dt_def = f$trnlnm("SYS$DISK")+f$directory()
55$ if f$parse(p1) .eqs. "" then exit
56$ set default 'f$parse(p1,,,"DEVICE")''f$parse(p1,,,"DIRECTORY")'
57$ p1 = f$parse(p1,,,"NAME") + f$parse(p1,,,"TYPE")
58$ _fp = f$parse(".DIR",p1)
59$ dt_loop:
60$ _f = f$search(_fp)
61$ if _f .eqs. "" then goto dt_loopend
62$ call deltree [.'f$parse(_f,,,"NAME")']*.*
63$ goto dt_loop
64$ dt_loopend:
65$ _fp = f$parse(p1,".;*")
66$ if f$search(_fp) .eqs. "" then goto dt_exit
67$ set noon
68$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) '_fp'
69$ set on
70$ delete/nolog '_fp'
71$ dt_exit:
72$ set default '_dt_def'
73$ exit
74$ dt_STOP:
75$ set default '_dt_def'
76$ stop/id=""
77$ exit
78$ endsubroutine
diff --git a/src/lib/libssl/test/testenc.com b/src/lib/libssl/test/testenc.com
index 5e6f521f9d..621d9a2126 100644
--- a/src/lib/libssl/test/testenc.com
+++ b/src/lib/libssl/test/testenc.com
@@ -1,8 +1,9 @@
1$! TESTENC.COM -- Test encoding and decoding 1$! TESTENC.COM -- Test encoding and decoding
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
6$ 7$
7$ testsrc := makefile. 8$ testsrc := makefile.
8$ test := p.txt 9$ test := p.txt
diff --git a/src/lib/libssl/test/testgen.com b/src/lib/libssl/test/testgen.com
index 5d28ebec72..a4bc574bec 100644
--- a/src/lib/libssl/test/testgen.com
+++ b/src/lib/libssl/test/testgen.com
@@ -1,7 +1,9 @@
1$! TETSGEN.COM 1$! TETSGEN.COM
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ T := testcert 9$ T := testcert
diff --git a/src/lib/libssl/test/tests.com b/src/lib/libssl/test/tests.com
index 88a33d0531..d151cd3955 100644
--- a/src/lib/libssl/test/tests.com
+++ b/src/lib/libssl/test/tests.com
@@ -6,11 +6,17 @@ $ __proc = f$element(0,";",f$environment("procedure"))
6$ __here = f$parse(f$parse("A.;",__proc) - "A.;","[]A.;") - "A.;" 6$ __here = f$parse(f$parse("A.;",__proc) - "A.;","[]A.;") - "A.;"
7$ __save_default = f$environment("default") 7$ __save_default = f$environment("default")
8$ __arch := VAX 8$ __arch := VAX
9$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 9$ if f$getsyi("cpu") .ge. 128 then -
10 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
11$ if __arch .eqs. "" then __arch := UNK
10$ texe_dir := sys$disk:[-.'__arch'.exe.test] 12$ texe_dir := sys$disk:[-.'__arch'.exe.test]
11$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 13$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
12$ 14$
15$ sslroot = f$parse("sys$disk:[-.apps];",,,,"syntax_only") - "].;"+ ".]"
16$ define /translation_attributes = concealed sslroot 'sslroot'
17$
13$ set default '__here' 18$ set default '__here'
19$
14$ on control_y then goto exit 20$ on control_y then goto exit
15$ on error then goto exit 21$ on error then goto exit
16$ 22$
@@ -18,14 +24,18 @@ $ if p1 .nes. ""
18$ then 24$ then
19$ tests = p1 25$ tests = p1
20$ else 26$ else
27$! NOTE: This list reflects the list of dependencies following the
28$! "alltests" target in Makefile. This should make it easy to see
29$! if there's a difference that needs to be taken care of.
21$ tests := - 30$ tests := -
22 test_des,test_idea,test_sha,test_md4,test_md5,test_hmac,- 31 test_des,test_idea,test_sha,test_md4,test_md5,test_hmac,-
23 test_md2,test_mdc2,- 32 test_md2,test_mdc2,test_wp,-
24 test_rmd,test_rc2,test_rc4,test_rc5,test_bf,test_cast,test_rd,- 33 test_rmd,test_rc2,test_rc4,test_rc5,test_bf,test_cast,test_aes,-
25 test_rand,test_bn,test_ec,test_ecdsa,test_ecdh,- 34 test_rand,test_bn,test_ec,test_ecdsa,test_ecdh,-
26 test_enc,test_x509,test_rsa,test_crl,test_sid,- 35 test_enc,test_x509,test_rsa,test_crl,test_sid,-
27 test_gen,test_req,test_pkcs7,test_verify,test_dh,test_dsa,- 36 test_gen,test_req,test_pkcs7,test_verify,test_dh,test_dsa,-
28 test_ss,test_ca,test_engine,test_evp,test_ssl,test_ige,test_jpake 37 test_ss,test_ca,test_engine,test_evp,test_ssl,test_tsa,test_ige,-
38 test_jpake,test_cms
29$ endif 39$ endif
30$ tests = f$edit(tests,"COLLAPSE") 40$ tests = f$edit(tests,"COLLAPSE")
31$ 41$
@@ -43,6 +53,7 @@ $ MD2TEST := md2test
43$ MD4TEST := md4test 53$ MD4TEST := md4test
44$ MD5TEST := md5test 54$ MD5TEST := md5test
45$ HMACTEST := hmactest 55$ HMACTEST := hmactest
56$ WPTEST := wp_test
46$ RC2TEST := rc2test 57$ RC2TEST := rc2test
47$ RC4TEST := rc4test 58$ RC4TEST := rc4test
48$ RC5TEST := rc5test 59$ RC5TEST := rc5test
@@ -93,6 +104,9 @@ $ return
93$ test_hmac: 104$ test_hmac:
94$ mcr 'texe_dir''hmactest' 105$ mcr 'texe_dir''hmactest'
95$ return 106$ return
107$ test_wp:
108$ mcr 'texe_dir''wptest'
109$ return
96$ test_md2: 110$ test_md2:
97$ mcr 'texe_dir''md2test' 111$ mcr 'texe_dir''md2test'
98$ return 112$ return
@@ -248,9 +262,22 @@ $ write sys$output "Generate and certify a test certificate via the 'ca' pro
248$ @testca.com 262$ @testca.com
249$ endif 263$ endif
250$ return 264$ return
251$ test_rd: 265$ test_aes:
252$ write sys$output "test Rijndael" 266$! write sys$output "test AES"
253$ !mcr 'texe_dir''rdtest' 267$! !mcr 'texe_dir''aestest'
268$ return
269$ test_tsa:
270$ set noon
271$ define/user sys$output nla0:
272$ mcr 'exe_dir'openssl no-rsa
273$ save_severity=$SEVERITY
274$ set on
275$ if save_severity
276$ then
277$ write sys$output "skipping testtsa.com test -- requires RSA"
278$ else
279$ @testtsa.com
280$ endif
254$ return 281$ return
255$ test_ige: 282$ test_ige:
256$ write sys$output "Test IGE mode" 283$ write sys$output "Test IGE mode"
@@ -260,8 +287,13 @@ $ test_jpake:
260$ write sys$output "Test JPAKE" 287$ write sys$output "Test JPAKE"
261$ mcr 'texe_dir''jpaketest' 288$ mcr 'texe_dir''jpaketest'
262$ return 289$ return
290$ test_cms:
291$ write sys$output "CMS consistency test"
292$ perl CMS-TEST.PL
293$ return
263$ 294$
264$ 295$
265$ exit: 296$ exit:
266$ set default '__save_default' 297$ set default '__save_default'
298$ deassign sslroot
267$ exit 299$ exit
diff --git a/src/lib/libssl/test/testss.com b/src/lib/libssl/test/testss.com
index 685ae5043d..6598106b09 100644
--- a/src/lib/libssl/test/testss.com
+++ b/src/lib/libssl/test/testss.com
@@ -1,7 +1,9 @@
1$! TESTSS.COM 1$! TESTSS.COM
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ digest="-md5" 9$ digest="-md5"
diff --git a/src/lib/libssl/test/testssl.com b/src/lib/libssl/test/testssl.com
index 26308f7715..9c83afba04 100644
--- a/src/lib/libssl/test/testssl.com
+++ b/src/lib/libssl/test/testssl.com
@@ -1,7 +1,9 @@
1$! TESTSSL.COM 1$! TESTSSL.COM
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ texe_dir := sys$disk:[-.'__arch'.exe.test] 7$ texe_dir := sys$disk:[-.'__arch'.exe.test]
6$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 8$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
7$ 9$
diff --git a/src/lib/libssl/test/testtsa.com b/src/lib/libssl/test/testtsa.com
new file mode 100644
index 0000000000..e3c586f14a
--- /dev/null
+++ b/src/lib/libssl/test/testtsa.com
@@ -0,0 +1,248 @@
1$!
2$! A few very basic tests for the 'ts' time stamping authority command.
3$!
4$
5$ __arch := VAX
6$ if f$getsyi("cpu") .ge. 128 then -
7 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
8$ if __arch .eqs. "" then __arch := UNK
9$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
10$
11$ openssl := mcr 'f$parse(exe_dir+"openssl.exe")'
12$ OPENSSL_CONF := [-]CAtsa.cnf
13$ ! Because that's what ../apps/CA.sh really looks at
14$ SSLEAY_CONFIG = "-config " + OPENSSL_CONF
15$
16$ error:
17$ subroutine
18$ write sys$error "TSA test failed!"
19$ exit 3
20$ endsubroutine
21$
22$ setup_dir:
23$ subroutine
24$
25$ if f$search("tsa.dir") .nes ""
26$ then
27$ @[-.util]deltree [.tsa]*.*
28$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) tsa.dir;*
29$ delete tsa.dir;*
30$ endif
31$
32$ create/dir [.tsa]
33$ set default [.tsa]
34$ endsubroutine
35$
36$ clean_up_dir:
37$ subroutine
38$
39$ set default [-]
40$ @[-.util]deltree [.tsa]*.*
41$ set file/prot=(S:RWED,O:RWED,G:RWED,W:RWED) tsa.dir;*
42$ delete tsa.dir;*
43$ endsubroutine
44$
45$ create_ca:
46$ subroutine
47$
48$ write sys$output "Creating a new CA for the TSA tests..."
49$ TSDNSECT = "ts_ca_dn"
50$ openssl req -new -x509 -nodes -
51 -out tsaca.pem -keyout tsacakey.pem
52$ if $severity .ne. 1 then call error
53$ endsubroutine
54$
55$ create_tsa_cert:
56$ subroutine
57$
58$ INDEX=p1
59$ EXT=p2
60$ TSDNSECT = "ts_cert_dn"
61$
62$ openssl req -new -
63 -out tsa_req'INDEX'.pem -keyout tsa_key'INDEX'.pem
64$ if $severity .ne. 1 then call error
65$
66$ write sys$output "Using extension ''EXT'"
67$ openssl x509 -req -
68 -in tsa_req'INDEX'.pem -out tsa_cert'INDEX'.pem -
69 "-CA" tsaca.pem "-CAkey" tsacakey.pem "-CAcreateserial" -
70 -extfile 'OPENSSL_CONF' -extensions "''EXT'"
71$ if $severity .ne. 1 then call error
72$ endsubroutine
73$
74$ print_request:
75$ subroutine
76$
77$ openssl ts -query -in 'p1' -text
78$ endsubroutine
79$
80$ create_time_stamp_request1: subroutine
81$
82$ openssl ts -query -data [-]testtsa.com -policy tsa_policy1 -
83 -cert -out req1.tsq
84$ if $severity .ne. 1 then call error
85$ endsubroutine
86$
87$ create_time_stamp_request2: subroutine
88$
89$ openssl ts -query -data [-]testtsa.com -policy tsa_policy2 -
90 -no_nonce -out req2.tsq
91$ if $severity .ne. 1 then call error
92$ endsubroutine
93$
94$ create_time_stamp_request3: subroutine
95$
96$ openssl ts -query -data [-]CAtsa.cnf -no_nonce -out req3.tsq
97$ if $severity .ne. 1 then call error
98$ endsubroutine
99$
100$ print_response:
101$ subroutine
102$
103$ openssl ts -reply -in 'p1' -text
104$ if $severity .ne. 1 then call error
105$ endsubroutine
106$
107$ create_time_stamp_response:
108$ subroutine
109$
110$ openssl ts -reply -section 'p3' -queryfile 'p1' -out 'p2'
111$ if $severity .ne. 1 then call error
112$ endsubroutine
113$
114$ time_stamp_response_token_test:
115$ subroutine
116$
117$ RESPONSE2:='p2'.copy_tsr
118$ TOKEN_DER:='p2'.token_der
119$ openssl ts -reply -in 'p2' -out 'TOKEN_DER' -token_out
120$ if $severity .ne. 1 then call error
121$ openssl ts -reply -in 'TOKEN_DER' -token_in -out 'RESPONSE2'
122$ if $severity .ne. 1 then call error
123$ backup/compare 'RESPONSE2' 'p2'
124$ if $severity .ne. 1 then call error
125$ openssl ts -reply -in 'p2' -text -token_out
126$ if $severity .ne. 1 then call error
127$ openssl ts -reply -in 'TOKEN_DER' -token_in -text -token_out
128$ if $severity .ne. 1 then call error
129$ openssl ts -reply -queryfile 'p1' -text -token_out
130$ if $severity .ne. 1 then call error
131$ endsubroutine
132$
133$ verify_time_stamp_response:
134$ subroutine
135$
136$ openssl ts -verify -queryfile 'p1' -in 'p2' -
137 "-CAfile" tsaca.pem -untrusted tsa_cert1.pem
138$ if $severity .ne. 1 then call error
139$ openssl ts -verify -data 'p3' -in 'p2' -
140 "-CAfile" tsaca.pem -untrusted tsa_cert1.pem
141$ if $severity .ne. 1 then call error
142$ endsubroutine
143$
144$ verify_time_stamp_token:
145$ subroutine
146$
147$ ! create the token from the response first
148$ openssl ts -reply -in 'p2' -out 'p2'.token -token_out
149$ if $severity .ne. 1 then call error
150$ openssl ts -verify -queryfile 'p1' -in 'p2'.token -token_in -
151 "-CAfile" tsaca.pem -untrusted tsa_cert1.pem
152$ if $severity .ne. 1 then call error
153$ openssl ts -verify -data 'p3' -in 'p2'.token -token_in -
154 "-CAfile" tsaca.pem -untrusted tsa_cert1.pem
155$ if $severity .ne. 1 then call error
156$ endsubroutine
157$
158$ verify_time_stamp_response_fail:
159$ subroutine
160$
161$ openssl ts -verify -queryfile 'p1' -in 'p2' -
162 "-CAfile" tsaca.pem -untrusted tsa_cert1.pem
163$ ! Checks if the verification failed, as it should have.
164$ if $severity .eq. 1 then call error
165$ write sys$output "Ok"
166$ endsubroutine
167$
168$ ! Main body ----------------------------------------------------------
169$
170$ write sys$output "Setting up TSA test directory..."
171$ call setup_dir
172$
173$ write sys$output "Creating CA for TSA tests..."
174$ call create_ca
175$
176$ write sys$output "Creating tsa_cert1.pem TSA server cert..."
177$ call create_tsa_cert 1 "tsa_cert"
178$
179$ write sys$output "Creating tsa_cert2.pem non-TSA server cert..."
180$ call create_tsa_cert 2 "non_tsa_cert"
181$
182$ write sys$output "Creating req1.req time stamp request for file testtsa..."
183$ call create_time_stamp_request1
184$
185$ write sys$output "Printing req1.req..."
186$ call print_request req1.tsq
187$
188$ write sys$output "Generating valid response for req1.req..."
189$ call create_time_stamp_response req1.tsq resp1.tsr tsa_config1
190$
191$ write sys$output "Printing response..."
192$ call print_response resp1.tsr
193$
194$ write sys$output "Verifying valid response..."
195$ call verify_time_stamp_response req1.tsq resp1.tsr [-]testtsa.com
196$
197$ write sys$output "Verifying valid token..."
198$ call verify_time_stamp_token req1.tsq resp1.tsr [-]testtsa.com
199$
200$ ! The tests below are commented out, because invalid signer certificates
201$ ! can no longer be specified in the config file.
202$
203$ ! write sys$output "Generating _invalid_ response for req1.req..."
204$ ! call create_time_stamp_response req1.tsq resp1_bad.tsr tsa_config2
205$
206$ ! write sys$output "Printing response..."
207$ ! call print_response resp1_bad.tsr
208$
209$ ! write sys$output "Verifying invalid response, it should fail..."
210$ ! call verify_time_stamp_response_fail req1.tsq resp1_bad.tsr
211$
212$ write sys$output "Creating req2.req time stamp request for file testtsa..."
213$ call create_time_stamp_request2
214$
215$ write sys$output "Printing req2.req..."
216$ call print_request req2.tsq
217$
218$ write sys$output "Generating valid response for req2.req..."
219$ call create_time_stamp_response req2.tsq resp2.tsr tsa_config1
220$
221$ write sys$output "Checking '-token_in' and '-token_out' options with '-reply'..."
222$ call time_stamp_response_token_test req2.tsq resp2.tsr
223$
224$ write sys$output "Printing response..."
225$ call print_response resp2.tsr
226$
227$ write sys$output "Verifying valid response..."
228$ call verify_time_stamp_response req2.tsq resp2.tsr [-]testtsa.com
229$
230$ write sys$output "Verifying response against wrong request, it should fail..."
231$ call verify_time_stamp_response_fail req1.tsq resp2.tsr
232$
233$ write sys$output "Verifying response against wrong request, it should fail..."
234$ call verify_time_stamp_response_fail req2.tsq resp1.tsr
235$
236$ write sys$output "Creating req3.req time stamp request for file CAtsa.cnf..."
237$ call create_time_stamp_request3
238$
239$ write sys$output "Printing req3.req..."
240$ call print_request req3.tsq
241$
242$ write sys$output "Verifying response against wrong request, it should fail..."
243$ call verify_time_stamp_response_fail req3.tsq resp1.tsr
244$
245$ write sys$output "Cleaning up..."
246$ call clean_up_dir
247$
248$ exit
diff --git a/src/lib/libssl/test/tpkcs7.com b/src/lib/libssl/test/tpkcs7.com
index 047834fba4..e107cc141a 100644
--- a/src/lib/libssl/test/tpkcs7.com
+++ b/src/lib/libssl/test/tpkcs7.com
@@ -1,7 +1,9 @@
1$! TPKCS7.COM -- Tests pkcs7 keys 1$! TPKCS7.COM -- Tests pkcs7 keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl pkcs7 9$ cmd := mcr 'exe_dir'openssl pkcs7
diff --git a/src/lib/libssl/test/tpkcs7d.com b/src/lib/libssl/test/tpkcs7d.com
index 193bb72137..5ff653ccee 100644
--- a/src/lib/libssl/test/tpkcs7d.com
+++ b/src/lib/libssl/test/tpkcs7d.com
@@ -1,7 +1,9 @@
1$! TPKCS7.COM -- Tests pkcs7 keys 1$! TPKCS7.COM -- Tests pkcs7 keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl pkcs7 9$ cmd := mcr 'exe_dir'openssl pkcs7
diff --git a/src/lib/libssl/test/treq.com b/src/lib/libssl/test/treq.com
index 5524e485ba..d2594be6a7 100644
--- a/src/lib/libssl/test/treq.com
+++ b/src/lib/libssl/test/treq.com
@@ -1,7 +1,9 @@
1$! TREQ.COM -- Tests req keys 1$! TREQ.COM -- Tests req keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl req -config [-.apps]openssl-vms.cnf 9$ cmd := mcr 'exe_dir'openssl req -config [-.apps]openssl-vms.cnf
diff --git a/src/lib/libssl/test/trsa.com b/src/lib/libssl/test/trsa.com
index 6dbe59ef64..d3a8a605b7 100644
--- a/src/lib/libssl/test/trsa.com
+++ b/src/lib/libssl/test/trsa.com
@@ -1,7 +1,9 @@
1$! TRSA.COM -- Tests rsa keys 1$! TRSA.COM -- Tests rsa keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ set noon 9$ set noon
diff --git a/src/lib/libssl/test/tsid.com b/src/lib/libssl/test/tsid.com
index abd1d4d737..267ace1135 100644
--- a/src/lib/libssl/test/tsid.com
+++ b/src/lib/libssl/test/tsid.com
@@ -1,7 +1,9 @@
1$! TSID.COM -- Tests sid keys 1$! TSID.COM -- Tests sid keys
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl sess_id 9$ cmd := mcr 'exe_dir'openssl sess_id
diff --git a/src/lib/libssl/test/tverify.com b/src/lib/libssl/test/tverify.com
index 021d701d79..01431f4aac 100644
--- a/src/lib/libssl/test/tverify.com
+++ b/src/lib/libssl/test/tverify.com
@@ -1,29 +1,63 @@
1$! TVERIFY.COM 1$! TVERIFY.COM
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
7$!
8$ line_max = 255 ! Could be longer on modern non-VAX.
9$ temp_file_name = "certs_"+ f$getjpi( "", "PID")+ ".tmp"
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 10$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 11$ cmd = "mcr ''exe_dir'openssl verify ""-CAfile"" ''temp_file_name'"
7$ copy/concatenate [-.certs]*.pem certs.tmp 12$ cmd_len = f$length( cmd)
8$ 13$ pems = "[-.certs...]*.pem"
14$!
15$! Concatenate all the certificate files.
16$!
17$ copy /concatenate 'pems' 'temp_file_name'
18$!
19$! Loop through all the certificate files.
20$!
21$ args = ""
9$ old_f := 22$ old_f :=
10$ loop_certs: 23$ loop_file:
11$ verify := NO 24$ f = f$search( pems)
12$ more := YES 25$ if ((f .nes. "") .and. (f .nes. old_f))
13$ certs := 26$ then
14$ loop_certs2: 27$ old_f = f
15$ f = f$search("[-.certs]*.pem") 28$!
16$ if f .nes. "" .and. f .nes. old_f 29$! If this file name would over-extend the command line, then
30$! run the command now.
31$!
32$ if (cmd_len+ f$length( args)+ 1+ f$length( f) .gt. line_max)
33$ then
34$ if (args .eqs. "") then goto disaster
35$ 'cmd''args'
36$ args = ""
37$ endif
38$! Add the next file to the argument list.
39$ args = args+ " "+ f
40$ else
41$! No more files in the list
42$ goto loop_file_end
43$ endif
44$ goto loop_file
45$ loop_file_end:
46$!
47$! Run the command for any left-over arguments.
48$!
49$ if (args .nes. "")
17$ then 50$ then
18$ certs = certs + " [-.certs]" + f$parse(f,,,"NAME") + ".pem" 51$ 'cmd''args'
19$ verify := YES
20$ if f$length(certs) .lt. 180 then goto loop_certs2
21$ else
22$ more := NO
23$ endif 52$ endif
24$ certs = certs - " " 53$!
25$ 54$! Delete the temporary file.
26$ if verify then mcr 'exe_dir'openssl verify "-CAfile" certs.tmp 'certs' 55$!
27$ if more then goto loop_certs 56$ if (f$search( "''temp_file_name';*") .nes. "") then -
28$ 57 delete 'temp_file_name';*
29$ delete certs.tmp;* 58$!
59$ exit
60$!
61$ disaster:
62$ write sys$output " Command line too long. Doomed."
63$!
diff --git a/src/lib/libssl/test/tx509.com b/src/lib/libssl/test/tx509.com
index 7b2592f773..399eb01490 100644
--- a/src/lib/libssl/test/tx509.com
+++ b/src/lib/libssl/test/tx509.com
@@ -1,7 +1,9 @@
1$! TX509.COM -- Tests x509 certificates 1$! TX509.COM -- Tests x509 certificates
2$ 2$
3$ __arch := VAX 3$ __arch := VAX
4$ if f$getsyi("cpu") .ge. 128 then __arch := AXP 4$ if f$getsyi("cpu") .ge. 128 then -
5 __arch = f$edit( f$getsyi( "ARCH_NAME"), "UPCASE")
6$ if __arch .eqs. "" then __arch := UNK
5$ exe_dir := sys$disk:[-.'__arch'.exe.apps] 7$ exe_dir := sys$disk:[-.'__arch'.exe.apps]
6$ 8$
7$ cmd := mcr 'exe_dir'openssl x509 9$ cmd := mcr 'exe_dir'openssl x509